package com.panzhihua.service_community.service.impl;
|
|
import static com.panzhihua.common.enums.IdentityApprovalStatusEnum.PASS_THROUGH;
|
import static com.panzhihua.common.enums.IdentityApprovalStatusEnum.PENDING_REVIEW;
|
import static com.panzhihua.common.enums.IdentityAuthMethodEnum.FACE_AUTH;
|
import static com.panzhihua.common.enums.IdentityAuthStatusEnum.CERTIFIED;
|
|
import java.text.SimpleDateFormat;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Objects;
|
|
import javax.annotation.Resource;
|
|
import com.panzhihua.common.model.vos.community.*;
|
import com.panzhihua.common.model.vos.user.SysTemplateConfigVO;
|
import com.panzhihua.common.service.user.UserService;
|
import com.panzhihua.service_community.dao.*;
|
import com.panzhihua.service_community.model.dos.*;
|
import com.panzhihua.service_community.service.ComPensionAuthPensionerService;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.util.ObjectUtils;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.panzhihua.common.exceptions.ServiceException;
|
import com.panzhihua.common.model.dtos.community.AddIdentityAuthDTO;
|
import com.panzhihua.common.model.dtos.community.EldersAuthTypeQueryDTO;
|
import com.panzhihua.common.model.dtos.community.PageElderAuthRecordsDTO;
|
import com.panzhihua.common.model.dtos.community.PageIdentityAuthRecordDTO;
|
import com.panzhihua.common.model.helper.AESUtil;
|
import com.panzhihua.common.model.vos.R;
|
import com.panzhihua.common.utlis.AgeUtils;
|
import com.panzhihua.common.utlis.DateUtils;
|
import com.panzhihua.common.utlis.StringUtils;
|
import com.panzhihua.common.utlis.WxUtil;
|
import com.panzhihua.common.utlis.WxXCXTempSend;
|
import com.panzhihua.service_community.service.ComPensionAuthRecordService;
|
|
import cn.hutool.core.util.IdcardUtil;
|
import lombok.extern.slf4j.Slf4j;
|
|
/**
|
* @title: ComPensionAuthRecordServiceImpl
|
* @projectName: 成都呐喊信息技术有限公司-智慧社区项目
|
* @description: 养老认证记录服务实现类
|
* @author: hans
|
* @date: 2021/09/01 17:35
|
*/
|
@Slf4j
|
@Service
|
public class ComPensionAuthRecordServiceImpl extends ServiceImpl<ComPensionAuthRecordDAO, ComPensionAuthRecordDO> implements ComPensionAuthRecordService {
|
@Resource
|
private ComPensionAuthRecordDAO comPensionAuthRecordDAO;
|
@Resource
|
private ComMngPopulationDAO comMngPopulationDAO;
|
@Resource
|
private ComPensionAuthPensionerDAO comPensionAuthPensionerDAO;
|
@Resource
|
private ComPensionAuthRecordService comPensionAuthRecordService;
|
@Resource
|
private ComActDAO comActDAO;
|
@Resource
|
private ComPensionAuthStatisticsDAO comPensionAuthStatisticsDAO;
|
@Resource
|
private SysConfMapper sysConfDao;
|
@Resource
|
private ComActActSignDAO comActActSignDAO;
|
@Value("${domain.aesKey:}")
|
private String aesKey;
|
@Resource
|
private ComPensionAuthPensionerService comPensionAuthPensionerService;
|
@Resource
|
private ComElderAuthElderliesDAO comElderAuthElderliesDAO;
|
@Resource
|
private UserService userService;
|
|
@Override
|
public R pagePensionAuthRecords(PageElderAuthRecordsDTO pageElderAuthRecordsDTO) {
|
Page page = new Page<>();
|
Long pageNum = pageElderAuthRecordsDTO.getPageNum();
|
Long pageSize = pageElderAuthRecordsDTO.getPageSize();
|
if (null == pageNum || 0 == pageNum) {
|
pageNum = 1L;
|
}
|
if (null == pageSize || 0 == pageSize) {
|
pageSize = 10L;
|
}
|
page.setSize(pageSize);
|
page.setCurrent(pageNum);
|
try {
|
//关键词为空时需要进行加密,通过加密去检索身份证号筛选高龄认证记录
|
String idCard = AESUtil.encrypt128(pageElderAuthRecordsDTO.getSearchKey(), aesKey);
|
pageElderAuthRecordsDTO.setIdCard(idCard);
|
}catch (Exception e){
|
log.error("查询高龄认证记录转换身份证号失败");
|
}
|
IPage<ComPensionAuthRecordVO> iPage = comPensionAuthRecordDAO.pagePensionAuthRecords(page, pageElderAuthRecordsDTO);
|
if (!iPage.getRecords().isEmpty()) {
|
iPage.getRecords().forEach(comPensionAuthRecordVO -> {
|
if (StringUtils.isNotEmpty(comPensionAuthRecordVO.getBirthday())) {
|
comPensionAuthRecordVO.setAge(AgeUtils.getAgeFromBirthTimes(comPensionAuthRecordVO.getBirthday()));
|
}
|
});
|
}
|
return R.ok(iPage);
|
}
|
|
@Override
|
public R detailPensionAuthRecords(Long authRecordId) {
|
ComPensionAuthRecordVO comPensionAuthRecordVO = comPensionAuthRecordDAO.detailPensionAuthRecords(authRecordId);
|
comPensionAuthRecordVO.setNextIds(comPensionAuthRecordDAO.getNextIds(comPensionAuthRecordVO.getCommunityId(),authRecordId));
|
try {
|
comPensionAuthRecordVO.setAge(IdcardUtil.getAgeByIdCard(comPensionAuthRecordVO.getIdCard()));
|
}catch (Exception e){
|
log.error("身份证转换失败");
|
}
|
return R.ok(comPensionAuthRecordVO);
|
}
|
|
@Override
|
public R examinePensionAuthRecords(ComPensionAuthRecordVO comPensionAuthRecordVO) {
|
ComPensionAuthRecordDO comPensionAuthRecordDO = comPensionAuthRecordDAO.selectById(comPensionAuthRecordVO.getId());
|
if (comPensionAuthRecordDO == null) {
|
return R.fail("未查询到养老认证记录");
|
}
|
|
ComPensionAuthPensionerDO authPensionerDO = comPensionAuthPensionerDAO.selectById(comPensionAuthRecordDO.getPensionerId());
|
if(authPensionerDO == null){
|
return R.fail("未查询到老人信息");
|
}
|
|
BeanUtils.copyProperties(comPensionAuthRecordVO, comPensionAuthRecordDO);
|
if (comPensionAuthRecordVO.getApprovalStatus().equals(PASS_THROUGH.getStatus())) {
|
comPensionAuthRecordDO.setAuthStatus(CERTIFIED.getStatus());
|
sendAuthSubscribe(comPensionAuthRecordDO.getSubmitUserId(), "养老认证", "认证成功!", comPensionAuthRecordVO.getAreaCode());
|
|
authPensionerDO.setAddress(comPensionAuthRecordVO.getAddress());
|
comPensionAuthPensionerDAO.updateById(authPensionerDO);
|
} else {
|
sendAuthSubscribe(comPensionAuthRecordDO.getSubmitUserId(), "养老认证", comPensionAuthRecordVO.getRejectReason(),comPensionAuthRecordVO.getAreaCode());
|
}
|
comPensionAuthRecordDO.setApprovalDate(new Date());
|
int nub = comPensionAuthRecordDAO.updateById(comPensionAuthRecordDO);
|
if (nub < 1) {
|
return R.fail("审核失败");
|
}
|
return R.ok();
|
}
|
|
private void sendAuthSubscribe(Long userId, String name, String result,String areaCode) {
|
//发送订阅通知
|
Map<String, String> map = comActActSignDAO.getUserOpenId(userId);
|
if (map != null) {
|
String openid = map.get("openid");
|
try {
|
WxXCXTempSend util = new WxXCXTempSend();
|
String accessToken = util.getAccessToken();
|
R<SysTemplateConfigVO> sysTemplateConfigVO=userService.selectTemplate(areaCode,5);
|
WxUtil.sendSubscribeRZSH(openid, accessToken, name,
|
DateUtils.format(new Date(), DateUtils.ymdhms_format),
|
result,sysTemplateConfigVO.getData().getTemplateId());
|
} catch (Exception e) {
|
log.error("推送审核状态订阅消息失败,失败原因:" + e.getMessage());
|
}
|
}
|
}
|
|
@Override
|
public R signPensionAuthRecords(ComPensionAuthRecordVO comPensionAuthRecordVO) {
|
ComPensionAuthRecordDO comPensionAuthRecordDO = comPensionAuthRecordDAO.selectById(comPensionAuthRecordVO.getId());
|
if (comPensionAuthRecordDO == null) {
|
return R.fail("未查询到养老认证记录");
|
}
|
BeanUtils.copyProperties(comPensionAuthRecordVO, comPensionAuthRecordDO);
|
int nub = comPensionAuthRecordDAO.updateById(comPensionAuthRecordDO);
|
if (nub < 1) {
|
return R.fail("标记失败");
|
}
|
return R.ok();
|
}
|
|
@Override
|
public R getPensionAuthRecordsByIds(List<Long> ids) {
|
List<ComPensionAuthRecordExcleVO> comPensionAuthRecordExcleVOS = comPensionAuthRecordDAO.getPensionAuthRecordsByIds(ids);
|
return R.ok(comPensionAuthRecordExcleVOS);
|
}
|
|
@Transactional(rollbackFor = Exception.class)
|
@Override
|
public R listSavePensionAuthRecordExcelVO(List<ComPensionAuthRecordImportExcelVO> list, Long communityId, Long userId) {
|
// 需要新增的认证记录集合
|
List<ComPensionAuthRecordDO> saveList = new ArrayList<>();
|
// 需要修改的认证记录集合
|
List<ComPensionAuthRecordDO> updateList = new ArrayList<>();
|
// 需要更新的老人信息
|
List<ComPensionAuthPensionerDO> updatePensionerList = new ArrayList<>();
|
log.info("开始处理导入数据");
|
Date nowDate = new Date();
|
List<ComPensionAuthRecordImportMistakeExcelVO> mistakes = new ArrayList<>();
|
try {
|
// 查询所有人口数据放入HashMap中
|
List<ComMngPopulationDO> populationList = comMngPopulationDAO.selectList(null);
|
HashMap<String, Object> populationMap = new HashMap<>();
|
populationList.forEach(population -> {
|
String key = population.getCardNo();
|
populationMap.put(key, population);
|
});
|
|
for (ComPensionAuthRecordImportExcelVO vo : list) {
|
// 判断实有人口是否已存在
|
log.info("开始查询实有人口是否已存在");
|
ComMngPopulationDO populationDO = null;
|
String populationKey = vo.getIdCard();
|
if (!isOnly(populationKey, populationMap)) {
|
// 存在实有人口信息,则查询养老信息(是否符合认证条件(健在且登记了养老认证))
|
populationDO = (ComMngPopulationDO)populationMap.get(populationKey);
|
ComPensionAuthPensionerDO comPensionAuthPensionerDO = comPensionAuthPensionerDAO.selectOne(new QueryWrapper<ComPensionAuthPensionerDO>()
|
.lambda().eq(ComPensionAuthPensionerDO::getPopulationId, populationDO.getId()).eq(ComPensionAuthPensionerDO::getCommunityId, communityId));
|
//不存在养老信息,需要先导入养老信息
|
if (null == comPensionAuthPensionerDO) {
|
ComPensionAuthRecordImportMistakeExcelVO mistake = new ComPensionAuthRecordImportMistakeExcelVO();
|
BeanUtils.copyProperties(vo, mistake);
|
mistake.setMistake("该实有人口已存在,但本社区不存在养老信息,请先导入养老人口");
|
mistake.setAuthDate(DateUtils.format(vo.getAuthDate(),DateUtils.yyyyMMdd_format));
|
mistakes.add(mistake);
|
}else {
|
//存在养老信息,判断是否满足认证条件
|
if (!comPensionAuthPensionerDO.getIsRegister().equals(1) || !comPensionAuthPensionerDO.getIsAlive().equals(1)) {
|
ComPensionAuthRecordImportMistakeExcelVO mistake = new ComPensionAuthRecordImportMistakeExcelVO();
|
BeanUtils.copyProperties(vo, mistake);
|
mistake.setMistake("该人口不健在,或者未做养老登记");
|
mistake.setAuthDate(DateUtils.format(vo.getAuthDate(),DateUtils.yyyyMMdd_format));
|
mistakes.add(mistake);
|
}else {
|
//满足认证条件,判断是否存在当期认证记录
|
List<ComPensionAuthRecordDO> pensionAuthList = null;
|
ComPensionAuthRecordDO comPensionAuthRecordDO = null;
|
String authPeriod = vo.getAuthPeriod();
|
pensionAuthList = comPensionAuthRecordDAO.selectList(new QueryWrapper<ComPensionAuthRecordDO>().lambda().
|
eq(ComPensionAuthRecordDO::getPensionerId, comPensionAuthPensionerDO.getId())
|
.eq(ComPensionAuthRecordDO::getAuthPeriod, authPeriod).orderByDesc(ComPensionAuthRecordDO::getCreateAt));
|
|
if (null != pensionAuthList && pensionAuthList.size() > 0) {
|
comPensionAuthRecordDO = pensionAuthList.get(0);
|
//存在记录且状态为已认证,不能修改
|
if (comPensionAuthRecordDO.getApprovalStatus().equals(ComPensionAuthRecordDO.approvalStatus.tg)) {
|
ComPensionAuthRecordImportMistakeExcelVO mistake = new ComPensionAuthRecordImportMistakeExcelVO();
|
BeanUtils.copyProperties(vo, mistake);
|
mistake.setMistake("该人口本期已认证,不可重复认证");
|
mistake.setAuthDate(DateUtils.format(vo.getAuthDate(),DateUtils.yyyyMMdd_format));
|
mistakes.add(mistake);
|
}else if (comPensionAuthRecordDO.getApprovalStatus().equals(ComPensionAuthRecordDO.approvalStatus.dsh)) {
|
//存在待审核记录,进行更新认证信息
|
comPensionAuthRecordDO = updatePensionAuthRecordsDO(vo, comPensionAuthRecordDO, userId,communityId,nowDate);
|
updateList.add(comPensionAuthRecordDO);
|
|
if(StringUtils.isNotEmpty(vo.getAddress())){
|
comPensionAuthPensionerDO.setAddress(vo.getAddress());
|
updatePensionerList.add(comPensionAuthPensionerDO);
|
}
|
}else {
|
// 不存在记录,则新增
|
comPensionAuthRecordDO = savePensionAuthRecordsDO(vo, comPensionAuthPensionerDO, authPeriod, userId,communityId,nowDate);
|
saveList.add(comPensionAuthRecordDO);
|
|
if(StringUtils.isNotEmpty(vo.getAddress())){
|
comPensionAuthPensionerDO.setAddress(vo.getAddress());
|
updatePensionerList.add(comPensionAuthPensionerDO);
|
}
|
}
|
}else {
|
// 不存在记录,则新增
|
comPensionAuthRecordDO = savePensionAuthRecordsDO(vo, comPensionAuthPensionerDO, authPeriod, userId,communityId,nowDate);
|
saveList.add(comPensionAuthRecordDO);
|
|
if(StringUtils.isNotEmpty(vo.getAddress())){
|
comPensionAuthPensionerDO.setAddress(vo.getAddress());
|
updatePensionerList.add(comPensionAuthPensionerDO);
|
}
|
}
|
}
|
}
|
} else {
|
// 不存在实有人口,则新增
|
ComPensionAuthRecordImportMistakeExcelVO mistake = new ComPensionAuthRecordImportMistakeExcelVO();
|
BeanUtils.copyProperties(vo, mistake);
|
mistake.setMistake("不存在该实有人口,请先导入实有人口信息");
|
mistake.setAuthDate(DateUtils.format(vo.getAuthDate(),DateUtils.yyyyMMdd_format));
|
mistakes.add(mistake);
|
}
|
log.info("开始查询实有人口是否已存在完成");
|
}
|
} catch (Exception e) {
|
log.info("出现错误,错误原因:" + e.getMessage());
|
}
|
log.info("处理完成导入数据");
|
|
log.info("开始执行数据库导入");
|
if (!saveList.isEmpty()) {
|
log.info("执行数据库导入线下认证记录");
|
comPensionAuthRecordService.saveBatch(saveList);
|
log.info("数据库导入线下认证记录完成");
|
}
|
if (!updateList.isEmpty()) {
|
log.info("执行数据库更新线下认证记录");
|
comPensionAuthRecordDAO.updateAll(updateList);
|
log.info("数据库更新线下认证记录完成");
|
}
|
if(!updatePensionerList.isEmpty()){
|
comPensionAuthPensionerService.updateBatchById(updatePensionerList);
|
}
|
log.info("执行数据库导入完成");
|
|
if (!mistakes.isEmpty()) {
|
log.info("返回错误数据");
|
return R.fail(mistakes);
|
}
|
return R.ok(mistakes);
|
}
|
|
@Override
|
public R exportPensionAuthRecordsStatistic(PageElderAuthRecordsDTO pageElderAuthRecordsDTO) {
|
List<ComPensionAuthRecordStatisticExcleVO> comPensionAuthRecordStatisticExcleVOS = comPensionAuthRecordDAO.exportPensionAuthRecordsStatistic(pageElderAuthRecordsDTO);
|
return R.ok(comPensionAuthRecordStatisticExcleVOS);
|
}
|
|
@Override
|
public R setPensionAuthType(Long communityId, Integer type) {
|
List<SysConfDO> authConf =
|
sysConfDao.selectList(new LambdaQueryWrapper<SysConfDO>().eq(SysConfDO::getCommunityId, communityId)
|
.eq(SysConfDO::getCode, "PENSION_AUTH_TYPE_" + communityId).orderByDesc(SysConfDO::getCreateAt));
|
if (authConf != null && authConf.size() > 0) {
|
SysConfDO first = authConf.get(0);
|
first.setValue(type + "");
|
int updated = sysConfDao.updateById(first);
|
if (updated == 1) {
|
return R.ok();
|
}
|
}
|
return R.fail();
|
}
|
|
@Override
|
public R communityPensionAuthType(EldersAuthTypeQueryDTO eldersAuthTypeQueryDTO) {
|
Long communityId = eldersAuthTypeQueryDTO.getCommunityId();
|
List<SysConfDO> confDOList = sysConfDao.selectList(new LambdaQueryWrapper<SysConfDO>()
|
.eq(SysConfDO::getCommunityId, communityId).eq(SysConfDO::getCode,"PENSION_AUTH_TYPE_" + communityId).orderByDesc(SysConfDO::getCreateAt));
|
if (confDOList == null || confDOList.size() == 0) {
|
SysConfDO sysConfDO = new SysConfDO();
|
sysConfDO.setCode("PENSION_AUTH_TYPE_" + communityId);
|
sysConfDO.setName("养老认证类型");
|
sysConfDO.setValue(2 + "");// 核验类型(1.视频认证 2.人脸核验)
|
sysConfDO.setDescription("养老认证默认添加的核验类型");
|
sysConfDO.setCommunityId(communityId);
|
sysConfDO.setCreateBy(eldersAuthTypeQueryDTO.getUserId());
|
int inserted = sysConfDao.insert(sysConfDO);
|
if (inserted != 1) {
|
throw new ServiceException("添加养老认证默认添加的核验类型失败");
|
}
|
confDOList = sysConfDao.selectList(new LambdaQueryWrapper<SysConfDO>()
|
.eq(SysConfDO::getCommunityId, communityId)
|
.orderByDesc(SysConfDO::getCreateAt));
|
}
|
if (confDOList != null && confDOList.size() > 0) {
|
SysConfDO latest = confDOList.get(0);
|
SysConfVO sysConfVO = new SysConfVO();
|
BeanUtils.copyProperties(latest, sysConfVO);
|
return R.ok(sysConfVO.getValue());
|
}
|
return R.ok();
|
}
|
|
@Override
|
public R timedTaskPensionAuthStatisticsJobHandler() {
|
Date nowDate = new Date();
|
int month = DateUtils.getMonth(nowDate) + 1;
|
int year = DateUtils.getYear(nowDate);
|
//查询所有启用中社区
|
List<ComActDO> actList = comActDAO.selectList(new QueryWrapper<ComActDO>().lambda().eq(ComActDO::getState,0));
|
actList.forEach(act -> {
|
//养老认证统计
|
ComPensionAuthStatisticsDO comPensionAuthStatisticsDO = new ComPensionAuthStatisticsDO();
|
comPensionAuthStatisticsDO.setCommunityId(act.getCommunityId());
|
comPensionAuthStatisticsDO.setMonth(month);
|
comPensionAuthStatisticsDO.setYear(year);
|
comPensionAuthStatisticsDO.setCreateAt(nowDate);
|
//本期应认证人数
|
List<ComPensionAuthPensionerDO> comPensionAuthPensionerDOS = comPensionAuthPensionerDAO.selectList(new QueryWrapper<ComPensionAuthPensionerDO>().lambda()
|
.eq(ComPensionAuthPensionerDO::getCommunityId, act.getCommunityId())
|
.eq(ComPensionAuthPensionerDO::getIsAlive, 1)
|
.eq(ComPensionAuthPensionerDO::getIsRegister, 1));
|
if (null != comPensionAuthPensionerDOS) {
|
comPensionAuthStatisticsDO.setSum(comPensionAuthPensionerDOS.size());
|
}
|
comPensionAuthStatisticsDAO.insert(comPensionAuthStatisticsDO);
|
});
|
|
|
return R.ok();
|
}
|
|
private ComPensionAuthRecordDO updatePensionAuthRecordsDO(ComPensionAuthRecordImportExcelVO vo
|
, ComPensionAuthRecordDO comPensionAuthRecordsDO, Long userId , Long communityId,Date date) {
|
BeanUtils.copyProperties(vo, comPensionAuthRecordsDO);
|
comPensionAuthRecordsDO.setSubmitUserId(userId);
|
comPensionAuthRecordsDO.setApproverId(userId);
|
comPensionAuthRecordsDO.setApprovalStatus(ComPensionAuthRecordDO.approvalStatus.tg);
|
comPensionAuthRecordsDO.setAuthMethod(ComPensionAuthRecordDO.authMethod.xxrz);
|
comPensionAuthRecordsDO.setApprovalDate(date);
|
comPensionAuthRecordsDO.setAuthStatus(ComPensionAuthRecordDO.authStatus.rez);
|
comPensionAuthRecordsDO.setCommunityId(communityId);
|
comPensionAuthRecordsDO.setMark(vo.getMark());
|
return comPensionAuthRecordsDO;
|
}
|
|
private ComPensionAuthRecordDO savePensionAuthRecordsDO(ComPensionAuthRecordImportExcelVO vo
|
, ComPensionAuthPensionerDO comPensionAuthPensionerDO, String authPeriod, Long userId, Long communityId,Date date) {
|
ComPensionAuthRecordDO comPensionAuthRecordDO = new ComPensionAuthRecordDO();
|
BeanUtils.copyProperties(vo, comPensionAuthRecordDO);
|
comPensionAuthRecordDO.setPensionerId(comPensionAuthPensionerDO.getId());
|
comPensionAuthRecordDO.setAuthPeriod(authPeriod);
|
comPensionAuthRecordDO.setSubmitUserId(userId);
|
comPensionAuthRecordDO.setApproverId(userId);
|
comPensionAuthRecordDO.setApprovalStatus(PASS_THROUGH.getStatus());
|
comPensionAuthRecordDO.setApprovalDate(new Date());
|
comPensionAuthRecordDO.setAuthStatus(CERTIFIED.getStatus());
|
comPensionAuthRecordDO.setAuthMethod(ComPensionAuthRecordDO.authMethod.xxrz);
|
comPensionAuthRecordDO.setCommunityId(communityId);
|
comPensionAuthRecordDO.setCreateAt(date);
|
comPensionAuthRecordDO.setMark(vo.getMark());
|
return comPensionAuthRecordDO;
|
}
|
|
/**
|
* 判重方法
|
*
|
* @param key
|
* 主键
|
* @param hashMap
|
* 数据集
|
* @return 存在即为false 不存在则为true
|
*/
|
private boolean isOnly(String key, HashMap<String, Object> hashMap) {
|
return ObjectUtils.isEmpty(hashMap.get(key));
|
}
|
|
/**
|
* 新增养老认证
|
* @param addIdentityAuthDTO 请求参数
|
* @return 新增结果
|
*/
|
@Override
|
public R addPensionAuth(AddIdentityAuthDTO addIdentityAuthDTO) {
|
String idCard;
|
try {
|
idCard = AESUtil.encrypt128(addIdentityAuthDTO.getIdCard(), aesKey);
|
} catch (Exception e) {
|
e.printStackTrace();
|
log.error("加密失败【{}】", e.getMessage());
|
return R.fail("认证失败,请重新尝试");
|
}
|
ComPensionAuthPensionerDO comPensionAuthPensionerDO = comPensionAuthPensionerDAO.selectOne(new QueryWrapper<ComPensionAuthPensionerDO>()
|
.lambda().eq(ComPensionAuthPensionerDO::getIdCard, idCard).eq(ComPensionAuthPensionerDO::getCommunityId, addIdentityAuthDTO.getCommunityId()));
|
if (Objects.isNull(comPensionAuthPensionerDO)) {
|
return R.fail("该人员未在社区报道无法认证");
|
}
|
boolean isInfoCorrect = !comPensionAuthPensionerDO.getName().equals(addIdentityAuthDTO.getName()) ||
|
!(comPensionAuthPensionerDO.getIsRegister().equals(ComPensionAuthPensionerDO.isOk.yes)
|
&& comPensionAuthPensionerDO.getIsAlive().equals(ComPensionAuthPensionerDO.isOk.yes));
|
if (isInfoCorrect) {
|
return R.fail("信息有误,请检查!");
|
}
|
Date dateNow = new Date();
|
List<ComPensionAuthRecordDO> currentAuthPeriodRecords = comPensionAuthRecordDAO
|
.selectList(new QueryWrapper<ComPensionAuthRecordDO>().lambda()
|
.eq(ComPensionAuthRecordDO::getAuthPeriod, comPensionAuthPensionerDO)
|
.eq(ComPensionAuthRecordDO::getPensionerId, comPensionAuthPensionerDO.getId()));
|
if (!currentAuthPeriodRecords.isEmpty()) {
|
boolean alreadyAuth = currentAuthPeriodRecords.stream()
|
.filter(record -> record.getAuthStatus().equals(CERTIFIED.getStatus())).findFirst().isPresent();
|
if (alreadyAuth) {
|
return R.fail(String.format("该人员%s期已认证无需重复认证", addIdentityAuthDTO.getAuthPeriod()));
|
}
|
boolean isPendingReview = currentAuthPeriodRecords.stream()
|
.filter(record -> record.getApprovalStatus().intValue() == PENDING_REVIEW.getStatus()).findFirst().isPresent();
|
if (isPendingReview) {
|
return R.fail("该人员本期有尚未审核的认证,请稍后再试!");
|
}
|
}
|
ComPensionAuthRecordDO comPensionAuthRecordDO = new ComPensionAuthRecordDO();
|
BeanUtils.copyProperties(addIdentityAuthDTO, comPensionAuthRecordDO);
|
comPensionAuthRecordDO.setPensionerId(comPensionAuthPensionerDO.getId());
|
comPensionAuthRecordDO.setAuthDate(addIdentityAuthDTO.getAuthTime());
|
comPensionAuthRecordDO.setAuthPeriod(addIdentityAuthDTO.getAuthPeriod());
|
if (addIdentityAuthDTO.getAuthMethod().intValue() == FACE_AUTH.getMethod()) {
|
comPensionAuthRecordDO.setApprovalStatus(PASS_THROUGH.getStatus());
|
comPensionAuthRecordDO.setApprovalDate(dateNow);
|
comPensionAuthRecordDO.setAuthStatus(CERTIFIED.getStatus());
|
}
|
if (this.baseMapper.insert(comPensionAuthRecordDO) < 0) {
|
return R.fail("认证失败,请重新尝试");
|
}
|
if (addIdentityAuthDTO.getAuthMethod().intValue() == FACE_AUTH.getMethod()) {
|
sendAuthSubscribe(comPensionAuthRecordDO.getSubmitUserId(), "养老认证", "认证成功!", addIdentityAuthDTO.getAreaCode());
|
}
|
return R.ok();
|
}
|
|
/**
|
* 分页查询养老认证记录
|
* @param pageIdentityAuthRecordDTO 查询参数
|
* @return 养老认证记录列表
|
*/
|
@Override
|
public R queryRecordWithPage(PageIdentityAuthRecordDTO pageIdentityAuthRecordDTO) {
|
return R.ok(comPensionAuthRecordDAO.queryRecordWithPage(new Page(pageIdentityAuthRecordDTO.getPageNum(),
|
pageIdentityAuthRecordDTO.getPageSize()), pageIdentityAuthRecordDTO));
|
}
|
|
/**
|
* 获取养老认证详情
|
* @param identityAuthId 认证id
|
* @return 认证记录详情
|
*/
|
@Override
|
public R retrievePensionAuthDetail(Long identityAuthId) {
|
return R.ok(comPensionAuthRecordDAO.findById(identityAuthId));
|
}
|
|
@Override
|
public R add(ComElderAuthRecordVO comElderAuthRecordVO) {
|
if(!comElderAuthRecordVO.getIdCard().isEmpty()){
|
List<ComMngPopulationDO> comMngPopulationDOS=comMngPopulationDAO.selectList(new QueryWrapper<ComMngPopulationDO>().lambda().eq(ComMngPopulationDO::getCardNoStr,comElderAuthRecordVO.getIdCard()).orderByDesc(ComMngPopulationDO::getCreateAt));
|
if(!comMngPopulationDOS.isEmpty()){
|
ComMngPopulationDO comMngPopulationDO=comMngPopulationDOS.get(0);
|
ComPensionAuthPensionerDO comPensionAuthPensionerDO=comPensionAuthPensionerDAO.selectOne(new QueryWrapper<ComPensionAuthPensionerDO>().lambda().eq(ComPensionAuthPensionerDO::getPopulationId,comMngPopulationDO.getId()));
|
if(comPensionAuthPensionerDO!=null){
|
Integer count=comPensionAuthRecordDAO.selectCount(new QueryWrapper<ComPensionAuthRecordDO>().lambda().eq(ComPensionAuthRecordDO::getPensionerId,comPensionAuthPensionerDO.getId()).eq(ComPensionAuthRecordDO::getAuthPeriod,comElderAuthRecordVO.getAuthPeriod()));
|
if(count==0){
|
ComPensionAuthRecordDO comPensionAuthRecordDO=new ComPensionAuthRecordDO();
|
BeanUtils.copyProperties(comElderAuthRecordVO,comPensionAuthRecordDO);
|
comPensionAuthRecordDO.setApprovalStatus(PASS_THROUGH.getStatus());
|
comPensionAuthRecordDO.setApprovalDate(new Date());
|
comPensionAuthRecordDO.setAuthStatus(CERTIFIED.getStatus());
|
comPensionAuthRecordDO.setAuthMethod(ComPensionAuthRecordDO.authMethod.xxrz);
|
comPensionAuthRecordDO.setPensionerId(comPensionAuthPensionerDO.getId());
|
comPensionAuthRecordDO.setSubmitUserId(comElderAuthRecordVO.getSubmitUserId());
|
comPensionAuthRecordDO.setApproverId(comElderAuthRecordVO.getSubmitUserId());
|
if (this.baseMapper.insert(comPensionAuthRecordDO) < 0) {
|
return R.fail("认证失败,请重新尝试");
|
}
|
comMngPopulationDO.setPhone(comElderAuthRecordVO.getPhone());
|
comMngPopulationDAO.updateById(comMngPopulationDO);
|
comPensionAuthPensionerDO.setAddress(comElderAuthRecordVO.getAddress());
|
comPensionAuthPensionerDO.setPhone(comElderAuthRecordVO.getPhone());
|
comPensionAuthPensionerDO.setIdCard(null);
|
comPensionAuthPensionerDAO.updateById(comPensionAuthPensionerDO);
|
ComElderAuthElderliesDO comElderAuthElderliesDO=comElderAuthElderliesDAO.selectOne(new QueryWrapper<ComElderAuthElderliesDO>().lambda().eq(ComElderAuthElderliesDO::getPopulationId,comMngPopulationDO.getId()));
|
if(comElderAuthElderliesDO!=null){
|
comElderAuthElderliesDO.setAddress(comElderAuthRecordVO.getAddress());
|
comElderAuthElderliesDO.setPhone(comElderAuthRecordVO.getPhone());
|
comElderAuthElderliesDO.setIdCard(null);
|
comElderAuthElderliesDAO.updateById(comElderAuthElderliesDO);
|
}
|
return R.ok();
|
}
|
return R.fail("当前期数已认证,请勿重复认证");
|
}
|
return R.fail("无养老认证数据");
|
}
|
return R.fail("该身份证无实有人口信息");
|
}
|
return R.fail("身份证不能为空");
|
}
|
}
|