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.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) { int row=0; projectService.checkUserAllowed(faceRecognition.getProjectId()); UploadObjectVO uploadObjectVO=commonService.doUpload(faceRecognition.getFile()); faceRecognition.setSignPath(uploadObjectVO.getPath()); AssFaceRecognition existRecord=checkFaceRecognitionUnique(faceRecognition.getPersonId(),faceRecognition.getProjectId()); if(existRecord!=null){ existRecord.setSignPath(faceRecognition.getSignPath()); existRecord.setUpdateBy(ShiroUtils.getSysUser().getUsername()); row =baseMapper.updateById(existRecord); }else{ faceRecognition.setCreateBy(ShiroUtils.getSysUser().getUsername()); 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); List faceRecognitionList=baseMapper.getFaceRecognitionByProjectId(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); return baseMapper.getFaceRecognitionByProjectId(projectId); } @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())); } }