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; /** *

* 签字确认表 服务实现类 *

* * @author kzy * @since 2023-12-12 10:46:54 */ @Service public class AssFaceRecognitionServiceImpl extends ServiceImpl 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 planPersonList=planPersonMapper.getAllPlanPersonByProjectId(projectId); Map planPersonMap=planPersonList.stream().collect(Collectors.toMap(AssPlanPerson::getPersonId,a -> a,(k1,k2) -> k1)); planPersonList=planPersonMap.values().stream().collect(Collectors.toList()); List faceRecognitionList=baseMapper.getSimpleFaceRecognitionByProjectId(projectId); Map 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 lambdaQueryWrapper = Wrappers.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 getFaceRecognitionByProjectId(Long projectId) { projectService.checkUserAllowed(projectId); List faceRecognitionList= baseMapper.getFaceRecognitionByProjectId(projectId); //同一个人员担任多种角色 Map> playRoleMap=faceRecognitionList.stream().collect(Collectors.toMap(AssFaceRecognition::getPersonId,p -> { List pRoles=new ArrayList<>(); pRoles.add(p.getPlanPerson().getPlayRole()); return pRoles; },(Listvalue1,List value2) -> { value1.addAll(value2); return value1; })); Map faceMap=faceRecognitionList.stream().collect(Collectors.toMap(AssFaceRecognition::getPersonId,a -> a,(k1,k2) -> k2)); List 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.lambdaQuery() .eq(AssFaceRecognition::getPersonId,personId) .eq(AssFaceRecognition::getProjectId,projectId) .eq(AssFaceRecognition::getDelFlag, DeleteFlagEnum.UN_DELETE.getCode())); } }