소스 검색

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

jingyuanchao 2 년 전
부모
커밋
f8c2b1aad9
14개의 변경된 파일319개의 추가작업 그리고 86개의 파일을 삭제
  1. 3 0
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteOrgService.java
  2. 9 0
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteOrgFallbackFactory.java
  3. 4 0
      soc-common/soc-common-core/pom.xml
  4. 112 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/edu/domain/CoreEduTrainingTaskToRole.java
  5. 4 0
      soc-modules/soc-modules-core/pom.xml
  6. 21 12
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/AppRuleItemServiceImpl.java
  7. 3 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/mapper/CoreMonitoringRetrievalTaskMapper.java
  8. 26 36
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/service/impl/CoreMonitoringRetrievalTaskServiceImpl.java
  9. 21 11
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/SafetyCheckRuleItemServiceImpl.java
  10. 30 0
      soc-modules/soc-modules-core/src/main/resources/mapper/retrieval/CoreMonitoringRetrievalTaskMapper.xml
  11. 10 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysDeptController.java
  12. 14 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysDeptService.java
  13. 60 27
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysDeptServiceImpl.java
  14. 2 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysOrgServiceImpl.java

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

@@ -8,6 +8,7 @@ import com.xunmei.system.api.Eto.OrgListByTypesConditionEto;
 import com.xunmei.system.api.domain.SysOrg;
 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.web.bind.annotation.*;
 
@@ -126,6 +127,8 @@ public interface RemoteOrgService {
     @GetMapping("/extend/selectSysOrgExtendById")
     SysOrgExtend selectSysOrgExtendById(@RequestParam("orgId") Long orgId,  @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 
+    @PostMapping("/dept/deptTree/hangshewhole")
+    R<List<SysOrgVO>> hangsheWholePathTree(@RequestBody Long orgId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 //    @PostMapping("/dept/selectParentHs")
 //    List<SysOrg> selectParentHs(@RequestBody List<Long> orgList, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 

+ 9 - 0
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteOrgFallbackFactory.java

@@ -1,17 +1,20 @@
 package com.xunmei.system.api.factory;
 
+import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.R;
 import com.xunmei.common.core.vo.IdNameVo;
 import com.xunmei.system.api.Eto.OrgListByTypesConditionEto;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.domain.SysOrgExtend;
+import com.xunmei.system.api.vo.SysOrgVO;
 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 java.util.ArrayList;
 import java.util.List;
@@ -133,10 +136,16 @@ public class RemoteOrgFallbackFactory implements FallbackFactory<RemoteOrgServic
             public List<SysOrg> selectChildHs(Long orgId, String source) {
                 return new ArrayList<>();
             }
+
             @Override
             public SysOrgExtend selectSysOrgExtendById(Long orgId, String source) {
                 return null;
             }
+
+            @Override
+            public R<List<SysOrgVO>> hangsheWholePathTree(Long orgId,@RequestHeader(SecurityConstants.FROM_SOURCE) String source) {
+                return null;
+            }
         };
     }
 }

+ 4 - 0
soc-common/soc-common-core/pom.xml

@@ -133,5 +133,9 @@
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+        </dependency>
     </dependencies>
 </project>

+ 112 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/edu/domain/CoreEduTrainingTaskToRole.java

@@ -0,0 +1,112 @@
+package com.xunmei.common.core.domain.retrieval.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 监控调阅任务对象 core_monitoring_retrieval_task
+ *
+ * @author xunmei
+ * @date 2023-08-25
+ */
+@Data
+@ApiModel(value = "CoreMonitoringRetrievalTask对象", description = "监控调阅任务")
+public class CoreMonitoringRetrievalTaskExcelVo {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 序号
+     */
+    @ExcelProperty("序号")
+    private Integer orderNum;
+
+    /**
+     * 任务名称
+     */
+    @ExcelProperty("任务名称")
+    private String taskName;
+    /**
+     * 调阅周期
+     */
+    @ExcelIgnore
+    @ApiModelProperty(value = "调阅周期")
+    private String cycle;
+    @ExcelProperty("调阅周期")
+    private String cycleText;
+    /**
+     * 开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ExcelProperty("开始时间")
+    private Date planStartTime;
+
+    /**
+     * 结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ExcelProperty("结束时间")
+    private Date planEndTime;
+
+    /**
+     * 状态
+     */
+    @ExcelIgnore
+    @ApiModelProperty(value = "状态")
+    private String status;
+    @ExcelProperty("状态")
+    private String statusText;
+
+    /**
+     * 调阅机构
+     */
+    @ExcelProperty("调阅机构")
+    private String orgName;
+    /**
+     * 调阅角色
+     */
+    @ExcelProperty("调阅角色")
+    private String roleName;
+
+
+    /**
+     * 调阅开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ExcelProperty("调阅开始时间")
+    private Date startTime;
+
+    /**
+     * 调阅结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ExcelProperty("调阅结束时间")
+    private Date endTime;
+
+    /**
+     * 调阅人
+     */
+    @ExcelProperty("调阅人")
+    private String retrievalUserName;
+
+    @ExcelProperty("异常数")
+    private Integer exceptionCount;
+
+
+
+
+
+
+
+
+
+
+}

