@ -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 ;
}
}