|
|
@@ -18,12 +18,10 @@ import com.xunmei.common.core.domain.DateRange;
|
|
|
import com.xunmei.common.core.domain.R;
|
|
|
import com.xunmei.common.core.domain.drill.domain.*;
|
|
|
import com.xunmei.common.core.domain.drill.dto.*;
|
|
|
-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.drill.vo.*;
|
|
|
import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingTaskReportVo;
|
|
|
import com.xunmei.common.core.enums.ExportPdfType;
|
|
|
+import com.xunmei.common.core.enums.OrgTypeEnum;
|
|
|
import com.xunmei.common.core.enums.drill.DrillDoStatus;
|
|
|
import com.xunmei.common.core.enums.drill.DrillType;
|
|
|
import com.xunmei.common.core.exception.SystemException;
|
|
|
@@ -130,6 +128,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
|
|
|
SysOrg org = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgById(request.getOrgId(), SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
|
|
|
request.setOrgPath(org.getPath());
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -154,10 +153,16 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
|
|
|
record.setUserList(userList);
|
|
|
|
|
|
}
|
|
|
+ //处理演练任务类型字典
|
|
|
final List<SysDictData> drillTypeDictList = DictUtils.getDictCache(DictConstants.CORE_DRILL_TYPE);
|
|
|
if (ObjectUtil.isNotEmpty(drillTypeDictList) && ObjectUtil.isNotEmpty(record.getType())) {
|
|
|
drillTypeDictList.stream().filter(dict -> ObjectUtil.equal(dict.getDictValue(), record.getType().toString())).findFirst().ifPresent(dict -> record.setTypeText(dict.getDictLabel()));
|
|
|
}
|
|
|
+ //处理演练任务推荐状态字典
|
|
|
+ final List<SysDictData> drillTaskRecStatusList = DictUtils.getDictCache(DictConstants.DRILL_TASK_REC_STATUS);
|
|
|
+ if (ObjectUtil.isNotEmpty(drillTaskRecStatusList) && ObjectUtil.isNotEmpty(record.getRecStatus())) {
|
|
|
+ drillTaskRecStatusList.stream().filter(dict -> ObjectUtil.equal(dict.getDictValue(), record.getRecStatus().toString())).findFirst().ifPresent(dict -> record.setRecStatusText(dict.getDictLabel()));
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -428,10 +433,10 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
|
|
|
}
|
|
|
|
|
|
private String calculateScore(List<CoreDrillTaskReportVo> childrenOrgData) {
|
|
|
- //将数组childrenOrgData中的score字段取出来转换成BigDecimal类型的数组,并计算出平均数,保留两位小数
|
|
|
- BigDecimal avg = childrenOrgData.stream().map(CoreDrillTaskReportVo::getScore).map(BigDecimal::new).reduce(BigDecimal.ZERO, BigDecimal::add).divide(BigDecimal.valueOf(childrenOrgData.size()), 2, RoundingMode.HALF_UP);
|
|
|
- return avg.toString();
|
|
|
- // childrenOrgData.stream().map(CoreDrillTaskReportVo::getScore).map(BigDecimal::valueOf).
|
|
|
+ //将数组childrenOrgData中的score字段取出来转换成BigDecimal类型的数组,并计算出平均数,保留两位小数
|
|
|
+ BigDecimal avg = childrenOrgData.stream().map(CoreDrillTaskReportVo::getScore).map(BigDecimal::new).reduce(BigDecimal.ZERO, BigDecimal::add).divide(BigDecimal.valueOf(childrenOrgData.size()), 2, RoundingMode.HALF_UP);
|
|
|
+ return avg.toString();
|
|
|
+ // childrenOrgData.stream().map(CoreDrillTaskReportVo::getScore).map(BigDecimal::valueOf).
|
|
|
|
|
|
}
|
|
|
|
|
|
@@ -592,11 +597,11 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
|
|
|
//此list中Plan对象仅id与planCycle字段有值,
|
|
|
for (CoreDrillPlan plan : planList) {
|
|
|
CompletableFuture.runAsync(() -> {
|
|
|
- //此处因为planService会导致循环依赖 TODO 任务生成
|
|
|
-// final CoreDrillPlanDataVo detailPlanData = coreDrillPlanMapper.getDetailPlanData(plan.getId());
|
|
|
-// detailPlanData.setFileList(ObjectUtil.isNotEmpty(detailPlanData.getFile()) ? JSON.parseArray(detailPlanData.getFile(), String.class) : null);
|
|
|
-// DateRange range = DateUtils.getStartAndEnd(finalDate, plan.getPlanCycle());
|
|
|
-// this.createTaskForNow(detailPlanData, range.getStartTime(), range.getEndTime());
|
|
|
+ //此处因为planService会导致循环依赖
|
|
|
+ final CoreDrillPlanDataVo detailPlanData = coreDrillPlanMapper.getDetailPlanData(plan.getId());
|
|
|
+ detailPlanData.setFileList(ObjectUtil.isNotEmpty(detailPlanData.getFile()) ? JSON.parseArray(detailPlanData.getFile(), String.class) : null);
|
|
|
+ DateRange range = DateUtils.getStartAndEnd(finalDate, plan.getPlanCycle());
|
|
|
+ this.createTaskForNow(detailPlanData, range.getStartTime(), range.getEndTime());
|
|
|
});
|
|
|
}
|
|
|
return "创建成功";
|
|
|
@@ -607,11 +612,61 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
|
|
|
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
|
|
|
public int evaluate(CoreDrillTaskEvaluateDto request) {
|
|
|
CoreDrillTask drillTask = getById(request.getTaskId());
|
|
|
+ if (drillTask == null) {
|
|
|
+ throw new SystemException("获取预案演练数据失败!");
|
|
|
+ }
|
|
|
drillTask.setCommentScore(request.getScore());
|
|
|
drillTask.setStatus(DrillDoStatus.DONE.getCode());
|
|
|
drillTask.setComment(request.getComment());
|
|
|
+ drillTask.setRecStatus(0);
|
|
|
return baseMapper.updateById(drillTask);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public TableDataInfo<CoreDrillTaskRecPageVo> recList(CoreDrillTaskRecPageDto request) {
|
|
|
+ dealRecListParam(request);
|
|
|
+ if (request.getRecStatus() != null) {
|
|
|
+ IPage<CoreDrillTaskRecPageVo> page = coreDrillTaskMapper.selectRecPage(request.getPageRequest(), request, request.getRecStatus());
|
|
|
+ return TableDataInfo.build(page);
|
|
|
+ }
|
|
|
+ IPage<CoreDrillTaskRecPageVo> page = coreDrillTaskMapper.selectRecPage(request.getPageRequest(), request, getRecStatus());
|
|
|
+ return TableDataInfo.build(page);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void dealRecListParam(CoreDrillTaskRecPageDto request) {
|
|
|
+ //App的查询, App 默认下穿
|
|
|
+ request.setCheckSub(true);
|
|
|
+ //App端的时间按季度查询
|
|
|
+ DateRange dateRange = DateUtils.getStartAndEnd(request.getDate(), 4);
|
|
|
+ request.setStartTime(dateRange.getStartTime());
|
|
|
+ request.setEndTime(dateRange.getEndTime());
|
|
|
+ SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgById(request.getOrgId(), SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
|
|
|
+ request.setOrgPath(sysOrg.getPath());
|
|
|
+ }
|
|
|
+
|
|
|
+ private Integer getRecStatus() {
|
|
|
+ Long orgId = SecurityUtils.getLoginUser().getOrgId();
|
|
|
+ SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgById(orgId, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
|
|
|
+ if (ObjectUtil.isNull(sysOrg.getType())) {
|
|
|
+ throw new SystemException("当前登陆用户机构信息异常!");
|
|
|
+ }
|
|
|
+ Integer recStatus = null;
|
|
|
+ OrgTypeEnum orgTypeEnum = OrgTypeEnum.getOrgTypeEnum(sysOrg.getType());
|
|
|
+ switch (orgTypeEnum) {
|
|
|
+ case SHEGN_LIAN_SHE:
|
|
|
+ recStatus = 4;
|
|
|
+ break;
|
|
|
+ case BAN_SHI_CHU:
|
|
|
+ recStatus = 2;
|
|
|
+ break;
|
|
|
+ case HANG_SHE:
|
|
|
+ recStatus = 0;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ throw new RuntimeException("暂不支持该用户所在机构查看数据!");
|
|
|
+ }
|
|
|
+ return recStatus;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|