+ 4 - 0
soc-modules/soc-modules-core/pom.xml

@@ -72,6 +72,10 @@
             <artifactId>soc-common-swagger</artifactId>
             <version>${soc.version}</version>
         </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+        </dependency>
 
     </dependencies>
 

+ 21 - 12
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/AppRuleItemServiceImpl.java

@@ -6,6 +6,8 @@ import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.domain.R;
 import com.xunmei.common.core.utils.IDHelper;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.core.resumption.domain.AppRule;
@@ -25,9 +27,8 @@ import com.xunmei.core.resumption.service.IAppRulePointService;
 import com.xunmei.core.resumption.vo.appRuleItem.AppRuleItemPageVo;
 import com.xunmei.core.resumption.vo.appRuleItem.AppRulePointSelectVo;
 import com.xunmei.core.resumption.vo.appRuleItem.RuleTreeItem;
-import com.xunmei.system.api.Eto.OrgListByTypesConditionEto;
 import com.xunmei.system.api.RemoteOrgService;
-import com.xunmei.system.api.domain.SysOrg;
+import com.xunmei.system.api.vo.SysOrgVO;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -188,36 +189,44 @@ public class AppRuleItemServiceImpl extends ServiceImpl<AppRuleItemMapper, AppRu
     @Override
     public List<RuleTreeItem> getRuleTree(Long orgId) {
         List<RuleTreeItem> tree = new ArrayList<>();
-        List<SysOrg> orgs = remoteOrgService
-                .listByTypes(OrgListByTypesConditionEto.builder().orgId(orgId).orgTypes(Arrays.asList("1", "2", "3","11",null)).build())
-                .getData();
+        R<List<SysOrgVO>> r = remoteOrgService.hangsheWholePathTree(orgId,SecurityConstants.INNER);
+        if (ObjectUtil.isNull(r) || ObjectUtil.isNull(r.getData())) {
+            return tree;
+        }
+
+        List<SysOrgVO> orgs = r.getData();
         if (ObjectUtil.isEmpty(orgs)) {
             return tree;
         }
-        Map<Long, SysOrg> orgMap = orgs.stream().collect(Collectors.toMap(o -> o.getId(), o -> o));
-        List<SysOrg> tops = orgs.stream().filter(o -> !orgMap.containsKey(o.getTreeShowParentId())).collect(Collectors.toList());
+
+        Map<Long, SysOrgVO> orgMap = orgs.stream().collect(Collectors.toMap(o -> o.getId(), o -> o));
+        if (!orgMap.containsKey(orgId)) {
+            return tree;
+        }
+
+        List<SysOrgVO> tops = orgs.stream().filter(o -> !orgMap.containsKey(o.getTreeShowParentId())).collect(Collectors.toList());
         if (CollectionUtil.isEmpty(tops)) {
             return tree;
         }
-        List<Long> orgIds = orgs.stream().map(o -> o.getId()).collect(Collectors.toList());
-        List<AppRule> rules = appRuleMapper.selectList(new LambdaQueryWrapper<AppRule>().in(AppRule::getOrgId, orgIds));
+
+        List<AppRule> rules = appRuleMapper.selectList(new LambdaQueryWrapper<AppRule>().in(AppRule::getOrgId, orgMap.keySet()));
 
         tree = tops.stream().map(o -> generateTree(o, orgs, rules)).collect(Collectors.toList());
 
         return tree;
     }
 
