yangys
2025-07-04 fc588c6e5ccac038cab378931d9bac3033e28f98
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
package org.springblade.mdm.flow.excution;
 
import io.swagger.v3.oas.annotations.media.Schema;
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.service.NcProgramService;
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;
 
@Service("startDispatcher")
public class StartDispatcher  {
 
    @Autowired
    private RuntimeService runtimeService;
    @Autowired
    private AutoAssignUsersService autoAssignUsersService;
    @Autowired
    private IdentityService identityService;
 
    @Autowired
    private NcProgramService ncProgramService;
    private static final String PROCESS_KEY = "dispatch";
 
    public void start(TaskAssignVO startVO){
 
        Map<String,Object> preAssignee = autoAssignUsersService.autoAssignUsers(startVO.getProducePlanId());
        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("partNo",startVO.getPartNo());
        vars.put("partNoEdition",startVO.getPartNoEdition());
        vars.put("planLockDays",startVO.getPlanLockDays());
        vars.put("productModel",startVO.getProductModel());
        //零组件代码
        String partNo = generatePartNo(startVO);
        vars.put("partNo",partNo);
 
        List<NcProgram> curedNcProgram = ncProgramService.getCuredNcProgram(partNo,startVO.getMachineCode());
        //vars.put("curedNcProgram",curedNcProgram);
 
        //设置是否有固化程序标记
        vars.put("hasCuredProgram",!curedNcProgram.isEmpty() ? "Y":"N");
 
        String businessKey = "0";//业务表key
 
        identityService.setAuthenticatedUserId(String.valueOf(AuthUtil.getUserId()));//设置流程发起人
        ProcessInstance pinst = runtimeService.startProcessInstanceByKey(PROCESS_KEY,businessKey,vars);
 
        int a=1;
        //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());
    }
}