|
|
@@ -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);
|
|
|
|