From ba69a4fb6db917d5e4d0fb14c37add8ee859b0e1 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期五, 13 三月 2026 17:57:51 +0800
Subject: [PATCH] 1.耗材迁移 2.仓储物流新增字段(毛重,皮重,净重) 3.设备保养多选(多条定时任务)
---
src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskJob.java | 117 ++++++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 93 insertions(+), 24 deletions(-)
diff --git a/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskJob.java b/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskJob.java
index fca829a..bc3f320 100644
--- a/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskJob.java
+++ b/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskJob.java
@@ -1,5 +1,10 @@
package com.ruoyi.device.service.impl;
+import com.alibaba.fastjson2.JSON;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.device.mapper.DeviceLedgerMapper;
+import com.ruoyi.device.pojo.DeviceLedger;
import com.ruoyi.device.pojo.DeviceMaintenance;
import com.ruoyi.device.pojo.MaintenanceTask;
import org.quartz.*;
@@ -13,9 +18,9 @@
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.YearMonth;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
@Component
@DisallowConcurrentExecution // 绂佹骞跺彂鎵ц鍚屼竴涓狫ob
@@ -27,6 +32,9 @@
@Autowired
private JdbcTemplate jdbcTemplate;
+
+ @Autowired
+ private DeviceLedgerMapper deviceLedgerMapper;
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
@@ -48,9 +56,8 @@
throw new JobExecutionException("MaintenanceTaskJob鎵句笉鍒板畾鏃朵换鍔�: " + taskId);
}
- // 2. 鍒涘缓骞朵繚瀛樺贰妫�浠诲姟璁板綍 - 杩欏氨鏄偍鎻愪緵鐨勪唬鐮佸簲璇ユ斁鐨勪綅缃�
- DeviceMaintenance deviceMaintenance = createInspectionTask(timingTask);
- deviceMaintenanceService.save(deviceMaintenance);
+ // 2. 鍒涘缓骞朵繚瀛樺贰妫�浠诲姟璁板綍
+ createInspectionTask(timingTask);
// 3. 鏇存柊瀹氭椂浠诲姟鐨勬墽琛屾椂闂�
if (!tasks.isEmpty()) {
@@ -83,25 +90,87 @@
}
}
- // 杩欏氨鏄偍鎻愪緵鐨勪唬鐮佸皝瑁呮垚鐨勬柟娉�
- private DeviceMaintenance createInspectionTask(MaintenanceTask timingTask) {
- DeviceMaintenance inspectionTask = new DeviceMaintenance();
+ // 瀹炰綋绫诲皝瑁�
+ private void createInspectionTask(MaintenanceTask timingTask) {
+ // 1. 鍙傛暟鏍¢獙
+ if (timingTask == null || StringUtils.isEmpty(timingTask.getDeviceIds())) {
+ return;
+ }
- // 澶嶅埗鍩烘湰灞炴��
- inspectionTask.setDeviceName(timingTask.getTaskName());
- inspectionTask.setMaintenanceTaskId(timingTask.getId());
- inspectionTask.setDeviceLedgerId(timingTask.getTaskId());
- inspectionTask.setMaintenancePlanTime(LocalDateTime.now());
- inspectionTask.setFrequencyType(timingTask.getFrequencyType());
- inspectionTask.setFrequencyDetail(timingTask.getFrequencyDetail());
- inspectionTask.setTenantId(timingTask.getTenantId());
- inspectionTask.setStatus(0);
- inspectionTask.setDeviceModel(timingTask.getDeviceModel());
- inspectionTask.setCreateUser(Integer.parseInt(timingTask.getRegistrantId().toString()));
- inspectionTask.setUpdateTime(LocalDateTime.now());
- inspectionTask.setCreateTime(LocalDateTime.now());
- inspectionTask.setUpdateUser(Integer.parseInt(timingTask.getRegistrantId().toString()));
- return inspectionTask;
+ // 2. 瑙f瀽璁惧ID鍒楄〃
+ List<Long> deviceIds;
+ try {
+ deviceIds = JSON.parseArray(timingTask.getDeviceIds(), Long.class);
+ } catch (Exception e) {
+ throw new RuntimeException("璁惧ID鏍煎紡閿欒");
+ }
+
+ if (CollectionUtils.isEmpty(deviceIds)) {
+ return;
+ }
+
+ // 3. 鎵归噺鏌ヨ璁惧淇℃伅
+ List<DeviceLedger> deviceLedgers = deviceLedgerMapper.selectBatchIds(deviceIds);
+ if (CollectionUtils.isEmpty(deviceLedgers)) {
+ return;
+ }
+
+ // 4. 杞崲涓篗ap
+ Map<Long, DeviceLedger> deviceLedgerMap = deviceLedgers.stream()
+ .collect(Collectors.toMap(DeviceLedger::getId, Function.identity()));
+
+ // 5. 鎵归噺鏋勫缓宸℃浠诲姟
+ List<DeviceMaintenance> inspectionTaskList = new ArrayList<>();
+ LocalDateTime now = LocalDateTime.now();
+
+ Integer createUser = null;
+ if (timingTask.getRegistrantId() != null) {
+ try {
+ createUser = Math.toIntExact(timingTask.getRegistrantId());
+ } catch (ArithmeticException e) {
+ throw new RuntimeException("鐢ㄦ埛ID瓒呭嚭鏈夋晥鑼冨洿");
+ }
+ }
+
+ for (Long deviceId : deviceIds) {
+ DeviceLedger deviceLedger = deviceLedgerMap.get(deviceId);
+ if (deviceLedger == null) {
+ continue;
+ }
+
+ DeviceMaintenance inspectionTask = new DeviceMaintenance();
+
+ // 璁剧疆璁惧鐩稿叧淇℃伅
+ inspectionTask.setDeviceLedgerId(deviceId);
+ inspectionTask.setDeviceName(deviceLedger.getDeviceName());
+ inspectionTask.setDeviceModel(deviceLedger.getDeviceModel());
+
+ // 璁剧疆浠诲姟鐩稿叧淇℃伅
+ inspectionTask.setMaintenanceTaskId(timingTask.getId());
+ inspectionTask.setMaintenancePlanTime(now);
+ inspectionTask.setFrequencyType(timingTask.getFrequencyType());
+ inspectionTask.setFrequencyDetail(timingTask.getFrequencyDetail());
+
+ // 璁剧疆鐘舵�佸拰鏃堕棿
+ inspectionTask.setStatus(0);
+ inspectionTask.setCreateTime(now);
+ inspectionTask.setUpdateTime(now);
+
+ // 璁剧疆鐢ㄦ埛淇℃伅
+ inspectionTask.setTenantId(timingTask.getTenantId());
+ inspectionTask.setCreateUser(createUser);
+ inspectionTask.setUpdateUser(createUser);
+
+ inspectionTaskList.add(inspectionTask);
+ }
+
+ if (!inspectionTaskList.isEmpty()) {
+ try {
+ deviceMaintenanceService.saveBatch(inspectionTaskList);
+ } catch (Exception e) {
+ throw new RuntimeException("鍒涘缓宸℃浠诲姟澶辫触");
+ }
+ }
}
--
Gitblit v1.9.3