Explorar el Código

工单待评分

ouyj hace 4 meses
padre
commit
5122ec142f

+ 13 - 0
ygtx-gxt/src/main/java/com/ygtx/gxt/controller/GxtOrderMineController.java

@@ -90,6 +90,19 @@ public class GxtOrderMineController extends BaseController
         return getDataTable(list);
     }
 
+    /**
+     * 查询我的待评分工单列表(合并维修工单和维保工单)
+     */
+    @GetMapping("/listMyRate")
+    public TableDataInfo listMyRate(GxtRepairOrder repairOrder, GxtWorkOrder workOrder)
+    {
+        // 开启分页插件自动分页
+        startPage();
+        // 查询合并的工单列表
+        List<OrderScoreInfo> list = gxtOrderMineService.selectUnionOrderListMyRate(repairOrder, workOrder);
+        return getDataTable(list);
+    }
+
     /**
      * 获取工单详细信息
      */

+ 9 - 0
ygtx-gxt/src/main/java/com/ygtx/gxt/service/IGxtOrderMineService.java

@@ -50,4 +50,13 @@ public interface IGxtOrderMineService {
      * @return 合并的工单列表
      */
     public List<OrderScoreInfo> selectUnionOrderListMyTodo(GxtRepairOrder repairOrder, GxtWorkOrder workOrder);
+
+    /**
+     * 查询我的待评分工单列表(合并维修工单和维保工单)
+     *
+     * @param repairOrder 维修工单查询条件
+     * @param workOrder 维保工单查询条件
+     * @return 合并的工单列表
+     */
+    List<OrderScoreInfo> selectUnionOrderListMyRate(GxtRepairOrder repairOrder, GxtWorkOrder workOrder);
 }

+ 97 - 2
ygtx-gxt/src/main/java/com/ygtx/gxt/service/impl/GxtOrderMineServiceImpl.java

