From 40bf019f0b348378385ed0a819b5b06e1708d558 Mon Sep 17 00:00:00 2001 From: lyh <925863403@qq.com> Date: 星期六, 09 八月 2025 00:19:37 +0800 Subject: [PATCH] 工作流代码 --- lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java | 494 ++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 324 insertions(+), 170 deletions(-) diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java index a816ad4..88c86f4 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java @@ -5,6 +5,7 @@ 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.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -40,6 +41,7 @@ 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.domain.vo.FlowTaskVo; import org.jeecg.modules.flowable.service.IFlowDefinitionService; import org.jeecg.modules.flowable.service.IFlowTaskService; import org.jeecg.modules.system.entity.BaseFactory; @@ -338,209 +340,361 @@ /*娴佺▼涓氬姟浠g爜--------------------------寮�濮�*/ - /** - * 娴佺▼鍚姩,淇濆瓨瀵瑰簲鐨勬暟鎹� - * - * @param id - * @return - */ @Override + @Transactional(rollbackFor = Exception.class) public Result<?> saveEamMaintenanceStandardProcess(String id) { - LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - EamMaintenanceStandard maintenanceStandard = this.getById(id); - if (maintenanceStandard == null) { - return Result.error("鏈壘鍒板搴斾繚鍏绘爣鍑�"); + // 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛 + LoginUser currentUser = getCurrentUser(); + + // 鏍¢獙淇濆吇鏍囧噯鏄惁瀛樺湪 + EamMaintenanceStandard maintenanceStandard = validateStandardExistence(id); + + // 鏍¢獙鍏宠仈璁惧鏄惁瀛樺湪 + EamEquipment equipment = validateEquipmentExistence(maintenanceStandard.getEquipmentId()); + + // 妫�鏌ユ槸鍚︽槸椹冲洖鍚庨噸鏂版彁浜ょ殑娴佺▼ + FlowMyBusiness flowBusiness = flowMyBusinessService.selectByDataId(maintenanceStandard.getId()); + + if (isReSubmitScenario(flowBusiness)) { + return handleReSubmitScenario(maintenanceStandard, equipment, currentUser, flowBusiness); } - System.out.println("淇濆吇瑙勮寖娴佺▼锛�" + maintenanceStandard.getId()); - flowCommonService.initActBusiness(maintenanceStandard.getStandardName() + "瑙勮寖杩涜娴佺▼瀹℃牳", - maintenanceStandard.getId(), "IEamMaintenanceStandardService", "eam_maintenance_standard", null); - Map<String, Object> variables = new HashMap<>(); - variables.put("dataId", maintenanceStandard.getId()); - variables.put("organization", "淇濆吇瑙勮寖鍚姩娴佺▼"); - variables.put("comment", "淇濆吇瑙勮寖鍚姩娴佺▼"); - variables.put("proofreading", true); - EamEquipment eamEquipment = eamEquipmentService.getById(maintenanceStandard.getEquipmentId()); - List<UserSelector> userSelectorList = sysUserService.selectOperatorList(eamEquipment.getEquipmentCode(), eamEquipment.getFactoryOrgCode(), BusinessCodeConst.PCR0008); - if (!CollectionUtils.isEmpty(userSelectorList)) { - List<String> usernameList = userSelectorList.stream().map(UserSelector::getUsername).collect(Collectors.toList()); - if (CollectionUtils.isNotEmpty(usernameList)) { - variables.put("NextAssignee", usernameList); - }else { - throw new JeecgBootException("璁惧鏈瓨鍦ㄧ淮淇涓讳换锛屾棤娉曡繘鍏ヤ笅绾у鎵癸紒"); - } + + // 澶勭悊棣栨鍚姩娴佺▼ + return handleFirstSubmitScenario(maintenanceStandard, equipment, currentUser); + } + + /** + * 鍒ゆ柇鏄惁鏄┏鍥炲悗閲嶆柊鎻愪氦鐨勫満鏅� + */ + private boolean isReSubmitScenario(FlowMyBusiness flowBusiness) { + return flowBusiness != null && + MaintenanceStandardStatusEnum.WAIT_SUBMIT.name().equals(flowBusiness.getTaskNameId()); + } + + /** + * 澶勭悊椹冲洖鍚庨噸鏂版彁浜ょ殑娴佺▼ + */ + private Result<?> handleReSubmitScenario(EamMaintenanceStandard maintenanceStandard, + EamEquipment equipment, + LoginUser currentUser, + FlowMyBusiness flowBusiness) { + // 鏇存柊寰呭姙缁翠慨宸� + updateTodoMaintenanceWorkers(flowBusiness, equipment); + + // 璁ら浠诲姟 + claimTaskOrFail(flowBusiness.getTaskId(), currentUser); + + // 鏋勫缓娴佺▼鍙橀噺 + Map<String, Object> variables = buildProcessVariables(maintenanceStandard.getId(), "淇濆吇瑙勮寖鍐嶆鍚姩娴佺▼"); + + // 璁剧疆涓嬩竴绾у鎵逛汉(缁翠慨瀹や富浠�) + setNextApprover(variables, equipment, BusinessCodeConst.PCR0008, "缁翠慨瀹や富浠�"); + + // 瀹屾垚褰撳墠浠诲姟锛屾帹杩涙祦绋� + FlowTaskVo taskVo = buildFlowTaskVo(flowBusiness, maintenanceStandard, variables, "淇濆吇瑙勮寖鍐嶆鍚姩娴佺▼"); + Result result = flowTaskService.complete(taskVo); + + // 鏇存柊淇濆吇鏍囧噯鐘舵�� + if (result.isSuccess()) { + updateMaintenanceStandardStatus(maintenanceStandard, currentUser, MaintenanceStandardStatusEnum.WAIT_REPAIR_DIRECTOR); + return Result.ok("淇濆吇瑙勮寖娴佺▼閲嶅惎鎴愬姛"); } - Result result = flowDefinitionService.startProcessInstanceByKey("eam_maintenance_standard", variables); - if (!result.isSuccess()) { - super.removeById(maintenanceStandard.getId()); - } else { - maintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_REPAIR_DIRECTOR.name()); - maintenanceStandard.setDesigner(user.getUsername()); - maintenanceStandard.setDesignTime(new Date()); - eamMaintenanceStandardMapper.updateById(maintenanceStandard); - //鑾峰彇flow鐨勬祦绋嬪疄渚媔d,璁剧疆涓嬩竴姝ョ殑澶勭悊浜哄憳 - List<FlowMyBusiness> businessList = flowMyBusinessService.list( - new QueryWrapper<FlowMyBusiness>() - .eq("data_id", maintenanceStandard.getId()) - ); - if (businessList.isEmpty()) { - return Result.error("娴佺▼璁板綍涓嶅瓨鍦�"); - } - } + return result; } /** - * 瀹℃壒鎿嶄綔 - * - * @param eamMaintenanceStandardVo - * @return + * 澶勭悊棣栨鎻愪氦鐨勬祦绋� + */ + private Result<?> handleFirstSubmitScenario(EamMaintenanceStandard maintenanceStandard, + EamEquipment equipment, + LoginUser currentUser) { + // 鍒濆鍖栨祦绋嬩笟鍔′俊鎭� + flowCommonService.initActBusiness( + maintenanceStandard.getStandardName() + "瑙勮寖杩涜娴佺▼瀹℃牳", + maintenanceStandard.getId(), + "IEamMaintenanceStandardService", + "eam_maintenance_standard", + null + ); + + // 鏋勫缓娴佺▼鍙橀噺 + Map<String, Object> variables = buildProcessVariables(maintenanceStandard.getId(), "淇濆吇瑙勮寖鍚姩娴佺▼"); + + // 璁剧疆涓嬩竴绾у鎵逛汉(缁翠慨瀹や富浠�) + setNextApprover(variables, equipment, BusinessCodeConst.PCR0008, "缁翠慨瀹や富浠�"); + + // 鍚姩娴佺▼瀹炰緥 + Result result = flowDefinitionService.startProcessInstanceByKey("eam_maintenance_standard", variables); + + // 澶勭悊娴佺▼鍚姩缁撴灉 + if (result.isSuccess()) { + updateMaintenanceStandardStatus(maintenanceStandard, currentUser, MaintenanceStandardStatusEnum.WAIT_REPAIR_DIRECTOR); + validateFlowBusinessRecord(maintenanceStandard.getId()); + } else { + this.removeById(maintenanceStandard.getId()); + } + + return result; + } + + /** + * 瀹℃壒鎿嶄綔 */ @Override @Transactional(rollbackFor = Exception.class) - public Result<?> auditEamMaintenanceStandard(EamMaintenanceStandardVo eamMaintenanceStandardVo) { - EamMaintenanceStandard eamMaintenanceStandard = this.getById(eamMaintenanceStandardVo.getDataId()); - if (eamMaintenanceStandard == null) { - return Result.error("鏈壘鍒板搴斾繚鍏绘爣鍑�"); - } - // 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛 - LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - if (user == null || StrUtil.isBlank(user.getId())) { - throw new JeecgBootException("鏈幏鍙栧埌鐧诲綍鐢ㄦ埛锛岃閲嶆柊鐧诲綍鍚庡啀璇曪紒"); - } - eamMaintenanceStandardVo.setAssignee(user.getUsername()); - // 鑾峰彇娴佺▼涓氬姟璁板綍 - FlowMyBusiness flowMyBusiness = flowMyBusinessService.getFlowMyBusiness(eamMaintenanceStandardVo.getInstanceId(), eamMaintenanceStandardVo.getTaskId()); - if (flowMyBusiness == null) { - throw new JeecgBootException("娴佺▼瀹炰緥涓嶅瓨鍦紝璇峰埛鏂板悗閲嶈瘯锛�"); - } + public Result<?> auditEamMaintenanceStandard(EamMaintenanceStandardVo vo) { + // 鍩虹鏍¢獙 + EamMaintenanceStandard standard = validateStandardExistence(vo.getDataId()); + LoginUser user = getCurrentUser(); + FlowMyBusiness business = validateFlowBusiness(vo); + validateUserAuthorization(business, user); + claimTaskOrFail(business.getTaskId(), user); - boolean userAuthorized = isUserAuthorized(flowMyBusiness, user); - if (!userAuthorized) { - throw new JeecgBootException("鐢ㄦ埛鏃犳潈鎿嶄綔姝や换鍔★紝璇峰埛鏂板悗閲嶈瘯锛�"); - } - // 璁ら浠诲姟 - if (!claimTask(flowMyBusiness.getTaskId(), user)) { - throw new JeecgBootException("浠诲姟涓嶅瓨鍦ㄣ�佸凡瀹屾垚鎴栧凡琚粬浜鸿棰嗭紒"); - } + // 鍑嗗瀹℃壒鎵�闇�鏁版嵁 + EamEquipment equipment = validateEquipmentExistence(standard.getEquipmentId()); + Map<String, Object> variables = new HashMap<>(); - EamEquipment eamEquipment = eamEquipmentService.getById(eamMaintenanceStandard.getEquipmentId()); - if (eamEquipment == null) { - throw new JeecgBootException("璁惧涓嶅瓨鍦紝璇锋鏌ワ紒"); - } - - MaintenanceStandardStatusEnum status = MaintenanceStandardStatusEnum.getInstance(eamMaintenanceStandard.getStandardStatus()); + // 鏍规嵁褰撳墠鐘舵�佸鐞嗗鎵� + MaintenanceStandardStatusEnum status = MaintenanceStandardStatusEnum.getInstance(standard.getStandardStatus()); if (status == null) { - return null; + throw new JeecgBootException("鏃犳晥鐨勪繚鍏绘爣鍑嗙姸鎬�"); } - //娴佺▼鍙橀噺 - Map<String, Object> values = new HashMap<>(); - List<String> userApprovalList; - List<UserSelector> userSelectors; - switch (status){ + + switch (status) { case WAIT_REPAIR_DIRECTOR: - //缁翠慨涓讳换瀹℃牳 - userSelectors = sysUserService.selectOperatorList(eamEquipment.getEquipmentCode(), eamEquipment.getFactoryOrgCode(), BusinessCodeConst.PCR0009); - if (CollectionUtils.isEmpty(userSelectors)) { - throw new JeecgBootException("璁惧鏈瓨鍦ㄧ敓浜ц澶囨妧鏈富绠★紝鏃犳硶杩涘叆涓嬬骇瀹℃壒锛�"); - }else { - userApprovalList= userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList()); - values.put("dataId", eamMaintenanceStandard.getId()); - values.put("repairManagerApproveResult", eamMaintenanceStandardVo.getRepairManagerApproveResult()); - if (StrUtil.isEmpty(eamMaintenanceStandardVo.getRepairManagerApproveComment())){ - eamMaintenanceStandardVo.setRepairManagerApproveComment(""); - } - values.put("organization", eamMaintenanceStandardVo.getRepairManagerApproveComment()); - values.put("comment", eamMaintenanceStandardVo.getRepairManagerApproveComment()); - eamMaintenanceStandardVo.setComment(eamMaintenanceStandardVo.getRepairManagerApproveComment()); - if (eamMaintenanceStandardVo.getRepairManagerApproveResult().equals("2")){ - eamMaintenanceStandard.setStandardStatus(SecondMaintenanceStatusEnum.ABOLISH.name()); - }else { - values.put("NextAssignee", userApprovalList); - eamMaintenanceStandard.setRepairManager(user.getUsername()); - eamMaintenanceStandard.setRepairManagerApproveResult(eamMaintenanceStandardVo.getRepairManagerApproveResult()); - eamMaintenanceStandard.setRepairManagerApproveTime(new Date()); - eamMaintenanceStandard.setRepairManagerApproveComment(eamMaintenanceStandardVo.getComment()); - eamMaintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_TECHNICAL_DIRECTOR.name()); - } - } + handleRepairDirectorApproval(vo, standard, equipment, variables); break; case WAIT_TECHNICAL_DIRECTOR: - //寰呮妧鏈富绠″鎵� - if (StrUtil.isEmpty(eamMaintenanceStandardVo.getTechnicalManagerApproveComment())){ - eamMaintenanceStandardVo.setTechnicalManagerApproveComment(""); - } - values.put("dataId", eamMaintenanceStandard.getId()); - values.put("organization", eamMaintenanceStandardVo.getTechnicalManagerApproveComment()); - values.put("comment", eamMaintenanceStandardVo.getTechnicalManagerApproveComment()); - values.put("technicalManagerApproveResult", eamMaintenanceStandardVo.getTechnicalManagerApproveResult()); - eamMaintenanceStandardVo.setComment(eamMaintenanceStandardVo.getTechnicalManagerApproveComment()); - if (eamMaintenanceStandardVo.getTechnicalManagerApproveResult().equals("2")){ - eamMaintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_REPAIR_DIRECTOR.name()); - userSelectors = sysUserService.selectOperatorList(eamEquipment.getEquipmentCode(), eamEquipment.getFactoryOrgCode(), BusinessCodeConst.PCR0008); - if (CollectionUtil.isEmpty(userSelectors)) { - throw new JeecgBootException("璁惧鏈瓨鍦ㄧ淮淇涓讳换锛屾棤娉曡繘鍏ラ┏鍥炲鎵癸紒"); - }else{ - userApprovalList = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList()); - values.put("NextAssignee", userApprovalList); - } - }else { - eamMaintenanceStandard.setTechnicalManager(user.getUsername()); - eamMaintenanceStandard.setTechnicalManagerApproveResult(eamMaintenanceStandardVo.getTechnicalManagerApproveResult()); - eamMaintenanceStandard.setTechnicalManagerApproveTime(new Date()); - eamMaintenanceStandard.setTechnicalManagerApproveComment(eamMaintenanceStandardVo.getTechnicalManagerApproveComment()); - eamMaintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.START.name()); - } + handleTechnicalDirectorApproval(vo, standard, equipment, variables); break; default: - throw new JeecgBootException("瀹℃壒澶辫触"); + throw new JeecgBootException("褰撳墠鐘舵�佷笉鏀寔瀹℃壒鎿嶄綔"); + } - } - eamMaintenanceStandardVo.setValues(values); - // 瀹屾垚娴佺▼浠诲姟 - Result result = flowTaskService.complete(eamMaintenanceStandardVo); - if (!result.isSuccess()) { - throw new JeecgBootException("瀹℃壒澶辫触锛岃鍒锋柊鏌ョ湅锛�"); - } - this.updateById(eamMaintenanceStandard); - if (StrUtil.isNotEmpty(eamMaintenanceStandardVo.getTechnicalManagerApproveResult())){ - if (eamMaintenanceStandardVo.getTechnicalManagerApproveResult().equals("1")) { - eamMaintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.START.name()); - //鍒ゆ柇鏄惁杩涜鍗囩増锛岄�氳繃璁惧缂栧彿銆佷繚鍏诲垎绫汇�佺姸鎬佽繘琛岀瓫閫� - EamMaintenanceStandard maintenanceStandard = this.getById(eamMaintenanceStandardVo.getDataId()); - QueryWrapper<EamMaintenanceStandard> queryWrapper = new QueryWrapper<>(); - queryWrapper.ne("id", eamMaintenanceStandardVo.getDataId()); - queryWrapper.eq("equipment_id", maintenanceStandard.getEquipmentId()); - queryWrapper.eq("maintenance_category", maintenanceStandard.getMaintenanceCategory()); - queryWrapper.eq("standard_status", MaintenanceStandardStatusEnum.START.name()); - List<EamMaintenanceStandard> list = eamMaintenanceStandardMapper.selectList(queryWrapper); - if (!CollectionUtils.isEmpty(list)) { - //浣滃簾鍘熸湁 - for (EamMaintenanceStandard eamMaintenanceStandard1 : list) { - eamMaintenanceStandard1.setStandardStatus(MaintenanceStandardStatusEnum.ABOLISH.name()); - this.updateById(eamMaintenanceStandard1); - } - } - } - } + // 鎻愪氦瀹℃壒缁撴灉 + submitApprovalResult(vo, standard, variables); return Result.OK("鎿嶄綔鎴愬姛"); } - private boolean isUserAuthorized(FlowMyBusiness flowMyBusiness, LoginUser user) { - List<String> todoUsers = JSON.parseArray(flowMyBusiness.getTodoUsers(), String.class); - return todoUsers != null && todoUsers.contains(user.getUsername()); + private LoginUser getCurrentUser() { + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if (user == null) { + throw new JeecgBootException("鏈幏鍙栧埌鐧诲綍鐢ㄦ埛锛岃閲嶆柊鐧诲綍鍚庡啀璇曪紒"); + } + return user; } - private boolean claimTask(String taskId, LoginUser user) { + private EamMaintenanceStandard validateStandardExistence(String id) { + EamMaintenanceStandard standard = this.getById(id); + if (standard == null) { + throw new JeecgBootException("鏈壘鍒板搴斾繚鍏绘爣鍑�"); + } + return standard; + } + + private EamEquipment validateEquipmentExistence(String equipmentId) { + EamEquipment equipment = eamEquipmentService.getById(equipmentId); + if (equipment == null) { + throw new JeecgBootException("鍏宠仈璁惧涓嶅瓨鍦�"); + } + return equipment; + } + + private FlowMyBusiness validateFlowBusiness(EamMaintenanceStandardVo vo) { + FlowMyBusiness business = flowMyBusinessService.getFlowMyBusiness(vo.getInstanceId(), vo.getTaskId()); + if (business == null) { + throw new JeecgBootException("娴佺▼瀹炰緥涓嶅瓨鍦紝璇峰埛鏂伴噸璇�"); + } + return business; + } + + private void validateUserAuthorization(FlowMyBusiness business, LoginUser user) { + List<String> todoUsers = JSON.parseArray(business.getTodoUsers(), String.class); + if (todoUsers == null || !todoUsers.contains(user.getUsername())) { + throw new JeecgBootException("鐢ㄦ埛鏃犳潈鎿嶄綔姝や换鍔�"); + } + } + + private void claimTaskOrFail(String taskId, LoginUser user) { Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); if (task == null) { - return false; + throw new JeecgBootException("浠诲姟涓嶅瓨鍦ㄦ垨宸插畬鎴�"); } if (task.getAssignee() != null && !task.getAssignee().equals(user.getUsername())) { - return false; + throw new JeecgBootException("浠诲姟宸茶浠栦汉璁ら"); } taskService.claim(taskId, user.getUsername()); - return true; + } + + private Map<String, Object> buildProcessVariables(String dataId, String comment) { + Map<String, Object> vars = new HashMap<>(); + vars.put("dataId", dataId); + vars.put("organization", comment); + vars.put("comment", comment); + vars.put("proofreading", true); + return vars; + } + + private void setNextApprover(Map<String, Object> variables, EamEquipment equipment, + String businessCode, String roleName) { + List<UserSelector> approvers = sysUserService.selectOperatorList( + equipment.getEquipmentCode(), + equipment.getFactoryOrgCode(), + businessCode + ); + if (CollectionUtils.isEmpty(approvers)) { + throw new JeecgBootException("璁惧鏈厤缃�" + roleName); + } + variables.put("NextAssignee", approvers.stream() + .map(UserSelector::getUsername) + .collect(Collectors.toList())); + } + + private void updateTodoMaintenanceWorkers(FlowMyBusiness business, EamEquipment equipment) { + List<UserSelector> maintenanceWorkers = sysUserService.selectOperatorList( + equipment.getEquipmentCode(), + equipment.getFactoryOrgCode(), + BusinessCodeConst.PCR0002 + ); + if (CollectionUtils.isEmpty(maintenanceWorkers)) { + throw new JeecgBootException("璁惧鏈厤缃淮淇伐"); + } + business.setTodoUsers(JSON.toJSONString( + maintenanceWorkers.stream() + .map(UserSelector::getUsername) + .collect(Collectors.toList()) + )); + flowMyBusinessService.updateById(business); + } + + private FlowTaskVo buildFlowTaskVo(FlowMyBusiness business, EamMaintenanceStandard standard, + Map<String, Object> variables, String comment) { + FlowTaskVo taskVo = new FlowTaskVo(); + taskVo.setTaskId(business.getTaskId()); + taskVo.setComment(comment); + taskVo.setInstanceId(business.getProcessInstanceId()); + taskVo.setDataId(standard.getId()); + taskVo.setValues(variables); + return taskVo; + } + + private void updateMaintenanceStandardStatus(EamMaintenanceStandard standard, + LoginUser user, + MaintenanceStandardStatusEnum status) { + standard.setStandardStatus(status.name()); + if (MaintenanceStandardStatusEnum.WAIT_REPAIR_DIRECTOR.equals(status)) { + standard.setDesigner(user.getUsername()); + standard.setDesignTime(new Date()); + } + this.updateById(standard); + } + + private void validateFlowBusinessRecord(String standardId) { + List<FlowMyBusiness> businessList = flowMyBusinessService.list( + new QueryWrapper<FlowMyBusiness>().eq("data_id", standardId) + ); + if (CollectionUtils.isEmpty(businessList)) { + throw new JeecgBootException("娴佺▼璁板綍涓嶅瓨鍦�"); + } + } + + private void handleRepairDirectorApproval(EamMaintenanceStandardVo vo, + EamMaintenanceStandard standard, + EamEquipment equipment, + Map<String, Object> variables) { + // 璁剧疆鍩虹娴佺▼鍙橀噺 + variables.putAll(buildProcessVariables(standard.getId(), + StrUtil.blankToDefault(vo.getRepairManagerApproveComment(), ""))); + variables.put("repairManagerApproveResult", vo.getRepairManagerApproveResult()); + + LoginUser user = getCurrentUser(); + vo.setAssignee(user.getUsername()); + vo.setComment(vo.getRepairManagerApproveComment()); + if ("2".equals(vo.getRepairManagerApproveResult())) { + // 椹冲洖 + UpdateWrapper<EamMaintenanceStandard> updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id", standard.getId()); + updateWrapper.set("standard_status", MaintenanceStandardStatusEnum.WAIT_SUBMIT.name()); + updateWrapper.set("designer", null); + updateWrapper.set("design_time", null); + this.update(updateWrapper); + } else { + // 閫氳繃 + setNextApprover(variables, equipment, BusinessCodeConst.PCR0009, "鐢熶骇璁惧鎶�鏈富绠�"); + standard.setRepairManager(user.getUsername()); + standard.setRepairManagerApproveResult(vo.getRepairManagerApproveResult()); + standard.setRepairManagerApproveTime(new Date()); + standard.setRepairManagerApproveComment(vo.getRepairManagerApproveComment()); + standard.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_TECHNICAL_DIRECTOR.name()); + } + } + + private void handleTechnicalDirectorApproval(EamMaintenanceStandardVo vo, + EamMaintenanceStandard standard, + EamEquipment equipment, + Map<String, Object> variables) { + // 璁剧疆鍩虹娴佺▼鍙橀噺 + variables.putAll(buildProcessVariables(standard.getId(), + StrUtil.blankToDefault(vo.getTechnicalManagerApproveComment(), ""))); + variables.put("technicalManagerApproveResult", vo.getTechnicalManagerApproveResult()); + + LoginUser user = getCurrentUser(); + vo.setAssignee(user.getUsername()); + vo.setComment(vo.getTechnicalManagerApproveComment()); + if ("2".equals(vo.getTechnicalManagerApproveResult())) { + // 椹冲洖 + standard.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_REPAIR_DIRECTOR.name()); + standard.setRepairManager(null); + standard.setRepairManagerApproveResult(null); + standard.setRepairManagerApproveTime(null); + standard.setRepairManagerApproveComment(null); + setNextApprover(variables, equipment, BusinessCodeConst.PCR0008, "缁翠慨瀹や富浠�"); + } else { + // 閫氳繃 + standard.setTechnicalManager(user.getUsername()); + standard.setTechnicalManagerApproveResult(vo.getTechnicalManagerApproveResult()); + standard.setTechnicalManagerApproveTime(new Date()); + standard.setTechnicalManagerApproveComment(vo.getTechnicalManagerApproveComment()); + standard.setStandardStatus(MaintenanceStandardStatusEnum.START.name()); + } + } + + private void submitApprovalResult(EamMaintenanceStandardVo vo, + EamMaintenanceStandard standard, + Map<String, Object> variables) { + vo.setValues(variables); + Result result = flowTaskService.complete(vo); + if (!result.isSuccess()) { + throw new JeecgBootException("瀹℃壒娴佺▼鎻愪氦澶辫触: " + result.getMessage()); + } + + // 鏇存柊淇濆吇鏍囧噯 + this.updateById(standard); + + // 鎶�鏈富绠″鎵归�氳繃鍚庯紝浣滃簾鏃х増鏈� + if (MaintenanceStandardStatusEnum.WAIT_TECHNICAL_DIRECTOR.name().equals(standard.getStandardStatus()) + && "1".equals(vo.getTechnicalManagerApproveResult())) { + abolishPreviousStandards(standard); + } + } + + private void abolishPreviousStandards(EamMaintenanceStandard current) { + List<EamMaintenanceStandard> previous = eamMaintenanceStandardMapper.selectList( + new QueryWrapper<EamMaintenanceStandard>() + .ne("id", current.getId()) + .eq("equipment_id", current.getEquipmentId()) + .eq("maintenance_category", current.getMaintenanceCategory()) + .eq("standard_status", MaintenanceStandardStatusEnum.START.name()) + ); + + if (!CollectionUtils.isEmpty(previous)) { + previous.forEach(standard -> { + standard.setStandardStatus(MaintenanceStandardStatusEnum.ABOLISH.name()); + }); + this.updateBatchById(previous); + } } -- Gitblit v1.9.3