jingyuanchao 2 лет назад
Родитель
Сommit
420a68ba48

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

@@ -31,11 +31,12 @@ public interface RemoteOrgService {
 
     /**
      * 查询第一级机构
+     *
      * @param source
      * @return
      */
     @GetMapping("/org/selectSysOrgByParentId")
-    List<SysOrg> selectSysOrgByParentId(@RequestParam("id")Long id,@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+    List<SysOrg> selectSysOrgByParentId(@RequestParam("id") Long id, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 
 
     @GetMapping("/dept/get/{orgId}")
@@ -62,11 +63,32 @@ public interface RemoteOrgService {
     @PostMapping("/dept/selectOrgByIdList")
     List<SysOrg> selectOrgByIdList(@RequestBody List<Long> orgList, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 
+    /**
+     * 获取上级行社
+     *
+     * @param orgList
+     * @param source
+     * @return
+     */
+    @PostMapping("/dept/selectParentHs")
+    List<SysOrg> selectParentHs(@RequestBody List<Long> orgList, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
+    /**
+     * 获取下级所有行社
+     *
+     * @param orgList
+     * @param source
+     * @return
+     */
+    @PostMapping("/dept/selectChildHs/{orgId}")
+    List<SysOrg> selectChildHs(@PathVariable("orgId") Long orgId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
     @GetMapping("/dept/getSysOrgByUserId/{userId}")
     SysOrg getSysOrgByUserId(@PathVariable("userId") Long userId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 
     /**
      * 获取机构及其上级机构的id列表
+     *
      * @param orgId
      * @return
      */
@@ -74,7 +96,6 @@ public interface RemoteOrgService {
     List<Long> getUpOrgs(@PathVariable("orgId") Long orgId);
 
     /**
-     *
      * @param source
      * @return
      */
@@ -83,9 +104,10 @@ public interface RemoteOrgService {
 
     /**
      * 获取机构及父级机构的名称
+     *
      * @param ids
      * @return
      */
     @PostMapping("/org/getParentNames")
-    R<List<IdNameVo>> getParentName(@RequestBody  List<Long> ids,@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+    R<List<IdNameVo>> getParentName(@RequestBody List<Long> ids, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 }

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

@@ -97,15 +97,26 @@ public class RemoteOrgFallbackFactory implements FallbackFactory<RemoteOrgServic
             public List<Long> getUpOrgs(@PathVariable("orgId") Long orgId) {
                 return new ArrayList<>();
             }
+
             @Override
-            public R<List<IdNameVo>> getParentName(List<Long> ids, String source){
-                return R.ok(new ArrayList<>()) ;
+            public R<List<IdNameVo>> getParentName(List<Long> ids, String source) {
+                return R.ok(new ArrayList<>());
             }
 
             @Override
             public List<SysOrg> findAllOrg(String source) {
                 return null;
             }
+
+            @Override
+            public List<SysOrg> selectParentHs(List<Long> orgList, String source) {
+                return new ArrayList<>();
+            }
+
+            @Override
+            public List<SysOrg> selectChildHs(Long orgId, String source) {
+                return new ArrayList<>();
+            }
         };
     }
 }

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

@@ -46,6 +46,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.support.TransactionSynchronizationAdapter;
+import org.springframework.transaction.support.TransactionSynchronizationManager;
 
 import java.util.*;
 import java.util.concurrent.CompletableFuture;
@@ -254,24 +256,21 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
                    2:计划生成了任务且执行了,但是没有修改到关键信息,此时则不能删除任务,只允许修改计划信息
          */
         final Integer done = coreEduTrainingTaskMapper.checkHasTaskIsDone(Arrays.asList(plan.getId()));
-        if (ObjectUtil.equal(1,done)){
+        if (ObjectUtil.equal(1, done)) {
             //此为情况二, 计划生成了任务且执行 不能删除任务,只允许修改计划信息,所以直接返回
             //TODO 考虑是否同步修改已生成的任务的名称
             return i;
         }
-        final Integer hasTask = coreEduTrainingTaskMapper.checkHasTask(plan.getId());
-        if (ObjectUtil.equal(1,plan.getBuildTaskNow())){
-
-
-
-        }
+        // final Integer hasTask = coreEduTrainingTaskMapper.checkHasTask(plan.getId());
         //此为情况一,计划没有生成任务或者生成了任务但未执行
-        coreEduTrainingTaskMapper.deleteByMap(MapUtil.of("plan_id", request.getId()));
-        CompletableFuture.runAsync(()->{
-            //说明有任务并且都没执行过,需要重新生成任务
-            final CoreEduTrainingPlanDataVo dataVo = getCoreEduTrainingPlanDataVo(request.getId());
-            coreEduTrainingTaskService.createTaskForNow(dataVo, plan.getStartDate(), plan.getEndDate());
-        });
+        final CoreEduTrainingPlanDataVo dataVo = getCoreEduTrainingPlanDataVo(request.getId());
+        if (ObjectUtil.equal(1, plan.getBuildTaskNow())) {
+            coreEduTrainingTaskMapper.deleteByMap(MapUtil.of("plan_id", request.getId()));
+            CompletableFuture.runAsync(() -> {
+                //说明有任务并且都没执行过,需要重新生成任务
+                coreEduTrainingTaskService.createTaskForNow(dataVo, plan.getStartDate(), plan.getEndDate());
+            });
+        }
         return i;
     }
 
@@ -400,7 +399,6 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
 
     @Override
     public List<SysOrg> getExecuteOrg(CoreEduTrainingPlan plan) {
-        Integer execOrgType = plan.getExecOrgType();
         List<SysOrg> orgList;
         //优先判断是否存在具体的执行机构,如果存在则直接返回,否则根据机构类型进行查询
         QueryWrapper<CoreEduTrainingPlanToExecOrg> eos = new QueryWrapper<>();
@@ -408,10 +406,10 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         List<CoreEduTrainingPlanToExecOrg> execOrg = coreEduTrainingPlanToExecOrgMapper.selectList(eos);
         if (ObjectUtil.isNotEmpty(execOrg)) {
             final List<Long> list = execOrg.stream().map(CoreEduTrainingPlanToExecOrg::getOrgId).collect(Collectors.toList());
-            orgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgByIdList(list, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+            orgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectParentHs(list, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
             return orgList;
         }
-        orgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectByOrgType(execOrgType, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+        orgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectChildHs(plan.getCreateOrgId(), SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
         return orgList;
     }
 
@@ -433,7 +431,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         ros.eq(CoreEduTrainingPlanToRole::getPlanId, plan.getId());
         List<CoreEduTrainingPlanToRole> planRoleList = coreEduTrainingPlanToRoleMapper.selectList(ros);
 
-        //获取执行机构
+        //获取所有行社机构
         List<SysOrg> executeOrg = this.getExecuteOrg(plan);
 
         List<CoreEduTrainingPlan> list = new ArrayList<>();
@@ -470,15 +468,22 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         }
         plan.setIssue(1);
         this.updateById(plan);
-        for (CoreEduTrainingPlan trainingPlan : list) {
-            CompletableFuture.runAsync(()->{
-                //如果不是省联社或者办事处,状态启用,并且是无周期或者立即生效
-                if ((ObjectUtil.equal(0, plan.getPlanStatus()) && (ObjectUtil.equal(0, plan.getPlanCycle()) || ObjectUtil.equal(1, plan.getBuildTaskNow())))) {
-                    CoreEduTrainingPlanDataVo detailPlanData = this.getCoreEduTrainingPlanDataVo(trainingPlan.getId());
-                    coreEduTrainingTaskService.createTaskForNow(detailPlanData, plan.getStartDate(), plan.getEndDate());
+        //事务提交后执行
+        TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
+            @Override
+            public void afterCommit() {
+                for (CoreEduTrainingPlan trainingPlan : list) {
+                    CompletableFuture.runAsync(() -> {
+                        //如果不是省联社或者办事处,状态启用,并且是无周期或者立即生效
+                        if ((ObjectUtil.equal(0, plan.getPlanStatus()) && (ObjectUtil.equal(0, plan.getPlanCycle()) || ObjectUtil.equal(1, plan.getBuildTaskNow())))) {
+                            CoreEduTrainingPlanDataVo detailPlanData = getCoreEduTrainingPlanDataVo(trainingPlan.getId());
+                            coreEduTrainingTaskService.createTaskForNow(detailPlanData, plan.getStartDate(), plan.getEndDate());
+                        }
+                    });
                 }
-            });
-        }
+            }
+        });
+
     }
 
     @Override

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

@@ -142,7 +142,7 @@ public class SysDeptController extends BaseController {
      */
     @GetMapping("/deptTree/hangshe")
     public AjaxResult hangsheDeptTree() {
-        return success(deptService.selectDeptTreeList(Arrays.asList(1,2,3)));
+        return success(deptService.selectDeptTreeList(Arrays.asList(1, 2, 3)));
     }
 
     /**
@@ -171,7 +171,7 @@ public class SysDeptController extends BaseController {
 
     @PostMapping("/findListByOrgType")
     public R<List<Long>> findListByOrgType(@RequestBody Integer execOrgType) {
-        List<Long> ids=orgService.findListByOrgType(execOrgType);
+        List<Long> ids = orgService.findListByOrgType(execOrgType);
         return R.ok(ids);
     }
 
@@ -232,4 +232,17 @@ public class SysDeptController extends BaseController {
     SysOrg getSysOrgByUserId(@PathVariable("userId") Long userId) {
         return orgService.getSysOrgByUserId(userId);
     }
+    @ApiOperation(value = "获取上级行社", notes = "获取上级行社")
+    @InnerAuth
+    @PostMapping("/dept/selectParentHs")
+    List<SysOrg> selectParentHs(@RequestBody List<Long> orgList) {
+        return orgService.selectParentHs(orgList);
+    }
+
+    @ApiOperation(value = "获取下级所有行社", notes = "获取下级所有行社")
+    @InnerAuth
+    @GetMapping("/selectChildHs/{orgId}")
+    List<SysOrg> selectChildHs(@PathVariable("orgId") Long orgId) {
+        return orgService.selectChildHs(orgId);
+    }
 }

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

@@ -121,4 +121,8 @@ public interface ISysOrgService extends IService<SysOrg> {
      */
     boolean removeOrg(Long orgId);
 
+    List<SysOrg> selectParentHs(List<Long> orgList);
+
+
+    List<SysOrg> selectChildHs(Long orgId);
 }

+ 26 - 3
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysOrgServiceImpl.java

@@ -25,9 +25,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.PostConstruct;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -306,4 +304,29 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
         }
         return orgList;
     }
+
+    @Override
+    public List<SysOrg> selectParentHs(List<Long> orgList) {
+
+
+        final List<SysOrg> sysOrgList = sysOrgMapper.selectList(new LambdaQueryWrapper<SysOrg>()
+                .in(SysOrg::getId, orgList)
+                .select(SysOrg::getPath));
+        final List<Long> orgIdList = sysOrgList.stream().map(SysOrg::getPath).map(path -> path.split("-")).map(Arrays::asList).flatMap(Collection::stream).map(Long::valueOf).distinct().collect(Collectors.toList());
+
+        return sysOrgMapper.selectList(new LambdaQueryWrapper<SysOrg>()
+                .in(SysOrg::getId, orgIdList)
+                .eq(SysOrg::getType, 3));
+    }
+
+    @Override
+    public List<SysOrg> selectChildHs(Long orgId) {
+        final SysOrg sysOrg = getById(orgId);
+        final String path = sysOrg.getPath();
+        return sysOrgMapper.selectList(new LambdaQueryWrapper<SysOrg>()
+                .eq(SysOrg::getType, 3)
+                .eq(SysOrg::getIsLock, 0)
+                .likeRight(SysOrg::getPath, path)
+                .eq(SysOrg::getDeleted, 0));
+    }
 }