@@ -165,7 +165,7 @@ public class GxtOrderMineServiceImpl implements IGxtOrderMineService {
         // completed状态且有复运权限
         if (SecurityUtils.hasPermi("gxt:repairOrder:restart")) {
             if (hasConditions) repairFilterSql.append(" OR ");
-            repairFilterSql.append("t.work_order_status = 'completed'");
+            repairFilterSql.append("t.work_order_status = 'completed' and t.restart_time is null ");
             hasConditions = true;
         }
         
@@ -219,7 +219,7 @@ public class GxtOrderMineServiceImpl implements IGxtOrderMineService {
         // completed状态且有复运权限
         if (SecurityUtils.hasPermi("gxt:maintenance:order:restart")) {
             if (hasConditions) workFilterSql.append(" OR ");
-            workFilterSql.append("t.work_order_status = 'completed'");
+            workFilterSql.append("t.work_order_status = 'completed' and t.restart_time is null");
             hasConditions = true;
         }
 
@@ -245,6 +245,101 @@ public class GxtOrderMineServiceImpl implements IGxtOrderMineService {
         return orderList;
     }
 
+    @Override
+    public List<OrderScoreInfo> selectUnionOrderListMyRate(GxtRepairOrder repairOrder, GxtWorkOrder workOrder) {
+        // 添加业务特定的数据权限过滤
+        addBusinessDataScopeFilter(repairOrder, workOrder);
+
+        // 根据用户权限和工单状态进行过滤数据
+        // repairOrder只能查询scoringStatus为to_self、to_re、to_approve、to_final 状态的数据
+        // workOrder只能查询scoringStatus为to_self、to_re、to_approve、to_final状态的数据
+
+        Long currentUserId = SecurityUtils.getUserId();
+
+        // 构建维修工单的权限和状态过滤条件
+        StringBuilder repairFilterSql = new StringBuilder();
+        repairFilterSql.append(" AND (");
+        boolean hasConditions = false;
+
+        // to_self状态且有自评权限且是(工作负责人或者超级管理员角色)
+        if (SecurityUtils.hasPermi("gxt:orderScore:selfEvaluation")) {
+            repairFilterSql.append("(t.scoring_status = 'to_self' AND (t.team_leader_id = ")
+                    .append(currentUserId)
+                    .append(" OR ")
+                    .append(SecurityUtils.getUserId())
+                    .append(" IN (SELECT user_id FROM sys_user WHERE user_name = 'admin')))");
+            hasConditions = true;
+        }
+
+        // to_re状态且有复评权限且是工作负责人
+        if (SecurityUtils.hasPermi("gxt:orderScore:review")) {
+            if (hasConditions) repairFilterSql.append(" OR ");
+            repairFilterSql.append("t.scoring_status = 'to_re'");
+            hasConditions = true;
+        }
+
+        // to_final状态且有终评权限
+        if (SecurityUtils.hasPermi("gxt:orderScore:finalEvaluation")) {
+            if (hasConditions) repairFilterSql.append(" OR ");
+            repairFilterSql.append("t.scoring_status = 'to_final'");
+            hasConditions = true;
+        }
+
+        // 如果没有任何权限,则不返回任何数据
+        if (!hasConditions) {
+            repairFilterSql = new StringBuilder();
+            repairFilterSql.append(" AND 1=0"); // 永远为false的条件,确保不返回任何数据
+        } else {
+            repairFilterSql.append(")");
+        }
+
+        repairOrder.getParams().put("scoreStatusFilter", repairFilterSql.toString());
+
+        // 构建维保工单的权限和状态过滤条件
+        StringBuilder workFilterSql = new StringBuilder();
+        workFilterSql.append(" AND (");
+        hasConditions = false;
+
+        // to_self状态且有自评权限且是(工作负责人或者超级管理员角色)
+        if (SecurityUtils.hasPermi("gxt:orderScore:selfEvaluation")) {
+            workFilterSql.append("(t.scoring_status = 'to_self' AND (t.team_leader_id = ")
+                    .append(currentUserId)
+                    .append(" OR ")
+                    .append(SecurityUtils.getUserId())
+                    .append(" IN (SELECT user_id FROM sys_user WHERE user_name = 'admin')))");
+            hasConditions = true;
+        }
+
+        // to_re状态且有复评权限
+        if (SecurityUtils.hasPermi("gxt:orderScore:review")) {
+            if (hasConditions) workFilterSql.append(" OR ");
+            workFilterSql.append("t.scoring_status = 'to_re'");
+            hasConditions = true;
+        }
+
+        // to_final状态且有终评权限
+        if (SecurityUtils.hasPermi("gxt:orderScore:finalEvaluation")) {
+            if (hasConditions) workFilterSql.append(" OR ");
+            workFilterSql.append("t.scoring_status = 'to_final'");
+            hasConditions = true;
+        }
+
+        // 如果没有任何权限,则不返回任何数据
+        if (!hasConditions) {
+            workFilterSql = new StringBuilder();
+            workFilterSql.append(" AND 1=0"); // 永远为false的条件,确保不返回任何数据
+        } else {
+            workFilterSql.append(")");
+        }
+
+        workOrder.getParams().put("scoreStatusFilter", workFilterSql.toString());
+
+        // 查询工单列表
+        List<OrderScoreInfo> orderList = gxtOrderMineMapper.selectUnionOrderList(repairOrder, workOrder);
+
+        return orderList;
+    }
+
     /**
      * 添加业务特定的数据权限过滤条件
      * 基于角色的数据范围进行自定义权限控制

+ 8 - 0
ygtx-gxt/src/main/resources/mapper/gxt/GxtOrderMineMapper.xml

@@ -140,6 +140,10 @@
                 <if test="repairOrder.params.todoStatusFilter != null and repairOrder.params.todoStatusFilter != ''">
                     ${repairOrder.params.todoStatusFilter}
                 </if>
+                <!-- 评分列表状态和权限过滤条件 -->
+                <if test="repairOrder.params.scoreStatusFilter != null and repairOrder.params.scoreStatusFilter != ''">
+                    ${repairOrder.params.scoreStatusFilter}
+                </if>
             </where>
 
             UNION ALL
@@ -223,6 +227,10 @@
                 <if test="workOrder.params.todoStatusFilter != null and workOrder.params.todoStatusFilter != ''">
                     ${workOrder.params.todoStatusFilter}
                 </if>
+                <!-- 评分列表状态和权限过滤条件 -->
+                <if test="workOrder.params.scoreStatusFilter != null and workOrder.params.scoreStatusFilter != ''">
+                    ${workOrder.params.scoreStatusFilter}
+                </if>
             </where>
         ) t
         ORDER BY create_time DESC

+ 10 - 0
ygtx-ui/src/api/gxt/orderMine.js

@@ -44,6 +44,16 @@ export function listMyTodo(query) {
   })
 }
 
+// 查询我的待评分工单列表(合并维修工单和维保工单)
+export function listMyRate(query) {
+  return request({
+    url: '/gxt/orderMine/listMyRate',
+    method: 'get',
+    params: query
+  })
+}
+
+
 // 维修工单接单 - 使用现有的维修工单接口
 export function acceptRepairOrder(data) {
   return request({

+ 1 - 0
ygtx-ui/src/views/gxt/orderMyTodo/index.vue

@@ -1510,6 +1510,7 @@ import {
   approveWorkOrder,
   restartRepairOrder,
   restartWorkOrder,
+  listMyRate,
 } from "@/api/gxt/orderMine.js";
 import { listUserNoPermi } from "@/api/system/user.js";
 import { listEquipment,listMaintenanceCenters, listStationsByMaintenanceCenter } from "@/api/gxt/equipment.js";