From 95c90e04b516325648e8a3d69e726555d1f7d05e Mon Sep 17 00:00:00 2001 From: Lius <Lius2225@163.com> Date: 星期三, 10 九月 2025 14:51:07 +0800 Subject: [PATCH] 设备借用、归还流程审批调整 --- lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentTransferServiceImpl.java | 258 ++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 193 insertions(+), 65 deletions(-) diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentTransferServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentTransferServiceImpl.java index de1b2b1..80d72f9 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentTransferServiceImpl.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentTransferServiceImpl.java @@ -88,8 +88,8 @@ //娌℃湁閫夋嫨璁惧锛屾牴鎹溅闂磋繃婊よ澶� queryWrapper.exists("select 1 from mdc_user_production t where t.user_id={0} and t.pro_id=e.org_id ", sysUser.getId()); } - //鎺у埗寰呮彁浜ょ姸鎬佺殑鏁版嵁鍙兘鏈汉鏌ョ湅 - queryWrapper.and(i -> i.ne("wmo.transfer_status", EquipmentTransferStatusEnum.WAIT_SUBMIT).or().eq("wmo.report_user", sysUser.getUsername())); +// 鎺у埗寰呮彁浜ょ姸鎬佺殑鏁版嵁鍙兘鏈汉鏌ョ湅 +// queryWrapper.and(i -> i.ne("wmo.transfer_status", EquipmentTransferStatusEnum.WAIT_SUBMIT).or().eq("wmo.report_user", sysUser.getUsername())); //鏌ヨ鏉′欢杩囨护 if (query != null) { if (StringUtils.isNotBlank(query.getEquipmentId())) { @@ -144,7 +144,6 @@ throw new JeecgBootException("褰撳墠璁惧灞炰簬姝よ溅闂达紝涓嶉渶瑕佸彉鍔紒"); } request.setOldDepartId(equipment.getOrgId()); - request.setReportUser(sysUser.getUsername()); return equipmentTransferMapper.insert(request) > 0; } @@ -156,47 +155,43 @@ throw new JeecgBootException("瑕佹彁浜ょ殑鏁版嵁涓嶅瓨鍦紝璇峰埛鏂伴噸璇曪紒"); } if (!EquipmentTransferStatusEnum.WAIT_SUBMIT.name().equals(entity.getTransferStatus())) { - throw new JeecgBootException("褰撳墠鏁版嵁鐘舵�佷笉鍏佽缂栬緫锛�"); + throw new JeecgBootException("璇ュ伐鍗曞凡杩涜杩囨彁浜わ紒"); } //妫�鏌ヨ澶� EamEquipment equipment = eamEquipmentService.getById(entity.getEquipmentId()); if (equipment == null) { - throw new JeecgBootException("璁惧涓嶅瓨鍦紒"); + throw new JeecgBootException("璁惧涓嶅瓨鍦紝鎻愪氦澶辫触锛�"); } + // 鍒嗛厤缁欎娇鐢ㄥ崟浣嶉瀵� + List<UserSelector> userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getOrgId(), BusinessCodeConst.PCR0008); + if (CollectionUtil.isEmpty(userSelectors)) { + throw new JeecgBootException("璁惧鏈垎閰嶇粰鍗曚綅棰嗗锛屾棤娉曡繘鍏ヤ笅绾у鎵癸紒"); + } + List<String> usernames = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList()); LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - if (sysUser == null) { - throw new JeecgBootException("褰撳墠鐢ㄦ埛鏃犳硶缂栬緫杞璁板綍锛�"); + if (sysUser == null || !BusinessCodeConst.PCR0004.equals(sysUser.getPost())) { + throw new JeecgBootException("涓嶆槸璁惧绠$悊鍛橈紝鏃犳硶鎻愪氦姝ゅ伐鍗曪紒"); } - UpdateWrapper<EamEquipmentTransfer> updateWrapper = new UpdateWrapper<>(); - updateWrapper.set("transfer_status", EquipmentSealUpStatusEnum.WAIT_SUBMIT.name()); - updateWrapper.eq("id", id); - updateWrapper.eq("report_user", sysUser.getUsername()); - boolean success = super.update(updateWrapper); - if (success) { - equipment.setAssetStatus(AssetStatusEnum.DEALT.name()); // 璁惧杞 - eamEquipmentService.updateById(equipment); - } + entity.setTransferTime(new Date()); + entity.setReportUser(sysUser.getUsername()); + entity.setTransferStatus(EquipmentTransferStatusEnum.WAIT_USE_LEADER_CHECK.name()); + //淇濆瓨宸ュ崟 + equipmentTransferMapper.updateById(entity); + //鍚姩瀹℃壒娴佺▼ - flowCommonService.initActBusiness("宸ュ崟鍙�:" + entity.getCode() + ";璁惧缂栧彿: " + equipment.getEquipmentCode() + ";杩涜璁惧杞", + flowCommonService.initActBusiness("宸ュ崟鍙�:" + entity.getCode() + ";璁惧缂栧彿: " + equipment.getEquipmentCode() + ";杩涜璁惧璋冩嫧", entity.getId(), "IEamEquipmentTransferService", "equipment_transfer", null); Map<String, Object> variables = new HashMap<>(); variables.put("dataId", entity.getId()); variables.put("organization", entity.getTransferReason()); variables.put("comment", entity.getTransferReason()); variables.put("proofreading", true); - // 鍒嗛厤缁欒澶囩鐞嗗憳 - List<UserSelector> userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getOrgId(), BusinessCodeConst.PCR0004); - if (CollectionUtil.isEmpty(userSelectors)) { - throw new JeecgBootException("璁惧鏈垎閰嶇粰璁惧绠$悊鍛橈紝鏃犳硶杩涘叆涓嬬骇瀹℃壒锛�"); - } - List<String> usernames = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList()); + variables.put("NextAssignee", usernames); Result result = flowDefinitionService.startProcessInstanceByKey("equipment_transfer", variables); if (result != null) { - entity.setTransferTime(new Date()); - entity.setTransferStatus(EquipmentTransferStatusEnum.WAIT_CHECK.name()); - //淇濆瓨宸ュ崟 - equipmentTransferMapper.updateById(entity); + equipment.setAssetStatus(AssetStatusEnum.DEALT.name()); // 璁惧璋冩嫧 + eamEquipmentService.updateById(equipment); return result.isSuccess(); } return true; @@ -215,7 +210,6 @@ if (user == null || StrUtil.isBlank(user.getId())) { throw new JeecgBootException("鏈幏鍙栧埌鐧诲綍鐢ㄦ埛锛岃閲嶆柊鐧诲綍鍚庡啀璇曪紒"); } - request.setApprovalUser(user.getUsername()); // 鑾峰彇娴佺▼涓氬姟璁板綍 FlowMyBusiness flowMyBusiness = flowMyBusinessService.getFlowMyBusiness(request.getInstanceId()); if (flowMyBusiness == null) { @@ -236,51 +230,182 @@ throw new JeecgBootException("璁惧涓嶅瓨鍦紝璇锋鏌ワ紒"); } - EquipmentTransferStatusEnum status = EquipmentTransferStatusEnum.getInstance(entity.getTransferStatus()); - if (status == null) { - return null; - } - //娴佺▼鍙橀噺 - Map<String, Object> values = new HashMap<>(); - // 瀹℃壒 - if (status == EquipmentTransferStatusEnum.WAIT_CHECK) {//鎵ц瀹屾垚 - values.put("dataId", entity.getId()); - values.put("organization", request.getApprovalComment()); - values.put("comment", request.getApprovalComment()); - values.put("approvalDealType", request.getApprovalDealType()); - request.setComment(request.getApprovalComment()); - entity.setApprovalUser(user.getUsername());// 瀹℃牳浜� - entity.setApprovalComment(request.getApprovalComment());// 瀹℃牳鎰忚 - entity.setApprovalTime(new Date());// 瀹℃牳鏃堕棿 - entity.setApprovalDealType(request.getApprovalDealType()); // 瀹℃壒绫诲瀷 - // 楠岃瘉閫氳繃杩樻槸椹冲洖 - if (request.getApprovalDealType().equals("1")) { - //璁剧疆entity - entity.setTransferStatus(EquipmentTransferStatusEnum.COMPLETE.name()); - List<String> userApprovalList = new ArrayList<>(Collections.singletonList(entity.getReportUser())); - values.put("NextAssignee", userApprovalList); - // 淇敼璁惧鐘舵�� - equipment.setAssetStatus(AssetStatusEnum.NORMAL.name()); - } else { - //璁剧疆entity - entity.setTransferStatus(EquipmentTransferStatusEnum.WAIT_SUBMIT.name()); - // 淇敼璁惧鐘舵�� - } - entity.setApprovalUser(user.getUsername()); - entity.setApprovalComment(request.getApprovalComment()); - entity.setApprovalTime(new Date()); - eamEquipmentService.updateById(equipment); - } - request.setValues(values); + //璁剧疆娴佺▼鍙橀噺 + setupProcessVariables(request, entity, user, equipment); // 瀹屾垚娴佺▼浠诲姟 Result result = flowTaskService.complete(request); if (!result.isSuccess()) { throw new JeecgBootException("瀹℃壒澶辫触锛岃鍒锋柊鏌ョ湅锛�"); } + + // 鏍规嵁浠诲姟瀹屾垚缁撴灉鏇存柊宸ュ崟鐘舵�� + updateOrderStatus(result, request, entity, user, equipment); + //淇濆瓨宸ュ崟 equipmentTransferMapper.updateById(entity); return entity; + } + + /** + * 璁剧疆宸ュ崟淇℃伅 + * + * @param result + * @param request + * @param entity + * @param user + */ + private void updateOrderStatus(Result result, EamEquipmentTransferRequest request, EamEquipmentTransfer entity, LoginUser user, EamEquipment equipment) { + if (result.isSuccess()) { + EquipmentTransferStatusEnum status = EquipmentTransferStatusEnum.getInstance(entity.getTransferStatus()); + switch (status) { + case WAIT_USE_LEADER_CHECK: + // 浣跨敤鍗曚綅棰嗗瀹℃壒缁撴潫 + entity.setUseLeader(user.getUsername()); + entity.setUseLeaderApprovalComment(request.getUseLeaderApprovalComment()); + entity.setUseLeaderApprovalTime(new Date()); + entity.setUseLeaderApprovalDealType(request.getUseLeaderApprovalDealType()); + if (CommonConstant.APPROVED.equals(request.getUseLeaderApprovalDealType())) { + entity.setTransferStatus(EquipmentTransferStatusEnum.WAIT_TRANSFER_LEADER_CHECK.name()); + } else { + entity.setTransferStatus(EquipmentTransferStatusEnum.REJECT.name()); + equipment.setAssetStatus(AssetStatusEnum.NORMAL.name()); // 璁惧璋冩嫧 + eamEquipmentService.updateById(equipment); + } + break; + case WAIT_TRANSFER_LEADER_CHECK: + // 璋冨叆鍗曚綅棰嗗瀹℃壒缁撴潫 + entity.setTransferLeader(user.getUsername()); + entity.setTransferLeaderApprovalComment(request.getTransferLeaderApprovalComment()); + entity.setTransferLeaderApprovalTime(new Date()); + entity.setTransferLeaderApprovalDealType(request.getTransferLeaderApprovalDealType()); + if (CommonConstant.APPROVED.equals(request.getTransferLeaderApprovalDealType())) { + entity.setTransferStatus(EquipmentTransferStatusEnum.WAIT_EXTERNAL_CONFIRM.name()); + } else { + entity.setTransferStatus(EquipmentTransferStatusEnum.REJECT.name()); + equipment.setAssetStatus(AssetStatusEnum.NORMAL.name()); // 璁惧璋冩嫧 + eamEquipmentService.updateById(equipment); + } + break; + case WAIT_EXTERNAL_CONFIRM: + // 鏈哄姩鍔炵‘璁ょ粨鏉� + entity.setExternalConfirm(user.getUsername()); + entity.setExternalConfirmTime(new Date()); + entity.setCompanyLeaderCheck(request.getCompanyLeaderCheck()); + if (CommonConstant.YN_1.equals(request.getCompanyLeaderCheck())) { + entity.setTransferStatus(EquipmentTransferStatusEnum.WAIT_COMPANY_LEADER_CHECK.name()); + } else { + entity.setTransferStatus(EquipmentTransferStatusEnum.COMPLETE.name()); + equipment.setOrgId(entity.getNewDepartId()); + equipment.setAssetStatus(AssetStatusEnum.NORMAL.name()); // 璁惧璋冩嫧 + eamEquipmentService.updateById(equipment); + } + break; + case WAIT_COMPANY_LEADER_CHECK: + // 鍏徃棰嗗瀹℃壒缁撴潫 + entity.setCompanyLeader(user.getUsername()); + entity.setCompanyLeaderApprovalTime(new Date()); + entity.setCompanyLeaderApprovalComment(request.getCompanyLeaderApprovalComment()); + entity.setCompanyLeaderApprovalDealType(request.getCompanyLeaderApprovalDealType()); + if (CommonConstant.APPROVED.equals(request.getCompanyLeaderApprovalDealType())) { + entity.setTransferStatus(EquipmentTransferStatusEnum.COMPLETE.name()); + equipment.setOrgId(entity.getNewDepartId()); + } else { + entity.setTransferStatus(EquipmentTransferStatusEnum.REJECT.name()); + } + equipment.setAssetStatus(AssetStatusEnum.NORMAL.name()); // 璁惧璋冩嫧 + eamEquipmentService.updateById(equipment); + break; + } + } + } + + /** + * 璁剧疆娴佺▼鍙橀噺 + * + * @param request + * @param entity + * @param user + * @param equipment + */ + private void setupProcessVariables(EamEquipmentTransferRequest request, EamEquipmentTransfer entity, LoginUser user, EamEquipment equipment) { + Map<String, Object> values = new HashMap<>(); + List<UserSelector> userSelectors; + List<String> userApprovalList; + EquipmentTransferStatusEnum status = EquipmentTransferStatusEnum.getInstance(entity.getTransferStatus()); + switch (status) { + case WAIT_USE_LEADER_CHECK: + // 浣跨敤鍗曚綅棰嗗瀹℃壒缁撴潫 + values.put("dataId", entity.getId()); + values.put("organization", request.getUseLeaderApprovalComment()); + values.put("comment", request.getUseLeaderApprovalComment()); + if (CommonConstant.APPROVED.equals(request.getUseLeaderApprovalDealType())) { + // 閫氳繃 + values.put("approvalDealType", request.getUseLeaderApprovalDealType()); + // 鑾峰彇涓嬩竴姝ュ鎵逛汉 + userSelectors = sysUserService.selectOperatorList(entity.getNewDepartId(), BusinessCodeConst.PCR0008); + if (CollectionUtil.isEmpty(userSelectors)) { + throw new JeecgBootException("鏈垎閰嶈皟鍏ュ崟浣嶉瀵硷紝鏃犳硶杩涘叆涓嬬骇瀹℃壒锛�"); + } + userApprovalList = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList()); + values.put("NextAssignee", userApprovalList); + } else { + // 椹冲洖 + values.put("approvalDealType", request.getUseLeaderApprovalDealType()); + } + request.setComment("浣跨敤鍗曚綅棰嗗瀹℃壒缁撴潫"); + break; + case WAIT_TRANSFER_LEADER_CHECK: + // 璋冨叆鍗曚綅棰嗗瀹℃壒缁撴潫 + values.put("dataId", entity.getId()); + values.put("organization", request.getTransferLeaderApprovalComment()); + values.put("comment", request.getTransferLeaderApprovalComment()); + if (CommonConstant.APPROVED.equals(request.getTransferLeaderApprovalDealType())) { + // 閫氳繃 + values.put("approvalDealType", request.getTransferLeaderApprovalDealType()); + // 鑾峰彇涓嬩竴姝ュ鎵逛汉 + userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getOrgId(), BusinessCodeConst.PCR0006); + if (CollectionUtil.isEmpty(userSelectors)) { + throw new JeecgBootException("璁惧鏈垎閰嶇粰鏈哄姩鍔烇紝鏃犳硶杩涘叆涓嬬骇瀹℃壒锛�"); + } + userApprovalList = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList()); + values.put("NextAssignee", userApprovalList); + } else { + // 椹冲洖 + values.put("approvalDealType", request.getTransferLeaderApprovalDealType()); + } + request.setComment("璋冨叆鍗曚綅棰嗗瀹℃壒缁撴潫"); + break; + case WAIT_EXTERNAL_CONFIRM: + // 鏈哄姩鍔炵‘璁ょ粨鏉� + values.put("dataId", entity.getId()); + values.put("organization", "鏈哄姩鍔炵‘璁ょ粨鏉�"); + values.put("comment", "鏈哄姩鍔炵‘璁ょ粨鏉�"); + if (CommonConstant.YN_1.equals(request.getCompanyLeaderCheck())) { + // 闇�瑕� + values.put("confirmation", request.getCompanyLeaderCheck()); + // 娴佺▼杞埌鍏徃棰嗗瀹℃壒 + // 鑾峰彇涓嬩竴姝ュ鎵逛汉 + userSelectors = sysUserService.selectOperatorList(BusinessCodeConst.PCR0009); + 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.getCompanyLeaderCheck()); + } + request.setComment("鏈哄姩鍔炵‘璁ょ粨鏉�"); + break; + case WAIT_COMPANY_LEADER_CHECK: + // 鍏徃棰嗗瀹℃壒缁撴潫 + values.put("dataId", entity.getId()); + values.put("organization", request.getCompanyLeaderApprovalComment()); + values.put("comment", request.getCompanyLeaderApprovalComment()); + request.setComment("鍏徃棰嗗瀹℃壒缁撴潫"); + break; + } + request.setValues(values); } @Override @@ -332,7 +457,10 @@ @Override public List<String> flowCandidateUsernamesOfTask(String taskNameId, Map<String, Object> values) { - return null; + //涓氬姟鏄惁骞查娴佺▼锛屼笟鍔″共棰勶紝娴佺▼骞查锛屾寚瀹氫汉鍛樿繘琛屽鐞� + //鑾峰彇涓嬩竴姝ュ鐞嗕汉 + Object object = values.get("NextAssignee"); + return (List<String>) object; } /** -- Gitblit v1.9.3