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

Merge remote-tracking branch 'origin/V0.0.2' into V0.0.2

ouyang 2 жил өмнө
parent
commit
5bce01ab16
14 өөрчлөгдсөн 144 нэмэгдсэн , 20 устгасан
  1. 23 3
      project_data/sql/0.0.2/soc/soc.sql
  2. 3 1
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteOrgService.java
  3. 1 1
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/domain/SysDevice.java
  4. 5 2
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteOrgFallbackFactory.java
  5. 4 2
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/enums/OrgTypeEnum.java
  6. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillTaskServiceImpl.java
  7. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingTaskServiceImpl.java
  8. 6 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/controller/GxResumptionController.java
  9. 39 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/service/ResumptionServiceImpl.java
  10. 1 1
      soc-modules/soc-modules-core/src/main/resources/mapper/access/CoreMonitoringTaskRegistrationMonitorMapper.xml
  11. 2 3
      soc-modules/soc-modules-core/src/main/resources/mapper/drill/CoreDrillTaskMapper.xml
  12. 7 1
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysOrgController.java
  13. 2 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysOrgService.java
  14. 49 4
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysOrgServiceImpl.java

+ 23 - 3
project_data/sql/0.0.2/soc/soc.sql

@@ -1000,6 +1000,7 @@ delete from sys_dict_type where dict_type='drill_task_rec_status';
 delete from sys_dict_data where dict_type='drill_task_rec_status';
 delete from sys_dict_data where dict_type='science_protection';
 delete  from sys_dict_data where  dict_label in ('淋浴式灭火器','防毒面具');
+delete  from sys_dict_data where dict_type= 'sys_device_type';
 INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, update_by, update_time, remark) VALUES ( '演练任务推荐状态', 'drill_task_rec_status', '0', '超级管理员', now(), '', null, null);
 INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES (0, '正常案例', '0', 'drill_task_rec_status', null, 'default', 'N', '0', '超级管理员', now(), '超级管理员', now(), null);
 INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES (0, '行社优秀案例', '1', 'drill_task_rec_status', null, 'default', 'N', '0', '超级管理员', now(), '超级管理员', now(), null);
@@ -1017,8 +1018,20 @@ INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_cla
 VALUES (2, '报警主机', '1', 'science_protection', null, 'default', 'N', '0', '超级管理员', now(), '', null, null);
 INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark)
 VALUES (3, '摄像机', '2', 'science_protection', null, 'default', 'N', '0', '超级管理员', now(), '', null, null);
-
-
+INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark)
+VALUES (1, '硬盘录像机', '0', 'sys_device_type', null, 'default', 'N', '0', '超级管理员', now(), '', null, null);
+INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark)
+VALUES (2, '报警主机', '1', 'sys_device_type', null, 'default', 'N', '0', '超级管理员', now(), '', null, null);
+INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark)
+VALUES (3, '摄像机', '2', 'sys_device_type', null, 'default', 'N', '0', '超级管理员', now(), '', null, null);
+INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark)
+VALUES (4, '灭火器', '3', 'sys_device_type', null, 'default', 'N', '0', '超级管理员', now(), '', null, null);
+INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark)
+VALUES (5, '消防栓', '4', 'sys_device_type', null, 'default', 'N', '0', '超级管理员', now(), '', null, null);
+INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark)
+VALUES (6, '淋浴式灭火器', '5', 'sys_device_type', null, 'default', 'N', '0', '超级管理员', now(), '', null, null);
+INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark)
+VALUES (7, '防毒面具', '6', 'sys_device_type', null, 'default', 'N', '0', '超级管理员', now(), '', null, null);
 -- 新增演练任务状态字典
 delete from sys_dict_type where dict_type='drill_task_status';
 delete from sys_dict_data where dict_type='drill_task_status';
