wuhb пре 5 месеци
родитељ
комит
9a90a610b0

+ 1 - 0
ygtx-common/src/main/java/com/ygtx/common/constant/UserConstants.java

@@ -91,4 +91,5 @@ public class UserConstants
     public static final String NO = "N";
 
     public static final String NOTIFY_KEY="NOTIFY:USER_TASK_";
+    public static final String NOTIFY_STORAGE_KEY="NOTIFY:STORAGE:USER_TASK_";
 }

+ 5 - 0
ygtx-common/src/main/java/com/ygtx/common/core/redis/RedisCache.java

@@ -273,6 +273,11 @@ public class RedisCache
 
     public Object lPush(String key1, Long key2, String value) {
         // 底层调用 Redis LPOP 命令
+        redisTemplate.delete(key1+"_"+key2);
         return redisTemplate.opsForList().leftPush(key1+"_"+key2, value);
     }
+
+    public Object lGet(String key1, Long key2){
+        return redisTemplate.opsForList().index(key1 + "_" + key2, 0);
+    }
 }

+ 11 - 4
ygtx-common/src/main/java/com/ygtx/common/utils/DateUtils.java

@@ -13,7 +13,7 @@ import org.apache.commons.lang3.time.DateFormatUtils;
 
 /**
  * 时间工具类
- * 
+ *
  * @author ruoyi
  */
 public class DateUtils extends org.apache.commons.lang3.time.DateUtils
@@ -28,14 +28,16 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
 
     public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
 
+    public static String HH_MM_SS = "HH:mm:ss";
+
     private static String[] parsePatterns = {
-            "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", 
+            "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM",
             "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM",
             "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"};
 
     /**
      * 获取当前Date型日期
-     * 
+     *
      * @return Date() 当前日期
      */
     public static Date getNowDate()
@@ -45,7 +47,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
 
     /**
      * 获取当前日期, 默认格式为yyyy-MM-dd
-     * 
+     *
      * @return String
      */
     public static String getDate()
@@ -58,6 +60,11 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
         return dateTimeNow(YYYY_MM_DD_HH_MM_SS);
     }
 
