lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipment.java
@@ -469,6 +469,10 @@ @ApiModelProperty(value = "ä¸ä¿çææ è®° 1 å·²çæ 0 æªçæ") @TableField(exist = false) private String thirdMaintenanceGenerateFlag; /** äºä¿çææ è®° 1 å·²çæ 0 æªçæ */ @ApiModelProperty(value = "äºä¿çææ è®° 1 å·²çæ 0 æªçæ") @TableField(exist = false) private String secondMaintenanceGenerateFlag; /** * ä¿å »è§èåç§° lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentExtend.java
@@ -97,4 +97,7 @@ /** ä¸ä¿çææ è®° 1 å·²çæ 0 æªçæ */ @ApiModelProperty(value = "ä¸ä¿çææ è®° 1 å·²çæ 0 æªçæ") private String thirdMaintenanceGenerateFlag; /** äºä¿çææ è®° 1 å·²çæ 0 æªçæ */ @ApiModelProperty(value = "äºä¿çææ è®° 1 å·²çæ 0 æªçæ") private String secondMaintenanceGenerateFlag; } lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamFactorySecondMaintPlan.java
@@ -49,7 +49,7 @@ /**å 餿 è®°*/ @Excel(name = "å 餿 è®°", width = 15) @ApiModelProperty(value = "å 餿 è®°") private Integer delFlag; private Integer delFlag=0; /**å·¥åID*/ @Excel(name = "å·¥åID", width = 15) @ApiModelProperty(value = "å·¥åID") @@ -65,5 +65,5 @@ /**æ°é*/ @Excel(name = "æ°é", width = 15) @ApiModelProperty(value = "æ°é") private String quantity; private Integer quantity; } lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamFactorySecondMaintPlanMapper.java
@@ -14,4 +14,10 @@ */ public interface EamFactorySecondMaintPlanMapper extends BaseMapper<EamFactorySecondMaintPlan> { /** * 设å¤ç®¡çé¦é¡µ-车é´äºä¿è®¡åå表 * @return */ List<EamFactorySecondMaintPlan> queryAllList(); } lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamReportThreeNoSpareMapper.java
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Constants; import org.apache.ibatis.annotations.Param; import org.jeecg.modules.eam.dto.EamReportThreeNoSpareDto; import org.jeecg.modules.eam.entity.EamReportThreeNoSpare; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.jeecg.modules.eam.request.EamReportThreeNoSpareQuery; @@ -19,4 +20,11 @@ public interface EamReportThreeNoSpareMapper extends BaseMapper<EamReportThreeNoSpare> { IPage<EamReportThreeNoSpareQuery> queryPageList(IPage<EamReportThreeNoSpareQuery> page, @Param(Constants.WRAPPER) QueryWrapper<EamReportThreeNoSpareQuery> EamReportThreeNoSpareQuery); /** * âä¸ä¸æ¾è¿çååâåæè¡¨å表 * @param eamReportThreeNoSpareDto * @return */ List<EamReportThreeNoSpareDto> queryList(@Param(Constants.WRAPPER) QueryWrapper<EamReportThreeNoSpareDto> eamReportThreeNoSpareDto); } lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamFactorySecondMaintPlanMapper.xml
@@ -2,4 +2,13 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.jeecg.modules.eam.mapper.EamFactorySecondMaintPlanMapper"> <select id="queryAllList" resultType="org.jeecg.modules.eam.entity.EamFactorySecondMaintPlan"> SELECT efsmp.* FROM eam_factory_second_maint_plan efsmp LEFT JOIN eam_base_factory ebf ON efsmp.factory_id = ebf.id WHERE efsmp.del_flag = 0 ORDER BY CAST(SUBSTRING(efsmp.month_plan, 1, 4) AS INT), CAST(SUBSTRING(efsmp.month_plan, 6, 2) AS INT), ebf.org_code; </select> </mapper> lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamReportThreeNoSpareMapper.xml
@@ -21,4 +21,23 @@ AND e.del_flag = 0 ${ew.customSqlSegment} </select> <select id="queryList" resultType="org.jeecg.modules.eam.dto.EamReportThreeNoSpareDto"> SELECT ertns.*, e.equipment_code, e.equipment_name, e.equipment_model, e.installation_position, erar.accident_phenomenon, erar.measure, erar.causing_results FROM eam_report_three_no_spare ertns LEFT JOIN eam_report_accidents_register erar ON ertns.report_id = erar.report_id AND erar.del_flag = 0 INNER JOIN eam_equipment e ON erar.equipment_id = e.id AND e.del_flag = 0 ${ew.customSqlSegment} </select> </mapper> lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamFactorySecondMaintPlanService.java
@@ -3,6 +3,8 @@ import org.jeecg.modules.eam.entity.EamFactorySecondMaintPlan; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; /** * @Description: âé¦é¡µè½¦é´äºä¿è®¡å * @Author: jeecg-boot @@ -11,4 +13,26 @@ */ public interface IEamFactorySecondMaintPlanService extends IService<EamFactorySecondMaintPlan> { /** * 设å¤ç®¡çé¦é¡µ-车é´äºä¿è®¡åå表 * @return */ public List<EamFactorySecondMaintPlan> queryAllList(); /** * æ°å¢é¦é¡µè½¦é´äºä¿è®¡å * @param equipmentId * @param monthPlan * @return */ public EamFactorySecondMaintPlan add(String equipmentId, String monthPlan); /** * æ¥æåå * @param equipmentId * @param oldMonthPlan * @param newMonthPlan * @return */ public boolean dateChange(String equipmentId, String oldMonthPlan, String newMonthPlan); } lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamReportThreeNoSpareService.java
@@ -9,6 +9,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.eam.request.EamReportThreeNoSpareQuery; import java.util.List; /** * @Description: âä¸ä¸æ¾è¿çååâåæè¡¨ * @Author: jeecg-boot @@ -38,4 +40,10 @@ */ Result<?> audit(EamReportThreeNoSpareDto eamReportThreeNoSpareDto); /** * âä¸ä¸æ¾è¿çååâåæè¡¨æå° * @param ids * @return */ List<EamReportThreeNoSpareDto> print(String ids); } lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamFactorySecondMaintPlanServiceImpl.java
@@ -1,19 +1,192 @@ package org.jeecg.modules.eam.service.impl; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import org.jeecg.modules.eam.entity.EamEquipment; import org.jeecg.modules.eam.entity.EamFactorySecondMaintPlan; import org.jeecg.modules.eam.mapper.EamFactorySecondMaintPlanMapper; import org.jeecg.modules.eam.service.IEamEquipmentService; import org.jeecg.modules.eam.service.IEamFactorySecondMaintPlanService; import org.jeecg.modules.system.entity.BaseFactory; import org.jeecg.modules.system.service.IBaseFactoryService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.transaction.annotation.Transactional; import java.util.List; /** * @Description: âé¦é¡µè½¦é´äºä¿è®¡å * @Author: jeecg-boot * @Author: jeecg-boot * @Date: 2025-08-22 * @Version: V1.0 */ @Service public class EamFactorySecondMaintPlanServiceImpl extends ServiceImpl<EamFactorySecondMaintPlanMapper, EamFactorySecondMaintPlan> implements IEamFactorySecondMaintPlanService { @Autowired private IBaseFactoryService baseFactoryService; @Autowired private IEamEquipmentService eamEquipmentService; /** * 设å¤ç®¡çé¦é¡µ-车é´äºä¿è®¡åå表 * @return */ @Override public List<EamFactorySecondMaintPlan> queryAllList(){ return this.baseMapper.queryAllList(); } /** * æ°å¢é¦é¡µè½¦é´äºä¿è®¡å * @param equipmentId * @param monthPlan * @return */ @Override public EamFactorySecondMaintPlan add(String equipmentId, String monthPlan) { EamEquipment equipment=eamEquipmentService.getById(equipmentId); if (equipment==null) { return null; } String factoryId = baseFactoryService.queryByCode(equipment.getFactoryOrgCode().substring(0,6)).getId(); // å°è¯ç´æ¥æ´æ°ï¼ååæä½ï¼ LambdaUpdateWrapper<EamFactorySecondMaintPlan> updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(EamFactorySecondMaintPlan::getFactoryId, factoryId) .eq(EamFactorySecondMaintPlan::getMonthPlan, monthPlan) .setSql("quantity = quantity + 1"); // ååå¢å int updated = this.baseMapper.update(null, updateWrapper); if (updated > 0) { // æ´æ°æåï¼è¿åæ´æ°åçè®°å½ return this.getOne(Wrappers.<EamFactorySecondMaintPlan>lambdaQuery() .eq(EamFactorySecondMaintPlan::getFactoryId, factoryId) .eq(EamFactorySecondMaintPlan::getMonthPlan, monthPlan)); } else { // æ è®°å½åå¨ï¼å建æ°è®°å½ return createNewPlan(factoryId, monthPlan); } } private EamFactorySecondMaintPlan createNewPlan(String factoryId, String monthPlan) { EamFactorySecondMaintPlan newPlan = new EamFactorySecondMaintPlan(); newPlan.setFactoryId(factoryId); newPlan.setMonthPlan(monthPlan); newPlan.setQuantity(1); // 设置工ååç§°ï¼ä¼åå¤çï¼ BaseFactory baseFactory = baseFactoryService.getById(factoryId); if (baseFactory != null) { String orgCode = baseFactory.getOrgCode(); // ä½¿ç¨æ´ä¸ªorgCodeï¼å¦æé¿åº¦ä¸è¶³6ï¼ String nameOrgCode = orgCode.length() >= 6 ? orgCode.substring(0, 6) : orgCode; newPlan.setFactoryName(baseFactoryService.factoryDataNameByOrgCode(nameOrgCode)); } // å¤çå¹¶åå建å²çª try { this.save(newPlan); return newPlan; } catch (DuplicateKeyException e) { // å ¶ä»çº¿ç¨å·²å建ï¼è½¬ä¸ºæ´æ° return add(factoryId, monthPlan); } } /** * æ¥æåå * @param equipmentId 设å¤ID * @param oldMonthPlan æ§æä»½è®¡åï¼æ ¼å¼å¦yyyy-MMï¼ * @param newMonthPlan æ°æä»½è®¡åï¼æ ¼å¼å¦yyyy-MMï¼ * @return æ¯å¦æååæ´ */ @Override @Transactional(rollbackFor = Exception.class) public boolean dateChange(String equipmentId, String oldMonthPlan, String newMonthPlan) { // 1. è·å设å¤ä¿¡æ¯ EamEquipment equipment = eamEquipmentService.getById(equipmentId); if (equipment == null) { return false; } // 2. è·åå·¥åID String factoryOrgCodePrefix = equipment.getFactoryOrgCode().substring(0, 6); BaseFactory factory = baseFactoryService.queryByCode(factoryOrgCodePrefix); if (factory == null) { return false; } String factoryId = factory.getId(); // 3. 妿æä»½æªååç´æ¥è¿åæå if (oldMonthPlan.equals(newMonthPlan)) { return true; } try { // 4. åå°æ§æä»½è®¡åæ°éï¼ååæä½ï¼ boolean oldDecreased = decreasePlanQuantity(factoryId, oldMonthPlan); if (!oldDecreased) { throw new RuntimeException("åå°æ§æä»½è®¡åæ°é失败ï¼å¯è½è®°å½ä¸å卿æ°é为0"); } // 5. å¢å æ°æä»½è®¡åæ°é increasePlanQuantity(factoryId, newMonthPlan); return true; } catch (Exception e) { // äºå¡åæ» throw new RuntimeException("æ¥æåæ´å¤±è´¥: " + e.getMessage(), e); } } /** * åå°è®¡åæ°éï¼å¦æåå°åæ°é为0åå é¤è®°å½ */ private boolean decreasePlanQuantity(String factoryId, String monthPlan) { // å åå°æ°é LambdaUpdateWrapper<EamFactorySecondMaintPlan> updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(EamFactorySecondMaintPlan::getFactoryId, factoryId) .eq(EamFactorySecondMaintPlan::getMonthPlan, monthPlan) .gt(EamFactorySecondMaintPlan::getQuantity, 0) // ç¡®ä¿æ°é大äº0 .setSql("quantity = quantity - 1"); int updated = baseMapper.update(null, updateWrapper); if (updated > 0) { // æ£æ¥æ´æ°åçæ°éæ¯å¦ä¸º0ï¼å¦ææ¯åå é¤è®°å½ EamFactorySecondMaintPlan updatedPlan = baseMapper.selectOne( Wrappers.<EamFactorySecondMaintPlan>lambdaQuery() .eq(EamFactorySecondMaintPlan::getFactoryId, factoryId) .eq(EamFactorySecondMaintPlan::getMonthPlan, monthPlan) ); if (updatedPlan != null && updatedPlan.getQuantity() == 0) { baseMapper.deleteById(updatedPlan.getId()); } return true; } return false; } /** * å¢å è®¡åæ°é */ private void increasePlanQuantity(String factoryId, String monthPlan) { // ç´æ¥æ´æ° LambdaUpdateWrapper<EamFactorySecondMaintPlan> updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(EamFactorySecondMaintPlan::getFactoryId, factoryId) .eq(EamFactorySecondMaintPlan::getMonthPlan, monthPlan) .setSql("quantity = quantity + 1"); if (baseMapper.update(null, updateWrapper) == 0) { // æ´æ°å¤±è´¥è¯´æè®°å½ä¸åå¨ï¼å建æ°è®°å½ createNewPlan(factoryId, monthPlan); } } } lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamReportThreeNoSpareServiceImpl.java
@@ -18,7 +18,9 @@ import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.eam.constant.BusinessCodeConst; import org.jeecg.modules.eam.constant.EamReportAccidentsRegisterEnum; import org.jeecg.modules.eam.constant.EamReportThreeNoSpareEnum; import org.jeecg.modules.eam.dto.EamReportThreeNoSpareDto; import org.jeecg.modules.eam.dto.EamReportThreeNoSpareDto; import org.jeecg.modules.eam.entity.EamEquipment; import org.jeecg.modules.eam.entity.EamReportThreeNoSpare; @@ -266,6 +268,47 @@ return Result.ok("å®¡æ¹æå"); } /** * âä¸ä¸æ¾è¿çååâåæè¡¨æå° * @param ids * @return */ @Override public List<EamReportThreeNoSpareDto> print(String ids){ QueryWrapper<EamReportThreeNoSpareDto> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("ertns.del_flag",CommonConstant.DEL_FLAG_0.toString()); queryWrapper.eq("ertns.submit_status", EamReportThreeNoSpareEnum.REPAIR_COMPLETED.name()); //ç¨æ·æ°æ®æé LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); if (sysUser == null) { return new ArrayList<>(); } if (StringUtils.isNotBlank(sysUser.getEamEquipmentIds())) { //éæ©äºè®¾å¤ï¼æ ¹æ®è®¾å¤idè¿æ»¤è®¾å¤ List<String> equipArr = Arrays.asList(sysUser.getEamEquipmentIds().split(",")); queryWrapper.in("e.equipment_code", equipArr); } else { //没æéæ©è®¾å¤ï¼æ ¹æ®ä¸å¿è¿æ»¤è®¾å¤ List<BaseFactoryUser> baseFactoryUserList=baseFactoryUserService. list(new LambdaQueryWrapper<BaseFactoryUser>().eq(BaseFactoryUser::getUserId,sysUser.getId())); if(!CollectionUtils.isEmpty(baseFactoryUserList)){ Set<String> factoryIds = baseFactoryUserList.stream().map(BaseFactoryUser::getFactoryId).collect(Collectors.toSet()); Set<String> factoryCode= baseFactoryService.listByIds(factoryIds).stream().map(BaseFactory::getOrgCode).collect(Collectors.toSet()); queryWrapper.in("e.factory_org_code", factoryCode); } else { return new ArrayList<>(); } } //æ¥è¯¢æ¡ä»¶è¿æ»¤ if (StrUtil.isNotEmpty(ids)) { List<String> idList = Arrays.asList(ids.split(",")); queryWrapper.in("ertns.id", idList); } else { queryWrapper.orderByDesc("ertns.create_time"); } return this.baseMapper.queryList(queryWrapper); } private boolean claimTask(String taskId, LoginUser user) { Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); if (task == null) { lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamHomeController.java
@@ -85,8 +85,7 @@ @ApiOperation(value = "设å¤ç®¡çé¦é¡µ-äºä¿å表", notes = "设å¤ç®¡çé¦é¡µ-äºä¿å表") @GetMapping(value = "/secondmaintenance") public Result<?> secondmaintenance() { //äºçº§ä¿å » List<EamFactorySecondMaintPlan> echartsDtoList = iEamFactorySecondMaintPlanService.list(); List<EamFactorySecondMaintPlan> echartsDtoList = iEamFactorySecondMaintPlanService.queryAllList(); return Result.ok(echartsDtoList); } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamReportThreeNoSpareController.java
@@ -141,6 +141,17 @@ return eamReportThreeNoSpareService.audit(eamReportThreeNoSpareDto); } /** * âä¸ä¸æ¾è¿çååâåæè¡¨æå° * @param ids * @return */ @ApiOperation(value = "âä¸ä¸æ¾è¿çååâåæè¡¨--æå°", notes = "âä¸ä¸æ¾è¿çååâåæè¡¨--æå°") @GetMapping(value = "/batchExport") public Result<?> batchExport(String ids){ return Result.ok(eamReportThreeNoSpareService.print(ids)); } /** * éè¿idå é¤ * lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamSecondMaintenanceOrderMapper.xml
@@ -3,14 +3,25 @@ <mapper namespace="org.jeecg.modules.eam.mapper.EamSecondMaintenanceOrderMapper"> <select id="queryPageList" resultType="org.jeecg.modules.eam.entity.EamSecondMaintenanceOrder"> select wmo.*, e.equipment_code, e.equipment_name,e.equipment_model,f.process_instance_id as 'procInstId', f.process_definition_key, f.process_definition_id, f.process_instance_id from eam_second_maintenance_order wmo inner join eam_equipment e on wmo.equipment_id = e.id left join flow_my_business f on f.data_id=wmo.id SELECT wmo.*, e.equipment_code, e.equipment_name, e.equipment_model, f.process_instance_id AS 'procInstId', f.process_definition_key, f.process_definition_id, f.process_instance_id FROM eam_second_maintenance_order wmo INNER JOIN eam_equipment e ON wmo.equipment_id = e.id LEFT JOIN ( SELECT data_id, MAX(id) AS max_id -- è·åæå¤§ID FROM flow_my_business GROUP BY data_id ) latest ON wmo.id = latest.data_id LEFT JOIN flow_my_business f ON f.id = latest.max_id ${ew.customSqlSegment} </select> <select id="queryList" resultType="org.jeecg.modules.eam.dto.EamSecondMaintenanceOrderExport"> lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamSecondMaintenanceRequest.java
@@ -55,6 +55,20 @@ @DateTimeFormat(pattern = "yyyy-MM-dd") private Date 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/IEamSecondMaintenanceOrderService.java
@@ -59,6 +59,7 @@ */ EamSecondMaintenanceOrder approval(EamSecondMaintenanceRequest request); /** * æ¹éæå°äºä¿å·¥å * @param ids lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamSecondMaintenanceOrderAsyncService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,153 @@ package org.jeecg.modules.eam.service.impl; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.exception.JeecgBootException; import org.jeecg.common.util.DateUtils; import org.jeecg.modules.eam.constant.BusinessCodeConst; import org.jeecg.modules.eam.constant.HfTemplateCategoryEnum; import org.jeecg.modules.eam.constant.SecondMaintenanceStatusEnum; import org.jeecg.modules.eam.entity.EamBaseHFCode; import org.jeecg.modules.eam.entity.EamMaintenanceStandardDetail; import org.jeecg.modules.eam.entity.EamSecondMaintenanceOrder; import org.jeecg.modules.eam.entity.EamSecondMaintenanceOrderDetail; import org.jeecg.modules.eam.mapper.EamSecondMaintenanceOrderMapper; import org.jeecg.modules.eam.service.IEamBaseHFCodeService; import org.jeecg.modules.eam.service.IEamFactorySecondMaintPlanService; import org.jeecg.modules.eam.service.IEamMaintenanceStandardDetailService; import org.jeecg.modules.eam.service.IEamSecondMaintenanceOrderDetailService; import org.jeecg.modules.system.service.ISysBusinessCodeRuleService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.temporal.TemporalAdjusters; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @Service @Slf4j public class EamSecondMaintenanceOrderAsyncService { @Resource private EamSecondMaintenanceOrderMapper eamSecondMaintenanceOrderMapper; @Autowired private IEamSecondMaintenanceOrderDetailService secondMaintenanceOrderDetailService; @Autowired private IEamMaintenanceStandardDetailService eamMaintenanceStandardDetailService; @Autowired private IEamBaseHFCodeService hfCodeService; @Autowired private ISysBusinessCodeRuleService businessCodeRuleService; @Autowired private IEamFactorySecondMaintPlanService factorySecondMaintPlanService; @Async public void asyncGenerateNextMaintenanceOrder(String orderId) { try { log.info("å¼å§å¼æ¥çæä¸æ¬¡å·¥åï¼åå·¥åID: {}", orderId); generateNextOrder(orderId); log.info("弿¥çæä¸æ¬¡å·¥å宿ï¼åå·¥åID: {}", orderId); } catch (Exception e) { log.error("弿¥çæä¸æ¬¡å·¥å失败ï¼å·¥åID: {}", orderId, e); // åéåè¦éç¥æè¿è¡éè¯ } } @Transactional(rollbackFor = Exception.class) public void generateNextOrder(String orderId) { EamSecondMaintenanceOrder entity = eamSecondMaintenanceOrderMapper.selectById(orderId); if (entity == null) { log.warn("åå·¥åä¸åå¨ï¼ID: {}", orderId); return; } if (!entity.getMaintenanceStatus().equals(SecondMaintenanceStatusEnum.COMPLETE.name())) { log.warn("åå·¥åç¶ææªå®æï¼ä¸çæä¸æ¬¡å·¥åï¼ID: {}", orderId); return; } // çææ°çå·¥åç¼å· String newOrderNum = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.SECOND_MAINTENANCE_CODE_RULE); if (StrUtil.isEmpty(newOrderNum)) { throw new JeecgBootException("çæå·¥åç¼å·å¤±è´¥"); } EamSecondMaintenanceOrder nextOrder = new EamSecondMaintenanceOrder(); nextOrder.setOrderNum(newOrderNum); nextOrder.setEquipmentId(entity.getEquipmentId()); nextOrder.setStandardId(entity.getStandardId()); nextOrder.setCreationMethod("AUTO"); // 设置ä¿å »æ¥æä¸ºåå·¥åä¿å »æ¥æå 6个æ nextOrder.setMaintenanceDate(calculateNextMaintenanceDate(entity.getMaintenanceDate())); // è®¾ç½®ææ¯ç¶æé´å®è¡¨HFç¼ç EamBaseHFCode eamBaseHFCode = hfCodeService.selectByCategory(HfTemplateCategoryEnum.SECOND_MAINTENANCE.name()); if (eamBaseHFCode == null) { throw new JeecgBootException("æªé ç½®ææ¯ç¶æé´å®è¡¨çHFç¼ç ï¼æ·»å 失败ï¼"); } nextOrder.setHfCode(eamBaseHFCode.getHfCode()); nextOrder.setRemark(entity.getRemark()); nextOrder.setMaintenanceStatus(SecondMaintenanceStatusEnum.WAIT_MAINTENANCE.name()); nextOrder.setCreationMethod(entity.getCreationMethod()); nextOrder.setDelFlag(CommonConstant.DEL_FLAG_0); // æå ¥æ°å·¥å eamSecondMaintenanceOrderMapper.insert(nextOrder); // å¤å¶å·¥åæç» List<EamMaintenanceStandardDetail> standardDetails = eamMaintenanceStandardDetailService.selectByStandardId(entity.getStandardId()); if (CollectionUtil.isEmpty(standardDetails)) { log.warn("åå·¥åçä¿å »è§èæç»ä¸ºç©ºï¼å·¥åID: {}", orderId); return; } List<EamSecondMaintenanceOrderDetail> orderDetails = standardDetails.stream() .map(item -> { EamSecondMaintenanceOrderDetail detail = new EamSecondMaintenanceOrderDetail(); BeanUtils.copyProperties(item, detail); detail.setId(null); detail.setOrderId(nextOrder.getId()); return detail; }) .collect(Collectors.toList()); secondMaintenanceOrderDetailService.saveBatch(orderDetails); // æå ¥é¦é¡µäºä¿å »è®¡å // ä½¿ç¨ SimpleDateFormat ç´æ¥æ ¼å¼å为âyyyyå¹´MMæâæ ¼å¼ SimpleDateFormat sdf = new SimpleDateFormat("yyyyå¹´MMæ"); String formattedDate = sdf.format(nextOrder.getMaintenanceDate()); factorySecondMaintPlanService.add(nextOrder.getEquipmentId(), formattedDate); } /** * 计ç®å 个æåç彿æåä¸å¤© * @param currentDate å½å工忥æ * @return å 个æåç彿æåä¸å¤© */ private Date calculateNextMaintenanceDate(Date currentDate) { // 转æ¢ä¸ºLocalDateå¤çæ¥æ LocalDate localDate = DateUtils.dateToLocalDate(currentDate); // 计ç®å 个æåçæ¥æ LocalDate sixMonthsLater = localDate.plusMonths(6); // è°æ´å°å½æçæåä¸å¤© LocalDate lastDayOfMonth = sixMonthsLater.with(TemporalAdjusters.lastDayOfMonth()); // 转æ¢åDateç±»å return DateUtils.localDateToDate(lastDayOfMonth); } } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamSecondMaintenanceOrderServiceImpl.java
@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.flowable.engine.TaskService; @@ -18,6 +19,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.aspect.annotation.EquipmentHistoryLog; import org.jeecg.modules.eam.constant.*; @@ -50,6 +52,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -61,12 +64,12 @@ * @Version: V1.0 */ @Service("IEamSecondMaintenanceOrderService") @Slf4j public class EamSecondMaintenanceOrderServiceImpl extends ServiceImpl<EamSecondMaintenanceOrderMapper, EamSecondMaintenanceOrder> implements IEamSecondMaintenanceOrderService, FlowCallBackServiceI { @Resource private EamSecondMaintenanceOrderMapper eamSecondMaintenanceOrderMapper; @Autowired private IEamSecondMaintenanceOrderDetailService secondMaintenanceOrderDetailService; @Autowired private FlowCommonService flowCommonService; @Autowired @@ -97,6 +100,10 @@ private BaseFactoryMapper baseFactoryMapper; @Autowired private IEamSecondMaintenanceOrderDetailService eamSecondMaintenanceOrderDetailService; @Autowired private EamSecondMaintenanceOrderAsyncService eamSecondMaintenanceOrderAsyncService; @Autowired private IEamFactorySecondMaintPlanService factorySecondMaintPlanService; @Override public IPage<EamSecondMaintenanceOrder> queryPageList(Page<EamSecondMaintenanceOrder> page, EamSecondMaintenanceQuery query) { @@ -340,6 +347,11 @@ }); secondMaintenanceOrderDetailService.saveBatch(requestTableDetailList); } // æå ¥é¦é¡µäºä¿å »è®¡å // ä½¿ç¨ SimpleDateFormat ç´æ¥æ ¼å¼å为âyyyyå¹´MMæâæ ¼å¼ SimpleDateFormat sdf = new SimpleDateFormat("yyyyå¹´MMæ"); String formattedDate = sdf.format(order.getMaintenanceDate()); factorySecondMaintPlanService.add(order.getEquipmentId(), formattedDate); return true; } @@ -357,9 +369,14 @@ if (!SecondMaintenanceStatusEnum.WAIT_MAINTENANCE.name().equals(entity.getMaintenanceStatus())) { throw new JeecgBootException("åªæå¾ ä¿å »ç¶æçæ°æ®æå¯ç¼è¾ï¼"); } // ç¼è¾é¦é¡µäºä¿å »è®¡å // ä½¿ç¨ SimpleDateFormat ç´æ¥æ ¼å¼å为âyyyyå¹´MMæâæ ¼å¼ SimpleDateFormat sdf = new SimpleDateFormat("yyyyå¹´MMæ"); String oldFormattedDate = sdf.format(entity.getMaintenanceDate()); String newFormattedDate = sdf.format(request.getMaintenanceDate()); factorySecondMaintPlanService.dateChange(entity.getEquipmentId(), oldFormattedDate,newFormattedDate); entity.setMaintenanceDate(request.getMaintenanceDate()); entity.setRemark(request.getRemark()); eamSecondMaintenanceOrderMapper.updateById(entity); //夿æ¯å¦åå¨ä¿å »äºº 妿åå¨åå¯å¨æµç¨ if (StringUtils.isNotBlank(entity.getOperator())) { @@ -389,7 +406,6 @@ eamEquipmentExtendService.updateEquipmentMaintenanceStatus(entity.getEquipmentId(), EquipmentMaintenanceStatus.UNDER_SECOND_MAINTENANCE.name()); return result.isSuccess(); } } return true; } @@ -665,6 +681,15 @@ } //ä¿åå·¥å eamSecondMaintenanceOrderMapper.updateById(entity); //弿¥çæä¸æ¬¡äºä¿å·¥å if (SecondMaintenanceStatusEnum.COMPLETE.name().equals(entity.getMaintenanceStatus())) { try { eamSecondMaintenanceOrderAsyncService.asyncGenerateNextMaintenanceOrder(entity.getId()); } catch (Exception e) { log.error("触å弿¥çæä¸æ¬¡å·¥å失败ï¼å·¥åID: {}", entity.getId(), e); } } return entity; } lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IBaseFactoryService.java
@@ -16,6 +16,13 @@ public interface IBaseFactoryService extends IService<BaseFactory> { /** * éè¿codeæ¥è¯¢å¯¹åºä¸å¿ * @param code * @return */ BaseFactory queryByCode(String code); /** * æ¥è¯¢ææäº§çº¿ä¿¡æ¯ï¼å¹¶åèç¹è¿è¡æ¾ç¤º */ List<EamBaseFactoryTreeModel> queryTreeList(); lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/BaseFactoryServiceImpl.java
@@ -49,6 +49,18 @@ private BaseFactoryUserMapper BaseFactoryUserMapper; /** * éè¿codeæ¥è¯¢å¯¹åºä¸å¿ * @param code * @return */ @Override public BaseFactory queryByCode(String code){ LambdaQueryWrapper<BaseFactory> query = new LambdaQueryWrapper<BaseFactory>(); query.eq(BaseFactory::getOrgCode, code); return this.baseMapper.selectOne(query); } /** * queryTreeList å¯¹åº queryTreeList æ¥è¯¢ææç设å¤è½¦é´ç®¡çæ°æ®,以æ ç»æå½¢å¼ååºç»å端 */ @Override