瀏覽代碼

我的待办列表

ouyj 5 月之前
父節點
當前提交
148b12cfe0

+ 91 - 0
ygtx-gxt/src/main/java/com/ygtx/gxt/service/impl/GxtOrderMineServiceImpl.java

@@ -130,6 +130,97 @@ public class GxtOrderMineServiceImpl implements IGxtOrderMineService {
     public List<OrderScoreInfo> selectUnionOrderListMyTodo(GxtRepairOrder repairOrder, GxtWorkOrder workOrder) {
         // 添加业务特定的数据权限过滤
         addBusinessDataScopeFilter(repairOrder, workOrder);
+        
+        // 根据用户权限和工单状态进行过滤数据
+        // repairOrder只能查询workOrderStatus为assigned、to_finish、to_approve状态的数据
+        // workOrder只能查询workOrderStatus为assigned、processing、to_finish、to_approve状态的数据
+        
+        Long currentUserId = SecurityUtils.getUserId();
+        
+        // 构建维修工单的权限和状态过滤条件
+        StringBuilder repairFilterSql = new StringBuilder();
+        repairFilterSql.append(" AND (");
+        boolean hasConditions = false;
+        
+        // assigned状态且有接单权限
+        if (SecurityUtils.hasPermi("gxt:repairOrder:accept")) {
+            repairFilterSql.append("t.work_order_status = 'assigned'");
+            hasConditions = true;
+        }
+        
+        // to_finish状态且有结单权限且是工作负责人
+        if (SecurityUtils.hasPermi("gxt:repairOrder:finalize")) {
+            if (hasConditions) repairFilterSql.append(" OR ");
+            repairFilterSql.append("(t.work_order_status = 'to_finish' AND t.team_leader_id = ").append(currentUserId).append(")");
+            hasConditions = true;
+        }
+        
+        // to_approve状态且有审批权限
+        if (SecurityUtils.hasPermi("gxt:repairOrder:approve")) {
+            if (hasConditions) repairFilterSql.append(" OR ");
+            repairFilterSql.append("t.work_order_status = 'to_approve'");
+            hasConditions = true;
+        }
+        
+        // completed状态且有复运权限
+        /*if (SecurityUtils.hasPermi("gxt:repairOrder:restart")) {
+            if (hasConditions) repairFilterSql.append(" OR ");
+            repairFilterSql.append("t.work_order_status = 'completed'");
+            hasConditions = true;
+        }*/
+        
+        // 如果没有任何权限,则不返回任何数据
+        if (!hasConditions) {
+            repairFilterSql = new StringBuilder();
+            repairFilterSql.append(" AND 1=0"); // 永远为false的条件,确保不返回任何数据
+        } else {
+            repairFilterSql.append(")");
+        }
+        
+        repairOrder.getParams().put("todoStatusFilter", repairFilterSql.toString());
+
+        // 构建维保工单的权限和状态过滤条件
+        StringBuilder workFilterSql = new StringBuilder();
+        workFilterSql.append(" AND (");
+        hasConditions = false;
+        
+        // assigned状态且有接单权限
+        if (SecurityUtils.hasPermi("gxt:maintenance:order:accept")) {
+            workFilterSql.append("t.work_order_status = 'assigned'");
+            hasConditions = true;
+        }
+        
+        // processing或to_finish状态且有结单权限且是工作负责人
+        if (SecurityUtils.hasPermi("gxt:maintenance:order:complete")) {
+            if (hasConditions) workFilterSql.append(" OR ");
+            workFilterSql.append("(t.work_order_status IN ('processing', 'to_finish') AND t.team_leader_id = ").append(currentUserId).append(")");
+            hasConditions = true;
+        }
+        
+        // to_approve状态且有审批权限
+        if (SecurityUtils.hasPermi("gxt:maintenance:order:approve")) {
+            if (hasConditions) workFilterSql.append(" OR ");
+            workFilterSql.append("t.work_order_status = 'to_approve'");
+            hasConditions = true;
+        }
+        
+        // completed状态且有复运权限
+        /*if (SecurityUtils.hasPermi("gxt:maintenance:order:restart")) {
+            if (hasConditions) workFilterSql.append(" OR ");
+            workFilterSql.append("t.work_order_status = 'completed'");
+            hasConditions = true;
+        }*/
+        
+        // 如果没有任何权限,则不返回任何数据
+        if (!hasConditions) {
+            workFilterSql = new StringBuilder();
+            workFilterSql.append(" AND 1=0"); // 永远为false的条件,确保不返回任何数据
+        } else {
+            workFilterSql.append(")");
+        }
+        
+        workOrder.getParams().put("todoStatusFilter", workFilterSql.toString());
+
         // 查询工单列表
         List<OrderScoreInfo> orderList = gxtOrderMineMapper.selectUnionOrderList(repairOrder, workOrder);
 

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

@@ -133,6 +133,10 @@
                 <if test="repairOrder.params.businessDataScope != null and repairOrder.params.businessDataScope != ''">
                     ${repairOrder.params.businessDataScope}
                 </if>
+                <!-- 待办列表状态和权限过滤条件 -->
+                <if test="repairOrder.params.todoStatusFilter != null and repairOrder.params.todoStatusFilter != ''">
+                    ${repairOrder.params.todoStatusFilter}
+                </if>
             </where>
 
             UNION ALL
@@ -209,6 +213,10 @@
                 <if test="workOrder.params.businessDataScope != null and workOrder.params.businessDataScope != ''">
                     ${workOrder.params.businessDataScope}
                 </if>
+                <!-- 待办列表状态和权限过滤条件 -->
+                <if test="workOrder.params.todoStatusFilter != null and workOrder.params.todoStatusFilter != ''">
+                    ${workOrder.params.todoStatusFilter}
+                </if>
             </where>
         ) t
         ORDER BY create_time DESC