|
@@ -258,11 +258,16 @@ public class WmPayOffServiceImpl extends ServiceImpl<WmPayOffMapper, WmPayOff> i
|
|
|
|
|
|
// user-taskList map
|
|
|
Map<String, List<WmTask>> userTaskMap = taskList.stream().collect(Collectors.groupingBy(WmTask::getTaskUserId));
|
|
|
+ // taskId-task Map
|
|
|
+ Map<String, WmTask> taskMap = taskList.stream().collect(Collectors.toMap(WmTask::getId, Function.identity()));
|
|
|
|
|
|
// 查询settleNote
|
|
|
List<WmScorePackageSettleNote> notes = noteService.list(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
|
|
|
.in(WmScorePackageSettleNote::getTaskId, Arrays.asList(taskIds))
|
|
|
.eq(WmScorePackageSettleNote::getPackageId, scorePackageId));
|
|
|
+ Map<String, WmScorePackageSettleNote> taskSettleNoteMap = notes.stream()
|
|
|
+ .filter(note -> StrUtil.isNotBlank(note.getTaskId()))
|
|
|
+ .collect(Collectors.toMap(WmScorePackageSettleNote::getTaskId, Function.identity()));
|
|
|
|
|
|
// 查询user
|
|
|
Set<String> allUserIdSet = new HashSet<>();
|
|
@@ -271,56 +276,76 @@ public class WmPayOffServiceImpl extends ServiceImpl<WmPayOffMapper, WmPayOff> i
|
|
|
List<SysUser> sysUsers = sysUserMapper.selectBatchIds(allUserIdSet);
|
|
|
Map<Integer, SysUser> userMap = sysUsers.stream().collect(Collectors.toMap(SysUser::getUserId, Function.identity()));
|
|
|
|
|
|
- if (CollectionUtils.isEmpty(notes) || notes.size() < taskIds.length) {
|
|
|
- // 查询领包记录
|
|
|
- List<WmScorePackageStatus> statusList = wmScorePackageStatusService.list(Wrappers.<WmScorePackageStatus>lambdaQuery()
|
|
|
- .eq(WmScorePackageStatus::getPackageId, scorePackageId)
|
|
|
- .in(WmScorePackageStatus::getUserId, userTaskMap.keySet())
|
|
|
- .eq(WmScorePackageStatus::getStatus, PackageStatusEnum.APPROVED.val()));
|
|
|
- Map<String, WmScorePackageStatus> userPackageStatusMap = statusList.stream()
|
|
|
- .collect(Collectors.toMap(WmScorePackageStatus::getUserId, Function.identity()));
|
|
|
-
|
|
|
- for (String userId : userPackageStatusMap.keySet()) {
|
|
|
- WmScorePackageSettleNote note = new WmScorePackageSettleNote();
|
|
|
- note.setSettleNo(IdUtil.fastSimpleUUID());
|
|
|
- note.setPackageId(scorePackageId);
|
|
|
+ // 页面回显的结算对象列表
|
|
|
+ List<WmScorePackageSettleNote> userNotes = new ArrayList<>();
|
|
|
+ // 用于结算的note参数
|
|
|
+ List<WmScorePackageSettleNote> toSettleNotes = new ArrayList<>();
|
|
|
|
|
|
- // 计算每个人的总任务积分
|
|
|
- List<WmTask> userTasks = userTaskMap.get(userId);
|
|
|
- Integer userTotalScore = userTasks.stream().map(WmTask::getScore).reduce(0, Integer::sum);
|
|
|
- note.setSettleAmount(BigDecimal.valueOf(userTotalScore));
|
|
|
- note.setDiscount(BigDecimal.ONE);
|
|
|
- note.setUserId(userId);
|
|
|
- note.setSettleNoteStatus(Integer.valueOf(SettleStatusEnum.SETTLE_STATUS_NOTSETTLE.getVal()));
|
|
|
+ if (wmScorePackage.getLocation() != null) {
|
|
|
+ wmScorePackage.setSubjectLocation(wmScorePackage.getLocation().name());
|
|
|
+ }
|
|
|
+ if (StrUtil.isBlank(wmScorePackage.getSubjectLocation())){
|
|
|
+ return R.failed("结算积分包未勾选税源地");
|
|
|
+ }
|
|
|
|
|
|
- SysUser noteUser = userMap.get(Integer.parseInt(userId));
|
|
|
- note.setRealName(noteUser.getRealname());
|
|
|
- note.setIdCardNumber(noteUser.getIdCardNumber());
|
|
|
- notes.add(note);
|
|
|
- }
|
|
|
- if (wmScorePackage.getLocation() != null) {
|
|
|
- wmScorePackage.setSubjectLocation(wmScorePackage.getLocation().name());
|
|
|
+ // 按结算对象分组,统计分别对应的结算信息
|
|
|
+ for (String userId : userTaskMap.keySet()) {
|
|
|
+ WmScorePackageSettleNote oneUserNote = new WmScorePackageSettleNote();
|
|
|
+ List<WmTask> userTasks = userTaskMap.get(userId);
|
|
|
+
|
|
|
+ // 计算每个人的总任务积分
|
|
|
+ BigDecimal userTotalSettleAmount = BigDecimal.ZERO;
|
|
|
+ for (WmTask task : userTasks) {
|
|
|
+ WmScorePackageSettleNote settleNote = taskSettleNoteMap.get(task.getId());
|
|
|
+ // 存在note,则取note金额,否则取task的积分
|
|
|
+ if (settleNote != null) {
|
|
|
+ userTotalSettleAmount = userTotalSettleAmount.add(settleNote.getSettleAmount());
|
|
|
+ } else {
|
|
|
+ userTotalSettleAmount = userTotalSettleAmount.add(BigDecimal.valueOf(task.getScore()));
|
|
|
+ }
|
|
|
}
|
|
|
- } else {
|
|
|
|
|
|
- notes.forEach(item -> {
|
|
|
- SysUser user = userMap.get(Integer.parseInt(item.getUserId()));
|
|
|
- item.setRealName(user.getRealname());
|
|
|
- item.setIdCardNumber(user.getIdCardNumber());
|
|
|
- if (item.getSubjectLocation() != null){
|
|
|
- wmScorePackage.setSubjectLocation(item.getSubjectLocation().name());
|
|
|
- }
|
|
|
- });
|
|
|
+ oneUserNote.setPackageId(scorePackageId);
|
|
|
+ oneUserNote.setSettleAmount(userTotalSettleAmount);
|
|
|
+ oneUserNote.setDiscount(BigDecimal.ONE);
|
|
|
+ oneUserNote.setUserId(userId);
|
|
|
+ oneUserNote.setSettleNoteStatus(Integer.valueOf(SettleStatusEnum.SETTLE_STATUS_NOTSETTLE.getVal()));
|
|
|
|
|
|
- if (StrUtil.isBlank(wmScorePackage.getSubjectLocation())){
|
|
|
- return R.failed("结算积分包未勾选税源地");
|
|
|
+ SysUser noteUser = userMap.get(Integer.parseInt(userId));
|
|
|
+ oneUserNote.setRealName(noteUser.getRealname());
|
|
|
+ oneUserNote.setIdCardNumber(noteUser.getIdCardNumber());
|
|
|
+ userNotes.add(oneUserNote);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 添加用于结算的note参数
|
|
|
+ for (String taskId : taskIds) {
|
|
|
+ WmScorePackageSettleNote note = new WmScorePackageSettleNote();
|
|
|
+ // note存在则直接获取
|
|
|
+ WmScorePackageSettleNote settleNote = taskSettleNoteMap.get(taskId);
|
|
|
+ if (settleNote != null) {
|
|
|
+ toSettleNotes.add(note);
|
|
|
+ continue;
|
|
|
}
|
|
|
|
|
|
+ // note不存在,取task中的信息作为结算信息
|
|
|
+ WmTask task = taskMap.get(taskId);
|
|
|
+ note.setSettleAmount(BigDecimal.valueOf(task.getScore()));
|
|
|
+ note.setSettleNo(IdUtil.fastSimpleUUID());
|
|
|
+ note.setPackageId(scorePackageId);
|
|
|
+ note.setDiscount(BigDecimal.ONE);
|
|
|
+ note.setUserId(task.getTaskUserId());
|
|
|
+ note.setSettleNoteStatus(Integer.valueOf(SettleStatusEnum.SETTLE_STATUS_NOTSETTLE.getVal()));
|
|
|
+ // user信息
|
|
|
+ SysUser noteUser = userMap.get(Integer.parseInt(task.getTaskUserId()));
|
|
|
+ note.setRealName(noteUser.getRealname());
|
|
|
+ note.setIdCardNumber(noteUser.getIdCardNumber());
|
|
|
+ toSettleNotes.add(note);
|
|
|
}
|
|
|
|
|
|
Map<String, Object> resultMap = new HashMap<>(3);
|
|
|
resultMap.put("wsp", wmScorePackage);
|
|
|
- resultMap.put("notes", notes);
|
|
|
+ resultMap.put("notes", toSettleNotes);
|
|
|
+ resultMap.put("userNotes", userNotes);
|
|
|
// 显示实际完成积分值
|
|
|
// resultMap.put("finishScore", "0");
|
|
|
|