lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/MaintenanceStatusEnum.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,8 @@ package org.jeecg.modules.eam.constant; public enum MaintenanceStatusEnum { QUALIFIED, //åæ ¼ RESTRICTED, //éç¨ PROHIBITED, //ç¦ç¨ ; } lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/ThirdMaintenanceStatusEnum.java
@@ -18,6 +18,7 @@ CHANGE, // åæ´ä¸ CANCEL,// 已忶 ABOLISH, //å·²ä½åº EXPIRED, //å·²è¿æ ; public static ThirdMaintenanceStatusEnum getInstance(String code) { lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamThirdMaintenanceOrderDetail.java
@@ -1,7 +1,5 @@ package org.jeecg.modules.eam.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; @@ -111,4 +109,15 @@ @Excel(name = "ç¬¬äºæ¬¡æ£éªå¼å¸¸", width = 15) @ApiModelProperty(value = "ç¬¬äºæ¬¡æ£éªå¼å¸¸") private String secondInspectException; public EamThirdMaintenanceOrderDetail() { } public EamThirdMaintenanceOrderDetail(EamMaintenanceStandardDetail detail) { this.itemCode = detail.getItemCode(); this.itemPart = detail.getItemPart(); this.itemName = detail.getItemName(); this.itemDemand = detail.getItemDemand(); } } lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamEquipmentMapper.java
@@ -1,6 +1,7 @@ package org.jeecg.modules.eam.mapper; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Constants; @@ -53,4 +54,10 @@ */ List<EamEquipment> selectTechnicalEquipmentList(@Param(Constants.WRAPPER) Wrapper<EamEquipment> queryWrapper); /** * è·åå¯çæä¸ä¿å·¥åç设å¤å表 * @return */ List<EamEquipment> selectThreeMaintenanceEquipmentList(@Param(Constants.WRAPPER) Wrapper<EamEquipment> queryWrapper); } lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamEquipmentMapper.xml
@@ -53,8 +53,25 @@ ext.technology_check_period, ext.latest_technology_check, ext.next_technology_check, ext.technology_genarate_flag, ext.third_maintenance_genarate_flag ext.technology_generate_flag, ext.third_maintenance_generate_flag from eam_equipment e left join eam_equipment_extend ext on e.id = ext.id ${ew.customSqlSegment} </select> <select id="selectThreeMaintenanceEquipmentList" resultType="org.jeecg.modules.eam.entity.EamEquipment"> select e.*, ext.latest_third_maintenance, ext.next_third_maintenance, ext.technology_status, ext.third_maintenance_period, ext.technology_check_period, ext.latest_technology_check, ext.next_technology_check, ext.technology_generate_flag, ext.third_maintenance_generate_flag from eam_equipment e left join eam_equipment_extend ext on e.id = ext.id lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentExtendService.java
@@ -37,4 +37,14 @@ * @return */ boolean updateTechnologyParam(String equipmentId, String status, Date evaluationDate, String technologyGenerateFlag); /** * æ´æ°è®¾å¤ä¸ä¿åä¿å »æ¥æ * @param equipmentId 设å¤ID * @param status ä¿å »ç¶æ * @param evaluationDate ä¸ä¿æ¥æ * @param thirdMaintenanceGenerateFlag ä¸ä¿å·¥åçææ è¯ * @return */ boolean updateThirdMaintenanceParam(String equipmentId, String status, Date evaluationDate, String thirdMaintenanceGenerateFlag); } lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentService.java
@@ -77,4 +77,9 @@ * è·åå¯çæææ¯é´å®å·¥åç设å¤å表 */ List<EamEquipment> selectTechnicalEquipmentList(); /** * è·åå¯çæä¸ä¿å·¥åç设å¤å表 */ List<EamEquipment> selectThreeMaintenanceEquipmentList(); } lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentExtendServiceImpl.java
@@ -74,4 +74,28 @@ } return this.getBaseMapper().updateById(entity) > 0; } @Override @Transactional(rollbackFor = Exception.class) public boolean updateThirdMaintenanceParam(String equipmentId, String status, Date evaluationDate, String thirdMaintenanceGenerateFlag) { if (StringUtils.isBlank(status) && StringUtils.isBlank(thirdMaintenanceGenerateFlag) && evaluationDate == null) { return false; } EamEquipmentExtend entity = this.getBaseMapper().selectById(equipmentId); UpdateWrapper<EamEquipmentExtend> updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", equipmentId); if (StringUtils.isNotBlank(status)) { entity.setMaintenanceStatus(status); } if (StringUtils.isNotBlank(thirdMaintenanceGenerateFlag)) { entity.setThirdMaintenanceGenerateFlag(thirdMaintenanceGenerateFlag); } if (evaluationDate != null) { entity.setLatestThirdMaintenance(evaluationDate); if (entity.getThirdMaintenancePeriod() != null) { entity.setNextThirdMaintenance(DateUtils.addYear(entity.getLatestThirdMaintenance(), entity.getThirdMaintenancePeriod())); } } return this.getBaseMapper().updateById(entity) > 0; } } lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java
@@ -417,6 +417,16 @@ return this.getBaseMapper().selectTechnicalEquipmentList(queryWrapper); } @Override public List<EamEquipment> selectThreeMaintenanceEquipmentList() { QueryWrapper<EamEquipment> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("e.del_flag", CommonConstant.DEL_FLAG_0); queryWrapper.ne("ext.maintenance_status", MaintenanceStatusEnum.PROHIBITED.name()); queryWrapper.isNotNull("ext.third_maintenance_period"); queryWrapper.isNotNull("ext.next_third_maintenance"); return this.getBaseMapper().selectThreeMaintenanceEquipmentList(queryWrapper); } /** * è·åææç产线idï¼å 嫿æä¸çº§ï¼ */ lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/TechnicalStatusEvaluationGenerateJob.java
@@ -106,11 +106,11 @@ //è·å设å¤å表 List<EamEquipment> equipmentList = equipmentService.selectTechnicalEquipmentList(); if (CollectionUtil.isEmpty(equipmentList)) { log.warn("没æéè¦çæææ¯ç¶æé´å®å·¥åå¾è®¾å¤ï¼æ¥æï¼{}", DateUtils.date2Str(DateUtils.date_sdf.get())); log.warn("没æéè¦çæææ¯ç¶æé´å®å·¥åç设å¤ï¼æ¥æï¼{}", DateUtils.date2Str(DateUtils.date_sdf.get())); quartzLog.setIsSuccess(-1); long endTime = System.currentTimeMillis(); quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); quartzLog.setExceptionDetail("没æéè¦çæææ¯ç¶æé´å®å·¥åå¾è®¾å¤ï¼æ¥æï¼" + DateUtils.date2Str(DateUtils.date_sdf.get())); quartzLog.setExceptionDetail("没æéè¦çæææ¯ç¶æé´å®å·¥åç设å¤ï¼æ¥æï¼" + DateUtils.date2Str(DateUtils.date_sdf.get())); sysQuartzLogService.save(quartzLog); return; } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/ThirdMaintenanceOrderExpiredJob.java
@@ -2,17 +2,12 @@ import cn.hutool.core.collection.CollectionUtil; import lombok.extern.slf4j.Slf4j; import org.jeecg.modules.eam.constant.SecondMaintenanceStatusEnum; import org.jeecg.common.util.DateUtils; import org.jeecg.modules.eam.constant.ThirdMaintenanceStatusEnum; import org.jeecg.modules.eam.constant.WeekMaintenanceStatusEnum; import org.jeecg.modules.eam.entity.EamSecondMaintenanceOrder; import org.jeecg.modules.eam.entity.EamEquipmentExtend; import org.jeecg.modules.eam.entity.EamThirdMaintenanceOrder; import org.jeecg.modules.eam.service.IEamSecondMaintenanceOrderService; import org.jeecg.modules.eam.service.IEamEquipmentExtendService; import org.jeecg.modules.eam.service.IEamThirdMaintenanceOrderService; import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness; import org.jeecg.modules.flowable.apithird.business.service.IFlowMyBusinessService; import org.jeecg.modules.flowable.service.IFlowTaskService; import org.jeecg.common.util.ThrowableUtil; import org.jeecg.modules.quartz.entity.QuartzJob; import org.jeecg.modules.quartz.entity.SysQuartzLog; import org.jeecg.modules.quartz.service.IQuartzJobService; @@ -24,25 +19,26 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; import java.util.Date; import java.util.List; /** * @Author: Lius * @CreateTime: 2025-07-29 * @Description: ä¸ä¿å·¥åè¿æ */ @Component @Slf4j public class ThirdMaintenanceOrderExpiredJob implements Job { @Autowired private IEamThirdMaintenanceOrderService eamThirdMaintenanceOrderService; @Autowired private IFlowMyBusinessService flowMyBusinessService; @Autowired private IFlowTaskService flowTaskService; @Autowired private ISysQuartzLogService sysQuartzLogService; @Autowired private IQuartzJobService quartzJobService; @Autowired private IEamEquipmentExtendService equipmentExtendService; @Override @Transactional(rollbackFor = Exception.class) @@ -55,41 +51,32 @@ quartzLog.setJobId(byJobClassName.get(0).getId()); } long startTime = System.currentTimeMillis(); LocalDate now = LocalDate.now(); try { List<EamThirdMaintenanceOrder> unCompleteOrderList = eamThirdMaintenanceOrderService.lambdaQuery() .lt(EamThirdMaintenanceOrder::getMaintenanceDate, now.toString()) .in(EamThirdMaintenanceOrder::getMaintenanceStatus, ThirdMaintenanceStatusEnum.WAIT_MAINTENANCE, ThirdMaintenanceStatusEnum.UNDER_MAINTENANCE) .orderByDesc(EamThirdMaintenanceOrder::getMaintenanceDate) .list(); if (CollectionUtil.isEmpty(unCompleteOrderList)) { //没æéè¦å¤ççæ°æ® return; } for (EamThirdMaintenanceOrder order : unCompleteOrderList) { if (ThirdMaintenanceStatusEnum.WAIT_MAINTENANCE.name().equals(order.getMaintenanceStatus())) { order.setMaintenanceStatus(ThirdMaintenanceStatusEnum.ABOLISH.name()); } else if (ThirdMaintenanceStatusEnum.UNDER_MAINTENANCE.name().equals(order.getMaintenanceStatus())) { //å·²ç»è¢«æ¥å 使ªæ§è¡å®æ order.setMaintenanceStatus(ThirdMaintenanceStatusEnum.ABOLISH.name()); //强å¶ç»ææµç¨ å é¤ç¨æ·çæ¤å¾ åä»»å¡ FlowMyBusiness flowMyBusiness = flowMyBusinessService.selectByDataId(order.getId()); if (flowMyBusiness != null) { flowTaskService.end(flowMyBusiness.getProcessInstanceId(), "è¿æå é¤"); } } } eamThirdMaintenanceOrderService.updateBatchById(unCompleteOrderList); List<EamThirdMaintenanceOrder> list = eamThirdMaintenanceOrderService.selectUnCompletedThirdMaintenanceOrderList(); if (CollectionUtil.isEmpty(list)) { log.info("没æéè¦è¿æçå·¥åï¼æ¥æï¼{}", DateUtils.date2Str(DateUtils.date_sdf.get())); quartzLog.setIsSuccess(0); } catch (Exception e) { log.error("ä¸ä¿è¿ææ§è¡å®æ¶ä»»å¡å¤±è´¥ï¼{}", e.getMessage(), e); quartzLog.setIsSuccess(-1); quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e)); long endTime = System.currentTimeMillis(); quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); quartzLog.setExceptionDetail("没æéè¦è¿æçå·¥åï¼æ¥æï¼" + DateUtils.date2Str(DateUtils.date_sdf.get())); sysQuartzLogService.save(quartzLog); return; } int expiredCount = 0; for (EamThirdMaintenanceOrder order : list) { EamEquipmentExtend extend = equipmentExtendService.getById(order.getEquipmentId()); if (extend == null) { log.error("设å¤ä¿¡æ¯ä¸åå¨ï¼è¯·æ£æ¥ï¼ 设å¤IDï¼{}, æ¥æï¼{}", order.getEquipmentId(), DateUtils.date2Str(DateUtils.date_sdf.get())); continue; } if (ThirdMaintenanceStatusEnum.WAIT_MAINTENANCE.name().equals(order.getMaintenanceStatus()) || ThirdMaintenanceStatusEnum.FREEZE.name().equals(order.getMaintenanceStatus())) { order.setMaintenanceStatus(ThirdMaintenanceStatusEnum.EXPIRED.name()); eamThirdMaintenanceOrderService.updateById(order); } } quartzLog.setIsSuccess(0); long endTime = System.currentTimeMillis(); quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); quartzLog.setExceptionDetail("è¿æäº{" + expiredCount + "}个工åï¼è¿æ{" + (list.size() - expiredCount) + "}ä¸ªå·¥åæ£å¨æ§è¡ä¸ï¼ç¦ç¨äº{" + list.size() + "}å°è®¾å¤, æ¥æï¼" + DateUtils.date2Str(DateUtils.date_sdf.get())); sysQuartzLogService.save(quartzLog); } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/ThirdMaintenanceOrderGenerateJob.java
@@ -2,21 +2,21 @@ import cn.hutool.core.collection.CollectionUtil; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.util.DateUtils; import org.jeecg.common.util.ThrowableUtil; import org.jeecg.modules.eam.constant.BusinessCodeConst; import org.jeecg.modules.eam.constant.MaintenanceCategoryEnum; import org.jeecg.modules.eam.constant.OrderCreationMethodEnum; import org.jeecg.modules.eam.entity.*; import org.jeecg.modules.eam.request.EamThirdMaintenanceRequest; import org.jeecg.modules.eam.service.IEamMaintenanceStandardDetailService; import org.jeecg.modules.eam.service.IEamMaintenanceStandardService; import org.jeecg.modules.eam.service.IEamThirdMaintenanceOrderService; import org.jeecg.modules.eam.service.*; import org.jeecg.modules.quartz.entity.QuartzJob; import org.jeecg.modules.quartz.entity.SysQuartzLog; import org.jeecg.modules.quartz.service.IQuartzJobService; import org.jeecg.modules.quartz.service.ISysQuartzLogService; import org.jeecg.modules.system.entity.SysParams; import org.jeecg.modules.system.service.ISysBusinessCodeRuleService; import org.jeecg.modules.system.service.ISysParamsService; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; @@ -25,14 +25,24 @@ import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; /** * @Author: Lius * @CreateTime: 2025-07-29 * @Description: ä¸ä¿å·¥åéå® */ @Component @Slf4j public class ThirdMaintenanceOrderGenerateJob implements Job { @Autowired private IEamEquipmentService equipmentService; @Autowired private ISysParamsService paramsService; @Autowired private IEamThirdMaintenanceOrderService eamThirdMaintenanceOrderService; @Autowired @@ -45,6 +55,8 @@ private ISysQuartzLogService sysQuartzLogService; @Autowired private IQuartzJobService quartzJobService; @Autowired private IEamEquipmentExtendService equipmentExtendService; @Override @Transactional(rollbackFor = Exception.class) @@ -58,81 +70,130 @@ quartzLog.setJobId(byJobClassName.get(0).getId()); } long startTime = System.currentTimeMillis(); /** * è·å é ç½®äº ä¸ä¿æ åç ä¿¡æ¯ */ List<EamMaintenanceStandard> standardList = eamMaintenanceStandardService.queryListByCategory(MaintenanceCategoryEnum.THIRD_MAINTENANCE.name()); if (CollectionUtil.isEmpty(standardList)) { log.warn("没æé 置任ä½ä¸ä¿æ åï¼ä»»å¡ç»æ"); //è·åä¸ä¿ç³»ç»é ç½®åæ° SysParams threeYearMaintOrderPreGenerationDaysParam = paramsService.getSysPramBySettingKey("three_year_maint_order_pre_generation_days"); if (threeYearMaintOrderPreGenerationDaysParam == null) { log.error("æªé ç½®3~4å¹´ææåçæå·¥åçç³»ç»åæ°ï¼æ¥æï¼{}", DateUtils.date2Str(DateUtils.date_sdf.get())); quartzLog.setIsSuccess(-1); long endTime = System.currentTimeMillis(); quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); quartzLog.setExceptionDetail("æªé ç½®3~4å¹´ææåçæå·¥åçç³»ç»åæ°ï¼æ¥æï¼" + DateUtils.date2Str(DateUtils.date_sdf.get())); sysQuartzLogService.save(quartzLog); return; } //å½åæ¥æ LocalDate now = LocalDate.now(); try { for (EamMaintenanceStandard standard : standardList) { if (standard.getMaintenancePeriod() == null || standard.getMaintenancePeriod() < 1) { log.error("ä¸ä¿æ åå¨æè®¾ç½®é误ï¼è¯·å é ç½®æ å卿, standard:{}", standard); continue; } if (standard.getInitialDate() == null) { //设置åå§æ¥æä¸ºåä¸å¤© standard.setInitialDate(DateUtils.localDateToDate(now.minusDays(1))); } // LocalDate generateDate = DateUtils.dateToLocalDate(standard.getInitialDate()); // if (standard.getLastGenerateTime() != null) { // generateDate = DateUtils.dateToLocalDate(standard.getLastGenerateTime()); // } //å 卿 // do { // //åå§æ¥æè®¾ç½®çæ¯è¾æ©ï¼æä»»å¡é¿æ¶é´æ²¡æ§è¡ï¼å¿ 须卿å°ä»å¤©æä¼çæå·¥å // generateDate = generateDate.plusDays(standard.getMaintenancePeriod()); // } while (now.isAfter(generateDate)); // if(!now.isEqual(generateDate)) { // //è¿æªå°çææ¥æï¼è·³è¿æ§è¡ // continue; // } //è·åä¿å »é¡¹æç» List<EamMaintenanceStandardDetail> standardDetailList = eamMaintenanceStandardDetailService.selectByStandardId(standard.getId()); if(CollectionUtil.isEmpty(standardDetailList)) { log.error("ä¸ä¿æ åæ²¡æä¿å »æç»ï¼è¯·å é ç½®ä¿å »æç», standard:{}", standard); continue; } //å¼å§çæ EamThirdMaintenanceRequest request = new EamThirdMaintenanceRequest(); request.setEquipmentId(standard.getEquipmentId()); request.setStandardId(standard.getId()); // request.setMaintenanceDate(DateUtils.localDateToDate(generateDate)); String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.THIRD_MAINTENANCE_CODE_RULE); request.setOrderNum(codeSeq); request.setCreationMethod(OrderCreationMethodEnum.AUTO.name()); List<EamThirdMaintenanceOrderDetail> tableDetailList = new ArrayList<>(); for (EamMaintenanceStandardDetail msd : standardDetailList) { EamThirdMaintenanceOrderDetail tod = new EamThirdMaintenanceOrderDetail(); tod.setItemCode(msd.getItemCode()); tod.setItemName(msd.getItemName()); tod.setItemDemand(msd.getItemDemand()); tod.setItemPart(msd.getItemPart()); tableDetailList.add(tod); } // List<EamThirdMaintenanceOrderDetail> collect = standardDetailList.stream().map(EamThirdMaintenanceOrderDetail::new).collect(Collectors.toList()); request.setTableDetailList(tableDetailList); eamThirdMaintenanceOrderService.addMaintenance(request); // standard.setLastGenerateTime(new Date()); eamMaintenanceStandardService.updateById(standard); } quartzLog.setIsSuccess(0); } catch (Exception e) { log.error("ä¸ä¿çææ§è¡å®æ¶ä»»å¡å¤±è´¥ï¼{}", e.getMessage(), e); int threeYearMaintOrderPreGenerationDays = Integer.parseInt(threeYearMaintOrderPreGenerationDaysParam.getSettingValue()); SysParams oneYearMaintOrderPreGenerationDaysParam = paramsService.getSysPramBySettingKey("one_year_maint_order_pre_generation_days"); if (oneYearMaintOrderPreGenerationDaysParam == null) { log.error("æªé ç½®3~4å¹´ææåçæå·¥åçç³»ç»åæ°ï¼æ¥æï¼{}", DateUtils.date2Str(DateUtils.date_sdf.get())); quartzLog.setIsSuccess(-1); quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e)); long endTime = System.currentTimeMillis(); quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); quartzLog.setExceptionDetail("æªé ç½®3~4å¹´ææåçæå·¥åçç³»ç»åæ°ï¼æ¥æï¼" + DateUtils.date2Str(DateUtils.date_sdf.get())); sysQuartzLogService.save(quartzLog); return; } int oneYearMaintOrderPreGenerationDays = Integer.parseInt(oneYearMaintOrderPreGenerationDaysParam.getSettingValue()); SysParams threeYearMaintOrderPreLockDaysParam = paramsService.getSysPramBySettingKey("three_year_maint_order_pre_lock_days"); if (threeYearMaintOrderPreLockDaysParam == null) { log.error("æªé ç½®3~4å¹´ææåéå®å·¥åçç³»ç»åæ°ï¼æ¥æï¼{}", DateUtils.date2Str(DateUtils.date_sdf.get())); quartzLog.setIsSuccess(-1); long endTime = System.currentTimeMillis(); quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); quartzLog.setExceptionDetail("æªé ç½®3~4å¹´ææåéå®å·¥åçç³»ç»åæ°ï¼æ¥æï¼" + DateUtils.date2Str(DateUtils.date_sdf.get())); sysQuartzLogService.save(quartzLog); return; } int threeYearMaintOrderPreLockDays = Integer.parseInt(threeYearMaintOrderPreLockDaysParam.getSettingValue()); SysParams oneYearMaintOrderPreLockDaysParam = paramsService.getSysPramBySettingKey("one_year_maint_order_pre_lock_days"); if (oneYearMaintOrderPreLockDaysParam == null) { log.error("æªé ç½®1å¹´ææåéå®å·¥åçç³»ç»åæ°ï¼æ¥æï¼{}", DateUtils.date2Str(DateUtils.date_sdf.get())); quartzLog.setIsSuccess(-1); long endTime = System.currentTimeMillis(); quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); quartzLog.setExceptionDetail("æªé ç½®1å¹´ææåéå®å·¥åçç³»ç»åæ°ï¼æ¥æï¼" + DateUtils.date2Str(DateUtils.date_sdf.get())); sysQuartzLogService.save(quartzLog); return; } int oneYearMaintOrderPreLockDays = Integer.parseInt(oneYearMaintOrderPreLockDaysParam.getSettingValue()); //è·å设å¤å表 List<EamEquipment> equipmentList = equipmentService.selectThreeMaintenanceEquipmentList(); if (CollectionUtil.isEmpty(equipmentList)) { log.warn("没æéè¦çæä¸ä¿å·¥åç设å¤ï¼æ¥æï¼{}", DateUtils.date2Str(DateUtils.date_sdf.get())); quartzLog.setIsSuccess(-1); long endTime = System.currentTimeMillis(); quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); quartzLog.setExceptionDetail("没æéè¦çæä¸ä¿å·¥åç设å¤ï¼æ¥æï¼" + DateUtils.date2Str(DateUtils.date_sdf.get())); sysQuartzLogService.save(quartzLog); return; } AtomicInteger successCount = new AtomicInteger(0); AtomicInteger failCount = new AtomicInteger(0); StringBuilder sb = new StringBuilder(); for (EamEquipment eamEquipment : equipmentList) { //夿æ¯å¦ä¸º1å¹´çä¸ä¿å¨æ if (eamEquipment.getThirdMaintenancePeriod() == 1) { //1å¹´æ generateThirdMaintenanceOrder(oneYearMaintOrderPreGenerationDays, oneYearMaintOrderPreLockDays, eamEquipment, successCount, failCount, sb); } else if (eamEquipment.getThirdMaintenancePeriod() == 3 || eamEquipment.getThirdMaintenancePeriod() == 4) { //3~4å¹´æ generateThirdMaintenanceOrder(threeYearMaintOrderPreGenerationDays, threeYearMaintOrderPreLockDays, eamEquipment, successCount, failCount, sb); } } quartzLog.setIsSuccess(0); if (failCount.get() > 0) { quartzLog.setIsSuccess(-1); } sb.append("ä¸ä¿å·¥åçæï¼ãæåï¼").append(successCount.get()).append("ï¼å¤±è´¥ï¼").append(failCount.get()).append("ã"); quartzLog.setExceptionDetail(sb.toString()); long endTime = System.currentTimeMillis(); quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); sysQuartzLogService.save(quartzLog); } private void generateThirdMaintenanceOrder(int orderPreGenerationDays, int orderPreLockDays, EamEquipment equipment, AtomicInteger successCount, AtomicInteger failCount, StringBuilder sb) { LocalDate nextThirdMaintenanceDate = DateUtils.dateToLocalDate(equipment.getNextThirdMaintenance()); LocalDate generateDate = nextThirdMaintenanceDate.minusDays(orderPreGenerationDays); LocalDate lockDate = nextThirdMaintenanceDate.minusDays(orderPreLockDays); if (!LocalDate.now().isBefore(generateDate) && !CommonConstant.STATUS_1.equals(equipment.getThirdMaintenanceGenerateFlag())) { //计ç®å½å¤©éè¦çæ EamMaintenanceStandard standard = eamMaintenanceStandardService.queryByEquipmentIdAndCategory(equipment.getId(), MaintenanceCategoryEnum.THIRD_MAINTENANCE.name()); if (standard == null) { log.warn("设å¤ï¼{}ï¼æªé ç½®ä¸çº§ä¿å »è§èï¼æ æ³çæä¸ä¿å·¥åï¼æ¥æï¼{}", equipment.getEquipmentCode(), DateUtils.date2Str(DateUtils.date_sdf.get())); failCount.incrementAndGet(); sb.append("设å¤ï¼").append(equipment.getEquipmentCode()).append("ï¼æªé ç½®ä¸çº§ä¿å »è§èï¼æ æ³çæä¸ä¿å·¥åï¼"); return; } List<EamMaintenanceStandardDetail> eamMaintenanceStandardDetailList = eamMaintenanceStandardDetailService.selectByStandardId(standard.getId()); if (CollectionUtil.isEmpty(eamMaintenanceStandardDetailList)) { log.warn("设å¤ï¼{}ï¼æªé ç½®ä¸çº§ä¿å »è§èæç»ï¼æ æ³çæä¸ä¿å·¥åï¼æ¥æï¼{}", equipment.getEquipmentCode(), DateUtils.date2Str(DateUtils.date_sdf.get())); failCount.incrementAndGet(); sb.append("设å¤ï¼").append(equipment.getEquipmentCode()).append("ï¼æªé ç½®ä¸çº§ä¿å »è§èæç»ï¼æ æ³çæä¸ä¿å·¥åï¼"); return; } EamThirdMaintenanceRequest request = new EamThirdMaintenanceRequest(); String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.THIRD_MAINTENANCE_CODE_RULE); request.setOrderNum(codeSeq); request.setEquipmentId(equipment.getId()); request.setStandardId(standard.getId()); request.setMaintenanceDate(generateDate.toString()); request.setFreezeOrderDate(DateUtils.localDateToDate(lockDate)); request.setOrderExpirationDate(equipment.getNextThirdMaintenance()); request.setCreationMethod(OrderCreationMethodEnum.AUTO.name()); List<EamThirdMaintenanceOrderDetail> tableDetailList = eamMaintenanceStandardDetailList.stream().map(EamThirdMaintenanceOrderDetail::new).collect(Collectors.toList()); request.setTableDetailList(tableDetailList); try { eamThirdMaintenanceOrderService.addMaintenance(request); successCount.incrementAndGet(); //æ´æ°æ©å±è¡¨ä¸ççææ è¯ equipmentExtendService.updateThirdMaintenanceParam(equipment.getId(), null, null, CommonConstant.STATUS_1); } catch (Exception e) { log.error("设å¤ï¼{}ï¼çæä¸ä¿å·¥å失败ï¼åå ï¼{}", equipment.getEquipmentCode(), e.getMessage(), e); failCount.incrementAndGet(); sb.append("设å¤ï¼").append(equipment.getEquipmentCode()).append("ï¼çæä¸ä¿å·¥å失败ï¼åå ï¼").append(e.getMessage()).append("ï¼"); } } } } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/ThirdMaintenanceOrderLockedJob.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,70 @@ package org.jeecg.modules.eam.job; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.util.DateUtils; import org.jeecg.modules.eam.constant.ThirdMaintenanceStatusEnum; import org.jeecg.modules.eam.entity.EamThirdMaintenanceOrder; import org.jeecg.modules.eam.service.IEamThirdMaintenanceOrderService; import org.jeecg.modules.quartz.entity.QuartzJob; import org.jeecg.modules.quartz.entity.SysQuartzLog; import org.jeecg.modules.quartz.service.IQuartzJobService; import org.jeecg.modules.quartz.service.ISysQuartzLogService; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.util.List; /** * @Author: Lius * @CreateTime: 2025-07-29 * @Description: ä¸ä¿å·¥åéå® */ @Component @Slf4j public class ThirdMaintenanceOrderLockedJob implements Job { @Autowired private ISysQuartzLogService sysQuartzLogService; @Autowired private IQuartzJobService quartzJobService; @Autowired private IEamThirdMaintenanceOrderService eamThirdMaintenanceOrderService; @Override @Transactional(rollbackFor = Exception.class) public void execute(JobExecutionContext context) throws JobExecutionException { //任塿¥å¿ SysQuartzLog quartzLog = new SysQuartzLog(); quartzLog.setCreateTime(new Date()); List<QuartzJob> jobClassName = quartzJobService.findByJobClassName(this.getClass().getName()); if (jobClassName != null && !jobClassName.isEmpty()) { quartzLog.setJobId(jobClassName.get(0).getId()); } long startTime = System.currentTimeMillis(); List<EamThirdMaintenanceOrder> list = eamThirdMaintenanceOrderService.selectWaitMaintenanceOrderList(); if (CollectionUtils.isEmpty(list)) { log.info("没æéè¦éå®çå·¥åï¼æ¥æï¼{}", DateUtils.date2Str(DateUtils.date_sdf.get())); quartzLog.setIsSuccess(0); long endTime = System.currentTimeMillis(); quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); quartzLog.setExceptionDetail("没æéè¦éå®çå·¥åï¼æ¥æï¼" + DateUtils.date2Str(DateUtils.date_sdf.get())); sysQuartzLogService.save(quartzLog); return; } for (EamThirdMaintenanceOrder order : list) { order.setMaintenanceStatus(ThirdMaintenanceStatusEnum.FREEZE.name()); eamThirdMaintenanceOrderService.updateById(order); } quartzLog.setIsSuccess(0); long endTime = System.currentTimeMillis(); quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); quartzLog.setExceptionDetail("éå®äº{" + list.size() + "}æ¡å·¥åï¼æ¥æï¼" + DateUtils.date2Str(DateUtils.date_sdf.get())); sysQuartzLogService.save(quartzLog); } } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamThirdMaintenanceRequest.java
@@ -53,6 +53,20 @@ @DateTimeFormat(pattern = "yyyy-MM-dd") private String maintenanceDate; /** * éå®å·¥åæ¥æ */ @ApiModelProperty(value = "éå®å·¥åæ¥æ;æå55天éå®å·¥å") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") private Date freezeOrderDate; /** * å·¥åè¿ææ¥æ */ @ApiModelProperty(value = "å·¥åè¿ææ¥æ;å°ææªåç´æ¥è¿æ") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") private Date orderExpirationDate; /** * 维修人 */ @ApiModelProperty(value = "维修人") lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamMaintenanceStandardService.java
@@ -91,4 +91,12 @@ Result<?> importMaintenanceStandard(MultipartFile file, String type); /** * æ¥è¯¢ä¿å »ç±»å䏿£å¸¸çä¿å »æ å * @param equipmentId 设å¤ç¼å· * @param maintenanceCategory ä¿å »ç±»å * @return */ EamMaintenanceStandard queryByEquipmentIdAndCategory(String equipmentId, String maintenanceCategory); } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamThirdMaintenanceOrderService.java
@@ -8,6 +8,8 @@ import org.jeecg.modules.eam.request.EamThirdMaintenanceQuery; import org.jeecg.modules.eam.request.EamThirdMaintenanceRequest; import java.util.List; /** * @Description: 设å¤ä¸çº§ä¿å » * @Author: jeecg-boot @@ -66,4 +68,17 @@ * @return */ boolean updateMaintenanceStatus(String orderId, String maintenanceStatus); /** * è·åå¾ ä¿å »çå·¥åï¼éå®å¤çä½¿ç¨ * @return */ List<EamThirdMaintenanceOrder> selectWaitMaintenanceOrderList(); /** * è·åæªå®æçå·¥åä¿¡æ¯ï¼è¿æå¤çä½¿ç¨ * @return */ List<EamThirdMaintenanceOrder> selectUnCompletedThirdMaintenanceOrderList(); } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java
@@ -323,6 +323,16 @@ return eamMaintenanceStandardMapper.selectList(queryWrapper); } @Override public EamMaintenanceStandard queryByEquipmentIdAndCategory(String equipmentId, String maintenanceCategory) { LambdaQueryWrapper<EamMaintenanceStandard> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(EamMaintenanceStandard::getDelFlag, CommonConstant.DEL_FLAG_0); queryWrapper.eq(EamMaintenanceStandard::getMaintenanceCategory, maintenanceCategory); queryWrapper.eq(EamMaintenanceStandard::getStandardStatus, MaintenanceStandardStatusEnum.START.name()); queryWrapper.eq(EamMaintenanceStandard::getEquipmentId, equipmentId); return eamMaintenanceStandardMapper.selectOne(queryWrapper); } /*æµç¨ä¸å¡ä»£ç --------------------------å¼å§*/ lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamThirdMaintenanceOrderServiceImpl.java
@@ -46,6 +46,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.time.LocalDate; import java.util.*; import java.util.stream.Collectors; @@ -341,6 +342,7 @@ /** * æ¥è¯¢ä¸ä¿å·¥ååºæ¬ä¿¡æ¯ * * @param id * @return */ @@ -371,6 +373,39 @@ return update > 0; } @Override public List<EamThirdMaintenanceOrder> selectWaitMaintenanceOrderList() { LambdaQueryWrapper<EamThirdMaintenanceOrder> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(EamThirdMaintenanceOrder::getMaintenanceStatus, ThirdMaintenanceStatusEnum.WAIT_MAINTENANCE.name()); queryWrapper.isNotNull(EamThirdMaintenanceOrder::getFreezeOrderDate); queryWrapper.eq(EamThirdMaintenanceOrder::getDelFlag, CommonConstant.DEL_FLAG_0); LocalDate localDate = LocalDate.now(); queryWrapper.lt(EamThirdMaintenanceOrder::getFreezeOrderDate, localDate.toString()); return this.getBaseMapper().selectList(queryWrapper); } @Override public List<EamThirdMaintenanceOrder> selectUnCompletedThirdMaintenanceOrderList() { LambdaQueryWrapper<EamThirdMaintenanceOrder> queryWrapper = new LambdaQueryWrapper<>(); List<String> statusList = Arrays.asList(ThirdMaintenanceStatusEnum.WAIT_MAINTENANCE.name(), ThirdMaintenanceStatusEnum.UNDER_MAINTENANCE.name(), ThirdMaintenanceStatusEnum.WAIT_CHECK.name(), ThirdMaintenanceStatusEnum.UNDER_FIRST_ACCEPTANCE.name(), ThirdMaintenanceStatusEnum.UNDER_SECOND_ACCEPTANCE.name(), ThirdMaintenanceStatusEnum.OPERATOR_SIGNATURE.name(), ThirdMaintenanceStatusEnum.REPAIRMAN_SIGNATURE.name(), ThirdMaintenanceStatusEnum.REPAIR_MANAGER_SIGNATURE.name(), ThirdMaintenanceStatusEnum.INSPECTOR_SIGNATURE.name(), ThirdMaintenanceStatusEnum.FREEZE.name() ); queryWrapper.in(EamThirdMaintenanceOrder::getMaintenanceStatus, statusList); queryWrapper.isNotNull(EamThirdMaintenanceOrder::getOrderExpirationDate); queryWrapper.eq(EamThirdMaintenanceOrder::getDelFlag, CommonConstant.DEL_FLAG_0); LocalDate localDate = LocalDate.now(); queryWrapper.lt(EamThirdMaintenanceOrder::getOrderExpirationDate, localDate.toString()); return this.getBaseMapper().selectList(queryWrapper); } /** * 设置æµç¨åé */