diff --git a/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/controller/SysDeptController.java b/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/controller/SysDeptController.java index c04b1e3..e559761 100644 --- a/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/controller/SysDeptController.java +++ b/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/controller/SysDeptController.java @@ -9,6 +9,7 @@ package com.elink.esua.epdc.controller; import com.elink.esua.epdc.commons.tools.annotation.LogOperation; +import com.elink.esua.epdc.commons.tools.constant.OrganizationTypeConstant; import com.elink.esua.epdc.commons.tools.page.PageData; import com.elink.esua.epdc.commons.tools.utils.ConvertUtils; import com.elink.esua.epdc.commons.tools.utils.Result; @@ -18,6 +19,7 @@ import com.elink.esua.epdc.commons.tools.validator.group.AddGroup; import com.elink.esua.epdc.commons.tools.validator.group.DefaultGroup; import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup; import com.elink.esua.epdc.dto.*; +import com.elink.esua.epdc.dto.epdc.DeptCodeOption; import com.elink.esua.epdc.dto.epdc.form.UserSysDeptAreaCodeFormDTO; import com.elink.esua.epdc.dto.epdc.form.UserSysDeptInfoFormDTO; import com.elink.esua.epdc.dto.epdc.result.UserSysDeptInfoResultDTO; @@ -25,6 +27,7 @@ import com.elink.esua.epdc.optimize.modules.deptlevel.service.OptSysDeptService; import com.elink.esua.epdc.service.SysDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -316,4 +319,43 @@ public class SysDeptController { public Result getEpmetAreaCode(UserSysDeptAreaCodeFormDTO dto) { return new Result().ok(sysDeptService.getEpmetAreaCode(dto)); } + + /** + * @Description 获取部门区域编码树 + * @Author songyunpeng + * @Date 2021/1/7 + * @Param [] + * @return com.elink.esua.epdc.commons.tools.utils.Result + **/ + @GetMapping("getDeptCode") + public Result getDeptCodeTree(){ + return sysDeptService.getDeptCodeTree(); + } + + + /** + * 新增区域编码 + * + * @param dto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2021/5/11 15:20 + */ + @PostMapping("addAreaCode") + public Result addAreaCode(@RequestBody SysDeptDTO dto) { + if (!OrganizationTypeConstant.ORG_TYPE_STREET_PARTY.equals(dto.getTypeKey()) + && !OrganizationTypeConstant.ORG_TYPE_COMMUNITY_PARTY.equals(dto.getTypeKey())) { + return new Result().error("只有机构类型为街道或者社区时可以新增区域编码"); + } + if (null == dto.getName() || StringUtils.isEmpty(dto.getName())) { + return new Result().error("请填写机构名称"); + } + + if (null == dto.getPid() || 0 == dto.getPid()) { + return new Result().error("请选择上级部门"); + } + + return sysDeptService.addAreaCode(dto); + } + } diff --git a/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/service/SysDeptService.java b/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/service/SysDeptService.java index 136512c..52b289a 100644 --- a/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/service/SysDeptService.java +++ b/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/service/SysDeptService.java @@ -12,6 +12,7 @@ import com.elink.esua.epdc.commons.mybatis.service.BaseService; import com.elink.esua.epdc.commons.tools.page.PageData; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.dto.*; +import com.elink.esua.epdc.dto.epdc.DeptCodeOption; import com.elink.esua.epdc.dto.epdc.GridForLeaderRegisterDTO; import com.elink.esua.epdc.dto.epdc.form.UserSysDeptAreaCodeFormDTO; import com.elink.esua.epdc.dto.epdc.form.UserSysDeptInfoFormDTO; @@ -253,4 +254,32 @@ public interface SysDeptService extends BaseService { * @Param [userId] **/ Result getUserDeptOptionByUserId(String userId); + + /** + * @Description 获取部门区域编码树 + * @Author songyunpeng + * @Date 2021/1/7 + * @Param [] + * @return com.elink.esua.epdc.commons.tools.utils.Result + **/ + Result getDeptCodeTree(); + + /*** + * 组装孔村部门编码 + * @param + * @return void + * @author qushutong + * @date 2019/12/13 13:54 + */ + void packageKcDeptCodeOption(); + + /** + * 新增区域编码 + * + * @param dto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2021/5/11 15:21 + */ + Result addAreaCode(SysDeptDTO dto); } diff --git a/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java b/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java index d51f04e..103129b 100644 --- a/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java +++ b/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java @@ -31,6 +31,10 @@ import com.elink.esua.epdc.commons.tools.utils.TreeUtils; import com.elink.esua.epdc.constant.RoleTypeKeyConstant; import com.elink.esua.epdc.dao.SysDeptDao; import com.elink.esua.epdc.dto.*; +import com.elink.esua.epdc.dto.admin.DeptAddAreaCodeFormDTO; +import com.elink.esua.epdc.dto.admin.DeptAddAreaCodeResultDTO; +import com.elink.esua.epdc.dto.admin.DeptCodeFormDTO; +import com.elink.esua.epdc.dto.epdc.DeptCodeOption; import com.elink.esua.epdc.dto.epdc.GridForLeaderRegisterDTO; import com.elink.esua.epdc.dto.epdc.form.UserSysDeptAreaCodeFormDTO; import com.elink.esua.epdc.dto.epdc.form.UserSysDeptInfoFormDTO; @@ -39,6 +43,7 @@ import com.elink.esua.epdc.dto.epdc.result.AreaCodeParentResultDTO; import com.elink.esua.epdc.dto.epdc.result.UserSysDeptAreaCodeResultDTO; import com.elink.esua.epdc.dto.epdc.result.UserSysDeptInfoResultDTO; import com.elink.esua.epdc.entity.SysDeptEntity; +import com.elink.esua.epdc.feign.AnalysisFeignClient; import com.elink.esua.epdc.feign.GroupFeignClient; import com.elink.esua.epdc.rocketmq.dto.OrganizationModifyDTO; import com.elink.esua.epdc.rocketmq.producer.OrganizationModifyProducer; @@ -85,6 +90,9 @@ public class SysDeptServiceImpl extends BaseServiceImpl list(Map params) { //普通管理员,只能查询所属部门及子部门的数据 @@ -902,4 +910,62 @@ public class SysDeptServiceImpl extends BaseServiceImpl().ok((DeptOption) obj); } + + @Override + public Result getDeptCodeTree() { + String deptKey = RedisKeys.getAllDeptCodeOptionKey(); + Object obj = redisUtils.get(deptKey); + if (null == obj) { + this.packageKcDeptCodeOption(); + obj = redisUtils.get(deptKey); + } + //防止列表为空时 redis一直不更新 + DeptCodeOption deptCodeOption = (DeptCodeOption)obj; + if(deptCodeOption.getOptions().size()==0){ + this.packageKcDeptCodeOption(); + obj = redisUtils.get(deptKey); + } + return new Result().ok((DeptCodeOption)obj); + } + + @Override + public void packageKcDeptCodeOption() { + DeptCodeFormDTO deptCodeFormDTO = new DeptCodeFormDTO(); + deptCodeFormDTO.setRootAreaCode(EpmetConstant.DEPT_CODE_YS); + deptCodeFormDTO.setRootAreaLevel(EpmetConstant.DEPT_CODE_LEVEL_YS); + Result deptCodeResult = analysisFeignClient.getDeptCode(deptCodeFormDTO); + if(deptCodeResult.getData()!=null){ + DeptCodeOption deptCodeOption = deptCodeResult.getData(); + redisUtils.set(RedisKeys.getAllDeptCodeOptionKey(), deptCodeOption); + } + } + + @Override + public Result addAreaCode(SysDeptDTO dto) { + SysDeptEntity parentDeptInfo = baseDao.getById(dto.getPid()); + if (null == parentDeptInfo) { + return new Result().error("请选择上级部门"); + } + if (StringUtils.isEmpty(parentDeptInfo.getAreaCode())) { + return new Result().error("上级部门未绑定区域编码,请先绑定上级部门区域编码"); + } + + DeptAddAreaCodeFormDTO formDto = new DeptAddAreaCodeFormDTO(); + formDto.setParentAreaCode(parentDeptInfo.getAreaCode()); + formDto.setName(dto.getName()); + if (null != dto.getId() && NumConstant.ZERO_L != dto.getId()) { + SysDeptEntity deptInfo = baseDao.getById(dto.getId()); + formDto.setCode(deptInfo.getAreaCode()); + } + Result data = analysisFeignClient.addAreaCode(formDto); + if (!data.success()) { + return new Result().error(data.getMsg()); + } + dto.setAreaCode(data.getData().getCode()); + + // 更新缓存中的行政区划 + this.packageKcDeptCodeOption(); + + return new Result().ok(dto); + } }