-    private RuleTreeItem generateTree(SysOrg parent, List<SysOrg> allOrg, List<AppRule> allRule) {
+    private RuleTreeItem generateTree(SysOrgVO parent, List<SysOrgVO> allOrg, List<AppRule> allRule) {
         RuleTreeItem item = RuleTreeItem.builder().isRule(0).id(parent.getId()).label(parent.getName()).children(new ArrayList<>()).build();
         List<RuleTreeItem> ruleItems = allRule.stream().filter(r -> ObjectUtil.equal(r.getOrgId(), parent.getId()))
                 .map(o -> RuleTreeItem.builder().isRule(1).id(o.getId()).label(o.getName()).orgType(o.getOrgType()).build())
                 .collect(Collectors.toList());
         item.getChildren().addAll(ruleItems);
 
-        List<SysOrg> children = allOrg.stream()
+        List<SysOrgVO> children = allOrg.stream()
                 .filter(o -> ObjectUtil.equal(o.getTreeShowParentId(), parent.getId()))
                 .collect(Collectors.toList());
-        for (SysOrg child : children) {
+        for (SysOrgVO child : children) {
             item.getChildren().add(generateTree(child, allOrg, allRule));
         }
 

+ 3 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/mapper/CoreMonitoringRetrievalTaskMapper.java

@@ -9,6 +9,7 @@ import com.xunmei.common.core.domain.edu.dto.CoreEduTrainingPlanPageDto;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingPlanPageVo;
 import com.xunmei.common.core.domain.retrieval.domain.CoreMonitoringRetrievalTask;
 import com.xunmei.common.core.domain.retrieval.dto.RetrievalTaskPageDto;
+import com.xunmei.common.core.domain.retrieval.vo.CoreMonitoringRetrievalTaskExcelVo;
 import com.xunmei.common.core.domain.retrieval.vo.CoreMonitoringRetrievalTaskOneVo;
 import com.xunmei.common.core.domain.retrieval.vo.CoreMonitoringRetrievalTaskVo;
 import com.xunmei.common.core.domain.retrieval.vo.TaskDataVo;
@@ -85,4 +86,6 @@ public interface CoreMonitoringRetrievalTaskMapper extends BaseMapper<CoreMonito
     void deleteTaskByPlanId(@Param("planId") Long planId);
 
     void updateDeleteTaskByPlanId(@Param("planId") Long planId,@Param("isDeleted") Integer isDeleted);
+
+    List<CoreMonitoringRetrievalTaskExcelVo> selectAllList(@Param("request") RetrievalTaskPageDto request);
 }

+ 26 - 36
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/service/impl/CoreMonitoringRetrievalTaskServiceImpl.java

@@ -7,6 +7,7 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.poi.excel.ExcelUtil;
 import cn.hutool.poi.excel.ExcelWriter;
+import com.alibaba.excel.EasyExcel;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -17,6 +18,7 @@ import com.xunmei.common.core.domain.DateRange;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingPlanPageVo;
 import com.xunmei.common.core.domain.retrieval.domain.CoreMonitoringRetrievalTask;
 import com.xunmei.common.core.domain.retrieval.dto.RetrievalTaskPageDto;
+import com.xunmei.common.core.domain.retrieval.vo.CoreMonitoringRetrievalTaskExcelVo;
 import com.xunmei.common.core.domain.retrieval.vo.CoreMonitoringRetrievalTaskOneVo;
 import com.xunmei.common.core.domain.retrieval.vo.CoreMonitoringRetrievalTaskVo;
 import com.xunmei.common.core.domain.retrieval.vo.TaskDataVo;
@@ -57,6 +59,7 @@ import java.util.List;
 import java.util.stream.Collectors;
 
 
+
 /**
  * 监控调阅任务Service业务层处理
  *
@@ -99,47 +102,34 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
 
     @Override
     public void export(RetrievalTaskPageDto request, HttpServletResponse response) throws IOException {
-        //不分页
-        request.setPageSize(1L);
-        request.setPageNum(100000L);
         SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectSysOrgById(request.getOrgId(),SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
         List<SysDictData> listDict = RemoteCallHandlerExecutor.executeRemoteCall(() -> dictDataService.selectDictByeType("retrieval_task_status", SecurityConstants.INNER), ErrorMsgConstants.QUERY_DICT_DATA_ERROR);
-        final TableDataInfo tableDataInfo = this.selectPage(request);
-        if (ObjectUtil.isEmpty(tableDataInfo.getRows())) {
+        List<SysDictData> listDicta = RemoteCallHandlerExecutor.executeRemoteCall(() -> dictDataService.selectDictByeType("sys_access_cycle", SecurityConstants.INNER), ErrorMsgConstants.QUERY_DICT_DATA_ERROR);
+        if (request.getCheckSub()) {
+            request.setOrgPath(sysOrg.getPath());
+            request.setOrgId(null);
+        }
+        List<CoreMonitoringRetrievalTaskExcelVo> list = coreMonitoringRetrievalTaskMapper.selectAllList(request);
+
+        if (ObjectUtil.isEmpty(list)) {
             throw new RuntimeException("导出数据为空!");
         }
-        List<CoreMonitoringRetrievalTaskVo> list = tableDataInfo.getRows();
-        list.forEach(r -> {
-            r.setStatusText(listDict.stream().filter(d -> d.getDictValue().equals(r.getStatus())).findFirst().orElse(new SysDictData()).getDictLabel());
-        });
-        list.forEach(r -> r.setNo(list.indexOf(r) + 1));
-        ExcelWriter writer = ExcelUtil.getWriter(true);
-        writer.addHeaderAlias("序号", "no");
-        writer.addHeaderAlias("任务名称", "taskName");
-        writer.addHeaderAlias("开始时间", "planStartTime");
-        writer.addHeaderAlias("结束时间", "planEndTime");
-        writer.addHeaderAlias("状态", "statusText");
-        writer.addHeaderAlias("调阅机构", "orgName");
-        writer.addHeaderAlias("调阅角色", "roleName");
-        writer.addHeaderAlias("调阅开始时间", "startTime");
-        writer.addHeaderAlias("调阅结束时间", "endTime");
-        writer.addHeaderAlias("调阅人", "retrievalUserName");
-        writer.addHeaderAlias("异常数", "exceptionCount");
-        //只保留别名的数据
-        writer.setOnlyAlias(true);
-        // 默认配置
-        writer.write(list, true);
-        // 设置content—type
-        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset:utf-8");
-        // 设置标题
+        if(list.size()>10000){
+            throw new RuntimeException("导出数据量过大(单次导出限量10000条数据),请填写条件分批导出");
+        }
+        for(int i=0;i<list.size();i++){
+            CoreMonitoringRetrievalTaskExcelVo vo = list.get(i);
+            vo.setStatusText(listDict.stream().filter(d -> d.getDictValue().equals(vo.getStatus())).findFirst().orElse(new SysDictData()).getDictLabel());
+            vo.setOrderNum(i+1);
+            vo.setCycleText(listDicta.stream().filter(d -> d.getDictValue().equals(vo.getStatus())).findFirst().orElse(new SysDictData()).getDictLabel());
+        }
+        response.setContentType("application/vnd.ms-excel");
+        response.setCharacterEncoding("utf-8");
         String fileName = URLEncoder.encode("【" + sysOrg.getName() + "】-监控调阅任务记录" + DateHelper.getDateString(new Date()), "UTF-8");
-        //Content-disposition是MIME协议的扩展,MIME协议指示MIME用户代理如何显示附加的文件。
-        response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".et");
-        ServletOutputStream outputStream = response.getOutputStream();
-        //将Writer刷新到OutPut
-        writer.flush(outputStream, true);
-        outputStream.close();
-        writer.close();
+        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+        // 调用EasyExcel的导出方法
+        EasyExcel.write(response.getOutputStream(), CoreMonitoringRetrievalTaskExcelVo.class).sheet("Sheet1").doWrite(list);
+
     }
 
     @Override

+ 21 - 11
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/SafetyCheckRuleItemServiceImpl.java

@@ -6,6 +6,8 @@ import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.domain.R;
 import com.xunmei.common.core.utils.IDHelper;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.core.resumption.domain.AppRule;
@@ -38,6 +40,7 @@ import com.xunmei.core.safetyCheck.vo.ruleItem.SafetyCheckRulePointSelectVo;
 import com.xunmei.system.api.Eto.OrgListByTypesConditionEto;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
+import com.xunmei.system.api.vo.SysOrgVO;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -201,36 +204,43 @@ public class SafetyCheckRuleItemServiceImpl
     @Override
     public List<RuleTreeItem> getRuleTree(Long orgId) {
         List<RuleTreeItem> tree = new ArrayList<>();
-        List<SysOrg> orgs = remoteOrgService
-                .listByTypes(OrgListByTypesConditionEto.builder().orgId(orgId).orgTypes(Arrays.asList("1", "2", "3")).build())
-                .getData();
+        R<List<SysOrgVO>> r = remoteOrgService.hangsheWholePathTree(orgId, SecurityConstants.INNER);
+        if (ObjectUtil.isNull(r) || ObjectUtil.isNull(r.getData())) {
+            return tree;
+        }
+
+        List<SysOrgVO> orgs = r.getData();
         if (ObjectUtil.isEmpty(orgs)) {
             return tree;
         }
-        Map<Long, SysOrg> orgMap = orgs.stream().collect(Collectors.toMap(o -> o.getId(), o -> o));
-        List<SysOrg> tops = orgs.stream().filter(o -> !orgMap.containsKey(o.getParentId())).collect(Collectors.toList());
+
+        Map<Long, SysOrgVO> orgMap = orgs.stream().collect(Collectors.toMap(o -> o.getId(), o -> o));
+        if (!orgMap.containsKey(orgId)) {
+            return tree;
+        }
+
+        List<SysOrgVO> tops = orgs.stream().filter(o -> !orgMap.containsKey(o.getTreeShowParentId())).collect(Collectors.toList());
         if (CollectionUtil.isEmpty(tops)) {
             return tree;
         }
-        List<Long> orgIds = orgs.stream().map(o -> o.getId()).collect(Collectors.toList());
-        List<SafetyCheckRule> rules = safetyCheckRuleMapper.selectList(new LambdaQueryWrapper<SafetyCheckRule>().in(SafetyCheckRule::getOrgId, orgIds));
+        List<SafetyCheckRule> rules = safetyCheckRuleMapper.selectList(new LambdaQueryWrapper<SafetyCheckRule>().in(SafetyCheckRule::getOrgId, orgMap.keySet()));
 
         tree = tops.stream().map(o -> generateTree(o, orgs, rules)).collect(Collectors.toList());
 
         return tree;
     }
 
-    private RuleTreeItem generateTree(SysOrg parent, List<SysOrg> allOrg, List<SafetyCheckRule> allRule) {
+    private RuleTreeItem generateTree(SysOrgVO parent, List<SysOrgVO> allOrg, List<SafetyCheckRule> allRule) {
         RuleTreeItem item = RuleTreeItem.builder().isRule(0).id(parent.getId()).label(parent.getName()).children(new ArrayList<>()).build();
         List<RuleTreeItem> ruleItems = allRule.stream().filter(r -> ObjectUtil.equal(r.getOrgId(), parent.getId()))
                 .map(o -> RuleTreeItem.builder().isRule(1).id(o.getId()).label(o.getName()).orgType(o.getOrgType()).build())
                 .collect(Collectors.toList());
         item.getChildren().addAll(ruleItems);
 
-        List<SysOrg> children = allOrg.stream()
-                .filter(o -> ObjectUtil.equal(o.getParentId(), parent.getId()))
+        List<SysOrgVO> children = allOrg.stream()
+                .filter(o -> ObjectUtil.equal(o.getTreeShowParentId(), parent.getId()))
                 .collect(Collectors.toList());
-        for (SysOrg child : children) {
+        for (SysOrgVO child : children) {
             item.getChildren().add(generateTree(child, allOrg, allRule));
         }
 

+ 30 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/retrieval/CoreMonitoringRetrievalTaskMapper.xml

@@ -161,6 +161,36 @@
                  left join sys_user c on a.retrieval_user = c.id
         where a.id = #{taskId}
     </select>
+    <select id="selectAllList"
+            resultType="com.xunmei.common.core.domain.retrieval.vo.CoreMonitoringRetrievalTaskExcelVo">
+        select a.*,b.role_name as roleName,c.name as retrievalUserName from core_monitoring_retrieval_task a left join
+        sys_role b on a.role_id = b.id left join sys_user c on a.retrieval_user = c.id
+        where is_deleted = 0
+        <if test="request.orgId != null ">
+            and a.org_id = #{request.orgId}
+        </if>
+        <if test="request.orgPath != null  and request.orgPath != ''">
+            and a.org_path like concat( #{request.orgPath}, '%')
+        </if>
+        <if test="request.taskName != null  and request.taskName != ''">
+            and a.task_name like concat('%', #{request.taskName}, '%')
+        </if>
+        <if test="request.cycle != null ">
+            and a.cycle = #{request.cycle}
+        </if>
+        <if test="request.dateRange != null and request.dateRange.length>0">
+            and a.ymd_date >= #{request.dateRange[0]}
+            and #{request.dateRange[1]}>=a.ymd_date
+        </if>
+        <if test="request.status != null ">
+            and a.status = #{request.status}
+        </if>
+        <if test="request.roleId != null ">
+            and a.role_id = #{request.roleId}
+        </if>
+        order by a.ymd_date desc
+
+    </select>
 
     <insert id="insertCoreMonitoringRetrievalTask"
             parameterType="com.xunmei.common.core.domain.retrieval.domain.CoreMonitoringRetrievalTask">

+ 10 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysDeptController.java

@@ -17,6 +17,7 @@ import com.xunmei.system.api.Eto.OrgListByTypesConditionEto;
 import com.xunmei.system.api.domain.SysDept;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.domain.SysUser;
+import com.xunmei.system.api.vo.SysOrgVO;
 import com.xunmei.system.service.ISysDeptService;
 import com.xunmei.system.service.ISysOrgService;
 import com.xunmei.system.service.ISysUserService;
@@ -147,6 +148,15 @@ public class SysDeptController extends BaseController {
     }
 
     /**
+     * 获取缓存的行社及行社上级机构
+     */
+    @PostMapping("/deptTree/hangshewhole")
+    @InnerAuth
+    public R<List<SysOrgVO>> hangsheWholePathTree(@RequestBody Long orgId) {
+        return R.ok(deptService.hangsheWholePathTree(orgId));
+    }
+
+    /**
      * @param dept
      * @return 获取部门树(全量信息)
      */

+ 14 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysDeptService.java

@@ -38,6 +38,20 @@ public interface ISysDeptService extends IService<SysDept> {
     List<SysOrgVO> selectHangsheTreeList();
 
     /**
+     * 获取缓存的行社及行社上级机构
+     * @param path
+     * @return
+     */
+    List<SysOrgVO> getHangsheTreeCache(String path);
+
+    /**
+     * 获取指定机构树,包含到顶级节点的路径及下级所有机构
+     * @param orgId
+     * @return
+     */
+    List<SysOrgVO> hangsheWholePathTree(Long orgId);
+
+    /**
      * 部门管理
      *
      * @param dept

+ 60 - 27
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysDeptServiceImpl.java

@@ -113,18 +113,9 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
     @Override
     public List<SysOrgVO> selectDeptTreeList() {
         Long s = System.currentTimeMillis();
-        Long userId = SecurityUtils.getUserId();
-        SysOrg sysOrg = orgMapper.selectSysOrgByUserId(userId);
-        if (ObjectUtil.isNull(sysOrg)) {
-            throw new ServiceException("当前用户没有部门信息");
-        }
-        List<SysOrgVO> cacheList = null;
-        Boolean isOk = RedisUtils.hasKey(CacheConstants.ORG_CACHE_LIST_KEY);
-        if (!isOk) {
-            cacheList = orgService.loadingOrgCache();
-        } else {
-            cacheList = RedisUtils.getCacheList(CacheConstants.ORG_CACHE_LIST_KEY);
-        }
+        SysOrg sysOrg= getLoginUserOrg();
+        List<SysOrgVO> cacheList = getOrgCache();
+
         List<SysOrgVO> orgs = new ArrayList<>();
         for (SysOrgVO org : cacheList) {
             String path = org.getPath();
@@ -141,23 +132,24 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
         return generateTree(orgs, sysOrg);
     }
 
+    @Override
     public List<SysOrgVO> selectHangsheTreeList() {
-        Long userId = SecurityUtils.getUserId();
-        SysOrg sysOrg = orgMapper.selectSysOrgByUserId(userId);
-        if (ObjectUtil.isNull(sysOrg)) {
-            throw new ServiceException("当前用户没有部门信息");
-        }
+        SysOrg sysOrg= getLoginUserOrg();
+        List<SysOrgVO> hangshelist = getHangsheTreeCache(sysOrg.getPath());
 
-        List<SysOrgVO> cacheList = null;
-        Boolean isOk = RedisUtils.hasKey(CacheConstants.ORG_CACHE_LIST_KEY);
-        if (!isOk) {
-            cacheList = orgService.loadingOrgCache();
-        } else {
-            cacheList = RedisUtils.getCacheList(CacheConstants.ORG_CACHE_LIST_KEY);
-        }
+        return generateTree(hangshelist, sysOrg);
+    }
 
+    /**
+     * 获取缓存的行社及行社上级机构
+     * @param path
+     * @return
+     */
+    @Override
+    public List<SysOrgVO> getHangsheTreeCache(String path){
+        List<SysOrgVO> cacheList = getOrgCache();
         List<SysOrgVO> hangshelist = cacheList.stream().filter(c -> ObjectUtil.equal(c.getType(), 3)
-                        && ObjectUtil.isNotEmpty(c.getPath()) && c.getPath().startsWith(sysOrg.getPath()))
+                        && ObjectUtil.isNotEmpty(c.getPath()) && c.getPath().startsWith(path))
                 .collect(Collectors.toList());
         Set<Long> hangsheSet=hangshelist.stream().map(o->o.getId()).collect(Collectors.toSet());
         Set<Long> parentIds = new HashSet<>();
@@ -171,13 +163,54 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
                     });
         });
         hangshelist.addAll(cacheList.stream()
-                .filter(o -> parentIds.contains(o.getId()) && ObjectUtil.isNotEmpty(o.getPath()) && o.getPath().startsWith(sysOrg.getPath()))
+                .filter(o -> parentIds.contains(o.getId()) && ObjectUtil.isNotEmpty(o.getPath()) && o.getPath().startsWith(path))
                 .collect(Collectors.toList()));
 
