kongzy
2024-01-29 983bdb5b89932b38d08a11ad1eed6ea89d1597e1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
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;
 
/**
 * <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) {
        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<AssPlanPerson> planPersonList=planPersonMapper.getAllPlanPersonByProjectId(projectId);
        List<AssFaceRecognition> faceRecognitionList=baseMapper.getFaceRecognitionByProjectId(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);
        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.<AssFaceRecognition>lambdaQuery()
                .eq(AssFaceRecognition::getPersonId,personId)
                .eq(AssFaceRecognition::getProjectId,projectId)
                .eq(AssFaceRecognition::getDelFlag, DeleteFlagEnum.UN_DELETE.getCode()));
    }
}