修复了用户绩效汇总模块的全部bug
This commit is contained in:
@ -327,10 +327,10 @@ public class UserPerformanceSummaryController {
|
||||
.nickName(userInfo.getNickName())
|
||||
.phoneNumber(userInfo.getPhoneNumber())
|
||||
.empCount(userPerformanceSummary.getEmpCount())
|
||||
.orderCount(supervisorOrderCntMap.get(userId))
|
||||
.totalAmount(supervisorOrderAmountMap.get(userId))
|
||||
.netAmount(supervisorNetSalesAmountMap.get(userId))
|
||||
.promoCount(supervisorCntMap.get(userId))
|
||||
.orderCount(supervisorOrderCntMap.get(userId) == null ? 0 : supervisorOrderCntMap.get(userId))
|
||||
.totalAmount(supervisorOrderAmountMap.get(userId) == null ? BigDecimal.ZERO : supervisorOrderAmountMap.get(userId))
|
||||
.netAmount(supervisorNetSalesAmountMap.get(userId) == null ? BigDecimal.ZERO : supervisorNetSalesAmountMap.get(userId))
|
||||
.promoCount(supervisorCntMap.get(userId) == null ? 0 : supervisorCntMap.get(userId))
|
||||
.build();
|
||||
supervisorPerformanceSummaryVOS.add(supervisorPerformanceSummaryVO);
|
||||
}
|
||||
@ -415,10 +415,10 @@ public class UserPerformanceSummaryController {
|
||||
.nickName(userInfo.getNickName())
|
||||
.phoneNumber(userInfo.getPhoneNumber())
|
||||
.empCount(userPerformanceSummary.getEmpCount())
|
||||
.orderCount(staffOrderCntMap.get(userId))
|
||||
.totalAmount(staffOrderAmountMap.get(userId))
|
||||
.netAmount(staffNetSalesAmountMap.get(userId))
|
||||
.promoCount(staffCntMap.get(userId))
|
||||
.orderCount(staffOrderCntMap.get(userId) == null ? 0 : staffOrderCntMap.get(userId))
|
||||
.totalAmount(staffOrderAmountMap.get(userId) == null ? BigDecimal.ZERO : staffOrderAmountMap.get(userId))
|
||||
.netAmount(staffNetSalesAmountMap.get(userId) == null ? BigDecimal.ZERO : staffNetSalesAmountMap.get(userId))
|
||||
.promoCount(staffCntMap.get(userId) == null ? 0 : staffCntMap.get(userId))
|
||||
.build();
|
||||
supervisorPerformanceSummaryVOS.add(supervisorPerformanceSummaryVO);
|
||||
}
|
||||
@ -538,12 +538,12 @@ public class UserPerformanceSummaryController {
|
||||
|
||||
|
||||
/**
|
||||
* 小程序端查询主管绩效汇总
|
||||
* 小程序端经理查询主管绩效汇总
|
||||
* @param miniUserPerformanceSummaryQueryRequest 主管绩效汇总查询请求体
|
||||
* @return 用户绩效汇总列表
|
||||
*/
|
||||
@PostMapping("query/supervisor")
|
||||
@Operation(summary = "小程序端用户根据主管id查询员工绩效汇总", description = "参数:主管绩效汇总查询请求体,权限:管理员,方法名:miniListPerformanceSummary")
|
||||
@Operation(summary = "小程序端经理查询主管绩效汇总", description = "参数:主管绩效汇总查询请求体,权限:管理员,方法名:miniListPerformanceSummary")
|
||||
@RequiresPermission(mustRole = UserConstant.MANAGER_ROLE)
|
||||
public BaseResponse<List<UserPerformanceSummaryDetailVO>> miniListPerformanceSummary(@Valid @RequestBody MiniUserPerformanceSummaryQueryRequest miniUserPerformanceSummaryQueryRequest) {
|
||||
String nickName = miniUserPerformanceSummaryQueryRequest.getNickName();
|
||||
@ -746,10 +746,10 @@ public class UserPerformanceSummaryController {
|
||||
.nickName(userInfo.getNickName())
|
||||
.phoneNumber(userInfo.getPhoneNumber())
|
||||
.empCount(userPerformanceSummary.getEmpCount())
|
||||
.orderCount(supervisorOrderCntMap.get(userId))
|
||||
.totalAmount(supervisorOrderAmountMap.get(userId))
|
||||
.netAmount(supervisorNetSalesAmountMap.get(userId))
|
||||
.promoCount(supervisorCntMap.get(userId))
|
||||
.orderCount(supervisorOrderCntMap.get(userId) == null ? 0 : supervisorOrderCntMap.get(userId))
|
||||
.totalAmount(supervisorOrderAmountMap.get(userId) == null ? BigDecimal.ZERO : supervisorOrderAmountMap.get(userId))
|
||||
.netAmount(supervisorNetSalesAmountMap.get(userId) == null ? BigDecimal.ZERO : supervisorNetSalesAmountMap.get(userId))
|
||||
.promoCount(supervisorCntMap.get(userId) == null ? 0 : supervisorCntMap.get(userId))
|
||||
.build();
|
||||
supervisorPerformanceSummaryVOS.add(supervisorPerformanceSummaryVO);
|
||||
}
|
||||
@ -762,15 +762,17 @@ public class UserPerformanceSummaryController {
|
||||
|
||||
/**
|
||||
* 小程序端主管查询员工绩效排名
|
||||
* @param userPerformanceSummaryRankQueryRequest 绩效排名查询请求体
|
||||
* @param miniUserPerformanceSummaryRankQueryRequest 绩效排名查询请求体
|
||||
* @return 用户绩效汇总列表
|
||||
*/
|
||||
@PostMapping("rank/staff")
|
||||
@Operation(summary = "小程序端主管查询员工绩效排名", description = "参数:绩效排名查询请求体,权限:管理员,方法名:miniListStaffUserPerformanceSummaryRankingsByPage")
|
||||
@RequiresPermission(mustRole = UserConstant.SUPERVISOR_ROLE)
|
||||
public BaseResponse<List<SupervisorPerformanceSummaryVO>> miniListStaffUserPerformanceSummaryRankingsByPage(@Valid @RequestBody UserPerformanceSummaryRankQueryRequest userPerformanceSummaryRankQueryRequest) {
|
||||
String startTimeStr = userPerformanceSummaryRankQueryRequest.getStartDate();
|
||||
String endTimeStr = userPerformanceSummaryRankQueryRequest.getEndDate();
|
||||
public BaseResponse<List<SupervisorPerformanceSummaryVO>> miniListStaffUserPerformanceSummaryRankingsByPage(@Valid @RequestBody MiniUserPerformanceSummaryRankQueryRequest miniUserPerformanceSummaryRankQueryRequest) {
|
||||
String startTimeStr = miniUserPerformanceSummaryRankQueryRequest.getStartDate();
|
||||
String endTimeStr = miniUserPerformanceSummaryRankQueryRequest.getEndDate();
|
||||
String nickName = miniUserPerformanceSummaryRankQueryRequest.getNickName();
|
||||
String phoneNumber = miniUserPerformanceSummaryRankQueryRequest.getPhoneNumber();
|
||||
DateTime startDate = null;
|
||||
DateTime endDate = null;
|
||||
boolean isAddDate = true;
|
||||
@ -818,7 +820,11 @@ public class UserPerformanceSummaryController {
|
||||
}
|
||||
staffNetSalesAmountMap.merge(secondUserId, totalAmount, BigDecimal::add);
|
||||
}
|
||||
List<UserInfo> userInfoList = commonService.findByFieldEqTargetField(UserInfo::getUserRole, UserConstant.STAFF_ROLE, userInfoService);
|
||||
LambdaQueryWrapper<UserInfo> userInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
userInfoLambdaQueryWrapper.eq(StringUtils.isNotBlank(nickName), UserInfo::getNickName, nickName)
|
||||
.eq(StringUtils.isNotBlank(phoneNumber), UserInfo::getPhoneNumber, phoneNumber)
|
||||
.eq(UserInfo::getUserRole, UserConstant.STAFF_ROLE);
|
||||
List<UserInfo> userInfoList = userInfoService.list(userInfoLambdaQueryWrapper);
|
||||
List<UserPerformanceSummary> userPerformanceSummaryList = commonService.findByFieldInTargetField(userInfoList, userPerformanceSummaryService, UserInfo::getId, UserPerformanceSummary::getUserId);
|
||||
|
||||
// 封装Map集合(键:主管id, 用户信息)
|
||||
@ -827,7 +833,7 @@ public class UserPerformanceSummaryController {
|
||||
userInfoMap.put(userInfo.getId(), userInfo);
|
||||
}
|
||||
|
||||
// 封装主管绩效排名列表
|
||||
// 封装员工绩效排名列表
|
||||
List<SupervisorPerformanceSummaryVO> supervisorPerformanceSummaryVOS = new ArrayList<>();
|
||||
for (UserPerformanceSummary userPerformanceSummary : userPerformanceSummaryList) {
|
||||
Long userId = userPerformanceSummary.getUserId();
|
||||
@ -836,13 +842,15 @@ public class UserPerformanceSummaryController {
|
||||
.nickName(userInfo.getNickName())
|
||||
.phoneNumber(userInfo.getPhoneNumber())
|
||||
.empCount(userPerformanceSummary.getEmpCount())
|
||||
.orderCount(staffOrderCntMap.get(userId))
|
||||
.totalAmount(staffOrderAmountMap.get(userId))
|
||||
.netAmount(staffNetSalesAmountMap.get(userId))
|
||||
.promoCount(staffCntMap.get(userId))
|
||||
.orderCount(staffOrderCntMap.get(userId) == null ? 0 : staffOrderCntMap.get(userId))
|
||||
.totalAmount(staffOrderAmountMap.get(userId) == null ? BigDecimal.ZERO : staffOrderAmountMap.get(userId))
|
||||
.netAmount(staffNetSalesAmountMap.get(userId) == null ? BigDecimal.ZERO : staffNetSalesAmountMap.get(userId))
|
||||
.promoCount(staffCntMap.get(userId) == null ? 0 : staffCntMap.get(userId))
|
||||
.build();
|
||||
supervisorPerformanceSummaryVOS.add(supervisorPerformanceSummaryVO);
|
||||
}
|
||||
userPerformanceSummaryService.sortPerformanceRankingList(supervisorPerformanceSummaryVOS, miniUserPerformanceSummaryRankQueryRequest);
|
||||
|
||||
return ResultUtils.success(supervisorPerformanceSummaryVOS);
|
||||
}
|
||||
|
||||
|
@ -183,31 +183,26 @@ public class UserPerformanceSummaryServiceImpl extends ServiceImpl<UserPerforman
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public void sortPerformanceRankingList(List<SupervisorPerformanceSummaryVO> supervisorPerformanceSummaryVOS, MiniUserPerformanceSummaryRankQueryRequest request) {
|
||||
/**
|
||||
* 将集合根据不同属性进行排序
|
||||
*/
|
||||
public void sortPerformanceRankingList(List<SupervisorPerformanceSummaryVO> supervisorPerformanceSummaryVOS, MiniUserPerformanceSummaryRankQueryRequest miniUserPerformanceSummaryRankQueryRequest) {
|
||||
if (supervisorPerformanceSummaryVOS == null || supervisorPerformanceSummaryVOS.isEmpty()) {
|
||||
return; // 如果列表为空,不进行排序
|
||||
}
|
||||
|
||||
String sortField = request.getSortField();
|
||||
String sortOrder = request.getSortOrder();
|
||||
|
||||
// 检查 sortField 是否有效,如果无效则不进行排序
|
||||
if (!SqlUtils.validSortField(sortField)) {
|
||||
System.out.println("Invalid sort field: " + sortField);
|
||||
return; // 如果 sortField 无效,不进行排序
|
||||
}
|
||||
|
||||
// 创建一个 Comparator,根据 sortField 和 sortOrder 排序
|
||||
String sortField = miniUserPerformanceSummaryRankQueryRequest.getSortField();
|
||||
String sortOrder = miniUserPerformanceSummaryRankQueryRequest.getSortOrder();
|
||||
Comparator<SupervisorPerformanceSummaryVO> comparator = getComparatorForSortField(sortField);
|
||||
|
||||
if (comparator == null) {
|
||||
return; // 如果没有匹配的字段,跳过排序
|
||||
return; // 如果没有有效的排序字段,跳过排序
|
||||
}
|
||||
|
||||
// 判断排序方向
|
||||
// 判断排序顺序(升序或降序)
|
||||
if (CommonConstant.SORT_ORDER_DESC.equalsIgnoreCase(sortOrder)) {
|
||||
comparator = comparator.reversed(); // 降序
|
||||
comparator = comparator.reversed(); // 如果是降序,反转 comparator
|
||||
}
|
||||
|
||||
// 执行排序
|
||||
@ -215,21 +210,17 @@ public class UserPerformanceSummaryServiceImpl extends ServiceImpl<UserPerforman
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 根据 sortField 获取对应的 Comparator
|
||||
*/
|
||||
private Comparator<SupervisorPerformanceSummaryVO> getComparatorForSortField(String sortField) {
|
||||
// 定义一个Map,将字段名与其对应的比较器关联起来
|
||||
Map<String, Comparator<SupervisorPerformanceSummaryVO>> comparatorMap = Map.of(
|
||||
"empCount", Comparator.comparing(SupervisorPerformanceSummaryVO::getEmpCount, Comparator.nullsLast(Comparator.naturalOrder())),
|
||||
"promoCount", Comparator.comparing(SupervisorPerformanceSummaryVO::getPromoCount, Comparator.nullsLast(Comparator.naturalOrder())),
|
||||
"orderCount", Comparator.comparing(SupervisorPerformanceSummaryVO::getOrderCount, Comparator.nullsLast(Comparator.naturalOrder())),
|
||||
"totalAmount", Comparator.comparing(SupervisorPerformanceSummaryVO::getTotalAmount, Comparator.nullsLast(Comparator.naturalOrder())),
|
||||
"netAmount", Comparator.comparing(SupervisorPerformanceSummaryVO::getNetAmount, Comparator.nullsLast(Comparator.naturalOrder()))
|
||||
);
|
||||
|
||||
// 返回对应字段的比较器,如果没有匹配的字段,则返回null
|
||||
return comparatorMap.get(sortField);
|
||||
// 根据 sortField 返回对应的 Comparator
|
||||
private static Comparator<SupervisorPerformanceSummaryVO> getComparatorForSortField(String sortField) {
|
||||
return switch (sortField) {
|
||||
case "empCount" -> Comparator.comparing(SupervisorPerformanceSummaryVO::getEmpCount);
|
||||
case "promoCount" -> Comparator.comparing(SupervisorPerformanceSummaryVO::getPromoCount);
|
||||
case "orderCount" -> Comparator.comparing(SupervisorPerformanceSummaryVO::getOrderCount);
|
||||
case "totalAmount" -> Comparator.comparing(SupervisorPerformanceSummaryVO::getTotalAmount);
|
||||
case "netAmount" -> Comparator.comparing(SupervisorPerformanceSummaryVO::getNetAmount);
|
||||
default -> null; // 无效的排序字段
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user