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.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.ComElderAuthElderliesService; 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.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.model.dtos.community.AddIdentityAuthDTO; import com.panzhihua.common.model.dtos.community.PageElderAuthRecordsDTO; import com.panzhihua.common.model.dtos.community.PageIdentityAuthRecordDTO; import com.panzhihua.common.model.dtos.community.elder.PageElderAuthStatisticDTO; import com.panzhihua.common.model.helper.AESUtil; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.model.vos.community.ComElderAuthRecordExcleVO; import com.panzhihua.common.model.vos.community.ComElderAuthRecordImportExcelVO; import com.panzhihua.common.model.vos.community.ComElderAuthRecordImportMistakeExcelVO; import com.panzhihua.common.model.vos.community.ComElderAuthRecordStatisticExcleVO; import com.panzhihua.common.model.vos.community.ComElderAuthRecordVO; 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.ComElderAuthRecordsService; import cn.hutool.core.util.IdcardUtil; import lombok.extern.slf4j.Slf4j; /** * title: ComElderAuthRecordsServiceImpl 社区政务》高龄老人认证》认证记录表服务实现类 * projectName 成都呐喊信息技术有限公司-智慧社区项目 * description: 社区政务》高龄老人认证》认证记录表服务实现类 * * @author txb * @date 2021/9/01 14:12 */ @Slf4j @Service public class ComElderAuthRecordsServiceImpl extends ServiceImpl implements ComElderAuthRecordsService { @Resource private ComElderAuthRecordsDAO comElderAuthRecordsDAO; @Resource private ComElderAuthElderliesDAO comElderAuthElderliesDAO; @Resource private ComMngPopulationDAO comMngPopulationDAO; @Resource private ComElderAuthRecordsService comElderAuthRecordsService; @Resource private ComActDAO comActDAO; @Resource private ComEldersAuthStatisticsMapper comEldersAuthStatisticsMapper; @Resource private ComActActSignDAO comActActSignDAO; @Value("${domain.aesKey:}") private String aesKey; @Resource private ComEldersAuthHistoryRecordMapper comEldersAuthHistoryRecordMapper; @Resource private ComPensionAuthHistoryRecordMapper comPensionAuthHistoryRecordMapper; @Resource private ComPensionAuthRecordDAO comPensionAuthRecordDAO; @Resource private ComPensionAuthPensionerDAO comPensionAuthPensionerDAO; @Resource private ComElderAuthElderliesService comElderAuthElderliesService; @Resource private UserService userService; @Override public R pageElderAuthRecords(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 iPage = comElderAuthRecordsDAO.pageElderAuthRecords(page, pageElderAuthRecordsDTO); if (!iPage.getRecords().isEmpty()) { iPage.getRecords().forEach(comElderAuthRecordVO -> { if (StringUtils.isNotEmpty(comElderAuthRecordVO.getBirthday())) { comElderAuthRecordVO.setAge(AgeUtils.getAgeFromBirthTimes(comElderAuthRecordVO.getBirthday())); } }); } return R.ok(iPage); } @Override public R export(PageElderAuthRecordsDTO pageElderAuthRecordsDTO) { try { //关键词为空时需要进行加密,通过加密去检索身份证号筛选高龄认证记录 String idCard = AESUtil.encrypt128(pageElderAuthRecordsDTO.getSearchKey(), aesKey); pageElderAuthRecordsDTO.setIdCard(idCard); }catch (Exception e){ log.error("查询高龄认证记录转换身份证号失败"); } return R.ok(comElderAuthRecordsDAO.export(pageElderAuthRecordsDTO)); } @Override public R detailElderAuthRecords(Long authRecordId) { ComElderAuthRecordVO comElderAuthRecordVO = comElderAuthRecordsDAO.detailElderAuthRecords(authRecordId); comElderAuthRecordVO.setNextIds(comElderAuthRecordsDAO.getNextIds(comElderAuthRecordVO.getCommunityId(),authRecordId)); try { comElderAuthRecordVO.setAge(IdcardUtil.getAgeByIdCard(comElderAuthRecordVO.getIdCard())); }catch (Exception e){ log.error("身份证转换失败"); } return R.ok(comElderAuthRecordVO); } @Override public R examineElderAuthRecords(ComElderAuthRecordVO comElderAuthRecordVO) { ComElderAuthRecordsDO comElderAuthRecordsDO = comElderAuthRecordsDAO.selectById(comElderAuthRecordVO.getId()); if (comElderAuthRecordsDO == null) { return R.fail("未查询到高龄老人认证记录"); } if(!comElderAuthRecordsDO.getApprovalStatus().equals(ComElderAuthRecordsDO.approvalStatus.dsh)){ return R.fail("该记录已审核,不可重复审核"); } ComElderAuthElderliesDO authElderliesDO = comElderAuthElderliesDAO.selectById(comElderAuthRecordsDO.getElderliesId()); if(authElderliesDO == null){ return R.fail("未查询到老人信息"); } Date nowDate = new Date(); BeanUtils.copyProperties(comElderAuthRecordVO, comElderAuthRecordsDO); comElderAuthRecordsDO.setApprovalDate(nowDate); if (comElderAuthRecordVO.getApprovalStatus().equals(ComElderAuthRecordsDO.approvalStatus.tg)) { comElderAuthRecordsDO.setAuthStatus(ComElderAuthRecordsDO.authStatus.yrz); sendAuthSubscribe(comElderAuthRecordsDO.getSubmitUserId(), "高龄认证", "认证成功!",comElderAuthRecordVO.getAreaCode()); authElderliesDO.setAddress(comElderAuthRecordVO.getAddress()); comElderAuthElderliesDAO.updateById(authElderliesDO); } else { sendAuthSubscribe(comElderAuthRecordsDO.getSubmitUserId(), "高龄认证", comElderAuthRecordVO.getRejectReason(),comElderAuthRecordVO.getAreaCode()); } // comElderAuthRecordsDO.setApprovalDate(new Date()); int nub = comElderAuthRecordsDAO.updateById(comElderAuthRecordsDO); if (nub < 1) { return R.fail("审核失败"); } return R.ok(); } private void sendAuthSubscribe(Long userId, String name, String result,String areaCode) { //发送订阅通知 Map map = comActActSignDAO.getUserOpenId(userId); if (map != null) { String openid = map.get("openid"); try { WxXCXTempSend util = new WxXCXTempSend(); String accessToken = util.getAccessToken(); R 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 signElderAuthRecords(ComElderAuthRecordVO comElderAuthRecordVO) { ComElderAuthRecordsDO comElderAuthRecordsDO = comElderAuthRecordsDAO.selectById(comElderAuthRecordVO.getId()); if (comElderAuthRecordsDO == null) { return R.fail("未查询到高龄老人认证记录"); } BeanUtils.copyProperties(comElderAuthRecordVO, comElderAuthRecordsDO); int nub = comElderAuthRecordsDAO.updateById(comElderAuthRecordsDO); if (nub < 1) { return R.fail("标记失败"); } return R.ok(); } @Override public R getElderAuthRecordsByIds(List ids) { List comElderAuthRecordExcleVOS = comElderAuthRecordsDAO.getElderAuthRecordsByIds(ids); if (null != comElderAuthRecordExcleVOS && comElderAuthRecordExcleVOS.size() > 0) { comElderAuthRecordExcleVOS.forEach(comElderAuthRecordExcleVO -> { if (StringUtils.isNotEmpty(comElderAuthRecordExcleVO.getBirthday())) { comElderAuthRecordExcleVO.setAge(AgeUtils.getAgeFromBirthTimes(comElderAuthRecordExcleVO.getBirthday())); } }); } return R.ok(comElderAuthRecordExcleVOS); } @Override @Transactional(rollbackFor = Exception.class) public R listSaveElderAuthRecordExcelVO(List list, Long communityId, Long userId) { // 需要新增的认证记录集合 List saveList = new ArrayList<>(); // 需要修改的认证记录集合 List updateList = new ArrayList<>(); //需要更新的老人信息 List updateElderliesList = new ArrayList<>(); log.info("开始处理导入数据"); List mistakes = new ArrayList<>(); try { // 查询所有人口数据放入HashMap中 // List populationList = comMngPopulationDAO.selectList(null); List populationList = comMngPopulationDAO.selectListIds(); HashMap populationMap = new HashMap<>(); populationList.forEach(population -> { String key = population.getCardNo(); populationMap.put(key, population); }); Date nowDate = new Date(); for (ComElderAuthRecordImportExcelVO vo : list) { // 判断实有人口是否已存在 log.info("开始查询实有人口是否已存在"); ComMngPopulationDO populationDO = null; String populationKey = vo.getIdCard(); if (!isOnly(populationKey, populationMap)) { // 存在实有人口信息,则查询高龄信息(是否符合认证条件(健在且登记了高龄认证)) populationDO = (ComMngPopulationDO)populationMap.get(populationKey); ComElderAuthElderliesDO comElderAuthElderliesDO = comElderAuthElderliesDAO.selectOne(new QueryWrapper() .lambda().eq(ComElderAuthElderliesDO::getPopulationId, populationDO.getId()).eq(ComElderAuthElderliesDO::getCommunityId, communityId)); //不存在高龄信息,需要先导入高龄信息 if (null == comElderAuthElderliesDO) { ComElderAuthRecordImportMistakeExcelVO mistake = new ComElderAuthRecordImportMistakeExcelVO(); BeanUtils.copyProperties(vo, mistake); mistake.setMistake("该实有人口已存在,但本社区不存在高龄老人信息,请先导入高龄老人"); mistake.setAuthDate(DateUtils.format(vo.getAuthDate(),DateUtils.yyyyMMdd_format)); mistakes.add(mistake); }else { //存在高龄信息,判断是否满足认证条件 if (StringUtils.isNotEmpty(vo.getBirthday())) { int age = IdcardUtil.getAgeByIdCard(vo.getIdCard()); if (age < 80 || !comElderAuthElderliesDO.getIsRegister().equals(1) || !comElderAuthElderliesDO.getIsAlive().equals(1)) { ComElderAuthRecordImportMistakeExcelVO mistake = new ComElderAuthRecordImportMistakeExcelVO(); BeanUtils.copyProperties(vo, mistake); mistake.setMistake("该人口未满80岁,或者不健在,或者未做高龄老人登记"); mistake.setAuthDate(DateUtils.format(vo.getAuthDate(),DateUtils.yyyyMMdd_format)); mistakes.add(mistake); }else { //满足认证条件,判断是否存在当期认证记录 List elderAuthRecordList = null; ComElderAuthRecordsDO comElderAuthRecordsDO = null; String authPeriod = vo.getAuthPeriod(); elderAuthRecordList = comElderAuthRecordsDAO.selectList(new QueryWrapper().lambda() .eq(ComElderAuthRecordsDO::getElderliesId, comElderAuthElderliesDO.getId()) .eq(ComElderAuthRecordsDO::getAuthPeriod, authPeriod).orderByDesc(ComElderAuthRecordsDO::getCreateAt)); if (null != elderAuthRecordList && elderAuthRecordList.size() > 0) { comElderAuthRecordsDO = elderAuthRecordList.get(0); //存在记录且状态为已认证,不能修改 if (comElderAuthRecordsDO.getApprovalStatus().equals(ComElderAuthRecordsDO.approvalStatus.tg)) { ComElderAuthRecordImportMistakeExcelVO mistake = new ComElderAuthRecordImportMistakeExcelVO(); BeanUtils.copyProperties(vo, mistake); mistake.setMistake("该人口本期已认证通过,不能重复认证"); mistake.setAuthDate(DateUtils.format(vo.getAuthDate(),DateUtils.yyyyMMdd_format)); mistakes.add(mistake); }else if (comElderAuthRecordsDO.getApprovalStatus().equals(ComElderAuthRecordsDO.approvalStatus.dsh)) { comElderAuthRecordsDO = updateElderAuthRecordsDO(vo, comElderAuthRecordsDO,userId,communityId,nowDate); updateList.add(comElderAuthRecordsDO); if(StringUtils.isNotEmpty(vo.getAddress())){ comElderAuthElderliesDO.setAddress(vo.getAddress()); updateElderliesList.add(comElderAuthElderliesDO); } }else { // 驳回状态,则新增 comElderAuthRecordsDO = saveElderAuthRecordsDO(vo, comElderAuthElderliesDO, authPeriod, userId,communityId,nowDate); saveList.add(comElderAuthRecordsDO); if(StringUtils.isNotEmpty(vo.getAddress())){ comElderAuthElderliesDO.setAddress(vo.getAddress()); updateElderliesList.add(comElderAuthElderliesDO); } } }else { // 不存在记录,则新增 comElderAuthRecordsDO = saveElderAuthRecordsDO(vo, comElderAuthElderliesDO, authPeriod, userId,communityId,nowDate); saveList.add(comElderAuthRecordsDO); if(StringUtils.isNotEmpty(vo.getAddress())){ comElderAuthElderliesDO.setAddress(vo.getAddress()); updateElderliesList.add(comElderAuthElderliesDO); } } } } } } else { // 不存在实有人口,则新增 ComElderAuthRecordImportMistakeExcelVO mistake = new ComElderAuthRecordImportMistakeExcelVO(); 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("执行数据库导入线下认证记录"); comElderAuthRecordsService.saveBatch(saveList); log.info("数据库导入线下认证记录完成"); } if (!updateList.isEmpty()) { log.info("执行数据库更新线下认证记录"); comElderAuthRecordsDAO.updateAll(updateList); log.info("数据库更新线下认证记录完成"); } if(!updateElderliesList.isEmpty()){ comElderAuthElderliesService.updateBatchById(updateElderliesList); } log.info("执行数据库导入完成"); if (!mistakes.isEmpty()) { log.info("返回错误数据"); return R.fail(mistakes); } return R.ok(mistakes); } @Override public R exportElderAuthRecordsStatistic(PageElderAuthStatisticDTO pageElderAuthRecordsDTO) { List comElderAuthRecordStatisticExcleVOS = comElderAuthRecordsDAO.exportElderAuthRecordsStatistic(pageElderAuthRecordsDTO); if (null != comElderAuthRecordStatisticExcleVOS && comElderAuthRecordStatisticExcleVOS.size() > 0) { comElderAuthRecordStatisticExcleVOS.forEach(comElderAuthRecordStatisticExcleVO -> { if (StringUtils.isNotEmpty(comElderAuthRecordStatisticExcleVO.getBirthday())) { comElderAuthRecordStatisticExcleVO.setAge(AgeUtils.getAgeFromBirthTimes(comElderAuthRecordStatisticExcleVO.getBirthday())); } }); } return R.ok(comElderAuthRecordStatisticExcleVOS); } /** * 身份认证定时任务 * @return 执行结果 */ @Override @Transactional(rollbackFor = Exception.class) public R timedTaskElderAuthStatisticsJobHandler() { //查询高龄认证记录列表 List authRecordsList = comElderAuthRecordsDAO.selectList(new QueryWrapper().lambda() .eq(ComElderAuthRecordsDO::getAuthStatus,ComElderAuthRecordsDO.authStatus.yrz)); //遍历高龄认证记录列表 authRecordsList.forEach(authRecords -> { if(authRecords.getApprovalStatus().equals(ComElderAuthRecordsDO.approvalStatus.tg)){ ComEldersAuthHistoryRecordDO authHistoryRecordDO = comEldersAuthHistoryRecordMapper.selectOne(new QueryWrapper().lambda() .eq(ComEldersAuthHistoryRecordDO::getElderliesId,authRecords.getElderliesId()) .eq(ComEldersAuthHistoryRecordDO::getAuthPeriod,authRecords.getAuthPeriod())); if(authHistoryRecordDO != null){//存在记录 if(authHistoryRecordDO.getIsAuth().equals(ComEldersAuthHistoryRecordDO.isAuth.no)){ //查询老人信息 ComElderAuthElderliesDO authElderliesDO = comElderAuthElderliesDAO.selectById(authRecords.getElderliesId()); if(authElderliesDO != null){ Long authId = authHistoryRecordDO.getId(); BeanUtils.copyProperties(authElderliesDO,authHistoryRecordDO); authHistoryRecordDO.setId(authId); authHistoryRecordDO.setBrithday(DateUtils.format(IdcardUtil.getBirthDate(authElderliesDO.getIdCard()),DateUtils.yyyyMMdd_format)); authHistoryRecordDO.setAge(IdcardUtil.getAgeByIdCard(authElderliesDO.getIdCard())); } authHistoryRecordDO.setIsAuth(ComEldersAuthHistoryRecordDO.isAuth.yes); authHistoryRecordDO.setAuthDate(authRecords.getApprovalDate()); authHistoryRecordDO.setApprovalDate(authRecords.getApprovalDate()); authHistoryRecordDO.setApproverId(authRecords.getApproverId()); authHistoryRecordDO.setSubmitUserId(authRecords.getSubmitUserId()); authHistoryRecordDO.setAuthMethod(authRecords.getAuthMethod()); authHistoryRecordDO.setVerificationResult(authRecords.getVerificationResult()); authHistoryRecordDO.setAuthId(authRecords.getId()); comEldersAuthHistoryRecordMapper.updateById(authHistoryRecordDO); } }else{ authHistoryRecordDO = new ComEldersAuthHistoryRecordDO(); //查询老人信息 ComElderAuthElderliesDO authElderliesDO = comElderAuthElderliesDAO.selectById(authRecords.getElderliesId()); if(authElderliesDO != null){ BeanUtils.copyProperties(authElderliesDO,authHistoryRecordDO); authHistoryRecordDO.setBrithday(DateUtils.format(IdcardUtil.getBirthDate(authElderliesDO.getIdCard()),DateUtils.yyyyMMdd_format)); authHistoryRecordDO.setAge(IdcardUtil.getAgeByIdCard(authElderliesDO.getIdCard())); } BeanUtils.copyProperties(authRecords,authHistoryRecordDO); authHistoryRecordDO.setAuthDate(authRecords.getApprovalDate()); authHistoryRecordDO.setMark(null); authHistoryRecordDO.setIsAuth(ComEldersAuthHistoryRecordDO.isAuth.yes); authHistoryRecordDO.setAuthId(authRecords.getId()); comEldersAuthHistoryRecordMapper.insert(authHistoryRecordDO); } } }); //查询养老认证记录列表 List pensionAuthList = comPensionAuthRecordDAO.selectList(new QueryWrapper().lambda() .eq(ComPensionAuthRecordDO::getAuthStatus,ComPensionAuthRecordDO.authStatus.rez)); //遍历养老认证记录列表 pensionAuthList.forEach(authRecords -> { ComPensionAuthHistoryRecordDO pensionAuthDO = comPensionAuthHistoryRecordMapper.selectOne(new QueryWrapper().lambda() .eq(ComPensionAuthHistoryRecordDO::getElderliesId,authRecords.getPensionerId()) .eq(ComPensionAuthHistoryRecordDO::getAuthPeriod,authRecords.getAuthPeriod())); if(pensionAuthDO != null){//存在记录 if(pensionAuthDO.getIsAuth().equals(ComPensionAuthHistoryRecordDO.isAuth.no)){ //查询老人信息 ComPensionAuthPensionerDO authPensionerDO = comPensionAuthPensionerDAO.selectById(authRecords.getPensionerId()); if(authPensionerDO != null){ Long authId = pensionAuthDO.getId(); BeanUtils.copyProperties(authPensionerDO,pensionAuthDO); pensionAuthDO.setId(authId); pensionAuthDO.setBrithday(DateUtils.format(IdcardUtil.getBirthDate(authPensionerDO.getIdCard()),DateUtils.yyyyMMdd_format)); pensionAuthDO.setAge(IdcardUtil.getAgeByIdCard(authPensionerDO.getIdCard())); } pensionAuthDO.setIsAuth(ComPensionAuthHistoryRecordDO.isAuth.yes); pensionAuthDO.setAuthDate(authRecords.getApprovalDate()); pensionAuthDO.setApprovalDate(authRecords.getApprovalDate()); pensionAuthDO.setApproverId(authRecords.getApproverId()); pensionAuthDO.setSubmitUserId(authRecords.getSubmitUserId()); pensionAuthDO.setAuthMethod(authRecords.getAuthMethod()); pensionAuthDO.setVerificationResult(authRecords.getVerificationResult()); pensionAuthDO.setAuthId(authRecords.getId()); comPensionAuthHistoryRecordMapper.updateById(pensionAuthDO); } }else{ pensionAuthDO = new ComPensionAuthHistoryRecordDO(); //查询老人信息 ComPensionAuthPensionerDO authPensionerDO = comPensionAuthPensionerDAO.selectById(authRecords.getPensionerId()); if(authPensionerDO != null){ BeanUtils.copyProperties(authPensionerDO,pensionAuthDO); pensionAuthDO.setBrithday(DateUtils.format(IdcardUtil.getBirthDate(authPensionerDO.getIdCard()),DateUtils.yyyyMMdd_format)); pensionAuthDO.setAge(IdcardUtil.getAgeByIdCard(authPensionerDO.getIdCard())); } BeanUtils.copyProperties(authRecords,pensionAuthDO); pensionAuthDO.setAuthDate(authRecords.getApprovalDate()); pensionAuthDO.setMark(null); pensionAuthDO.setIsAuth(ComPensionAuthHistoryRecordDO.isAuth.yes); pensionAuthDO.setAuthId(authRecords.getId()); comPensionAuthHistoryRecordMapper.insert(pensionAuthDO); } }); return R.ok(); } private ComElderAuthRecordsDO updateElderAuthRecordsDO(ComElderAuthRecordImportExcelVO vo , ComElderAuthRecordsDO comElderAuthRecordsDO, Long userId, Long communityId,Date date) { BeanUtils.copyProperties(vo, comElderAuthRecordsDO); comElderAuthRecordsDO.setSubmitUserId(userId); comElderAuthRecordsDO.setApproverId(userId); comElderAuthRecordsDO.setCommunityId(communityId); comElderAuthRecordsDO.setApprovalStatus(ComElderAuthRecordsDO.approvalStatus.tg); comElderAuthRecordsDO.setApprovalDate(date); comElderAuthRecordsDO.setAuthStatus(ComElderAuthRecordsDO.authStatus.yrz); comElderAuthRecordsDO.setAuthMethod(ComElderAuthRecordsDO.authMethod.xxrz); comElderAuthRecordsDO.setMark(vo.getMark()); return comElderAuthRecordsDO; } private ComElderAuthRecordsDO saveElderAuthRecordsDO(ComElderAuthRecordImportExcelVO vo , ComElderAuthElderliesDO comElderAuthElderliesDO, String authPeriod, Long userId, Long communityId,Date date) { ComElderAuthRecordsDO comElderAuthRecordsDO = new ComElderAuthRecordsDO(); BeanUtils.copyProperties(vo, comElderAuthRecordsDO); comElderAuthRecordsDO.setElderliesId(comElderAuthElderliesDO.getId()); comElderAuthRecordsDO.setAuthPeriod(authPeriod); comElderAuthRecordsDO.setSubmitUserId(userId); comElderAuthRecordsDO.setApproverId(userId); comElderAuthRecordsDO.setApprovalStatus(ComElderAuthRecordsDO.approvalStatus.tg); comElderAuthRecordsDO.setApprovalDate(date); comElderAuthRecordsDO.setAuthStatus(ComElderAuthRecordsDO.authStatus.yrz); comElderAuthRecordsDO.setCommunityId(communityId); comElderAuthRecordsDO.setAuthMethod(ComElderAuthRecordsDO.authMethod.xxrz); comElderAuthRecordsDO.setMark(vo.getMark()); comElderAuthRecordsDO.setCreateAt(date); return comElderAuthRecordsDO; } /** * 判重方法 * * @param key * 主键 * @param hashMap * 数据集 * @return 存在即为false 不存在则为true */ private boolean isOnly(String key, HashMap hashMap) { return ObjectUtils.isEmpty(hashMap.get(key)); } /** * 新增高龄认证 * @param addIdentityAuthDTO 请求参数 * @return 新增结果 */ @Override public R addElderAuth(AddIdentityAuthDTO addIdentityAuthDTO) { String idCard; try { idCard = AESUtil.encrypt128(addIdentityAuthDTO.getIdCard(), aesKey); } catch (Exception e) { e.printStackTrace(); log.error("加密失败【{}】", e.getMessage()); return R.fail("认证失败,请重新尝试"); } ComElderAuthElderliesDO comElderAuthElderliesDO = comElderAuthElderliesDAO.selectOne(new QueryWrapper() .lambda().eq(ComElderAuthElderliesDO::getIdCard, idCard).eq(ComElderAuthElderliesDO::getCommunityId, addIdentityAuthDTO.getCommunityId())); if (Objects.isNull(comElderAuthElderliesDO)) { return R.fail("该人员未在社区报道无法认证"); } boolean isInfoCorrect = !comElderAuthElderliesDO.getName().equals(addIdentityAuthDTO.getName()) || !(comElderAuthElderliesDO.getIsRegister().equals(1) && comElderAuthElderliesDO.getIsAlive().equals(1)); if (isInfoCorrect) { return R.fail("信息有误,请检查!"); } Date dateNow = new Date(); String currentAuthPeriod = new SimpleDateFormat("yyyyMM").format(dateNow); List currentAuthPeriodRecords = comElderAuthRecordsDAO .selectList(new QueryWrapper().lambda() .eq(ComElderAuthRecordsDO::getAuthPeriod, currentAuthPeriod) .eq(ComElderAuthRecordsDO::getElderliesId, comElderAuthElderliesDO.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期已认证无需重复认证", currentAuthPeriod)); } boolean isPendingReview = currentAuthPeriodRecords.stream() .filter(record -> record.getApprovalStatus().intValue() == PENDING_REVIEW.getStatus()).findFirst().isPresent(); if (isPendingReview) { return R.fail("该人员本期有尚未审核的认证,请稍后再试!"); } } ComElderAuthRecordsDO comElderAuthRecordsDO = new ComElderAuthRecordsDO(); BeanUtils.copyProperties(addIdentityAuthDTO, comElderAuthRecordsDO); comElderAuthRecordsDO.setElderliesId(comElderAuthElderliesDO.getId()); comElderAuthRecordsDO.setAuthDate(dateNow); comElderAuthRecordsDO.setAuthPeriod(currentAuthPeriod); if (addIdentityAuthDTO.getAuthMethod().intValue() == FACE_AUTH.getMethod()) { comElderAuthRecordsDO.setApprovalStatus(PASS_THROUGH.getStatus()); comElderAuthRecordsDO.setApprovalDate(dateNow); comElderAuthRecordsDO.setAuthStatus(CERTIFIED.getStatus()); } if (this.baseMapper.insert(comElderAuthRecordsDO) < 0) { return R.fail("认证失败,请重新尝试"); } if (addIdentityAuthDTO.getAuthMethod().intValue() == FACE_AUTH.getMethod()) { sendAuthSubscribe(addIdentityAuthDTO.getSubmitUserId(), "高龄认证", "认证成功!",addIdentityAuthDTO.getAreaCode()); } return R.ok(); } /** * 分页查询高龄认证记录 * @param pageIdentityAuthRecordDTO 高龄认证记录vo * @return 高龄认证记录列表 */ @Override public R queryRecordWithPage(PageIdentityAuthRecordDTO pageIdentityAuthRecordDTO) { return R.ok(comElderAuthRecordsDAO.queryRecordWithPage(new Page(pageIdentityAuthRecordDTO.getPageNum(), pageIdentityAuthRecordDTO.getPageSize()), pageIdentityAuthRecordDTO)); } /** * 获取高龄认证详情 * @param identityAuthId 认证id * @return 认证记录详情 */ @Override public R retrieveElderAuthDetail(Long identityAuthId) { return R.ok(comElderAuthRecordsDAO.findById(identityAuthId)); } @Override public R add(ComElderAuthRecordVO comElderAuthRecordVO) { if(!comElderAuthRecordVO.getIdCard().isEmpty()){ List comMngPopulationDOS=comMngPopulationDAO.selectList(new QueryWrapper().lambda().eq(ComMngPopulationDO::getCardNoStr,comElderAuthRecordVO.getIdCard()).orderByDesc(ComMngPopulationDO::getCreateAt)); if(!comMngPopulationDOS.isEmpty()){ ComMngPopulationDO comMngPopulationDO=comMngPopulationDOS.get(0); ComElderAuthElderliesDO comElderAuthElderliesDO=comElderAuthElderliesDAO.selectOne(new QueryWrapper().lambda().eq(ComElderAuthElderliesDO::getPopulationId,comMngPopulationDO.getId())); if(comElderAuthElderliesDO!=null){ Integer count=comElderAuthRecordsDAO.selectCount(new QueryWrapper().lambda().eq(ComElderAuthRecordsDO::getElderliesId,comElderAuthElderliesDO.getId()).eq(ComElderAuthRecordsDO::getAuthPeriod,comElderAuthRecordVO.getAuthPeriod())); if(count==0){ ComElderAuthRecordsDO comElderAuthRecordsDO=new ComElderAuthRecordsDO(); BeanUtils.copyProperties(comElderAuthRecordVO,comElderAuthRecordsDO); comElderAuthRecordsDO.setElderliesId(comElderAuthElderliesDO.getId()); comElderAuthRecordsDO.setApprovalStatus(PASS_THROUGH.getStatus()); comElderAuthRecordsDO.setApprovalDate(new Date()); comElderAuthRecordsDO.setAuthStatus(CERTIFIED.getStatus()); comElderAuthRecordsDO.setAuthMethod(ComPensionAuthRecordDO.authMethod.xxrz); comElderAuthRecordsDO.setApproverId(comElderAuthRecordVO.getSubmitUserId()); comElderAuthRecordsDO.setSubmitUserId(comElderAuthRecordVO.getSubmitUserId()); if (this.baseMapper.insert(comElderAuthRecordsDO) < 0) { return R.fail("认证失败,请重新尝试"); } comMngPopulationDO.setPhone(comElderAuthRecordVO.getPhone()); comMngPopulationDAO.updateById(comMngPopulationDO); comElderAuthElderliesDO.setAddress(comElderAuthRecordVO.getAddress()); comElderAuthElderliesDO.setPhone(comElderAuthRecordVO.getPhone()); comElderAuthElderliesDO.setIdCard(null); comElderAuthElderliesDAO.updateById(comElderAuthElderliesDO); ComPensionAuthPensionerDO comPensionAuthPensionerDO=comPensionAuthPensionerDAO.selectOne(new QueryWrapper().lambda().eq(ComPensionAuthPensionerDO::getPopulationId,comMngPopulationDO.getId())); if(comPensionAuthPensionerDO!=null){ comPensionAuthPensionerDO.setAddress(comElderAuthRecordVO.getAddress()); comPensionAuthPensionerDO.setPhone(comElderAuthRecordVO.getPhone()); comPensionAuthPensionerDO.setIdCard(null); comPensionAuthPensionerDAO.updateById(comPensionAuthPensionerDO); } return R.ok(); } return R.fail("当前期数已认证,请勿重复认证"); } return R.fail("无养老认证数据"); } return R.fail("该身份证无实有人口信息"); } return R.fail("身份证不能为空"); } }