|
|
@ -18,11 +18,35 @@ |
|
|
|
package com.epmet.service.impl; |
|
|
|
|
|
|
|
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; |
|
|
|
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; |
|
|
|
import com.epmet.commons.tools.exception.RenException; |
|
|
|
import com.epmet.commons.tools.redis.common.CustomerStaffRedis; |
|
|
|
import com.epmet.commons.tools.utils.Result; |
|
|
|
import com.epmet.dao.IcResiUserDao; |
|
|
|
import com.epmet.dao.IcUserTransferRecordDao; |
|
|
|
import com.epmet.dto.IcResiCategoryWarnConfigDTO; |
|
|
|
import com.epmet.dto.IcResiUserDTO; |
|
|
|
import com.epmet.dto.form.IcResiUserOrgMsgFormDTO; |
|
|
|
import com.epmet.dto.form.IcResiUserTransferFormDTO; |
|
|
|
import com.epmet.dto.result.IcResiUserOrgMsgResultDTO; |
|
|
|
import com.epmet.entity.IcResiUserEntity; |
|
|
|
import com.epmet.entity.IcUserChangeDetailedEntity; |
|
|
|
import com.epmet.entity.IcUserChangeRecordEntity; |
|
|
|
import com.epmet.entity.IcUserTransferRecordEntity; |
|
|
|
import com.epmet.feign.GovOrgOpenFeignClient; |
|
|
|
import com.epmet.feign.OperCustomizeOpenFeignClient; |
|
|
|
import com.epmet.service.IcUserChangeDetailedService; |
|
|
|
import com.epmet.service.IcUserChangeRecordService; |
|
|
|
import com.epmet.service.IcUserTransferRecordService; |
|
|
|
import org.slf4j.Logger; |
|
|
|
import org.slf4j.LoggerFactory; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
|
|
|
|
/** |
|
|
|
* 居民调动记录表 |
|
|
|
* |
|
|
@ -31,6 +55,211 @@ import org.springframework.stereotype.Service; |
|
|
|
*/ |
|
|
|
@Service |
|
|
|
public class IcUserTransferRecordServiceImpl extends BaseServiceImpl<IcUserTransferRecordDao, IcUserTransferRecordEntity> implements IcUserTransferRecordService { |
|
|
|
private Logger log = LoggerFactory.getLogger(IcUserTransferRecordServiceImpl.class); |
|
|
|
@Autowired |
|
|
|
private IcResiUserDao icResiUserDao; |
|
|
|
@Autowired |
|
|
|
private GovOrgOpenFeignClient govOrgOpenFeignClient; |
|
|
|
@Autowired |
|
|
|
private IcUserChangeRecordService icUserChangeRecordService; |
|
|
|
@Autowired |
|
|
|
private OperCustomizeOpenFeignClient operCustomizeOpenFeignClient; |
|
|
|
@Autowired |
|
|
|
private IcUserChangeDetailedService icUserChangeDetailedService; |
|
|
|
|
|
|
|
/** |
|
|
|
* @Author sun |
|
|
|
* @Description 【基础信息】人员调动 |
|
|
|
**/ |
|
|
|
@Override |
|
|
|
public void add(IcResiUserTransferFormDTO formDTO) { |
|
|
|
//1.判断被调动人员是否有效
|
|
|
|
IcResiUserDTO resiUserDTO = icResiUserDao.selectIdByIdCard(formDTO.getCustomerId(), null, formDTO.getIcUserId()); |
|
|
|
if (null == resiUserDTO) { |
|
|
|
throw new RenException("9000", "人员调动失败,被调动人不存在!"); |
|
|
|
} |
|
|
|
|
|
|
|
//2.查询人员调动前的组织、网格、小区、楼栋、单元、房屋信息
|
|
|
|
IcResiUserOrgMsgFormDTO orgMsgFormDTO1 = new IcResiUserOrgMsgFormDTO(); |
|
|
|
orgMsgFormDTO1.setCustomerId(resiUserDTO.getCustomerId()); |
|
|
|
orgMsgFormDTO1.setAgencyId(resiUserDTO.getAgencyId()); |
|
|
|
orgMsgFormDTO1.setGridId(resiUserDTO.getGridId()); |
|
|
|
orgMsgFormDTO1.setNeighborHoodId(resiUserDTO.getVillageId()); |
|
|
|
orgMsgFormDTO1.setBuildingId(resiUserDTO.getBuildId()); |
|
|
|
orgMsgFormDTO1.setBuildingUnitId(resiUserDTO.getUnitId()); |
|
|
|
orgMsgFormDTO1.setHouseId(resiUserDTO.getHomeId()); |
|
|
|
Result<IcResiUserOrgMsgResultDTO> result1 = govOrgOpenFeignClient.icResiUserOrgMsg(orgMsgFormDTO1); |
|
|
|
if (!result1.success() || null == result1.getData().getAgencyDTO() || null == result1.getData().getGridDTO() || null == result1.getData().getNeighborHoodDTO() |
|
|
|
|| null == result1.getData().getBuildingDTO() || null == result1.getData().getBuildingUnitDTO() || null == result1.getData().getHouseDTO()) { |
|
|
|
log.warn("查找被调动人调动前的组织、网格、小区、楼栋、单元、房屋信息失败"); |
|
|
|
throw new RenException("9000", "获取被调动人基础信息失败"); |
|
|
|
} |
|
|
|
|
|
|
|
//3.查询人员调动后的组织、网格、小区、楼栋、单元、房屋信息
|
|
|
|
IcResiUserOrgMsgFormDTO orgMsgFormDTO2 = new IcResiUserOrgMsgFormDTO(); |
|
|
|
orgMsgFormDTO2.setCustomerId(formDTO.getCustomerId()); |
|
|
|
orgMsgFormDTO2.setAgencyId(formDTO.getNewAgencyId()); |
|
|
|
orgMsgFormDTO2.setGridId(formDTO.getNewGridId()); |
|
|
|
orgMsgFormDTO2.setNeighborHoodId(formDTO.getNewNeighborHoodId()); |
|
|
|
orgMsgFormDTO2.setBuildingId(formDTO.getNewBuildingId()); |
|
|
|
orgMsgFormDTO2.setBuildingUnitId(formDTO.getNewBuildingUnitId()); |
|
|
|
orgMsgFormDTO2.setHouseId(formDTO.getNewHouseId()); |
|
|
|
Result<IcResiUserOrgMsgResultDTO> result2 = govOrgOpenFeignClient.icResiUserOrgMsg(orgMsgFormDTO2); |
|
|
|
if (!result2.success() || null == result2.getData().getAgencyDTO() || null == result2.getData().getGridDTO() || null == result2.getData().getNeighborHoodDTO() |
|
|
|
|| null == result2.getData().getBuildingDTO() || null == result2.getData().getBuildingUnitDTO() || null == result2.getData().getHouseDTO()) { |
|
|
|
log.warn("查找被调动人调动后的组织、网格、小区、楼栋、单元、房屋信息失败"); |
|
|
|
throw new RenException("9000", "获取被调动人基础信息失败"); |
|
|
|
} |
|
|
|
|
|
|
|
//4.修改被调动人所属各维度信息或人员状态信息
|
|
|
|
IcResiUserEntity userEntity = new IcResiUserEntity(); |
|
|
|
userEntity.setId(formDTO.getIcUserId()); |
|
|
|
if ("out".equals(formDTO.getType())) { |
|
|
|
//4-1.转到客户外修改基础信息表人员信息状态
|
|
|
|
userEntity.setStatus("1"); |
|
|
|
} else { |
|
|
|
//4-2.客户内部流转修改所属各维度信息
|
|
|
|
userEntity.setAgencyId(formDTO.getNewAgencyId()); |
|
|
|
userEntity.setGridId(formDTO.getNewGridId()); |
|
|
|
userEntity.setVillageId(formDTO.getNewNeighborHoodId()); |
|
|
|
userEntity.setBuildId(formDTO.getNewBuildingId()); |
|
|
|
userEntity.setUnitId(formDTO.getNewBuildingUnitId()); |
|
|
|
userEntity.setHomeId(formDTO.getNewHouseId()); |
|
|
|
} |
|
|
|
icResiUserDao.updateById(userEntity); |
|
|
|
|
|
|
|
//5.生成调动记录
|
|
|
|
CustomerStaffInfoCacheResult staffInfoCache = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getStaffId()); |
|
|
|
IcUserTransferRecordEntity recordEntity = saveTransferRecord(staffInfoCache, formDTO, resiUserDTO, result1.getData(), result2.getData()); |
|
|
|
insert(recordEntity); |
|
|
|
|
|
|
|
//6.生成调动前后的变更记录、变更明细
|
|
|
|
//6-1.变更记录
|
|
|
|
IcUserChangeRecordEntity changeRecordEntity = new IcUserChangeRecordEntity(); |
|
|
|
changeRecordEntity.setIcUserTransferRecordId(recordEntity.getId()); |
|
|
|
if ("in".equals(formDTO.getType())) { |
|
|
|
changeRecordEntity.setCustomerId(resiUserDTO.getCustomerId()); |
|
|
|
} |
|
|
|
changeRecordEntity.setOperatorId(formDTO.getStaffId()); |
|
|
|
changeRecordEntity.setIcUserId(formDTO.getIcUserId()); |
|
|
|
changeRecordEntity.setOperatorName(staffInfoCache.getRealName()); |
|
|
|
changeRecordEntity.setIcUserName(resiUserDTO.getName()); |
|
|
|
changeRecordEntity.setType("transfer"); |
|
|
|
changeRecordEntity.setTypeName("调动"); |
|
|
|
StringBuffer beforeName = new StringBuffer(); |
|
|
|
beforeName.append(result1.getData().getAgencyDTO().getOrganizationName()).append("-").append(result1.getData().getGridDTO().getGridName()).append("-") |
|
|
|
.append(result1.getData().getNeighborHoodDTO().getNeighborHoodName()).append("-").append(result1.getData().getBuildingDTO().getBuildingName()).append("-") |
|
|
|
.append(result1.getData().getBuildingUnitDTO().getUnitName()).append("-").append(result1.getData().getHouseDTO().getHouseName()); |
|
|
|
changeRecordEntity.setBeforeChangeName(beforeName.toString()); |
|
|
|
StringBuffer afterName = new StringBuffer(); |
|
|
|
afterName.append(result2.getData().getAgencyDTO().getOrganizationName()).append("-").append(result2.getData().getGridDTO().getGridName()).append("-") |
|
|
|
.append(result2.getData().getNeighborHoodDTO().getNeighborHoodName()).append("-").append(result2.getData().getBuildingDTO().getBuildingName()).append("-") |
|
|
|
.append(result2.getData().getBuildingUnitDTO().getUnitName()).append("-").append(result2.getData().getHouseDTO().getHouseName()); |
|
|
|
changeRecordEntity.setAfterChangeName(afterName.toString()); |
|
|
|
changeRecordEntity.setChangeTime(formDTO.getTransferTime()); |
|
|
|
changeRecordEntity.setRemark(formDTO.getRemark()); |
|
|
|
icUserChangeRecordService.insert(changeRecordEntity); |
|
|
|
//6-2.变更明细【类别明细迁出组织的-1,迁入组织的1】
|
|
|
|
Result<List<IcResiCategoryWarnConfigDTO>> resultList = operCustomizeOpenFeignClient.categoryWarnConfigList(formDTO.getCustomerId()); |
|
|
|
if (!resultList.success()) { |
|
|
|
throw new RuntimeException("人员调动,获取客户居民类别预警配置表数据失败"); |
|
|
|
} |
|
|
|
Map<String, String> map = icResiUserDao.getCategoryListMap(formDTO.getIcUserId()); |
|
|
|
List<IcUserChangeDetailedEntity> changeDetailedEntityList = saveChangeDetailed(resultList.getData(), map, changeRecordEntity.getId(), formDTO, resiUserDTO); |
|
|
|
icUserChangeDetailedService.insertBatch(changeDetailedEntityList); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @Author sun |
|
|
|
* @Description 调动记录 |
|
|
|
**/ |
|
|
|
private IcUserTransferRecordEntity saveTransferRecord(CustomerStaffInfoCacheResult staffInfoCache, IcResiUserTransferFormDTO formDTO, IcResiUserDTO resiUserDTO, IcResiUserOrgMsgResultDTO result1, IcResiUserOrgMsgResultDTO result2) { |
|
|
|
IcUserTransferRecordEntity recordEntity = new IcUserTransferRecordEntity(); |
|
|
|
recordEntity.setIcUserId(formDTO.getIcUserId()); |
|
|
|
recordEntity.setOperatorId(formDTO.getStaffId()); |
|
|
|
recordEntity.setIcUserName(resiUserDTO.getName()); |
|
|
|
recordEntity.setOperatorName(null == staffInfoCache ? "" : staffInfoCache.getRealName()); |
|
|
|
recordEntity.setOldCustomerId(formDTO.getCustomerId()); |
|
|
|
if ("in".equals(formDTO.getType())) { |
|
|
|
recordEntity.setNewCustomerId(resiUserDTO.getCustomerId()); |
|
|
|
} |
|
|
|
recordEntity.setOldAgencyId(resiUserDTO.getAgencyId()); |
|
|
|
recordEntity.setNewAgencyId(formDTO.getNewAgencyId()); |
|
|
|
recordEntity.setOldAgencyName(result1.getAgencyDTO().getOrganizationName()); |
|
|
|
recordEntity.setNewAgencyName(result2.getAgencyDTO().getOrganizationName()); |
|
|
|
recordEntity.setOldGridId(resiUserDTO.getGridId()); |
|
|
|
recordEntity.setNewGridId(formDTO.getNewGridId()); |
|
|
|
recordEntity.setOldGridName(result1.getGridDTO().getGridName()); |
|
|
|
recordEntity.setNewGridName(result2.getGridDTO().getGridName()); |
|
|
|
recordEntity.setOldNeighborHoodId(resiUserDTO.getVillageId()); |
|
|
|
recordEntity.setNewNeighborHoodId(formDTO.getNewNeighborHoodId()); |
|
|
|
recordEntity.setOldNeighborHoodName(result1.getNeighborHoodDTO().getNeighborHoodName()); |
|
|
|
recordEntity.setNewNeighborHoodName(result2.getNeighborHoodDTO().getNeighborHoodName()); |
|
|
|
recordEntity.setOldBuildingId(resiUserDTO.getBuildId()); |
|
|
|
recordEntity.setNewBuildingId(formDTO.getNewBuildingId()); |
|
|
|
recordEntity.setOldBuildingName(result1.getBuildingDTO().getBuildingName()); |
|
|
|
recordEntity.setNewBuildingName(result2.getBuildingDTO().getBuildingName()); |
|
|
|
recordEntity.setOldBuildingUnitId(resiUserDTO.getUnitId()); |
|
|
|
recordEntity.setNewBuildingUnitId(formDTO.getNewBuildingUnitId()); |
|
|
|
recordEntity.setOldBuildingUnitName(result1.getBuildingUnitDTO().getUnitName()); |
|
|
|
recordEntity.setNewBuildingUnitName(result2.getBuildingUnitDTO().getUnitName()); |
|
|
|
recordEntity.setOldHouseId(resiUserDTO.getHomeId()); |
|
|
|
recordEntity.setNewHouseId(formDTO.getNewHouseId()); |
|
|
|
recordEntity.setOldHouseName(result1.getHouseDTO().getHouseName()); |
|
|
|
recordEntity.setNewHouseName(result2.getHouseDTO().getHouseName()); |
|
|
|
recordEntity.setTransferTime(formDTO.getTransferTime()); |
|
|
|
recordEntity.setRemark(formDTO.getRemark()); |
|
|
|
return recordEntity; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @Author sun |
|
|
|
* @Description 变更明细 |
|
|
|
**/ |
|
|
|
private List<IcUserChangeDetailedEntity> saveChangeDetailed(List<IcResiCategoryWarnConfigDTO> configList, Map<String, String> map, String icUserChangeRecordId, IcResiUserTransferFormDTO formDTO, IcResiUserDTO resiUserDTO) { |
|
|
|
List<IcUserChangeDetailedEntity> list = new ArrayList<>(); |
|
|
|
IcUserChangeDetailedEntity outEntity = null; |
|
|
|
IcUserChangeDetailedEntity inEntity = null; |
|
|
|
for (IcResiCategoryWarnConfigDTO cf : configList) { |
|
|
|
if ("1".equals(map.get(cf.getColumnName()))) { |
|
|
|
//迁出
|
|
|
|
outEntity = new IcUserChangeDetailedEntity(); |
|
|
|
outEntity.setCustomerId(formDTO.getCustomerId()); |
|
|
|
outEntity.setIcUserChangeRecordId(icUserChangeRecordId); |
|
|
|
outEntity.setAgencyId(resiUserDTO.getAgencyId()); |
|
|
|
outEntity.setGridId(resiUserDTO.getGridId()); |
|
|
|
outEntity.setNeighborHoodId(resiUserDTO.getVillageId()); |
|
|
|
outEntity.setBuildingId(resiUserDTO.getBuildId()); |
|
|
|
outEntity.setBuildingUnitId(resiUserDTO.getUnitId()); |
|
|
|
outEntity.setHouseId(resiUserDTO.getHomeId()); |
|
|
|
outEntity.setIcUserId(formDTO.getIcUserId()); |
|
|
|
outEntity.setType("out"); |
|
|
|
outEntity.setTypeName("迁出"); |
|
|
|
outEntity.setFieldName(cf.getColumnName()); |
|
|
|
outEntity.setValue(-1); |
|
|
|
list.add(outEntity); |
|
|
|
//迁入
|
|
|
|
if ("in".equals(formDTO.getType())) { |
|
|
|
inEntity = new IcUserChangeDetailedEntity(); |
|
|
|
inEntity.setCustomerId(formDTO.getCustomerId()); |
|
|
|
inEntity.setIcUserChangeRecordId(icUserChangeRecordId); |
|
|
|
inEntity.setAgencyId(formDTO.getNewAgencyId()); |
|
|
|
inEntity.setGridId(formDTO.getNewGridId()); |
|
|
|
inEntity.setNeighborHoodId(formDTO.getNewNeighborHoodId()); |
|
|
|
inEntity.setBuildingId(formDTO.getNewBuildingId()); |
|
|
|
inEntity.setBuildingUnitId(formDTO.getNewBuildingUnitId()); |
|
|
|
inEntity.setHouseId(formDTO.getNewHouseId()); |
|
|
|
inEntity.setIcUserId(formDTO.getIcUserId()); |
|
|
|
inEntity.setType("in"); |
|
|
|
inEntity.setTypeName("迁入"); |
|
|
|
inEntity.setFieldName(cf.getColumnName()); |
|
|
|
inEntity.setValue(1); |
|
|
|
list.add(inEntity); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return list; |
|
|
|
} |
|
|
|
|
|
|
|
} |