+    public static final String getHourTime()
+    {
+        return dateTimeNow(HH_MM_SS);
+    }
+
     public static final String dateTimeNow()
     {
         return dateTimeNow(YYYYMMDDHHMMSS);

+ 29 - 0
ygtx-gxt/src/main/java/com/ygtx/gxt/controller/mobile/GxtMobileNotifyController.java

@@ -18,6 +18,7 @@ import com.ygtx.gxt.service.IGxtOrderScoreService;
 import com.ygtx.gxt.service.IGxtRepairOrderService;
 import com.ygtx.gxt.service.IGxtWorkOrderService;
 import io.lettuce.core.dynamic.annotation.Param;
+import io.swagger.models.auth.In;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -32,6 +33,8 @@ import java.util.List;
 @RequestMapping("/mobile/notify")
 public class GxtMobileNotifyController extends BaseController
 {
+    @Autowired
+    private IGxtOrderScoreService gxtOrderScoreService;
     @Autowired
     private RedisCache redisCache;
     /**
@@ -43,6 +46,32 @@ public class GxtMobileNotifyController extends BaseController
         try {
             System.out.println("请求" + DateUtils.getTime());
             if(id != null){
+                GxtRepairOrder repairOrder = new GxtRepairOrder();
+                repairOrder.setWorkOrderStatus("assigned,to_finish,to_approve,suspended");
+                GxtWorkOrder workOrder = new GxtWorkOrder();
+                workOrder.setWorkOrderStatus("assigned,to_finish,to_approve,suspended");
+                List<OrderScoreInfo> orderScoreInfos = gxtOrderScoreService.selectMobileUnionOrderList(id, repairOrder,workOrder, null);
+                if(!orderScoreInfos.isEmpty()){
+                    boolean isSend = false;
+                    int taskNum = orderScoreInfos.size();
+                    Object taskNumStr = redisCache.lGet(UserConstants.NOTIFY_STORAGE_KEY, id);
+                    if(taskNumStr!=null){
+                        int prevTaskNum = Integer.parseInt(taskNumStr.toString());
+                        if(taskNum < prevTaskNum){
+                            isSend = true;
+                        }
+                    }else{
+                        isSend = true;
+                    }
+                    if(isSend) {
+                        GxtNotifyMessage notifyMessage = new GxtNotifyMessage();
+                        notifyMessage.setTitle(DateUtils.getHourTime() + "收到消息");
+                        notifyMessage.setDesc("您有" + taskNum + "个任务待处理");
+                        String message = JSONUtil.toJsonStr(notifyMessage);
+                        redisCache.lPush(UserConstants.NOTIFY_KEY, id, message);
+                    }
+                    redisCache.lPush(UserConstants.NOTIFY_STORAGE_KEY,id, taskNum+"");
+                }
                 Object val = redisCache.lPop(UserConstants.NOTIFY_KEY,id);
                 if (val != null) {
                     GxtNotifyMessage notifyMessage = JSONUtil.toBean(val.toString(), GxtNotifyMessage.class);

+ 13 - 12
ygtx-gxt/src/main/java/com/ygtx/gxt/service/IGxtOrderScoreService.java

@@ -9,7 +9,7 @@ import java.util.Map;
 
 /**
  * 工单评分Service接口
- * 
+ *
  * @author lingming
  * @date 2025-11-12
  */
@@ -17,13 +17,13 @@ public interface IGxtOrderScoreService {
 
     /**
      * 查询合并的工单列表(维修工单和维保工单)
-     * 
+     *
      * @param repairOrder 维修工单查询条件
      * @param workOrder 维保工单查询条件
      * @return 合并的工单列表
      */
     public List<OrderScoreInfo> selectUnionOrderList(GxtRepairOrder repairOrder, GxtWorkOrder workOrder, String keyword);
-    
+
     /**
      * 获取工单评分统计信息
      *
@@ -33,34 +33,34 @@ public interface IGxtOrderScoreService {
      * @return 统计信息
      */
     public Map<String, Object> getOrderScoreStatistics(GxtRepairOrder repairOrder, GxtWorkOrder workOrder, String month);
-    
+
     /**
      * 保存自评信息
-     * 
+     *
      * @param orderScoreInfo 工单评分信息
      * @return 结果
      */
     public int selfEvaluation(OrderScoreInfo orderScoreInfo);
-    
+
     /**
      * 保存复评信息
-     * 
+     *
      * @param orderScoreInfo 工单评分信息
      * @return 结果
      */
     public int review(OrderScoreInfo orderScoreInfo);
-    
+
     /**
      * 保存终评信息
-     * 
+     *
      * @param orderScoreInfo 工单评分信息
      * @return 结果
      */
     public int finalEvaluation(OrderScoreInfo orderScoreInfo);
-    
+
     /**
      * 保存确认信息
-     * 
+     *
      * @param orderScoreInfo 工单评分信息
      * @return 结果
      */
@@ -75,4 +75,5 @@ public interface IGxtOrderScoreService {
      */
     public List<OrderScoreInfo> selectMobileUnionOrderList(GxtRepairOrder repairOrder, GxtWorkOrder workOrder, String keyword);
 
-}
+    public List<OrderScoreInfo> selectMobileUnionOrderList(Long userId, GxtRepairOrder repairOrder, GxtWorkOrder workOrder, String keyword);
+}

+ 137 - 127
ygtx-gxt/src/main/java/com/ygtx/gxt/service/impl/GxtOrderScoreServiceImpl.java

@@ -34,13 +34,13 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
 
     @Autowired
     private GxtOrderScoreMapper gxtOrderScoreMapper;
-    
+
     @Autowired
     private IGxtRepairOrderService gxtRepairOrderService;
-    
+
     @Autowired
     private IGxtWorkOrderService gxtWorkOrderService;
-    
+
     @Autowired
     private SysUserMapper userMapper;
 
@@ -77,7 +77,7 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
         }
         // 查询工单列表
         List<OrderScoreInfo> orderList = gxtOrderScoreMapper.selectUnionOrderList(repairOrder, workOrder, keyword);
-        
+
         // 为每个工单填充人员评分列表数据
         for (OrderScoreInfo order : orderList) {
             if (order.getOrderType() == 1) {
@@ -120,10 +120,10 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
                 order.setScorePersonList(scorePersons);
             }
         }
-        
+
         return orderList;
     }
