package com.gkhy.assess.system.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.gkhy.assess.common.enums.DeleteFlagEnum;
|
import com.gkhy.assess.common.exception.ApiException;
|
import com.gkhy.assess.common.utils.StringUtils;
|
import com.gkhy.assess.system.domain.AssFaceRecognition;
|
import com.gkhy.assess.system.domain.AssPlanPerson;
|
import com.gkhy.assess.system.enums.ReportProgressEnum;
|
import com.gkhy.assess.system.mapper.AssFaceRecognitionMapper;
|
import com.gkhy.assess.system.mapper.AssPlanPersonMapper;
|
import com.gkhy.assess.system.domain.vo.UploadObjectVO;
|
import com.gkhy.assess.system.service.AssFaceRecognitionService;
|
import com.gkhy.assess.system.service.AssProjectService;
|
import com.gkhy.assess.system.service.SysCommonService;
|
import com.gkhy.assess.system.utils.ShiroUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.stream.Collectors;
|
|
/**
|
* <p>
|
* 签字确认表 服务实现类
|
* </p>
|
*
|
* @author kzy
|
* @since 2023-12-12 10:46:54
|
*/
|
@Service
|
public class AssFaceRecognitionServiceImpl extends ServiceImpl<AssFaceRecognitionMapper, AssFaceRecognition> implements AssFaceRecognitionService {
|
|
@Autowired
|
private AssProjectService projectService;
|
@Autowired
|
private SysCommonService commonService;
|
@Autowired
|
private AssPlanPersonMapper planPersonMapper;
|
|
@Override
|
public int addFaceRecognition(AssFaceRecognition faceRecognition) {
|
projectService.checkUserAllowed(faceRecognition.getProjectId());
|
AssFaceRecognition existRecord=checkFaceRecognitionUnique(faceRecognition.getPersonId(),faceRecognition.getProjectId());
|
if(existRecord!=null){
|
throw new ApiException("签字确认记录已存在");
|
}
|
faceRecognition.setCreateBy(ShiroUtils.getSysUser().getUsername());
|
int row=baseMapper.insert(faceRecognition);
|
return row;
|
}
|
|
@Override
|
public void doFaceRecognition(Map map) {
|
Long projectId= Long.parseLong(map.get("projectId").toString());
|
projectService.checkUserAllowed(projectId);
|
//todo 校验项目成员是否都完成了签字确认
|
checkAllFaceRecongnition(projectId);
|
//校验项目状态
|
projectService.checkReportProgress(projectId, ReportProgressEnum.PROJECT_MATERIAL);
|
//更新项目状态
|
projectService.changeReportProgress(projectId,ReportProgressEnum.FACE_RECOGNITION);
|
}
|
|
@Override
|
public Boolean checkAllFaceRecongnition(Long projectId){
|
projectService.checkUserAllowed(projectId);
|
List<AssPlanPerson> planPersonList=planPersonMapper.getAllPlanPersonByProjectId(projectId);
|
Map<Long,AssPlanPerson> planPersonMap=planPersonList.stream().collect(Collectors.toMap(AssPlanPerson::getPersonId,a -> a,(k1,k2) -> k1));
|
planPersonList=planPersonMap.values().stream().collect(Collectors.toList());
|
List<AssFaceRecognition> faceRecognitionList=baseMapper.getSimpleFaceRecognitionByProjectId(projectId);
|
Map<Long,AssFaceRecognition> map=faceRecognitionList.stream().collect(Collectors.toMap(AssFaceRecognition::getPersonId,a -> a,(k1,k2) -> k1));
|
String message="";
|
for(AssPlanPerson planPerson:planPersonList){
|
if(map.get(planPerson.getPersonId())==null){
|
message=message+planPerson.getPerson().getName()+",";
|
}
|
}
|
if(StringUtils.isNotBlank(message)){
|
message=message+"未签字确认";
|
throw new ApiException(message);
|
}
|
return true;
|
}
|
|
public AssFaceRecognition checkFaceRecognitionUnique(Long personId,Long projectId){
|
LambdaQueryWrapper<AssFaceRecognition> lambdaQueryWrapper = Wrappers.<AssFaceRecognition>lambdaQuery()
|
.eq(AssFaceRecognition::getPersonId, personId)
|
.eq(AssFaceRecognition::getProjectId, projectId)
|
.eq(AssFaceRecognition::getDelFlag, DeleteFlagEnum.UN_DELETE);
|
return getOne(lambdaQueryWrapper);
|
}
|
|
@Override
|
public int editFaceRecognition(AssFaceRecognition faceRecognition) {
|
projectService.checkUserAllowed(faceRecognition.getProjectId());
|
faceRecognition.setUpdateBy(ShiroUtils.getSysUser().getUsername());
|
int row=baseMapper.updateById(faceRecognition);
|
return row;
|
}
|
|
@Override
|
public List<AssFaceRecognition> getFaceRecognitionByProjectId(Long projectId) {
|
projectService.checkUserAllowed(projectId);
|
List<AssFaceRecognition> faceRecognitionList= baseMapper.getFaceRecognitionByProjectId(projectId);
|
//同一个人员担任多种角色
|
Map<Long,List<Integer>> playRoleMap=faceRecognitionList.stream().collect(Collectors.toMap(AssFaceRecognition::getPersonId,p -> {
|
List<Integer> pRoles=new ArrayList<>();
|
pRoles.add(p.getPlanPerson().getPlayRole());
|
return pRoles;
|
},(List<Integer>value1,List<Integer> value2) -> {
|
value1.addAll(value2);
|
return value1;
|
}));
|
Map<Long,AssFaceRecognition> faceMap=faceRecognitionList.stream().collect(Collectors.toMap(AssFaceRecognition::getPersonId,a -> a,(k1,k2) -> k2));
|
List<AssFaceRecognition> faceRecognitions=faceMap.values().stream().collect(Collectors.toList());
|
for(AssFaceRecognition faceRecognition:faceRecognitions){
|
faceRecognition.getPlanPerson().setPlayRoles(playRoleMap.get(faceRecognition.getPersonId()));
|
}
|
return faceRecognitions;
|
}
|
|
|
@Override
|
public AssFaceRecognition getFaceRecognitionById(Long faceRecognitionId) {
|
AssFaceRecognition faceRecognition= baseMapper.getFaceRecognitionById(faceRecognitionId);
|
projectService.checkUserAllowed(faceRecognition.getProjectId());
|
return faceRecognition;
|
}
|
|
@Override
|
public AssFaceRecognition getRecognitionByPersonId(Long projectId, Long personId) {
|
projectService.checkUserAllowed(projectId);
|
return getOne(Wrappers.<AssFaceRecognition>lambdaQuery()
|
.eq(AssFaceRecognition::getPersonId,personId)
|
.eq(AssFaceRecognition::getProjectId,projectId)
|
.eq(AssFaceRecognition::getDelFlag, DeleteFlagEnum.UN_DELETE.getCode()));
|
}
|
}
|