duhongyu 1 kuukausi sitten
vanhempi
commit
188b0fde18

+ 23 - 8
smart-steward-api/src/main/java/com/smartSteward/web/controller/work/WorkOrderController.java

@@ -196,16 +196,31 @@ public class WorkOrderController extends BaseController {
196 196
     }
197 197
 
198 198
 
199
-    @ApiOperation("修改工单")
200
-    @PreAuthorize("@ss.hasPermi('workOrder:order:edit')")
199
+    @ApiOperation("退回工单")
200
+    @PreAuthorize("@ss.hasPermi('workOrder:order:return')")
201 201
     @Log(title = "工单", businessType = BusinessType.UPDATE)
202
-    @PutMapping
203
-    public AjaxResult edit(@RequestBody WorkOrder workOrder) {
204
-        // 检查工单权限
205
-        if (!workOrderService.checkPermission(workOrder)) {
206
-            return AjaxResult.error("您没有权限操作该工单");
202
+    @PutMapping("/return/{taskId}")
203
+    public AjaxResult edit(@PathVariable Long taskId) {
204
+        // 查询工单任务详情
205
+        WorkOrderTask taskDetail = workOrderService.getWorkOrderTask(taskId);
206
+        if (taskDetail == null) {
207
+            return AjaxResult.error("工单任务不存在");
208
+        }
209
+        // 检查工单任务是否是处理中状态
210
+        if (!taskDetail.getStatus().equals(WorkTaskStatus.PROCESSING.getStatus())) {
211
+            return AjaxResult.error("工单任务不是处理中状态,无法退回");
212
+        }
213
+        // 查询工单任务与用户关联列表
214
+        List<WorkTaskUser> taskUserList = workOrderService.getWorkTaskUserList(taskId);
215
+        if (taskUserList == null || taskUserList.isEmpty()) {
216
+            return AjaxResult.error("工单任务未分配用户,无法退回");
217
+        } else {
218
+            // 检查用户是否有处理该任务的权限
219
+            if (!workOrderService.checkTaskPermission(taskUserList)) {
220
+                return AjaxResult.error("您不是工单任务的处理人,无法退回");
221
+            }
207 222
         }
208
-        return toAjax(workOrderService.updateWorkOrder(workOrder));
223
+        return toAjax(workOrderService.returnWorkOrder(taskDetail));
209 224
     }
210 225
 
211 226
 

+ 2 - 2
smart-steward-entity/src/main/java/com/smartSteward/entity/database/work/WorkOrderTask.java

@@ -39,10 +39,10 @@ public class WorkOrderTask extends BaseEntity
39 39
     @ApiModelProperty("工单类型")
40 40
     private String ticketType;
41 41
 
42
-    /** 承接状态:0-待处理,1-已接单,2-已完成 */
42
+    /** 状态:0-待处理,1-已接单,2-已完成 */
43 43
     @Excel(name = "状态")
44 44
     @ApiModelProperty("状态:0-待处理,1-处理中,2-已处理")
45
-    private Long acceptStatus;
45
+    private Long  Status;
46 46
 
47 47
     /** 要求完成时间 */
48 48
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

+ 10 - 10
smart-steward-mapper/src/main/resources/mapper/work/WorkOrderTaskMapper.xml

@@ -8,7 +8,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
8 8
         <result property="taskId"    column="task_id"    />
9 9
         <result property="orderId"    column="order_id"    />
10 10
         <result property="orderNo"    column="order_no"    />
11
-        <result property="acceptStatus"    column="accept_status"    />
11
+        <result property="status"    column="status"    />
12 12
         <result property="expectedCompleteTime"    column="expected_complete_time"    />
13 13
         <result property="attachments"    column="attachments"    />
14 14
         <result property="remark"    column="remark"    />
@@ -21,20 +21,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
21 21
     </resultMap>
22 22
 
23 23
     <sql id="selectWorkOrderTaskVo">
24
-        select task_id, order_id, order_no, accept_status,  expected_complete_time,
24
+        select task_id, order_id, order_no, status,  expected_complete_time,
25 25
         attachments, remark, create_time, current_node, station_id,
26 26
         button,ticket_type,parallel_node from work_order_task
27 27
     </sql>
28 28
 
29 29
     <sql id="selectWorkOrderMyTaskVo">
30
-        select t.task_id, order_id, order_no, accept_status,
30
+        select t.task_id, order_id, order_no, status,
31 31
         expected_complete_time, attachments, remark, create_time, current_node, station_id,
32 32
         accept_orders_user, button,ticket_type,parallel_node from work_order_task t
33 33
         inner join  work_task_user u on t.task_id=u.task_id
34 34
     </sql>
35 35
 
36 36
     <sql id="selectWorkOrderMyOverTaskVo">
37
-        select t.task_id, order_id, order_no, accept_status,
37
+        select t.task_id, order_id, order_no, status,
38 38
         expected_complete_time, attachments, remark, create_time, current_node, station_id,
39 39
         accept_orders_user, button,ticket_type,parallel_node from work_order_task t
40 40
         inner join  work_task_over_user u on t.task_id=u.task_id
@@ -45,7 +45,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
45 45
         <where>
46 46
             <if test="orderId != null "> and order_id = #{orderId}</if>
47 47
             <if test="orderNo != null  and orderNo != ''"> and order_no = #{orderNo}</if>
48
-            <if test="acceptStatus != null "> and accept_status = #{acceptStatus}</if>
48
+            <if test="status != null "> and status = #{status}</if>
49 49
             <if test="expectedCompleteTime != null "> and expected_complete_time = #{expectedCompleteTime}</if>
50 50
             <if test="attachments != null  and attachments != ''"> and attachments = #{attachments}</if>
51 51
             <if test="currentNode != null "> and current_node = #{currentNode}</if>
@@ -79,7 +79,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
79 79
         <where>
80 80
             <if test="orderId != null "> and order_id = #{orderId}</if>
81 81
             <if test="orderNo != null  and orderNo != ''"> and order_no = #{orderNo}</if>
82
-            <if test="acceptStatus != null "> and accept_status = #{acceptStatus}</if>
82
+            <if test="status != null "> and status = #{status}</if>
83 83
             <if test="expectedCompleteTime != null "> and expected_complete_time = #{expectedCompleteTime}</if>
84 84
             <if test="attachments != null  and attachments != ''"> and attachments = #{attachments}</if>
85 85
             <if test="currentNode != null "> and current_node = #{currentNode}</if>
@@ -103,7 +103,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
103 103
         <where>
104 104
             <if test="orderId != null "> and order_id = #{orderId}</if>
105 105
             <if test="orderNo != null  and orderNo != ''"> and order_no = #{orderNo}</if>
106
-            <if test="acceptStatus != null "> and accept_status = #{acceptStatus}</if>
106
+            <if test="status != null "> and status = #{status}</if>
107 107
             <if test="expectedCompleteTime != null "> and expected_complete_time = #{expectedCompleteTime}</if>
108 108
             <if test="attachments != null  and attachments != ''"> and attachments = #{attachments}</if>
109 109
             <if test="currentNode != null "> and current_node = #{currentNode}</if>
@@ -127,7 +127,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
127 127
         <trim prefix="(" suffix=")" suffixOverrides=",">
128 128
             <if test="orderId != null">order_id,</if>
129 129
             <if test="orderNo != null and orderNo != ''">order_no,</if>
130
-            <if test="acceptStatus != null">accept_status,</if>
130
+            <if test="status != null">status,</if>
131 131
             <if test="expectedCompleteTime != null">expected_complete_time,</if>
132 132
             <if test="attachments != null">attachments,</if>
133 133
             <if test="remark != null">remark,</if>
@@ -141,7 +141,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
141 141
         <trim prefix="values (" suffix=")" suffixOverrides=",">
142 142
             <if test="orderId != null">#{orderId},</if>
143 143
             <if test="orderNo != null and orderNo != ''">#{orderNo},</if>
144
-            <if test="acceptStatus != null">#{acceptStatus},</if>
144
+            <if test="status != null">#{status},</if>
145 145
             <if test="expectedCompleteTime != null">#{expectedCompleteTime},</if>
146 146
             <if test="attachments != null">#{attachments},</if>
147 147
             <if test="remark != null">#{remark},</if>
@@ -158,7 +158,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
158 158
         <trim prefix="SET" suffixOverrides=",">
159 159
             <if test="orderId != null">order_id = #{orderId},</if>
160 160
             <if test="orderNo != null and orderNo != ''">order_no = #{orderNo},</if>
161
-            <if test="acceptStatus != null">accept_status = #{acceptStatus},</if>
161
+            <if test="status != null">status = #{status},</if>
162 162
             <if test="expectedCompleteTime != null">expected_complete_time = #{expectedCompleteTime},</if>
163 163
             <if test="attachments != null">attachments = #{attachments},</if>
164 164
             <if test="remark != null">remark = #{remark},</if>

+ 16 - 14
smart-steward-service/src/main/java/com/smartSteward/service/work/impl/WorkOrderServiceImpl.java

@@ -419,8 +419,8 @@ public class WorkOrderServiceImpl implements IWorkOrderService {
419 419
         WorkOrderTask workOrderTask = new WorkOrderTask();
420 420
         workOrderTask.setOrderId(workOrder.getId());
421 421
         workOrderTask.setOrderNo(workOrder.getOrderNo());
422
-        //新任务,默认状态为待接单
423
-        workOrderTask.setAcceptStatus(0L);
422
+        //新任务,默认状态为待处理
423
+        workOrderTask.setStatus(WorkTaskStatus.PENDING.getStatus());
424 424
         workOrderTask.setCreateTime(new Date());
425 425
         //当前节点id
426 426
         workOrderTask.setCurrentNode(node.getId());
@@ -681,7 +681,7 @@ public class WorkOrderServiceImpl implements IWorkOrderService {
681 681
                 .orElse(null);
682 682
         if (currentNode == null) {
683 683
             // 当前任务改为已处理
684
-            taskDetail.setAcceptStatus(WorkTaskStatus.COMPLETED.getStatus());
684
+            taskDetail.setStatus(WorkTaskStatus.COMPLETED.getStatus());
685 685
             //查找不到当前节点,说明流程定义有问题,工单直接完结
686 686
             workOrder.setStatus(WorkOrderStatus.COMPLETED.getStatus());
687 687
             insertWorkOrderRecord(workOrder.getId(), workOrder.getOrderNo(), WorkOderOperationType.COMPLETE.name(),
@@ -694,14 +694,14 @@ public class WorkOrderServiceImpl implements IWorkOrderService {
694 694
         boolean isEnterNextNode = false;
695 695
         if (CooperateType.isOrSign(nodeRatio)) {
696 696
             // 或签节点当前任务改为已处理
697
-            taskDetail.setAcceptStatus(WorkTaskStatus.COMPLETED.getStatus());
697
+            taskDetail.setStatus(WorkTaskStatus.COMPLETED.getStatus());
698 698
             isEnterNextNode=true;
699 699
         } else
700 700
         {
701 701
             // 会签或票签节点判断处理人比例是否大于等于签署比例
702 702
             if (getCurrentTaskRatio(taskDetail.getTaskId(),nodeRatio)) {
703 703
                 // 当前任务办理比例大于等于会签比例,当前任务改为已处理
704
-                taskDetail.setAcceptStatus(WorkTaskStatus.COMPLETED.getStatus());
704
+                taskDetail.setStatus(WorkTaskStatus.COMPLETED.getStatus());
705 705
                 isEnterNextNode=true;
706 706
             }
707 707
         }
@@ -718,8 +718,9 @@ public class WorkOrderServiceImpl implements IWorkOrderService {
718 718
             //判断除当前任务外其他任务是否已办理
719 719
               allProcessed = parallelTasks.stream()
720 720
                     .filter(t -> !t.getTaskId().equals(taskDetail.getTaskId()))
721
-                    .allMatch(t -> WorkTaskStatus.COMPLETED.getStatus().equals(t.getAcceptStatus()));
721
+                    .allMatch(t -> WorkTaskStatus.COMPLETED.getStatus().equals(t.getStatus()));
722 722
         }
723
+
723 724
         if (allProcessed&&isEnterNextNode)
724 725
         {
725 726
             // 所有并行分支都已办理,并且当前节点也已经处理
@@ -727,6 +728,7 @@ public class WorkOrderServiceImpl implements IWorkOrderService {
727 728
             // 获取下一个节点
728 729
             List<FlowNode> nextNodes = flowNodeService.getNextNodeList(currentNode,
729 730
                     null, null, pathWayData);
731
+            StringBuilder nodeIds = new StringBuilder();
730 732
             if (CollUtil.isNotEmpty(nextNodes)) {
731 733
                 //将当前节点下个节点id用逗号隔开组成字符串
732 734
                 String parallelNode = nextNodes.stream()
@@ -741,11 +743,12 @@ public class WorkOrderServiceImpl implements IWorkOrderService {
741 743
                                 "流程结束,工单完结", userId, userName);
742 744
                         return workOrderMapper.updateWorkOrder(workOrder);
743 745
                     } else {
744
-                        insertWorkOrderTask(workOrder, node,parallelNode);
746
+                        long taskId= insertWorkOrderTask(workOrder, node,parallelNode);
745 747
                         // 流程中间节点,工单状态为待处理
746 748
                         workOrder.setStatus(WorkOrderStatus.PENDING_HANDING.getStatus());
747
-                        insertWorkOrderRecord(workOrder.getId(), workOrder.getOrderNo(), WorkOderOperationType.PROCESS.name(),
749
+                     insertWorkOrderRecord(workOrder.getId(), workOrder.getOrderNo(), WorkOderOperationType.PROCESS.name(),
748 750
                                 "工单进入待办任务", userId, userName);
751
+                        nodeIds.append(taskId).append(",");
749 752
                     }
750 753
                 }
751 754
             } else {
@@ -755,12 +758,11 @@ public class WorkOrderServiceImpl implements IWorkOrderService {
755 758
                 insertWorkOrderRecord(workOrder.getId(), workOrder.getOrderNo(), WorkOderOperationType.COMPLETE.name(),
756 759
                         "未找到流程定义节点,请设置正确的流程定义,该工单直接完结", userId, userName);
757 760
             }
758
-        }
759
-        else
760
-        {
761
-            // 等待其他并行节点或当前节点处理完成
762
-
763
-
761
+            // 去掉最后一个逗号
762
+            if (nodeIds.length() > 0) {
763
+                nodeIds.setLength(nodeIds.length() - 1);
764
+                workOrder.setNodeId(nodeIds.toString());
765
+            }
764 766
         }
765 767
         //更新当前任务
766 768
         workOrderTaskMapper.updateWorkOrderTask(taskDetail);