From e5a85d904ce028a35229ab6245ab894afbca6531 Mon Sep 17 00:00:00 2001 From: lyh <925863403@qq.com> Date: 星期六, 26 七月 2025 17:07:30 +0800 Subject: [PATCH] 维修工单 --- lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamThirdMaintenanceChangeServiceImpl.java | 212 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 205 insertions(+), 7 deletions(-) diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamThirdMaintenanceChangeServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamThirdMaintenanceChangeServiceImpl.java index f70581a..d7a068d 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamThirdMaintenanceChangeServiceImpl.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamThirdMaintenanceChangeServiceImpl.java @@ -5,11 +5,14 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.type.JdbcType; import org.apache.shiro.SecurityUtils; import org.flowable.engine.TaskService; import org.flowable.task.api.Task; @@ -34,6 +37,7 @@ 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.apithird.service.FlowCallBackServiceI; import org.jeecg.modules.flowable.apithird.service.FlowCommonService; import org.jeecg.modules.flowable.service.IFlowDefinitionService; import org.jeecg.modules.flowable.service.IFlowTaskService; @@ -49,6 +53,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.sql.Timestamp; import java.util.*; import java.util.stream.Collectors; @@ -58,8 +63,8 @@ * @Date: 2025-07-11 * @Version: V1.0 */ -@Service -public class EamThirdMaintenanceChangeServiceImpl extends ServiceImpl<EamThirdMaintenanceChangeMapper, EamThirdMaintenanceChange> implements IEamThirdMaintenanceChangeService { +@Service("IEamThirdMaintenanceChangeService") +public class EamThirdMaintenanceChangeServiceImpl extends ServiceImpl<EamThirdMaintenanceChangeMapper, EamThirdMaintenanceChange> implements IEamThirdMaintenanceChangeService, FlowCallBackServiceI { @Resource private EamThirdMaintenanceChangeMapper eamThirdMaintenanceChangeMapper; @@ -177,6 +182,7 @@ request.setApplicant(sysUser.getUsername()); request.setApplyDate(new Date()); request.setFactoryOrgCode(equipment.getFactoryOrgCode()); + request.setEquipmentId(equipment.getId()); // 涓変繚鍙樻洿宸ュ崟HF EamBaseHFCode eamBaseHFCode = hfCodeService.selectByCategory(HfTemplateCategoryEnum.THIRD_MAINTENANCE_CHANGE.name()); if (eamBaseHFCode == null) { @@ -203,6 +209,14 @@ } entity.setApplyReasonType(request.getApplyReasonType()); entity.setApplyReason(request.getApplyReason()); + entity.setRemark(request.getRemark()); + entity.setApplyCategory(request.getApplyCategory()); + if ("SCRAPPED".equals(request.getApplyCategory())) { + // 鐩存帴璁句负 null + entity.setDeferredMaintenanceDate(null); + } else { + entity.setDeferredMaintenanceDate(request.getDeferredMaintenanceDate()); + } this.getBaseMapper().updateById(entity); return true; } @@ -251,6 +265,8 @@ variables.put("organization", applyReasonTypeText); variables.put("comment", applyReasonTypeText); } + variables.put("proofreading", true); + variables.put("NextAssignee", userApprovalList); Result<?> result = flowDefinitionService.startProcessInstanceByKey("third_maintenance_change", variables); if(result == null || !result.isSuccess()) { throw new JeecgBootException("鍚姩娴佺▼澶辫触锛�"); @@ -300,13 +316,13 @@ } // 璁剧疆娴佺▼鍙橀噺 - setupProcessVariables(request, order, user, equipment); + setupProcessVariables(request, entity, user, equipment); // 瀹屾垚娴佺▼浠诲姟 Result result = flowTaskService.complete(request); // 鏍规嵁浠诲姟瀹屾垚缁撴灉鏇存柊宸ュ崟鐘舵�� - updateOrderStatus(result, request, order, user); + updateOrderStatus(result, request, entity, order, user); //鏇存柊宸ュ崟淇℃伅 this.getBaseMapper().updateById(entity); @@ -316,15 +332,173 @@ /** * 璁剧疆娴佺▼鍙橀噺 */ - private void setupProcessVariables(EamThirdMaintenanceChangeRequest request, EamThirdMaintenanceOrder order, LoginUser user, EamEquipment equipment) { + private void setupProcessVariables(EamThirdMaintenanceChangeRequest request, EamThirdMaintenanceChange entity, LoginUser user, EamEquipment equipment) { + //娴佺▼鍙橀噺 + Map<String, Object> values = new HashMap<>(); + List<String> userApprovalList; + List<UserSelector> userSelectors; + ThirdMaintenanceChangeStatusEnum status = ThirdMaintenanceChangeStatusEnum.getInstance(entity.getChangeStatus()); + switch (status) { + case EQUIPMENT_MANAGER_SIGNING: + // 浣跨敤鍗曚綅涓荤瀹ょ骇棰嗗瀹℃牳 + values.put("dataId", entity.getId()); + if(StringUtils.isBlank(request.getEquipmentManagerComment())) { + values.put("organization", "涓変繚宸ュ崟鍙樻洿浣跨敤鍗曚綅涓荤瀹ょ骇棰嗗"); + values.put("comment", "涓変繚宸ュ崟鍙樻洿浣跨敤鍗曚綅涓荤瀹ょ骇棰嗗"); + request.setComment("涓変繚宸ュ崟鍙樻洿閮ㄩ棬棰嗗瀹℃牳"); + } else { + values.put("organization", request.getEquipmentManagerComment()); + values.put("comment", request.getEquipmentManagerComment()); + request.setComment(request.getEquipmentManagerComment()); + } + if (BusinessCodeConst.APPROVED.equals(request.getEquipmentManagerSignatureResult())) { + values.put("confirmation", request.getEquipmentManagerSignatureResult()); + ThirdMaintenanceChangeReasonEnum applyReasonType = ThirdMaintenanceChangeReasonEnum.getInstance(request.getApplyReasonType()); + switch (applyReasonType) { + case PRODUCTION_WORK_ORDER_EXPEDITED: + //鐢熶骇浠诲姟 + userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0012); + if (CollectionUtil.isEmpty(userSelectors)) { + throw new JeecgBootException("璁惧鏈垎閰嶇粰鐢熶骇鎸囨尌閮ㄥ绾ч瀵硷紝鏃犳硶杩涘叆涓嬬骇瀹℃壒锛�"); + } + break; + case EQUIPMENT_BREAKDOWN_REPAIR: + //璁惧鏁呴殰 + userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0013); + if (CollectionUtil.isEmpty(userSelectors)) { + throw new JeecgBootException("璁惧鏈垎閰嶇粰缁翠慨鍖洪暱锛屾棤娉曡繘鍏ヤ笅绾у鎵癸紒"); + } + break; + case EQUIPMENT_SCRAPPED: + //璁惧鎶ュ簾 + userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0014); + if (CollectionUtil.isEmpty(userSelectors)) { + throw new JeecgBootException("璁惧鏈垎閰嶇粰璧勪骇绠$悊閮紝鏃犳硶杩涘叆涓嬬骇瀹℃壒锛�"); + } + break; + case EQUIPMENT_MAJOR: + //璁惧澶т慨銆侀」淇� + userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0016); + if (CollectionUtil.isEmpty(userSelectors)) { + throw new JeecgBootException("璁惧鏈垎閰嶇粰杩愮淮鍟嗗姟瀹や富浠伙紝鏃犳硶杩涘叆涓嬬骇瀹℃壒锛�"); + } + break; + case EQUIPMENT_RETROFITTING: + //璁惧鎼縼銆佹敼閫� + userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0015); + if (CollectionUtil.isEmpty(userSelectors)) { + throw new JeecgBootException("璁惧鏈垎閰嶇粰椤圭洰涓荤閮紝鏃犳硶杩涘叆涓嬬骇瀹℃壒锛�"); + } + break; + default: + throw new JeecgBootException("鍙樻洿鐢宠鍘熷洜鏃犳硶璇嗗埆锛屽鎵瑰け璐ワ紒"); + } + userApprovalList = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList()); + values.put("NextAssignee", userApprovalList); + } else { + values.put("confirmation", request.getEquipmentManagerSignatureResult()); + } + break; + case DEPART_MANAGER_SIGNING: + //閮ㄩ棬棰嗗瀹℃牳 + values.put("confirmation", request.getDepartManagerSignatureResult()); + values.put("dataId", entity.getId()); + if(StringUtils.isBlank(request.getDepartManagerComment())) { + values.put("organization", "涓変繚宸ュ崟鍙樻洿閮ㄩ棬棰嗗瀹℃牳"); + values.put("comment", "涓変繚宸ュ崟鍙樻洿閮ㄩ棬棰嗗瀹℃牳"); + request.setComment("涓変繚宸ュ崟鍙樻洿閮ㄩ棬棰嗗瀹℃牳"); + } else { + values.put("organization", request.getDepartManagerComment()); + values.put("comment", request.getDepartManagerComment()); + request.setComment(request.getDepartManagerComment()); + } + if (BusinessCodeConst.APPROVED.equals(request.getDepartManagerSignatureResult())) { + // 鑾峰彇涓嬩竴姝ユ墽琛屼汉 + userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0017); + if (CollectionUtil.isEmpty(userSelectors)) { + throw new JeecgBootException("璁惧鏈垎閰嶇粰杩愮淮绠$悊瀹ゅ涓讳换锛屾棤娉曡繘鍏ヤ笅绾у鎵癸紒"); + } + userApprovalList = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList()); + values.put("NextAssignee", userApprovalList); + } else { + values.put("confirmation", request.getDepartManagerSignatureResult()); + } + break; + case PRODUCTION_SUPPORT_SIGNING: + // 缁翠慨瀹や富浠荤瀛� + values.put("dataId", entity.getId()); + if(StringUtils.isBlank(request.getDepartManagerComment())) { + values.put("organization", "涓変繚宸ュ崟鍙樻洿鐢熶骇淇濋殰閮ㄥ鏍�"); + values.put("comment", "涓変繚宸ュ崟鍙樻洿鐢熶骇淇濋殰閮ㄥ鏍�"); + request.setComment("涓変繚宸ュ崟鍙樻洿鐢熶骇淇濋殰閮ㄥ鏍�"); + } else { + values.put("organization", request.getProductionSupportComment()); + values.put("comment", request.getProductionSupportComment()); + request.setComment(request.getProductionSupportComment()); + } + break; + } + request.setValues(values); } /** * 鏇存柊宸ュ崟鐘舵�� */ - private void updateOrderStatus(Result result, EamThirdMaintenanceChangeRequest request, EamThirdMaintenanceOrder order, LoginUser user) { - + private void updateOrderStatus(Result result, EamThirdMaintenanceChangeRequest request, EamThirdMaintenanceChange entity, EamThirdMaintenanceOrder order, LoginUser user) { + if (result.isSuccess()) { + ThirdMaintenanceChangeStatusEnum status = ThirdMaintenanceChangeStatusEnum.getInstance(entity.getChangeStatus()); + switch (status) { + case EQUIPMENT_MANAGER_SIGNING: + // 璁剧疆entity + entity.setEquipmentManagerSignature(user.getUsername()); + entity.setEquipmentManagerSignatureTime(new Date()); + entity.setEquipmentManagerComment(request.getEquipmentManagerComment()); + entity.setEquipmentManagerSignatureResult(request.getEquipmentManagerSignatureResult()); + if(BusinessCodeConst.APPROVED.equals(request.getEquipmentManagerSignatureResult())) { + //閫氳繃 + entity.setChangeStatus(ThirdMaintenanceChangeStatusEnum.DEPART_MANAGER_SIGNING.name()); + } else { + //椹冲洖 + entity.setChangeStatus(ThirdMaintenanceChangeStatusEnum.REJECTED.name()); + } + break; + case DEPART_MANAGER_SIGNING: + entity.setDepartManagerSignature(user.getUsername()); + entity.setDepartManagerSignatureTime(new Date()); + entity.setDepartManagerComment(request.getDepartManagerComment()); + entity.setDepartManagerSignatureResult(request.getDepartManagerSignatureResult()); + if(BusinessCodeConst.APPROVED.equals(request.getDepartManagerSignatureResult())) { + // 閫氳繃 + entity.setChangeStatus(ThirdMaintenanceChangeStatusEnum.PRODUCTION_SUPPORT_SIGNING.name()); + } else { + //椹冲洖 + entity.setChangeStatus(ThirdMaintenanceChangeStatusEnum.REJECTED.name()); + } + break; + case PRODUCTION_SUPPORT_SIGNING: + entity.setProductionSupportSignature(user.getUsername()); + entity.setProductionSupportSignatureTime(new Date()); + entity.setProductionSupportSignatureResult(request.getProductionSupportSignatureResult()); + entity.setProductionSupportComment(request.getProductionSupportComment()); + if(BusinessCodeConst.APPROVED.equals(request.getProductionSupportSignatureResult())) { + //閫氳繃 + entity.setChangeStatus(ThirdMaintenanceChangeStatusEnum.COMPLETED.name()); + if ("SCRAPPED".equals(request.getApplyCategory())) { + order.setMaintenanceDate(null); + order.setMaintenanceStatus(ThirdMaintenanceStatusEnum.ABOLISH.name()); + } else { + order.setMaintenanceDate(entity.getDeferredMaintenanceDate()); + order.setMaintenanceStatus(ThirdMaintenanceStatusEnum.WAIT_MAINTENANCE.name()); + } + thirdMaintenanceOrderService.updateById(order); + }else { + //椹冲洖 + entity.setChangeStatus(ThirdMaintenanceChangeStatusEnum.REJECTED.name()); + } + break; + } + } } private boolean isUserAuthorized(FlowMyBusiness flowMyBusiness, LoginUser user) { @@ -344,4 +518,28 @@ return true; } + @Override + public void afterFlowHandle(FlowMyBusiness business) { + business.getTaskNameId();//鎺ヤ笅鏉ュ鎵圭殑鑺傜偣 + business.getValues();//鍓嶇浼犺繘鏉ョ殑鍙傛暟 + business.getActStatus(); + } + + @Override + public Object getBusinessDataById(String dataId) { + return this.getById(dataId); + } + + @Override + public Map<String, Object> flowValuesOfTask(String taskNameId, Map<String, Object> values) { + return null; + } + + @Override + public List<String> flowCandidateUsernamesOfTask(String taskNameId, Map<String, Object> values) { + //涓氬姟鏄惁骞查娴佺▼锛屼笟鍔″共棰勶紝娴佺▼骞查锛屾寚瀹氫汉鍛樿繘琛屽鐞� + //鑾峰彇涓嬩竴姝ュ鐞嗕汉 + Object object = values.get("NextAssignee"); + return (List<String>) object; + } } -- Gitblit v1.9.3