From 551ad62ae01a166a20ebe981372293b78568d62c Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期四, 18 八月 2022 12:29:51 +0800
Subject: [PATCH] 优化查询bug

---
 service-store/src/main/java/com/java110/store/smo/impl/OrgStaffRelV1InnerServiceSMOImpl.java |  125 +++++++++++++++++++++++++++++++++++++----
 1 files changed, 113 insertions(+), 12 deletions(-)

diff --git a/service-store/src/main/java/com/java110/store/smo/impl/OrgStaffRelV1InnerServiceSMOImpl.java b/service-store/src/main/java/com/java110/store/smo/impl/OrgStaffRelV1InnerServiceSMOImpl.java
index 646c2d4..cbd7206 100644
--- a/service-store/src/main/java/com/java110/store/smo/impl/OrgStaffRelV1InnerServiceSMOImpl.java
+++ b/service-store/src/main/java/com/java110/store/smo/impl/OrgStaffRelV1InnerServiceSMOImpl.java
@@ -16,14 +16,18 @@
 package com.java110.store.smo.impl;
 
 
+import com.java110.core.base.smo.BaseServiceSMO;
+import com.java110.dto.PageDto;
+import com.java110.dto.org.OrgDto;
 import com.java110.dto.org.OrgStaffRelDto;
+import com.java110.intf.store.IOrgStaffRelV1InnerServiceSMO;
+import com.java110.intf.user.IOrgV1InnerServiceSMO;
 import com.java110.po.org.OrgStaffRelPo;
 import com.java110.store.dao.IOrgStaffRelV1ServiceDao;
-import com.java110.intf.store.IOrgStaffRelV1InnerServiceSMO;
+import com.java110.utils.util.Assert;
 import com.java110.utils.util.BeanConvertUtil;
-import com.java110.core.base.smo.BaseServiceSMO;
-import com.java110.dto.user.UserDto;
-import com.java110.dto.PageDto;
+import com.java110.utils.util.StringUtil;
+import com.java110.vo.api.staff.ApiStaffDataVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
@@ -45,6 +49,9 @@
     @Autowired
     private IOrgStaffRelV1ServiceDao orgStaffRelV1ServiceDaoImpl;
 
+    @Autowired
+    private IOrgV1InnerServiceSMO orgV1InnerServiceSMOImpl;
+
 
     @Override
     public int saveOrgStaffRel(@RequestBody OrgStaffRelPo orgStaffRelPo) {
@@ -52,17 +59,17 @@
         return saveFlag;
     }
 
-     @Override
-    public int updateOrgStaffRel(@RequestBody  OrgStaffRelPo orgStaffRelPo) {
+    @Override
+    public int updateOrgStaffRel(@RequestBody OrgStaffRelPo orgStaffRelPo) {
         int saveFlag = orgStaffRelV1ServiceDaoImpl.updateOrgStaffRelInfo(BeanConvertUtil.beanCovertMap(orgStaffRelPo));
         return saveFlag;
     }
 
-     @Override
-    public int deleteOrgStaffRel(@RequestBody  OrgStaffRelPo orgStaffRelPo) {
-       orgStaffRelPo.setStatusCd("1");
-       int saveFlag = orgStaffRelV1ServiceDaoImpl.updateOrgStaffRelInfo(BeanConvertUtil.beanCovertMap(orgStaffRelPo));
-       return saveFlag;
+    @Override
+    public int deleteOrgStaffRel(@RequestBody OrgStaffRelPo orgStaffRelPo) {
+        orgStaffRelPo.setStatusCd("1");
+        int saveFlag = orgStaffRelV1ServiceDaoImpl.updateOrgStaffRelInfo(BeanConvertUtil.beanCovertMap(orgStaffRelPo));
+        return saveFlag;
     }
 
     @Override
@@ -81,9 +88,103 @@
         return orgStaffRels;
     }
 
+    @Override
+    public List<OrgStaffRelDto> queryStaffOrgNames(@RequestBody OrgStaffRelDto orgStaffRelDto) {
+
+        //鏍¢獙鏄惁浼犱簡 鍒嗛〉淇℃伅
+
+        int page = orgStaffRelDto.getPage();
+
+        if (page != PageDto.DEFAULT_PAGE) {
+            orgStaffRelDto.setPage((page - 1) * orgStaffRelDto.getRow());
+        }
+
+        List<OrgStaffRelDto> orgStaffRels = BeanConvertUtil.covertBeanList(orgStaffRelV1ServiceDaoImpl.getOrgStaffRelInfo(BeanConvertUtil.beanCovertMap(orgStaffRelDto)), OrgStaffRelDto.class);
+
+        if (orgStaffRels == null || orgStaffRels.size() < 1) {
+            return orgStaffRels;
+        }
+        refreshOrgs(orgStaffRels);
+
+        return orgStaffRels;
+    }
+    private void refreshOrgs(List<OrgStaffRelDto> staffs) {
+        if (staffs == null || staffs.size() < 1) {
+            return;
+        }
+
+        List<String> staffIds = new ArrayList<>();
+        for (OrgStaffRelDto apiStaffDataVo : staffs) {
+            staffIds.add(apiStaffDataVo.getStaffId());
+        }
+
+        OrgDto orgDto = new OrgDto();
+        orgDto.setStoreId(staffs.get(0).getStoreId());
+        List<OrgDto> orgDtos = orgV1InnerServiceSMOImpl.queryOrgs(orgDto);
+        if (orgDtos == null || orgDtos.size() < 1) {
+            return;
+        }
+
+        for (OrgStaffRelDto apiStaffDataVo : staffs) {
+            if (StringUtil.isEmpty(apiStaffDataVo.getOrgId())) {
+                continue;
+            }
+            apiStaffDataVo.setParentOrgId(apiStaffDataVo.getOrgId());
+
+            findParents(apiStaffDataVo, orgDtos, null, 0);
+
+        }
+
+    }
+
+
+    private void findParents(OrgStaffRelDto apiStaffDataVo, List<OrgDto> orgDtos, OrgDto curOrgDto, int orgDeep) {
+        for (OrgDto orgDto : orgDtos) {
+            curOrgDto = orgDto;
+            if (!apiStaffDataVo.getParentOrgId().equals(orgDto.getOrgId())) { // 浠栬嚜宸辫烦杩�
+                continue;
+            }
+
+            //濡傛灉鍒颁竴绾� 灏辩粨鏉�
+            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())) {
+            return;
+        }
+
+        if (curOrgDto != null && curOrgDto.getParentOrgId().equals(curOrgDto.getOrgId())) {
+            return;
+        }
+
+        if (curOrgDto != null && "-1".equals(curOrgDto.getParentOrgId())) {
+            return;
+        }
+
+        orgDeep += 1;
+
+        if (orgDeep > 20) {
+            return;
+        }
+
+        findParents(apiStaffDataVo, orgDtos, curOrgDto, orgDeep);
+    }
+
 
     @Override
     public int queryOrgStaffRelsCount(@RequestBody OrgStaffRelDto orgStaffRelDto) {
-        return orgStaffRelV1ServiceDaoImpl.queryOrgStaffRelsCount(BeanConvertUtil.beanCovertMap(orgStaffRelDto));    }
+        return orgStaffRelV1ServiceDaoImpl.queryOrgStaffRelsCount(BeanConvertUtil.beanCovertMap(orgStaffRelDto));
+    }
 
 }

--
Gitblit v1.8.0