Ver Fonte

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

ouyang há 2 anos atrás
pai
commit
7b778a4005
36 ficheiros alterados com 694 adições e 258 exclusões
  1. 3 0
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteRoleService.java
  2. 2 0
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/domain/SysUser.java
  3. 6 0
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteRoleFallbackFactory.java
  4. 2 0
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/vo/SysOrgVO.java
  5. 1 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/constant/ErrorMsgConstants.java
  6. 1 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/drill/vo/CoreDrillTaskReportVo.java
  7. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/access/service/impl/TMonitoringRetrievalPlanServiceImpl.java
  8. 2 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/mapper/CoreDrillPlanMapper.java
  9. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/mapper/CoreDrillTaskMapper.java
  10. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillDictionaryServiceImpl.java
  11. 19 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillPlanServiceImpl.java
  12. 21 10
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillTaskServiceImpl.java
  13. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/controller/CoreEduTrainingTaskController.java
  14. 1 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/mapper/CoreEduTrainingPlanMapper.java
  15. 15 2
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingPlanServiceImpl.java
  16. 17 2
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingTaskServiceImpl.java
  17. 3 10
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/controller/ProtectionController.java
  18. 61 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/controller/ProtectionStatusController.java
  19. 4 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/domain/Protection.java
  20. 3 3
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/AppRuleItemServiceImpl.java
  21. 3 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/vo/protection/ProtectionPageVo.java
  22. 1 0
      soc-modules/soc-modules-core/src/main/resources/mapper/device/ProtectionMapper.xml
  23. 7 0
      soc-modules/soc-modules-core/src/main/resources/mapper/drill/CoreDrillPlanMapper.xml
  24. 12 5
      soc-modules/soc-modules-core/src/main/resources/mapper/drill/CoreDrillTaskMapper.xml
  25. 7 0
      soc-modules/soc-modules-core/src/main/resources/mapper/edu/CoreEduTrainingPlanMapper.xml
  26. 2 0
      soc-modules/soc-modules-sync/src/main/java/com/xunmei/sync/domain/FjnxOrg.java
  27. 154 36
      soc-modules/soc-modules-sync/src/main/java/com/xunmei/sync/service/impl/FJNXSyncServiceImpl.java
  28. 2 2
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysDeptController.java
  29. 11 2
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysRoleController.java
  30. 5 1
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/mapper/SysRoleMapper.java
  31. 7 1
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysDeptService.java
  32. 4 1
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysRoleService.java
  33. 50 13
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysDeptServiceImpl.java
  34. 5 1
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysOrgServiceImpl.java
  35. 10 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysRoleServiceImpl.java
  36. 249 164
      soc-modules/soc-modules-system/src/main/resources/mapper/system/SysRoleMapper.xml

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

@@ -6,6 +6,7 @@ import com.xunmei.common.core.domain.IdName;
 import com.xunmei.common.core.vo.IdNameVo;
 import com.xunmei.system.api.Eto.RoleConditionEto;
 import com.xunmei.system.api.domain.SysRole;
+import com.xunmei.system.api.domain.SysUser;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -28,4 +29,6 @@ public interface RemoteRoleService {
     @GetMapping("/role/getNames")
     List<IdNameVo> getNames(RoleConditionEto condition);
 
+    @GetMapping("/role/selectUserByRoleNameAndOrgId")
+    List<SysUser> selectUserByRoleNameAndOrgId(@RequestParam(value = "roleName") String roleName,@RequestParam(value = "orgId")  Long orgId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 }

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

@@ -46,6 +46,7 @@ public class SysUser extends BaseEntity {
      * 部门
      */
     @ApiModelProperty(value = "部门")
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long deptId;
 
     /**
@@ -75,6 +76,7 @@ public class SysUser extends BaseEntity {
     /**
      * 机构
      */
+    @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "机构")
     private Long orgId;
 

+ 6 - 0
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteRoleFallbackFactory.java

@@ -6,6 +6,7 @@ import com.xunmei.common.core.vo.IdNameVo;
 import com.xunmei.system.api.Eto.RoleConditionEto;
 import com.xunmei.system.api.RemoteRoleService;
 import com.xunmei.system.api.domain.SysRole;
+import com.xunmei.system.api.domain.SysUser;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.cloud.openfeign.FallbackFactory;
@@ -37,6 +38,11 @@ public class RemoteRoleFallbackFactory implements FallbackFactory<RemoteRoleServ
                 return null;
             }
 
+            @Override
+            public List<SysUser> selectUserByRoleNameAndOrgId(String roleName, Long orgId, String inner) {
+                return null;
+            }
         };
+
     }
 }

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

