yangys
2025-07-08 ffd5abc74eea1f6ee6433ac11e401aaa57bcc4ab
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
package org.springblade.mdm.flow.excution;
 
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import org.flowable.common.engine.impl.identity.Authentication;
import org.flowable.engine.IdentityService;
import org.flowable.engine.runtime.ProcessInstance;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.flow.core.feign.IFlowClient;
import org.springblade.flow.core.pojo.entity.BladeFlow;
import org.springblade.flow.core.utils.TaskUtil;
import org.springblade.mdm.flow.vo.TaskAssignVO;
import org.springblade.mdm.program.entity.NcProgram;
import org.springblade.mdm.program.entity.ProcessProgRef;
import org.springblade.mdm.program.service.NcProgramService;
import org.springblade.mdm.program.service.ProcessProgRefService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.flowable.engine.RuntimeService;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
@AllArgsConstructor
@Service("startDispatcher")
public class StartDispatcher  {
 
    private final RuntimeService runtimeService;
    private final AutoAssignUsersService autoAssignUsersService;
 
    private final IdentityService identityService;
    private final ProcessProgRefService processProgRefService;
    private final NcProgramService ncProgramService;
 
    public static final String PROCESS_KEY = "dispatch";
 
    /**
     * 启动派工流程
     * @param startVO
     */
    public void start(TaskAssignVO startVO){
 
        Map<String,Object> preAssignee = autoAssignUsersService.autoAssignUsers(startVO);
        Map<String, Object> vars = new HashMap<>(preAssignee);
 
        vars.put("machineCode",startVO.getMachineCode());
        vars.put("machineMode",startVO.getMachineMode());
 
        vars.put("processNo",startVO.getProcessNo());
        vars.put("processName",startVO.getProcessName());
        vars.put("processEdition",startVO.getProcessEdition());
 
        vars.put("craftEdition",startVO.getCraftEdition());
        vars.put("planStartTime",startVO.getPlanStartTime());
        vars.put("drawingNo",startVO.getDrawingNo());
        vars.put("drawingNoEdition",startVO.getDrawingNoEdition());
        vars.put("planLockDays",startVO.getPlanLockDays());
        vars.put("productModel",startVO.getProductModel());
 
 
        List<NcProgram> curedNcPrograms = ncProgramService.getCuredNcProgram(startVO.getDrawingNo(),startVO.getMachineCode());
        //设置是否有固化程序标记
        vars.put("hasCuredProgram",!curedNcPrograms.isEmpty() ? "Y":"N");
 
 
        String businessKey = "0";//业务表key
 
        identityService.setAuthenticatedUserId(String.valueOf(AuthUtil.getUserId()));//设置流程发起人
        ProcessInstance pinst = runtimeService.startProcessInstanceByKey(PROCESS_KEY,businessKey,vars);
 
        //如果有已固化程序,则将程序id插入流畅关联表
        for(NcProgram ncProgram : curedNcPrograms){
            ProcessProgRef ref = new ProcessProgRef();
            ref.setProcessInstanceId(pinst.getId());
            ref.setNcProgramId(ncProgram.getId());
            ref.setProcessDefinitionKey(pinst.getProcessDefinitionKey());
            processProgRefService.save(ref);
        }
 
        //log.info()
    }
 
    /**
     * 生成零组件编号
     * 图号、图号版次、工序号、工序名称、工艺版次、工序版次 组合起来获得零组件号
     * @param startVO
     * @return
     */
    /*
    String generatePartNo(TaskAssignVO startVO){
        //TODO 这个格式未确定,需要确认
        return String.format("%s-%s-%s-%s-%s-%s",
            startVO.getPartNo(),
            startVO.getPartNoEdition(),
            startVO.getProcessNo(),
            startVO.getProcessName(),
            startVO.getCraftEdition(),
            startVO.getProcessEdition());
    }*/
}