From 6722e123b7a54dcc6c6937bc4324c67293f233db Mon Sep 17 00:00:00 2001 From: zhangherong <571457620@qq.com> Date: 星期五, 18 七月 2025 11:50:04 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamSecondMaintenanceOrderServiceImpl.java | 269 +++++++++++++++++++++++++++++------------------------ 1 files changed, 147 insertions(+), 122 deletions(-) diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamSecondMaintenanceOrderServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamSecondMaintenanceOrderServiceImpl.java index 1827589..89cdf03 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamSecondMaintenanceOrderServiceImpl.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamSecondMaintenanceOrderServiceImpl.java @@ -39,6 +39,7 @@ import org.jeecg.modules.system.service.IBaseFactoryUserService; import org.jeecg.modules.system.service.ISysUserService; import org.jeecg.modules.system.vo.UserSelector; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -82,6 +83,10 @@ private IEamReportRepairService eamReportRepairService; @Autowired private IEamEquipmentExtendService eamEquipmentExtendService; + @Autowired + private IEamBaseHFCodeService hfCodeService; + @Autowired + private IEamMaintenanceStandardDetailService eamMaintenanceStandardDetailService; @Override public IPage<EamSecondMaintenanceOrder> queryPageList(Page<EamSecondMaintenanceOrder> page, EamSecondMaintenanceQuery query) { @@ -109,6 +114,9 @@ } //鏌ヨ鏉′欢杩囨护 if (query != null) { + if (StringUtils.isNotBlank(query.getId())){ + queryWrapper.eq("wmo.id", query.getId()); + } if (StringUtils.isNotBlank(query.getEquipmentId())) { queryWrapper.eq("wmo.equipment_id", query.getEquipmentId()); } @@ -155,6 +163,12 @@ order.setStandardId(request.getStandardId()); order.setMaintenanceDate(request.getMaintenanceDate()); order.setOperator(request.getOperator()); + //鎶�鏈姸鎬侀壌瀹氳〃 + EamBaseHFCode eamBaseHFCode = hfCodeService.selectByCategory(HfTemplateCategoryEnum.SECOND_MAINTENANCE.name()); + if(eamBaseHFCode == null) { + throw new JeecgBootException("鏈厤缃妧鏈姸鎬侀壌瀹氳〃鐨凥F缂栫爜锛屾坊鍔犲け璐ワ紒"); + } + order.setHfCode(eamBaseHFCode.getHfCode()); order.setRemark(request.getRemark()); //鐘舵�佸垵濮嬪寲 order.setMaintenanceStatus(SecondMaintenanceStatusEnum.WAIT_MAINTENANCE.name()); @@ -163,43 +177,18 @@ order.setDelFlag(CommonConstant.DEL_FLAG_0); eamSecondMaintenanceOrderMapper.insert(order); //澶勭悊鏄庣粏鏁版嵁 - if (CollectionUtil.isNotEmpty(request.getTableDetailList())) { - request.getTableDetailList().forEach(tableDetail -> { - tableDetail.setId(null); - tableDetail.setOrderId(order.getId()); + List<EamMaintenanceStandardDetail> eamMaintenanceStandardDetailList= eamMaintenanceStandardDetailService.selectByStandardId(order.getStandardId()); + List<EamSecondMaintenanceOrderDetail> requestTableDetailList = new ArrayList<>(); + if (CollectionUtil.isNotEmpty(eamMaintenanceStandardDetailList)) { + eamMaintenanceStandardDetailList.forEach(item -> { + EamSecondMaintenanceOrderDetail detail = new EamSecondMaintenanceOrderDetail(); + BeanUtils.copyProperties(item, detail); + detail.setId(null); + detail.setOrderId(order.getId()); + requestTableDetailList.add(detail); }); - secondMaintenanceOrderDetailService.saveBatch(request.getTableDetailList()); + secondMaintenanceOrderDetailService.saveBatch(requestTableDetailList); } - //鍒ゆ柇鏄惁瀛樺湪淇濆吇浜� 濡傛灉瀛樺湪鍒欏惎鍔ㄦ祦绋� - if (StringUtils.isNotBlank(order.getOperator())) { - //鍚姩娴佺▼ - flowCommonService.initActBusiness("宸ュ崟鍙�: " + order.getOrderNum() + ";璁惧缂栧彿: " + equipment.getEquipmentCode() + ";瀹夎浣嶇疆" + equipment.getInstallationPosition(), - order.getId(), "IEamSecondMaintenanceOrderService", "second_maintenance_process", null); - Map<String, Object> variables = new HashMap<>(); - variables.put("dataId", order.getId()); - if (StrUtil.isEmpty(order.getRemark())) { - variables.put("organization", "鏂板浜屼繚宸ュ崟榛樿鍚姩娴佺▼"); - variables.put("comment", "鏂板浜屼繚宸ュ崟榛樿鍚姩娴佺▼"); - } else { - variables.put("organization", order.getRemark()); - variables.put("comment", order.getRemark()); - } - variables.put("proofreading", true); - List<String> usernames = new ArrayList<>(); - usernames.add(order.getOperator()); - variables.put("NextAssignee", usernames); - Result result = flowDefinitionService.startProcessInstanceByKey("second_maintenance_process", variables); - if (result != null) { - //鏇存柊鍛ㄤ繚鐘舵�� - order.setMaintenanceStatus(SecondMaintenanceStatusEnum.UNDER_MAINTENANCE.name()); - order.setActualStartTime(new Date()); - eamSecondMaintenanceOrderMapper.updateById(order); - //鏇存柊璁惧淇濆吇鐘舵�� - eamEquipmentExtendService.updateEquipmentMaintenanceStatus(order.getEquipmentId(), EquipmentMaintenanceStatus.UNDER_SECOND_MAINTENANCE.name()); - return result.isSuccess(); - } - } - return true; } @@ -218,33 +207,9 @@ throw new JeecgBootException("鍙湁寰呬繚鍏荤姸鎬佺殑鏁版嵁鎵嶅彲缂栬緫锛�"); } entity.setMaintenanceDate(request.getMaintenanceDate()); - entity.setOperator(request.getOperator()); entity.setRemark(request.getRemark()); eamSecondMaintenanceOrderMapper.updateById(entity); - //澶勭悊璇︽儏 - if (CollectionUtil.isNotEmpty(request.getTableDetailList())) { - List<EamSecondMaintenanceOrderDetail> addList = new ArrayList<>(); - List<EamSecondMaintenanceOrderDetail> updateList = new ArrayList<>(); - request.getTableDetailList().forEach(tableDetail -> { - tableDetail.setOrderId(entity.getId()); - if (tableDetail.getId() == null) { - addList.add(tableDetail); - } else { - updateList.add(tableDetail); - } - }); - if (CollectionUtil.isNotEmpty(addList)) { - secondMaintenanceOrderDetailService.saveBatch(addList); - } - if (CollectionUtil.isNotEmpty(updateList)) { - secondMaintenanceOrderDetailService.updateBatchById(updateList); - } - } - if (CollectionUtil.isNotEmpty(request.getRemoveDetailList())) { - List<String> ids = request.getRemoveDetailList().stream().map(EamSecondMaintenanceOrderDetail::getId).collect(Collectors.toList()); - secondMaintenanceOrderDetailService.removeBatchByIds(ids); - } //鍒ゆ柇鏄惁瀛樺湪淇濆吇浜� 濡傛灉瀛樺湪鍒欏惎鍔ㄦ祦绋� if (StringUtils.isNotBlank(entity.getOperator())) { //鍚姩娴佺▼ @@ -293,17 +258,28 @@ throw new JeecgBootException("璁惧涓嶅瓨鍦紝娣诲姞澶辫触锛�"); } LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - if(sysUser == null || !BusinessCodeConst.PCR0001.equals(sysUser.getPost())) { - throw new JeecgBootException("涓嶆槸鎿嶄綔宸ワ紝鏃犳硶棰嗗彇姝ゅ伐鍗曪紒"); + if(sysUser != null) { + if (!BusinessCodeConst.PCR0001.equals(sysUser.getPost()) && !BusinessCodeConst.PCR0002.equals(sysUser.getPost())){ + throw new JeecgBootException("涓嶆槸鎿嶄綔宸ワ紝鏃犳硶棰嗗彇姝ゅ伐鍗曪紒"); + } } - entity.setOperator(sysUser.getUsername()); + List<String> usernames = new ArrayList<>(); + if (sysUser != null) { + if (BusinessCodeConst.PCR0001.equals(sysUser.getPost())) { + entity.setOperator(sysUser.getUsername()); + usernames.add(entity.getOperator()); + } + if (BusinessCodeConst.PCR0002.equals(sysUser.getPost())) { + entity.setRepairman(sysUser.getUsername()); + usernames.add(entity.getRepairman()); + } + } entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.UNDER_MAINTENANCE.name()); entity.setActualStartTime(new Date()); eamSecondMaintenanceOrderMapper.updateById(entity); - //鍚姩娴佺▼ - flowCommonService.initActBusiness("宸ュ崟鍙�: " + entity.getOrderNum() + ";璁惧缂栧彿: " + equipment.getEquipmentCode() + ";瀹夎浣嶇疆" + equipment.getInstallationPosition(), - entity.getId(), "IEamSecondMaintenanceOrderService", "second_maintenance_process", null); + flowCommonService.initActBusiness("宸ュ崟鍙�: " + entity.getOrderNum() + ";璁惧缂栧彿: " + equipment.getEquipmentCode() + "杩涜璁惧浜岀骇淇濆吇", + entity.getId(), "IEamSecondMaintenanceOrderService", "SecondMaintenance_Process", null); Map<String, Object> variables = new HashMap<>(); variables.put("dataId", entity.getId()); if (StrUtil.isEmpty(entity.getRemark())) { @@ -314,10 +290,24 @@ variables.put("comment", entity.getRemark()); } variables.put("proofreading", true); - List<String> usernames = new ArrayList<>(); - usernames.add(entity.getOperator()); - variables.put("NextAssignee", usernames); - Result result = flowDefinitionService.startProcessInstanceByKey("second_maintenance_process", variables); + if (sysUser != null) { + if (BusinessCodeConst.PCR0001.equals(sysUser.getPost())) { + variables.put("operator_task", usernames); + List<UserSelector> userSelectorList = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0002); + if (!CollectionUtils.isEmpty(userSelectorList)) { + List<String> usernameList = userSelectorList.stream().map(UserSelector::getUsername).collect(Collectors.toList()); + variables.put("maintenance_task",usernameList); + } + }else if (BusinessCodeConst.PCR0002.equals(sysUser.getPost())) { + variables.put("maintenance_task", usernames); + List<UserSelector> userSelectorList = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0001); + if (!CollectionUtils.isEmpty(userSelectorList)) { + List<String> usernameList = userSelectorList.stream().map(UserSelector::getUsername).collect(Collectors.toList()); + variables.put("operator_task",usernameList); + } + } + } + Result result = flowDefinitionService.startProcessInstanceByKey("SecondMaintenance_Process", variables); if (result != null) { //鏇存柊璁惧淇濆吇鐘舵�� eamEquipmentExtendService.updateEquipmentMaintenanceStatus(entity.getEquipmentId(), EquipmentMaintenanceStatus.UNDER_SECOND_MAINTENANCE.name()); @@ -341,7 +331,7 @@ } request.setAssignee(user.getUsername()); // 鑾峰彇娴佺▼涓氬姟璁板綍 - FlowMyBusiness flowMyBusiness = flowMyBusinessService.getFlowMyBusiness(request.getInstanceId()); + FlowMyBusiness flowMyBusiness = flowMyBusinessService.getFlowMyBusiness(request.getInstanceId(), request.getTaskId()); if (flowMyBusiness == null) { throw new JeecgBootException("娴佺▼瀹炰緥涓嶅瓨鍦紝璇峰埛鏂板悗閲嶈瘯锛�"); } @@ -370,70 +360,105 @@ List<UserSelector> userSelectors; switch (status) { case UNDER_MAINTENANCE: + //淇濆吇涓� + boolean parallelCompletion = flowTaskService.checkParallelCompletion(flowMyBusiness.getTaskId()); //鎵ц瀹屾垚 - //璁惧绠$悊鍛樼‘璁� -// String equipmentManager = equipment.getEquipmentManager(); -// if(StringUtils.isBlank(equipmentManager)) { -// throw new JeecgBootException("璁惧鏈垎閰嶈澶囩鐞嗗憳锛屾棤娉曡繘鍏ヤ笅绾у鎵癸紒"); -// } -// userApprovalList = Collections.singletonList(equipmentManager); - values.put("dataId", entity.getId()); - values.put("organization", "浜屼繚鎵ц缁撴潫"); - values.put("comment", "浜屼繚鎵ц缁撴潫"); -// values.put("NextAssignee", userApprovalList); - request.setComment("浜屼繚鎵ц缁撴潫"); - //璁剧疆entity - entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.WAIT_CONFIRM.name()); - entity.setActualEndTime(new Date()); - //澶勭悊璇︽儏 - if (CollectionUtil.isNotEmpty(request.getTableDetailList())) { - secondMaintenanceOrderDetailService.updateBatchById(request.getTableDetailList()); - } - //鏇存柊璁惧淇濆吇鐘舵�� - eamEquipmentExtendService.updateEquipmentMaintenanceStatus(entity.getEquipmentId(), EquipmentMaintenanceStatus.SECOND_MAINTENANCE_WAIT_CONFIRM.name()); - break; - case WAIT_CONFIRM: - userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(),null, BusinessCodeConst.PCR0003); + userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0004); if (CollectionUtil.isEmpty(userSelectors)) { - throw new JeecgBootException("璁惧鏈垎閰嶇粰杞﹂棿鐝粍闀匡紝鏃犳硶杩涘叆涓嬬骇瀹℃壒锛�"); + throw new JeecgBootException("璁惧鏈瓨鍦ㄧ鐞嗗憳锛屾棤娉曡繘鍏ヤ笅绾у鎵癸紒"); + }else{ + userApprovalList = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList()); + if (parallelCompletion) { + values.put("NextAssignee", userApprovalList); + entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.WAIT_ADMIN_CONFIRM.name()); + entity.setActualEndTime(new Date()); + } } - //鐝粍闀跨‘璁� - userApprovalList = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList()); + if (BusinessCodeConst.PCR0001.equals(user.getPost())) { + entity.setOperator(user.getUsername()); + values.put("organization", "浜屼繚鎿嶄綔宸ユ墽琛岀粨鏉�"); + values.put("comment", "浜屼繚鎿嶄綔宸ユ墽琛岀粨鏉�"); + request.setComment("浜屼繚鎿嶄綔宸ユ墽琛岀粨鏉�"); + //澶勭悊瀵瑰簲璇︽儏 + if (CollectionUtils.isNotEmpty(request.getTableDetailList())){ + //鍒犻櫎鍘熸湁鏁版嵁 + List<EamSecondMaintenanceOrderDetail> addList = new ArrayList<>(); + //鍏堝垹闄ゅ師鏈� + LambdaQueryWrapper<EamSecondMaintenanceOrderDetail> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(EamSecondMaintenanceOrderDetail::getOrderId, entity.getId()); + queryWrapper.eq(EamSecondMaintenanceOrderDetail::getItemCategory,EamMaintenanceStandardDetailCategory.OPERATOR_MAINTENANCE.name()); + secondMaintenanceOrderDetailService.remove(queryWrapper); + request.getTableDetailList().forEach(tableDetail -> { + EamSecondMaintenanceOrderDetail eamMaintenanceStandardDetail=new EamSecondMaintenanceOrderDetail(); + BeanUtils.copyProperties(tableDetail, eamMaintenanceStandardDetail); + eamMaintenanceStandardDetail.setOrderId(entity.getId()); + addList.add(eamMaintenanceStandardDetail); + }); + secondMaintenanceOrderDetailService.saveBatch(addList); + } + }else if (BusinessCodeConst.PCR0002.equals(user.getPost())) { + entity.setRepairman(user.getUsername()); + values.put("organization", "浜屼繚缁翠慨宸ユ墽琛岀粨鏉�"); + values.put("comment", "浜屼繚缁翠慨宸ユ墽琛岀粨鏉�"); + request.setComment("浜屼繚缁翠慨宸ユ墽琛岀粨鏉�"); + //澶勭悊瀵瑰簲璇︽儏 + if (CollectionUtils.isNotEmpty(request.getTableDetailList())){ + //鍒犻櫎鍘熸湁鏁版嵁 + List<EamSecondMaintenanceOrderDetail> addList = new ArrayList<>(); + //鍏堝垹闄ゅ師鏈� + LambdaQueryWrapper<EamSecondMaintenanceOrderDetail> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(EamSecondMaintenanceOrderDetail::getOrderId, entity.getId()); + queryWrapper.eq(EamSecondMaintenanceOrderDetail::getItemCategory,EamMaintenanceStandardDetailCategory.REPAIRER_MAINTENANCE.name()); + secondMaintenanceOrderDetailService.remove(queryWrapper); + request.getTableDetailList().forEach(tableDetail -> { + EamSecondMaintenanceOrderDetail eamMaintenanceStandardDetail=new EamSecondMaintenanceOrderDetail(); + BeanUtils.copyProperties(tableDetail, eamMaintenanceStandardDetail); + eamMaintenanceStandardDetail.setOrderId(entity.getId()); + addList.add(eamMaintenanceStandardDetail); + }); + secondMaintenanceOrderDetailService.saveBatch(addList); + } + } values.put("dataId", entity.getId()); - values.put("organization", request.getConfirmComment()); - values.put("comment", request.getConfirmComment()); - values.put("NextAssignee", userApprovalList); - values.put("confirmation", request.getConfirmDealType()); - request.setComment(request.getConfirmComment()); - //璁剧疆entity - entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.WAIT_LEADER_CONFIRM.name()); - entity.setConfirmTime(new Date()); - if (CommonConstant.HAS_CANCLE.equals(request.getConfirmDealType())) { - //椹冲洖 - userApprovalList = new ArrayList<>(); - userApprovalList.add(entity.getOperator()); + break; + case WAIT_ADMIN_CONFIRM: + //绠$悊鍛樼‘璁� + userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0006); + if (CollectionUtil.isEmpty(userSelectors)) { + throw new JeecgBootException("璁惧鏈瓨鍦ㄦ鏌ヤ汉锛屾棤娉曡繘鍏ヤ笅绾у鎵癸紒"); + }else{ + userApprovalList= userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList()); values.put("NextAssignee", userApprovalList); - entity.setMaintenanceStatus(WeekMaintenanceStatusEnum.UNDER_MAINTENANCE.name()); - } - //澶勭悊鎶ヤ慨 - List<EamSecondMaintenanceOrderDetail> collect = request.getTableDetailList().stream().filter((detail) -> CommonConstant.DEFAULT_1.equals(detail.getReportFlag())).collect(Collectors.toList()); - if (CollectionUtil.isNotEmpty(collect)) { - eamReportRepairService.reportRepairFromSecondMaintenance(equipment.getId(), entity.getOperator(), collect); + values.put("dataId", entity.getId()); + values.put("organization",request.getDealDescription()); + values.put("comment", request.getDealDescription()); + values.put("manageUserResult",request.getManageUserResult()); + entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.WAIT_INSPECTOR_CONFIRM.name()); + entity.setManageUser(user.getUsername()); + entity.setProblemDescription(request.getProblemDescription()); + entity.setManageUserResult(request.getManageUserResult()); + entity.setDealDescription(request.getDealDescription()); + entity.setConfirmTime(new Date()); + request.setComment(request.getDealDescription()); } break; - case WAIT_LEADER_CONFIRM: + case WAIT_INSPECTOR_CONFIRM: + //妫�鏌ヤ汉纭 values.put("dataId", entity.getId()); - values.put("organization", request.getLeaderConfirmComment()); - values.put("comment", request.getLeaderConfirmComment()); - request.setComment(request.getLeaderConfirmComment()); - //璁剧疆entity + values.put("organization",request.getInspectConfirmComment()); + values.put("comment", request.getInspectConfirmComment()); + values.put("inspectorResult",request.getInspectorResult()); entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.COMPLETE.name()); - //鏇存柊璁惧淇濆吇鐘舵�� - eamEquipmentExtendService.updateEquipmentMaintenanceStatus(entity.getEquipmentId(), EquipmentMaintenanceStatus.NORMAL.name()); + entity.setInspector(user.getUsername()); + entity.setInspectorResult(request.getInspectorResult()); + entity.setInspectConfirmComment(request.getInspectConfirmComment()); + entity.setInspectConfirmTime(new Date()); + request.setComment(request.getDealDescription()); break; + default: + throw new JeecgBootException("瀹℃壒澶辫触"); } request.setValues(values); - // 瀹屾垚娴佺▼浠诲姟 Result result = flowTaskService.complete(request); if (!result.isSuccess()) { -- Gitblit v1.9.3