From cb415813de667096290d6bd0f924f5b523104117 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期一, 10 十一月 2025 17:41:04 +0800
Subject: [PATCH] 报备工单bug修改,定时任务在线问题修改新增导出扣分明细功能
---
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java | 85 ++++++++++++++++++++++++++++++++++++++++--
1 files changed, 80 insertions(+), 5 deletions(-)
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
index cf248f7..b076099 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -119,7 +119,14 @@
WorkOrderServiceImpl self = applicationContext.getBean(WorkOrderServiceImpl.class);
return self.batchAddWorkOrder(workOrderList);
}
-
+ private boolean isSameDay(Date date1, Date date2) {
+ if (date1 == null || date2 == null) {
+ return false;
+ }
+ LocalDate localDate1 = date1.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+ LocalDate localDate2 = date2.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+ return localDate1.isEqual(localDate2);
+ }
@Transactional(rollbackFor = Exception.class)
public Boolean batchAddWorkOrder(List<WorkOrder> workOrderList) {
int total = workOrderList.size();
@@ -164,6 +171,15 @@
for (WorkOrder workOrder : workOrderList) {
WorkOrder databaseWorkOrder = mapping.get(workOrder.getSerialNumber());
if (Objects.nonNull(databaseWorkOrder)) {
+ //鍒ゆ柇鏄惁鏄粖澶╃殑宸ュ崟
+ if (!isSameDay(databaseWorkOrder.getCreateTime(), now)) {
+ // 鑻ヤ负鍓嶄竴澶╃殑宸ュ崟锛屼笉鏇存柊锛岀洿鎺ュ綋浣滄柊宸ュ崟鏂板
+ workOrder.setCreateTime(now);
+ workOrder.setUpdateTime(now);
+ waitAddList.add(workOrder);
+ continue; // 璺宠繃鍚庣画鐨勬洿鏂伴�昏緫
+ }
+
List<String> errorNameList = databaseWorkOrder.getErrorTypeList();
List<String> errorTypes = workOrder.getErrorTypeList();
if (errorNameList.containsAll(errorTypes)) {
@@ -858,6 +874,43 @@
}
});
}
+ //鍔犱笂鎶ュ淇℃伅
+ if (!CollectionUtils.isEmpty(page.getRecords())) {
+ List<String> serialNumberList = page.getRecords().stream()
+ .map(WorkOrderVO::getSerialNumber).collect(Collectors.toList());
+ List<Report> reports = new LambdaQueryChainWrapper<>(reportMapper)
+ .in(Report::getSerialNumber, serialNumberList)
+ .eq(Report::getStatus,1)
+ .eq(Report::getDeleted,Boolean.FALSE).list();
+ Map<String, List<Report>> reportMap = reports.stream()
+ .collect(Collectors.groupingBy(Report::getSerialNumber));
+
+ for (WorkOrderVO workOrder : page.getRecords()) {
+ workOrder.setHasReport(false);
+ List<Report> reportsByWorkOrder = reportMap.get(workOrder.getSerialNumber());
+ if (CollectionUtils.isEmpty(reportsByWorkOrder)) {
+ continue; // 鏃犳姤鍛婏紝鐩存帴璺宠繃
+ }
+ Date distributeTime = workOrder.getDistributeTime();
+ for (Report report : reportsByWorkOrder) {
+ Date beginTime = report.getBeginCreateTime();
+ Date endTime = report.getEndCreateTime();
+ // 绌烘寚閽堥槻鎶�
+ if (distributeTime == null || beginTime == null || endTime == null) {
+ continue;
+ }
+ // 鏃堕棿鍖洪棿鍒ゆ柇锛歞istributeTime 鍦� [beginTime, endTime] 鍐�
+ boolean isInRange = distributeTime.compareTo(beginTime) >= 0
+ && distributeTime.compareTo(endTime) <= 0;
+ if (isInRange) {
+ workOrder.setHasReport(true);
+ break; // 鎵惧埌涓�涓嵆閫�鍑哄惊鐜�
+ }
+ }
+ }
+ }
+
+
return Result.ok().data(page.getRecords()).total(page.getTotal());
}
@@ -1072,8 +1125,10 @@
@Override
public WorkOrderTotalVO workOrderTotal(DashboardQuery dashboardQuery) {
+ //todo澶у睆宸ュ崟鏈鐞嗗伐鍗曟暟閲忔湁鐐归棶棰�
return baseMapper.workOrderTotal(dashboardQuery);
}
+
@Override
public List<WorkOrderRegionVO> workOrderRegion(DashboardQuery dashboardQuery) {
@@ -1287,10 +1342,30 @@
}
// 鏄惁鎶ュ
- boolean hasReport = new LambdaQueryChainWrapper<>(reportMapper)
- .eq(Report::getSerialNumber, workOrder.getSerialNumber())
- .exists();
- workOrder.setHasReport(hasReport);
+
+ List<Report> reports = new LambdaQueryChainWrapper<>(reportMapper)
+ .eq(Report::getSerialNumber,workOrder.getSerialNumber())
+ .eq(Report::getStatus,1)
+ .orderByDesc(Report::getCreateTime)
+ .list();
+ log.info("鎶ュ璁板綍:{}",reports);
+ Date distributeTime = workOrder.getDistributeTime();
+ workOrder.setHasReport(false);
+ for (Report report : reports) {
+ Date beginTime = report.getBeginCreateTime();
+ Date endTime = report.getEndCreateTime();
+ // 绌烘寚閽堥槻鎶�
+ if (distributeTime == null || beginTime == null || endTime == null) {
+ continue;
+ }
+ // 鏃堕棿鍖洪棿鍒ゆ柇锛歞istributeTime 鍦� [beginTime, endTime] 鍐�
+ boolean isInRange = distributeTime.compareTo(beginTime) >= 0
+ && distributeTime.compareTo(endTime) <= 0;
+ if (isInRange) {
+ workOrder.setHasReport(true);
+ break; // 鎵惧埌涓�涓嵆閫�鍑哄惊鐜�
+ }
+ }
// 鏁呴殰绫诲瀷
List<SysDictData> errorList = workOrderErrorTypeService.getBaseMapper().getErrorList(workOrder.getWorkOrderNo());
List<String> errList = errorList.stream().map(SysDictData::getDictLabel).collect(Collectors.toList());
--
Gitblit v1.8.0