|
@@ -89,13 +89,55 @@ public class CreateRdDailyReportOrderJob implements JobHandler {
|
|
|
// 平台井任务只生成主井号任务 关联井在日报中聚合处理
|
|
// 平台井任务只生成主井号任务 关联井在日报中聚合处理
|
|
|
IotProjectTaskPageReqVO taskReqVO = new IotProjectTaskPageReqVO();
|
|
IotProjectTaskPageReqVO taskReqVO = new IotProjectTaskPageReqVO();
|
|
|
taskReqVO.setCompanyId(163l);
|
|
taskReqVO.setCompanyId(163l);
|
|
|
- taskReqVO.setJobFlag(StrUtil.EMPTY);
|
|
|
|
|
|
|
+ taskReqVO.setJobFlag("Y");
|
|
|
List<IotProjectTaskDO> tasks = iotProjectTaskService.projectTasks(taskReqVO);
|
|
List<IotProjectTaskDO> tasks = iotProjectTaskService.projectTasks(taskReqVO);
|
|
|
|
|
+ // 平台井任务关联了3口井,其中2口井已经完工,1口井还在施工,平台井任务需要定时生成日报
|
|
|
|
|
+ // 从任务列表中筛选出 (platformWell=0或platformGroup有值)的记录,并进一步找到 platformGroup有值的记录 对应的‘主井记录’生成日报
|
|
|
|
|
+ List<IotProjectTaskDO> qualifiedTasks = new ArrayList<>();
|
|
|
|
|
+ Set<String> platformGroups = new HashSet<>();
|
|
|
|
|
+ // 未施工完成的任务id集合
|
|
|
|
|
+ Set<Long> unfinishedTaskIds = new HashSet<>();
|
|
|
|
|
+ // key平台井标识platformGroup value平台井platformWell=1时的taskId
|
|
|
|
|
+ Map<String, IotProjectTaskDO> mainWellTaskPair = new HashMap<>();
|
|
|
|
|
+ if (CollUtil.isNotEmpty(tasks)) {
|
|
|
|
|
+ tasks.forEach(task -> {
|
|
|
|
|
+ // 非平台井任务 直接生成日报
|
|
|
|
|
+ qualifiedTasks.add(task);
|
|
|
|
|
+ if (StrUtil.isNotBlank(task.getPlatformGroup())) {
|
|
|
|
|
+ platformGroups.add(task.getPlatformGroup());
|
|
|
|
|
+ if (1 == task.getPlatformWell()) {
|
|
|
|
|
+ mainWellTaskPair.put(task.getPlatformGroup(), task);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // 生成所有所有未施工完成的任务id集合
|
|
|
|
|
+ unfinishedTaskIds.add(task.getId());
|
|
|
|
|
+ });
|
|
|
|
|
+ // 找出 关联井未施工完成 但是主井已经施工完成的记录 同步生成主井日报
|
|
|
|
|
+
|
|
|
|
|
+ // 查询出 platformGroups 对应的任务,找到主井记录
|
|
|
|
|
+ if (CollUtil.isNotEmpty(platformGroups)) {
|
|
|
|
|
+ IotProjectTaskPageReqVO platformTaskReqVO = new IotProjectTaskPageReqVO();
|
|
|
|
|
+ platformTaskReqVO.setPlatformGroups(new ArrayList<>(platformGroups));
|
|
|
|
|
+ List<IotProjectTaskDO> platformTasks = iotProjectTaskService.projectTasks(platformTaskReqVO);
|
|
|
|
|
+ if (CollUtil.isNotEmpty(platformTasks)) {
|
|
|
|
|
+ // platformTasks 可能同时包含 主井 关联井 有的已经施工完成 有的未施工完成
|
|
|
|
|
+ // 已经施工完成的关联井不再生成日报
|
|
|
|
|
+ // 未施工完成的关联井需要和相关主井一起生成日报
|
|
|
|
|
+ platformTasks.forEach(task -> {
|
|
|
|
|
+ if (2 == task.getPlatformWell() && !"wg".equals(task.getStatus())
|
|
|
|
|
+ && mainWellTaskPair.containsKey(task.getPlatformGroup()) && !unfinishedTaskIds.contains(task.getId())) {
|
|
|
|
|
+ qualifiedTasks.add(mainWellTaskPair.get(task.getPlatformGroup()));
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
Set<Long> userIds = new HashSet<>();
|
|
Set<Long> userIds = new HashSet<>();
|
|
|
List<IotRdDailyReportDO> reports = new ArrayList<>();
|
|
List<IotRdDailyReportDO> reports = new ArrayList<>();
|
|
|
Map<Long, Long> taskSubmitterPair = new HashMap<>();
|
|
Map<Long, Long> taskSubmitterPair = new HashMap<>();
|
|
|
- if (CollUtil.isNotEmpty(tasks)) {
|
|
|
|
|
- tasks.forEach(task -> {
|
|
|
|
|
|
|
+ if (CollUtil.isNotEmpty(qualifiedTasks)) {
|
|
|
|
|
+ qualifiedTasks.forEach(task -> {
|
|
|
// 查询当前任务的 工单填报人
|
|
// 查询当前任务的 工单填报人
|
|
|
Set<Long> submitterIds = task.getSubmitter();
|
|
Set<Long> submitterIds = task.getSubmitter();
|
|
|
if (CollUtil.isNotEmpty(submitterIds)) {
|
|
if (CollUtil.isNotEmpty(submitterIds)) {
|
|
@@ -115,7 +157,7 @@ public class CreateRdDailyReportOrderJob implements JobHandler {
|
|
|
}
|
|
}
|
|
|
Map<Long, DeptDO> deptPair = deptService.getDeptMap(deptIds);
|
|
Map<Long, DeptDO> deptPair = deptService.getDeptMap(deptIds);
|
|
|
// 以任务为维度 生成瑞都日报 部门为任务配置的工单填报人对应的部门
|
|
// 以任务为维度 生成瑞都日报 部门为任务配置的工单填报人对应的部门
|
|
|
- tasks.forEach(task -> {
|
|
|
|
|
|
|
+ qualifiedTasks.forEach(task -> {
|
|
|
if (!taskIds.contains(task.getId()) && CollUtil.isNotEmpty(task.getSubmitter())) {
|
|
if (!taskIds.contains(task.getId()) && CollUtil.isNotEmpty(task.getSubmitter())) {
|
|
|
// 生成当天的日报
|
|
// 生成当天的日报
|
|
|
IotRdDailyReportDO report = new IotRdDailyReportDO();
|
|
IotRdDailyReportDO report = new IotRdDailyReportDO();
|