-    
+
     /**
      * 获取工单评分统计信息
      *
@@ -147,9 +147,9 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
                 workOrder.setCreateBy(SecurityUtils.getUsername());
             }
         }
-        
+
         Map<String, Object> result = new HashMap<>();
-        
+
         // 如果用户的数据权限是"仅本人数据",则只统计本人的工分
         if (isCurrentUserDataScopeSelf()) {
             Long currentUserId = SecurityUtils.getUserId();
@@ -157,28 +157,28 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
                 // 添加用户ID参数用于Mapper查询
                 repairOrder.getParams().put("currentUserId", currentUserId);
                 workOrder.getParams().put("currentUserId", currentUserId);
-                
+
                 // 直接使用Mapper查询,避免加载大量数据到内存
                 Map<String, Object> statistics = gxtOrderScoreMapper.selectOrderScoreStatistics(repairOrder, workOrder, month);
-                
+
                 // 计算总工分
                 Object maintenanceScoreObj = statistics.get("maintenanceScore");
                 Object repairScoreObj = statistics.get("repairScore");
-                
+
                 double maintenanceScore = maintenanceScoreObj != null ? ((Number) maintenanceScoreObj).doubleValue() : 0.0;
                 double repairScore = repairScoreObj != null ? ((Number) repairScoreObj).doubleValue() : 0.0;
                 double totalScore = maintenanceScore + repairScore;
-                
+
                 result.put("totalScore", totalScore);
                 result.put("maintenanceScore", maintenanceScore);
                 result.put("repairScore", repairScore);
                 result.put("maintenanceCount", statistics.get("maintenanceCount"));
                 result.put("repairCount", statistics.get("repairCount"));
-                
+
                 // 计算排名
                 int rank = calculateUserRankInStation(repairOrder, workOrder, month);
                 result.put("rank", rank);
-                
+
                 // 计算场站总人数
                 LoginUser loginUser = SecurityUtils.getLoginUser();
                 if (loginUser != null && loginUser.getUser() != null) {
@@ -199,33 +199,33 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
                     // 如果无法获取用户信息,至少当前用户参与排名
                     result.put("totalRankingUsers", 1);
                 }
-                
+
                 return result;
             }
         }
-        
+
         // 获取统计信息(非"仅本人数据"权限用户或其他情况)
         Map<String, Object> statistics = gxtOrderScoreMapper.selectOrderScoreStatistics(repairOrder, workOrder, month);
         result.putAll(statistics);
-        
+
         // 计算总工分
         Object maintenanceScoreObj = statistics.get("maintenanceScore");
         Object repairScoreObj = statistics.get("repairScore");
-        
+
         double maintenanceScore = maintenanceScoreObj != null ? ((Number) maintenanceScoreObj).doubleValue() : 0.0;
         double repairScore = repairScoreObj != null ? ((Number) repairScoreObj).doubleValue() : 0.0;
         double totalScore = maintenanceScore + repairScore;
-        
+
         result.put("totalScore", totalScore);
         result.put("maintenanceScore", maintenanceScore);
         result.put("repairScore", repairScore);
-        
+
         return result;
     }
-    
+
     /**
      * 判断当前用户的数据权限是否为"仅本人数据"
-     * 
+     *
      * @return true表示数据权限为"仅本人数据",false表示其他权限
      */
     private boolean isCurrentUserDataScopeSelf() {
@@ -259,14 +259,14 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
                 return false;
             }
         }
-        
+
         // 所有角色都是"仅本人数据"权限
         return true;
     }
