lyh
昨天 0d06048c5d560e301bf17fad476975c8ffffcb56
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("未配置三级保养工作计划单的HF编码,添加失败!");
        }
        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();
        //日期从有值变为null → 删除计划
        if (oldDate != null && newDate == null) {
            deleteMaintenancePlan(equipmentCode, oldDate);
        }
        //日期从null变为有值 → 新增计划
        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());
        }
    }
}