From b72bb7cba52850c078157ffd95a45edf41751110 Mon Sep 17 00:00:00 2001
From: “djh” <“3298565835@qq.com”>
Date: Wed, 27 May 2026 15:05:17 +0800
Subject: [PATCH] 新增复制

---
 multi-system/src/main/java/com/gkhy/exam/system/service/impl/CalibrationMonitoringEquipmentServiceImpl.java |   83 ++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 80 insertions(+), 3 deletions(-)

diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/CalibrationMonitoringEquipmentServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/CalibrationMonitoringEquipmentServiceImpl.java
index cbf0ea0..4355f78 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/CalibrationMonitoringEquipmentServiceImpl.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/CalibrationMonitoringEquipmentServiceImpl.java
@@ -1,21 +1,25 @@
 package com.gkhy.exam.system.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.gkhy.exam.common.api.CommonPage;
 import com.gkhy.exam.common.api.CommonResult;
 import com.gkhy.exam.common.constant.UserConstant;
+import com.gkhy.exam.common.exception.ApiException;
 import com.gkhy.exam.common.utils.PageUtils;
 import com.gkhy.exam.common.utils.SecurityUtils;
-import com.gkhy.exam.system.domain.AnnualVerificationPlan;
 import com.gkhy.exam.system.domain.CalibrationMonitoringEquipment;
 import com.gkhy.exam.system.mapper.CalibrationMonitoringEquipmentMapper;
 import com.gkhy.exam.system.service.CalibrationMonitoringEquipmentService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -57,10 +61,83 @@
     @Override
     public CommonResult deletedCalibrationMonitoringEquipment(Long id) {
         int i = calibrationMonitoringEquipmentMapper.update(new CalibrationMonitoringEquipment(),
-                new LambdaUpdateWrapper<CalibrationMonitoringEquipment>().eq(CalibrationMonitoringEquipment::getId, id).set(CalibrationMonitoringEquipment::getDelFlag, UserConstant.DEPT_DISABLE)
+                new LambdaUpdateWrapper<CalibrationMonitoringEquipment>().eq(CalibrationMonitoringEquipment::getId, id).set(CalibrationMonitoringEquipment::getDelFlag, UserConstant.DISENABLE)
                         .set(CalibrationMonitoringEquipment::getUpdateTime, LocalDateTime.now()).set(CalibrationMonitoringEquipment::getUpdateBy, SecurityUtils.getUsername())
         );
 
         return CommonResult.success();
     }
+
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public CommonResult copyCalibrationMonitoringEquipment(Integer companyId, String sourceYear, String targetYear) {
+        if (ObjectUtils.isEmpty(companyId)) {
+            return CommonResult.failed("公司ID不能为空");
+        }
+
+        if (ObjectUtils.isEmpty(sourceYear) || ObjectUtils.isEmpty(targetYear)) {
+            return CommonResult.failed("源年份和目标年份不能为空");
+        }
+
+        if (sourceYear.equals(targetYear)) {
+            return CommonResult.failed("源年份和目标年份不能相同");
+        }
+
+        LambdaQueryWrapper<CalibrationMonitoringEquipment> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(CalibrationMonitoringEquipment::getDelFlag, UserConstant.ENABLE)
+                .eq(CalibrationMonitoringEquipment::getCompanyId, companyId);
+
+        List<CalibrationMonitoringEquipment> sourceEquipments = calibrationMonitoringEquipmentMapper.selectList(queryWrapper);
+
+        if (ObjectUtils.isEmpty(sourceEquipments)) {
+            return CommonResult.failed("未找到源公司的设备校准数据");
+        }
+
+        List<CalibrationMonitoringEquipment> filteredEquipments = sourceEquipments.stream()
+                .filter(equipment -> equipment.getCalibrationTime() != null
+                        && String.valueOf(equipment.getCalibrationTime().getYear()).equals(sourceYear))
+                .collect(Collectors.toList());
+
+        if (ObjectUtils.isEmpty(filteredEquipments)) {
+            return CommonResult.failed("未找到" + sourceYear + "年的设备校准数据");
+        }
+
+        int successCount = 0;
+        for (CalibrationMonitoringEquipment sourceEquipment : filteredEquipments) {
+            CalibrationMonitoringEquipment newEquipment = new CalibrationMonitoringEquipment();
+
+            newEquipment.setCompanyId(sourceEquipment.getCompanyId());
+            newEquipment.setDeviceName(sourceEquipment.getDeviceName());
+            newEquipment.setDeviceNumber(sourceEquipment.getDeviceNumber());
+            newEquipment.setCalibrationNumber(sourceEquipment.getCalibrationNumber());
+
+            LocalDateTime newCalibrationTime = sourceEquipment.getCalibrationTime()
+                    .withYear(Integer.parseInt(targetYear));
+            newEquipment.setCalibrationTime(newCalibrationTime);
+
+            newEquipment.setCalibrationCompany(sourceEquipment.getCalibrationCompany());
+            newEquipment.setCalibrationResult(sourceEquipment.getCalibrationResult());
+            newEquipment.setConfirmUser(sourceEquipment.getConfirmUser());
+            newEquipment.setConfirmTime(sourceEquipment.getConfirmTime());
+            newEquipment.setExecutiveUser(sourceEquipment.getExecutiveUser());
+            newEquipment.setExecutiveTime(sourceEquipment.getExecutiveTime());
+            newEquipment.setDelFlag(UserConstant.ENABLE);
+            newEquipment.setCreateBy(SecurityUtils.getUsername());
+            newEquipment.setCreateTime(LocalDateTime.now());
+            newEquipment.setVersion(0);
+
+            int insertResult = calibrationMonitoringEquipmentMapper.insert(newEquipment);
+            if (insertResult > 0) {
+                successCount++;
+            }
+        }
+
+        if (successCount == 0) {
+            throw new ApiException("复制设备校准数据失败");
+        }
+
+        return CommonResult.success("成功复制" + successCount + "条设备校准数据");
+    }
+
 }

--
Gitblit v1.9.2