|
|
@@ -3918,40 +3918,61 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
pageResult.setList(itemlist);
|
|
|
pageResult.setTotal(total);
|
|
|
|
|
|
- if (pageResult == null) {
|
|
|
- return PageResult.empty();
|
|
|
+ if (CollUtil.isEmpty(itemlist)) {
|
|
|
+ return pageResult;
|
|
|
}
|
|
|
|
|
|
- List<String> list = pageResult.getList().stream().map(BoilerOrderItemPageRespVO::getManagerId).filter(Objects::nonNull).toList();
|
|
|
- if (!list.isEmpty()) {
|
|
|
- Map<String, AdminUserRespDTO> userMap = adminUserApi.getUserMap(list);
|
|
|
- pageResult.getList().forEach(item -> {
|
|
|
+ // 1. 设置项目负责人 manager
|
|
|
+ List<String> managerIds = itemlist.stream().map(BoilerOrderItemPageRespVO::getManagerId).filter(Objects::nonNull).distinct().toList();
|
|
|
+ if (!managerIds.isEmpty()) {
|
|
|
+ Map<String, AdminUserRespDTO> userMap = adminUserApi.getUserMap(managerIds);
|
|
|
+ itemlist.forEach(item -> {
|
|
|
item.setManager(userMap.get(item.getManagerId()));
|
|
|
-
|
|
|
item.setRemainingDays(10);
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- List<String> reportIds = pageResult.getList().stream().map(BoilerOrderItemPageRespVO::getReportId).filter(Objects::nonNull).toList();
|
|
|
- List<BoilerTaskOrderItemRecheckRespVO> taskOrderItemRecheckDOS = new ArrayList<>();
|
|
|
-
|
|
|
- if (!CollectionUtils.isEmpty(reportIds)) {
|
|
|
- taskOrderItemRecheckDOS = taskOrderItemRecheckMapper.selectListByReportIds(reportIds);
|
|
|
+ // 2. 设置校核人姓名 recheckName
|
|
|
+ List<String> recheckIds = itemlist.stream().map(BoilerOrderItemPageRespVO::getRecheckId).filter(Objects::nonNull).distinct().toList();
|
|
|
+ if (!recheckIds.isEmpty()) {
|
|
|
+ Map<String, AdminUserRespDTO> recheckUserMap = adminUserApi.getUserMap(recheckIds);
|
|
|
+ itemlist.forEach(item -> {
|
|
|
+ if (item.getRecheckId() != null) {
|
|
|
+ AdminUserRespDTO recheckUser = recheckUserMap.get(item.getRecheckId());
|
|
|
+ if (recheckUser != null) {
|
|
|
+ item.setRecheckName(recheckUser.getNickname());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
- if (taskOrderItemRecheckDOS == null) {
|
|
|
- taskOrderItemRecheckDOS = new ArrayList<>();
|
|
|
+ // 3. 批量查询所有 orderItemId 下的报告,按 (orderItemId, recheckId) 分组组装到 reportDOList
|
|
|
+ List<String> orderItemIds = itemlist.stream().map(BoilerOrderItemPageRespVO::getId).distinct().toList();
|
|
|
+ final Map<String, List<BoilerTaskOrderItemReportDO>> reportMap;
|
|
|
+ if (!orderItemIds.isEmpty()) {
|
|
|
+ List<BoilerTaskOrderItemReportDO> allReports = taskOrderItemReportMapper.selectList(
|
|
|
+ new LambdaQueryWrapperX<BoilerTaskOrderItemReportDO>()
|
|
|
+ .in(BoilerTaskOrderItemReportDO::getOrderItemId, orderItemIds)
|
|
|
+ .isNotNull(BoilerTaskOrderItemReportDO::getRecheckId)
|
|
|
+ .ne(BoilerTaskOrderItemReportDO::getRecheckId, "")
|
|
|
+ .orderByAsc(BoilerTaskOrderItemReportDO::getSort));
|
|
|
+ reportMap = allReports.stream()
|
|
|
+ .collect(Collectors.groupingBy(r -> r.getOrderItemId() + "|" + r.getRecheckId()));
|
|
|
+ } else {
|
|
|
+ reportMap = new HashMap<>();
|
|
|
}
|
|
|
- Map<String, List<BoilerTaskOrderItemRecheckRespVO>> recheckList = taskOrderItemRecheckDOS.stream()
|
|
|
- .collect(Collectors.groupingBy(BoilerTaskOrderItemRecheckRespVO::getMainReportId));
|
|
|
|
|
|
- // 查询 reportId -> 部件名 映射(电站锅炉内检有部件的报告,用于检验项目名前加"部件名-")
|
|
|
- Set<String> allReportIds = new HashSet<>(reportIds);
|
|
|
- taskOrderItemRecheckDOS.forEach(r -> {
|
|
|
- if (r.getReportId() != null) {
|
|
|
- allReportIds.add(r.getReportId());
|
|
|
- }
|
|
|
+ // 4. 设置 reportDOList,收集所有 reportId,查询部件名映射
|
|
|
+ Set<String> allReportIds = new HashSet<>();
|
|
|
+ itemlist.forEach(item -> {
|
|
|
+ String key = item.getId() + "|" + item.getRecheckId();
|
|
|
+ List<BoilerTaskOrderItemReportDO> reports = reportMap.getOrDefault(key, new ArrayList<>());
|
|
|
+ item.setReportDOList(reports);
|
|
|
+ reports.forEach(r -> {
|
|
|
+ if (r.getId() != null) allReportIds.add(r.getId());
|
|
|
+ });
|
|
|
});
|
|
|
+
|
|
|
Map<String, String> reportIdToPartName = new HashMap<>();
|
|
|
if (!allReportIds.isEmpty()) {
|
|
|
List<BoilerTaskOrderItemReportDO> partReportList = taskOrderItemReportMapper.selectList(
|
|
|
@@ -3971,36 +3992,77 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
.filter(r -> r.getItemPartId() != null)
|
|
|
.collect(Collectors.toMap(BoilerTaskOrderItemReportDO::getId,
|
|
|
r -> finalPartIdToName.getOrDefault(r.getItemPartId(), ""), (a, b) -> a)));
|
|
|
+ // 将部件名拼到 reportName 前面(用于前端展示)
|
|
|
+ itemlist.forEach(item -> {
|
|
|
+ if (item.getReportDOList() != null) {
|
|
|
+ item.getReportDOList().forEach(r -> {
|
|
|
+ String partName = reportIdToPartName.get(r.getId());
|
|
|
+ if (StringUtils.isNotBlank(partName) && StringUtils.isNotBlank(r.getReportName())) {
|
|
|
+ r.setReportName(partName + "-" + r.getReportName());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
- pageResult.getList().forEach(item -> {
|
|
|
+ // 5. 批量查询所有 reportUser,按 reportId 分组
|
|
|
+ final Map<String, List<String>> reportIdToUserIds;
|
|
|
+ if (!allReportIds.isEmpty()) {
|
|
|
+ List<BoilerTaskOrderItemReportUserDO> reportUsers = taskOrderItemReportUserMapper.selectList(
|
|
|
+ BoilerTaskOrderItemReportUserDO::getReportId, allReportIds);
|
|
|
+ reportIdToUserIds = reportUsers.stream()
|
|
|
+ .collect(Collectors.groupingBy(BoilerTaskOrderItemReportUserDO::getReportId,
|
|
|
+ Collectors.mapping(BoilerTaskOrderItemReportUserDO::getUserId, Collectors.toList())));
|
|
|
+ } else {
|
|
|
+ reportIdToUserIds = new HashMap<>();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 收集所有 userIds 批量查询
|
|
|
+ Set<String> allUserIds = new LinkedHashSet<>();
|
|
|
+ itemlist.forEach(item -> {
|
|
|
+ if (item.getReportDOList() != null) {
|
|
|
+ item.getReportDOList().forEach(r -> {
|
|
|
+ List<String> uids = reportIdToUserIds.get(r.getId());
|
|
|
+ if (uids != null) allUserIds.addAll(uids);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(item.getMainChecker())) {
|
|
|
+ allUserIds.add(item.getMainChecker());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ final Map<String, AdminUserRespDTO> allUserMap;
|
|
|
+ if (!allUserIds.isEmpty()) {
|
|
|
+ allUserMap = adminUserApi.getUserMap(new ArrayList<>(allUserIds));
|
|
|
+ } else {
|
|
|
+ allUserMap = new HashMap<>();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 6. 设置检验员 checkUsers 和地区名
|
|
|
+ itemlist.forEach(item -> {
|
|
|
if (item.getEquipStreet() != null) {
|
|
|
item.setEquipStreetName(AreaUtils.getArea(item.getEquipStreet()).getName());
|
|
|
}
|
|
|
if (item.getEquipDistrict() != null) {
|
|
|
item.setEquipDistrictName(AreaUtils.getArea(item.getEquipDistrict()).getName());
|
|
|
}
|
|
|
-
|
|
|
- List<BoilerTaskOrderItemReportUserDO> taskOrderUserDOList = taskOrderItemReportUserMapper.selectList(BoilerTaskOrderItemReportUserDO::getReportId, item.getReportId());
|
|
|
- List<String> uIds = new ArrayList<>(taskOrderUserDOList.stream().map(BoilerTaskOrderItemReportUserDO::getUserId).toList());
|
|
|
+ // 设置检验员 checkUsers(该行所有报告的检验员去重)
|
|
|
+ Set<String> userIds = new LinkedHashSet<>();
|
|
|
+ if (item.getReportDOList() != null) {
|
|
|
+ item.getReportDOList().forEach(r -> {
|
|
|
+ List<String> uids = reportIdToUserIds.get(r.getId());
|
|
|
+ if (uids != null) userIds.addAll(uids);
|
|
|
+ });
|
|
|
+ }
|
|
|
if (StringUtils.isNotBlank(item.getMainChecker())) {
|
|
|
- uIds.add(item.getMainChecker());
|
|
|
+ userIds.add(item.getMainChecker());
|
|
|
}
|
|
|
-
|
|
|
- if (!uIds.isEmpty()) {
|
|
|
- List<AdminUserRespDTO> checkUsers = adminUserApi.getUserList(uIds).getData();
|
|
|
+ if (!userIds.isEmpty()) {
|
|
|
+ List<AdminUserRespDTO> checkUsers = userIds.stream()
|
|
|
+ .map(allUserMap::get)
|
|
|
+ .filter(Objects::nonNull)
|
|
|
+ .collect(Collectors.toList());
|
|
|
item.setCheckUsers(checkUsers);
|
|
|
}
|
|
|
-
|
|
|
- item.setRecheckList(recheckList.get(item.getReportId()));
|
|
|
-
|
|
|
- // 设置部件名(电站锅炉内检有部件的报告,检验项目名前加"部件名-")
|
|
|
- item.setPartName(reportIdToPartName.get(item.getReportId()));
|
|
|
- List<BoilerTaskOrderItemRecheckRespVO> itemRecheckList = item.getRecheckList();
|
|
|
- if (itemRecheckList != null) {
|
|
|
- itemRecheckList.forEach(r -> r.setPartName(reportIdToPartName.get(r.getReportId())));
|
|
|
- }
|
|
|
-
|
|
|
});
|
|
|
return pageResult;
|
|
|
|
|
|
@@ -6496,6 +6558,11 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
|
|
|
updateOrder.setId(id);
|
|
|
updateOrder.setTaskStatus(TaskOrderStatusEnum.REPORT_FINISH.getStatus());
|
|
|
updateOrder.setConfirmDate(now());
|
|
|
+ // 服务收费金额为0时,报告办结后结算状态改为已结算
|
|
|
+ BigDecimal serviceAmount = taskOrderDO.getServiceAmount();
|
|
|
+ if (serviceAmount == null || serviceAmount.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
+ updateOrder.setPaymentStatus(1);
|
|
|
+ }
|
|
|
boilerTaskOrderMapper.updateById(updateOrder);
|
|
|
|
|
|
List<BoilerTaskOrderItemDO> taskOrderItemDOList = boilerTaskOrderItemMapper.selectList(new LambdaQueryWrapperX<BoilerTaskOrderItemDO>().
|