whyclxw
2022-01-10 00b61a61b2a90c85aeae872e351ddf4bb2b516cf
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
package com.whyc.service;
 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.whyc.dto.Response;
import com.whyc.dto.WorksheetDTO;
import com.whyc.mapper.WorkflowAlarmMapper;
import com.whyc.mapper.WorkflowLink1Mapper;
import com.whyc.mapper.WorkflowMain1Mapper;
import com.whyc.pojo.WorkflowAlarm;
import com.whyc.pojo.WorkflowLink;
import com.whyc.pojo.WorkflowMain;
import org.springframework.stereotype.Service;
 
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
 
@Service
public class Workflow1Service {
 
    @Resource
    private WorkflowMain1Mapper mainMapper;
    @Resource
    private WorkflowLink1Mapper linkMapper;
    @Resource
    private WorkflowAlarmMapper alarmMapper;
 
    public String getOrderId() {
        String nextSequence = "";
        QueryWrapper<WorkflowMain> wrapper = Wrappers.query();
 
        String orderId = "WF-2-";
        String ymd = new SimpleDateFormat("yyyyMMdd").format(new Date());
        orderId = orderId+ymd+"-";
        wrapper.likeRight("order_id",orderId).orderByDesc("order_id").last(" limit 1");
        WorkflowMain workflowMain = mainMapper.selectOne(wrapper);
        if(workflowMain == null){
            nextSequence="00001";
        }else{
            String maxSequence = workflowMain.getOrderId().split("-")[3];
            int nextSequenceIntValue = Integer.parseInt(maxSequence) + 1;
            nextSequence = String.format("%05d", nextSequenceIntValue);
        }
        return orderId+nextSequence;
    }
 
    public Response add(WorkflowMain main){
        main.setCreateTime(new Date());
        main.setStatus(0);
        String orderId = getOrderId();
        main.setOrderId(orderId);
        main.setAuto(0);
        mainMapper.insert(main);
        //T0处理
        WorkflowLink link = main.getLinkList().get(0);
        link.setMainId(main.getId());
        link.setProcessLevel("T0");
        link.setProcessLevelName("工单派发");
        link.setStatus(0);
        link.setDealType(0);
        link.setDealDesc("派单给T1");
        link.setCreateTime(new Date());
        linkMapper.insert(link);
        return new Response().setII(1,"添加成功");
    }
 
    public PageInfo<WorksheetDTO> getWorksheetList(int pageNum, int pageSize, WorksheetDTO worksheetDto){
        PageHelper.startPage(pageNum,pageSize);
        QueryWrapper<WorksheetDTO> queryWrapper = new QueryWrapper();
        queryWrapper.eq("l.deal_user_id",worksheetDto.getDealUserId());
        if("待处理".equals(worksheetDto.getFlag())) {
            queryWrapper.in("l.status", new int[]{0, 1, 3, 4});
        }else if ("已处理".equals(worksheetDto.getFlag())){
            queryWrapper.eq("l.status",5);
        }else{//已归档  撤销先不做
            queryWrapper.eq("m.status",5);
        }
        if (worksheetDto.getTitle()!=null&&worksheetDto.getTitle()!=""){
            queryWrapper.like("m.title",worksheetDto.getTitle());
        }
        queryWrapper.like(worksheetDto.getTitle()!=null,"m.title",worksheetDto.getTitle());
        queryWrapper.ge(worksheetDto.getStartTime()!=null,"m.create_time",worksheetDto.getStartTime())
                .le(worksheetDto.getEndTime()!=null,"m.create_time",worksheetDto.getEndTime());
 
        List<WorksheetDTO> list = mainMapper.getWorkFlowByPage(queryWrapper);
        PageInfo<WorksheetDTO> pageInfo = new PageInfo<>(list);
        return pageInfo;
    }
 
    public WorkflowMain getOneById(Integer id){
        WorkflowMain main = mainMapper.selectById(id);
        //关联link表
        QueryWrapper linkWrapper = Wrappers.query();
        linkWrapper.eq("main_id",main.getId());
        List<WorkflowLink> links = linkMapper.selectList(linkWrapper);
        main.setLinkList(links);
        //关联告警
        WorkflowAlarm alarm = alarmMapper.selectById(main.getAlarmOrderId());
        main.setWorkflowAlarm(alarm);
        return main;
    }
 
