Эх сурвалжийг харах

教育培训/预案演练统计报表机构树列表处理

jingyuanchao 2 жил өмнө
parent
commit
06ee44f883

+ 3 - 1
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteOrgService.java

@@ -12,7 +12,6 @@ import com.xunmei.system.api.domain.SysOrgExtend;
 import com.xunmei.system.api.factory.RemoteOrgFallbackFactory;
 import com.xunmei.system.api.vo.SysOrgVO;
 import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.cloud.openfeign.SpringQueryMap;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
@@ -43,6 +42,9 @@ public interface RemoteOrgService {
     @GetMapping("/org/selectSysOrgByParentId")
     List<SysOrg> selectSysOrgByParentId(@RequestParam("id") Long id, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 
+    @GetMapping("/org/selectOrgTreeListByCurOrgId")
+    List<SysOrg> selectOrgTreeListByCurOrgId(@RequestParam("id") Long id, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
 
     @GetMapping("/dept/get/{orgId}")
     SysOrg selectOrgById(@PathVariable("orgId") Long orgId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);

+ 5 - 2
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteOrgFallbackFactory.java

@@ -14,10 +14,8 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.cloud.openfeign.FallbackFactory;
 import org.springframework.stereotype.Component;
-import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestHeader;
-import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -165,6 +163,11 @@ public class RemoteOrgFallbackFactory implements FallbackFactory<RemoteOrgServic
                 log.error("获取机构树失败:{}", throwable.getMessage());
                 return null;
             }
+
+            @Override
+            public List<SysOrg> selectOrgTreeListByCurOrgId(Long id, String source) {
+                return null;
+            }
         };
     }
 }

+ 4 - 2
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/enums/OrgTypeEnum.java

