From 0d06048c5d560e301bf17fad476975c8ffffcb56 Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期五, 05 九月 2025 16:07:31 +0800
Subject: [PATCH] 添加三级保养工作计划单生成规则

---
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamThirdMaintenanceWorkPlanSheetServiceImpl.java |  103 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 103 insertions(+), 0 deletions(-)

diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamThirdMaintenanceWorkPlanSheetServiceImpl.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamThirdMaintenanceWorkPlanSheetServiceImpl.java
index a5da189..0801543 100644
--- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamThirdMaintenanceWorkPlanSheetServiceImpl.java
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamThirdMaintenanceWorkPlanSheetServiceImpl.java
@@ -1,8 +1,12 @@
 package org.jeecg.modules.eam.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.modules.eam.constant.HfTemplateCategoryEnum;
 import org.jeecg.modules.eam.entity.EamBaseHFCode;
+import org.jeecg.modules.eam.entity.EamEquipment;
 import org.jeecg.modules.eam.entity.EamThirdMaintenanceWorkPlanSheet;
 import org.jeecg.modules.eam.mapper.EamThirdMaintenanceWorkPlanSheetMapper;
 import org.jeecg.modules.eam.service.IEamBaseHFCodeService;
@@ -11,6 +15,9 @@
 import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import java.util.Date;
+import java.util.List;
 
 /**
  * @Description: 鈥滀笁绾т繚鍏诲伐浣滆鍒掑崟
@@ -25,6 +32,21 @@
     private IEamBaseHFCodeService hfCodeService;
 
     /**
+     * 閫氳繃璁惧缂栧彿锛屼繚鍏绘棩鏈熸煡璇�
+     * @param equipmentCode,maintenanceDate
+     * @return
+     */
+    @Override
+    public EamThirdMaintenanceWorkPlanSheet getByEquipmentCodeAndMaintenanceDate(String equipmentCode, java.util.Date maintenanceDate){
+        List<EamThirdMaintenanceWorkPlanSheet> list = this.baseMapper.selectList(new QueryWrapper<EamThirdMaintenanceWorkPlanSheet>()
+                .eq("equipment_code",equipmentCode).eq("maintenance_date",maintenanceDate));
+        if(list == null || list.isEmpty()) {
+            return null;
+        }else {
+            return list.get(0);
+        }
+    }
+    /**
      * 鏂板
      * @param eamThirdMaintenanceWorkPlanSheet
      * @return
@@ -37,6 +59,87 @@
             throw new JeecgBootException("鏈厤缃笁绾т繚鍏诲伐浣滆鍒掑崟鐨凥F缂栫爜锛屾坊鍔犲け璐ワ紒");
         }
         eamThirdMaintenanceWorkPlanSheet.setHfCode(eamBaseHFCode.getHfCode());
+        eamThirdMaintenanceWorkPlanSheet.setDelFlag(0);
         return super.save(eamThirdMaintenanceWorkPlanSheet);
     }
+
+    /**
+     * existsByEquipmentAndDate
+     * @param equipmentCode
+     * @param maintenanceDate
+     * @return
+     */
+    @Override
+    public boolean existsByEquipmentAndDate(String equipmentCode, Date maintenanceDate){
+        List<EamThirdMaintenanceWorkPlanSheet> list = this.baseMapper.selectList(new QueryWrapper<EamThirdMaintenanceWorkPlanSheet>()
+                .eq("equipment_code",equipmentCode).eq("maintenance_date",maintenanceDate));
+        return list != null && !list.isEmpty();
+    }
+
+    /**
+     * 澶勭悊淇濆吇鏃ユ湡鍙樻洿锛堝鍒犳敼鏌ワ級
+     */
+    @Override
+    public void processMaintenanceDateChange(EamEquipment equipment, Date oldDate, Date newDate) {
+        String equipmentCode = equipment.getEquipmentCode();
+        //鏃ユ湡浠庢湁鍊煎彉涓簄ull 鈫� 鍒犻櫎璁″垝
+        if (oldDate != null && newDate == null) {
+            deleteMaintenancePlan(equipmentCode, oldDate);
+        }
+        //鏃ユ湡浠巒ull鍙樹负鏈夊�� 鈫� 鏂板璁″垝
+        else if (oldDate == null && newDate != null) {
+            createMaintenancePlan(equipment, newDate);
+        }
+        //鏃ユ湡鍊煎彂鐢熷彉鍖� 鈫� 鏇存柊璁″垝鏃ユ湡
+        else if (oldDate != null && !oldDate.equals(newDate)) {
+            updateMaintenancePlanDate(equipmentCode, oldDate, newDate,equipment);
+        }
+    }
+
+    /**
+     * 鍒涘缓淇濆吇璁″垝
+     */
+    @Override
+    public void createMaintenancePlan(EamEquipment equipment, Date maintenanceDate) {
+        if (maintenanceDate == null) return;
+        // 閬垮厤閲嶅鍒涘缓
+        if (this.existsByEquipmentAndDate(
+                equipment.getEquipmentCode(), maintenanceDate)) {
+            return;
+        }
+        EamThirdMaintenanceWorkPlanSheet plan = new EamThirdMaintenanceWorkPlanSheet();
+        plan.setEquipmentCode(equipment.getEquipmentCode());
+        plan.setEquipmentName(equipment.getEquipmentName());
+        plan.setFactoryOrgCode(equipment.getFactoryOrgCode());
+        plan.setEquipmentModel(equipment.getEquipmentModel());
+        plan.setMaintenanceDate(maintenanceDate);
+        this.add(plan);
+    }
+
+    /**
+     * 鏇存柊淇濆吇璁″垝鏃ユ湡
+     */
+    private void updateMaintenancePlanDate(String equipmentCode, Date oldDate, Date newDate,EamEquipment equipment) {
+        EamThirdMaintenanceWorkPlanSheet plan = this
+                .getByEquipmentCodeAndMaintenanceDate(equipmentCode, oldDate);
+
+        if (plan != null) {
+            plan.setMaintenanceDate(newDate);
+            this.updateById(plan);
+        }else {
+            createMaintenancePlan(equipment, newDate);
+        }
+    }
+
+    /**
+     * 鍒犻櫎淇濆吇璁″垝
+     */
+    private void deleteMaintenancePlan(String equipmentCode, Date date) {
+        EamThirdMaintenanceWorkPlanSheet plan = this
+                .getByEquipmentCodeAndMaintenanceDate(equipmentCode, date);
+
+        if (plan != null) {
+            this.removeById(plan.getId());
+        }
+    }
 }

--
Gitblit v1.9.3