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; import org.jeecg.modules.eam.service.IEamThirdMaintenanceWorkPlanSheetService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import java.util.Date; import java.util.List; /** * @Description: “三级保养工作计划单 * @Author: jeecg-boot * @Date: 2025-09-02 * @Version: V1.0 */ @Service public class EamThirdMaintenanceWorkPlanSheetServiceImpl extends ServiceImpl implements IEamThirdMaintenanceWorkPlanSheetService { @Autowired private IEamBaseHFCodeService hfCodeService; /** * 通过设备编号,保养日期查询 * @param equipmentCode,maintenanceDate * @return */ @Override public EamThirdMaintenanceWorkPlanSheet getByEquipmentCodeAndMaintenanceDate(String equipmentCode, java.util.Date maintenanceDate){ List list = this.baseMapper.selectList(new QueryWrapper() .eq("equipment_code",equipmentCode).eq("maintenance_date",maintenanceDate)); if(list == null || list.isEmpty()) { return null; }else { return list.get(0); } } /** * 新增 * @param eamThirdMaintenanceWorkPlanSheet * @return */ @Override public boolean add(EamThirdMaintenanceWorkPlanSheet eamThirdMaintenanceWorkPlanSheet){ //三级保养工作计划单 EamBaseHFCode eamBaseHFCode = hfCodeService.selectByCategory(HfTemplateCategoryEnum.THIRD_MAINTENANCE_WORK_PLAN_SHEET.name()); if(eamBaseHFCode == null) { 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 list = this.baseMapper.selectList(new QueryWrapper() .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()); } } }