From 931ea9dcdf62ea348f1811b9faf95d07ab1c1ac8 Mon Sep 17 00:00:00 2001 From: 罗元桥 <2376770955@qq.com> Date: 星期日, 26 九月 2021 14:22:22 +0800 Subject: [PATCH] Merge branch 'test' into 'test_bak' --- springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComPensionAuthRecordServiceImpl.java | 300 ++++++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 242 insertions(+), 58 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 8ae01fd..e291b33 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,34 +1,67 @@ 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.utlis.WxUtil; +import com.panzhihua.common.utlis.WxXCXTempSend; +import com.panzhihua.service_community.dao.ComActActSignDAO; +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.enums.PopulHouseUseEnum; +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.*; +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.Snowflake; import com.panzhihua.common.utlis.StringUtils; -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 com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +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 lombok.extern.slf4j.Slf4j; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.ObjectUtils; - -import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.util.*; /** * @title: ComPensionAuthRecordServiceImpl @@ -52,6 +85,10 @@ private ComActDAO comActDAO; @Resource private ComPensionAuthStatisticsDAO comPensionAuthStatisticsDAO; + @Resource + private SysConfMapper sysConfDao; + @Resource + private ComActActSignDAO comActActSignDAO; @Value("${domain.aesKey:}") private String aesKey; @@ -92,8 +129,11 @@ return R.fail("未查询到养老认证记录"); } BeanUtils.copyProperties(comPensionAuthRecordVO, comPensionAuthRecordDO); - if (comPensionAuthRecordVO.getApprovalStatus().equals(3)) { - comPensionAuthRecordDO.setAuthStatus(1); + 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); @@ -101,6 +141,23 @@ 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 @@ -131,6 +188,7 @@ // 需要修改的认证记录集合 List<ComPensionAuthRecordDO> updateList = new ArrayList<>(); log.info("开始处理导入数据"); + Date nowDate = new Date(); List<ComPensionAuthRecordImportMistakeExcelVO> mistakes = new ArrayList<>(); try { // 查询所有人口数据放入HashMap中 @@ -142,7 +200,6 @@ }); for (ComPensionAuthRecordImportExcelVO vo : list) { - String cardNoAES = AESUtil.encrypt128(vo.getIdCard(), aesKey); // 判断实有人口是否已存在 log.info("开始查询实有人口是否已存在"); ComMngPopulationDO populationDO = null; @@ -156,54 +213,47 @@ if (null == comPensionAuthPensionerDO) { ComPensionAuthRecordImportMistakeExcelVO mistake = new ComPensionAuthRecordImportMistakeExcelVO(); BeanUtils.copyProperties(vo, mistake); - setMistake(mistake, vo); 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); - setMistake(mistake, vo); mistake.setMistake("该人口不健在,或者未做养老登记"); + mistake.setAuthDate(DateUtils.format(vo.getAuthDate(),DateUtils.yyyyMMdd_format)); mistakes.add(mistake); }else { //满足认证条件,判断是否存在当期认证记录 + List<ComPensionAuthRecordDO> pensionAuthList = null; ComPensionAuthRecordDO comPensionAuthRecordDO = null; - Date nowDate = new Date(); - // 获取当前年 - int year = DateUtils.getYear(nowDate); - String authPeriod = ""; - if (nowDate.before(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(String.valueOf(year) + "-03-01 00:00:00"))) { - authPeriod = String.valueOf(year - 1); - }else { - authPeriod = String.valueOf(year); - } + String authPeriod = vo.getAuthPeriod(); + pensionAuthList = comPensionAuthRecordDAO.selectList(new QueryWrapper<ComPensionAuthRecordDO>().lambda(). + eq(ComPensionAuthRecordDO::getPensionerId, comPensionAuthPensionerDO.getId()) + .eq(ComPensionAuthRecordDO::getAuthPeriod, authPeriod).orderByDesc(ComPensionAuthRecordDO::getCreateAt)); - comPensionAuthRecordDO = comPensionAuthRecordDAO.selectOne(new QueryWrapper<ComPensionAuthRecordDO>().lambda(). - eq(ComPensionAuthRecordDO::getPensionerId, comPensionAuthPensionerDO.getId()).eq(ComPensionAuthRecordDO::getAuthPeriod, authPeriod)); - if (null != comPensionAuthRecordDO) { + if (null != pensionAuthList && pensionAuthList.size() > 0) { + comPensionAuthRecordDO = pensionAuthList.get(0); //存在记录且状态为已认证,不能修改 - if (comPensionAuthRecordDO.getAuthStatus().equals(1)) { + if (comPensionAuthRecordDO.getApprovalStatus().equals(ComPensionAuthRecordDO.approvalStatus.tg)) { ComPensionAuthRecordImportMistakeExcelVO mistake = new ComPensionAuthRecordImportMistakeExcelVO(); BeanUtils.copyProperties(vo, mistake); - setMistake(mistake, vo); - mistake.setMistake("该人口本期已认证,不能修改"); + 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 comPensionAuthRecordDO1 = - updatePensionAuthRecordsDO(vo, comPensionAuthRecordDO, userId); - updateList.add(comPensionAuthRecordDO1); - ComPensionAuthRecordImportMistakeExcelVO mistake = new ComPensionAuthRecordImportMistakeExcelVO(); - BeanUtils.copyProperties(vo, mistake); - setMistake(mistake, vo); - mistake.setMistake("该认证已存在,执行更新"); - mistakes.add(mistake); + // 不存在记录,则新增 + comPensionAuthRecordDO = savePensionAuthRecordsDO(vo, comPensionAuthPensionerDO, authPeriod, userId,communityId,nowDate); + saveList.add(comPensionAuthRecordDO); } }else { // 不存在记录,则新增 - comPensionAuthRecordDO = savePensionAuthRecordsDO(vo, comPensionAuthPensionerDO, authPeriod, userId); + comPensionAuthRecordDO = savePensionAuthRecordsDO(vo, comPensionAuthPensionerDO, authPeriod, userId,communityId,nowDate); saveList.add(comPensionAuthRecordDO); } } @@ -212,8 +262,8 @@ // 不存在实有人口,则新增 ComPensionAuthRecordImportMistakeExcelVO mistake = new ComPensionAuthRecordImportMistakeExcelVO(); BeanUtils.copyProperties(vo, mistake); - setMistake(mistake, vo); mistake.setMistake("不存在该实有人口,请先导入实有人口信息"); + mistake.setAuthDate(DateUtils.format(vo.getAuthDate(),DateUtils.yyyyMMdd_format)); mistakes.add(mistake); } log.info("开始查询实有人口是否已存在完成"); @@ -250,6 +300,52 @@ } @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; @@ -283,17 +379,22 @@ return R.ok(); } - private ComPensionAuthRecordDO updatePensionAuthRecordsDO(ComPensionAuthRecordImportExcelVO vo, ComPensionAuthRecordDO comPensionAuthRecordsDO, Long userId) { + 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(3); - comPensionAuthRecordsDO.setApprovalDate(new Date()); - comPensionAuthRecordsDO.setAuthStatus(1); + 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) { + private ComPensionAuthRecordDO savePensionAuthRecordsDO(ComPensionAuthRecordImportExcelVO vo + , ComPensionAuthPensionerDO comPensionAuthPensionerDO, String authPeriod, Long userId, Long communityId,Date date) { ComPensionAuthRecordDO comPensionAuthRecordDO = new ComPensionAuthRecordDO(); BeanUtils.copyProperties(vo, comPensionAuthRecordDO); comPensionAuthRecordDO.setId(Snowflake.getId()); @@ -301,15 +402,14 @@ comPensionAuthRecordDO.setAuthPeriod(authPeriod); comPensionAuthRecordDO.setSubmitUserId(userId); comPensionAuthRecordDO.setApproverId(userId); - comPensionAuthRecordDO.setApprovalStatus(3); + comPensionAuthRecordDO.setApprovalStatus(PASS_THROUGH.getStatus()); comPensionAuthRecordDO.setApprovalDate(new Date()); - comPensionAuthRecordDO.setAuthStatus(1); + comPensionAuthRecordDO.setAuthStatus(CERTIFIED.getStatus()); + comPensionAuthRecordDO.setAuthMethod(ComPensionAuthRecordDO.authMethod.xxrz); + comPensionAuthRecordDO.setCommunityId(communityId); + comPensionAuthRecordDO.setCreateAt(date); + comPensionAuthRecordDO.setMark(vo.getMark()); return comPensionAuthRecordDO; - } - - private void setMistake(ComPensionAuthRecordImportMistakeExcelVO mvo, - ComPensionAuthRecordImportExcelVO vo) { - mvo.setIsAlive(PopulHouseUseEnum.getCnDescByName(vo.getIsAlive())); } /** @@ -324,4 +424,88 @@ 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