From 8adc8efda99043cc76917ca3ba9f873adddb8f39 Mon Sep 17 00:00:00 2001
From: 101captain <237651143@qq.com>
Date: 星期三, 13 十月 2021 11:13:03 +0800
Subject: [PATCH] 爱心义仓修改
---
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComPensionAuthRecordServiceImpl.java | 497 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 496 insertions(+), 1 deletions(-)
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComPensionAuthRecordServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComPensionAuthRecordServiceImpl.java
index dee3582..23df4fa 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComPensionAuthRecordServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComPensionAuthRecordServiceImpl.java
@@ -1,12 +1,65 @@
package com.panzhihua.service_community.service.impl;
-import org.springframework.stereotype.Service;
+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 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.model.vos.community.ComPensionAuthRecordExcleVO;
+import com.panzhihua.common.model.vos.community.ComPensionAuthRecordImportExcelVO;
+import com.panzhihua.common.model.vos.community.ComPensionAuthRecordImportMistakeExcelVO;
+import com.panzhihua.common.model.vos.community.ComPensionAuthRecordStatisticExcleVO;
+import com.panzhihua.common.model.vos.community.ComPensionAuthRecordVO;
+import com.panzhihua.common.model.vos.community.SysConfVO;
+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.dao.ComActActSignDAO;
+import com.panzhihua.service_community.dao.ComActDAO;
+import com.panzhihua.service_community.dao.ComMngPopulationDAO;
+import com.panzhihua.service_community.dao.ComPensionAuthPensionerDAO;
import com.panzhihua.service_community.dao.ComPensionAuthRecordDAO;
+import com.panzhihua.service_community.dao.ComPensionAuthStatisticsDAO;
+import com.panzhihua.service_community.dao.SysConfMapper;
+import com.panzhihua.service_community.model.dos.ComActDO;
+import com.panzhihua.service_community.model.dos.ComMngPopulationDO;
+import com.panzhihua.service_community.model.dos.ComPensionAuthPensionerDO;
import com.panzhihua.service_community.model.dos.ComPensionAuthRecordDO;
+import com.panzhihua.service_community.model.dos.ComPensionAuthStatisticsDO;
+import com.panzhihua.service_community.model.dos.SysConfDO;
import com.panzhihua.service_community.service.ComPensionAuthRecordService;
+import cn.hutool.core.util.IdcardUtil;
import lombok.extern.slf4j.Slf4j;
/**
@@ -19,4 +72,446 @@
@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;
+
+ @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("未查询到养老认证记录");
+ }
+ BeanUtils.copyProperties(comPensionAuthRecordVO, comPensionAuthRecordDO);
+ if (comPensionAuthRecordVO.getApprovalStatus().equals(PASS_THROUGH.getStatus())) {
+ comPensionAuthRecordDO.setAuthStatus(CERTIFIED.getStatus());
+ sendAuthSubscribe(comPensionAuthRecordDO.getSubmitUserId(), "养老认证", "认证成功!");
+ } else {
+ sendAuthSubscribe(comPensionAuthRecordDO.getSubmitUserId(), "养老认证", comPensionAuthRecordVO.getRejectReason());
+ }
+ 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) {
+ //发送订阅通知
+ Map<String, String> map = comActActSignDAO.getUserOpenId(userId);
+ if (map != null) {
+ String openid = map.get("openid");
+ try {
+ WxXCXTempSend util = new WxXCXTempSend();
+ String accessToken = util.getAppAccessToken();
+ WxUtil.sendSubscribeRZSH(openid, accessToken, name,
+ DateUtils.format(new Date(), DateUtils.ymdhms_format),
+ result);
+ } 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<>();
+ 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);
+ }else {
+ // 不存在记录,则新增
+ comPensionAuthRecordDO = savePensionAuthRecordsDO(vo, comPensionAuthPensionerDO, authPeriod, userId,communityId,nowDate);
+ saveList.add(comPensionAuthRecordDO);
+ }
+ }else {
+ // 不存在记录,则新增
+ comPensionAuthRecordDO = savePensionAuthRecordsDO(vo, comPensionAuthPensionerDO, authPeriod, userId,communityId,nowDate);
+ saveList.add(comPensionAuthRecordDO);
+ }
+ }
+ }
+ } 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("数据库更新线下认证记录完成");
+ }
+ 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();
+ String currentAuthPeriod = new SimpleDateFormat("yyyy").format(dateNow);
+ List<ComPensionAuthRecordDO> currentAuthPeriodRecords = comPensionAuthRecordDAO
+ .selectList(new QueryWrapper<ComPensionAuthRecordDO>().lambda()
+ .eq(ComPensionAuthRecordDO::getAuthPeriod, currentAuthPeriod)
+ .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期已认证无需重复认证", currentAuthPeriod));
+ }
+ 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(dateNow);
+ comPensionAuthRecordDO.setAuthPeriod(currentAuthPeriod);
+ 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(), "养老认证", "认证成功!");
+ }
+ 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));
+ }
}
--
Gitblit v1.7.1