|
|
@@ -514,6 +514,41 @@ public class IotStaticController {
|
|
|
return CommonResult.success(ImmutableMap.of("total", deviceCount,"today", deviceToday));
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 查询所有瑞鹰 钻井 进尺 修井完成总井口数
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @GetMapping("/home/ry/count/zjxj")
|
|
|
+ public CommonResult<ImmutableMap<Object, Object>> getHomeZjXjStat() {
|
|
|
+ // 查询所有钻井进尺
|
|
|
+ IotRyDailyReportPageReqVO reqVO = new IotRyDailyReportPageReqVO();
|
|
|
+ reqVO.setProjectClassification("1");
|
|
|
+ BigDecimal totalFootage = BigDecimal.ZERO;
|
|
|
+ List<IotRyDailyReportDO> dailyReports = iotRyDailyReportMapper.dailyReports(reqVO);
|
|
|
+ // 使用Stream API计算总进尺
|
|
|
+ if (CollUtil.isNotEmpty(dailyReports)) {
|
|
|
+ totalFootage = dailyReports.stream()
|
|
|
+ .map(IotRyDailyReportDO::getDailyFootage)
|
|
|
+ .filter(Objects::nonNull)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查询所有完工井数
|
|
|
+ IotRyDailyReportPageReqVO xjReqVO = new IotRyDailyReportPageReqVO();
|
|
|
+
|
|
|
+ List<IotRyDailyReportTaskCountVO> repairDeptTasks = iotRyDailyReportMapper.countRepairTasksByDept(xjReqVO);
|
|
|
+ // Java8 Stream 简洁累加(核心优化)
|
|
|
+ Integer completeWellCount = repairDeptTasks.stream()
|
|
|
+ // 过滤null元素,避免空指针
|
|
|
+ .filter(Objects::nonNull)
|
|
|
+ // 转换为int流,处理属性为null的情况(null则取0)
|
|
|
+ .mapToInt(task -> Optional.ofNullable(task.getCompletedTaskCount()).orElse(0))
|
|
|
+ // 累加求和(空集合时sum()返回0,无需手动判空)
|
|
|
+ .sum();
|
|
|
+
|
|
|
+ return CommonResult.success(ImmutableMap.of("zj", totalFootage,"xj", completeWellCount));
|
|
|
+ }
|
|
|
+
|
|
|
@GetMapping("/home/maintain/count/{dept}")
|
|
|
public CommonResult<ImmutableMap<Object, Object>> getHomeMaintainCountStat(@PathVariable("dept") String dept) {
|
|
|
ImmutableMap<String, LocalDateTime> beginEndDay = DateUtils.getBeginEndDay(0);
|
|
|
@@ -1243,11 +1278,22 @@ public class IotStaticController {
|
|
|
// 钻井
|
|
|
deptTypeReqVO.setType("zj");
|
|
|
}
|
|
|
+ // 找到钻井队伍对应的项目部 修井队伍对应的项目部
|
|
|
+ Set<Long> zjDeptIds = new HashSet<>();
|
|
|
+ Set<Long> xjDeptIds = new HashSet<>();
|
|
|
+ Set<String> xjDeptNames = new HashSet<>();
|
|
|
+ Set<String> zjDeptNames = new HashSet<>();
|
|
|
List<IotDeptTypeDO> deptTypes = iotDeptTypeMapper.selectList(deptTypeReqVO);
|
|
|
List<Long> zjOrXjDeptIds = new ArrayList<>();
|
|
|
if (CollUtil.isNotEmpty(deptTypes)) {
|
|
|
deptTypes.forEach(dept -> {
|
|
|
zjOrXjDeptIds.add(dept.getDeptId());
|
|
|
+ if ("zj".equals(dept.getType())) {
|
|
|
+ zjDeptIds.add(dept.getDeptId());
|
|
|
+ }
|
|
|
+ if ("xj".equals(dept.getType())) {
|
|
|
+ xjDeptIds.add(dept.getDeptId());
|
|
|
+ }
|
|
|
});
|
|
|
}
|
|
|
|
|
|
@@ -1262,6 +1308,22 @@ public class IotStaticController {
|
|
|
teamProjectPair.put(dept.getId(), dept.getParentId());
|
|
|
}
|
|
|
});
|
|
|
+ // 筛选出所有钻井项目部
|
|
|
+ teamProjectPair.forEach((teamDeptId, projectDeptId) -> {
|
|
|
+ if (zjDeptIds.contains(teamDeptId)) {
|
|
|
+ // 钻井部门
|
|
|
+ if (projectDeptPair.containsKey(projectDeptId)) {
|
|
|
+ zjDeptNames.add(projectDeptPair.get(projectDeptId));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (xjDeptIds.contains(teamDeptId)) {
|
|
|
+ // 修井部门
|
|
|
+ if (projectDeptPair.containsKey(projectDeptId)) {
|
|
|
+ xjDeptNames.add(projectDeptPair.get(projectDeptId));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ // 筛选出所有修井项目部
|
|
|
}
|
|
|
IotRyDailyReportPageReqVO reqVO = new IotRyDailyReportPageReqVO();
|
|
|
List<IotRyDailyReportTaskCountVO> repairTaskCounts = new ArrayList<>();
|
|
|
@@ -1303,6 +1365,8 @@ public class IotStaticController {
|
|
|
});
|
|
|
}
|
|
|
// 遍历所有项目部 没有产生运行数据的项目部 赋值 0
|
|
|
+ // 钻井 时 只显示 钻井相关的项目部
|
|
|
+ // 查询修井数据时,只显示修井相关的项目部
|
|
|
projectDeptPair.forEach((projectDeptId, projectDeptName) -> {
|
|
|
if (!projectDeptMonthCountPair.containsKey(projectDeptName)) {
|
|
|
projectDeptMonthCountPair.put(projectDeptName, 0);
|
|
|
@@ -1317,11 +1381,13 @@ public class IotStaticController {
|
|
|
LinkedList<Object> yearData = new LinkedList<>();
|
|
|
|
|
|
projectDeptMonthCountPair.forEach( (k,v)->{
|
|
|
- xAxis.add(k);
|
|
|
- monthData.add(v);
|
|
|
- if (projectDeptYearCountPair.containsKey(k)) {
|
|
|
- Integer yearCount = projectDeptYearCountPair.get(k);
|
|
|
- yearData.add(yearCount);
|
|
|
+ if (xjDeptNames.contains(k)) {
|
|
|
+ xAxis.add(k);
|
|
|
+ monthData.add(v);
|
|
|
+ if (projectDeptYearCountPair.containsKey(k)) {
|
|
|
+ Integer yearCount = projectDeptYearCountPair.get(k);
|
|
|
+ yearData.add(yearCount);
|
|
|
+ }
|
|
|
}
|
|
|
});
|
|
|
ImmutableMap<String, Serializable> monthResult = ImmutableMap.of("name", "月完井数~~en**monthWell", "data", monthData);
|
|
|
@@ -1392,15 +1458,17 @@ public class IotStaticController {
|
|
|
LinkedList<Object> yearData = new LinkedList<>();
|
|
|
|
|
|
projectDeptDailyFootagePair.forEach( (k,v)->{
|
|
|
- xAxis.add(k);
|
|
|
- dailyData.add(v);
|
|
|
- if (projectDeptMonthFootagePair.containsKey(k)) {
|
|
|
- BigDecimal monthlyFootage = projectDeptMonthFootagePair.get(k);
|
|
|
- monthData.add(monthlyFootage);
|
|
|
- }
|
|
|
- if (projectDeptYearFootagePair.containsKey(k)) {
|
|
|
- BigDecimal annualFootage = projectDeptYearFootagePair.get(k);
|
|
|
- yearData.add(annualFootage);
|
|
|
+ if (zjDeptNames.contains(k)) {
|
|
|
+ xAxis.add(k);
|
|
|
+ dailyData.add(v);
|
|
|
+ if (projectDeptMonthFootagePair.containsKey(k)) {
|
|
|
+ BigDecimal monthlyFootage = projectDeptMonthFootagePair.get(k);
|
|
|
+ monthData.add(monthlyFootage);
|
|
|
+ }
|
|
|
+ if (projectDeptYearFootagePair.containsKey(k)) {
|
|
|
+ BigDecimal annualFootage = projectDeptYearFootagePair.get(k);
|
|
|
+ yearData.add(annualFootage);
|
|
|
+ }
|
|
|
}
|
|
|
});
|
|
|
|