package com.landtool.lanbase.modules.org.controller; import com.landtool.lanbase.modules.org.entity.OrgUserunitJoinUser; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletResponse; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authz.annotation.Logical; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import com.landtool.lanbase.modules.org.entity.OrgUser; import com.landtool.lanbase.modules.org.entity.OrgUserunit; import com.landtool.lanbase.modules.org.service.OrgUnitService; import com.landtool.lanbase.modules.org.service.OrgUserunitService; import com.landtool.lanbase.modules.sys.controller.AbstractController; import com.landtool.lanbase.common.annotation.LogAction; import com.landtool.lanbase.common.annotation.SysLog; import com.landtool.lanbase.common.utils.NameBindId; import com.landtool.lanbase.common.utils.PageUtils; import com.landtool.lanbase.common.utils.Query; import com.landtool.lanbase.common.utils.Result; import com.alibaba.fastjson.JSONObject; /** * @author lanbase * @Description: TODO(用户单位关联表,用户与单位关联信息修改时,同步修改用户时间戳信息。) * @date 2018-01-16 09:43:06 */ @RestController @RequestMapping("/org/userunit") @Api(value = "", tags = {"用户与单位关联"}) public class OrgUserunitController extends AbstractController{ @Autowired private OrgUserunitService userunitService; @Autowired private OrgUnitService unitService; /** * 用户单位关联列表 */ @RequestMapping(value ="/list", method ={RequestMethod.POST, RequestMethod.GET}) // @RequiresPermissions("org:user:list") @RequiresPermissions(value = {"org:user:list","org:user:edit"}, logical = Logical.OR) @ApiOperation( value = "用户单位关联列表", notes = "所有用户单位关联列表" ) @LogAction("用户管理,用户信息管理>所属单位,用户信息管理>所属单位查询,查询") public Result list(@ApiParam(name="params",value="用户单位关联集合",required=true)@RequestParam Map params){ //查询列表数据 Query query = new Query(params); List userunitList = userunitService.queryList(query); int total = userunitService.queryTotal(query); PageUtils pageUtil = new PageUtils(userunitList, total, query.getLimit(), query.getPage()); return Result.ok().put("page", pageUtil); } /** * 信息 */ @GetMapping("/info/{userid}") // @RequiresPermissions("org:user:list") @RequiresPermissions(value = {"org:user:list","org:user:edit"}, logical = Logical.OR) @ApiOperation( value = "用户单位关联信息", notes = "" ) public Result info(@ApiParam(name="userid",value="用户Id",required=true)@PathVariable("userid") Long userid){ OrgUserunit userunit = userunitService.queryObject(userid); return Result.ok().put("userunit", userunit); } /** * 保存 */ @LogAction("用户管理,用户信息管理>所属单位,用户信息管理>所属单位新增,新增") @SysLog("保存用户单位关联") @PostMapping("/save") @RequiresPermissions("org:user:edit") @ApiOperation( value = "保存用户单位关联", notes = "" ) public Result save(@ApiParam(name="用户单位关联对象",value="传入json格式",required=true)@RequestBody OrgUserunitJoinUser userunit){ //判断是否存在 int count = userunitService.isExitUserunit(userunit); if(count > 0){ return Result.error("已存在对应的关系,请检查!"); } /** * alert ykm 2019-04-12 */ if(userunit.getWorktype().equals("1")) { int working = userunitService.isWorking(userunit).size(); if(working > 0) { return Result.error("已存在在职单位,请先修改后再填写!"); } } OrgUser user = (OrgUser) SecurityUtils.getSubject().getPrincipal(); userunit.setRcreateuser(user.getUserid()); userunit.setRcreatedate(new Date()); userunit.setRlasteditdate(new Date()); if(userunit.getWorkseasdatestr() != null && userunit.getWorkseasdatestr().length() != 0) { userunit.setWorkseasdate(getDateByString(userunit.getWorkseasdatestr())); } if(userunit.getWorkstartdatestr() != null && userunit.getWorkstartdatestr().length() != 0) { userunit.setWorkstartdate(getDateByString(userunit.getWorkstartdatestr())); } if(userunit.getWorkenddatestr() != null && userunit.getWorkenddatestr().length() != 0) { userunit.setWorkenddate(getDateByString(userunit.getWorkenddatestr())); } userunitService.save(userunit); return Result.ok(); } /** * 修改 */ @LogAction("用户管理,用户信息管理>所属单位,用户信息管理>所属单位修改,修改") @SysLog("修改用户单位关联") @PostMapping("/update") @RequiresPermissions("org:user:edit") @ApiOperation( value = "修改用户单位关联", notes = "" ) public Result update(@ApiParam(name="用户单位关联对象",value="传入json格式",required=true)@RequestBody OrgUserunitJoinUser userunit){ Long oldunitid = userunit.getoldUnitid(); Integer olddeptid = userunit.getOlddeptid(); if(oldunitid.longValue() != userunit.getUnitid().longValue() || (olddeptid != null && !olddeptid.equals(userunit.getDeptid()))){ int count = userunitService.isExitUserunit(userunit); if(count > 0){ return Result.error("已存在对应的关系,请检查!"); } } /** * alert ykm 2019-04-12 */ if(userunit.getWorktype().equals("1")) { List working = userunitService.isWorking(userunit); for (OrgUserunit unit : working) { if (!unit.getUnitid().equals(userunit.getoldUnitid()) || (unit.getDeptid() != null ? !unit.getDeptid().equals(userunit.getOlddeptid()) : true)) { return Result.error("已存在在职单位,请先修改后再填写!"); } } } if(userunit.getWorkseasdatestr() != null && userunit.getWorkseasdatestr() != "") { userunit.setWorkseasdate(getDateByString(userunit.getWorkseasdatestr())); } else{ userunit.setWorkseasdate(null); } if(userunit.getWorkstartdatestr() != null && userunit.getWorkstartdatestr() != "") { userunit.setWorkstartdate(getDateByString(userunit.getWorkstartdatestr())); } else{ userunit.setWorkstartdate(null); } if(userunit.getWorkenddatestr() != null && userunit.getWorkenddatestr() != "") { userunit.setWorkenddate(getDateByString(userunit.getWorkenddatestr())); } else{ userunit.setWorkenddate(null); } userunitService.update(userunit); return Result.ok(); } /** * 删除 */ @LogAction("用户管理,用户信息管理>所属单位,用户信息管理>所属单位删除,删除") @SysLog("删除用户单位关联") @PostMapping("/delete") @RequiresPermissions("org:user:edit") @ApiOperation( value = "删除用户单位关联", notes = "规则:用户id|单位id,部门id|...(|分割)" ) @ResponseBody public Result delete(String userunitids){ try{ String[] idList = userunitids.split("\\|"); Long userid = Long.parseLong(idList[0].toString()); for (int i = 0; i < idList.length; i++) { if(i>0){ OrgUserunit model = new OrgUserunit(); model.setUserid(userid); model.setUnitid(Long.parseLong(idList[i].split("\\,")[0].toString())); Integer deptid = Integer.parseInt(idList[i].split("\\,")[1].toString()); if(!deptid.equals(0)) model.setDeptid(deptid); userunitService.delete(model); } } }catch(Exception e){ return Result.error(e.getMessage()); } return Result.ok(); } /** * 自动补全 * @param keyWord * @return */ @GetMapping("/findUnitNamesByKeyWord/{keyWord}") public List findUnitNamesByKeyWord(@PathVariable(name = "keyWord") String keyWord){ List UnitNames = unitService.findUnitNamesByKeyWord(keyWord); if (StringUtils.isEmpty(UnitNames)) { return null; } return UnitNames; } /** * @Description: 根据用户ID和单位ID获取OrgUserunit * @return: OrgUserunit */ @GetMapping("/queryObjectByUnitid/{id}") public Result queryObjectByUnitid(@PathVariable(name = "id") String id){ String[] idList= id.split("\\|"); Long userid =Long.parseLong(idList[0]); Long unitid =Long.parseLong(idList[1]); Long deptid = (!idList[2].equals("null")&&idList[2]!=null)?Long.parseLong(idList[2]):null; OrgUserunit model = new OrgUserunit(); model.setUserid(userid); model.setDeptid(deptid!=null?Integer.parseInt(deptid.toString()):null); model.setUnitid(unitid); OrgUserunit userunit = userunitService.queryObjectByUnitid(model); return Result.ok().put("userunit", userunit); } private Date getDateByString(String datestr){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date returnDate = new Date(); if(datestr != null && datestr.length() != 0 ){ try{ returnDate = (sdf.parse(datestr)); } catch(Exception ex){ returnDate = new Date(); } } return returnDate; } }