-    
+
     /**
      * 计算用户在所在场站的排名
-     * 
+     *
      * @return 用户在所在场站的排名
      */
     private int calculateUserRankInStation(GxtRepairOrder repairOrder, GxtWorkOrder workOrder, String month) {
@@ -280,53 +280,53 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
         if (currentUser == null || currentUser.getUserId() == null) {
             return 1; // 默认排名第一
         }
-        
+
         Long userId = currentUser.getUserId();
         Long deptId = currentUser.getDeptId();
-        
+
         // 检查是否有部门ID
         if (deptId == null) {
             return 1; // 默认排名第一
         }
-        
+
         // 获取当前用户处理的工单工分
         double currentUserScore = getUserScore(userId, repairOrder, workOrder, month);
-        
+
         // 获取同一场站其他用户的工单工分
         List<Map<String, Object>> stationUserScores = getStationUserScores(deptId, repairOrder, workOrder, month);
-        
+
         // 检查是否获取到用户数据
         if (stationUserScores == null || stationUserScores.isEmpty()) {
             return 1; // 只有当前用户,排名第一
         }
-        
+
         // 计算排名
         int rank = 1;
         for (Map<String, Object> userScore : stationUserScores) {
             if (userScore == null || userScore.get("userId") == null || userScore.get("score") == null) {
                 continue;
             }
-            
+
             Long userIdInStation = (Long) userScore.get("userId");
             double score = (Double) userScore.get("score");
-            
+
             // 跳过当前用户自己
             if (userIdInStation.equals(userId)) {
                 continue;
             }
-            
+
             // 如果其他用户的工分大于当前用户,则排名下降
             if (score > currentUserScore) {
                 rank++;
             }
         }
-        
+
         return rank;
     }
-    
+
     /**
      * 获取用户处理的工单工分
-     * 
+     *
      * @param userId 用户ID
      * @return 用户处理的工单工分
      */
@@ -344,7 +344,7 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
                 // 忽略拷贝异常
             }
         }
-        
+
         GxtWorkOrder userWorkOrder = new GxtWorkOrder();
         if (workOrder != null) {
             try {
@@ -357,35 +357,35 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
                 // 忽略拷贝异常
             }
         }
-        
+
         // 为维修工单添加用户筛选条件
         if (userRepairOrder != null) {
             // 添加用户ID参数用于Mapper查询
             userRepairOrder.getParams().put("currentUserId", userId);
         }
-        
+
         // 为维保工单添加用户筛选条件
         if (userWorkOrder != null) {
             // 添加用户ID参数用于Mapper查询
             userWorkOrder.getParams().put("currentUserId", userId);
         }
-        
+
         // 查询用户处理的工单统计信息
         Map<String, Object> statistics = gxtOrderScoreMapper.selectOrderScoreStatistics(userRepairOrder, userWorkOrder, month);
-        
+
         // 计算总工分
         Object maintenanceScoreObj = statistics.get("maintenanceScore");
         Object repairScoreObj = statistics.get("repairScore");
-        
+
         double maintenanceScore = maintenanceScoreObj != null ? ((Number) maintenanceScoreObj).doubleValue() : 0.0;
         double repairScore = repairScoreObj != null ? ((Number) repairScoreObj).doubleValue() : 0.0;
-        
+
         return maintenanceScore + repairScore;
     }
-    
+
     /**
      * 获取场站内所有用户的工单工分
-     * 
+     *
      * @param deptId 场站ID
      * @return 场站内所有用户的工单工分列表
      */
@@ -403,10 +403,10 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
         }
         return result;
     }
-    
+
     /**
      * 获取场站内所有用户ID
-     * 
+     *
      * @param deptId 场站ID
      * @return 场站内所有用户ID列表
      */
@@ -414,7 +414,7 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
         if (deptId == null) {
             return new ArrayList<>(); // 返回空列表而不是null
         }
-        
+
         SysUser user = new SysUser();
         user.setDeptId(deptId);
         List<SysUser> sysUsers = userMapper.selectUserListByDeptId(user);
@@ -428,10 +428,10 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
         }
         return userIds;
     }
