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