修复了用户绩效汇总模块的全部bug
This commit is contained in:
@ -13,6 +13,6 @@ public interface CommonConstant {
|
|||||||
/**
|
/**
|
||||||
* 降序
|
* 降序
|
||||||
*/
|
*/
|
||||||
String SORT_ORDER_DESC = " descend";
|
String SORT_ORDER_DESC = "descend";
|
||||||
|
|
||||||
}
|
}
|
@ -327,10 +327,10 @@ public class UserPerformanceSummaryController {
|
|||||||
.nickName(userInfo.getNickName())
|
.nickName(userInfo.getNickName())
|
||||||
.phoneNumber(userInfo.getPhoneNumber())
|
.phoneNumber(userInfo.getPhoneNumber())
|
||||||
.empCount(userPerformanceSummary.getEmpCount())
|
.empCount(userPerformanceSummary.getEmpCount())
|
||||||
.orderCount(supervisorOrderCntMap.get(userId))
|
.orderCount(supervisorOrderCntMap.get(userId) == null ? 0 : supervisorOrderCntMap.get(userId))
|
||||||
.totalAmount(supervisorOrderAmountMap.get(userId))
|
.totalAmount(supervisorOrderAmountMap.get(userId) == null ? BigDecimal.ZERO : supervisorOrderAmountMap.get(userId))
|
||||||
.netAmount(supervisorNetSalesAmountMap.get(userId))
|
.netAmount(supervisorNetSalesAmountMap.get(userId) == null ? BigDecimal.ZERO : supervisorNetSalesAmountMap.get(userId))
|
||||||
.promoCount(supervisorCntMap.get(userId))
|
.promoCount(supervisorCntMap.get(userId) == null ? 0 : supervisorCntMap.get(userId))
|
||||||
.build();
|
.build();
|
||||||
supervisorPerformanceSummaryVOS.add(supervisorPerformanceSummaryVO);
|
supervisorPerformanceSummaryVOS.add(supervisorPerformanceSummaryVO);
|
||||||
}
|
}
|
||||||
@ -415,10 +415,10 @@ public class UserPerformanceSummaryController {
|
|||||||
.nickName(userInfo.getNickName())
|
.nickName(userInfo.getNickName())
|
||||||
.phoneNumber(userInfo.getPhoneNumber())
|
.phoneNumber(userInfo.getPhoneNumber())
|
||||||
.empCount(userPerformanceSummary.getEmpCount())
|
.empCount(userPerformanceSummary.getEmpCount())
|
||||||
.orderCount(staffOrderCntMap.get(userId))
|
.orderCount(staffOrderCntMap.get(userId) == null ? 0 : staffOrderCntMap.get(userId))
|
||||||
.totalAmount(staffOrderAmountMap.get(userId))
|
.totalAmount(staffOrderAmountMap.get(userId) == null ? BigDecimal.ZERO : staffOrderAmountMap.get(userId))
|
||||||
.netAmount(staffNetSalesAmountMap.get(userId))
|
.netAmount(staffNetSalesAmountMap.get(userId) == null ? BigDecimal.ZERO : staffNetSalesAmountMap.get(userId))
|
||||||
.promoCount(staffCntMap.get(userId))
|
.promoCount(staffCntMap.get(userId) == null ? 0 : staffCntMap.get(userId))
|
||||||
.build();
|
.build();
|
||||||
supervisorPerformanceSummaryVOS.add(supervisorPerformanceSummaryVO);
|
supervisorPerformanceSummaryVOS.add(supervisorPerformanceSummaryVO);
|
||||||
}
|
}
|
||||||
@ -538,12 +538,12 @@ public class UserPerformanceSummaryController {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 小程序端查询主管绩效汇总
|
* 小程序端经理查询主管绩效汇总
|
||||||
* @param miniUserPerformanceSummaryQueryRequest 主管绩效汇总查询请求体
|
* @param miniUserPerformanceSummaryQueryRequest 主管绩效汇总查询请求体
|
||||||
* @return 用户绩效汇总列表
|
* @return 用户绩效汇总列表
|
||||||
*/
|
*/
|
||||||
@PostMapping("query/supervisor")
|
@PostMapping("query/supervisor")
|
||||||
@Operation(summary = "小程序端用户根据主管id查询员工绩效汇总", description = "参数:主管绩效汇总查询请求体,权限:管理员,方法名:miniListPerformanceSummary")
|
@Operation(summary = "小程序端经理查询主管绩效汇总", description = "参数:主管绩效汇总查询请求体,权限:管理员,方法名:miniListPerformanceSummary")
|
||||||
@RequiresPermission(mustRole = UserConstant.MANAGER_ROLE)
|
@RequiresPermission(mustRole = UserConstant.MANAGER_ROLE)
|
||||||
public BaseResponse<List<UserPerformanceSummaryDetailVO>> miniListPerformanceSummary(@Valid @RequestBody MiniUserPerformanceSummaryQueryRequest miniUserPerformanceSummaryQueryRequest) {
|
public BaseResponse<List<UserPerformanceSummaryDetailVO>> miniListPerformanceSummary(@Valid @RequestBody MiniUserPerformanceSummaryQueryRequest miniUserPerformanceSummaryQueryRequest) {
|
||||||
String nickName = miniUserPerformanceSummaryQueryRequest.getNickName();
|
String nickName = miniUserPerformanceSummaryQueryRequest.getNickName();
|
||||||
@ -746,10 +746,10 @@ public class UserPerformanceSummaryController {
|
|||||||
.nickName(userInfo.getNickName())
|
.nickName(userInfo.getNickName())
|
||||||
.phoneNumber(userInfo.getPhoneNumber())
|
.phoneNumber(userInfo.getPhoneNumber())
|
||||||
.empCount(userPerformanceSummary.getEmpCount())
|
.empCount(userPerformanceSummary.getEmpCount())
|
||||||
.orderCount(supervisorOrderCntMap.get(userId))
|
.orderCount(supervisorOrderCntMap.get(userId) == null ? 0 : supervisorOrderCntMap.get(userId))
|
||||||
.totalAmount(supervisorOrderAmountMap.get(userId))
|
.totalAmount(supervisorOrderAmountMap.get(userId) == null ? BigDecimal.ZERO : supervisorOrderAmountMap.get(userId))
|
||||||
.netAmount(supervisorNetSalesAmountMap.get(userId))
|
.netAmount(supervisorNetSalesAmountMap.get(userId) == null ? BigDecimal.ZERO : supervisorNetSalesAmountMap.get(userId))
|
||||||
.promoCount(supervisorCntMap.get(userId))
|
.promoCount(supervisorCntMap.get(userId) == null ? 0 : supervisorCntMap.get(userId))
|
||||||
.build();
|
.build();
|
||||||
supervisorPerformanceSummaryVOS.add(supervisorPerformanceSummaryVO);
|
supervisorPerformanceSummaryVOS.add(supervisorPerformanceSummaryVO);
|
||||||
}
|
}
|
||||||
@ -762,15 +762,17 @@ public class UserPerformanceSummaryController {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 小程序端主管查询员工绩效排名
|
* 小程序端主管查询员工绩效排名
|
||||||
* @param userPerformanceSummaryRankQueryRequest 绩效排名查询请求体
|
* @param miniUserPerformanceSummaryRankQueryRequest 绩效排名查询请求体
|
||||||
* @return 用户绩效汇总列表
|
* @return 用户绩效汇总列表
|
||||||
*/
|
*/
|
||||||
@PostMapping("rank/staff")
|
@PostMapping("rank/staff")
|
||||||
@Operation(summary = "小程序端主管查询员工绩效排名", description = "参数:绩效排名查询请求体,权限:管理员,方法名:miniListStaffUserPerformanceSummaryRankingsByPage")
|
@Operation(summary = "小程序端主管查询员工绩效排名", description = "参数:绩效排名查询请求体,权限:管理员,方法名:miniListStaffUserPerformanceSummaryRankingsByPage")
|
||||||
@RequiresPermission(mustRole = UserConstant.SUPERVISOR_ROLE)
|
@RequiresPermission(mustRole = UserConstant.SUPERVISOR_ROLE)
|
||||||
public BaseResponse<List<SupervisorPerformanceSummaryVO>> miniListStaffUserPerformanceSummaryRankingsByPage(@Valid @RequestBody UserPerformanceSummaryRankQueryRequest userPerformanceSummaryRankQueryRequest) {
|
public BaseResponse<List<SupervisorPerformanceSummaryVO>> miniListStaffUserPerformanceSummaryRankingsByPage(@Valid @RequestBody MiniUserPerformanceSummaryRankQueryRequest miniUserPerformanceSummaryRankQueryRequest) {
|
||||||
String startTimeStr = userPerformanceSummaryRankQueryRequest.getStartDate();
|
String startTimeStr = miniUserPerformanceSummaryRankQueryRequest.getStartDate();
|
||||||
String endTimeStr = userPerformanceSummaryRankQueryRequest.getEndDate();
|
String endTimeStr = miniUserPerformanceSummaryRankQueryRequest.getEndDate();
|
||||||
|
String nickName = miniUserPerformanceSummaryRankQueryRequest.getNickName();
|
||||||
|
String phoneNumber = miniUserPerformanceSummaryRankQueryRequest.getPhoneNumber();
|
||||||
DateTime startDate = null;
|
DateTime startDate = null;
|
||||||
DateTime endDate = null;
|
DateTime endDate = null;
|
||||||
boolean isAddDate = true;
|
boolean isAddDate = true;
|
||||||
@ -818,7 +820,11 @@ public class UserPerformanceSummaryController {
|
|||||||
}
|
}
|
||||||
staffNetSalesAmountMap.merge(secondUserId, totalAmount, BigDecimal::add);
|
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);
|
List<UserPerformanceSummary> userPerformanceSummaryList = commonService.findByFieldInTargetField(userInfoList, userPerformanceSummaryService, UserInfo::getId, UserPerformanceSummary::getUserId);
|
||||||
|
|
||||||
// 封装Map集合(键:主管id, 用户信息)
|
// 封装Map集合(键:主管id, 用户信息)
|
||||||
@ -827,7 +833,7 @@ public class UserPerformanceSummaryController {
|
|||||||
userInfoMap.put(userInfo.getId(), userInfo);
|
userInfoMap.put(userInfo.getId(), userInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 封装主管绩效排名列表
|
// 封装员工绩效排名列表
|
||||||
List<SupervisorPerformanceSummaryVO> supervisorPerformanceSummaryVOS = new ArrayList<>();
|
List<SupervisorPerformanceSummaryVO> supervisorPerformanceSummaryVOS = new ArrayList<>();
|
||||||
for (UserPerformanceSummary userPerformanceSummary : userPerformanceSummaryList) {
|
for (UserPerformanceSummary userPerformanceSummary : userPerformanceSummaryList) {
|
||||||
Long userId = userPerformanceSummary.getUserId();
|
Long userId = userPerformanceSummary.getUserId();
|
||||||
@ -836,13 +842,15 @@ public class UserPerformanceSummaryController {
|
|||||||
.nickName(userInfo.getNickName())
|
.nickName(userInfo.getNickName())
|
||||||
.phoneNumber(userInfo.getPhoneNumber())
|
.phoneNumber(userInfo.getPhoneNumber())
|
||||||
.empCount(userPerformanceSummary.getEmpCount())
|
.empCount(userPerformanceSummary.getEmpCount())
|
||||||
.orderCount(staffOrderCntMap.get(userId))
|
.orderCount(staffOrderCntMap.get(userId) == null ? 0 : staffOrderCntMap.get(userId))
|
||||||
.totalAmount(staffOrderAmountMap.get(userId))
|
.totalAmount(staffOrderAmountMap.get(userId) == null ? BigDecimal.ZERO : staffOrderAmountMap.get(userId))
|
||||||
.netAmount(staffNetSalesAmountMap.get(userId))
|
.netAmount(staffNetSalesAmountMap.get(userId) == null ? BigDecimal.ZERO : staffNetSalesAmountMap.get(userId))
|
||||||
.promoCount(staffCntMap.get(userId))
|
.promoCount(staffCntMap.get(userId) == null ? 0 : staffCntMap.get(userId))
|
||||||
.build();
|
.build();
|
||||||
supervisorPerformanceSummaryVOS.add(supervisorPerformanceSummaryVO);
|
supervisorPerformanceSummaryVOS.add(supervisorPerformanceSummaryVO);
|
||||||
}
|
}
|
||||||
|
userPerformanceSummaryService.sortPerformanceRankingList(supervisorPerformanceSummaryVOS, miniUserPerformanceSummaryRankQueryRequest);
|
||||||
|
|
||||||
return ResultUtils.success(supervisorPerformanceSummaryVOS);
|
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()) {
|
if (supervisorPerformanceSummaryVOS == null || supervisorPerformanceSummaryVOS.isEmpty()) {
|
||||||
return; // 如果列表为空,不进行排序
|
return; // 如果列表为空,不进行排序
|
||||||
}
|
}
|
||||||
|
|
||||||
String sortField = request.getSortField();
|
// 创建一个 Comparator,根据 sortField 和 sortOrder 排序
|
||||||
String sortOrder = request.getSortOrder();
|
String sortField = miniUserPerformanceSummaryRankQueryRequest.getSortField();
|
||||||
|
String sortOrder = miniUserPerformanceSummaryRankQueryRequest.getSortOrder();
|
||||||
// 检查 sortField 是否有效,如果无效则不进行排序
|
|
||||||
if (!SqlUtils.validSortField(sortField)) {
|
|
||||||
System.out.println("Invalid sort field: " + sortField);
|
|
||||||
return; // 如果 sortField 无效,不进行排序
|
|
||||||
}
|
|
||||||
|
|
||||||
Comparator<SupervisorPerformanceSummaryVO> comparator = getComparatorForSortField(sortField);
|
Comparator<SupervisorPerformanceSummaryVO> comparator = getComparatorForSortField(sortField);
|
||||||
|
|
||||||
if (comparator == null) {
|
if (comparator == null) {
|
||||||
return; // 如果没有匹配的字段,跳过排序
|
return; // 如果没有有效的排序字段,跳过排序
|
||||||
}
|
}
|
||||||
|
|
||||||
// 判断排序方向
|
// 判断排序顺序(升序或降序)
|
||||||
if (CommonConstant.SORT_ORDER_DESC.equalsIgnoreCase(sortOrder)) {
|
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
|
// 根据 sortField 返回对应的 Comparator
|
||||||
return comparatorMap.get(sortField);
|
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