-    
+
     /**
      * 保存自评信息
-     * 
+     *
      * @param orderScoreInfo 工单评分信息
      * @return 结果
      */
@@ -446,7 +446,7 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
                 order.setMaintenanceType(orderScoreInfo.getMaintenanceType());
                 order.setContent(orderScoreInfo.getWorkSummary());
                 order.setScoringStatus("to_re"); // 提交自评后状态改为待复评
-                
+
                 // 计算自评总分并设置到工单对象
                 if (orderScoreInfo.getScorePersonList() != null) {
                     double totalScore = orderScoreInfo.getScorePersonList().stream()
@@ -454,10 +454,10 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
                             .sum();
                     order.setScore(new BigDecimal(String.valueOf(totalScore)));
                 }
-                
+
                 // 更新工单信息
                 int result = gxtRepairOrderService.updateGxtRepairOrderForScore(order);
-                
+
                 // 更新人员评分信息
                 if (orderScoreInfo.getScorePersonList() != null) {
                     List<GxtRepairOrderPerson> personList = new ArrayList<>();
@@ -470,7 +470,7 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
                     }
                     gxtRepairOrderService.updateRepairOrderPersonList(personList);
                 }
-                
+
                 return result;
             } else if (orderScoreInfo.getOrderType() == 2) {
                 // 维保工单自评
@@ -483,7 +483,7 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
                 order.setItemCompletionFactor(orderScoreInfo.getItemCompletionFactor());
                 order.setItemCompletionFactorSum(orderScoreInfo.getItemCompletionFactorSum());
                 order.setScoringStatus("to_re"); // 提交自评后状态改为待复评
-                
+
                 // 计算自评总分并设置到工单对象
                 if (orderScoreInfo.getScorePersonList() != null) {
                     double totalScore = orderScoreInfo.getScorePersonList().stream()
@@ -491,10 +491,10 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
                             .sum();
                     order.setScore(new BigDecimal(String.valueOf(totalScore)));
                 }
-                
+
                 // 更新工单信息
                 int result = gxtWorkOrderService.updateGxtWorkOrderForScore(order);
-                
+
                 // 更新人员评分信息
                 if (orderScoreInfo.getScorePersonList() != null) {
                     List<GxtWorkOrderPerson> personList = new ArrayList<>();
@@ -507,7 +507,7 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
                     }
                     gxtWorkOrderService.updateWorkOrderPersonList(personList);
                 }
-                
+
                 return result;
             }
             return 0;
@@ -515,10 +515,10 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
             throw new RuntimeException("保存自评信息失败:" + e.getMessage(), e);
         }
     }
-    
+
     /**
      * 保存复评信息
-     * 
+     *
      * @param orderScoreInfo 工单评分信息
      * @return 结果
      */
@@ -538,7 +538,7 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
                 }else if(orderScoreInfo.getReviewScoreNum() == 2){
                     order.setScoringStatus("to_final");
                 }
-                
+
                 // 计算复评总分并设置到工单对象
                 if (orderScoreInfo.getScorePersonList() != null) {
                     double totalScore = orderScoreInfo.getScorePersonList().stream()
@@ -546,10 +546,10 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
                             .sum();
                     order.setScore(new BigDecimal(String.valueOf(totalScore)));
                 }
-                
+
                 // 更新工单信息
                 int result = gxtRepairOrderService.updateGxtRepairOrderForScore(order);
-                
+
                 // 更新人员评分信息
                 if (orderScoreInfo.getScorePersonList() != null) {
                     List<GxtRepairOrderPerson> personList = new ArrayList<>();
@@ -561,7 +561,7 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
                     }
                     gxtRepairOrderService.updateRepairOrderPersonList(personList);
                 }
-                
+
                 return result;
             } else if (orderScoreInfo.getOrderType() == 2) {
                 // 维保工单复评
@@ -575,7 +575,7 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
                 }else if(orderScoreInfo.getReviewScoreNum() == 2){
                     order.setScoringStatus("to_final");
                 }
