|
|
@@ -2500,26 +2500,8 @@ public class IotRdDailyReportController {
|
|
|
// key平台井标识 value平台井非生产时效集合
|
|
|
Map<String, BigDecimal> platformNptPair = new HashMap<>();
|
|
|
|
|
|
- // 查询每个日报的生产动态明细
|
|
|
- IotRdDailyReportDetailPageReqVO detailReqVO = new IotRdDailyReportDetailPageReqVO();
|
|
|
- detailReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
|
|
- detailReqVO.setReportIds(convertList(reports, IotRdDailyReportDO::getId));
|
|
|
- PageResult<IotRdDailyReportDetailDO> reportDetailsPage = iotRdDailyReportDetailMapper.selectPage(detailReqVO);
|
|
|
- List<IotRdDailyReportDetailDO> reportDetails = reportDetailsPage.getList();
|
|
|
- if (CollUtil.isNotEmpty(reportDetails)) {
|
|
|
- // 设置每个日报的生产动态明细
|
|
|
- reportDetails.forEach(detail -> {
|
|
|
- if (reportDetailsPair.containsKey(detail.getReportId())) {
|
|
|
- List<IotRdDailyReportDetailRespVO> tempDetails = reportDetailsPair.get(detail.getReportId());
|
|
|
- tempDetails.add(BeanUtils.toBean(detail, IotRdDailyReportDetailRespVO.class));
|
|
|
- reportDetailsPair.put(detail.getReportId(), tempDetails);
|
|
|
- } else {
|
|
|
- List<IotRdDailyReportDetailRespVO> tempDetails = new ArrayList<>();
|
|
|
- tempDetails.add(BeanUtils.toBean(detail, IotRdDailyReportDetailRespVO.class));
|
|
|
- reportDetailsPair.put(detail.getReportId(), tempDetails);
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
+
|
|
|
+ // 平台井 筛选关联的井的生产动态明细 赋值到 平台井列表 的 日报对象
|
|
|
|
|
|
DataPermissionUtils.executeIgnore(() -> {
|
|
|
// 查询日报关联的项目信息
|
|
|
@@ -2550,11 +2532,74 @@ public class IotRdDailyReportController {
|
|
|
// relatedWellReqVO.setPlatformWell(2);
|
|
|
List<IotRdDailyReportDO> relatedWellReports = iotRdDailyReportService.dailyReports(relatedWellReqVO);
|
|
|
|
|
|
+ // key日报id value平台井platformGroup
|
|
|
+ Map<Long, String> platformWellPair = new HashMap<>();
|
|
|
+
|
|
|
+ // 查询每个日报的生产动态明细 平台井查询 主井 的生产动态明细
|
|
|
+ IotRdDailyReportDetailPageReqVO detailReqVO = new IotRdDailyReportDetailPageReqVO();
|
|
|
+ detailReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
|
|
+ detailReqVO.setReportIds(convertList(relatedWellReports, IotRdDailyReportDO::getId));
|
|
|
+ PageResult<IotRdDailyReportDetailDO> reportDetailsPage = iotRdDailyReportDetailMapper.selectPage(detailReqVO);
|
|
|
+ List<IotRdDailyReportDetailDO> reportDetails = reportDetailsPage.getList();
|
|
|
+ if (CollUtil.isNotEmpty(reportDetails)) {
|
|
|
+ // 设置每个日报的生产动态明细
|
|
|
+ reportDetails.forEach(detail -> {
|
|
|
+ if (reportDetailsPair.containsKey(detail.getReportId())) {
|
|
|
+ List<IotRdDailyReportDetailRespVO> tempDetails = reportDetailsPair.get(detail.getReportId());
|
|
|
+ tempDetails.add(BeanUtils.toBean(detail, IotRdDailyReportDetailRespVO.class));
|
|
|
+ reportDetailsPair.put(detail.getReportId(), tempDetails);
|
|
|
+ } else {
|
|
|
+ List<IotRdDailyReportDetailRespVO> tempDetails = new ArrayList<>();
|
|
|
+ tempDetails.add(BeanUtils.toBean(detail, IotRdDailyReportDetailRespVO.class));
|
|
|
+ reportDetailsPair.put(detail.getReportId(), tempDetails);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
// 按照日报创建时间倒序排列
|
|
|
if (CollUtil.isNotEmpty(relatedWellReports)) {
|
|
|
relatedWellReports = relatedWellReports.stream()
|
|
|
.sorted(Comparator.comparing(IotRdDailyReportDO::getCreateTime).reversed())
|
|
|
.collect(Collectors.toList());
|
|
|
+ // 筛选 平台井 类型的日报
|
|
|
+ platformWellPair = relatedWellReports.stream()
|
|
|
+ .collect(Collectors.toMap(
|
|
|
+ IotRdDailyReportDO::getId, // key:日报ID
|
|
|
+ IotRdDailyReportDO::getPlatformGroup, // value:platformGroup
|
|
|
+ (oldValue, newValue) -> oldValue // 重复key时保留旧值(避免重复ID报错)
|
|
|
+ ));
|
|
|
+ }
|
|
|
+
|
|
|
+ // 组装没有关联生产动态明细的 日报
|
|
|
+ // 1. 按 platformGroup 分组,存储每组的明细列表
|
|
|
+ Map<String, List<IotRdDailyReportDetailRespVO>> platformGroupDetailsMap = new HashMap<>();
|
|
|
+ // 2. 把已有明细的日报,按 platformGroup 汇总明细
|
|
|
+ if (CollUtil.isNotEmpty(platformWellPair) && CollUtil.isNotEmpty(reportDetailsPair)) {
|
|
|
+ platformWellPair.forEach((reportId, platformGroup) -> {
|
|
|
+ List<IotRdDailyReportDetailRespVO> details = reportDetailsPair.get(reportId);
|
|
|
+ if (CollUtil.isNotEmpty(details)) {
|
|
|
+ platformGroupDetailsMap
|
|
|
+ .computeIfAbsent(platformGroup, k -> new ArrayList<>())
|
|
|
+ .addAll(details);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ // 3. 给没有明细的日报,赋值同平台组的明细(实现共享)
|
|
|
+ for (IotRdDailyReportDO report : reports) {
|
|
|
+ Long reportId = report.getId();
|
|
|
+ String platformGroup = platformWellPair.get(reportId);
|
|
|
+
|
|
|
+ // 如果当前日报没有明细 && 同组有共享明细 → 赋值
|
|
|
+ if (!reportDetailsPair.containsKey(reportId)
|
|
|
+ && StrUtil.isNotBlank(platformGroup)
|
|
|
+ && platformGroupDetailsMap.containsKey(platformGroup)) {
|
|
|
+
|
|
|
+ List<IotRdDailyReportDetailRespVO> sharedDetails = platformGroupDetailsMap.get(platformGroup);
|
|
|
+ if (CollUtil.isNotEmpty(sharedDetails)) {
|
|
|
+ reportDetailsPair.put(reportId, sharedDetails);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
if (CollUtil.isNotEmpty(tasks)) {
|