ouyj 3 місяців тому
батько
коміт
40fae07319

+ 11 - 0
ygtx-gxt/src/main/java/com/ygtx/gxt/domain/OrderScoreInfo.java

@@ -246,6 +246,9 @@ public class OrderScoreInfo {
     /** 工单录入类别(1默认,2补录工单) */
     private String orderEntryType;
 
+    /** 标识当前用户是否在工单人员列表中 */
+    private Boolean isCurrentUserInOrder;
+
     public Integer getOrderType() {
         return orderType;
     }
@@ -839,4 +842,12 @@ public class OrderScoreInfo {
     public void setOrderEntryType(String orderEntryType) {
         this.orderEntryType = orderEntryType;
     }
+    
+    public Boolean getIsCurrentUserInOrder() {
+        return isCurrentUserInOrder;
+    }
+    
+    public void setIsCurrentUserInOrder(Boolean isCurrentUserInOrder) {
+        this.isCurrentUserInOrder = isCurrentUserInOrder;
+    }
 }

+ 35 - 5
ygtx-gxt/src/main/java/com/ygtx/gxt/service/impl/GxtOrderHourServiceImpl.java

@@ -111,8 +111,32 @@ public class GxtOrderHourServiceImpl implements IGxtOrderHourService {
                 long diffMillis = order.getRealEndTime().getTime() - order.getRealStartTime().getTime() - suspensionTimes[2] ;
                 order.setWorkHour(diffMillis / (1000.0 * 60 * 60));
             }
+            if (order.getOrderType() == 1) {
+                // 维修工单
+                List<GxtRepairOrderPerson> repairPersons = gxtRepairOrderService.selectRepairOrderPersonListByOrderId(order.getId());
+                // 检查当前用户是否在维修工单人员列表中
+                boolean isCurrentUserInOrder = false;
+                for (GxtRepairOrderPerson person : repairPersons) {
+                    if (Objects.equals(person.getUserId(), SecurityUtils.getUserId())) {
+                        isCurrentUserInOrder = true;
+                        break;
+                    }
+                }
+                order.setIsCurrentUserInOrder(isCurrentUserInOrder);
+            } else if (order.getOrderType() == 2) {
+                // 维保工单
+                List<GxtWorkOrderPerson> workPersons = gxtWorkOrderService.selectWorkOrderPersonListByOrderId(order.getId());
+                // 检查当前用户是否在维保工单人员列表中
+                boolean isCurrentUserInOrder = false;
+                for (GxtWorkOrderPerson person : workPersons) {
+                    if (Objects.equals(person.getUserId(), SecurityUtils.getUserId())) {
+                        isCurrentUserInOrder = true;
+                        break;
+                    }
+                }
+                order.setIsCurrentUserInOrder(isCurrentUserInOrder);
+            }
         }
-        
         return orderList;
     }
 
@@ -505,15 +529,21 @@ public class GxtOrderHourServiceImpl implements IGxtOrderHourService {
         }
         
         // 为维修工单设置时间范围(使用occurTime)
+        //待修改,改为维修工单设置时间范围,改成结单时间,即gxt_repair_order_flow里面action_type值为complete的action_time的值
         if (repairOrder != null) {
-            repairOrder.getParams().put("beginOccurTime", startTime);
-            repairOrder.getParams().put("endOccurTime", endTime);
+            //repairOrder.getParams().put("beginOccurTime", startTime);
+            //repairOrder.getParams().put("endOccurTime", endTime);
+            repairOrder.getParams().put("beginCompleteTime", startTime);
+            repairOrder.getParams().put("endCompleteTime", endTime);
         }
         
         // 为维保工单设置时间范围(使用createTime)
+        //待修改,改为维保工单设置时间范围,改成结单时间,即gxt_work_order_flow里面action_type为action_type值为complete的action_time的值
         if (workOrder != null) {
-            workOrder.getParams().put("beginCreateTime", startTime);
-            workOrder.getParams().put("endCreateTime", endTime);
+            //workOrder.getParams().put("beginCreateTime", startTime);
+            //workOrder.getParams().put("endCreateTime", endTime);
+            workOrder.getParams().put("beginCompleteTime", startTime);
+            workOrder.getParams().put("endCompleteTime", endTime);
         }
     }
     

