diff --git a/ServiceSite/src/main/java/com/seasky/flowportal/service/impl/JiaoWei_VerifyReimbursementServiceImpl.java b/ServiceSite/src/main/java/com/seasky/flowportal/service/impl/JiaoWei_VerifyReimbursementServiceImpl.java index 2aa9c4c7fac0b60858b75edcec7558b4c95443b5..5153921725e3ae2a511334dcb609a31a37c9068e 100644 --- a/ServiceSite/src/main/java/com/seasky/flowportal/service/impl/JiaoWei_VerifyReimbursementServiceImpl.java +++ b/ServiceSite/src/main/java/com/seasky/flowportal/service/impl/JiaoWei_VerifyReimbursementServiceImpl.java @@ -41,6 +41,7 @@ public class JiaoWei_VerifyReimbursementServiceImpl extends VerifyReimbursementS log.info(JSONObject.toJSONString(BeanUtil.beanToMap(expenseReimbursementCmd))); boolean isMustSelect_SubCommitteeLeader = false; //鏄惁蹇呭~ 鍒嗙濮旈瀵� + boolean isMustSelect_DeputyDirectorOfDepartment = false; //鏄惁蹇呭~ 閮ㄩ棬鍓富浠� ReimbursementTypeEnum reimbursementTypeEnum = ReimbursementTypeEnum.getValueByName(expenseReimbursementCmd.getReimbursementType()); if (ObjectUtils.isEmpty(reimbursementTypeEnum)) throw ExceptionUtil.getException(null, "鎶ラ攢绫诲瀷閿欒"); @@ -55,6 +56,7 @@ public class JiaoWei_VerifyReimbursementServiceImpl extends VerifyReimbursementS if (ObjectUtils.isEmpty(fundsTypeEnum)) break; boolean isCommunalExpense = FundsTypeEnum.CommunalExpense.equals(fundsTypeEnum); + isMustSelect_DeputyDirectorOfDepartment = isCommunalExpense; if (isCommunalExpense) { String eP0_ReimbursementContent = getProjectExtendPropertyValue(instanceId, expenseReimbursementCmd.getFundsProject(), 0); if (ObjectUtils.isEmpty(eP0_ReimbursementContent)) @@ -99,6 +101,10 @@ public class JiaoWei_VerifyReimbursementServiceImpl extends VerifyReimbursementS addSignUserList = expenseReimbursementCmd.getClaimsEndorser().stream().map(s -> UserInfoOut.builder().userNo(s.getClaimsEndorserNo()).userName(s.getClaimsEndorserName()).build()).collect(Collectors.toList()); checkAddSignerInfo(addSignUserList, AssigneeEnum.SubCommitteeLeader, expenseReimbursementCmd); } + if (isMustSelect_DeputyDirectorOfDepartment) { + addSignUserList = expenseReimbursementCmd.getLeaderEndorser().stream().map(s -> UserInfoOut.builder().userNo(s.getLeaderEndorserNo()).userName(s.getLeaderEndorserName()).build()).collect(Collectors.toList()); + checkAddSignerInfo(addSignUserList, AssigneeEnum.DeputyDirectorOfDepartment, expenseReimbursementCmd); + } return ""; } @@ -116,22 +122,32 @@ public class JiaoWei_VerifyReimbursementServiceImpl extends VerifyReimbursementS //钖祫鏍¢獙鍔犵浜哄繀濉� 澶勭悊閿欒鐮佷负4001 throw ExceptionUtil.getException(ResponseCode.SERVER_INTERNAL_TOKEN_SAVE_FAILURE, assigneeName + "缂哄皯宸ュ彿鎴栧鍚嶏紒"); } - - if (assigneeEnum == AssigneeEnum.SubCommitteeLeader) { - List<String> userNoList = addSignUserList.stream().map(UserInfoOut::getUserNo).collect(Collectors.toList()); - for (UserInfoOut user : addSignUserList) { - UserInfoQuery query = UserInfoQuery.builder().userNo(user.getUserNo()).pageSize(100).build(); - query.setInstanceId(instanceId); - Pagination<UserInfoOut> userInfoPage = ExternalDataUtil.INSTANCE.getUserInfoPage(query); - boolean isContainUser = ObjectUtils.isNotEmpty(userInfoPage.getRecords()) && userInfoPage.getRecords().stream().anyMatch(s -> user.getUserNo().equals(s.getUserNo())); - if (isContainUser) - userNoList.remove(user.getUserNo()); + List<UserInfoOut> userList = null; + if (assigneeEnum == AssigneeEnum.DeputyDirectorOfDepartment) + userList = ExternalDataUtil.INSTANCE.getUserListInRole(instanceId, assigneeEnum.getName()); + List<String> userNoList = addSignUserList.stream().map(UserInfoOut::getUserNo).collect(Collectors.toList()); + for (UserInfoOut user : addSignUserList) { + boolean isContainUser = false; + switch (assigneeEnum) { + case SubCommitteeLeader: + UserInfoQuery query = UserInfoQuery.builder().userNo(user.getUserNo()).pageSize(100).build(); + query.setInstanceId(instanceId); + Pagination<UserInfoOut> userInfoPage = ExternalDataUtil.INSTANCE.getUserInfoPage(query); + isContainUser = ObjectUtils.isNotEmpty(userInfoPage.getRecords()) && userInfoPage.getRecords().stream().anyMatch(s -> user.getUserNo().equals(s.getUserNo())); + if (isContainUser) + userNoList.remove(user.getUserNo()); + break; + case DeputyDirectorOfDepartment: + isContainUser = ObjectUtils.isNotEmpty(userList) && userList.stream().anyMatch(s -> user.getUserNo().equals(s.getUserNo())); + if (isContainUser) + userNoList.remove(user.getUserNo()); + break; } - if (ObjectUtils.isNotEmpty(userNoList)) - //钖祫鏍¢獙鍔犵浜哄繀濉� 澶勭悊閿欒鐮佷负4001 - //return PortalResponse.ok(PortalResponseCode.INCOMPLETE_INFO, "闇€瑕佷竴涓�" + assigneeName + "瀹℃壒锛岃閲嶆柊閫夋嫨鍚庢彁浜わ紒"); - throw ExceptionUtil.getException(ResponseCode.SERVER_INTERNAL_TOKEN_DEL_FAILURE, "閫夋嫨鐨�" + assigneeName + "鑼冨洿涓嶆纭紝璇烽噸鏂伴€夋嫨鍚庢彁浜わ紒"); } + if (ObjectUtils.isNotEmpty(userNoList)) + //钖祫鏍¢獙鍔犵浜哄繀濉� 澶勭悊閿欒鐮佷负4001 + //return PortalResponse.ok(PortalResponseCode.INCOMPLETE_INFO, "闇€瑕佷竴涓�" + assigneeName + "瀹℃壒锛岃閲嶆柊閫夋嫨鍚庢彁浜わ紒"); + throw ExceptionUtil.getException(ResponseCode.SERVER_INTERNAL_TOKEN_DEL_FAILURE, "閫夋嫨鐨�" + assigneeName + "鑼冨洿涓嶆纭紝璇烽噸鏂伴€夋嫨鍚庢彁浜わ紒"); } @@ -242,12 +258,14 @@ public class JiaoWei_VerifyReimbursementServiceImpl extends VerifyReimbursementS } return Pagination.fromPage(page); } - /**缁忚垂绫诲瀷*/ + + /** + * 缁忚垂绫诲瀷 + */ public enum FundsTypeEnum { CommunalExpense("鍏敤缁忚垂"), RecurringItem("缁忓父鎬ч」鐩�"), - OrgDailyOperatingExpense("澶勫鏃ュ父涓氬姟璐�") - ; + OrgDailyOperatingExpense("澶勫鏃ュ父涓氬姟璐�"); /** @@ -259,8 +277,8 @@ public class JiaoWei_VerifyReimbursementServiceImpl extends VerifyReimbursementS this.name = name; } - public String getName(){ - return this.name; + public String getName() { + return this.name; } /** @@ -278,7 +296,9 @@ public class JiaoWei_VerifyReimbursementServiceImpl extends VerifyReimbursementS } } - /**鎶ラ攢鍐呭*/ + /** + * 鎶ラ攢鍐呭 + */ public enum ReimbursementContentEnum { OfficeExpense("鍔炲叕璐�"), OfficialVehicle("鍏姟鐢ㄨ溅"), @@ -287,8 +307,7 @@ public class JiaoWei_VerifyReimbursementServiceImpl extends VerifyReimbursementS ConferenceFee("浼氳璐�"), TrainingFee("鍩硅璐�"), WelfareExpense_ChildcareOverhead("绂忓埄璐�-鎵樺辜绠$悊璐�"), - OfficialReception("鍏姟鎺ュ緟") - ; + OfficialReception("鍏姟鎺ュ緟"); /** * 鏋氫妇灞炴€ц鏄� @@ -299,8 +318,8 @@ public class JiaoWei_VerifyReimbursementServiceImpl extends VerifyReimbursementS this.name = name; } - public String getName(){ - return this.name; + public String getName() { + return this.name; } /** @@ -318,10 +337,12 @@ public class JiaoWei_VerifyReimbursementServiceImpl extends VerifyReimbursementS } } - /**鑺傜偣*/ + /** + * 鑺傜偣 + */ public enum AssigneeEnum { - SubCommitteeLeader("鍒嗙濮旈瀵�", "鍒嗙濮旈瀵煎鏍�") - ; + SubCommitteeLeader("鍒嗙濮旈瀵�", "鍒嗙濮旈瀵煎鏍�"), + DeputyDirectorOfDepartment("閮ㄩ棬鍓富浠�", "閮ㄩ棬鍓富浠诲鏍�"); /** * 鏋氫妇灞炴€ц鏄� @@ -334,12 +355,14 @@ public class JiaoWei_VerifyReimbursementServiceImpl extends VerifyReimbursementS this.nodeName = nodeName; } - public String getName(){ - return this.name; + public String getName() { + return this.name; } - public String getNodeName(){ - return this.nodeName; + + public String getNodeName() { + return this.nodeName; } + public static AssigneeEnum getValueByNodeName(String nodeName) { for (AssigneeEnum anEnum : AssigneeEnum.values()) { if (anEnum.getNodeName().equals(nodeName)) { @@ -348,6 +371,7 @@ public class JiaoWei_VerifyReimbursementServiceImpl extends VerifyReimbursementS } return null; } + public static AssigneeEnum getValueByName(String name) { for (AssigneeEnum anEnum : AssigneeEnum.values()) { if (anEnum.getName().equals(name)) {