From a4e30eb43219ccc05b0826f49ecd5a3b639cf0c0 Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期四, 28 八月 2025 09:27:20 +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