package com.panzhihua.service_community.service.impl;
|
|
import java.text.SimpleDateFormat;
|
import java.util.Date;
|
import java.util.List;
|
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 com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
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.PageIdentityAuthRecordDTO;
|
import com.panzhihua.common.model.helper.AESUtil;
|
import com.panzhihua.common.model.vos.R;
|
import com.panzhihua.service_community.dao.ComPensionAuthPensionerDAO;
|
import com.panzhihua.service_community.dao.ComPensionAuthRecordDAO;
|
import com.panzhihua.service_community.model.dos.ComPensionAuthPensionerDO;
|
import com.panzhihua.service_community.model.dos.ComPensionAuthRecordDO;
|
import com.panzhihua.service_community.service.ComPensionAuthRecordService;
|
|
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 ComPensionAuthPensionerDAO comPensionAuthPensionerDAO;
|
|
@Value("${domain.aesKey:}")
|
private String aesKey;
|
|
/**
|
* 新增养老认证
|
* @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() && comPensionAuthPensionerDO.getIsAlive());
|
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()) {
|
if (currentAuthPeriodRecords.stream().filter(record -> record.getAuthStatus()).findFirst().isPresent()) {
|
return R.fail(String.format("该人员%s期已认证无需重复认证", currentAuthPeriod));
|
}
|
if (currentAuthPeriodRecords.stream().filter(record -> record.getApprovalStatus().intValue() == 1).findFirst().isPresent()) {
|
return R.fail("该人员本期有尚未审核的认证,请稍后再试!");
|
}
|
}
|
ComPensionAuthRecordDO comPensionAuthRecordDO = new ComPensionAuthRecordDO();
|
BeanUtils.copyProperties(addIdentityAuthDTO, comPensionAuthRecordDO);
|
comPensionAuthRecordDO.setPensionerId(comPensionAuthPensionerDO.getId());
|
comPensionAuthRecordDO.setAuthDate(dateNow);
|
comPensionAuthRecordDO.setAuthPeriod(currentAuthPeriod);
|
if (addIdentityAuthDTO.getType().intValue() == 2) {
|
comPensionAuthRecordDO.setApprovalStatus(3);
|
comPensionAuthRecordDO.setApprovalDate(dateNow);
|
comPensionAuthRecordDO.setAuthStatus(true);
|
}
|
if (this.baseMapper.insert(comPensionAuthRecordDO) < 0) {
|
return R.fail("认证失败,请重新尝试");
|
}
|
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));
|
}
|
}
|