+ 8 - 4
ygtx-gxt/src/main/resources/mapper/gxt/GxtOrderHourMapper.xml

@@ -126,15 +126,17 @@
                     <if test="repairOrder.pcsDeviceName != null and repairOrder.pcsDeviceName != ''"> and pcs_device_name like concat('%', #{repairOrder.pcsDeviceName}, '%')</if>
                     <if test="repairOrder.teamLeaderName != null and repairOrder.teamLeaderName != ''"> and team_leader_name like concat('%', #{repairOrder.teamLeaderName}, '%')</if>
                     <if test="repairOrder.scoringStatus != null"> and scoring_status = #{repairOrder.scoringStatus}</if>
-                    <!-- 时间范围查询条件 -->
                     <if test="repairOrder.params.beginOccurTime != null"> AND occur_time &gt;= #{repairOrder.params.beginOccurTime}</if>
                     <if test="repairOrder.params.endOccurTime != null"> AND occur_time &lt;= #{repairOrder.params.endOccurTime}</if>
+                    <!-- 时间范围查询条件 - 使用结单时间 -->
+                    <if test="repairOrder.params.beginCompleteTime != null"> AND t.id IN (SELECT DISTINCT order_id FROM gxt_repair_order_flow WHERE action_type IN ('complete','auto_finalize') AND action_time &gt;= #{repairOrder.params.beginCompleteTime})</if>
+                    <if test="repairOrder.params.endCompleteTime != null"> AND t.id IN (SELECT DISTINCT order_id FROM gxt_repair_order_flow WHERE action_type IN ('complete','auto_finalize') AND action_time &lt;= #{repairOrder.params.endCompleteTime})</if>
                     <!-- 业务特定数据权限过滤条件 -->
                     <if test="repairOrder != null and repairOrder.params.businessDataScope != null and repairOrder.params.businessDataScope != ''">
                         ${repairOrder.params.businessDataScope}
                     </if>
                 </if>
-                and NULLIF(scoring_status, '') IS NOT NULL and work_order_status != 'invalid'
+                and NULLIF(scoring_status, '') IS NOT NULL and work_order_status IN ('completed','archived')
             </where>
 
             UNION ALL
@@ -205,15 +207,17 @@
                     <if test="workOrder.pcsDeviceName != null and workOrder.pcsDeviceName != ''"> and pcs_device_name like concat('%', #{workOrder.pcsDeviceName}, '%')</if>
                     <if test="workOrder.teamLeaderName != null and workOrder.teamLeaderName != ''"> and team_leader_name like concat('%', #{workOrder.teamLeaderName}, '%')</if>
                     <if test="workOrder.scoringStatus != null"> and scoring_status = #{workOrder.scoringStatus}</if>
-                    <!-- 时间范围查询条件 -->
                     <if test="workOrder.params.beginCreateTime != null"> AND create_time &gt;= #{workOrder.params.beginCreateTime}</if>
                     <if test="workOrder.params.endCreateTime != null"> AND create_time &lt;= #{workOrder.params.endCreateTime}</if>
+                    <!-- 时间范围查询条件 - 使用结单时间 -->
+                    <if test="workOrder.params.beginCompleteTime != null"> AND t.id IN (SELECT DISTINCT order_id FROM gxt_work_order_flow WHERE action_type IN ('complete','auto_finalize')  AND action_time &gt;= #{workOrder.params.beginCompleteTime})</if>
+                    <if test="workOrder.params.endCompleteTime != null"> AND t.id IN (SELECT DISTINCT order_id FROM gxt_work_order_flow WHERE action_type IN ('complete','auto_finalize') AND action_time &lt;= #{workOrder.params.endCompleteTime})</if>
                     <!-- 业务特定数据权限过滤条件 -->
                     <if test="workOrder != null and workOrder.params.businessDataScope != null and workOrder.params.businessDataScope != ''">
                         ${workOrder.params.businessDataScope}
                     </if>
                 </if>
-                and NULLIF(scoring_status, '') IS NOT NULL and work_order_status != 'invalid'
+                and NULLIF(scoring_status, '') IS NOT NULL and work_order_status IN ('completed','archived')
             </where>
         ) t
         <where>