-        return generateTree(hangshelist, sysOrg);
+        return  hangshelist;
+    }
+
+    /**
+     * 获取指定机构树,包含到顶级节点的路径及下级所有机构。不组装树结构
+     * @param orgId
+     * @return
+     */
+    @Override
+    public List<SysOrgVO> hangsheWholePathTree(Long orgId){
+        List<SysOrgVO> orgs= getHangsheTreeCache("");
+        Map<Long, SysOrgVO> orgMap = orgs.stream().collect(Collectors.toMap(o -> o.getId(), o -> o));
+        if (!orgMap.containsKey(orgId)) {
+            return new ArrayList<>();
+        }
+
+        SysOrgVO self = orgMap.get(orgId);
+        List<SysOrgVO> orgVOS = orgs.stream().filter(o -> o.getTreeShowPath().startsWith(self.getTreeShowPath()))
+                .collect(Collectors.toList());
+        List<Long> parentIds = Arrays.stream(self.getTreeShowPath().split("-")).map(o -> Long.parseLong(o)).collect(Collectors.toList());
+        parentIds = parentIds.stream().limit(parentIds.size() - 1).collect(Collectors.toList());
+        orgVOS.addAll(parentIds.stream().map(id->orgMap.get(id)).collect(Collectors.toList()));
+
+        return orgVOS;
+    }
+    private SysOrg getLoginUserOrg(){
+        Long userId = SecurityUtils.getUserId();
+        SysOrg sysOrg = orgMapper.selectSysOrgByUserId(userId);
+        if (ObjectUtil.isNull(sysOrg)) {
+            throw new ServiceException("当前用户没有部门信息");
+        }
+        return  sysOrg;
     }
 
+    private List<SysOrgVO> getOrgCache(){
+        List<SysOrgVO> cacheList = null;
+        Boolean isOk = RedisUtils.hasKey(CacheConstants.ORG_CACHE_LIST_KEY);
+        if (!isOk) {
+            cacheList = orgService.loadingOrgCache();
+        } else {
+            cacheList = RedisUtils.getCacheList(CacheConstants.ORG_CACHE_LIST_KEY);
+        }
 
+        return  cacheList;
+    }
 
     private List<SysOrgVO> generateTree(List<SysOrgVO> orgs, SysOrg sysOrg) {
         Long parentId = Constants.TOP_ORG_PARENT_ID;

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

@@ -279,6 +279,8 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
         return sysOrgVOS;
     }
 
+
+
     @Override
     public void clearOrgCache() {
         RedisUtils.deleteObject(CacheConstants.ORG_CACHE_LIST_KEY);