package com.landtool.lanbase.modules.org.controller; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import java.net.URLDecoder; import java.net.URLEncoder; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authz.annotation.Logical; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSONObject; import com.landtool.lanbase.modules.org.entity.OrgRegion; import com.landtool.lanbase.modules.org.entity.OrgUnit; import com.landtool.lanbase.modules.org.entity.OrgUnitRegion; import com.landtool.lanbase.modules.org.entity.OrgUser; import com.landtool.lanbase.modules.org.entity.OrgUnitmanager; import com.landtool.lanbase.modules.org.service.OrgUnitService; import com.landtool.lanbase.modules.org.service.OrgUnitmanagerService; import com.landtool.lanbase.modules.org.service.OrgUnitRegionService; 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.JpinyinUtils; import com.landtool.lanbase.common.utils.PageUtils; import com.landtool.lanbase.common.utils.Query; import com.landtool.lanbase.common.utils.Result; import org.apache.shiro.authz.annotation.RequiresPermissions; /** * @author lanbase * @Description: TODO(单位管理表) * @date 2018-01-16 08:47:23 */ @RestController @RequestMapping("/org/unit") @Api(value = "", tags = {"用户单位"}) public class OrgUnitController extends AbstractController{ @Autowired private OrgUnitService unitService; @Autowired private OrgUnitRegionService unitxzqhService; @Autowired private OrgUnitmanagerService unitmanagerService; /** * 所有单位列表 */ @RequestMapping(value ="/list", method ={RequestMethod.POST, RequestMethod.GET}) // @RequiresPermissions("org:unit:list") @RequiresPermissions(value = {"org:unit:list","org:unit: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 unitList = unitService.queryList(query); int total = unitService.queryTotal(query); PageUtils pageUtil = new PageUtils(unitList, total, query.getLimit(), query.getPage()); return Result.ok().put("page", pageUtil); } /** * 单位信息 */ @GetMapping("/info/{unitid}") // @RequiresPermissions("org:unit:list") @RequiresPermissions(value = {"org:unit:list","org:unit:edit"}, logical = Logical.OR) @ApiOperation( value = "单位信息", notes = "" ) public Result info(@ApiParam(name="unitid",value="单位Id",required=true)@PathVariable("unitid") Long unitid){ OrgUnit unit = unitService.queryObject(unitid); return Result.ok().put("unit", unit); } /** * 保存 */ @LogAction("用户管理,组织机构管理,组织机构新增,新增") @SysLog("保存单位") @PostMapping("/save") @RequiresPermissions("org:unit:edit") @ApiOperation( value = "保存单位", notes = "" ) public Result save(@ApiParam(name="复合对象",value="传入json格式",required=true)@RequestBody JSONObject json){ OrgUnit unit = json.getObject("orgUnit",OrgUnit.class); String qhids = json.getString("qhids"); String managerids = json.getString("managerids"); OrgUser orgUser = (OrgUser) SecurityUtils.getSubject().getPrincipal(); if((unit.getIsdept() == null || unit.getIsdept() != 1) && (qhids == null || qhids == "")){ return Result.error("所属区划不能为空!"); } //添加单位表数据 unit.setSpellfirst(unit.getSpellfirst().toUpperCase());//首字母小写转化大写 unit.setRcreateuser(orgUser.getUserid()); unit.setRcreatedate(new Date()); unit.setRlasteditdate(new Date()); if(unit != null && unit.getParentid() != null && unit.getParentid() != 0){ unit.setParentid(unit.getParentid()); } else{ unit.setParentid(0L); } if(unit != null && unit.getStatus() != null){ unit.setStatus(unit.getStatus()); } else{ unit.setStatus(1L); } int rorder = unitService.queryMaxRorder(unit.getParentid())+1; unit.setRorder((long)rorder); unitService.save(unit); //查询保存后的数据 Long uniqueCheck = unitService.queryUnitWithSEQ(); if(unit.getIsdept() == null || unit.getIsdept() != 1) { //添加单位行政关联表数据 OrgUnitRegion unitXzqh = new OrgUnitRegion(); String[] qhidStr = qhids.split(","); for (int i = 0; i < qhidStr.length; i++) { unitXzqh.setRegionid(qhidStr[i]); unitXzqh.setUnitid(uniqueCheck); unitXzqh.setRcreatedate(new Date()); unitXzqh.setRlasteditdate(new Date()); unitXzqh.setRcreateuser(orgUser.getUserid()); unitxzqhService.save(unitXzqh); } //添加单位管理员数据 OrgUnitmanager unitManager = new OrgUnitmanager(); if (managerids != null && managerids != "") { String[] manageridStr = managerids.split(","); for (int i = 0; i < manageridStr.length; i++) { unitManager.setUserid(Long.parseLong(manageridStr[i])); unitManager.setUnitid(uniqueCheck); unitManager.setRcreatedate(new Date()); unitManager.setRlasteditdate(new Date()); unitManager.setRcreateuser(orgUser.getUserid()); unitmanagerService.save(unitManager); } } } return Result.ok().put("unitid",uniqueCheck); } /** * 修改 */ @LogAction("用户管理,组织机构管理,组织机构修改,修改") @SysLog("修改菜单") @PostMapping("/update") @RequiresPermissions("org:unit:edit") @ApiOperation( value = "修改单位", notes = "" ) public Result update(@ApiParam(name="复合对象",value="传入json格式",required=true)@RequestBody JSONObject json){ OrgUnit unit = json.getObject("orgUnit",OrgUnit.class); String qhids = json.getString("qhids"); String managerids = json.getString("managerids"); if(unit.getIsdept() == null || unit.getIsdept() != 1) { unitxzqhService.deleteUnitRegionByUnitId(unit.getUnitid()); unitmanagerService.delete(unit.getUnitid()); OrgUser orgUser = (OrgUser) SecurityUtils.getSubject().getPrincipal(); //添加单位行政关联表数据 OrgUnitRegion unitXzqh = new OrgUnitRegion(); if (qhids != null && qhids != "") { String[] qhidStr = qhids.split(","); for (int i = 0; i < qhidStr.length; i++) { unitXzqh.setRegionid(qhidStr[i]); unitXzqh.setUnitid(unit.getUnitid()); unitXzqh.setRcreatedate(new Date()); unitXzqh.setRlasteditdate(new Date()); unitXzqh.setRcreateuser(orgUser.getUserid()); unitxzqhService.save(unitXzqh); } } //添加单位管理员数据 OrgUnitmanager unitManager = new OrgUnitmanager(); if (managerids != null && managerids != "") { String[] manageridStr = managerids.split(","); for (int i = 0; i < manageridStr.length; i++) { unitManager.setUserid(Long.parseLong(manageridStr[i])); unitManager.setUnitid(unit.getUnitid()); unitManager.setRcreatedate(new Date()); unitManager.setRlasteditdate(new Date()); unitManager.setRcreateuser(orgUser.getUserid()); unitmanagerService.save(unitManager); } } } unit.setSpellfirst(unit.getSpellfirst().toUpperCase());//首字母小写转化大写 unit.setRlasteditdate(new Date()); unitService.update(unit); return Result.ok(); } /** * 删除 */ @LogAction("用户管理,组织机构管理,组织机构删除,删除") @SysLog("删除单位") @PostMapping("/delete") @RequiresPermissions("org:unit:edit") @ApiOperation( value = "删除单位", notes = "" ) public Result delete(@ApiParam(name="unitids",value="单位Id",required=true)@RequestBody Long[] unitids){ // unitService.deleteBatch(unitids); //修改机构状态为2(删除) unitService.queryUnitById(unitids); return Result.ok(); } /** * 自动补全输入首字母查询 * @param keyWord * @return */ @GetMapping("/findPinyinByKeyWord") public String[] findpinyinByKeyWord(@RequestParam(name = "keyWord") String keyWord){ List UnitNames = unitService.findPinyinByKeyWord(URLDecoder.decode(keyWord.toUpperCase())); if (StringUtils.isEmpty(UnitNames)) { return null; } int size = UnitNames.size(); String[] arr = (String[]) UnitNames.toArray(new String[size]); return arr; } @GetMapping("/findPinyinByKeyWordList") public Result findPinyinByKeyWordList(@RequestParam(name="keyWord") String keyWord){ List unitList = unitService.findPinyinByKeyWordList(keyWord); return Result.ok().put("unitList", unitList); } /** * 单位信息 */ @GetMapping("/queryObjectByFullName/{unitname}") @ApiOperation( value = "单位信息", notes = "" ) public Result queryObjectByFullName(@ApiParam(name="unitname",value="单位名称",required=true)@PathVariable("unitname") String unitname){ OrgUnit unit = unitService.queryObjectByFullName(URLDecoder.decode(unitname)); return Result.ok().put("unit", unit); } /** * 根据单位名称获取首字母值 */ @SysLog("根据名称获取首字母值") @GetMapping("/changeToPinYin") @ApiOperation( value = "根据单位获取首字母值", notes = "" ) public Result changeToPinYin(@ApiParam(name="pinyin",value="字段pinyin",required=true)@RequestParam String name){ name = name.replaceAll("%(?![0-9a-fA-F]{2})", "%25"); String namepinyin = JpinyinUtils.changeToGetShortPinYin(URLDecoder.decode(name)); //首字母小写转化大写 String pinyin = namepinyin.toUpperCase(); String patt="[^a-z|A-Z]"; pinyin = pinyin.replaceAll(patt,""); return Result.ok().put("pinyin", URLEncoder.encode(pinyin)); } /** * 所有单位列表 */ @RequestMapping(value ="/queryUnitTreeList", method ={RequestMethod.GET}) // @RequiresPermissions("org:unit:list") @RequiresPermissions(value = {"org:unit:list","org:unit:edit"}, logical = Logical.OR) @ApiOperation( value = "单位列表", notes = "所有单位列表" ) public Result queryUnitTreeList(){ List unitList = unitService.queryUnitTreeList(); //添加顶级菜单 OrgUnit root = new OrgUnit(); root.setUnitid(0L); root.setUnitname("全国"); root.setParentid(-1L); root.setOpen(true); unitList.add(root); return Result.ok().put("unitList", unitList); } /** * 查询节点及节点下的单位 */ @RequestMapping(value ="/queryTreeChildList", method ={RequestMethod.POST, RequestMethod.GET}) // @RequiresPermissions("org:unit:list") @RequiresPermissions(value = {"org:unit:list","org:unit:edit"} , logical = Logical.OR) @ApiOperation( value = "单位列表", notes = "单位列表" ) public Result queryTreeChildList(@ApiParam(name="params",value="单位集合",required=true)@RequestParam Map params){ //查询列表数据 Query query = new Query(params); List unitList = unitService.queryTreeChildList(query); int total = unitService.queryTreeChildTotal(query); PageUtils pageUtil = new PageUtils(unitList, total, query.getLimit(), query.getPage()); return Result.ok().put("page", pageUtil); } /** * 查询节点下一级子节点 */ @RequestMapping(value ="/queryListByParentid", method ={RequestMethod.GET}) // @RequiresPermissions("org:unit:list") @RequiresPermissions(value = {"org:unit:list","org:unit:edit"} , logical = Logical.OR) public Map queryListByParentid(@RequestParam Long unitid){ Map map = new HashMap(); List orgUnitList = unitService.queryListByParentid(unitid); map.put("orgUnitList", orgUnitList); return map; } /** * 修改排序 */ @LogAction("用户管理,组织机构管理,组织机构修改(排序),修改") @PostMapping("/updateRorder") @RequiresPermissions("org:region:edit") @ApiOperation( value = "修改字典字段值排序", notes = "" ) public Result updateRorder(@ApiParam(name="复合对象",value="传入json格式",required=true)@RequestBody JSONObject json){ String valueids = json.getString("valueids"); // String sorts = json.getString("sorts"); String[] valueidList = valueids.split(","); // String[] sortList=sorts.split(","); for(int i =0;i 0) unitname = URLDecoder.decode(unitname); List units = unitService.queryDeptList(unitname); return Result.ok().put("units", units); } }