昨天 | zhangherong | ![]() |
昨天 | zhangherong | ![]() |
昨天 | zhangherong | ![]() |
昨天 | zhangherong | ![]() |
db/430É豸¹ÜÀíÊý¾Ý¿âÉè¼Æ.pdma.json
@@ -4,7 +4,7 @@ "avatar": "", "version": "4.9.2", "createdTime": "2025-3-10 16:38:19", "updatedTime": "2025-7-18 10:53:30", "updatedTime": "2025-7-21 18:29:46", "dbConns": [], "profile": { "default": { @@ -2326,6 +2326,42 @@ "extProps": {}, "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E", "id": "951E3090-8A27-4E30-A5F0-308B3E9F8E6D" }, { "defKey": "technology_genarate_flag", "defName": "ææ¯ç¶æé´å®çææ è®°", "comment": "1 å·²çæ 0 䏿¬¡å¾ çæ", "type": "", "len": "", "scale": "", "primaryKey": false, "notNull": false, "autoIncrement": false, "defaultValue": "", "hideInGraph": false, "refDict": "", "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64", "extProps": {}, "domain": "73FD2BAD-2358-4336-B96D-45DC897BD792", "id": "0F8E5A79-4399-42B0-B893-254A6D9DEFAD" }, { "defKey": "third_maintenance_genarate_flag", "defName": "ä¸ä¿çææ è®°", "comment": "1 å·²çæ 0 䏿¬¡å¾ çæ", "type": "", "len": "", "scale": "", "primaryKey": false, "notNull": false, "autoIncrement": false, "defaultValue": "", "hideInGraph": false, "refDict": "", "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64", "extProps": {}, "domain": "73FD2BAD-2358-4336-B96D-45DC897BD792", "id": "0BACB829-115B-472B-B205-812ABA028344" } ], "correlations": [], lxzn-boot-base-core/src/main/java/org/jeecg/common/util/DateUtils.java
@@ -203,9 +203,6 @@ public static String date2Str(SimpleDateFormat dateSdf) { synchronized (dateSdf) { Date date = getDate(); if (null == date) { return null; } return dateSdf.format(date); } } @@ -691,6 +688,7 @@ calendar.setTime(getDate()); return calendar.get(Calendar.YEAR); } public static String getDayStr(Date date) { Calendar calendar = getCalendar(); calendar.setTime(date);// æå½åæ¶é´èµç»æ¥å @@ -698,15 +696,16 @@ String dayStr = day < 10 ? "0" + day : day + ""; return dayStr; } /** * å°åç¬¦ä¸²è½¬ææ¶é´ * @param str * @return */ public static Date parseDatetime(String str){ public static Date parseDatetime(String str) { try { return datetimeFormat.get().parse(str); }catch (Exception e){ } catch (Exception e) { } return null; } @@ -714,7 +713,7 @@ /** * è·åæå®æ¶é´ä¹åçå å¹´ qsw */ public static Date getYearAfter(Date data,int number) { public static Date getYearAfter(Date data, int number) { Calendar c = Calendar.getInstance(); c.setTime(data); c.add(Calendar.YEAR, number); @@ -727,7 +726,7 @@ /** * è·åæå®æ¶é´ä¹åçå 天 qsw */ public static Date getDayAfter(Date data,int number) { public static Date getDayAfter(Date data, int number) { Calendar c = Calendar.getInstance(); c.setTime(data); c.add(Calendar.DAY_OF_MONTH, number); @@ -740,7 +739,7 @@ /** * è·åæå®æ¶é´ä¹åçå åé qsw */ public static Date getMinAfter(Date data,int number) { public static Date getMinAfter(Date data, int number) { Calendar c = Calendar.getInstance(); c.setTime(data); c.add(Calendar.MINUTE, number); @@ -751,7 +750,7 @@ /** * è·åæå®æ¶é´ä¹åçå å°æ¶ qsw */ public static Date getHourAfter(Date data,int number) { public static Date getHourAfter(Date data, int number) { Calendar c = Calendar.getInstance(); c.setTime(data); c.add(Calendar.HOUR_OF_DAY, number); @@ -784,6 +783,16 @@ return Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant()); } /** * æ¥æå å¹´ * @param date * @param year * @return */ public static Date addYear(Date date, int year) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.YEAR, year); return calendar.getTime(); } } lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipment.java
@@ -453,6 +453,15 @@ @ApiModelProperty(value = "夿³¨") private String remark; /** ææ¯ç¶æé´å®çææ è®° 1 å·²çæ 0 æªçæ */ @ApiModelProperty(value = "ææ¯ç¶æé´å®çææ è®° 1 å·²çæ 0 æªçæ") @TableField(exist = false) private String technologyGenerateFlag; /** ä¸ä¿çææ è®° 1 å·²çæ 0 æªçæ */ @ApiModelProperty(value = "ä¸ä¿çææ è®° 1 å·²çæ 0 æªçæ") @TableField(exist = false) private String thirdMaintenanceGenerateFlag; public void setFactoryOrgCode(String factoryOrgCode){ this.factoryOrgCode = factoryOrgCode; lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentExtend.java
@@ -91,4 +91,10 @@ /**ææ¯é´å®å¨æ(å¹´)*/ @ApiModelProperty(value = "ææ¯é´å®å¨æ(å¹´)") private Integer technologyCheckPeriod; /** ææ¯ç¶æé´å®çææ è®° 1 å·²çæ 0 æªçæ */ @ApiModelProperty(value = "ææ¯ç¶æé´å®çææ è®° 1 å·²çæ 0 æªçæ") private String technologyGenerateFlag; /** ä¸ä¿çææ è®° 1 å·²çæ 0 æªçæ */ @ApiModelProperty(value = "ä¸ä¿çææ è®° 1 å·²çæ 0 æªçæ") private String thirdMaintenanceGenerateFlag; } lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamEquipmentMapper.xml
@@ -52,7 +52,9 @@ ext.third_maintenance_period, ext.technology_check_period, ext.latest_technology_check, ext.next_technology_check ext.next_technology_check, ext.technology_genarate_flag, ext.third_maintenance_genarate_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
@@ -3,6 +3,8 @@ import org.jeecg.modules.eam.entity.EamEquipmentExtend; import com.baomidou.mybatisplus.extension.service.IService; import java.util.Date; /** * @Description: 设å¤å°è´¦æ©å±è¡¨ * @Author: jeecg-boot @@ -25,4 +27,14 @@ * @return */ boolean updateEquipmentRepairStatus(String equipmentId, String status); /** * æ´æ°è®¾å¤ææ¯ç¶æåé´å®æ¥æ * @param equipmentId 设å¤ID * @param status ææ¯ç¶æ * @param evaluationDate é´å®å®ææ¥æ * @param technologyGenerateFlag ææ¯ç¶æé´å®å·¥åçææ è¯ * @return */ boolean updateTechnologyParam(String equipmentId, String status, Date evaluationDate, String technologyGenerateFlag); } lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentExtendServiceImpl.java
@@ -1,5 +1,9 @@ package org.jeecg.modules.eam.service.impl; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import org.apache.commons.lang3.StringUtils; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.util.DateUtils; import org.jeecg.modules.eam.entity.EamEquipmentExtend; import org.jeecg.modules.eam.mapper.EamEquipmentExtendMapper; import org.jeecg.modules.eam.service.IEamEquipmentExtendService; @@ -9,6 +13,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.Date; /** * @Description: 设å¤å°è´¦æ©å±è¡¨ @@ -45,4 +50,28 @@ eamEquipmentExtendMapper.updateById(entity); return true; } @Override @Transactional(rollbackFor = Exception.class) public boolean updateTechnologyParam(String equipmentId, String status, Date evaluationDate, String technologyGenerateFlag) { if (StringUtils.isBlank(status) && StringUtils.isBlank(technologyGenerateFlag) && evaluationDate == null) { return false; } EamEquipmentExtend entity = this.getBaseMapper().selectById(equipmentId); UpdateWrapper<EamEquipmentExtend> updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", equipmentId); if (StringUtils.isNotBlank(status)) { entity.setTechnologyStatus(status); } if (StringUtils.isNotBlank(technologyGenerateFlag)) { entity.setTechnologyGenerateFlag(technologyGenerateFlag); } if (evaluationDate != null) { entity.setLatestTechnologyCheck(evaluationDate); if (entity.getTechnologyCheckPeriod() != null) { entity.setNextTechnologyCheck(DateUtils.addYear(entity.getLatestTechnologyCheck(), entity.getTechnologyCheckPeriod())); } } return this.getBaseMapper().updateById(entity) > 0; } } lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java
@@ -410,7 +410,7 @@ queryWrapper.eq("e.del_flag", CommonConstant.DEL_FLAG_0); queryWrapper.ne("ext.technology_status", TechnologyStatusEnum.PROHIBITED.name()); queryWrapper.isNotNull("ext.technology_check_period"); queryWrapper.isNotNull("e.next_technology_check"); queryWrapper.isNotNull("ext.next_technology_check"); return this.getBaseMapper().selectTechnicalEquipmentList(queryWrapper); } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamTechnicalStatusEvaluationOrderController.java
@@ -15,6 +15,7 @@ import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.util.TranslateDictTextUtils; import org.jeecg.modules.eam.constant.OrderCreationMethodEnum; import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationOrder; import org.jeecg.modules.eam.request.EamTechnicalStatusEvaluationOrderQuery; import org.jeecg.modules.eam.request.EamTechnicalStatusEvaluationOrderRequest; @@ -74,6 +75,7 @@ if (CollectionUtil.isEmpty(request.getTableDetailList())) { return Result.error("æ£æ¥é¡¹ä¸è½ä¸ºç©ºï¼"); } request.setCreationMethod(OrderCreationMethodEnum.MANUAL.name()); boolean b = eamTechnicalStatusEvaluationOrderService.addTechnicalStatusEvaluationOrder(request); if (!b) { return Result.error("æ·»å 失败ï¼"); lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/TechnicalStatusEvaluationExpiredJob.java
@@ -1,4 +1,80 @@ package org.jeecg.modules.eam.job; public class TechnicalStatusEvaluationExpiredJob { import cn.hutool.core.collection.CollectionUtil; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.util.DateUtils; import org.jeecg.modules.eam.constant.TechnicalStatusEvaluationOrderStatusEnum; import org.jeecg.modules.eam.constant.TechnologyStatusEnum; import org.jeecg.modules.eam.entity.EamEquipmentExtend; import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationOrder; import org.jeecg.modules.eam.service.IEamEquipmentExtendService; import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationOrderService; 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; @Component @Slf4j public class TechnicalStatusEvaluationExpiredJob implements Job { @Autowired private IEamTechnicalStatusEvaluationOrderService evaluationOrderService; @Autowired private IEamEquipmentExtendService equipmentExtendService; @Autowired private ISysQuartzLogService sysQuartzLogService; @Autowired private IQuartzJobService quartzJobService; @Override @Transactional(rollbackFor = Exception.class) public void execute(JobExecutionContext jobExecutionContext) 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<EamTechnicalStatusEvaluationOrder> list = evaluationOrderService.selectUncompletedEvaluationOrderList(); if (CollectionUtil.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; } int expiredCount = 0; for (EamTechnicalStatusEvaluationOrder order : list) { EamEquipmentExtend extend = equipmentExtendService.getById(order.getEquipmentId()); if (extend == null) { log.error("设å¤ä¿¡æ¯ä¸åå¨ï¼è¯·æ£æ¥ï¼ 设å¤IDï¼{}, æ¥æï¼{}", order.getEquipmentId(), DateUtils.date2Str(DateUtils.date_sdf.get())); continue; } if (TechnicalStatusEvaluationOrderStatusEnum.WAIT_EVALUATION.name().equals(order.getEvaluationStatus()) || TechnicalStatusEvaluationOrderStatusEnum.LOCKED.name().equals(order.getEvaluationStatus())) { order.setEvaluationStatus(TechnicalStatusEvaluationOrderStatusEnum.EXPIRED.name()); evaluationOrderService.updateById(order); expiredCount++; } extend.setTechnologyStatus(TechnologyStatusEnum.PROHIBITED.name()); equipmentExtendService.updateById(extend); } 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/TechnicalStatusEvaluationGenerateJob.java
@@ -1,37 +1,174 @@ package org.jeecg.modules.eam.job; 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.modules.eam.constant.OrderCreationMethodEnum; import org.jeecg.modules.eam.entity.EamEquipment; import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationStandard; import org.jeecg.modules.eam.request.EamTechnicalStatusEvaluationOrderRequest; import org.jeecg.modules.eam.service.IEamEquipmentExtendService; import org.jeecg.modules.eam.service.IEamEquipmentService; import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationStandardDetailService; import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationOrderService; import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationStandardService; 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.ISysParamsService; 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.time.LocalDate; import java.util.Date; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; @Component @Slf4j public class TechnicalStatusEvaluationGenerateJob implements Job { @Autowired private IEamEquipmentService equipmentService; @Autowired private IEamEquipmentExtendService equipmentExtendService; @Autowired private IEamTechnicalStatusEvaluationStandardService evaluationStandardService; @Autowired private IEamTechnicalStatusEvaluationStandardDetailService evaluationStandardDetailService; @Autowired private ISysParamsService paramsService; @Autowired private IEamTechnicalStatusEvaluationOrderService evaluationOrderService; @Autowired private ISysQuartzLogService sysQuartzLogService; @Autowired private IQuartzJobService quartzJobService; @Autowired private IEamEquipmentExtendService equipmentExtendService; @Override @Transactional(rollbackFor = Exception.class) public void execute(JobExecutionContext jobExecutionContext) 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(); //è·åææ¯ç¶æé´å®ç³»ç»é ç½®åæ° SysParams threeYearOrderPreGenerationDaysParam = paramsService.getSysPramBySettingKey("three_year_order_pre_generation_days"); if (threeYearOrderPreGenerationDaysParam == 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 threeYearOrderPreGenerationDays = Integer.parseInt(threeYearOrderPreGenerationDaysParam.getSettingValue()); SysParams oneYearOrderPreGenerationDaysParam = paramsService.getSysPramBySettingKey("one_year_order_pre_generation_days"); if (oneYearOrderPreGenerationDaysParam == 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 oneYearOrderPreGenerationDays = Integer.parseInt(oneYearOrderPreGenerationDaysParam.getSettingValue()); SysParams threeYearOrderPreLockDaysParam = paramsService.getSysPramBySettingKey("three_year_order_pre_lock_days"); if (threeYearOrderPreLockDaysParam == 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 threeYearOrderPreLockDays = Integer.parseInt(threeYearOrderPreLockDaysParam.getSettingValue()); SysParams oneYearOrderPreLockDaysParam = paramsService.getSysPramBySettingKey("one_year_order_pre_lock_days"); if (oneYearOrderPreLockDaysParam == 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 oneYearOrderPreLockDays = Integer.parseInt(oneYearOrderPreLockDaysParam.getSettingValue()); //è·å设å¤å表 List<EamEquipment> equipmentList = equipmentService.selectTechnicalEquipmentList(); 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 equipment : equipmentList) { //夿æ¯å¦ä¸º1å¹´çææ¯ç¶æé´å®å¨æ if (equipment.getTechnologyCheckPeriod() == 1) { //1å¹´æ generateTechnicalStatusEvaluationOrder(oneYearOrderPreGenerationDays, oneYearOrderPreLockDays, equipment, successCount, failCount, sb); } else if (equipment.getTechnologyCheckPeriod() == 3 || equipment.getTechnologyCheckPeriod() == 4) { //3~4å¹´æ generateTechnicalStatusEvaluationOrder(threeYearOrderPreGenerationDays, threeYearOrderPreLockDays, equipment, 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 generateTechnicalStatusEvaluationOrder(int orderPreGenerationDays, int orderPreLockDays, EamEquipment equipment, AtomicInteger successCount, AtomicInteger failCount, StringBuilder sb) { LocalDate nextTechnologyCheckDate = DateUtils.dateToLocalDate(equipment.getNextTechnologyCheck()); LocalDate generateDate = nextTechnologyCheckDate.minusDays(orderPreGenerationDays); LocalDate lockDate = nextTechnologyCheckDate.minusDays(orderPreLockDays); if (!LocalDate.now().isBefore(generateDate) && !CommonConstant.STATUS_1.equals(equipment.getTechnologyGenerateFlag())) { //计ç®å½å¤©éè¦çæ EamTechnicalStatusEvaluationStandard standard = evaluationStandardService.queryEnableStandard(equipment.getId()); if (standard == null) { log.warn("设å¤ï¼{}ï¼æªé ç½®ææ¯ç¶æé´å®è§èï¼æ æ³çæææ¯é´å®å·¥åï¼æ¥æï¼{}", equipment.getEquipmentCode(), DateUtils.date2Str(DateUtils.date_sdf.get())); failCount.incrementAndGet(); sb.append("设å¤ï¼").append(equipment.getEquipmentCode()).append("ï¼æªé ç½®ææ¯ç¶æé´å®è§èï¼æ æ³çæææ¯é´å®å·¥åï¼"); return; } EamTechnicalStatusEvaluationOrderRequest request = new EamTechnicalStatusEvaluationOrderRequest(); request.setEquipmentId(equipment.getId()); request.setStandardId(standard.getId()); request.setEvaluationDate(DateUtils.localDateToDate(generateDate)); request.setFreezeOrderDate(DateUtils.localDateToDate(lockDate)); request.setOrderExpirationDate(equipment.getNextTechnologyCheck()); request.setCreationMethod(OrderCreationMethodEnum.AUTO.name()); try { evaluationOrderService.addTechnicalStatusEvaluationOrder(request); successCount.incrementAndGet(); //æ´æ°æ©å±è¡¨ä¸ççææ è¯ equipmentExtendService.updateTechnologyParam(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/TechnicalStatusEvaluationLockedJob.java
@@ -1,4 +1,65 @@ package org.jeecg.modules.eam.job; public class TechnicalStatusEvaluationLockedJob { import cn.hutool.core.collection.CollectionUtil; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.util.DateUtils; import org.jeecg.modules.eam.constant.TechnicalStatusEvaluationOrderStatusEnum; import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationOrder; import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationOrderService; 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; @Component @Slf4j public class TechnicalStatusEvaluationLockedJob implements Job { @Autowired private IEamTechnicalStatusEvaluationOrderService evaluationOrderService; @Autowired private ISysQuartzLogService sysQuartzLogService; @Autowired private IQuartzJobService quartzJobService; @Override @Transactional(rollbackFor = Exception.class) public void execute(JobExecutionContext jobExecutionContext) 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<EamTechnicalStatusEvaluationOrder> list = evaluationOrderService.selectWaitEvaluationOrderList(); if (CollectionUtil.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 (EamTechnicalStatusEvaluationOrder order : list) { order.setEvaluationStatus(TechnicalStatusEvaluationOrderStatusEnum.LOCKED.name()); evaluationOrderService.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/EamTechnicalStatusEvaluationOrderRequest.java
@@ -37,6 +37,16 @@ @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") private Date evaluationDate; /**éå®å·¥åæ¥æ;æå55天éå®å·¥å*/ @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "éå®å·¥åæ¥æ;æå55天éå®å·¥å") private Date freezeOrderDate; /**å·¥åè¿ææ¥æ;å°ææªåç´æ¥è¿æï¼å¹¶ä¿®æ¹è®¾å¤ææ¯ç¶æä¸ºç¦ç¨*/ @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "å·¥åè¿ææ¥æ;å°ææªåç´æ¥è¿æï¼å¹¶ä¿®æ¹è®¾å¤ææ¯ç¶æä¸ºç¦ç¨") private Date orderExpirationDate; /**é´å®äºº*/ @ApiModelProperty(value = "é´å®äºº") private String evaluator; lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamTechnicalStatusEvaluationOrderService.java
@@ -7,6 +7,8 @@ import org.jeecg.modules.eam.request.EamTechnicalStatusEvaluationOrderQuery; import org.jeecg.modules.eam.request.EamTechnicalStatusEvaluationOrderRequest; import java.util.List; /** * @Description: ææ¯ç¶æé´å®å·¥å * @Author: jeecg-boot @@ -51,4 +53,16 @@ * @return */ boolean updateEvaluationStatus(String orderId, String evaluationStatus); /** * è·åå¾ é´å®çå·¥åï¼éå®å¤çä½¿ç¨ * @return */ List<EamTechnicalStatusEvaluationOrder> selectWaitEvaluationOrderList(); /** * è·åæªå®æçå·¥åä¿¡æ¯ï¼è¿æå¤çä½¿ç¨ * @return */ List<EamTechnicalStatusEvaluationOrder> selectUncompletedEvaluationOrderList(); } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusEvaluationOrderServiceImpl.java
@@ -17,6 +17,7 @@ import org.jeecg.common.constant.DataBaseConstant; import org.jeecg.common.exception.JeecgBootException; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.DateUtils; import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.eam.constant.*; import org.jeecg.modules.eam.entity.*; @@ -41,6 +42,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; import java.util.*; import java.util.stream.Collectors; @@ -165,14 +167,20 @@ if (CollectionUtil.isEmpty(standardDetailList)) { throw new JeecgBootException("ææ¯ç¶æé´å®è§èæ£æ¥é¡¹ä¸ºç©ºï¼æ·»å 失败ï¼"); } EamTechnicalStatusEvaluationOrder unCompleted = checkDuplicate(request.getEquipmentId()); if(unCompleted != null) { throw new JeecgBootException("设å¤å·²å卿ªå®æçææ¯ç¶æé´å®å·¥åï¼æ æ³å次æ°å¢ï¼"); } EamTechnicalStatusEvaluationOrder order = new EamTechnicalStatusEvaluationOrder(); order.setEquipmentId(request.getEquipmentId()); order.setStandardId(request.getStandardId()); order.setEvaluationDate(request.getEvaluationDate()); order.setFreezeOrderDate(request.getFreezeOrderDate()); order.setOrderExpirationDate(request.getOrderExpirationDate()); order.setRemark(request.getRemark()); String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.TECHNICAL_STATUS_EVALUATION_ORDER_CODE_RULE); order.setOrderNum(codeSeq); order.setCreationMethod(OrderCreationMethodEnum.MANUAL.name()); order.setCreationMethod(request.getCreationMethod()); //ç¶æåå§å order.setEvaluationStatus(TechnicalStatusEvaluationOrderStatusEnum.WAIT_EVALUATION.name()); //å 餿 è®° @@ -330,7 +338,7 @@ List<UserSelector> userSelectors; switch (status) { case UNDER_EVALUATION: if(CollectionUtil.isEmpty(request.getTableDetailList())) { if (CollectionUtil.isEmpty(request.getTableDetailList())) { throw new JeecgBootException("æ£æ¥æç»ä¿¡æ¯ä¸ºç©ºï¼"); } boolean parallelCompletion = flowTaskService.checkParallelCompletion(flowMyBusiness.getTaskId()); @@ -494,8 +502,6 @@ values.put("NextAssignee", userApprovalList); entity.setEvaluationStatus(TechnicalStatusEvaluationOrderStatusEnum.REPAIRER_SIGNING.name()); } // //æ´æ°è®¾å¤ä¿å »ç¶æ // eamEquipmentExtendService.updateEquipmentMaintenanceStatus(entity.getEquipmentId(), EquipmentMaintenanceStatus.NORMAL.name()); break; case PROCESS_TECHNICIAN_SIGNING: //å·¥èºåç¾å @@ -555,6 +561,11 @@ entity.setInspectorComment(request.getInspectorComment()); entity.setEvaluationResult(request.getEvaluationResult()); entity.setEvaluationReason(request.getEvaluationReason()); //æ´æ°è®¾å¤ææ¯ç¶æ // æç §å¡«æ¥å®ææ¥æè®¡ç®æ¬æ¬¡ä¸ä¿æ¥æï¼å»é¤æ¶åç§ Date evaluationDate = DateUtils.localDateToDate(DateUtils.dateToLocalDate(entity.getActualEndTime())); equipmentExtendService.updateTechnologyParam(equipment.getId(), entity.getEvaluationResult(), evaluationDate, CommonConstant.STATUS_0); break; } request.setValues(values); @@ -581,6 +592,60 @@ return update > 0; } @Override public List<EamTechnicalStatusEvaluationOrder> selectWaitEvaluationOrderList() { LambdaQueryWrapper<EamTechnicalStatusEvaluationOrder> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(EamTechnicalStatusEvaluationOrder::getEvaluationStatus, TechnicalStatusEvaluationOrderStatusEnum.WAIT_EVALUATION.name()); queryWrapper.isNotNull(EamTechnicalStatusEvaluationOrder::getFreezeOrderDate); queryWrapper.eq(EamTechnicalStatusEvaluationOrder::getDelFlag, CommonConstant.DEL_FLAG_0); LocalDate localDate = LocalDate.now(); queryWrapper.lt(EamTechnicalStatusEvaluationOrder::getFreezeOrderDate, localDate.toString()); return this.getBaseMapper().selectList(queryWrapper); } @Override public List<EamTechnicalStatusEvaluationOrder> selectUncompletedEvaluationOrderList() { LambdaQueryWrapper<EamTechnicalStatusEvaluationOrder> queryWrapper = new LambdaQueryWrapper<>(); List<String> statusList = Arrays.asList(TechnicalStatusEvaluationOrderStatusEnum.WAIT_EVALUATION.name(), TechnicalStatusEvaluationOrderStatusEnum.UNDER_EVALUATION.name(), TechnicalStatusEvaluationOrderStatusEnum.REPAIRER_SIGNING.name(), TechnicalStatusEvaluationOrderStatusEnum.REPAIR_MANAGER_SIGNING.name(), TechnicalStatusEvaluationOrderStatusEnum.PROCESS_TECHNICIAN_SIGNING.name(), TechnicalStatusEvaluationOrderStatusEnum.DEPART_TECHNICAL_LEADER_SIGNING.name(), TechnicalStatusEvaluationOrderStatusEnum.INSPECTOR_SIGNING.name(), TechnicalStatusEvaluationOrderStatusEnum.LOCKED.name() ); queryWrapper.in(EamTechnicalStatusEvaluationOrder::getEvaluationStatus, statusList); queryWrapper.isNotNull(EamTechnicalStatusEvaluationOrder::getOrderExpirationDate); queryWrapper.eq(EamTechnicalStatusEvaluationOrder::getDelFlag, CommonConstant.DEL_FLAG_0); LocalDate localDate = LocalDate.now(); queryWrapper.lt(EamTechnicalStatusEvaluationOrder::getOrderExpirationDate, localDate.toString()); return this.getBaseMapper().selectList(queryWrapper); } private EamTechnicalStatusEvaluationOrder checkDuplicate(String equipmentId) { LambdaQueryWrapper<EamTechnicalStatusEvaluationOrder> queryWrapper = new LambdaQueryWrapper<>(); List<String> statusList = Arrays.asList(TechnicalStatusEvaluationOrderStatusEnum.WAIT_EVALUATION.name(), TechnicalStatusEvaluationOrderStatusEnum.UNDER_EVALUATION.name(), TechnicalStatusEvaluationOrderStatusEnum.REPAIRER_SIGNING.name(), TechnicalStatusEvaluationOrderStatusEnum.REPAIR_MANAGER_SIGNING.name(), TechnicalStatusEvaluationOrderStatusEnum.PROCESS_TECHNICIAN_SIGNING.name(), TechnicalStatusEvaluationOrderStatusEnum.DEPART_TECHNICAL_LEADER_SIGNING.name(), TechnicalStatusEvaluationOrderStatusEnum.INSPECTOR_SIGNING.name(), TechnicalStatusEvaluationOrderStatusEnum.LOCKED.name(), TechnicalStatusEvaluationOrderStatusEnum.CHANGING.name() ); queryWrapper.in(EamTechnicalStatusEvaluationOrder::getEvaluationStatus, statusList); queryWrapper.eq(EamTechnicalStatusEvaluationOrder::getDelFlag, CommonConstant.DEL_FLAG_0); queryWrapper.eq(EamTechnicalStatusEvaluationOrder::getEquipmentId, equipmentId); List<EamTechnicalStatusEvaluationOrder> list = this.getBaseMapper().selectList(queryWrapper); if (CollectionUtil.isEmpty(list)) { return null; } return list.get(0); } private void checkDetailResult(List<EamTechnicalStatusEvaluationOrderDetail> detailList, TechnicalStatusEvaluationCheckCategoryEnum checkCategory) { boolean b; switch (checkCategory) {