From 0066a5e8024efb33df33d860b138f9021d8c50de Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期三, 31 八月 2022 09:07:38 +0800
Subject: [PATCH] 优化代码

---
 service-user/src/main/java/com/java110/user/cmd/user/QueryStaffInfosCmd.java |   83 +++++++++++++++++++++++++++--------------
 1 files changed, 55 insertions(+), 28 deletions(-)

diff --git a/service-user/src/main/java/com/java110/user/cmd/user/QueryStaffInfosCmd.java b/service-user/src/main/java/com/java110/user/cmd/user/QueryStaffInfosCmd.java
index 1f242d5..b3cf0a5 100644
--- a/service-user/src/main/java/com/java110/user/cmd/user/QueryStaffInfosCmd.java
+++ b/service-user/src/main/java/com/java110/user/cmd/user/QueryStaffInfosCmd.java
@@ -40,13 +40,13 @@
 
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
-        Assert.hasKeyAndValue(reqJson,"page","璇锋眰鎶ユ枃涓湭鍖呭惈page鑺傜偣");
-        Assert.hasKeyAndValue(reqJson,"row","璇锋眰鎶ユ枃涓湭鍖呭惈rows鑺傜偣");
+        Assert.hasKeyAndValue(reqJson, "page", "璇锋眰鎶ユ枃涓湭鍖呭惈page鑺傜偣");
+        Assert.hasKeyAndValue(reqJson, "row", "璇锋眰鎶ユ枃涓湭鍖呭惈rows鑺傜偣");
         if (!reqJson.containsKey("storeId")) {
             String storeId = context.getReqHeaders().get("store-id");
             reqJson.put("storeId", storeId);
         }
-        Assert.hasKeyAndValue(reqJson,"storeId","璇锋眰鎶ユ枃涓湭鍖呭惈storeId鑺傜偣");
+        Assert.hasKeyAndValue(reqJson, "storeId", "璇锋眰鎶ユ枃涓湭鍖呭惈storeId鑺傜偣");
     }
 
     @Override
@@ -60,7 +60,7 @@
         if (count > 0) {
             staffs = BeanConvertUtil.covertBeanList(userInnerServiceSMOImpl.getStaffs(userDto), ApiStaffDataVo.class);
             refreshInitials(staffs);
-            refreshOrgs(staffs,reqJson.getString("storeId"));
+            refreshOrgs(staffs, reqJson.getString("storeId"));
         } else {
             staffs = new ArrayList<>();
         }
@@ -76,13 +76,13 @@
         context.setResponseEntity(responseEntity);
     }
 
