|
|
@@ -12,7 +12,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
-import com.google.common.collect.Lists;
|
|
|
+import com.google.common.collect.Sets;
|
|
|
import com.xunmei.common.core.constant.CacheConstants;
|
|
|
import com.xunmei.common.core.constant.DictConstants;
|
|
|
import com.xunmei.common.core.constant.ErrorMsgConstants;
|
|
|
@@ -69,9 +69,10 @@ import org.springframework.transaction.support.TransactionSynchronizationManager
|
|
|
import java.time.Duration;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.CompletableFuture;
|
|
|
-import java.util.stream.Collectors;
|
|
|
import java.util.stream.Stream;
|
|
|
|
|
|
+import static java.util.stream.Collectors.toList;
|
|
|
+
|
|
|
/**
|
|
|
* 预案演练计划Service业务层处理
|
|
|
*
|
|
|
@@ -167,7 +168,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
|
|
|
vo.setBuildTaskNow(ObjectUtil.equal(1, plan.getBuildTaskNow()));
|
|
|
vo.setFileList(ObjectUtil.isNotEmpty(plan.getFileList()) ? JSON.parseArray(plan.getFileList(), String.class) : null);
|
|
|
final List<CoreDrillPlanToExecOrg> execOrgList = coreDrillPlanToExecOrgMapper.selectByMap(MapUtil.of("plan_id", id));
|
|
|
- final List<Long> execOrgIdList = execOrgList.stream().map(CoreDrillPlanToExecOrg::getOrgId).collect(Collectors.toList());
|
|
|
+ final List<Long> execOrgIdList = execOrgList.stream().map(CoreDrillPlanToExecOrg::getOrgId).collect(toList());
|
|
|
vo.setPlanExecOrgIdList(ObjectUtil.isEmpty(execOrgIdList) ? null : execOrgIdList);
|
|
|
vo.setCategoryText(DictUtils.getDictLabel(DictConstants.CORE_DRILL_CATEGORY, vo.getCategory()));
|
|
|
/*final List<CoreDrillPlanToRole> planToRoles = coreDrillPlanToRoleMapper.selectByMap(MapUtil.of("plan_id", id));
|
|
|
@@ -474,7 +475,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
|
|
|
coreDrillPlanToRoleMapper.delete(new LambdaQueryWrapper<CoreDrillPlanToRole>().in(CoreDrillPlanToRole::getPlanId, planIdList));
|
|
|
}
|
|
|
List<CoreDrillTask> taskIdList = coreDrillTaskMapper.selectList(new LambdaQueryWrapper<CoreDrillTask>().in(CoreDrillTask::getPlanId, planIdList).select(CoreDrillTask::getId));
|
|
|
- List<Long> collect = taskIdList.stream().map(CoreDrillTask::getId).collect(Collectors.toList());
|
|
|
+ List<Long> collect = taskIdList.stream().map(CoreDrillTask::getId).collect(toList());
|
|
|
if (ObjectUtil.isNotEmpty(collect)) {
|
|
|
coreDrillTaskMapper.deleteBatchIds(collect);
|
|
|
coreDrillTaskToRoleMapper.delete(new LambdaQueryWrapper<CoreDrillTaskToRole>().in(CoreDrillTaskToRole::getDrillTaskId, collect));
|
|
|
@@ -837,17 +838,17 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
|
|
|
case 1:
|
|
|
//省联社
|
|
|
final List<CoreDrillPlan> sLsPlanList = getPlanList(orgId, 1, 1);
|
|
|
- return sLsPlanList.stream().map(x -> new IdName<>(x.getId().toString(), x.getPlanName())).collect(Collectors.toList());
|
|
|
+ return sLsPlanList.stream().map(x -> new IdName<>(x.getId().toString(), x.getPlanName())).collect(toList());
|
|
|
case 2:
|
|
|
//办事处
|
|
|
SysOrg topOrg = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectTopOrg(SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
|
|
|
final List<CoreDrillPlan> lsPlanList = getPlanList(topOrg.getId(), 1, 1);
|
|
|
final List<CoreDrillPlan> bscPlanList = getPlanList(orgId, 1, 1);
|
|
|
- return Stream.of(lsPlanList, bscPlanList).flatMap(Collection::stream).map(x -> new IdName<>(x.getId().toString(), x.getPlanName())).collect(Collectors.toList());
|
|
|
+ return Stream.of(lsPlanList, bscPlanList).flatMap(Collection::stream).map(x -> new IdName<>(x.getId().toString(), x.getPlanName())).collect(toList());
|
|
|
case 3:
|
|
|
//行社
|
|
|
final List<CoreDrillPlan> hsPlanList = getPlanList(orgId, 0, 0);
|
|
|
- return hsPlanList.stream().map(x -> new IdName<>(x.getId().toString(), x.getPlanName())).collect(Collectors.toList());
|
|
|
+ return hsPlanList.stream().map(x -> new IdName<>(x.getId().toString(), x.getPlanName())).collect(toList());
|
|
|
default:
|
|
|
return new ArrayList<>();
|
|
|
}
|
|
|
@@ -872,7 +873,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
|
|
|
planRoleList = coreDrillPlanToRoleMapper.selectList(ros);
|
|
|
}*/
|
|
|
List<SysOrgVO> all = RedisUtils.getCacheList(CacheConstants.ORG_CACHE_LIST_KEY);
|
|
|
- all = all.stream().filter(o -> ObjectUtil.isNotEmpty(o.getPath())).collect(Collectors.toList());
|
|
|
+ all = all.stream().filter(o -> ObjectUtil.isNotEmpty(o.getPath())).collect(toList());
|
|
|
final SysOrgVO planCreateOrg = all.stream().filter(org -> org.getId().equals(plan.getCreateOrgId())).findFirst().get();
|
|
|
final long count = all.stream()
|
|
|
.filter(org -> ObjectUtil.isNotEmpty(org.getPath()))
|
|
|
@@ -956,8 +957,8 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
|
|
|
final List<CoreDrillPlanToExecOrg> coreDrillPlanToExecOrgList = coreDrillPlanToExecOrgMapper.selectList(eos);
|
|
|
|
|
|
if (ObjectUtil.isNotEmpty(coreDrillPlanToExecOrgList)) {
|
|
|
- final List<Long> list = coreDrillPlanToExecOrgList.stream().map(CoreDrillPlanToExecOrg::getOrgId).collect(Collectors.toList());
|
|
|
- return all.stream().filter(org -> list.contains(org.getId())).collect(Collectors.toList());
|
|
|
+ final List<Long> list = coreDrillPlanToExecOrgList.stream().map(CoreDrillPlanToExecOrg::getOrgId).collect(toList());
|
|
|
+ return all.stream().filter(org -> list.contains(org.getId())).collect(toList());
|
|
|
|
|
|
} else {
|
|
|
/* List<CoreEduTrainingPlanToOrgType> toOrgTypeList = coreEduTrainingPlanToOrgTypeMapper.selectList(new LambdaQueryWrapper<CoreEduTrainingPlanToOrgType>()
|
|
|
@@ -966,22 +967,22 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
|
|
|
return all.stream().filter(org -> collect.contains(org.getType())).collect(Collectors.toList());*/
|
|
|
|
|
|
|
|
|
- return all.stream().filter(org -> ObjectUtil.isNotNull(org.getType())).filter(org -> org.getType().equals(plan.getExecOrgType())).collect(Collectors.toList());
|
|
|
+ return all.stream().filter(org -> ObjectUtil.isNotNull(org.getType())).filter(org -> org.getType().equals(plan.getExecOrgType())).collect(toList());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
public List<SysOrgVO> getPlanPublishOrgList(List<SysOrgVO> list) {
|
|
|
//省联社/办事处/行社
|
|
|
- List<SysOrgVO> collect = list.stream().filter(org -> checkOrgType(org.getType())).collect(Collectors.toList());
|
|
|
+ List<SysOrgVO> collect = list.stream().filter(org -> checkOrgType(org.getType())).collect(toList());
|
|
|
//行社以下的机构
|
|
|
- List<SysOrgVO> collect1 = list.stream().filter(org -> !checkOrgType(org.getType())).collect(Collectors.toList());
|
|
|
+ List<SysOrgVO> collect1 = list.stream().filter(org -> !checkOrgType(org.getType())).collect(toList());
|
|
|
|
|
|
if (ObjectUtil.isNotEmpty(collect1)) {
|
|
|
- List<Long> orgIdList = collect1.stream().map(SysOrgVO::getId).collect(Collectors.toList());
|
|
|
+ List<Long> orgIdList = collect1.stream().map(SysOrgVO::getId).collect(toList());
|
|
|
List<SysOrg> orgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectParentHs(orgIdList, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
|
|
|
List<SysOrgVO> sysOrgVOS = BeanHelper.copyProperties(orgList, SysOrgVO.class);
|
|
|
- return Stream.of(sysOrgVOS, collect).flatMap(Collection::stream).collect(Collectors.toList());
|
|
|
+ return Stream.of(sysOrgVOS, collect).flatMap(Collection::stream).collect(toList());
|
|
|
}
|
|
|
|
|
|
return collect;
|
|
|
@@ -1026,59 +1027,64 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
|
|
|
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ private static final Set<OrgTypeEnum> INVALID_ORG_TYPES = Sets.newHashSet(OrgTypeEnum.SHEGN_LIAN_SHE, OrgTypeEnum.BAN_SHI_CHU, OrgTypeEnum.DIQU_HANG_SHE);
|
|
|
private void deducePlanAndBuildTask(CoreDrillPlan drillPlan, List<Long> orgIdList, List<SysOrgVO> orgCacheList) {
|
|
|
- List<SysOrgVO> orgList = orgCacheList.stream().filter(org -> orgIdList.contains(org.getId())).collect(Collectors.toList());
|
|
|
+ List<SysOrgVO> orgList = orgCacheList.stream().filter(org -> orgIdList.contains(org.getId())).collect(toList());
|
|
|
if (orgList.isEmpty()) {
|
|
|
throw new ServiceException("未查询到orgIdList中指定的机构信息");
|
|
|
}
|
|
|
- List<Integer> typeList = orgList.stream().map(SysOrgVO::getType).distinct().collect(Collectors.toList());
|
|
|
+ List<Long> idList = orgList.stream().map(SysOrgVO::getId).collect(toList());
|
|
|
+ List<Integer> typeList = orgList.stream().map(SysOrgVO::getType).distinct().collect(toList());
|
|
|
if (typeList.size() > 1) {
|
|
|
throw new ServiceException("orgIdList中指定的机构信息存在多种机构类型");
|
|
|
}
|
|
|
|
|
|
OrgTypeEnum orgTypeEnum = OrgTypeEnum.getOrgTypeEnum(typeList.get(0));
|
|
|
|
|
|
- //省联社创建的计划
|
|
|
+ // 省联社创建的计划
|
|
|
if (checkIsParentPlan(drillPlan.getId())) {
|
|
|
- //把传进来的计划转成 行社计划
|
|
|
List<CoreDrillPlan> allHsPlanList = getHsPlanList(drillPlan);
|
|
|
if (ObjectUtil.isEmpty(allHsPlanList)) {
|
|
|
return;
|
|
|
}
|
|
|
- //把传进来的机构信息转成行社机构
|
|
|
+
|
|
|
Map<String, Object> map = getHsOrg(orgCacheList, orgList, orgTypeEnum);
|
|
|
- List<Long> hsPlanIdList = allHsPlanList.stream().map(CoreDrillPlan::getId).collect(Collectors.toList());
|
|
|
- List<Long> hsOrgIdList = ((List<SysOrgVO>) map.get("list")).stream().map(SysOrgVO::getId).collect(Collectors.toList());
|
|
|
+ List<Long> hsPlanIdList = allHsPlanList.stream().map(CoreDrillPlan::getId).collect(toList());
|
|
|
+ List<Long> hsOrgIdList = ((List<SysOrgVO>) map.get("list")).stream().map(SysOrgVO::getId).collect(toList());
|
|
|
+ if (ObjectUtil.hasEmpty(hsPlanIdList, hsOrgIdList)){
|
|
|
+ return;
|
|
|
+ }
|
|
|
List<CoreDrillPlan> reallyPlanIdList = findReallyPlanIdList(hsPlanIdList, hsOrgIdList);
|
|
|
boolean underHsOrgType = (boolean) map.get("underHsOrgType");
|
|
|
- if (underHsOrgType) {
|
|
|
- List<Long> idList = orgList.stream().map(SysOrgVO::getId).collect(Collectors.toList());
|
|
|
- for (CoreDrillPlan plan : reallyPlanIdList) {
|
|
|
- CompletableFuture.runAsync(() -> {
|
|
|
- //其实这里如果真是传入了行社以下的机构,那么大概率这里的reallyPlanIdList 计划id也只会有一个元素
|
|
|
- CoreDrillPlanDataVo detailPlanData = getCoreDrillPlanDataVo(plan.getId());
|
|
|
- coreDrillTaskService.createTaskForNow(detailPlanData, plan.getPlanStartDate(), plan.getPlanEndDate(),idList);
|
|
|
- }, threadPoolTaskExecutor);
|
|
|
- }
|
|
|
- } else {
|
|
|
- for (CoreDrillPlan plan : reallyPlanIdList) {
|
|
|
- CompletableFuture.runAsync(() -> {
|
|
|
- //如果不是省联社或者办事处,状态启用,并且是无周期或者立即生效
|
|
|
- CoreDrillPlanDataVo detailPlanData = getCoreDrillPlanDataVo(plan.getId());
|
|
|
- coreDrillTaskService.createTaskForNow(detailPlanData, plan.getPlanStartDate(), plan.getPlanEndDate());
|
|
|
- }, threadPoolTaskExecutor);
|
|
|
- }
|
|
|
+ for (CoreDrillPlan plan : reallyPlanIdList) {
|
|
|
+ create(plan, underHsOrgType ? idList : null, threadPoolTaskExecutor);
|
|
|
}
|
|
|
return;
|
|
|
}
|
|
|
- //行社自建计划
|
|
|
- if (OrgTypeEnum.SHEGN_LIAN_SHE.equals(orgTypeEnum) || OrgTypeEnum.BAN_SHI_CHU.equals(orgTypeEnum) || OrgTypeEnum.DIQU_HANG_SHE.equals(orgTypeEnum)) {
|
|
|
+ // 行社自建计划
|
|
|
+ if (INVALID_ORG_TYPES.contains(orgTypeEnum)) {
|
|
|
throw new ServiceException("orgIdList中传递机构信息错误!与计划信息不匹配");
|
|
|
}
|
|
|
- List<CoreDrillPlan> list = Lists.newArrayList(drillPlan);
|
|
|
- // resumptionTaskBusiness.buildTask(orgIdList, list, new Date());
|
|
|
+
|
|
|
+ if (OrgTypeEnum.HANG_SHE.equals(orgTypeEnum)) {
|
|
|
+ create(drillPlan, null, threadPoolTaskExecutor);
|
|
|
+ } else {
|
|
|
+ //其实这里如果真是传入了行社以下的机构,那么大概率这里的reallyPlanIdList 计划id也只会有一个元素
|
|
|
+ create(drillPlan, idList, threadPoolTaskExecutor);
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
+ private void create(CoreDrillPlan plan, List<Long> idList, ThreadPoolTaskExecutor executor) {
|
|
|
+ Long planId = plan.getId();
|
|
|
+ Date planStartDate = plan.getPlanStartDate();
|
|
|
+ Date planEndDate = plan.getPlanEndDate();
|
|
|
+
|
|
|
+ executor.execute(() -> {
|
|
|
+ CoreDrillPlanDataVo detailPlanData = getCoreDrillPlanDataVo(planId);
|
|
|
+ coreDrillTaskService.createTaskForNow(detailPlanData, planStartDate, planEndDate, idList);
|
|
|
+ });
|
|
|
+ }
|
|
|
|
|
|
private List<CoreDrillPlan> findReallyPlanIdList(List<Long> planIdList, List<Long> orgIdList) {
|
|
|
|
|
|
@@ -1089,8 +1095,10 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
|
|
|
}
|
|
|
|
|
|
private boolean checkIsParentPlan(Long planId) {
|
|
|
+ //演练与培训的 行社下发的计划 id=parentId
|
|
|
LambdaQueryWrapper<CoreDrillPlan> countWrapper = new LambdaQueryWrapper<>();
|
|
|
countWrapper.eq(CoreDrillPlan::getParentId, planId);
|
|
|
+ countWrapper.ne(CoreDrillPlan::getId, planId);
|
|
|
Long l = baseMapper.selectCount(countWrapper);
|
|
|
return ObjectUtil.isNotNull(l) && l.compareTo(0L) > 0;
|
|
|
}
|
|
|
@@ -1119,7 +1127,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
|
|
|
.filter(org -> ObjectUtil.isAllNotEmpty(org.getPath(), org.getType()))
|
|
|
.filter(org -> org.getPath().contains(path))
|
|
|
.filter(org -> org.getType().equals(OrgTypeEnum.HANG_SHE.getCode()))
|
|
|
- .collect(Collectors.toList());
|
|
|
+ .collect(toList());
|
|
|
list.addAll(collect);
|
|
|
}
|
|
|
break;
|
|
|
@@ -1127,7 +1135,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
|
|
|
list = needBuildTaskOrgList;
|
|
|
break;
|
|
|
default: //如果是行社以下机构类型,那么找到上级的行社机构返回
|
|
|
- List<Long> ids = needBuildTaskOrgList.stream().map(SysOrgVO::getId).collect(Collectors.toList());
|
|
|
+ List<Long> ids = needBuildTaskOrgList.stream().map(SysOrgVO::getId).collect(toList());
|
|
|
List<SysOrg> sysOrgs = orgService.selectParentHs(ids, SecurityConstants.INNER);
|
|
|
list = BeanHelper.copyProperties(sysOrgs, SysOrgVO.class);
|
|
|
underHsOrgType = true;
|
|
|
@@ -1138,4 +1146,9 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
|
|
|
map.put("underHsOrgType", underHsOrgType);
|
|
|
return map;
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void run(Runnable runnable, ThreadPoolTaskExecutor threadPoolTaskExecutor) {
|
|
|
+ CompletableFuture.runAsync(runnable, threadPoolTaskExecutor);
|
|
|
+ }
|
|
|
}
|