jiazx0107
2026-01-15 19f170a41e2200eed6a23402b00d7da20b38f42d
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
package com.fzzy.work.service;
 
import com.fzzy.igds.constant.Constant;
import com.fzzy.igds.data.BaseResp;
import com.fzzy.igds.domain.InoutNoticeIn;
import com.fzzy.igds.utils.ContextUtil;
import com.fzzy.work.data.OrderStatus;
import com.fzzy.work.data.WorkBizType;
import com.fzzy.work.data.WorkNode;
import com.fzzy.work.domain.WorkOrder;
import com.fzzy.work.domain.WorkOrderConf;
import com.fzzy.work.domain.WorkOrderProcess;
import org.springframework.stereotype.Service;
 
import javax.annotation.Resource;
import java.util.Date;
 
/**
 * @Desc: 工单业务接口
 * @Author: Andy.jia
 * @Date: 2026/1/15
 */
@Service
public class BizWorkService {
    @Resource
    private WorkOrderConfService confService;
    @Resource
    private WorkOrderService orderService;
    @Resource
    private WorkOrderProcessService orderProcessService;
 
 
    /**
     * 获取流程配置信息
     * @param deptId 库区ID
     * @param type  业务类型
     * @return 配置信息
     */
    public WorkOrderConf getConfByDeptId(String deptId, WorkBizType type) {
        return confService.getByDeptId(deptId, type);
    }
 
    /**
     *
     * 根据出入库通知单启动审批工单
     * @param data 出入库工单数据
     * @return 响应结果
     */
    public BaseResp startByNoticeIn(InoutNoticeIn data, WorkOrderConf conf) {
        if (null == conf) conf = confService.getByDeptId(data.getDeptId(), WorkBizType.TYPE_10);
 
        if (Constant.YN_N.equals(conf.getValTag())) return BaseResp.error("流程未启用");
 
        //创建工单
        WorkOrder work = new WorkOrder();
        work.setId(ContextUtil.generateOrderId("RKD"));
        work.setBizType(WorkBizType.TYPE_10.getCode());
        work.setBusinessId(data.getId());
        work.setBankId(data.getBankId());
        work.setBusinessUrl("com.fzzy.igds.InoutNoticeIn-Detail.d");
        work.setCreateTime(new Date());
        work.setDeptId(data.getDeptId());
        work.setCompanyId(data.getCompanyId());
        work.setUpdateTime(new Date());
        work.setTitle("入库通知单审批");
        work.setConfId(conf.getId());
        work.setStatus(OrderStatus.STATUS_30.getCode());
        work.setReceiveTime(new Date());
 
        String nextNode = this.getNextNode(WorkNode.NODE_START.getCode(), conf).getCode();
        work.setNode(nextNode);
        orderService.addData(work);
 
        //添加记录
        WorkOrderProcess process = new WorkOrderProcess();
        process.setId(ContextUtil.UUID());
        process.setAction("提交");
        process.setCreateTime(new Date());
        process.setOrderId(work.getId());
        process.setAssigneeName(work.getCreateBy());
        process.setAssigneeId(work.getCreateById());
        process.setNode(WorkNode.NODE_START.getCode());
        orderProcessService.addData(process);
 
        return BaseResp.success();
    }
 
    /**
     * 根据当前节点获取下一个节点
     * @param curNode
     * @param conf
     * @return
     */
    private WorkNode getNextNode(String curNode, WorkOrderConf conf) {
 
        if (null == conf) return WorkNode.NODE_END;
 
        if (WorkNode.NODE_START.getCode().equals(curNode)) {
            if (Constant.YN_Y.equals(conf.getNodeVal1())) return WorkNode.NODE1;
            if (Constant.YN_Y.equals(conf.getNodeVal2())) return WorkNode.NODE2;
            if (Constant.YN_Y.equals(conf.getNodeVal3())) return WorkNode.NODE3;
        }
 
        if (WorkNode.NODE1.getCode().equals(curNode)) {
            if (Constant.YN_Y.equals(conf.getNodeVal2())) return WorkNode.NODE2;
            if (Constant.YN_Y.equals(conf.getNodeVal3())) return WorkNode.NODE3;
        }
 
        if (WorkNode.NODE2.getCode().equals(curNode)) {
            if (Constant.YN_Y.equals(conf.getNodeVal3())) return WorkNode.NODE3;
        }
 
        return WorkNode.NODE_END;
    }
}