-    private void refreshOrgs(List<ApiStaffDataVo> staffs,String storeId) {
-        if(staffs == null ||  staffs.size()<1){
-            return ;
+    private void refreshOrgs(List<ApiStaffDataVo> staffs, String storeId) {
+        if (staffs == null || staffs.size() < 1) {
+            return;
         }
 
-        List<String>  staffIds  = new ArrayList<>();
-        for(ApiStaffDataVo apiStaffDataVo : staffs){
+        List<String> staffIds = new ArrayList<>();
+        for (ApiStaffDataVo apiStaffDataVo : staffs) {
             staffIds.add(apiStaffDataVo.getUserId());
         }
 
@@ -101,33 +101,53 @@
             return;
         }
 
-
-        for(ApiStaffDataVo apiStaffDataVo : staffs){
-            for(OrgStaffRelDto tmpOrgStaffRelDto : orgStaffRels){
-                if(!apiStaffDataVo.getUserId().equals(tmpOrgStaffRelDto.getStaffId())){
+        for (ApiStaffDataVo apiStaffDataVo : staffs) {
+            for (OrgStaffRelDto tmpOrgStaffRelDto : orgStaffRels) {
+                if (!apiStaffDataVo.getUserId().equals(tmpOrgStaffRelDto.getStaffId())) {
                     continue;
                 }
-                tmpOrgStaffRelDto.setParentOrgId(tmpOrgStaffRelDto.getOrgId());
-                findParents(tmpOrgStaffRelDto, orgDtos, null);
-                apiStaffDataVo.setOrgName(tmpOrgStaffRelDto.getOrgName());
+                OrgDto org = new OrgDto();
+                org.setOrgId(tmpOrgStaffRelDto.getOrgId());
+                List<OrgDto> orgs = orgV1InnerServiceSMOImpl.queryOrgs(org);
+                Assert.listOnlyOne(orgs, "鏌ヨ缁勭粐琛ㄩ敊璇紒");
+                apiStaffDataVo.setOrgId(tmpOrgStaffRelDto.getOrgId());
+                apiStaffDataVo.setParentTwoOrgId(orgs.get(0).getParentOrgId());
             }
+        }
+
+        for (ApiStaffDataVo apiStaffDataVo : staffs) {
+            if (StringUtil.isEmpty(apiStaffDataVo.getOrgId())) {
+                continue;
+            }
+            apiStaffDataVo.setParentOrgId(apiStaffDataVo.getOrgId());
+
+            findParents(apiStaffDataVo, orgDtos, null, 0);
+
         }
 
     }
 
 
-    private void findParents(OrgStaffRelDto orgStaffRelDto, List<OrgDto> orgDtos, OrgDto curOrgDto) {
+    private void findParents(ApiStaffDataVo apiStaffDataVo, List<OrgDto> orgDtos, OrgDto curOrgDto, int orgDeep) {
         for (OrgDto orgDto : orgDtos) {
-            if (!orgStaffRelDto.getParentOrgId().equals(orgDto.getOrgId())) { // 浠栬嚜宸辫烦杩�
-                continue;
-            }
-            orgStaffRelDto.setParentOrgId(orgDto.getParentOrgId());
             curOrgDto = orgDto;
-            if (StringUtil.isEmpty(orgStaffRelDto.getOrgName())) {
-                orgStaffRelDto.setOrgName(orgDto.getOrgName() );
+            if (!apiStaffDataVo.getParentOrgId().equals(orgDto.getOrgId())) { // 浠栬嚜宸辫烦杩�
                 continue;
             }
-            orgStaffRelDto.setOrgName(orgDto.getOrgName() + " / " + orgStaffRelDto.getOrgName());
+
+            //濡傛灉鍒颁竴绾� 灏辩粨鏉�
+            if (OrgDto.ORG_LEVEL_STORE.equals(apiStaffDataVo.getOrgLevel())) {
+                continue;
+            }
+
+            apiStaffDataVo.setParentOrgId(orgDto.getParentOrgId());
+
+            if (StringUtil.isEmpty(apiStaffDataVo.getOrgName())) {
+                apiStaffDataVo.setOrgName(orgDto.getOrgName());
+                continue;
+            }
+            apiStaffDataVo.setOrgName(orgDto.getOrgName() + " / " + apiStaffDataVo.getOrgName());
+            apiStaffDataVo.setOrgLevel(orgDto.getOrgLevel());
         }
 
         if (curOrgDto != null && OrgDto.ORG_LEVEL_STORE.equals(curOrgDto.getOrgLevel())) {
@@ -142,20 +162,27 @@
             return;
         }
 
-        findParents(orgStaffRelDto, orgDtos, curOrgDto);
+        orgDeep += 1;
+
+        if (orgDeep > 20) {
+            return;
+        }
+
+        findParents(apiStaffDataVo, orgDtos, curOrgDto, orgDeep);
     }
 
     /**
      * 鍒峰叆棣栧瓧姣�
+     *
      * @param staffs
      */
     private void refreshInitials(List<ApiStaffDataVo> staffs) {
 
-        for(ApiStaffDataVo staffDataVo : staffs){
-            if(StringUtil.isEmpty(staffDataVo.getName())){
+        for (ApiStaffDataVo staffDataVo : staffs) {
+            if (StringUtil.isEmpty(staffDataVo.getName())) {
                 continue;
             }
-            staffDataVo.setInitials(PinYinUtil.getFirstSpell(staffDataVo.getName()).toUpperCase().charAt(0)+"");
+            staffDataVo.setInitials(PinYinUtil.getFirstSpell(staffDataVo.getName()).toUpperCase().charAt(0) + "");
         }
     }
 }

--
Gitblit v1.8.0