@@ -22,10 +22,12 @@ public class SysOrgVO {
     private Long id;
     private String name;
     private String path;
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long parentId;
     private Integer type;
     private String shortName;
     private String treeShowPath;
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long treeShowParentId;
     private List<SysOrgVO> children = new ArrayList<SysOrgVO>();
 

+ 1 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/constant/ErrorMsgConstants.java

@@ -14,4 +14,5 @@ public class ErrorMsgConstants {
     public static final String QUERY_STATICS_SAVE_PATH_ERROR = "获取静态存储路径失败!";
 
     public static final String CUR_USER_ORT_TYPE_ERROR = "当前用户所在机构类型无法确认!";
+    public static final String QUERY_USER_DATA_ERROR = "获取用户信息失败!";
 }

+ 1 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/drill/vo/CoreDrillTaskReportVo.java

@@ -17,6 +17,7 @@ public class CoreDrillTaskReportVo {
 
     @ApiModelProperty(value = "机构名称")
     private String orgName;
+    private String orgPath;
 
 
     @ApiModelProperty(value = "应培训数量")

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/access/service/impl/TMonitoringRetrievalPlanServiceImpl.java

@@ -86,7 +86,7 @@ public class TMonitoringRetrievalPlanServiceImpl extends ServiceImpl<TMonitoring
         //下穿
         List<SysOrg> data = remoteOrgService.selectSysOrgByParentId(MINUS_ONE.longValue(), SecurityConstants.INNER);
         if (null == tMonitoringRetrievalPlan.getOrgId()) {
-            tMonitoringRetrievalPlan.setOrgId(data.get(0).getId());
+            tMonitoringRetrievalPlan.setOrgId(SecurityUtils.getLoginUser().getOrgId());
         }
         Boolean checkSub = tMonitoringRetrievalPlan.getCheckSub();
         if (Boolean.TRUE.equals(checkSub)) {

+ 2 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/mapper/CoreDrillPlanMapper.java

@@ -76,5 +76,7 @@ public interface CoreDrillPlanMapper extends BaseMapper<CoreDrillPlan> {
 
     List<Long> selectIdByParentId(@Param("planId") Long planId);
 
+    List<Long> selectAllIdByParentId(@Param("planId") Long planId);
+
     List<CoreDrillPlanRoleVo> selectPlanRole(@Param("orgId") Long orgId);
 }

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/mapper/CoreDrillTaskMapper.java

@@ -27,7 +27,7 @@ public interface CoreDrillTaskMapper extends BaseMapper<CoreDrillTask> {
 
     CoreDrillTaskDetailVo selectDrillTaskDetail(@Param("id") Long id);
 
-    List<CoreDrillTaskReportVo> selectReport(@Param("request") CoreDrillTaskReportDto request);
+    List<CoreDrillTaskReportVo> selectReport(@Param("request") CoreDrillTaskReportDto request, @Param("planId") Long planId, @Param("planIdList") List<Long> planIdList);
 
     Integer checkHasTask(@Param("planId") Long planId);
 

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

@@ -86,7 +86,7 @@ public class CoreDrillDictionaryServiceImpl extends ServiceImpl<CoreDrillDiction
         BeanUtils.copyProperties(request, dictionary);
         final List<SysDictData> drillTypeDictList = DictUtils.getDictCache(DictConstants.CORE_DRILL_TYPE);
         if (null != drillTypeDictList && ObjectUtil.isNotEmpty(drillTypeDictList)) {
-            drillTypeDictList.stream().filter(dict -> ObjectUtil.equal(dict.getDictValue(), request.getDrillType())).findFirst().ifPresent(dict -> dictionary.setDrillTypeName(dict.getDictValue()));
+            drillTypeDictList.stream().filter(dict -> ObjectUtil.equal(dict.getDictValue(), request.getDrillType())).findFirst().ifPresent(dict -> dictionary.setDrillTypeName(dict.getDictLabel()));
         }
         dictionary.setCreateBy(SecurityUtils.getUserId().toString());
         dictionary.setUpdateBy(SecurityUtils.getUserId().toString());

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

@@ -29,6 +29,7 @@ import com.xunmei.core.drill.service.ICoreDrillTaskService;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.function.RemoteCallHandlerExecutor;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -52,6 +53,7 @@ import org.springframework.transaction.support.TransactionSynchronizationManager
  * @author xunmei
  * @date 2023-09-08
  */
+@Slf4j
 @Service
 public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, CoreDrillPlan> implements ICoreDrillPlanService {
     @Autowired
@@ -256,7 +258,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
         }
         Long planId = plan.getId();
         //删除原有数据, 然后重新生成计划,任务
-        List<Long> planIdList = coreDrillPlanMapper.selectIdByParentId(planId);
+        List<Long> planIdList = coreDrillPlanMapper.selectAllIdByParentId(planId);
         if (ObjectUtil.isNotEmpty(planIdList)) {
             coreDrillPlanMapper.deleteBatchIds(planIdList);
             coreDrillPlanToExecOrgMapper.delete(new LambdaQueryWrapper<CoreDrillPlanToExecOrg>().in(CoreDrillPlanToExecOrg::getPlanId, planIdList));
@@ -271,6 +273,12 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
         }
         List<CoreDrillPlan> planList = buildPlanData(plan, drillPlanToRoleList);
 
+        if (plan.getPlanStatus()==1){
+            log.info("计划已被修改为禁用,不再生成任务!");
+            return;
+        }
+
+
         for (CoreDrillPlan drillPlan : planList) {
             final CoreDrillPlanDataVo dataVo = getCoreDrillPlanDataVo(drillPlan.getId());
             CompletableFuture.runAsync(() -> {
@@ -293,6 +301,12 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
             //TODO 考虑是否同步修改已生成的任务的名称
             return;
         }
+
+        if (plan.getPlanStatus()==1){
+            log.info("计划已被修改为禁用,不再生成任务!");
+            return;
+        }
+
         //此为情况一,计划没有生成任务或者生成了任务但未执行
         final CoreDrillPlanDataVo dataVo = getCoreDrillPlanDataVo(plan.getId());
         if (ObjectUtil.equal(1, plan.getBuildTaskNow()) && ObjectUtil.equal(0, plan.getPlanStatus())) {
@@ -322,6 +336,10 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
         if (standardPlanHasDone != null) {
             throw new RuntimeException("该计划下存在任务已执行的情况,无法修改!");
         }
+        //计划状态
+        if (ObjectUtil.notEqual(request.getPlanStatus(), plan.getPlanStatus())) {
+            flag = false;
+        }
         //计划周期
         if (ObjectUtil.notEqual(request.getPlanCycle(), plan.getPlanCycle())) {
             flag = false;

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

@@ -23,6 +23,7 @@ import com.xunmei.common.core.domain.drill.vo.CoreDrillPlanDataVo;
 import com.xunmei.common.core.domain.drill.vo.CoreDrillTaskDetailVo;
 import com.xunmei.common.core.domain.drill.vo.CoreDrillTaskPageVo;
 import com.xunmei.common.core.domain.drill.vo.CoreDrillTaskReportVo;
+import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingTaskReportVo;
 import com.xunmei.common.core.enums.ExportPdfType;
 import com.xunmei.common.core.enums.drill.DrillDoStatus;
 import com.xunmei.common.core.enums.drill.DrillType;
@@ -344,6 +345,16 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
 
     @Override
     public List<CoreDrillTaskReportVo> selectCoreDrillTaskReport(CoreDrillTaskReportDto request) {
+        CoreDrillPlan plan = coreDrillPlanMapper.selectById(request.getPlanId());
+        if (ObjectUtil.isNull(plan)) {
+            throw new SystemException("未获取到该计划信息");
+        }
+        List<Long> planIdList = new ArrayList<>();
+        Long planId = request.getPlanId();
+        if (ObjectUtil.equal(1, plan.getStandard()) && ObjectUtil.equal(1, plan.getIssue())) {
+            planIdList = coreDrillPlanMapper.selectIdByParentId(plan.getId());
+            planId = null;
+        }
         request.setStartDate(DateUtil.beginOfMonth(request.getDate()));
         request.setEndDate(DateUtil.endOfMonth(request.getDate()));
         Long orgId = request.getOrgId();
@@ -353,21 +364,21 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
             return new ArrayList<>();
         }
         List<CoreDrillTaskReportVo> result = new ArrayList<>();
-        List<CoreDrillTaskReportVo> list = coreDrillTaskMapper.selectReport(request);
+        List<CoreDrillTaskReportVo> list = coreDrillTaskMapper.selectReport(request, planId, planIdList);
         for (SysOrg org : sysOrgList) {
-            Optional<CoreDrillTaskReportVo> optional = list.stream().filter(vo -> ObjectUtil.equal(vo.getOrgId(), org.getId())).findFirst();
-            CoreDrillTaskReportVo reportVo;
-            if (!optional.isPresent()) {
-                reportVo = new CoreDrillTaskReportVo();
-                reportVo.setPlanId(request.getPlanId());
-                reportVo.setOrgId(org.getId());
-                reportVo.setOrgName(org.getName());
+            List<CoreDrillTaskReportVo> childrenOrgData = list.stream().filter(vo -> vo.getOrgPath().startsWith(org.getPath())).collect(Collectors.toList());
+            CoreDrillTaskReportVo reportVo=new CoreDrillTaskReportVo();
+            reportVo.setOrgId(org.getId());
+            reportVo.setOrgName(org.getName());
+            if (ObjectUtil.isEmpty(childrenOrgData)) {;
                 reportVo.setShouldFinish(0);
                 reportVo.setFinish(0);
                 reportVo.setFinishRate("0%");
             } else {
-                reportVo = optional.get();
-                reportVo.setFinishRate(calculatePercent(reportVo.getShouldFinish(), reportVo.getFinish()));
+                childrenOrgData.stream().map(CoreDrillTaskReportVo::getShouldFinish).reduce(Integer::sum).ifPresent(reportVo::setShouldFinish);
+                childrenOrgData.stream().map(CoreDrillTaskReportVo::getFinish).reduce(Integer::sum).ifPresent(reportVo::setFinish);
+
+                reportVo.setFinishRate(calculatePercent(reportVo.getFinish(), reportVo.getShouldFinish()));
             }
             result.add(reportVo);
         }

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/controller/CoreEduTrainingTaskController.java

@@ -90,7 +90,7 @@ public class CoreEduTrainingTaskController extends BaseController {
     }
 
     @ApiOperation(value = "教育培训签名")
-    @RequiresPermissions("core:eduTask:sign")
+    @RequiresPermissions("core:eduTask:edit")
     @PostMapping("sign")
     public AjaxResult sign(@RequestBody @Validated CoreEduTrainingTaskSignDto request) {
         return success(coreEduTrainingTaskService.sign(request));

+ 1 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/mapper/CoreEduTrainingPlanMapper.java

@@ -78,4 +78,5 @@ public interface CoreEduTrainingPlanMapper extends BaseMapper<CoreEduTrainingPla
     List<CoreEduTrainingPlanPageVo> selectChildrenPlan(@Param("request") CoreEduTrainingPlanPageDto request);
 
     List<Long> selectIdByParentId(@Param("planId") Long planId);
+    List<Long> selectAllIdByParentId(@Param("planId") Long planId);
 }

+ 15 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingPlanServiceImpl.java

@@ -238,7 +238,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         //此处判断能否修改,如果可以 需要删除任务,且还需要判断是否需要生成任务
         Boolean can = checkCanUpdate(request, plan);
         if (!can) {
-            throw new RuntimeException("当前任务已生成且存在已执行情况,无法修改培训机构类型,具体培训机构,培训角色,培训周期等信息!");
+            throw new RuntimeException("当前任务已生成且存在已执行情况,无法修改培训机构类型,具体培训机构,培训角色,培训周期,状态等信息!");
         }
         //可以修改计划
         BeanUtils.copyProperties(request, plan);
@@ -269,7 +269,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         }
         Long planId = plan.getId();
         //删除原有数据, 然后重新生成计划,任务
-        List<Long> planIdList = coreEduTrainingPlanMapper.selectIdByParentId(planId);
+        List<Long> planIdList = coreEduTrainingPlanMapper.selectAllIdByParentId(planId);
         if (ObjectUtil.isNotEmpty(planIdList)) {
             coreEduTrainingPlanMapper.deleteBatchIds(planIdList);
             coreEduTrainingPlanToExecOrgMapper.delete(new LambdaQueryWrapper<CoreEduTrainingPlanToExecOrg>().in(CoreEduTrainingPlanToExecOrg::getPlanId, planIdList));
@@ -284,6 +284,11 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         }
         List<CoreEduTrainingPlan> planList = buildPlanData(plan, trainingPlanToRoleList);
 
+        if (plan.getPlanStatus()==1){
+            log.info("计划已被修改为禁用,不再生成任务!");
+            return;
+        }
+
         for (CoreEduTrainingPlan trainingPlan : planList) {
             CoreEduTrainingPlanDataVo dataVo = getCoreEduTrainingPlanDataVo(trainingPlan.getId());
             CompletableFuture.runAsync(() -> {
@@ -306,6 +311,10 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
             //TODO 考虑是否同步修改已生成的任务的名称
             return;
         }
+        if (plan.getPlanStatus()==1){
+            log.info("计划已被修改为禁用,不再生成任务!");
+            return;
+        }
         //此为情况一,计划没有生成任务或者生成了任务但未执行
         final CoreEduTrainingPlanDataVo dataVo = getCoreEduTrainingPlanDataVo(plan.getId());
         if (ObjectUtil.equal(1, plan.getBuildTaskNow()) && ObjectUtil.equal(0, plan.getPlanStatus())) {
@@ -334,6 +343,10 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         if (standardPlanHasDone != null) {
             throw new RuntimeException("该计划下存在任务已执行的情况,无法修改!");
         }
+        //计划状态
+        if (ObjectUtil.notEqual(request.getPlanStatus(), plan.getPlanStatus())) {
+            flag = false;
+        }
         //计划周期
         if (ObjectUtil.notEqual(request.getPlanCycle(), plan.getPlanCycle())) {
             flag = false;

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

@@ -40,6 +40,7 @@ import com.xunmei.core.edu.service.ICoreEduTrainingTaskToRoleService;
 import com.xunmei.core.edu.service.ICoreEduTrainingTaskToUserService;
 import com.xunmei.system.api.RemoteFileService;
 import com.xunmei.system.api.RemoteOrgService;
+import com.xunmei.system.api.RemoteRoleService;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.domain.SysUser;
 import com.xunmei.system.api.function.RemoteCallHandlerExecutor;
@@ -74,6 +75,8 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
     @Autowired
     private RemoteFileService fileService;
     @Autowired
+    private RemoteRoleService roleService;
+    @Autowired
     private ICoreEduTrainingTaskToRoleService coreEduTrainingTaskToRoleService;
     @Autowired
     private CoreEduTrainingTaskToRoleMapper taskToRoleMapper;
@@ -191,6 +194,7 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
      * @return 结果
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public int insertCoreEduTrainingTask(CoreEduTrainingTask coreEduTrainingTask) {
         coreEduTrainingTask.setCreateTime(DateUtils.getNowDate());
         return coreEduTrainingTaskMapper.insert(coreEduTrainingTask);
@@ -203,6 +207,7 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
      * @return 结果
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public int updateCoreEduTrainingTask(CoreEduTrainingTaskEditDto request) {
         CoreEduTrainingTask coreEduTrainingTask = coreEduTrainingTaskMapper.selectById(request.getId());
         taskToUserMapper.deleteByMap(MapUtil.of("edu_training_task_id", request.getId()));
@@ -213,8 +218,13 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         coreEduTrainingTask.setNote(request.getNote());
         coreEduTrainingTask.setRecorderId(SecurityUtils.getUserId());
         coreEduTrainingTask.setImageList(request.getImageList());
-        //主持人默认取网点负责人,具体还没落实,暂时处理成这样   TODO
-        coreEduTrainingTask.setHostId(SecurityUtils.getUserId());
+        List<SysUser> userList = RemoteCallHandlerExecutor.executeRemoteCall(() ->
+                roleService.selectUserByRoleNameAndOrgId("网点负责人", coreEduTrainingTask.getOrgId(), SecurityConstants.INNER), ErrorMsgConstants.QUERY_USER_DATA_ERROR);
+        if (ObjectUtil.isNotEmpty(userList)) {
+            coreEduTrainingTask.setHostId(userList.get(0).getId());
+        }else {
+            coreEduTrainingTask.setRecorderId(SecurityUtils.getUserId());
+        }
         List<CoreEduTrainingTaskToUser> taskUserList = request.getTaskUserList();
         if (ObjectUtil.isNotEmpty(taskUserList)) {
             checkTheSameUser(taskUserList);
@@ -254,6 +264,7 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
      * @return 结果
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public int deleteCoreEduTrainingTaskByIds(Long[] ids) {
         return coreEduTrainingTaskMapper.deleteBatchIds(Arrays.asList((ids)));
     }
@@ -265,6 +276,7 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
      * @return 结果
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public int deleteCoreEduTrainingTaskById(Long id) {
         return coreEduTrainingTaskMapper.deleteById(id);
     }
@@ -397,6 +409,7 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public Integer sign(CoreEduTrainingTaskSignDto request) {
         CoreEduTrainingTask eduTrainingTask = getById(request.getId());
         SysUser sysUser = SecurityUtils.getLoginUser().getSysUser();
@@ -436,6 +449,7 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public AjaxResult buildEduPdf(Long id) {
         CoreEduTrainingTaskDetailVo task = this.selectCoreEduTrainingTaskById(id);
         if (ObjectUtil.isNotEmpty(task.getPdfUrl())) {
@@ -528,6 +542,7 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public String buildEduTask(Integer cycle, Date date) {
         if (ObjectUtil.isNull(date)) {
             date = new Date();

+ 3 - 10
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/controller/ProtectionController.java

@@ -30,7 +30,7 @@ class ProtectionController extends BaseController {
     @ApiOperation(value = "分页")
     @GetMapping(value = "page")
 //    @WebMethodLogDesc("防区状态app")
-    @RequiresPermissions("device:protection")
+    @RequiresPermissions({"device:protection"})
     TableDataInfo page(final ProtectionPageDto request) {
         TableDataInfo data = this.protectionService.pageList(request);
         return data;
@@ -38,7 +38,7 @@ class ProtectionController extends BaseController {
 
     @ApiOperation(value = "分页")
     @GetMapping(value = "log/page")
-    @RequiresPermissions("device:protection")
+    @RequiresPermissions({"device:protection"})
     TableDataInfo LogpageList(final ProtectionLogPageDto request) {
         final TableDataInfo page = this.protectionService.history(request);
         return page;
@@ -53,7 +53,7 @@ class ProtectionController extends BaseController {
 
     @ApiOperation(value = "规范")
     @GetMapping("{id}")
-    @RequiresPermissions("device:protection:query")
+    @RequiresPermissions({"device:protection:query"})
     public AjaxResult get(@PathVariable Long id) {
         Protection r = protectionService.get(id);
         return success(r);
@@ -66,11 +66,4 @@ class ProtectionController extends BaseController {
         boolean r = protectionService.del(id);
         return success(r);
     }
-
-    @ApiOperation(value = "布撤防")
-    @PostMapping("updatestatus/{protectionId}/{status}")
-    @RequiresPermissions("device:protection:maintain")
-    public AjaxResult updateStatus(@PathVariable Long protectionId,@PathVariable String status) {
-        return success(protectionService.updateStatus(protectionId,status));
-    }
 }

+ 61 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/controller/ProtectionStatusController.java

@@ -0,0 +1,61 @@
+package com.xunmei.core.resumption.controller;
+
+import com.xunmei.common.core.web.controller.BaseController;
+import com.xunmei.common.core.web.domain.AjaxResult;
+import com.xunmei.common.core.web.page.TableDataInfo;
+import com.xunmei.common.security.annotation.RequiresPermissions;
+import com.xunmei.core.resumption.domain.Protection;
+import com.xunmei.core.resumption.dto.protection.ProtectionEditDto;
+import com.xunmei.core.resumption.dto.protection.ProtectionLogPageDto;
+import com.xunmei.core.resumption.dto.protection.ProtectionPageDto;
+import com.xunmei.core.resumption.service.IProtectionService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+/**
+ *
+ */
+@Slf4j
+@Api(description = "中台", tags = "布防")
+@RestController
+@RequestMapping("/resumption/protectionstatus/")
+class ProtectionStatusController extends BaseController {
+    @Resource
+    IProtectionService protectionService;
+
+    @ApiOperation(value = "分页")
+    @GetMapping(value = "page")
+//    @WebMethodLogDesc("防区状态app")
+    @RequiresPermissions({"device:protectionstatus"})
+    TableDataInfo page(final ProtectionPageDto request) {
+        TableDataInfo data = this.protectionService.pageList(request);
+        return data;
+    }
+
+    @ApiOperation(value = "分页")
+    @GetMapping(value = "log/page")
+    @RequiresPermissions({"device:protectionstatus"})
+    TableDataInfo LogpageList(final ProtectionLogPageDto request) {
+        final TableDataInfo page = this.protectionService.history(request);
+        return page;
+    }
+
+    @ApiOperation(value = "详情")
+    @GetMapping("{id}")
+    @RequiresPermissions({"device:protectionstatus:query"})
+    public AjaxResult get(@PathVariable Long id) {
+        Protection r = protectionService.get(id);
+        return success(r);
+    }
+
+    @ApiOperation(value = "布撤防")
+    @PostMapping("updatestatus/{protectionId}/{status}")
+    @RequiresPermissions({"device:protectionstatus:maintain",})
+    public AjaxResult updateStatus(@PathVariable Long protectionId,@PathVariable String status) {
+        return success(protectionService.updateStatus(protectionId,status));
+    }
+}

+ 4 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/domain/Protection.java

@@ -2,6 +2,8 @@ package com.xunmei.core.resumption.domain;
 
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.xunmei.common.core.web.domain.BaseEntity;
 import io.swagger.annotations.ApiModel;
 import lombok.*;
@@ -22,6 +24,7 @@ public class Protection extends BaseEntity {
      * 编号
      */
     @TableId
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long id;
 
     /**
@@ -54,6 +57,7 @@ public class Protection extends BaseEntity {
 
     private Integer allHour;
 
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long orgId;
 
     private String orgPath;

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

@@ -189,13 +189,13 @@ public class AppRuleItemServiceImpl extends ServiceImpl<AppRuleItemMapper, AppRu
     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())
+                .listByTypes(OrgListByTypesConditionEto.builder().orgId(orgId).orgTypes(Arrays.asList("1", "2", "3","11",null)).build())
                 .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());
+        List<SysOrg> tops = orgs.stream().filter(o -> !orgMap.containsKey(o.getTreeShowParentId())).collect(Collectors.toList());
         if (CollectionUtil.isEmpty(tops)) {
             return tree;
         }
@@ -215,7 +215,7 @@ public class AppRuleItemServiceImpl extends ServiceImpl<AppRuleItemMapper, AppRu
         item.getChildren().addAll(ruleItems);
 
         List<SysOrg> children = allOrg.stream()
-                .filter(o -> ObjectUtil.equal(o.getParentId(), parent.getId()))
+                .filter(o -> ObjectUtil.equal(o.getTreeShowParentId(), parent.getId()))
                 .collect(Collectors.toList());
         for (SysOrg child : children) {
             item.getChildren().add(generateTree(child, allOrg, allRule));

+ 3 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/vo/protection/ProtectionPageVo.java

@@ -23,6 +23,9 @@ public class ProtectionPageVo {
 //     */
 //    private  Integer order;
 
+    @JsonSerialize(using = ToStringSerializer.class)
+    private String orgId;
+
     @ApiModelProperty("机构名称")
     private String orgName;
 

+ 1 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/device/ProtectionMapper.xml

@@ -17,6 +17,7 @@
         select a.id,
         a.name as name,
         a.status as status,
+        a.org_id as orgId,
         a.org_name as orgName,
         a.all_hour as allHour,
         a.status_update_time as statusUpdateTime

+ 7 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/drill/CoreDrillPlanMapper.xml

@@ -605,4 +605,11 @@
                  INNER JOIN sys_role sr on r.role_id = sr.id
         where p.belong_org_id = #{orgId}
     </select>
+
+    <select id="selectAllIdByParentId" resultType="java.lang.Long">
+        select id
+        from core_drill_plan
+        where parent_id = #{planId}
+          and deleted = 0
+    </select>
 </mapper>

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

@@ -122,15 +122,22 @@
     <select id="selectReport" resultType="com.xunmei.common.core.domain.drill.vo.CoreDrillTaskReportVo">
         SELECT t.org_id AS orgId,
         t.org_name AS orgName,
+        t.org_path AS orgPath,
         ifnull(count(0),0) AS shouldFinish,
-        ifnull(SUM(t.status != 3),0) AS finish
+        ifnull(SUM(t.status = 3),0) AS finish
         from core_drill_task t inner join sys_org o on t.org_id = o.id
         <where>
-            <if test="request.orgId != null">
-                and o.parent_id=#{request.orgId}
+            <if test="request.orgPath != null">
+                and o.path like concat(#{request.orgPath}, '%')
             </if>
-            <if test="request.planId != null">
-                and t.plan_id=#{request.planId}
+            <if test="planId != null">
+                and t.plan_id=#{planId}
+            </if>
+            <if test="planIdList.size()>0">
+                and t.plan_id in
+                <foreach collection="planIdList" item="item" index="index" open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
             </if>
             <if test="request.startDate != null">
                 and t.start_date>=#{request.startDate}

+ 7 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/edu/CoreEduTrainingPlanMapper.xml

@@ -595,4 +595,11 @@
           and deleted = 0
           and plan_status = 0
     </select>
+
+    <select id="selectAllIdByParentId" resultType="java.lang.Long">
+        select id
+        from core_edu_training_plan
+        where parent_id = #{planId}
+          and deleted = 0
+    </select>
 </mapper>

+ 2 - 0
soc-modules/soc-modules-sync/src/main/java/com/xunmei/sync/domain/FjnxOrg.java

@@ -267,4 +267,6 @@ public class FjnxOrg implements Serializable {
     @ApiModelProperty(value = "业务父级编码")
     @TableField("tree_show_parent_code")
     private String treeShowParentCode;
+
+
 }

+ 154 - 36
soc-modules/soc-modules-sync/src/main/java/com/xunmei/sync/service/impl/FJNXSyncServiceImpl.java

@@ -178,7 +178,7 @@ public class FJNXSyncServiceImpl implements IFJNXSyncService {
         if (ObjectUtil.isEmpty(existOrgList)) {
             List<SysOrg> rList = FjnxOrgsConvertToSysOrgs(fjnxOrgList);
             resetParentIdAndPath(rList);
-            resetTreeParentIdAndPath(rList);
+//            resetTreeParentIdAndPath(rList);
             final R<Boolean> listR = remoteOrgService.batchSaveSyncOrg(rList, SecurityConstants.INNER);
             if (listR != null && listR.getCode() != 200) {
                 log.error("调用远程服务接口remoteOrgService.batchSaveSyncOrg 失败:{}", listR.getMsg());
@@ -217,7 +217,7 @@ public class FJNXSyncServiceImpl implements IFJNXSyncService {
         existOrgList.addAll(addList);
 
         resetParentIdAndPath(existOrgList);
-        resetTreeParentIdAndPath(existOrgList);
+//        resetTreeParentIdAndPath(existOrgList);
 
         final R<Boolean> listR = remoteOrgService.batchSaveSyncOrg(existOrgList, SecurityConstants.INNER);
         if (ObjectUtil.isNotEmpty(listR) && listR.getCode() != 200) {
@@ -267,50 +267,146 @@ public class FJNXSyncServiceImpl implements IFJNXSyncService {
 //        return;
     }
 
-    public void resetParentIdAndPath(List<SysOrg> orgList) {
-        orgList.stream().forEach(x -> {
-            x.setPath("");
+    public void resetSyncOrgParentId(List<SysOrg> orgList)
+    {
+        orgList.stream().filter(org->org.getSource()==1).forEach(org->{
+            resetOrgParentId(org,orgList);
+            resetOrgTreeShowParentId(org,orgList);
+//            if(StringUtil.isNullOrEmpty(org.getParentGuid())){
+//                org.setParentId(-1L);
+//            }
+//            else{
+//                Optional<SysOrg> parentOrgOptional = orgList.stream().filter(pOrg -> !StringUtil.isNullOrEmpty(pOrg.getGuid()) && pOrg.getGuid().equals(org.getParentGuid())).findFirst();
+//                if(parentOrgOptional.isPresent())
+//                {
+//                    org.setParentId(parentOrgOptional.get().getId());
+//                }
+//            }
         });
-        final List<SysOrg> collect = orgList.stream().filter(topOrg -> StringUtil.isNullOrEmpty(topOrg.getParentGuid()) && 0 == topOrg.getDeleted()).collect(Collectors.toList());
-        collect.forEach(org -> {
+    }
+
+    public void resetOrgParentId(SysOrg org, List<SysOrg> orgList){
+        if(StringUtil.isNullOrEmpty(org.getParentGuid())){
             org.setParentId(-1L);
-//            org.setLevel(1);
-            org.setPath(org.getId() + "-");
+        }
+        else{
+            Optional<SysOrg> parentOrgOptional = orgList.stream().filter(pOrg -> !StringUtil.isNullOrEmpty(pOrg.getGuid()) && pOrg.getGuid().equals(org.getParentGuid())).findFirst();
+            if(parentOrgOptional.isPresent())
+            {
+                org.setParentId(parentOrgOptional.get().getId());
+            }
+        }
+    }
+
+    public void resetOrgTreeShowParentId(SysOrg org, List<SysOrg> orgList){
+        if(StringUtil.isNullOrEmpty(org.getTreeParentCode())){
+            org.setTreeShowParentId(-1L);
+        }
+        else{
+            Optional<SysOrg> parentOrgOptional = orgList.stream().filter(pOrg -> !StringUtil.isNullOrEmpty(pOrg.getGuid()) && pOrg.getGuid().equals(org.getTreeParentCode())).findFirst();
+            if(parentOrgOptional.isPresent())
+            {
+                org.setTreeShowParentId(parentOrgOptional.get().getId());
+            }
+        }
+    }
+
+    public void resetAllOrgPath(List<SysOrg> orgList){
+        resetOrgPath(orgList);
+        resetOrgTreePath(orgList);
+    }
+
+    public void resetOrgPath(List<SysOrg> orgList)
+    {
+
+        final List<SysOrg> collect = orgList.stream().filter(topOrg -> ObjectUtil.isNull(topOrg.getParentId())).collect(Collectors.toList());
+        final List<SysOrg> topOrgList = orgList.stream().filter(topOrg -> ObjectUtil.equal(topOrg.getParentId(),-1L)).collect(Collectors.toList());
+        topOrgList.forEach(topOrg->{
+            topOrg.setPath(topOrg.getId() + "-");
+            resetChildOrgPath(topOrg,orgList);
         });
+    }
 
-        orgList.forEach(org -> {
+    public void resetChildOrgPath(SysOrg parentOrg,List<SysOrg> orgList)
+    {
+        List<SysOrg> childOrgList = orgList.stream().filter(childOrg ->ObjectUtil.equal(childOrg.getParentId(),parentOrg.getId())).collect(Collectors.toList());
+        if(childOrgList.size()==0) {
+            return;
+        }
+        childOrgList.stream().forEach(org->{
+            org.setPath(parentOrg.getPath() + org.getId() + "-");
+            resetChildOrgPath(org,orgList);
+        });
 
-//            if (org.getParentId() != null) {
-//                return;
-//            }
+    }
 
-            if (org.getDeleted().equals(1)) {
-                // 已删除
-                return;
-            }
+    public void resetOrgTreePath(List<SysOrg> orgList)
+    {
+        final List<SysOrg> topOrgList = orgList.stream().filter(topOrg ->ObjectUtil.equal(topOrg.getTreeShowParentId(),-1L)).collect(Collectors.toList());
+        topOrgList.forEach(topOrg->{
+            topOrg.setTreeShowPath(topOrg.getId() + "-");
+            resetChildOrgTreePath(topOrg,orgList);
+        });
+    }
 
-            if (!StringUtil.isNullOrEmpty(org.getParentGuid())) {
-                Optional<SysOrg> parentOrgOptional = orgList.stream().filter(pOrg -> !StringUtil.isNullOrEmpty(pOrg.getGuid()) && pOrg.getGuid().equals(org.getParentGuid())).findFirst();
-                if (parentOrgOptional.isPresent()) {
-                    org.setParentId(parentOrgOptional.get().getId());
-                    if (StringUtil.isNullOrEmpty(parentOrgOptional.get().getPath())) {
-                        List<SysOrg> childOrg = new ArrayList<>();
-                        childOrg.add(org);
-                        resetParentOrgPath(parentOrgOptional.get(), childOrg, orgList);
-                    } else {
-                        org.setPath(parentOrgOptional.get().getPath() + org.getId() + "-");
-                    }
-                } else {
-                    log.error("机构【{}】机构编码【{}】父级机构编码【{}】,父级机构未找到;{}", org.getName(), org.getGuid(), org.getParentGuid(), org);
-                }
-            } else {
-                org.setParentId(-1L);
-//                org.setLevel(1);
-                org.setPath(org.getId() + "-");
-            }
+    public void resetChildOrgTreePath(SysOrg parentOrg,List<SysOrg> orgList)
+    {
+        List<SysOrg> childOrgList = orgList.stream().filter(childOrg ->ObjectUtil.equal(childOrg.getTreeShowParentId(),parentOrg.getId())).collect(Collectors.toList());
+        if(childOrgList.size()==0) {
+            return;
+        }
+        childOrgList.stream().forEach(org->{
+            org.setTreeShowPath(parentOrg.getTreeShowPath() + org.getId() + "-");
+            resetChildOrgTreePath(org,orgList);
         });
     }
 
+
+
+    public void resetParentIdAndPath(List<SysOrg> orgList) {
+        resetSyncOrgParentId(orgList);
+        resetAllOrgPath(orgList);
+
+//        orgList.stream().forEach(x -> {
+//            x.setPath("");
+//        });
+//        final List<SysOrg> collect = orgList.stream().filter(topOrg -> StringUtil.isNullOrEmpty(topOrg.getParentGuid()) && 0 == topOrg.getDeleted()).collect(Collectors.toList());
+//        collect.forEach(org -> {
+//            org.setParentId(-1L);
+//            org.setPath(org.getId() + "-");
+//        });
+//
+//        orgList.forEach(org -> {
+//            if (org.getDeleted().equals(1)) {
+//                // 已删除
+//                return;
+//            }
+//
+//            if(org.getSource()==0) {
+//                return;
+//            }
+//
+//            if (!StringUtil.isNullOrEmpty(org.getParentGuid())) {
+//                Optional<SysOrg> parentOrgOptional = orgList.stream().filter(pOrg -> !StringUtil.isNullOrEmpty(pOrg.getGuid()) && pOrg.getGuid().equals(org.getParentGuid())).findFirst();
+//                if (parentOrgOptional.isPresent()) {
+//                    org.setParentId(parentOrgOptional.get().getId());
+//                    if (StringUtil.isNullOrEmpty(parentOrgOptional.get().getPath())) {
+//                        List<SysOrg> childOrg = new ArrayList<>();
+//                        childOrg.add(org);
+//                        resetParentOrgPath(parentOrgOptional.get(), childOrg, orgList);
+//                    } else {
+//                        org.setPath(parentOrgOptional.get().getPath() + org.getId() + "-");
+//                    }
+//                } else {
+//                    log.error("机构【{}】机构编码【{}】父级机构编码【{}】,父级机构未找到;{}", org.getName(), org.getGuid(), org.getParentGuid(), org);
+//                }
+//            } else {
+//                org.setParentId(-1L);
+//                org.setPath(org.getId() + "-");
+//            }
+//        });
+    }
+
     public void resetParentOrgPath(SysOrg parentOrg, List<SysOrg> childOrg, List<SysOrg> orgList) {
         Optional<SysOrg> parentOrgOptional = orgList.stream().filter(pOrg -> !StringUtil.isNullOrEmpty(pOrg.getGuid()) && pOrg.getGuid().equals(parentOrg.getParentGuid())).findFirst();
         if (parentOrgOptional.isPresent()) {
@@ -328,6 +424,24 @@ public class FJNXSyncServiceImpl implements IFJNXSyncService {
         }
     }
 
+    public void resetSystemParentOrgPath(SysOrg parentOrg, List<SysOrg> childOrg, List<SysOrg> orgList) {
+        Optional<SysOrg> parentOrgOptional = orgList.stream().filter(pOrg -> pOrg.getId().equals(parentOrg.getParentId())).findFirst();
+        if (parentOrgOptional.isPresent()) {
+            parentOrg.setParentId(parentOrgOptional.get().getId());
+            if (!StringUtil.isNullOrEmpty(parentOrgOptional.get().getPath())) {
+                retOrgPath(parentOrgOptional.get(), parentOrg);
+                retChildOrgPath(parentOrg, childOrg);
+            } else {
+
+                childOrg.add(parentOrg);
+                resetSystemParentOrgPath(parentOrgOptional.get(), childOrg, orgList);
+            }
+        } else {
+            log.error("机构【{}】机构编码【{}】父级机构编码【{}】,父级机构未找到;{}", parentOrg.getName(), parentOrg.getGuid(), parentOrg.getParentGuid(), parentOrg);
+        }
+    }
+
+
     public void retOrgPath(SysOrg parentOrg, SysOrg org) {
         org.setParentId(parentOrg.getId());
 /*        if (parentOrg.getLevel() != null) {
@@ -716,6 +830,9 @@ public class FJNXSyncServiceImpl implements IFJNXSyncService {
         final ArrayList<FjnxOrg> resultList = new ArrayList<>();
         Date syncDateTime = new Date();
         list.forEach(item -> {
+            if(StringUtil.isNullOrEmpty(item.getOrgCode())) {
+                return;
+            }
             FjnxOrg tempOrg = new FjnxOrg();
             BeanUtils.copyBeanProp(tempOrg, item);
 
@@ -730,6 +847,7 @@ public class FJNXSyncServiceImpl implements IFJNXSyncService {
                     tempOrg.setTreeShowParentCode(item.getOrgParent());
                 } else {
                     log.error("设置fjnx业务父级机构失败,机构名称:{},机构编码:{},业务父级机构编码:{}", item.getOrgName(), first.get().getOrgCode(), first.get().getBusinessParentCode());
+                    return;
                 }
             }
             resultList.add(tempOrg);

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

@@ -135,7 +135,7 @@ public class SysDeptController extends BaseController {
      */
     @GetMapping("/deptTree")
     public AjaxResult deptTree(SysOrg dept) {
-        return success(deptService.selectDeptTreeList(new ArrayList<>()));
+        return success(deptService.selectDeptTreeList());
     }
 
     /**
@@ -143,7 +143,7 @@ public class SysDeptController extends BaseController {
      */
     @GetMapping("/deptTree/hangshe")
     public AjaxResult hangsheDeptTree() {
-        return success(deptService.selectDeptTreeList(Arrays.asList(1, 2, 3)));
+        return success(deptService.selectHangsheTreeList());
     }
 
     /**

+ 11 - 2
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysRoleController.java

@@ -13,6 +13,7 @@ import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.system.api.Eto.RoleConditionEto;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.domain.SysRole;
+import com.xunmei.system.api.domain.SysUser;
 import com.xunmei.system.domain.SysUserRole;
 import com.xunmei.system.domain.vo.SysUserVO;
 import com.xunmei.system.service.ISysDeptService;
@@ -140,7 +141,11 @@ public class SysRoleController extends BaseController {
     public AjaxResult optionselect() {
         return success(roleService.selectRoleAll());
     }
-
+    @RequiresPermissions("system:role:query")
+    @GetMapping("/allRole")
+    public AjaxResult allRole() {
+        return success(roleService.allRole());
+    }
     /**
      * 查询已分配用户角色列表
      */
@@ -198,7 +203,7 @@ public class SysRoleController extends BaseController {
     public AjaxResult deptTree(@PathVariable("roleId") Long roleId) {
         AjaxResult ajax = AjaxResult.success();
         ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId));
-        ajax.put("depts", deptService.selectDeptTreeList(new ArrayList<>()));
+        ajax.put("depts", deptService.selectDeptTreeList());
         return ajax;
     }
 
@@ -230,4 +235,8 @@ public class SysRoleController extends BaseController {
         List<IdName<Long, String>> r = roleService.selectSimpleRoleAll(condition, null);
         return r.stream().map(i -> new IdNameVo(i.getId(), i.getName(), null)).collect(Collectors.toList());
     }
+    @GetMapping("/selectUserByRoleNameAndOrgId")
+    public List<SysUser> selectUserByRoleNameAndOrgId(@RequestParam(value = "roleName") String roleName,@RequestParam(value = "orgId")  Long orgId) {
+        return roleService.selectUserByRoleNameAndOrgId(roleName,orgId);
+    }
 }

+ 5 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/mapper/SysRoleMapper.java

@@ -2,7 +2,9 @@ package com.xunmei.system.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.xunmei.system.api.domain.SysRole;
+import com.xunmei.system.api.domain.SysUser;
 import com.xunmei.system.domain.SysRoleDept;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -21,7 +23,7 @@ public interface SysRoleMapper extends BaseMapper<SysRole>
      * @return 角色数据集合信息
      */
      List<SysRole> selectRoleList(SysRole role);
-
+List<SysRole>allRole();
     /**
      * 根据用户ID查询角色
      * 
@@ -108,4 +110,6 @@ String selectRoleNameByUserId(Long userId);
      * @return 结果
      */
      int deleteRoleByIds(Long[] roleIds);
+
+    List<SysUser> selectUserByRoleNameAndOrgId(@Param("roleName") String roleName, @Param("orgId") Long orgId);
 }

+ 7 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysDeptService.java

@@ -29,7 +29,13 @@ public interface ISysDeptService extends IService<SysDept> {
      * @param dept 部门信息
      * @return 部门树信息集合
      */
-    List<SysOrgVO> selectDeptTreeList(List<Integer> orgTypes);
+    List<SysOrgVO> selectDeptTreeList();
+
+    /**
+     * 返回行社树
+     * @return
+     */
+    List<SysOrgVO> selectHangsheTreeList();
 
     /**
      * 部门管理

+ 4 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysRoleService.java

@@ -5,6 +5,7 @@ import com.xunmei.common.core.domain.IdName;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.system.api.Eto.RoleConditionEto;
 import com.xunmei.system.api.domain.SysRole;
+import com.xunmei.system.api.domain.SysUser;
 import com.xunmei.system.domain.SysUserRole;
 
 import java.util.List;
@@ -47,7 +48,7 @@ public interface ISysRoleService extends IService<SysRole>
      * @return 角色列表
      */
     List<SysRole> selectRoleAll();
-
+List<SysRole>allRole();
     /**
      * 根据用户ID获取角色选择框列表
      *
@@ -186,4 +187,6 @@ String selectRoleNameByUserId(Long userId);
     List<IdName<Long, String>> selectSimpleRoleAll(RoleConditionEto conditionEto, Integer orgType);
 
     List<SysRole> getRoleByType(String type) ;
+
+    List<SysUser> selectUserByRoleNameAndOrgId(String roleName, Long orgId);
 }

+ 50 - 13
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysDeptServiceImpl.java

@@ -108,11 +108,10 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
     /**
      * 查询部门树结构信息
      *
-     * @param orgTypes 机构类型
      * @return 部门树信息集合
      */
     @Override
-    public List<SysOrgVO> selectDeptTreeList(List<Integer> orgTypes) {
+    public List<SysOrgVO> selectDeptTreeList() {
         Long s = System.currentTimeMillis();
         Long userId = SecurityUtils.getUserId();
         SysOrg sysOrg = orgMapper.selectSysOrgByUserId(userId);
@@ -129,36 +128,74 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
         List<SysOrgVO> orgs = new ArrayList<>();
         for (SysOrgVO org : cacheList) {
             String path = org.getPath();
-            if(StringUtils.isEmpty(path) || !path.startsWith(sysOrg.getPath())){
+            if (StringUtils.isEmpty(path) || !path.startsWith(sysOrg.getPath())) {
                 continue;
             }
 
-            if(CollectionUtils.isNotEmpty(orgTypes) && !orgTypes.contains(org.getType())){
-                continue;
-            }
-            if(StringUtils.isEmpty(org.getShortName()))
-            {
+            if (StringUtils.isEmpty(org.getShortName())) {
                 org.setShortName(org.getName());
             }
             orgs.add(org);
         }
+
+        return generateTree(orgs, sysOrg);
+    }
+
+    public List<SysOrgVO> selectHangsheTreeList() {
+        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);
+        }
+
+        List<SysOrgVO> hangshelist = cacheList.stream().filter(c -> ObjectUtil.equal(c.getType(), 3)
+                        && ObjectUtil.isNotEmpty(c.getPath()) && c.getPath().startsWith(sysOrg.getPath()))
+                .collect(Collectors.toList());
+        Set<Long> hangsheSet=hangshelist.stream().map(o->o.getId()).collect(Collectors.toSet());
+        Set<Long> parentIds = new HashSet<>();
+        hangshelist.forEach(o -> {
+            Arrays.stream(o.getPath().split("-")).map(p -> Long.parseLong(p))
+                    .collect(Collectors.toList())
+                    .forEach(id ->{
+                        if(!hangsheSet.contains(id)){
+                            parentIds.add(id);
+                        }
+                    });
+        });
+        hangshelist.addAll(cacheList.stream()
+                .filter(o -> parentIds.contains(o.getId()) && ObjectUtil.isNotEmpty(o.getPath()) && o.getPath().startsWith(sysOrg.getPath()))
+                .collect(Collectors.toList()));
+
+        return generateTree(hangshelist, sysOrg);
+    }
+
+
+
+    private List<SysOrgVO> generateTree(List<SysOrgVO> orgs, SysOrg sysOrg) {
         Long parentId = Constants.TOP_ORG_PARENT_ID;
         if (ObjectUtil.notEqual(Constants.TOP_ORG_PARENT_ID, sysOrg.getParentId())) {
             parentId = sysOrg.getParentId();
         }
 
         final List<Long> parentIds = orgs.stream().filter(x -> !orgs.stream().anyMatch(y -> x.getTreeShowParentId().equals(y.getParentId()))).map(SysOrgVO::getTreeShowParentId).collect(Collectors.toList());
-        if(parentIds.size()==0)
-        {
+        if (parentIds.size() == 0) {
             parentIds.add(parentId);
         }
         final Map<Long, List<SysOrgVO>> collect = orgs.stream().collect(Collectors.groupingBy(SysOrgVO::getTreeShowParentId));
-        List<SysOrgVO> result=new ArrayList<>();
-        parentIds.forEach(pId->{
+        List<SysOrgVO> result = new ArrayList<>();
+        parentIds.forEach(pId -> {
             result.addAll(handleTree(collect, pId));
         });
 
-        return result;
+        return  result;
     }
 
     /**

+ 5 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysOrgServiceImpl.java

@@ -222,7 +222,11 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
     public SysOrg selectByParentId(Long orgId) {
         LambdaQueryWrapper<SysOrg> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(SysOrg::getParentId, orgId);
-        return sysOrgMapper.selectOne(wrapper);
+        List<SysOrg> selectList = sysOrgMapper.selectList(wrapper);
+        if (selectList.size()>0){
+            return selectList.get(0);
+        }
+        return null;
     }
 
     @Override

+ 10 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysRoleServiceImpl.java

@@ -130,6 +130,11 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
         return roleMapper.selectList(new QueryWrapper<>());
     }
 
+    @Override
+    public List<SysRole> allRole() {
+        return roleMapper.allRole();
+    }
+
     /**
      * 根据用户ID获取角色选择框列表
      *
@@ -444,4 +449,9 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
         queryWrapper.eq("org_type",type);
         return baseMapper.selectList(queryWrapper);
     }
+
+    @Override
+    public List<SysUser> selectUserByRoleNameAndOrgId(String roleName, Long orgId) {
+        return roleMapper.selectUserByRoleNameAndOrgId(roleName,orgId);
+    }
 }

+ 249 - 164
soc-modules/soc-modules-system/src/main/resources/mapper/system/SysRoleMapper.xml

@@ -1,174 +1,259 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.xunmei.system.mapper.SysRoleMapper">
+    <resultMap type="com.xunmei.system.api.domain.SysRole" id="SysRoleResult">
+        <id property="id" column="id"/>
+        <result property="roleName" column="role_name"/>
+        <result property="roleKey" column="role_key"/>
+        <result property="roleSort" column="role_sort"/>
+        <result property="dataScope" column="data_scope"/>
+        <result property="menuCheckStrictly" column="menu_check_strictly"/>
+        <result property="deptCheckStrictly" column="dept_check_strictly"/>
+        <result property="status" column="status"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+    </resultMap>
 
-	<resultMap type="com.xunmei.system.api.domain.SysRole" id="SysRoleResult">
-		<id     property="id"             column="id"               />
-		<result property="roleName"           column="role_name"             />
-		<result property="roleKey"            column="role_key"              />
-		<result property="roleSort"           column="role_sort"             />
-		<result property="dataScope"          column="data_scope"            />
-		<result property="menuCheckStrictly"  column="menu_check_strictly"   />
-		<result property="deptCheckStrictly"  column="dept_check_strictly"   />
-		<result property="status"             column="status"                />
-		<result property="delFlag"            column="del_flag"              />
-		<result property="createBy"           column="create_by"             />
-		<result property="createTime"         column="create_time"           />
-		<result property="updateBy"           column="update_by"             />
-		<result property="updateTime"         column="update_time"           />
-
-	</resultMap>
-	
-	<sql id="selectRoleVo">
-	    select distinct r.id,r.org_type, r.role_name, r.role_key, r.role_sort, r.data_scope, r.menu_check_strictly, r.dept_check_strictly,
-            r.status, r.del_flag, r.create_time, r.remark 
+    <sql id="selectRoleVo">
+        select distinct r.id,
+                        r.org_type,
+                        r.role_name,
+                        r.role_key,
+                        r.role_sort,
+                        r.data_scope,
+                        r.menu_check_strictly,
+                        r.dept_check_strictly,
+                        r.status,
+                        r.del_flag,
+                        r.create_time,
+                        r.remark
         from sys_role r
-	        left join sys_user_role ur on ur.role_id = r.id
-	        left join sys_user u on u.id = ur.user_id
-	        left join sys_dept d on u.dept_id = d.dept_id
+                 left join sys_user_role ur on ur.role_id = r.id
+                 left join sys_user u on u.id = ur.user_id
+                 left join sys_dept d on u.dept_id = d.dept_id
     </sql>
-    
+
     <select id="selectRoleList" parameterType="com.xunmei.system.api.domain.SysRole" resultMap="SysRoleResult">
-		<include refid="selectRoleVo"/>
-		where r.del_flag = '0'
-		<if test="roleId != null and roleId != 0">
-			AND r.role_id = #{roleId}
-		</if>
-		<if test="roleName != null and roleName != ''">
-			AND r.role_name like concat('%', #{roleName}, '%')
-		</if>
-		<if test="status != null and status != ''">
-			AND r.status = #{status}
-		</if>
-		<if test="roleKey != null and roleKey != ''">
-			AND r.role_key like concat('%', #{roleKey}, '%')
-		</if>
-		<if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
-			and date_format(r.create_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
-		</if>
-		<if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
-			and date_format(r.create_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
-		</if>
-		<!-- 数据范围过滤 -->
-		${params.dataScope}
-		order by r.role_sort
-	</select>
-    
-	<select id="selectRolePermissionByUserId" parameterType="Long" resultMap="SysRoleResult">
-		<include refid="selectRoleVo"/>
-		WHERE r.del_flag = '0' and ur.user_id = #{userId}
-	</select>
-	
-	<select id="selectRoleAll" resultMap="SysRoleResult">
-		<include refid="selectRoleVo"/>
-	</select>
-	
-	<select id="selectRoleListByUserId" parameterType="Long" resultType="Long">
-		select r.role_id
+        <include refid="selectRoleVo"/>
+        where r.del_flag = '0'
+        <if test="roleId != null and roleId != 0">
+            AND r.role_id = #{roleId}
+        </if>
+        <if test="roleName != null and roleName != ''">
+            AND r.role_name like concat('%', #{roleName}, '%')
+        </if>
+        <if test="status != null and status != ''">
+            AND r.status = #{status}
+        </if>
+        <if test="roleKey != null and roleKey != ''">
+            AND r.role_key like concat('%', #{roleKey}, '%')
+        </if>
+        <if test="params.beginTime != null and params.beginTime != ''">
+            <!-- 开始时间检索 -->
+            and date_format(r.create_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
+        </if>
+        <if test="params.endTime != null and params.endTime != ''">
+            <!-- 结束时间检索 -->
+            and date_format(r.create_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
+        </if>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
+        order by r.role_sort
+    </select>
+
+    <select id="selectRolePermissionByUserId" parameterType="Long" resultMap="SysRoleResult">
+        <include refid="selectRoleVo"/>
+        WHERE r.del_flag = '0' and ur.user_id = #{userId}
+    </select>
+
+    <select id="selectRoleAll" resultMap="SysRoleResult">
+        <include refid="selectRoleVo"/>
+    </select>
+
+    <select id="selectRoleListByUserId" parameterType="Long" resultType="Long">
+        select r.role_id
         from sys_role r
-	        left join sys_user_role ur on ur.role_id = r.role_id
-	        left join sys_user u on u.user_id = ur.user_id
-	    where u.user_id = #{userId}
-	</select>
-	
-	<select id="selectRoleById" parameterType="Long" resultMap="SysRoleResult">
-		<include refid="selectRoleVo"/>
-		where r.id = #{roleId}
-	</select>
-	
-	<select id="selectRolesByUserName" parameterType="String" resultMap="SysRoleResult">
-		<include refid="selectRoleVo"/>
-		WHERE r.del_flag = '0' and u.username = #{userName}
-	</select>
-	
-	<select id="checkRoleNameUnique" parameterType="String" resultMap="SysRoleResult">
-		<include refid="selectRoleVo"/>
-		 where r.role_name=#{roleName} and r.del_flag = '0' limit 1
-	</select>
-	
-	<select id="checkRoleKeyUnique" parameterType="String" resultMap="SysRoleResult">
-		<include refid="selectRoleVo"/>
-		 where r.role_key=#{roleKey} and r.del_flag = '0' limit 1
-	</select>
-	<select id="getRoleNameByUserId" resultType="java.lang.String">
-		SELECT
-			GROUP_CONCAT( sr.role_name ) as roleName
-		FROM
-			sys_role sr
-				LEFT JOIN sys_user_role sur ON sur.role_id = sr.id
-		WHERE
-			sur.user_id =  #{userId}
-	</select>
+                 left join sys_user_role ur on ur.role_id = r.role_id
+                 left join sys_user u on u.user_id = ur.user_id
+        where u.user_id = #{userId}
+    </select>
+
+    <select id="selectRoleById" parameterType="Long" resultMap="SysRoleResult">
+        <include refid="selectRoleVo"/>
+        where r.id = #{roleId}
+    </select>
+
+    <select id="selectRolesByUserName" parameterType="String" resultMap="SysRoleResult">
+        <include refid="selectRoleVo"/>
+        WHERE r.del_flag = '0' and u.username = #{userName}
+    </select>
+
+    <select id="checkRoleNameUnique" parameterType="String" resultMap="SysRoleResult">
+        <include refid="selectRoleVo"/>
+        where r.role_name=#{roleName} and r.del_flag = '0' limit 1
+    </select>
+
+    <select id="checkRoleKeyUnique" parameterType="String" resultMap="SysRoleResult">
+        <include refid="selectRoleVo"/>
+        where r.role_key=#{roleKey} and r.del_flag = '0' limit 1
+    </select>
+    <select id="getRoleNameByUserId" resultType="java.lang.String">
+        SELECT GROUP_CONCAT(sr.role_name) as roleName
+        FROM sys_role sr
+                 LEFT JOIN sys_user_role sur ON sur.role_id = sr.id
+        WHERE sur.user_id = #{userId}
+    </select>
     <select id="selectRoleNameByUserId" resultType="java.lang.String">
-		SELECT DISTINCT
-			GROUP_CONCAT( sr.role_name )
-		FROM
-			sys_user su
-				LEFT JOIN sys_user_role sur ON su.id = sur.user_id
-				LEFT JOIN sys_role sr ON sur.role_id = sr.id
-		WHERE
-			su.id = #{userId}
-	</select>
+        SELECT DISTINCT GROUP_CONCAT(sr.role_name)
+        FROM sys_user su
+                 LEFT JOIN sys_user_role sur ON su.id = sur.user_id
+                 LEFT JOIN sys_role sr ON sur.role_id = sr.id
+        WHERE su.id = #{userId}
+    </select>
+    <select id="allRole" resultType="com.xunmei.system.api.domain.SysRole">
+        SELECT *
+        FROM sys_role
+        WHERE role_name !='超级管理员'
+    </select>
+
+    <insert id="insertRole" parameterType="com.xunmei.system.api.domain.SysRole" useGeneratedKeys="true"
+            keyProperty="id">
+        insert into sys_role(
+        <if test="id != null and id != 0">
+            id,
+        </if>
+        <if test="orgType !=null and orgType != ''">
+            org_type,
+        </if>
+        <if test="roleName != null and roleName != ''">
+            role_name,
+        </if>
+        <if test="roleKey != null and roleKey != ''">
+            role_key,
+        </if>
+        <if test="roleSort != null">
+            role_sort,
+        </if>
+        <if test="dataScope != null and dataScope != ''">
+            data_scope,
+        </if>
+        <if test="menuCheckStrictly != null">
+            menu_check_strictly,
+        </if>
+        <if test="deptCheckStrictly != null">
+            dept_check_strictly,
+        </if>
+        <if test="status != null and status != ''">
+            status,
+        </if>
+        <if test="remark != null and remark != ''">
+            remark,
+        </if>
+        <if test="createBy != null and createBy != ''">
+            create_by,
+        </if>
+        create_time
+        )values(
+        <if test="id != null and id != 0">
+            #{id},
+        </if>
+        <if test="orgType !=null and orgType != ''">
+            #{orgType},
+        </if>
+        <if test="roleName != null and roleName != ''">
+            #{roleName},
+        </if>
+        <if test="roleKey != null and roleKey != ''">
+            #{roleKey},
+        </if>
+        <if test="roleSort != null">
+            #{roleSort},
+        </if>
+        <if test="dataScope != null and dataScope != ''">
+            #{dataScope},
+        </if>
+        <if test="menuCheckStrictly != null">
+            #{menuCheckStrictly},
+        </if>
+        <if test="deptCheckStrictly != null">
+            #{deptCheckStrictly},
+        </if>
+        <if test="status != null and status != ''">
+            #{status},
+        </if>
+        <if test="remark != null and remark != ''">
+            #{remark},
+        </if>
+        <if test="createBy != null and createBy != ''">
+            #{createBy},
+        </if>
+        sysdate()
+        )
+    </insert>
+
+    <update id="updateRole" parameterType="com.xunmei.system.api.domain.SysRole">
+        update sys_role
+        <set>
+            <if test="roleName != null and roleName != ''">
+                role_name = #{roleName},
+            </if>
+            <if test="orgType !=null and orgType != ''">
+                org_type =#{orgType},
+            </if>
+            <if test="roleKey != null and roleKey != ''">
+                role_key = #{roleKey},
+            </if>
+            <if test="roleSort != null">
+                role_sort = #{roleSort},
+            </if>
+            <if test="dataScope != null and dataScope != ''">
+                data_scope = #{dataScope},
+            </if>
+            <if test="menuCheckStrictly != null">
+                menu_check_strictly = #{menuCheckStrictly},
+            </if>
+            <if test="deptCheckStrictly != null">
+                dept_check_strictly = #{deptCheckStrictly},
+            </if>
+            <if test="status != null and status != ''">
+                status = #{status},
+            </if>
+            <if test="remark != null">
+                remark = #{remark},
+            </if>
+            <if test="updateBy != null and updateBy != ''">
+                update_by = #{updateBy},
+            </if>
+            update_time = sysdate()
+        </set>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteRoleById" parameterType="Long">
+        update sys_role
+        set del_flag = '2'
+        where role_id = #{roleId}
+    </delete>
+
+    <delete id="deleteRoleByIds" parameterType="Long">
+        update sys_role set del_flag = '2' where id in
+        <foreach collection="array" item="roleId" open="(" separator="," close=")">
+            #{roleId}
+        </foreach>
+    </delete>
 
-    <insert id="insertRole" parameterType="com.xunmei.system.api.domain.SysRole" useGeneratedKeys="true" keyProperty="id">
- 		insert into sys_role(
- 			<if test="id != null and id != 0">id,</if>
-		<if test="orgType !=null and orgType != ''"> org_type,</if>
- 			<if test="roleName != null and roleName != ''">role_name,</if>
- 			<if test="roleKey != null and roleKey != ''">role_key,</if>
- 			<if test="roleSort != null">role_sort,</if>
- 			<if test="dataScope != null and dataScope != ''">data_scope,</if>
- 			<if test="menuCheckStrictly != null">menu_check_strictly,</if>
- 			<if test="deptCheckStrictly != null">dept_check_strictly,</if>
- 			<if test="status != null and status != ''">status,</if>
- 			<if test="remark != null and remark != ''">remark,</if>
- 			<if test="createBy != null and createBy != ''">create_by,</if>
- 			create_time
- 		)values(
- 			<if test="id != null and id != 0">#{id},</if>
-		<if test="orgType !=null and orgType != ''"> #{orgType},</if>
- 			<if test="roleName != null and roleName != ''">#{roleName},</if>
- 			<if test="roleKey != null and roleKey != ''">#{roleKey},</if>
- 			<if test="roleSort != null">#{roleSort},</if>
- 			<if test="dataScope != null and dataScope != ''">#{dataScope},</if>
- 			<if test="menuCheckStrictly != null">#{menuCheckStrictly},</if>
- 			<if test="deptCheckStrictly != null">#{deptCheckStrictly},</if>
- 			<if test="status != null and status != ''">#{status},</if>
- 			<if test="remark != null and remark != ''">#{remark},</if>
- 			<if test="createBy != null and createBy != ''">#{createBy},</if>
- 			sysdate()
- 		)
-	</insert>
-	
-	<update id="updateRole" parameterType="com.xunmei.system.api.domain.SysRole">
- 		update sys_role
- 		<set>
- 			<if test="roleName != null and roleName != ''">role_name = #{roleName},</if>
- 		    <if test="orgType !=null and orgType != ''"> org_type =#{orgType},</if>
- 			<if test="roleKey != null and roleKey != ''">role_key = #{roleKey},</if>
- 			<if test="roleSort != null">role_sort = #{roleSort},</if>
- 			<if test="dataScope != null and dataScope != ''">data_scope = #{dataScope},</if>
- 			<if test="menuCheckStrictly != null">menu_check_strictly = #{menuCheckStrictly},</if>
- 			<if test="deptCheckStrictly != null">dept_check_strictly = #{deptCheckStrictly},</if>
- 			<if test="status != null and status != ''">status = #{status},</if>
- 			<if test="remark != null">remark = #{remark},</if>
- 			<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
- 			update_time = sysdate()
- 		</set>
- 		where id = #{id}
-	</update>
-	
-	<delete id="deleteRoleById" parameterType="Long">
- 		update sys_role set del_flag = '2' where role_id = #{roleId}
- 	</delete>
- 	
- 	<delete id="deleteRoleByIds" parameterType="Long">
- 	    update sys_role set del_flag = '2' where id in
- 		<foreach collection="array" item="roleId" open="(" separator="," close=")">
- 			#{roleId}
-        </foreach> 
- 	</delete>
- 	
-</mapper> 
+    <select id="selectUserByRoleNameAndOrgId" resultType="com.xunmei.system.api.domain.SysUser">
+        select u.id, u.username
+        from sys_user u
+                 inner join sys_org o on u.org_id = o.id
+                 inner join sys_user_role ur on u.id = ur.user_id
+                 inner join sys_role r on ur.role_id = r.id
+        where r.role_name = #{roleName}
+          and o.id = #{orgId}
+    </select>
+</mapper>