|
|
@@ -805,6 +805,10 @@ public class SyncTaskPipeEquipmentJob {
|
|
|
List<PipeTaskOrderItemDO> allItemDOs = taskOrderItemService.list(
|
|
|
new LambdaQueryWrapperX<PipeTaskOrderItemDO>()
|
|
|
.eq(PipeTaskOrderItemDO::getOrderId, taskOrderId));
|
|
|
+ // 一览表的sort排在常规报告之后:当前报告总数 + 1 开始
|
|
|
+ int summarySortBase = (int) taskOrderItemReportService.count(
|
|
|
+ new LambdaQueryWrapperX<PipeTaskOrderItemReportDO>()
|
|
|
+ .eq(PipeTaskOrderItemReportDO::getOrderId, taskOrderId)) + 1;
|
|
|
for (PipeTaskOrderItemDO itemDO : allItemDOs) {
|
|
|
if (StrUtil.isBlank(itemDO.getId())) {
|
|
|
log.warn("跳过一览表创建,itemDO id为空, orderId: {}", taskOrderId);
|
|
|
@@ -823,6 +827,7 @@ public class SyncTaskPipeEquipmentJob {
|
|
|
report.setProjectId(summaryTemplate.getId());
|
|
|
report.setReportName(summaryTemplate.getProjectName());
|
|
|
report.setReportNo(mainReportNo); // 复用主报告编号
|
|
|
+ report.setSort(summarySortBase++);
|
|
|
report.setTaskStatus(500);
|
|
|
report.setStatus(100);
|
|
|
report.setRecheckStatus(100);
|
|
|
@@ -842,8 +847,17 @@ public class SyncTaskPipeEquipmentJob {
|
|
|
} else {
|
|
|
// 已存在则更新编号
|
|
|
PipeTaskOrderItemReportDO existingReport = existing.get(0);
|
|
|
+ boolean needUpdate = false;
|
|
|
if (mainReportNo != null && !mainReportNo.equals(existingReport.getReportNo())) {
|
|
|
existingReport.setReportNo(mainReportNo);
|
|
|
+ needUpdate = true;
|
|
|
+ }
|
|
|
+ if (existingReport.getSort() == null || existingReport.getSort() != summarySortBase) {
|
|
|
+ existingReport.setSort(summarySortBase);
|
|
|
+ needUpdate = true;
|
|
|
+ }
|
|
|
+ summarySortBase++;
|
|
|
+ if (needUpdate) {
|
|
|
existingReport.setUpdateTime(LocalDateTime.now());
|
|
|
existingReport.setUpdater("1");
|
|
|
taskOrderItemReportService.updateById(existingReport);
|
|
|
@@ -1267,9 +1281,10 @@ public class SyncTaskPipeEquipmentJob {
|
|
|
|
|
|
// 用于存储本次创建/更新的报告,便于子项目引用主项目
|
|
|
Map<String, PipeTaskOrderItemReportDO> createdReportsMap = new HashMap<>();
|
|
|
+ // sort排序:主报告第1个,其余按顺序递增
|
|
|
+ int sortIndex = 1;
|
|
|
|
|
|
// 第一遍:先处理MAIN主项目模板,生成报告编号后再处理子项目
|
|
|
- // 避免一览表等非MAIN项目因排序问题在主报告前生成,导致拿不到报告编号
|
|
|
List<BoilerConnectRecordReportDO> mainTemplates = templates.stream()
|
|
|
.filter(t -> "MAIN".equals(t.getProjectType()))
|
|
|
.toList();
|
|
|
@@ -1279,15 +1294,12 @@ public class SyncTaskPipeEquipmentJob {
|
|
|
|
|
|
// 先处理MAIN模板
|
|
|
for (BoilerConnectRecordReportDO template : mainTemplates) {
|
|
|
- PipeTaskOrderItemReportDO report = createOrUpdateReport(taskOrderId, template, createdReportsMap);
|
|
|
- if (report != null) {
|
|
|
- createdReportsMap.put(template.getProjectType(), report);
|
|
|
- }
|
|
|
+ createOrUpdateReport(taskOrderId, template, createdReportsMap, sortIndex++);
|
|
|
}
|
|
|
|
|
|
// 再处理其他模板(此时createdReportsMap中已有MAIN的报告编号)
|
|
|
for (BoilerConnectRecordReportDO template : otherTemplates) {
|
|
|
- createOrUpdateReport(taskOrderId, template, createdReportsMap);
|
|
|
+ createOrUpdateReport(taskOrderId, template, createdReportsMap, sortIndex++);
|
|
|
}
|
|
|
|
|
|
log.info("成功生成 {} 个报告记录", templates.size());
|
|
|
@@ -1301,13 +1313,15 @@ public class SyncTaskPipeEquipmentJob {
|
|
|
/**
|
|
|
* 创建或更新管道报告记录(公共方法,两遍处理共用)
|
|
|
*
|
|
|
- * @param taskOrderId 任务单ID
|
|
|
- * @param template 报告模板
|
|
|
- * @param createdReportsMap 已创建的主报告映射(用于SUB获取MAIN编号)
|
|
|
+ * @param taskOrderId 任务单ID
|
|
|
+ * @param template 报告模板
|
|
|
+ * @param createdReportsMap 已创建的主报告映射(用于SUB获取MAIN编号)
|
|
|
+ * @param sort 排序号,MAIN=1,其余递增
|
|
|
* @return 新创建的报告,已更新则返回null
|
|
|
*/
|
|
|
private PipeTaskOrderItemReportDO createOrUpdateReport(String taskOrderId, BoilerConnectRecordReportDO template,
|
|
|
- Map<String, PipeTaskOrderItemReportDO> createdReportsMap) {
|
|
|
+ Map<String, PipeTaskOrderItemReportDO> createdReportsMap,
|
|
|
+ int sort) {
|
|
|
List<PipeTaskOrderItemReportDO> existingReports = taskOrderItemReportService.list(
|
|
|
new LambdaQueryWrapperX<PipeTaskOrderItemReportDO>()
|
|
|
.eq(PipeTaskOrderItemReportDO::getOrderId, taskOrderId)
|
|
|
@@ -1316,9 +1330,10 @@ public class SyncTaskPipeEquipmentJob {
|
|
|
PipeTaskOrderItemReportDO existingReport = existingReports.isEmpty() ? null : existingReports.get(0);
|
|
|
|
|
|
if (existingReport == null) {
|
|
|
- PipeTaskOrderItemReportDO newReport = createTaskOrderItemReport(taskOrderId, template, createdReportsMap);
|
|
|
+ PipeTaskOrderItemReportDO newReport = createTaskOrderItemReport(taskOrderId, template, createdReportsMap, sort);
|
|
|
log.info("创建管道报告记录成功,模版: {}", template.getProjectName());
|
|
|
if (newReport != null) {
|
|
|
+ createdReportsMap.put(template.getProjectType(), newReport);
|
|
|
BoilerTaskOrderSyncReportVO syncReportVO = new BoilerTaskOrderSyncReportVO();
|
|
|
syncReportVO.setRefId(newReport.getId());
|
|
|
syncReportVO.setReportType("record");
|
|
|
@@ -1326,7 +1341,7 @@ public class SyncTaskPipeEquipmentJob {
|
|
|
}
|
|
|
return newReport;
|
|
|
} else {
|
|
|
- updateTaskOrderItemReport(taskOrderId, template, existingReport);
|
|
|
+ updateTaskOrderItemReport(taskOrderId, template, existingReport, sort);
|
|
|
log.info("更新管道报告记录成功,模版: {}, 报告ID: {}",
|
|
|
template.getProjectName(), existingReport.getId());
|
|
|
return null;
|
|
|
@@ -1338,12 +1353,14 @@ public class SyncTaskPipeEquipmentJob {
|
|
|
* 更新管道任务单设备报告记录
|
|
|
*/
|
|
|
private void updateTaskOrderItemReport(
|
|
|
- String taskOrderId, BoilerConnectRecordReportDO template, PipeTaskOrderItemReportDO existingReport) {
|
|
|
+ String taskOrderId, BoilerConnectRecordReportDO template, PipeTaskOrderItemReportDO existingReport,
|
|
|
+ int sort) {
|
|
|
try {
|
|
|
existingReport.setOrderId(taskOrderId);
|
|
|
existingReport.setTemplateId(template.getRecordTemplateId());
|
|
|
existingReport.setProjectId(template.getId());
|
|
|
existingReport.setReportName(template.getProjectName());
|
|
|
+ existingReport.setSort(sort);
|
|
|
if (existingReport.getReportNo() == null || existingReport.getReportNo().isEmpty()) {
|
|
|
PipeTaskOrderDO taskOrderDO = taskOrderService.getById(taskOrderId);
|
|
|
String projectCode = template.getProjectCode();
|
|
|
@@ -1370,13 +1387,14 @@ public class SyncTaskPipeEquipmentJob {
|
|
|
*/
|
|
|
private PipeTaskOrderItemReportDO createTaskOrderItemReport(
|
|
|
String taskOrderId, BoilerConnectRecordReportDO template,
|
|
|
- Map<String, PipeTaskOrderItemReportDO> createdReportsMap) {
|
|
|
+ Map<String, PipeTaskOrderItemReportDO> createdReportsMap, int sort) {
|
|
|
try {
|
|
|
PipeTaskOrderItemReportDO report = new PipeTaskOrderItemReportDO();
|
|
|
report.setOrderId(taskOrderId);
|
|
|
report.setTemplateId(template.getRecordTemplateId());
|
|
|
report.setProjectId(template.getId());
|
|
|
report.setReportName(template.getProjectName());
|
|
|
+ report.setSort(sort);
|
|
|
|
|
|
// 设置报告编号
|
|
|
if ("MAIN".equals(template.getProjectType())) {
|