package com.panzhihua.service_community.service.impl;
|
|
import java.util.Date;
|
import java.util.List;
|
|
import javax.annotation.Resource;
|
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.panzhihua.common.enums.KeyPersonLabelEnum;
|
import com.panzhihua.common.model.dtos.community.ComMngPopulationTagCardNoDTO;
|
import com.panzhihua.common.model.dtos.community.KeyPersonInfoDTO;
|
import com.panzhihua.common.model.helper.AESUtil;
|
import com.panzhihua.common.model.vos.R;
|
import com.panzhihua.service_community.dao.KeyPersonInfoDAO;
|
import com.panzhihua.service_community.model.dos.ComMngPopulationDO;
|
import com.panzhihua.service_community.model.dos.KeyPersonInfoDO;
|
import com.panzhihua.service_community.service.ComMngPopulationService;
|
import com.panzhihua.service_community.service.KeyPersonInfoService;
|
|
/**
|
* program 攀枝花智慧社区项目 description 特殊人群管理API
|
*
|
* @author manailin Date 2021-01-22 15:30
|
**/
|
@Service
|
public class KeyPersonInfoServiceImpl extends ServiceImpl<KeyPersonInfoDAO, KeyPersonInfoDO>
|
implements KeyPersonInfoService {
|
|
@Resource
|
private ComMngPopulationService comMngPopulationService;
|
|
@Value("${domain.aesKey:}")
|
private String aesKey;
|
|
/**
|
* description 批量保存重点人群人员信息 处理逻辑:同一个人的信息可以被多个社区重复录入 一个人的信息如果被同一个社区重复导入。以最新的导入数据为准。将之前的数据进行更新操作。
|
*
|
* @param list
|
* 重点人群信息
|
* @return R 保存结果
|
* @author manailin
|
* @date 2021/6/10 17:00
|
*/
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public R saveBatchKeyPerson(List<KeyPersonInfoDTO> list) {
|
list.forEach(keyPersonInfoDTO -> {
|
KeyPersonInfoDO dbKeyPerson = checkExistFromDb(keyPersonInfoDTO);
|
ComMngPopulationDO population = comMngPopulationService.getPopulationByCardNo(keyPersonInfoDTO.getCardNo());
|
if (population != null) {
|
keyPersonInfoDTO.setUserId(population.getId());
|
}
|
if (dbKeyPerson != null) {
|
// 已经存在数据,进行数据更新操作
|
KeyPersonInfoDO keyPersonInfoDO = new KeyPersonInfoDO();
|
BeanUtils.copyProperties(keyPersonInfoDTO, keyPersonInfoDO);
|
keyPersonInfoDO.setId(dbKeyPerson.getId());
|
ComMngPopulationTagCardNoDTO comMngPopulationTagCardNoDTO = new ComMngPopulationTagCardNoDTO();
|
comMngPopulationTagCardNoDTO.setCardNo(dbKeyPerson.getCardNo());
|
comMngPopulationTagCardNoDTO.setLabel(calculateLabel(dbKeyPerson));
|
comMngPopulationService.editTagPopulationByCardNo(comMngPopulationTagCardNoDTO);
|
try {
|
String aesCardNo = AESUtil.encrypt128(keyPersonInfoDTO.getCardNo(), aesKey);
|
String phone = AESUtil.encrypt128(keyPersonInfoDTO.getPhone(), aesKey);
|
String guardianPhone = AESUtil.encrypt128(keyPersonInfoDTO.getGuardianPhone(), aesKey);
|
keyPersonInfoDO.setCardNo(aesCardNo);
|
keyPersonInfoDO.setPhone(phone);
|
keyPersonInfoDO.setGuardianPhone(guardianPhone);
|
keyPersonInfoDO.setVisiterType(Integer.parseInt(keyPersonInfoDTO.getVisiterType()));
|
keyPersonInfoDO.setInvalid(false);
|
keyPersonInfoDO.setSubmitDate(new Date());
|
updateById(keyPersonInfoDO);
|
} catch (Exception e) {
|
log.error("根据身份证查询残疾人群业务-加密证件信息出错");
|
}
|
} else {
|
KeyPersonInfoDO keyPersonInfoDO = new KeyPersonInfoDO();
|
BeanUtils.copyProperties(keyPersonInfoDTO, keyPersonInfoDO);
|
keyPersonInfoDO.setVisiterType(Integer.parseInt(keyPersonInfoDTO.getVisiterType()));
|
keyPersonInfoDO.setInvalid(false);
|
keyPersonInfoDO.setSubmitDate(new Date());
|
save(keyPersonInfoDO);
|
}
|
});
|
return R.ok();
|
}
|
|
private String calculateLabel(KeyPersonInfoDO dbKeyPerson) {
|
switch (dbKeyPerson.getVisiterType()) {
|
case 1:
|
return KeyPersonLabelEnum.XD.getName();
|
case 2:
|
return KeyPersonLabelEnum.ZJ.getName();
|
|
case 3:
|
return KeyPersonLabelEnum.XJ.getName();
|
|
case 4:
|
return KeyPersonLabelEnum.QT.getName();
|
default:
|
return "";
|
}
|
}
|
|
private KeyPersonInfoDO checkExistFromDb(KeyPersonInfoDTO keyPersonInfoDTO) {
|
try {
|
String aesCardNo = AESUtil.encrypt128(keyPersonInfoDTO.getCardNo(), aesKey);
|
return baseMapper.selectOne(new QueryWrapper<KeyPersonInfoDO>().eq("act_id", keyPersonInfoDTO.getActId())
|
.eq("card_no", aesCardNo).eq("visiter_type", keyPersonInfoDTO.getVisiterType()));
|
} catch (Exception e) {
|
log.error("根据身份证查询特殊人群业务-加密证件信息出错");
|
}
|
return null;
|
}
|
}
|