-                
+
                 // 计算复评总分并设置到工单对象
                 if (orderScoreInfo.getScorePersonList() != null) {
                     double totalScore = orderScoreInfo.getScorePersonList().stream()
@@ -583,10 +583,10 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
                             .sum();
                     order.setScore(new BigDecimal(String.valueOf(totalScore)));
                 }
-                
+
                 // 更新工单信息
                 int result = gxtWorkOrderService.updateGxtWorkOrderForScore(order);
-                
+
                 // 更新人员评分信息
                 if (orderScoreInfo.getScorePersonList() != null) {
                     List<GxtWorkOrderPerson> personList = new ArrayList<>();
@@ -598,7 +598,7 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
                     }
                     gxtWorkOrderService.updateWorkOrderPersonList(personList);
                 }
-                
+
                 return result;
             }
             return 0;
@@ -606,10 +606,10 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
             throw new RuntimeException("保存复评信息失败:" + e.getMessage(), e);
         }
     }
-    
+
     /**
      * 保存终评信息
-     * 
+     *
      * @param orderScoreInfo 工单评分信息
      * @return 结果
      */
@@ -641,7 +641,7 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
                     order.setScoringStatus("to_archive");
                 }
                 order.setFinalCoefficient(orderScoreInfo.getFinalCoefficient());
-                
+
                 // 计算终评总分并设置到工单对象
                 if (orderScoreInfo.getScorePersonList() != null) {
                     double totalScore = orderScoreInfo.getScorePersonList().stream()
@@ -649,7 +649,7 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
                             .sum();
                     order.setScore(new BigDecimal(String.valueOf(totalScore)));
                 }
-                
+
                 gxtRepairOrderService.updateGxtRepairOrderForScore(order);
 
                 if("archived".equals(order.getWorkOrderStatus())){
@@ -666,7 +666,7 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
                     flow.setActionRemark("系统自动归档工单");
                     repairOrderFlowService.insertGxtRepairOrderFlow(flow);
                 }
-                
+
                 return 1;
             } else if (orderScoreInfo.getOrderType() == 2) {
                 // 维保工单终评
@@ -692,7 +692,7 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
                     order.setScoringStatus("to_archive");
                 }
                 order.setFinalCoefficient(orderScoreInfo.getFinalCoefficient());
-                
+
                 // 计算终评总分并设置到工单对象
                 if (orderScoreInfo.getScorePersonList() != null) {
                     double totalScore = orderScoreInfo.getScorePersonList().stream()
@@ -700,7 +700,7 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
                             .sum();
                     order.setScore(new BigDecimal(String.valueOf(totalScore)));
                 }
-                
+
                 gxtWorkOrderService.updateGxtWorkOrderForScore(order);
                 if("archived".equals(order.getWorkOrderStatus())){
                     // 添加归档流程记录
@@ -723,10 +723,10 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
             throw new RuntimeException("保存终评信息失败:" + e.getMessage(), e);
         }
     }
-    
+
     /**
      * 保存确认信息
-     * 
+     *
      * @param orderScoreInfo 工单评分信息
      * @return 结果
      */
@@ -736,15 +736,15 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
         try {
             // 获取当前登录用户ID
             Long currentUserId = SecurityUtils.getUserId();
-            
+
             if (orderScoreInfo.getOrderType() == 1) {
                 // 维修工单确认
                 GxtRepairOrder order = new GxtRepairOrder();
                 order.setId(orderScoreInfo.getId());
-                
+
                 // 更新工单信息
                 int result = gxtRepairOrderService.updateGxtRepairOrderForScore(order);
-                
+
                 // 只更新当前登录用户的确认状态和反馈理由
                 if (orderScoreInfo.getScorePersonList() != null) {
                     List<GxtRepairOrderPerson> personList = new ArrayList<>();
@@ -763,7 +763,7 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
                         gxtRepairOrderService.updateRepairOrderPersonList(personList);
                     }
                 }
-                
+
                 // 根据所有用户的确认状态更新工单的评分状态
                 List<GxtRepairOrderPerson> allPersons = gxtRepairOrderService.selectRepairOrderPersonListByOrderId(orderScoreInfo.getId());
                 String scoringStatus = determineScoringStatus(allPersons);
@@ -773,16 +773,16 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
                     statusOrder.setScoringStatus(scoringStatus);
                     gxtRepairOrderService.updateGxtRepairOrderForScore(statusOrder);
                 }
