瀏覽代碼

实现驾驶舱

jiawuxian 1 年之前
父節點
當前提交
a9c35c0aa5
共有 14 個文件被更改,包括 171 次插入57 次删除
  1. 2 0
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteOrgService.java
  2. 10 4
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteOrgFallbackFactory.java
  3. 19 4
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/controller/WebCockpitController.java
  4. 0 3
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/dto/web/TaskStatisticDto.java
  5. 3 3
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/mapper/CockpitMapper.java
  6. 8 2
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/service/CockpitService.java
  7. 57 31
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/service/impl/CockpitServiceImpl.java
  8. 4 2
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/vo/web/OrgSecurityInfoVo.java
  9. 1 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/vo/web/QuestionStatisticVo.java
  10. 15 7
      soc-modules/soc-modules-core/src/main/resources/mapper/board/CockpitMapper.xml
  11. 8 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysOrgController.java
  12. 1 1
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysUserController.java
  13. 2 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysOrgService.java
  14. 41 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysOrgServiceImpl.java

+ 2 - 0
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteOrgService.java

@@ -65,6 +65,8 @@ public interface RemoteOrgService {
     @GetMapping("/org/selectOrgTreeListByCurOrgId")
     List<SysOrg> selectOrgTreeListByCurOrgId(@RequestParam("id") Long id, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 
+    @GetMapping("/org/selectchildfromdb")
+    List<SysOrg> selectChildrenFromDb(@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);

+ 10 - 4
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteOrgFallbackFactory.java

@@ -17,6 +17,7 @@ import org.springframework.cloud.openfeign.FallbackFactory;
 import org.springframework.stereotype.Component;
 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;
@@ -60,8 +61,8 @@ public class RemoteOrgFallbackFactory implements FallbackFactory<RemoteOrgServic
             }
 
             @Override
-            public List<SysOrg> selectSysOrgByParentIds( List<Long> parentIds,String source){
-                return  new ArrayList<>();
+            public List<SysOrg> selectSysOrgByParentIds(List<Long> parentIds, String source) {
+                return new ArrayList<>();
             }
 
             @Override
@@ -165,12 +166,12 @@ public class RemoteOrgFallbackFactory implements FallbackFactory<RemoteOrgServic
             }
 
             @Override
-            public R<List<SysOrgVO>> hangsheWholePathTree(Long orgId,@RequestHeader(SecurityConstants.FROM_SOURCE) String source) {
+            public R<List<SysOrgVO>> hangsheWholePathTree(Long orgId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source) {
                 return R.fail();
             }
 
             @Override
-            public R<OrgTreeResp>  getOrgTreeResp(OrgTreeReq orgTreeReq) {
+            public R<OrgTreeResp> getOrgTreeResp(OrgTreeReq orgTreeReq) {
                 log.error("获取机构树失败:{}", throwable.getMessage());
                 return R.fail();
             }
@@ -193,6 +194,11 @@ public class RemoteOrgFallbackFactory implements FallbackFactory<RemoteOrgServic
             }
 
             @Override
+            public List<SysOrg> selectChildrenFromDb(@RequestParam("id") Long id, String source) {
+                return new ArrayList<>();
+            }
+
+            @Override
             public List<SysOrg> selectOrgByPath(Long orgId) {
                 return new ArrayList<>();
             }

+ 19 - 4
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/controller/WebCockpitController.java

@@ -86,18 +86,33 @@ public class WebCockpitController extends BaseController {
      */
     @ApiOperation(value = "统计机构信息")
     @GetMapping("/orginfo")
-    public AjaxResult orgInfo(String orgPath) {
-        return success(cockpitService.orgInfo(orgPath));
+    public AjaxResult orgInfo(Long orgId) {
+        return success(cockpitService.orgInfo(orgId));
     }
 
     /**
+     * 机构信息
+     */
+    @ApiOperation(value = "统计机构信息")
+    @GetMapping("/orgsecurityinfo")
+    public AjaxResult orgSecurityInfo(Long orgId) {
+        return success(cockpitService.orgInfo(orgId));
+    }
+
+
+    /**
      * 本月来访
      *
      * @param orgPath
      * @return
      */
-    public AjaxResult currentMonthVisitInfo(String orgPath) {
-        return success(cockpitService.currentMonthVisitInfo(orgPath));
+    /**
+     * 机构信息
+     */
+    @ApiOperation(value = "统计机构信息")
+    @GetMapping("/currentmonthvisit")
+    public AjaxResult currentMonthVisitInfo(Long orgId) {
+        return success(cockpitService.currentMonthVisitInfo(orgId));
     }
 
     /**

+ 0 - 3
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/dto/web/TaskStatisticDto.java

@@ -16,9 +16,6 @@ public class TaskStatisticDto {
     @NotNull
     private Long orgId;
 
-
-    private String orgPath;
-
     /**
      * 统计周期
      */

+ 3 - 3
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/mapper/CockpitMapper.java

@@ -22,16 +22,16 @@ public interface CockpitMapper extends BaseMapper {
 
     List<TaskStatisticVo> drill(@Param("startDate") Date start,@Param("endDate") Date end,@Param("orgPath") String orgPath);
 
-    List<WebGA38InfoDto> orgGA38(@Param("orgId") String orgPath, @Param("date") Date date);
+    List<WebGA38InfoDto> orgGA38(@Param("orgPath") String orgPath, @Param("date") Date date);
 
     OrgInfoVo orgInfo(@Param("orgPath") String orgPath);
 
+    OrgSecurityInfoVo orgSecurityInfo(@Param("orgPath") String orgPath);
+
     VisitInfoVo currentMonthVisitInfo(@Param("orgPath") String orgPath, @Param("startDate") Date startDate);
 
     QuestionStatisticVo question(@Param("date") Date start,@Param("orgPath") String orgPath);
 
-
-
     /**
      *
      * @param orgPath

+ 8 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/service/CockpitService.java

@@ -41,14 +41,20 @@ public interface CockpitService {
      * 机构信息
      * @return
      */
-    OrgInfoVo orgInfo(String orgPath);
+    OrgInfoVo orgInfo(Long orgId);
+
+    /**
+     * 机构信息
+     * @return
+     */
+    OrgSecurityInfoVo orgSecurityInfo(Long orgId);
 
     /**
      * 本月来访
      * @param orgPath
      * @return
      */
-    VisitInfoVo currentMonthVisitInfo(String orgPath);
+    VisitInfoVo currentMonthVisitInfo(Long orgId);
 
     /**
      * 隐患统计

+ 57 - 31
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/service/impl/CockpitServiceImpl.java

@@ -10,7 +10,6 @@ import com.xunmei.common.core.exception.ServiceException;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.utils.NumberUtils;
 import com.xunmei.common.core.utils.StringUtils;
-import com.xunmei.core.board.dto.app.AppSyntheticQuestionDto;
 import com.xunmei.core.board.dto.web.TaskStatisticDto;
 import com.xunmei.core.board.dto.web.WebGA38InfoDto;
 import com.xunmei.core.board.dto.web.WebSyntheticQuestionDto;
@@ -43,7 +42,7 @@ public class CockpitServiceImpl implements CockpitService {
     @Override
     public List<TaskStatisticVo> resumption(TaskStatisticDto dto) {
         Date date = getStartDate(dto.getPeriod());
-        SysOrg org = remoteOrgService.selectOrgById(dto.getOrgId(), SecurityConstants.INNER);
+        SysOrg org = getOrgThrowIfNull(dto.getOrgId());
         String orgPath = org.getPath();
         List<TaskStatisticVo> list = cockpitMapper.resumption(date, DateUtil.endOfDay(new Date()), orgPath);
         return taskStatistic(list, dto.getOrgId());
@@ -52,10 +51,10 @@ public class CockpitServiceImpl implements CockpitService {
     @Override
     public List<WebSafetyCheckVo> safetyCheck(TaskStatisticDto dto) {
         Date date = getStartDate(dto.getPeriod());
-        SysOrg org = remoteOrgService.selectOrgById(dto.getOrgId(), SecurityConstants.INNER);
+        SysOrg org = getOrgThrowIfNull(dto.getOrgId());
 
 //        String orgPath = org.getPath();
-        List<WebSafetyCheckVo> list = cockpitMapper.safetyCheck(date, DateUtil.endOfDay(new Date()), dto.getOrgPath());
+        List<WebSafetyCheckVo> list = cockpitMapper.safetyCheck(date, DateUtil.endOfDay(new Date()), org.getPath());
         List<SysDictData> dicts = remoteDictDataService.selectDictByeType("check_type", SecurityConstants.INNER);
         List<WebSafetyCheckVo> r = dicts.stream().map(d -> {
             Optional<WebSafetyCheckVo> voOpt = list.stream().filter(i -> ObjectUtil.equal(i.getType(), d.getDictValue())).findFirst();
@@ -77,27 +76,27 @@ public class CockpitServiceImpl implements CockpitService {
     @Obsolete
     public List<TaskStatisticVo> monitor(TaskStatisticDto dto) {
         Date date = getStartDate(dto.getPeriod());
-        SysOrg org = remoteOrgService.selectOrgById(dto.getOrgId(), SecurityConstants.INNER);
+        SysOrg org = getOrgThrowIfNull(dto.getOrgId());
         String orgPath = org.getPath();
         List<TaskStatisticVo> list = cockpitMapper.monitor(date, DateUtil.endOfDay(new Date()), orgPath);
-        return taskStatistic(list,  dto.getOrgId());
+        return taskStatistic(list, dto.getOrgId());
     }
 
     @Override
     public List<TaskStatisticVo> edu(TaskStatisticDto dto) {
         Date date = getStartDate(dto.getPeriod());
-        SysOrg org = remoteOrgService.selectOrgById(dto.getOrgId(), SecurityConstants.INNER);
+        SysOrg org = getOrgThrowIfNull(dto.getOrgId());
         String orgPath = org.getPath();
         List<TaskStatisticVo> list = cockpitMapper.edu(date, DateUtil.endOfDay(new Date()), orgPath);
-        return taskStatistic(list,  dto.getOrgId());
+        return taskStatistic(list, dto.getOrgId());
     }
 
     @Override
     public List<WebDrillInfoVo> drill(TaskStatisticDto dto) {
         Date date = getStartDate(dto.getPeriod());
-//        SysOrg org = remoteOrgService.selectOrgById(dto.getOrgId(), SecurityConstants.INNER);
+        SysOrg org = getOrgThrowIfNull(dto.getOrgId());
 //        String orgPath = org.getPath();
-        List<TaskStatisticVo> list = cockpitMapper.drill(date, DateUtil.endOfDay(new Date()), dto.getOrgPath());
+        List<TaskStatisticVo> list = cockpitMapper.drill(date, DateUtil.endOfDay(new Date()), org.getPath());
         list = taskStatistic(list, dto.getOrgId());
 
         List<WebDrillInfoVo> r = list.stream().map(i -> {
@@ -114,16 +113,16 @@ public class CockpitServiceImpl implements CockpitService {
     @Override
     public List<OrgGA38StatisticVo> orgGA38(TaskStatisticDto dto) {
         Date date = getStartDate(dto.getPeriod());
-        SysOrg org = remoteOrgService.selectOrgById(dto.getOrgId(), SecurityConstants.INNER);
+        SysOrg org = getOrgThrowIfNull(dto.getOrgId());
         List<WebGA38InfoDto> data = cockpitMapper.orgGA38(org.getPath(), date);
         List<OrgGA38StatisticVo> r = getGA38Children(dto.getOrgId());
         for (WebGA38InfoDto orgVo : data) {
             for (OrgGA38StatisticVo statisticVo : r) {
                 if (orgVo.getPath().startsWith(statisticVo.getOrgPath())) {
                     statisticVo.setTotal(1 + statisticVo.getTotal());
-                    statisticVo.setGa382021(1 + statisticVo.getGa382021());
-                    statisticVo.setGa382021(1 + statisticVo.getGa382021());
-                    if (statisticVo.getGa382021() > 0 || statisticVo.getGa382015() > 0) {
+                    statisticVo.setGa382021(orgVo.getGa382021() + statisticVo.getGa382021());
+                    statisticVo.setGa382015(orgVo.getGa382015() + statisticVo.getGa382015());
+                    if (orgVo.getGa382021() > 0 || orgVo.getGa382015() > 0) {
                         statisticVo.setReachCount(1 + statisticVo.getReachCount());
                     }
 //                    statisticVo.setReachCount(orgVo.getReachCount() + statisticVo.getReachCount());
@@ -138,7 +137,7 @@ public class CockpitServiceImpl implements CockpitService {
         r.sort(new Comparator<OrgGA38StatisticVo>() {
             @Override
             public int compare(OrgGA38StatisticVo o1, OrgGA38StatisticVo o2) {
-                return -NumberUtil.compare(o2.getReachRate(), o1.getReachRate());
+                return NumberUtil.compare(o2.getReachRate(), o1.getReachRate());
             }
         });
 
@@ -152,8 +151,24 @@ public class CockpitServiceImpl implements CockpitService {
      * @return
      */
     @Override
-    public OrgInfoVo orgInfo(String orgPath) {
-        return cockpitMapper.orgInfo(orgPath);
+    public OrgInfoVo orgInfo(Long orgId) {
+        SysOrg org = getOrgThrowIfNull(orgId);
+        return cockpitMapper.orgInfo(org.getPath());
+    }
+
+    /**
+     * 机构信息
+     *
+     * @return
+     */
+    @Override
+    public OrgSecurityInfoVo orgSecurityInfo(Long orgId) {
+        SysOrg org = getOrgThrowIfNull(orgId);
+        OrgSecurityInfoVo vo = cockpitMapper.orgSecurityInfo(org.getPath());
+        vo.setEquippedRate(NumberUtils.computeRate(vo.getEquippedCount() + vo.getUnequippedCount(), vo.getEquippedCount()));
+        vo.setUnequippedRate(NumberUtils.computeRate(vo.getEquippedCount() + vo.getUnequippedCount(), vo.getUnequippedCount()));
+
+        return vo;
     }
 
     /**
@@ -163,9 +178,10 @@ public class CockpitServiceImpl implements CockpitService {
      * @return
      */
     @Override
-    public VisitInfoVo currentMonthVisitInfo(String orgPath) {
+    public VisitInfoVo currentMonthVisitInfo(Long orgId) {
+        SysOrg org = getOrgThrowIfNull(orgId);
         DateRange range = DateUtils.getStartAndEnd(new Date(), CycleCommonEnum.MONTHLY);
-        VisitInfoVo vo = cockpitMapper.currentMonthVisitInfo(orgPath, range.getStartTime());
+        VisitInfoVo vo = cockpitMapper.currentMonthVisitInfo(org.getPath(), range.getStartTime());
         int total = vo.getPaperCount() + vo.getElectronicCount() + vo.getUrgencyCount();
         vo.setElectronicRate(NumberUtils.computeRate(total, vo.getElectronicCount()));
         vo.setUrgencyRate(NumberUtils.computeRate(total, vo.getUrgencyCount()));
@@ -176,13 +192,14 @@ public class CockpitServiceImpl implements CockpitService {
 
     @Override
     public QuestionStatisticVo question(TaskStatisticDto dto) {
+        SysOrg org = getOrgThrowIfNull(dto.getOrgId());
         Date date = getStartDate(dto.getPeriod());
 
-        WebSyntheticQuestionDto questionDto = cockpitMapper.selectQuestion(dto.getOrgPath(), date);
+        WebSyntheticQuestionDto questionDto = cockpitMapper.selectQuestion(org.getPath(), date);
         if (ObjectUtil.isNull(questionDto)) {
             questionDto = new WebSyntheticQuestionDto();
         }
-        Map<String, Long> overdueCount = cockpitMapper.selectOverDueQuestionCount(dto.getOrgPath(), date);
+        Map<String, Long> overdueCount = cockpitMapper.selectOverDueQuestionCount(org.getPath(), date);
 
         QuestionStatisticVo vo = new QuestionStatisticVo();
         vo.setTotal(questionDto.getTotal());
@@ -193,9 +210,9 @@ public class CockpitServiceImpl implements CockpitService {
         vo.setReformed(NumberUtils.computeRate(questionDto.getTotal(), questionDto.getReformedCount()));
 
         if (overdueCount.size() > 0) {
-            Long count=overdueCount.get("count");
-            Long overdue=overdueCount.get("overdueCount");
-            vo.setClosed(NumberUtils.computeRate(count.intValue(),overdue.intValue() ));
+            Long count = overdueCount.get("count");
+            Long overdue = overdueCount.get("overdueCount");
+            vo.setClosed(NumberUtils.computeRate(count.intValue(), overdue.intValue()));
         } else {
             vo.setClosed(1f);
         }
@@ -241,14 +258,14 @@ public class CockpitServiceImpl implements CockpitService {
         }
     }
 
-    private DateRange getStartAndEnd(Integer period) {
-        Date start = getStartDate(period);
-        Date end = DateUtil.endOfDay(new Date());
-        return new DateRange(start, end);
-    }
+//    private DateRange getStartAndEnd(Integer period) {
+//        Date start = getStartDate(period);
+//        Date end = DateUtil.endOfDay(new Date());
+//        return new DateRange(start, end);
+//    }
 
     private List<TaskStatisticVo> getTaskChildren(Long orgId) {
-        List<SysOrg> children = remoteOrgService.selectOrgTreeListByCurOrgId(orgId, SecurityConstants.INNER);
+        List<SysOrg> children = remoteOrgService.selectChildrenFromDb(orgId, SecurityConstants.INNER);
         List<TaskStatisticVo> list = new ArrayList<>();
 
         for (SysOrg child : children) {
@@ -269,7 +286,7 @@ public class CockpitServiceImpl implements CockpitService {
     }
 
     private List<OrgGA38StatisticVo> getGA38Children(Long orgId) {
-        List<SysOrg> children = remoteOrgService.selectOrgTreeListByCurOrgId(orgId, SecurityConstants.INNER);
+        List<SysOrg> children = remoteOrgService.selectChildrenFromDb(orgId, SecurityConstants.INNER);
         List<OrgGA38StatisticVo> list = new ArrayList<>();
         for (SysOrg child : children) {
             OrgGA38StatisticVo vo = new OrgGA38StatisticVo();
@@ -288,6 +305,15 @@ public class CockpitServiceImpl implements CockpitService {
 
         return list;
     }
+
+    private SysOrg getOrgThrowIfNull(Long orgId) {
+        SysOrg org = remoteOrgService.selectOrgById(orgId, SecurityConstants.INNER);
+        if (ObjectUtil.isNull(org)) {
+            throw new ServiceException("机构不存在");
+        }
+
+        return org;
+    }
 //
 //    private List<SysOrg> getChildren(SysOrg org) {
 //        List<SysOrg> children=remoteOrgService.selectOrgTreeListByCurOrgId(org.getId(), SecurityConstants.INNER);

+ 4 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/vo/web/OrgSecurityInfo.java → soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/vo/web/OrgSecurityInfoVo.java

@@ -1,11 +1,13 @@
 package com.xunmei.core.board.vo.web;
 
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
 /**
  * 机构安保情况
  */
-public class OrgSecurityInfo {
+@Data
+public class OrgSecurityInfoVo {
     @ApiModelProperty("配备有保安的数量")
     private int equippedCount;
     @ApiModelProperty("配备的比例")
@@ -13,5 +15,5 @@ public class OrgSecurityInfo {
     @ApiModelProperty("未配备有保安的数量")
     private int unequippedCount;
     @ApiModelProperty("未配备的比例")
-    private int unequippedRate;
+    private float unequippedRate;
 }

+ 1 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/vo/web/QuestionStatisticVo.java

@@ -18,6 +18,7 @@ public class QuestionStatisticVo {
     private float dissent;
     /**
      * 已关闭
+     *
      */
     private float closed;
     /**

+ 15 - 7
soc-modules/soc-modules-core/src/main/resources/mapper/board/CockpitMapper.xml

@@ -37,7 +37,7 @@
                count(0)                      as total,
                sum(if(t.`status` = 3, 1, 0)) as completed
         FROM core_safety_task t
-        INNER JOIN core_safecheck_plan p on t.plan_id = p.id
+                 INNER JOIN core_safecheck_plan p on t.plan_id = p.id
         where t.org_path like concat(#{orgPath}, '%')
           and ((
                            #{startDate}   <![CDATA[<=]]> t.plan_start_time
@@ -103,12 +103,11 @@
         org_id,org_path
     </select>
     <select id="orgGA38" resultType="com.xunmei.core.board.dto.web.WebGA38InfoDto">
-        SELECT count(0)               as total,
-               o.path                 as org_path,
-               sum(m.ga382021)        as ga382021,
-               sum(m.ga382021current) as ga382021current,
-               sum(m.ga382015)        as ga382015,
-               sum(m.ga382015current) as ga382015current
+        SELECT o.path,
+               if(m.ga382021 is null, 0, 1)        as ga382021,
+               if(m.ga382021current is null, 0, 1) as ga382021current,
+               if(m.ga382015 is null, 0, 1)        as ga382015,
+               if(m.ga382015current is null, 0, 1) as ga382015current
         from sys_org o
                  LEFT JOIN (SELECT org_id,
                                    sum(standard = 1)                                                 AS ga382021,
@@ -135,6 +134,15 @@
           and o.is_lock = 0
           and o.path like concat(#{orgPath}, '%');
     </select>
+    <select id="orgSecurityInfo" resultType="com.xunmei.core.board.vo.web.OrgSecurityInfoVo">
+        select sum(if(o.askari = 1, 1, 0))  as equippedCount,
+               sum(if(o.askari != 1, 1, 0)) as unequippedCount
+        from sys_org o
+                 LEFT JOIN sys_org_extend oe on o.id = oe.org_id
+        WHERE o.deleted = 0
+          and o.is_lock = 0
+          and o.path like concat(#{orgPath}, '%');
+    </select>
     <select id="currentMonthVisitInfo" resultType="com.xunmei.core.board.vo.web.VisitInfoVo">
         SELECT COUNT(*)        as total,
                sum(l.type = 1) as electronicCount,

+ 8 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysOrgController.java

@@ -170,6 +170,14 @@ public class SysOrgController extends BaseController {
 
         return sysOrgService.selectOrgTreeListByCurOrgId(id);
     }
+
+    @ApiOperation(value = "从数据库中查询下级")
+    @InnerAuth
+    @GetMapping("/selectchildfromdb")
+    public List<SysOrg> selectChildrenFromDb(Long id) {
+        return sysOrgService.selectChildrenFromDb(id);
+    }
+
     /**
      * 获取机构及其上级机构的id列表
      *

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

@@ -190,7 +190,7 @@ public class SysUserController extends BaseController {
         SysUser user = userService.selectUserById(SecurityUtils.getUserId());
         SysOrg org = orgMapper.selectOne(new LambdaQueryWrapper<SysOrg>()
                 .eq(SysOrg::getId, user.getOrgId())
-                .select(SysOrg::getType, SysOrg::getShortName));
+                .select(SysOrg::getType, SysOrg::getShortName,SysOrg::getPath));
         if (ObjectUtil.isNotEmpty(org)) {
             user.setOrgType(org.getType());
             user.setOrgShortName(org.getShortName());

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

@@ -162,6 +162,8 @@ public interface ISysOrgService extends IService<SysOrg> {
 
     List<SysOrg> selectOrgTreeListByCurOrgId(Long id);
 
+    List<SysOrg> selectChildrenFromDb(Long id);
+
     SysOrg selectByShortName(String shortName);
 
     String selectOrgNameByPath(Long orgId);

+ 41 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysOrgServiceImpl.java

@@ -826,6 +826,47 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
         return orgList;
     }
 
+    /**
+     * 从数据库中查询下级
+     * @param id
+     * @return
+     */
+    public List<SysOrg> selectChildrenFromDb(Long id) {
+        SysOrg org = getById(id);
+        if (ObjectUtil.hasEmpty(org, org.getType())) {
+            throw new ServiceException(ErrorMsgConstants.CUR_USER_ORT_TYPE_ERROR);
+        }
+        OrgTypeEnum orgTypeEnum = OrgTypeEnum.getOrgTypeEnum(org.getType());
+        LambdaQueryWrapper<SysOrg> wrapper = new LambdaQueryWrapper<SysOrg>();
+        wrapper.notLike(SysOrg::getName, "各部门").notLike(SysOrg::getShortName, "各部门").isNotNull(SysOrg::getPath);
+
+        switch (orgTypeEnum) {
+            case SHEGN_LIAN_SHE:
+                wrapper.eq(SysOrg::getType, OrgTypeEnum.DIQU_HANG_SHE.getCode()).like(SysOrg::getName, "地区行社");
+                break;
+            case BAN_SHI_CHU:
+                wrapper.eq(SysOrg::getType, OrgTypeEnum.HANG_SHE.getCode()).likeLeft(SysOrg::getPath, org.getPath());
+                break;
+            default:
+                if (org.getName().contains("地区行社")) {
+                    wrapper.eq(SysOrg::getType, OrgTypeEnum.HANG_SHE.getCode()).likeLeft(SysOrg::getPath, org.getPath());
+                } else {
+                    wrapper.eq(SysOrg::getParentId, org.getId());
+                }
+        }
+
+        wrapper.select(SysOrg::getId,SysOrg::getShortName,SysOrg::getBreviary,SysOrg::getType,SysOrg::getPath);
+
+        List<SysOrg> orgs= baseMapper.selectList(wrapper);
+        orgs.forEach(item->{
+            if(ObjectUtil.isNull(item.getSort())){
+                item.setSort(0);
+            }
+        });
+        orgs.sort(Comparator.comparing(SysOrg::getSort));
+        return  orgs;
+    }
+
     @Override
     public SysOrg selectByShortName(String shortName) {
         List<SysOrg> sysOrgs = baseMapper.selectByShortName(shortName);