    /**
     * main_status 0:自动派单,2:人工派单,3:工单T1处理中,4:工单T2处理中,5:归档
     * link_status 0:待处理 1:接单(备用) 2:处理中 3:待审批 4:处理回复 5:完成 6:分派回复
     * deal_type 1:转派(向下层级派发任务)   2:移交(任务移交到同级处理) 3:分派(同级派给多人处理)  4:驳回(驳回上级) 5:已处理(完成处理)6:处理未通过
     * @param work
     */
    public void setWorkflowAction(WorksheetDTO work){
        WorkflowMain main = mainMapper.selectById(work.getId());
        if (work.getDealType()==1){ //1:转派
            //主表更改状态3:工单T1处理中
            main.setStatus(3);
            mainMapper.updateById(main);
            //更新T1节点内容
            WorkflowLink link = linkMapper.selectById(work.getLinkId());
            //1:转派(向下层级派发任务)
            link.setDealType(1);
            link.setStatus(2);//处理中  往下处理,需审核后才算完成
            link.setDealDesc(work.getDealDesc());
            linkMapper.updateById(link);
            WorkflowLink link1 = new WorkflowLink();
            link1.setCreateTime(new Date());
            link1.setMainId(work.getId());
            link1.setParentId(link.getId());
            link1.setProcessLevel("T2");
            link1.setProcessLevelName("T2处理");
            link1.setDealUserId(work.getDealUserId().intValue());
            link1.setStatus(0);//待处理
            linkMapper.insert(link1);
        }else if (work.getDealType()==2){//2:移交
            //更新T1节点内容
            WorkflowLink link = linkMapper.selectById(work.getLinkId());
            //1:转派(向下层级派发任务)
            link.setDealType(2);
            link.setStatus(5);//完成
            link.setDealDesc(work.getDealDesc());
            linkMapper.updateById(link);
            WorkflowLink link1 = new WorkflowLink();
            link1.setCreateTime(new Date());
            link1.setMainId(work.getId());
            link1.setParentId(link.getId());
            link1.setProcessLevel(link.getProcessLevel());
            link1.setProcessLevelName(link.getProcessLevelName());
            link1.setDealUserId(work.getDealUserId().intValue());
            link1.setStatus(0);
            linkMapper.insert(link1);
        }else if(work.getDealType()==3){//3:分派
            //更新T1节点内容
            WorkflowLink link = linkMapper.selectById(work.getLinkId());
            //1:转派(向下层级派发任务)
            link.setDealType(3);
            link.setStatus(2);//处理中
            //设置分派的人数,回复统计
            link.setDealTaskNum(work.getDealUserIds().size());
            link.setDealDesc(work.getDealDesc());
            linkMapper.updateById(link);
            for (int i=0;i<work.getDealUserIds().size();i++){
                WorkflowLink link1 = new WorkflowLink();
                link1.setCreateTime(new Date());
                link1.setMainId(work.getId());
                link1.setParentId(link.getId());
                link1.setProcessLevel(link.getProcessLevel());
                link1.setProcessLevelName(link.getProcessLevelName());
                link1.setDealUserId(work.getDealUserIds().get(i));
                link1.setStatus(3);//待回复
                linkMapper.insert(link1);
            }
 
        }else if (work.getDealType()==4){//4:驳回
            //更新T1节点内容
            WorkflowLink link = linkMapper.selectById(work.getLinkId());
            //1:转派(向下层级派发任务)
            link.setDealType(4);
            link.setStatus(5);//处理中  往下处理,需审核后才算完成
            link.setDealTime(new Date());
            link.setDealDesc(work.getDealDesc());
            link.setDealTaskReplyNum(link.getDealTaskReplyNum()-1);
            linkMapper.updateById(link);
            WorkflowLink link1 = new WorkflowLink();
            link1.setCreateTime(new Date());
            link1.setMainId(work.getId());
            link1.setParentId(link.getId());
            link1.setProcessLevel("");
            link1.setProcessLevelName("驳回重新处理");
            link1.setDealUserId(work.getDealUserId().intValue());
            link1.setStatus(3);//待处理
            link1.setDealRejectReason(work.getRejectReasons());
            linkMapper.insert(link1);
 
 
        }else if (work.getDealType()==5){//5:回复
 
            //更新T1节点内容
            WorkflowLink link = linkMapper.selectById(work.getLinkId());
            //1:转派(向下层级派发任务)
            link.setDealType(5);
            link.setStatus(6);//回复后待审核,等管理员确定是通过还是驳回
            link.setDealTime(new Date());
            link.setDealDesc(work.getDealDesc());
            link.setDealReason(work.getDealDesc());
            linkMapper.updateById(link);
 
            QueryWrapper queryWrapper = Wrappers.query();
            queryWrapper.in("status",new int[]{0,3,6});
            queryWrapper.eq("parent_id",link.getParentId());
            List list = linkMapper.selectList(queryWrapper);
            if (list.size()==0){    //分派的都回复完了,主表状态调整为T1处理,后续该处理并归档
                main.setStatus(3);
                mainMapper.updateById(main);
            }
 
        }else if (work.getDealType()==6) {//6:处理并归档
            main.setStatus(5);//主表状态归档
            mainMapper.updateById(main);
        }
 
 
 
 
 
 
 
    }
 
 
 
}