-                
+
                 return result;
             } else if (orderScoreInfo.getOrderType() == 2) {
                 // 维保工单确认
                 GxtWorkOrder order = new GxtWorkOrder();
                 order.setId(orderScoreInfo.getId());
-                
+
                 // 更新工单信息
                 int result = gxtWorkOrderService.updateGxtWorkOrderForScore(order);
-                
+
                 // 只更新当前登录用户的确认状态和反馈理由
                 if (orderScoreInfo.getScorePersonList() != null) {
                     List<GxtWorkOrderPerson> personList = new ArrayList<>();
@@ -801,7 +801,7 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
                         gxtWorkOrderService.updateWorkOrderPersonList(personList);
                     }
                 }
-                
+
                 // 根据所有用户的确认状态更新工单的评分状态
                 List<GxtWorkOrderPerson> allPersons = gxtWorkOrderService.selectWorkOrderPersonListByOrderId(orderScoreInfo.getId());
                 String scoringStatus = determineScoringStatus(allPersons);
@@ -811,7 +811,7 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
                     statusOrder.setScoringStatus(scoringStatus);
                     gxtWorkOrderService.updateGxtWorkOrderForScore(statusOrder);
                 }
-                
+
                 return result;
             }
             return 0;
@@ -822,43 +822,38 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
 
     @Override
     public List<OrderScoreInfo> selectMobileUnionOrderList(GxtRepairOrder repairOrder, GxtWorkOrder workOrder, String keyword) {
-        // 添加业务特定的数据权限过滤
-        addBusinessDataScopeFilter(repairOrder, workOrder);
+        return selectMobileUnionOrderList(null, repairOrder, workOrder, keyword);
+    }
 