@@ -1434,7 +1447,14 @@ VALUES ( '发送状态', 'send_status', '0', '超级管理员', '2023-09-13 18:1
 INSERT INTO `sys_dict_type` (`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
 VALUES ( '评价周期', 'evaluate_cycle', '0', '超级管理员', '2023-09-13 18:14:59', '', NULL, NULL);
 
-DELETE from `sys_dict_data` WHERE dict_type in ('post_no_pass','question_confirm_status','question_reform_status','send_status','message_type','send_time_type');
+DELETE from `sys_dict_data` WHERE dict_type in ('post_no_pass','question_confirm_status','question_reform_status','send_status','message_type','send_time_type','evaluate_cycle');
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES ( 0, '每月', '0', 'evaluate_cycle', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:15:44', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES ( 1, '每季度', '1', 'evaluate_cycle', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:15:44', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES ( 2, '每年', '2', 'evaluate_cycle', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:15:44', '', NULL, NULL);
+
 INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( 0, '待确认', '0', 'question_confirm_status', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:15:44', '', NULL, NULL);
 INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1, '提出异议', '1', 'question_confirm_status', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:16:01', '', NULL, NULL);
 INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( 2, '已确认', '2', 'question_confirm_status', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:16:18', '', NULL, NULL);

+ 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);

+ 1 - 1
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/domain/SysDevice.java

@@ -73,7 +73,7 @@ public class SysDevice extends BaseEntity {
     /**
      * 验收日期
      */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     @ApiModelProperty(value = "有效期至")
     private Date checkTime;
 

+ 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<>();
         }

+ 6 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/controller/GxResumptionController.java

@@ -5,6 +5,9 @@ import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.common.redis.utils.RedisUtils;
 import com.xunmei.core.resumption.gx.service.ResumptionService;
 import com.xunmei.core.resumption.gx.vo.ResumptionTaskDetailVo;
+import com.xunmei.system.api.factory.RemoteJobFallbackFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -19,6 +22,8 @@ import java.time.Duration;
 @RequestMapping("gx/resumption")
 public class GxResumptionController {
 
+    private static final Logger log = LoggerFactory.getLogger(GxResumptionController.class);
+
     @Autowired
     private ResumptionService resumptionService;
 
@@ -58,6 +63,7 @@ public class GxResumptionController {
             return AjaxResult.success();
         } catch (Exception e) {
             e.printStackTrace();
+            log.error("数据处理出错",e);
             RedisUtils.deleteObject("resumption" + taskDetailVo.getTaskId());
             return AjaxResult.error(e.getMessage());
         }

+ 39 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/service/ResumptionServiceImpl.java

@@ -1,12 +1,20 @@
 package com.xunmei.core.resumption.gx.service;
 
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.utils.DateHelper;
 import com.xunmei.common.security.utils.SecurityUtils;
+import com.xunmei.core.question.QuestionSrcType;
+import com.xunmei.core.question.domain.Question;
+import com.xunmei.core.question.service.IQuestionService;
 import com.xunmei.core.resumption.domain.*;
 import com.xunmei.core.resumption.gx.vo.*;
 import com.xunmei.core.resumption.mapper.*;
 import com.xunmei.core.resumption.vo.ResumptionTaskNewDto;
+import com.xunmei.system.api.RemoteOrgService;
+import com.xunmei.system.api.domain.SysOrg;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -31,6 +39,12 @@ public class ResumptionServiceImpl implements ResumptionService{
     @Autowired
     private AppResumptionDataNfcMapper appResumptionDataNfcMapper;
 
+    @Autowired
+    private RemoteOrgService remoteOrgService;
+
+    @Autowired
+    private IQuestionService questionService;
+
     @Override
     public Map<String, List<ResumptionTaskListVo>> getTaskList(ResumptionTaskNewDto dto) {
 
@@ -105,6 +119,8 @@ public class ResumptionServiceImpl implements ResumptionService{
         int quarter =dateTime.getQuarter() ;
         //获取履职任务
         Resumption sysResumption = resumptionMapper.findOneByTaskIdAndDate(taskId,year,quarter);
+        Long orgId = sysResumption.getOrgId();
+
         sysResumption.setUpdateBy(SecurityUtils.getUsername());
         sysResumption.setUpdateTime(new Date());
         sysResumption.setSubmitTime(new Date());
@@ -153,6 +169,29 @@ public class ResumptionServiceImpl implements ResumptionService{
                 }
                  appResumptionDataMapper.insert(data);
 
+                if(taskDetailVo.getSubType() == 2 && ObjectUtil.equal(point.getResValue(),1) ){
+                    SysOrg org = remoteOrgService.selectSysOrgById(sysResumption.getOrgId(), SecurityConstants.INNER);
+                    Question question = Question.builder()
+                            .srcTaskId(taskId)
+                            .orgId(org.getId())
+                            .orgName(org.getShortName())
+                            .orgPath(org.getPath())
+                            .SrcPointId(point.getPointId())
+                            .srcDataPointId(data.getId())
+                            .srcType(QuestionSrcType.Resumption.getValue())
+                            .srcTaskName(sysResumption.getName())
+                            .checkItem(check.getItemName())
+                            .checkContent(point.getPointName())
+                            .questionDesc(data.getResRemark())
+                            .submitorId(ObjectUtil.isNull(data.getSubmitBy()) ? SecurityUtils.getLoginUser().getUserid() : data.getSubmitBy())
+                            .submitorName(ObjectUtil.isNull(data.getSubmitName()) ? SecurityUtils.getLoginUser().getName() : data.getSubmitName())
+                            .submitTime(ObjectUtil.isNull(data.getSubmitTime()) ? new Date() : data.getSubmitTime())
+                            .reformDeadline(DateUtil.endOfDay(DateUtil.offsetDay(new Date(), Integer.parseInt(point.getRectificationDeadline()))))
+                            .build();
+
+                    questionService.insertQuestion(question);
+                }
+
                 List<AppResumptionDataRemarkimg> imgs = point.getImgs();
                 for (AppResumptionDataRemarkimg img : imgs) {
                     img.setResumptionDataId(data.getId());

+ 1 - 1
soc-modules/soc-modules-core/src/main/resources/mapper/access/CoreMonitoringTaskRegistrationMonitorMapper.xml

@@ -68,7 +68,7 @@
         SELECT cmtrm.id            AS id,
                cmtrm.`host`        AS `host`,
                cmtrm.video_channel AS videoChannel,
-               CONCAT('通道', sd.channel  )	AS videoChannelName,
+        sd.device_name	AS videoChannelName,
                sd1.device_name     AS hostName
         FROM core_monitoring_task_registration_monitor cmtrm
                  LEFT JOIN sys_device sd ON sd.id = cmtrm.video_channel

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

@@ -238,13 +238,13 @@
             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>
 
     <select id="selectRecTaskListPage" resultType="com.xunmei.common.core.domain.drill.vo.CoreDrillTaskRecTaskPageVo">
         select id,org_name,drill_time,type from core_drill_task t
-        <where>
+       where drill_time is not null
             <include refid="recTaskListPage"/>
 
 
@@ -269,7 +269,6 @@
             )
             )
         </if>
-        </where>
     </select>
 
     <update id="updateStatusById">

+ 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);
+    }
 }