From 2f07589b54d56085af77b50d580890cd4130b444 Mon Sep 17 00:00:00 2001
From: 吴羡 <16976746+Xian-TT3@user.noreply.gitee.com>
Date: 星期一, 19 十月 2026 15:19:53 +0800
Subject: [PATCH] 设备模块后端业务规则、计划接口与日期联动
---
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMetricRecordController.java | 49 ++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 48 insertions(+), 1 deletions(-)
diff --git a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMetricRecordController.java b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMetricRecordController.java
index 2f52724..6984929 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMetricRecordController.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMetricRecordController.java
@@ -2,12 +2,15 @@
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.numgen.NumberGenerator;
import com.ruoyi.common.utils.FileSaveUtil;
import com.ruoyi.device.dto.DeviceMetricRecordDto;
+import com.ruoyi.device.mapper.DeviceMapper;
+import com.ruoyi.device.pojo.Device;
import com.ruoyi.device.pojo.DeviceMetricRecord;
import com.ruoyi.device.pojo.DeviceMetricsCopy;
import com.ruoyi.device.service.DeviceMetricRecordService;
@@ -18,6 +21,8 @@
import org.springframework.web.bind.annotation.*;
import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
import java.util.Date;
import java.util.Locale;
@@ -43,6 +48,9 @@
@Autowired
private NumberGenerator<DeviceMetricRecord> numberGenerator;
+ @Autowired
+ private DeviceMapper deviceMapper;
+
@Operation(summary = "璁惧鏍″噯鍒嗛〉鏌ヨ")
@GetMapping("/deviceMetricRecordPage")
public Result deviceMetricRecordPage(@RequestParam("deviceId") Integer deviceId, Page page, @RequestParam("type") String type) {
@@ -62,12 +70,51 @@
}
deviceMetricRecordService.saveOrUpdate(deviceMetricRecordDto);
if (CollectionUtils.isNotEmpty(deviceMetricRecordDto.getDeviceMetricsCopyList())) {
- deviceMetricRecordDto.getDeviceMetricsCopyList().forEach(i -> i.setDeviceMetricsId(deviceMetricRecordDto.getId()));
+ // 鏍″噯鏉$洰鏉ヨ嚜鏍″噯椤圭洰缁存姢琛紝涓婚敭涓嶈兘甯﹁繘璁板綍鏄庣粏琛紝鍚﹀垯浼氳鐩栧巻鍙茶褰曠殑鏉$洰
+ deviceMetricRecordDto.getDeviceMetricsCopyList().forEach(i -> {
+ i.setId(null);
+ i.setDeviceMetricsId(deviceMetricRecordDto.getId());
+ });
deviceMetricsCopyService.saveOrUpdateBatch(deviceMetricRecordDto.getDeviceMetricsCopyList());
}
+ // 鏍″噯瀹屾垚鍚庯紝鎶婅澶囨。妗堢殑鏈�杩�/涓嬫鏍″噯鏃ユ湡婊氬姩鍒版柊鍛ㄦ湡
+ if ("calibrate".equals(deviceMetricRecordDto.getType()) && deviceMetricRecordDto.getDeviceId() != null
+ && deviceMetricRecordDto.getCalibrationDate() != null) {
+ updateDeviceCalibrationDate(deviceMetricRecordDto);
+ }
return Result.success();
}
+ /**
+ * 婊氬姩璁惧妗f鐨勬渶杩�/涓嬫鏍″噯鏃ユ湡锛氫粎褰撴湰娆℃牎鍑嗘棩鏈熸瘮妗f涓殑鏈�杩戞牎鍑嗘棩鏈熸洿鏂版椂鐢熸晥
+ */
+ private void updateDeviceCalibrationDate(DeviceMetricRecordDto dto) {
+ Device device = deviceMapper.selectById(dto.getDeviceId());
+ if (device == null) {
+ return;
+ }
+ LocalDateTime calibrationDate = LocalDateTime.ofInstant(dto.getCalibrationDate().toInstant(), ZoneId.systemDefault());
+ if (device.getLastCalibrationDate() != null && !calibrationDate.isAfter(device.getLastCalibrationDate())) {
+ return;
+ }
+ device.setLastCalibrationDate(calibrationDate);
+ LocalDateTime next = null;
+ if (StringUtils.isNotBlank(device.getCalibrationDate())) {
+ try {
+ next = calibrationDate.plusMonths(Long.parseLong(device.getCalibrationDate().trim()));
+ } catch (NumberFormatException ignored) {
+ }
+ }
+ if (next == null && dto.getNextCalibrationDate() != null) {
+ next = LocalDateTime.ofInstant(dto.getNextCalibrationDate().toInstant(), ZoneId.systemDefault());
+ }
+ if (next != null) {
+ device.setNextCalibrationDate(next);
+ device.setActivationDate(next);
+ }
+ deviceMapper.updateById(device);
+ }
+
@Operation(summary = "璁惧鏍″噯 鍒犻櫎")
@DeleteMapping("/deleteDeviceMetricRecord")
public Result deleteDeviceMetricRecord(@RequestParam("id") Integer id) {
--
Gitblit v1.9.3