+    @Override
+    public List<OrderScoreInfo> selectMobileUnionOrderList(Long userId, GxtRepairOrder repairOrder, GxtWorkOrder workOrder, String keyword) {
+       String userName = "";
+       if(userId != null){
+           SysUser sysUser = userMapper.selectUserById(userId);
+           userName = sysUser.getUserName();
+           addBusinessDataScopeFilter(sysUser, repairOrder, workOrder);
+       }else{
+           addBusinessDataScopeFilter(repairOrder, workOrder);
+           userName = SecurityUtils.getUsername();
+       }
+        // 添加业务特定的数据权限过滤
         // 设置创建人,用于数据权限过滤
-        if(!Constants.SUPER_ADMIN.equals(SecurityUtils.getUsername())){
+        if(!Constants.SUPER_ADMIN.equals(userName)){
             if (repairOrder.getCreateBy() == null || repairOrder.getCreateBy().isEmpty()) {
-                repairOrder.setCreateBy(SecurityUtils.getUsername());
+                repairOrder.setCreateBy(userName);
             }
-
             if (workOrder.getCreateBy() == null || workOrder.getCreateBy().isEmpty()) {
-                workOrder.setCreateBy(SecurityUtils.getUsername());
+                workOrder.setCreateBy(userName);
             }
         }
         // 查询工单列表
-        List<OrderScoreInfo> orderList = gxtOrderScoreMapper.selectMobileUnionOrderList(repairOrder, workOrder,keyword);
-        return orderList;
+        return gxtOrderScoreMapper.selectMobileUnionOrderList(repairOrder, workOrder,keyword);
     }
 
-    /**
-     * 添加业务特定的数据权限过滤条件
-     * 基于角色的数据范围进行自定义权限控制
-     *
-     * @param repairOrder 维修工单查询条件
-     * @param workOrder 维保工单查询条件
-     */
-    private void addBusinessDataScopeFilter(GxtRepairOrder repairOrder, GxtWorkOrder workOrder) {
-        // 获取当前登录用户
-        LoginUser loginUser = SecurityUtils.getLoginUser();
-        if (loginUser == null) {
-            return;
-        }
-
-        SysUser currentUser = loginUser.getUser();
+    private void addBusinessDataScopeFilter(SysUser currentUser, GxtRepairOrder repairOrder, GxtWorkOrder workOrder) {
         if (currentUser == null) {
             return;
         }
-
         // 如果是超级管理员,不过滤数据
         if (currentUser.isAdmin()) {
             return;
@@ -1100,10 +1095,25 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
             repairOrder.getParams().put("businessDataScope", businessDataScopeSql);
         }
     }
-    
+        /**
+         * 添加业务特定的数据权限过滤条件
+         * 基于角色的数据范围进行自定义权限控制
+         *
+         * @param repairOrder 维修工单查询条件
+         * @param workOrder 维保工单查询条件
+         */
+    private void addBusinessDataScopeFilter(GxtRepairOrder repairOrder, GxtWorkOrder workOrder) {
+        // 获取当前登录用户
+        LoginUser loginUser = SecurityUtils.getLoginUser();
+        if(loginUser == null){
+            return;
+        }
+        addBusinessDataScopeFilter(loginUser.getUser(), repairOrder, workOrder);
+    }
+
     /**
      * 根据所有用户的确认状态确定工单的评分状态
-     * 
+     *
      * @param persons 所有工单参与人员
      * @return 评分状态
      */
@@ -1111,15 +1121,15 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
         if (persons == null || persons.isEmpty()) {
             return null;
         }
-        
+
         boolean allConfirmed = true;  // 所有用户都已确认
         boolean hasFeedback = false;  // 存在反馈的用户
         int validUserCount = 0;       // 有效用户数量(userId不为空的用户)
-        
+
         for (Object obj : persons) {
             Long userId = null;
             Integer confirmStatus = null;
-            
+
             if (obj instanceof GxtRepairOrderPerson) {
                 userId = ((GxtRepairOrderPerson) obj).getUserId();
                 confirmStatus = ((GxtRepairOrderPerson) obj).getConfirmStatus();
@@ -1127,15 +1137,15 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
                 userId = ((GxtWorkOrderPerson) obj).getUserId();
                 confirmStatus = ((GxtWorkOrderPerson) obj).getConfirmStatus();
             }
-            
+
             // 如果userId为空,则不计入统计
             if (userId == null) {
                 continue;
             }
-            
+
             // 增加有效用户计数
             validUserCount++;
-            
+
             // 如果有任何用户的确认状态为空或为0(未确认),则不是全部确认
             if (confirmStatus == null || confirmStatus == 0) {
                 allConfirmed = false;
@@ -1145,12 +1155,12 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
                 hasFeedback = true;
             }
         }
-        
+
         // 如果没有有效用户,保持当前状态不变
         if (validUserCount == 0) {
             return null;
         }
-        
+
         // 如果所有用户都已确认
         if (allConfirmed) {
             // 如果存在反馈,则状态改为待复评
@@ -1165,10 +1175,10 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
         // 如果不是所有用户都已确认,保持当前状态不变
         return null;
     }
-    
+
     /**
      * 根据月份筛选工单列表
-     * 
+     *
      * @param orderList 工单列表
      * @param month 月份(格式:yyyy-MM)
      * @return 筛选后的工单列表
@@ -1177,7 +1187,7 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
         if (orderList == null || orderList.isEmpty() || month == null || month.isEmpty()) {
             return orderList;
         }
-        
+
         List<OrderScoreInfo> filteredOrders = new ArrayList<>();
         for (OrderScoreInfo order : orderList) {
             // 检查工单的完成时间是否在指定月份
@@ -1193,12 +1203,12 @@ public class GxtOrderScoreServiceImpl implements IGxtOrderScoreService {
                     matchMonth = month.equals(orderMonth);
                 }
             }
-            
+
             if (matchMonth) {
                 filteredOrders.add(order);
             }
         }
-        
+
         return filteredOrders;
     }
-}
+}