From 1b7f266af71b91254a22295f1bafc6a905e0b41f Mon Sep 17 00:00:00 2001 From: lyh <925863403@qq.com> Date: 星期六, 05 七月 2025 18:02:18 +0800 Subject: [PATCH] 保养规范修改流程处理 --- lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java | 195 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 186 insertions(+), 9 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 d69efd8..b83c998 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 @@ -12,6 +12,9 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.ss.usermodel.WorkbookFactory; import org.apache.shiro.SecurityUtils; import org.flowable.engine.TaskService; import org.flowable.task.api.Task; @@ -47,9 +50,12 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; /** @@ -133,6 +139,10 @@ .or() .like("e.equipment_code", eamMaintenanceStandard.getKeyword())); } + //id + if(StringUtils.isNotBlank(eamMaintenanceStandard.getId())) { + queryWrapper.eq("ems.id", eamMaintenanceStandard.getId()); + } } queryWrapper.orderByDesc("ems.create_time"); return eamMaintenanceStandardMapper.queryPageList(page, queryWrapper); @@ -145,7 +155,7 @@ BeanUtils.copyProperties(standardRequest, entity); entity.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_SUBMIT.name()); //鐗堟湰閫掑 - entity.setStandardVersion(CommonConstant.OPERATE_TYPE_1); + entity.setStandardVersion("v"+CommonConstant.OPERATE_TYPE_1); //璁惧澶勭悊 entity.setEquipmentId(standardRequest.getEquipmentId()); //鍒犻櫎鏍囪 @@ -209,9 +219,6 @@ if(entity == null){ throw new JeecgBootException("缂栬緫鐨勬暟鎹凡鍒犻櫎锛岃鍒锋柊閲嶈瘯锛�"); } - entity.setStandardStatus(MaintenanceStandardStatusEnum.ABOLISH.name()); - //鍘熸潵鐨勪綔搴� - eamMaintenanceStandardMapper.updateById(entity); //鏂板涓�涓増鏈� EamMaintenanceStandard newEntity = new EamMaintenanceStandard(); @@ -222,7 +229,16 @@ newEntity.setInitialDate(standardRequest.getInitialDate()); newEntity.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_SUBMIT.name()); //鐗堟湰閫掑 - newEntity.setStandardVersion(entity.getStandardVersion() + 1); + //鑾峰彇鏁板瓧 + Pattern pattern = Pattern.compile("(\\d+)(?:\\.\\d+)*$"); + Matcher matcher = pattern.matcher(entity.getStandardVersion()); + if (matcher.find()) { + try { + int mainVersion = Integer.parseInt(matcher.group(1)); + newEntity.setStandardVersion("v"+(mainVersion+1)); + } catch (NumberFormatException ignored) { + } + } //璁惧澶勭悊 newEntity.setEquipmentId(standardRequest.getEquipmentId()); //鍒犻櫎鏍囪 @@ -398,13 +414,27 @@ // 璁剧疆娴佺▼鍙橀噺 Map<String, Object> values = setProcessVariables(eamMaintenanceStandard, userId, eamMaintenanceStandardVo); eamMaintenanceStandardVo.setValues(values); - + eamMaintenanceStandardVo.setComment(values.get("comment").toString()); // 瀹屾垚娴佺▼浠诲姟 Result result = flowTaskService.complete(eamMaintenanceStandardVo); if (result.isSuccess()) { if (eamMaintenanceStandardVo.getRepairManagerApproveResult() != null) { if (eamMaintenanceStandardVo.getRepairManagerApproveResult().equals("1")){ + List<FlowMyBusiness> newbusinessList = flowMyBusinessService.list( + new QueryWrapper<FlowMyBusiness>() + .eq("process_instance_id", eamMaintenanceStandardVo.getInstanceId())); + FlowMyBusiness newflowMyBusiness = newbusinessList.get(0); eamMaintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_TECHNICAL_DIRECTOR.name()); + //鑾峰彇flow鐨勬祦绋嬪疄渚媔d,璁剧疆涓嬩竴姝ョ殑澶勭悊浜哄憳 + EamMaintenanceStandard maintenanceStandard=this.getById(eamMaintenanceStandardVo.getDataId()); + EamEquipment eamEquipment=eamEquipmentService.getById(maintenanceStandard.getEquipmentId()); + BaseFactory baseFactory=baseFactoryService.getOne(new QueryWrapper<BaseFactory>().eq("org_code", eamEquipment.getFactoryOrgCode())); + List<UserSelector> userSelectorList=sysUserService.selectOperatorFactoryList(eamEquipment.getEquipmentCode(),baseFactory.getId(), BusinessCodeConst.PCR0008); + if (!CollectionUtils.isEmpty(userSelectorList)) { + List<String> usernameList=userSelectorList.stream().map(UserSelector::getUsername).collect(Collectors.toList()); + newflowMyBusiness.setTodoUsers(JSON.toJSONString(usernameList)); + flowMyBusinessService.updateById(newflowMyBusiness); + } }else { eamMaintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_SUBMIT.name()); } @@ -416,6 +446,20 @@ if (eamMaintenanceStandardVo.getTechnicalManagerApproveResult() != null) { if (eamMaintenanceStandardVo.getTechnicalManagerApproveResult().equals("1")){ eamMaintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.START.name()); + //鍒ゆ柇鏄惁杩涜鍗囩増锛岄�氳繃璁惧缂栧彿銆佷繚鍏诲垎绫汇�佺姸鎬佽繘琛岀瓫閫� + EamMaintenanceStandard maintenanceStandard=this.getById(eamMaintenanceStandardVo.getDataId()); + QueryWrapper<EamMaintenanceStandard> queryWrapper=new QueryWrapper<>(); + 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); + } + } }else { eamMaintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_SUBMIT.name()); } @@ -428,7 +472,6 @@ } else { return result; } - return Result.OK("鎿嶄綔鎴愬姛"); } catch (Exception e) { return Result.error("鎿嶄綔澶辫触锛�" + e.getMessage()); @@ -439,13 +482,15 @@ Map<String, Object> values = new HashMap<>(); values.put("dataId", eamMaintenanceStandard.getId()); values.put("assignee", userId); - values.put("organization", eamMaintenanceStandardVo.getComment()); - values.put("comment", eamMaintenanceStandardVo.getComment()); if (eamMaintenanceStandardVo.getRepairManagerApproveResult() != null) { values.put("repairManagerApproveResult", eamMaintenanceStandardVo.getRepairManagerApproveResult()); + values.put("organization", eamMaintenanceStandardVo.getRepairManagerApproveComment()); + values.put("comment", eamMaintenanceStandardVo.getRepairManagerApproveComment()); } if (eamMaintenanceStandardVo.getTechnicalManagerApproveResult() != null) { values.put("technicalManagerApproveResult", eamMaintenanceStandardVo.getTechnicalManagerApproveResult()); + values.put("organization", eamMaintenanceStandardVo.getTechnicalManagerApproveComment()); + values.put("comment", eamMaintenanceStandardVo.getTechnicalManagerApproveComment()); } return values; } @@ -475,4 +520,136 @@ } /*娴佺▼涓氬姟浠g爜--------------------------缁撴潫*/ + + + /*瀵煎叆鏂囦欢--------------------------寮�濮�*/ + /** + * 瀵煎叆鐐规琛ㄦ暟鎹� + * @param file Excel鏂囦欢 + * @return 瀵煎叆缁撴灉 + */ +// public Result<?> importInspectionData(MultipartFile file) { +// int successCount = 0; +// +// try (Workbook workbook = WorkbookFactory.create(file.getInputStream())) { +// Sheet sheet = workbook.getSheetAt(0); +// // 1. 瑙f瀽琛ㄥご淇℃伅 +// Map<String, String> header = parseHeader(sheet, errors); +// +// } catch (Exception e) { +// e.printStackTrace(); +// } +// +// return new ImportResult(successCount, errors); +// } + + /** + * 瑙f瀽琛ㄥご淇℃伅 + */ +// private Map<String, String> parseHeader(Sheet sheet, List<ImportError> errors) { +// Map<String, String> header = new HashMap<>(); +// try { +// Row headerRow = sheet.getRow(0); +// // 绀轰緥锛氱涓�琛岋細璁惧鍚嶇О:鍓茬偓 鍨嬪彿:gta001 缁熶竴缂栧彿:xc001 +// String cellValue = getCellStringValue(headerRow.getCell(0)); +// +// // 浣跨敤姝e垯琛ㄨ揪寮忚В鏋愬叧閿俊鎭� +// Pattern pattern = Pattern.compile("璁惧鍚嶇О[:锛歖(\\S+)\\s+鍨嬪彿[:锛歖(\\S+)\\s+缁熶竴缂栧彿[:锛歖(\\S+)\\s+鏃ユ湡[:锛歖(\\S+)\\s+鍗曚綅[:锛歖(\\S+)"); +// Matcher matcher = pattern.matcher(cellValue); +// +// if (matcher.find()) { +// header.put("deviceName", matcher.group(1)); +// header.put("deviceModel", matcher.group(2)); +// header.put("deviceCode", matcher.group(3)); +// header.put("inspectionMonth", matcher.group(4)); +// header.put("unit", matcher.group(5)); +// } else { +// errors.add(new ImportError("琛ㄥご鏍煎紡閿欒", cellValue, 1)); +// } +// } catch (Exception e) { +// errors.add(new ImportError("瑙f瀽琛ㄥご寮傚父", e.getMessage(), 1)); +// } +// return header; +// } +// +// /** +// * 瑙f瀽姣忔棩鐐规椤圭洰 +// */ +// private List<InspectionItem> parseDailyItems(Sheet sheet, List<ImportError> errors) { +// List<InspectionItem> items = new ArrayList<>(); +// +// // 鐐规椤圭洰浠庣3琛屽紑濮嬶紙搴忓彿浠�1寮�濮嬶級 +// int startRow = 2; +// int rowNum = startRow; +// +// try { +// // 鎵惧埌姣忔棩鐐规琛ㄧ殑缁撴潫浣嶇疆锛堢淮鎶よ矗浠讳汉绛惧瓧锛� +// while (rowNum <= sheet.getLastRowNum()) { +// Row row = sheet.getRow(rowNum); +// if (row == null) { +// rowNum++; +// continue; +// } +// +// // 鍒ゆ柇鏄惁鍒拌揪缁撴潫浣嶇疆 +// String sequenceValue = getCellStringValue(row.getCell(0)); +// if ("9".equals(sequenceValue) || "缁存姢璐d换浜虹瀛�".contains(sequenceValue)) { +// break; +// } +// +// // 瑙f瀽椤圭洰琛� +// InspectionItem item = new InspectionItem(); +// item.setSequence(Integer.parseInt(sequenceValue)); +// item.setProjectName(getCellStringValue(row.getCell(1))); +// item.setRequirement(getCellStringValue(row.getCell(2))); +// +// items.add(item); +// rowNum++; +// } +// } catch (Exception e) { +// errors.add(new ImportError("瑙f瀽姣忔棩椤圭洰寮傚父", e.getMessage(), rowNum + 1)); +// } +// +// return items; +// } +// +// /** +// * 瑙f瀽鍛ㄤ繚鍏婚」鐩� +// */ +// private List<InspectionItem> parseWeeklyItems(Sheet sheet, List<ImportError> errors) { +// List<InspectionItem> items = new ArrayList<>(); +// +// try { +// // 瀹氫綅鍛ㄤ繚鍏绘爣棰樿锛堣鍙�11锛� +// int startRow = 10; +// +// // 浠庣12琛屽紑濮嬫槸鍛ㄤ繚鍏婚」鐩� +// for (int rowNum = startRow + 1; rowNum <= sheet.getLastRowNum(); rowNum++) { +// Row row = sheet.getRow(rowNum); +// if (row == null) continue; +// +// String sequenceValue = getCellStringValue(row.getCell(0)); +// +// // 閬囧埌缁撴潫鏍囧織鍒欏仠姝㈣В鏋� +// if ("鍛ㄤ繚鍏绘搷浣滆�呮墽琛�".contains(sequenceValue)) break; +// +// try { +// InspectionItem item = new InspectionItem(); +// item.setSequence(Integer.parseInt(sequenceValue)); +// item.setProjectName(getCellStringValue(row.getCell(1))); +// item.setStandard(getCellStringValue(row.getCell(2))); +// item.setRequirement(getCellStringValue(row.getCell(3))); // 鎵ц璁板綍 +// +// items.add(item); +// } catch (Exception e) { +// errors.add(new ImportError("瑙f瀽鍛ㄤ繚鍏婚」鐩紓甯�", e.getMessage(), rowNum + 1)); +// } +// } +// } catch (Exception e) { +// errors.add(new ImportError("瀹氫綅鍛ㄤ繚鍏婚」鐩紓甯�", e.getMessage(), 0)); +// } +// +// return items; +// } + /*瀵煎叆鏂囦欢--------------------------缁撴潫*/ } -- Gitblit v1.9.3