@@ -26,11 +26,13 @@ public enum OrgTypeEnum {
 
     ZHONGXIN_YEWUKU(6, "中心业务库"),
 
-    JIANKONG_ZHONGXIN(10, "监控中心"),
+    BAOGUAN_XAINGKU(7, "保管箱库"),
 
     WANGDIAN_YEWUKU(8, "网点业务库"),
 
-    BAOGUAN_XAINGKU(7, "保管箱库"),
+    DIQU_HANG_SHE(9, "地区行社"),
+
+    JIANKONG_ZHONGXIN(10, "监控中心"),
     ;
 
 

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillTaskServiceImpl.java

@@ -420,7 +420,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgById(orgId, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
         request.setOrgPath(sysOrg.getPath());
 
-        List<SysOrg> sysOrgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectSysOrgByParentId(orgId, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+        List<SysOrg> sysOrgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgTreeListByCurOrgId(orgId, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
         if (ObjectUtil.isEmpty(sysOrgList)) {
             return new ArrayList<>();
         }

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingTaskServiceImpl.java

@@ -411,7 +411,7 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgById(orgId, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
         request.setOrgPath(sysOrg.getPath());
 
-        List<SysOrg> sysOrgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectSysOrgByParentId(orgId, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+        List<SysOrg> sysOrgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgTreeListByCurOrgId(orgId, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
         if (ObjectUtil.isEmpty(sysOrgList)) {
             return new ArrayList<>();
         }

+ 1 - 1
soc-modules/soc-modules-core/src/main/resources/mapper/drill/CoreDrillTaskMapper.xml

@@ -238,7 +238,7 @@
             and t.org_path like concat(#{request.orgPath},'%')
         </if>
         <if test="request.recStatus!=null">
-            and t.rec_status in (#{request.recStatus},#{request.recStatus+1})
+            and t.rec_status in (#{request.recStatus},#{request.recStatus}+1)
         </if>
     </sql>
 

+ 7 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysOrgController.java

@@ -13,7 +13,6 @@ import com.xunmei.common.log.enums.BusinessType;
 import com.xunmei.common.security.annotation.InnerAuth;
 import com.xunmei.common.security.annotation.RequiresPermissions;
 import com.xunmei.system.api.domain.SysOrg;
-import com.xunmei.system.api.model.LoginUser;
 import com.xunmei.system.mapper.SysOrgMapper;
 import com.xunmei.system.service.ISysOrgService;
 import io.swagger.annotations.Api;
@@ -147,6 +146,13 @@ public class SysOrgController extends BaseController {
         return sysOrgMapper.selectList(queryWrapper);
     }
 
+    @ApiOperation(value = "通过当前用户所在机构id查询机构列表")
+    @InnerAuth
+    @GetMapping("/selectOrgTreeListByCurOrgId")
+    public List<SysOrg> selectOrgTreeListByCurOrgId(Long id) {
+
+        return sysOrgService.selectOrgTreeListByCurOrgId(id);
+    }
     /**
      * 获取机构及其上级机构的id列表
      *

+ 2 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysOrgService.java

@@ -137,4 +137,6 @@ public interface ISysOrgService extends IService<SysOrg> {
     List<SysOrg> findAllOrg();
 
     OrgTreeResp getOrgTreeReq(OrgTreeReq req);
+
+    List<SysOrg> selectOrgTreeListByCurOrgId(Long id);
 }

+ 49 - 4
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysOrgServiceImpl.java

@@ -10,9 +10,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.CacheConstants;
 import com.xunmei.common.core.constant.Constants;
+import com.xunmei.common.core.constant.ErrorMsgConstants;
 import com.xunmei.common.core.domain.OrgTreeReq;
 import com.xunmei.common.core.domain.OrgTreeResp;
+import com.xunmei.common.core.enums.OrgTypeEnum;
 import com.xunmei.common.core.exception.ServiceException;
+import com.xunmei.common.core.util.BeanHelper;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.redis.utils.RedisUtils;
@@ -30,7 +33,6 @@ import org.springframework.transaction.annotation.Transactional;
 import javax.annotation.PostConstruct;
 import java.util.*;
 import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 /**
  * 【请填写功能名称】Service业务层处理
@@ -461,17 +463,17 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
         String queryOrgPath = idPathMap.get(queryOrgId);
         if (req.getCheckSub()) {
             //1.如果当前机构是查询机构的上级机构,那么应查询当前机构到 查询机构之间的所有机构id,与当前机构的所有下级
-            if (curOrgPath.startsWith(queryOrgPath) && ObjectUtil.notEqual(curOrgPath,queryOrgPath)){
+            if (curOrgPath.startsWith(queryOrgPath) && ObjectUtil.notEqual(curOrgPath, queryOrgPath)) {
                 List<Long> list = Arrays.stream(curOrgPath.split("-")).map(Long::valueOf).collect(Collectors.toList());
                 int queryOrgIdIdx = list.indexOf(queryOrgId);
                 int curOrgIdIdx = list.indexOf(curOrgId);
                 //移除list中queryOrgId元素 之前的数据
-                list = ListUtil.sub(list,queryOrgIdIdx, curOrgIdIdx+1);
+                list = ListUtil.sub(list, queryOrgIdIdx, curOrgIdIdx + 1);
                 //移除当前机构id,当前机构的数据以path字段查询
                 list.remove(curOrgId);
                 resp.setOrgIdList(list);
                 resp.setOrgPath(curOrgPath);
-            }else {
+            } else {
                 resp.setOrgPath(queryOrgPath);
             }
             return resp;
@@ -488,4 +490,47 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
         return resp;
     }
 
+    @Override
+    public List<SysOrg> selectOrgTreeListByCurOrgId(Long id) {
+        SysOrg org = getById(id);
+        if (ObjectUtil.hasEmpty(org, org.getType())) {
+            throw new ServiceException(ErrorMsgConstants.CUR_USER_ORT_TYPE_ERROR);
+        }
+        List<SysOrgVO> sysOrgList = RedisUtils.getCacheList(CacheConstants.ORG_CACHE_LIST_KEY);
+        sysOrgList.forEach(sysOrg -> {
+            if (ObjectUtil.isNull(sysOrg.getSort())) {
+                sysOrg.setSort(0);
+            }
+            if (ObjectUtil.isNotEmpty(sysOrg.getShortName())){
+                sysOrg.setName(sysOrg.getShortName());
+            }
+        });
+        sysOrgList.removeIf(sysOrg -> ObjectUtil.isEmpty(sysOrg.getPath()) || sysOrg.getName().contains("各部门"));
+        OrgTypeEnum orgTypeEnum = OrgTypeEnum.getOrgTypeEnum(org.getType());
+        List<SysOrgVO> result = new ArrayList<>();
+        switch (orgTypeEnum) {
+            case SHEGN_LIAN_SHE:
+                result = sysOrgList.stream()
+                        .filter(sysOrg -> ObjectUtil.equal(sysOrg.getType(), OrgTypeEnum.DIQU_HANG_SHE.getCode()))
+                        .filter(sysOrg -> sysOrg.getName().contains("地区行社"))
+                        .sorted(Comparator.comparing(SysOrgVO::getSort))
+                        .collect(Collectors.toList());
+                break;
+            case BAN_SHI_CHU:
+                result = sysOrgList.stream()
+                        .filter(sysOrg -> sysOrg.getPath().startsWith(org.getPath()))
+                        .filter(sysOrg -> ObjectUtil.equal(sysOrg.getType(), OrgTypeEnum.HANG_SHE.getCode()))
+                        .sorted(Comparator.comparing(SysOrgVO::getSort))
+                        .collect(Collectors.toList());
+                break;
+            default:
+                result = sysOrgList.stream()
+                        .filter(sysOrg -> ObjectUtil.equal(sysOrg.getParentId(), org.getId()))
+                        //.filter(sysOrg -> sysOrg.getPath().startsWith(org.getPath()))
+                        .sorted(Comparator.comparing(SysOrgVO::getSort))
+                        .collect(Collectors.toList());
+
+        }
+        return BeanHelper.copyProperties(result, SysOrg.class);
+    }
 }