diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencyListResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencyListResultDTO.java index 499219f9eb..52f09a0a48 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencyListResultDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencyListResultDTO.java @@ -58,5 +58,6 @@ public class AgencyListResultDTO implements Serializable { * 联系电话 */ private String mobile = ""; - + private String areaCode; + private String parentAreaCode; } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/DepartmentListResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/DepartmentListResultDTO.java index 8e3b3ce418..9b2cf82cc3 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/DepartmentListResultDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/DepartmentListResultDTO.java @@ -58,4 +58,5 @@ public class DepartmentListResultDTO implements Serializable { * 联系电话 */ private String mobile = ""; + private String areaCode; } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/GridBaseInfoResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/GridBaseInfoResultDTO.java index 4bc56543a1..62a52464dc 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/GridBaseInfoResultDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/GridBaseInfoResultDTO.java @@ -49,4 +49,5 @@ public class GridBaseInfoResultDTO implements Serializable { * 联系电话 */ private String mobile = ""; + private String areaCode; } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java index b1087949c0..fafb2d474d 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java @@ -305,8 +305,6 @@ public interface CustomerAgencyDao extends BaseDao { **/ OrgMobileResultDTO getAgencyMobile(@Param("gridId") String gridId); - int updateSubAgencyAreaCode(@Param("customerId") String customerId, @Param("originalParentAreaCode")String originalParentAreaCode,@Param("operateUserId") String operateUserId); - int updateSubAgencyAreaCodeById(@Param("customerId")String customerId, @Param("agencyId")String agencyId, @Param("operateUserId") String operateUserId); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerDepartmentDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerDepartmentDao.java index 802b67efd3..4d3d2668e8 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerDepartmentDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerDepartmentDao.java @@ -105,8 +105,4 @@ public interface CustomerDepartmentDao extends BaseDao int updateSubDeptAreaCode(@Param("customerId") String customerId, @Param("areaCode")String areaCode, @Param("operateUserId") String operateUserId); - - int updateDeptAreaCode(@Param("agencyId")String agencyId, - @Param("areaCode")String areaCode, - @Param("operateUserId") String operateUserId); } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerGridDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerGridDao.java index f8772354e0..7ae8f23367 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerGridDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerGridDao.java @@ -356,5 +356,4 @@ public interface CustomerGridDao extends BaseDao { @Param("agencyId")String agencyId, @Param("operateUserId") String operateUserId); - int updateGridAreaCode(@Param("agencyId")String agencyId, @Param("areaCode")String areaCode,@Param("operateUserId") String operateUserId); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java index cd345bdcbe..e3ea43b1cf 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java @@ -19,6 +19,7 @@ package com.epmet.service.impl; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; @@ -42,6 +43,7 @@ import com.epmet.dto.GovStaffRoleDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.entity.CustomerAgencyEntity; +import com.epmet.entity.CustomerDepartmentEntity; import com.epmet.entity.CustomerGridEntity; import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.feign.EpmetMessageOpenFeignClient; @@ -62,6 +64,7 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.Date; import java.util.List; /** @@ -155,57 +158,26 @@ public class AgencyServiceImpl implements AgencyService { originalEntity.setCode(formDTO.getCode()); originalEntity.setContacts(formDTO.getContacts()); originalEntity.setMobile(formDTO.getMobile()); - if (StringUtils.isNotBlank(originalEntity.getAreaCode()) - && originalEntity.getAreaCode().contains("UD") - && StringUtils.isNotBlank(formDTO.getAreaCode()) - && "other".equals(formDTO.getAreaCode())) { - throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "自定义编码不允许修改", "自定义组织区划代码不允许修改"); - } - if (StringUtils.isNotBlank(formDTO.getAreaCode()) && !formDTO.getAreaCode().equals(originalEntity.getAreaCode())) { - CustomerAgencyEntity parent = customerAgencyDao.selectById(originalEntity.getPid()); - //如果修改了areaCode。 - if(StringUtils.isNotBlank(originalEntity.getAreaCode())){ - //如果原来这个组织有area_code再去更新,没有其实应该按照pids去更新。 - // customerAgencyDao.updateSubAgencyAreaCode(originalEntity.getCustomerId(), originalEntity.getAreaCode(), formDTO.getUserId()); - customerAgencyDao.updateSubAgencyAreaCodeById(originalEntity.getCustomerId(), originalEntity.getId(), formDTO.getUserId()); - //网格的 - customerGridDao.updateSubGridAreaCode(originalEntity.getCustomerId(), originalEntity.getId(), formDTO.getUserId()); - //部门的 - customerDepartmentDao.updateSubDeptAreaCode(originalEntity.getCustomerId(), originalEntity.getAreaCode(), formDTO.getUserId()); - } - //判断areaCodeSwitch:open: 选择地区编码必填;closed: 无需选择地区编码 - if (CustomerAgencyConstant.AREA_CODE_SWITCH_OPEN.equals(formDTO.getAreaCodeSwitch())) { - //校验areaCode是否被使用过 - if (!"other".equals(formDTO.getAreaCode())) { - List agencyIds = customerAgencyDao.selectAgencyIdsByAreaCode(formDTO.getAreaCode(),formDTO.getAgencyId()); - if (CollectionUtils.isNotEmpty(agencyIds)) { - //已经被占用,提示 - throw new RenException(EpmetErrorCode.AREA_CODE_ALREADY_EXISTS.getCode(), EpmetErrorCode.AREA_CODE_ALREADY_EXISTS.getMsg()); - } - originalEntity.setAreaCode(formDTO.getAreaCode()); - originalEntity.setParentAreaCode(parent.getAreaCode()); - }else{ - //如果选择的是other,需要自定义一个编码 - AddAreaCodeFormDTO addAreaCodeFormDTO = new AddAreaCodeFormDTO(); - addAreaCodeFormDTO.setCurrentAreaLevel(formDTO.getLevel()); - addAreaCodeFormDTO.setParentAreaCode(parent.getAreaCode()); - addAreaCodeFormDTO.setName(formDTO.getAgencyName()); - Result addAreaCodeResult = epmetCommonServiceOpenFeignClient.addAreaCode(addAreaCodeFormDTO); - if (!addAreaCodeResult.success() || StringUtils.isBlank(addAreaCodeResult.getData())) { - if (addAreaCodeResult.getCode() > 8000) { - throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "自定义area_code异常" + addAreaCodeResult.getMsg()); - } else { - throw new RenException("自定义area_code异常" + addAreaCodeResult.getInternalMsg()); - } - } - originalEntity.setAreaCode(addAreaCodeResult.getData()); - originalEntity.setParentAreaCode(parent.getAreaCode()); - } + //当前客户开启了area_code_switch参数:open: 选择地区编码必填;closed: 无需选择地区编码 + if (CustomerAgencyConstant.AREA_CODE_SWITCH_OPEN.equals(formDTO.getAreaCodeSwitch())) { + //开关开启后,areaCode必填 + String originalAreaCode =originalEntity.getAreaCode(); + checkEditAgencyFormDTO(formDTO,originalAreaCode); + // 1、之前当前组织没有编码,本次修改设置了编码 + // 2、之前已经有编码,本次修改为了其他编码 + if (StringUtils.isNotBlank(formDTO.getAreaCode()) && !formDTO.getAreaCode().equals(originalAreaCode)) { + CustomerAgencyEntity parent = customerAgencyDao.selectById(originalEntity.getPid()); + String newAreaCode=getAgencyNewAreaCode(formDTO,parent); + originalEntity.setAreaCode(newAreaCode); + originalEntity.setParentAreaCode(parent.getAreaCode()); + formDTO.setAreaCode(newAreaCode); + } + //什么时候要全部置为空呢?原来没有现在有 || 原来与现在不一致 + if ((StringUtils.isBlank(originalAreaCode) && StringUtils.isNotBlank(formDTO.getAreaCode())) + || (!formDTO.getAreaCode().equals(originalAreaCode))) { + updateSubOrg(originalEntity.getCustomerId(),formDTO,originalAreaCode); } - //更新直属部门和直属网格的areaCode - customerGridDao.updateGridAreaCode(originalEntity.getId(),formDTO.getAreaCode(),formDTO.getUserId()); - customerDepartmentDao.updateDeptAreaCode(originalEntity.getId(),formDTO.getAreaCode(),formDTO.getUserId()); } //1:更新当前组织信息 @@ -252,6 +224,104 @@ public class AgencyServiceImpl implements AgencyService { return result; } + /** + * 所有下家组织、网格、部门的area_code,parent_area_code置为空 + * 直属组织parent_area_code、直属网格+直属部门的area_code更新为最新值 + * @param customerId + * @param formDTO + * @param originalAreaCode + */ + private void updateSubOrg(String customerId, EditAgencyFormDTO formDTO,String originalAreaCode) { + //如果原来这个组织有area_code再去更新,没有其实应该按照pids去更新。 + customerAgencyDao.updateSubAgencyAreaCodeById(customerId, formDTO.getAgencyId(), formDTO.getUserId()); + //网格的 + customerGridDao.updateSubGridAreaCode(customerId, formDTO.getAgencyId(), formDTO.getUserId()); + //部门的 + customerDepartmentDao.updateSubDeptAreaCode(customerId, originalAreaCode, formDTO.getUserId()); + + //1、更新直属网格的areaCode + LambdaUpdateWrapper updateGridWrapper = new LambdaUpdateWrapper<>(); + updateGridWrapper.eq(CustomerGridEntity::getPid,formDTO.getAgencyId()) + .set(CustomerGridEntity::getAreaCode, formDTO.getAreaCode()) + .set(CustomerGridEntity::getUpdatedBy,formDTO.getUserId()) + .set(CustomerGridEntity::getUpdatedTime,new Date()); + int subGridRows=customerGridDao.update(null,updateGridWrapper); + log.info(String.format("更新了%s个直属网格的area_code",subGridRows)); + + // 2、更新直属部门的area_code + LambdaUpdateWrapper updateDeptWrapper = new LambdaUpdateWrapper<>(); + updateDeptWrapper.eq(CustomerDepartmentEntity::getAgencyId,formDTO.getAgencyId()) + .set(CustomerDepartmentEntity::getAreaCode, formDTO.getAreaCode()) + .set(CustomerDepartmentEntity::getUpdatedBy,formDTO.getUserId()) + .set(CustomerDepartmentEntity::getUpdatedTime,new Date()); + int gridRows=customerDepartmentDao.update(null,updateDeptWrapper); + log.info(String.format("更新了%s个直属部门的area_code",gridRows)); + + // 3、更新下级组织的parent_area_code + LambdaUpdateWrapper updateAgencyWrapper = new LambdaUpdateWrapper<>(); + updateAgencyWrapper.eq(CustomerAgencyEntity::getPid,formDTO.getAgencyId()) + .set(CustomerAgencyEntity::getParentAreaCode, formDTO.getAreaCode()) + .set(CustomerAgencyEntity::getUpdatedBy,formDTO.getUserId()) + .set(CustomerAgencyEntity::getUpdatedTime,new Date()); + Integer rows = customerAgencyDao.update(null, updateAgencyWrapper); + log.info(String.format("更新了%s个下级组织的parent_area_code",rows)); + } + + /** + * + * @param formDTO 编辑组织入参 + * @param parent 当前编辑组织的上级组织 + * @return 返回组织区划编码 + */ + private String getAgencyNewAreaCode(EditAgencyFormDTO formDTO, CustomerAgencyEntity parent) { + String newAreaCode=""; + if (!"other".equals(formDTO.getAreaCode())) { + //校验除了当前组织外,areaCode是否被使用过 + List agencyIds = customerAgencyDao.selectAgencyIdsByAreaCode(formDTO.getAreaCode(), formDTO.getAgencyId()); + if (CollectionUtils.isNotEmpty(agencyIds)) { + //已经被占用,提示 + throw new RenException(EpmetErrorCode.AREA_CODE_ALREADY_EXISTS.getCode(), EpmetErrorCode.AREA_CODE_ALREADY_EXISTS.getMsg()); + } + newAreaCode=formDTO.getAreaCode(); + } else { + //如果选择的是other,需要自定义一个编码 + AddAreaCodeFormDTO addAreaCodeFormDTO = new AddAreaCodeFormDTO(); + addAreaCodeFormDTO.setCurrentAreaLevel(formDTO.getLevel()); + addAreaCodeFormDTO.setParentAreaCode(parent.getAreaCode()); + addAreaCodeFormDTO.setName(formDTO.getAgencyName()); + Result addAreaCodeResult = epmetCommonServiceOpenFeignClient.addAreaCode(addAreaCodeFormDTO); + if (!addAreaCodeResult.success() || StringUtils.isBlank(addAreaCodeResult.getData())) { + if (addAreaCodeResult.getCode() > 8000) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "自定义area_code异常" + addAreaCodeResult.getInternalMsg(), addAreaCodeResult.getMsg()); + } else { + throw new RenException("自定义area_code异常" + addAreaCodeResult.getInternalMsg()); + } + } + newAreaCode=addAreaCodeResult.getData(); + } + return newAreaCode; + } + + /** + * 如果当前客户开启了areaCode,校验参数逼单 + * @param formDTO + */ + private void checkEditAgencyFormDTO(EditAgencyFormDTO formDTO,String originalAreaCode) { + if (StringUtils.isBlank(formDTO.getAreaCode())) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "area_code_switch is open areaCode不能为空", "组织区划不能为空"); + } + if (StringUtils.isBlank(formDTO.getParentAreaCode())) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "area_code_switch is open parentAreaCode不能为空", "请先设置上级组织的组织区划"); + } + //如果当前组织已经使用了自定义编码,不允许在选择其他。 + if (StringUtils.isNotBlank(originalAreaCode) + && originalAreaCode.contains("UD") + && StringUtils.isNotBlank(formDTO.getAreaCode()) + && "other".equals(formDTO.getAreaCode())) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "自定义编码不允许修改", "自定义组织区划代码不允许修改"); + } + } + /** * @param formDTO * @return @@ -546,7 +616,11 @@ public class AgencyServiceImpl implements AgencyService { addAreaCodeFormDTO.setName(formDTO.getAgencyName()); Result addAreaCodeResult = epmetCommonServiceOpenFeignClient.addAreaCode(addAreaCodeFormDTO); if (!addAreaCodeResult.success() || StringUtils.isBlank(addAreaCodeResult.getData())) { - throw new RenException("自定义area_code异常" + addAreaCodeResult.getInternalMsg()); + if (addAreaCodeResult.getCode() > 8000) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "自定义area_code异常" + addAreaCodeResult.getInternalMsg(), addAreaCodeResult.getMsg()); + } else { + throw new RenException("自定义area_code异常" + addAreaCodeResult.getInternalMsg()); + } } insertEntity.setAreaCode(addAreaCodeResult.getData()); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml index 1b5e5c9d89..2cd7210dc5 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml @@ -131,7 +131,9 @@ total_user AS 'totalUser', IFNULL(code,'')AS 'code', IFNULL(contacts,'')AS 'contacts', - IFNULL(mobile,'')AS 'mobile' + IFNULL(mobile,'')AS 'mobile', + IFNULL(AREA_CODE,'') AS areaCode, + IFNULL(PARENT_AREA_CODE,'') parentAreaCode FROM customer_agency WHERE del_flag = '0' AND pid = #{pId} @@ -731,18 +733,6 @@ AND cg.id = #{gridId} - - UPDATE customer_agency - SET AREA_CODE = '', - PARENT_AREA_CODE = '', - UPDATED_BY=#{operateUserId}, - UPDATED_TIME = NOW() - WHERE - DEL_FLAG = '0' - AND CUSTOMER_ID = #{customerId} - AND PARENT_AREA_CODE LIKE concat( #{originalParentAreaCode}, '%' ) - - UPDATE customer_agency SET AREA_CODE = '', diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerDepartmentDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerDepartmentDao.xml index 6eef0b4cc2..3e1e4f50c2 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerDepartmentDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerDepartmentDao.xml @@ -26,7 +26,8 @@ total_user AS 'totalUser', IFNULL(code,'')AS 'code', IFNULL(contacts,'')AS 'contacts', - IFNULL(mobile,'')AS 'mobile' + IFNULL(mobile,'')AS 'mobile', + IFNULL(AREA_CODE,'')AS areaCode FROM customer_department WHERE del_flag = '0' AND agency_id = #{agencyId} @@ -97,12 +98,4 @@ AND AREA_CODE LIKE concat(#{areaCode}, '%' ) - - update customer_department - SET AREA_CODE = #{areaCode}, - UPDATED_BY=#{operateUserId}, - UPDATED_TIME = NOW() - where del_flag='0' - and agency_id=#{agencyId} - \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerGridDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerGridDao.xml index c809cc8bfe..701573e942 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerGridDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerGridDao.xml @@ -291,7 +291,8 @@ IFNULL(code,'')AS 'code', IFNULL(grid_type,'')AS 'gridType', IFNULL(contacts,'')AS 'contacts', - IFNULL(mobile,'')AS 'mobile' + IFNULL(mobile,'')AS 'mobile', + IFNULL(AREA_CODE,'') as areaCode FROM CUSTOMER_GRID @@ -764,12 +765,4 @@ AND pids LIKE concat('%',#{agencyId}, '%' ) - - update customer_grid - SET AREA_CODE = #{areaCode}, - UPDATED_BY=#{operateUserId}, - UPDATED_TIME = NOW() - where del_flag='0' - and pid=#{agencyId} -