|
|
@@ -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;
|
|
|
}
|
|
|
-}
|
|
|
+}
|