yangys
2025-09-15 7bc1d0f521c1d59246f29bcadcc4343f88ceef1c
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
 
package org.springblade.mdm.flow.service;
 
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.flowable.engine.HistoryService;
import org.flowable.engine.history.HistoricProcessInstance;
import org.flowable.task.api.history.HistoricTaskInstance;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.mdm.basesetting.producedivision.entity.ProduceDivision;
import org.springblade.mdm.basesetting.producedivision.service.ProduceDivisionService;
import org.springblade.mdm.commons.service.UserCommonService;
import org.springblade.mdm.flow.vo.ApproveTableInfo;
import org.springblade.mdm.program.entity.NcNode;
import org.springblade.mdm.program.entity.NcNodeHis;
import org.springblade.mdm.program.entity.NcProgramApproved;
import org.springblade.mdm.program.service.NcNodeHisService;
import org.springblade.mdm.program.service.NcNodeService;
import org.springblade.mdm.program.service.NcProgramApprovedService;
import org.springblade.system.feign.IUserClient;
import org.springblade.system.pojo.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import java.util.*;
 
/**
 * 数控程序审批信息查询服务
 *
 * @author yangys
 */
@Slf4j
@Service
public class ApproveInfoQueryService {
    @Autowired
    private NcNodeHisService ncNodeHisService;
    @Autowired
    private HistoryService historyService;
    @Autowired
    private IUserClient useClient;
    @Autowired
    private NcProgramApprovedService programApprovedService;
    @Autowired
    private ProduceDivisionService produceDivisionService;
    @Autowired
    private UserCommonService userCommonService;
    /**
     * 获取实际审批人姓名,和时间
     * @param props 流程属性
     * @return 审批人信息,程序编号
     */
    public ApproveTableInfo getApproveInfo(FlowProgramProperties props){
        ApproveTableInfo appInfo = new ApproveTableInfo();
 
        Long teamLeaderId = 0L;
        Long programmerId= 0L;
        Long checkerId = 0L;
        Long seniorId = 0L;
        //获取审批人和时间信息
        List<HistoricTaskInstance> hisTasks = historyService.createHistoricTaskInstanceQuery()
            .processInstanceId(props.getProcessInstanceId()).orderByTaskCreateTime().desc().list();
 
        for(HistoricTaskInstance task : hisTasks){
            if(appInfo.getDispatchDate()== null && StringUtils.containsIgnoreCase(task.getTaskDefinitionKey(),"teamLeaderTask")){
                appInfo.setDispatchDate(task.getEndTime());
                teamLeaderId = Func.toLong(task.getAssignee());
            }
 
            if(appInfo.getProgrammingDate()== null && StringUtils.containsIgnoreCase(task.getTaskDefinitionKey(),"program")){
                appInfo.setProgrammingDate(task.getEndTime());
                programmerId = Func.toLong(task.getAssignee());
            }
 
            if(appInfo.getCheckDate()== null && StringUtils.containsIgnoreCase(task.getTaskDefinitionKey(),"check")){
                appInfo.setCheckDate(task.getEndTime());
                checkerId = Func.toLong(task.getAssignee());
            }
 
            if(appInfo.getApproveDate()== null && StringUtils.containsIgnoreCase(task.getTaskDefinitionKey(),"approve")){
                appInfo.setApproveDate(task.getEndTime());
                seniorId = Func.toLong(task.getAssignee());
            }
        }
        if(teamLeaderId != 0) {
            appInfo.setTeamLeaderName(userCommonService.getUserNameById(teamLeaderId));
        }else{
            //没找到组长(不是试切任务),直接查找零件号对应得数据
            try {
                ProduceDivision div = produceDivisionService.getByDrawingNoWithQinzhe(props.getDrawingNo());
                appInfo.setTeamLeaderName(userCommonService.getUserNameById(div.getTeamLeaderId()));
            }catch(Exception e){
                log.error("根据零件号:{}找不到人员职责表数据",props.getDrawingNo(),e);
                appInfo.setTeamLeaderName("");
            }
        }
        appInfo.setProgrammerName(userCommonService.getUserNameById(programmerId));
        appInfo.setCheckerName(userCommonService.getUserNameById(checkerId));
        appInfo.setSeniorName(userCommonService.getUserNameById(seniorId));
 
        //查询数控程序编号
        Optional<NcProgramApproved> appOpt = programApprovedService.lambdaQuery().eq(NcProgramApproved::getProcessInstanceId, props.getProcessInstanceId()).oneOpt();
        if(appOpt.isEmpty()){
            appInfo.setProgramName("(未生成)");
        }else{
            NcNodeHis programPkgNameNode = this.ncNodeHisService.getById(appOpt.get().getNcNodeId());
            appInfo.setProgramName(programPkgNameNode.programName());
        }
 
        return appInfo;
    }
 
}