|
|
@@ -14,6 +14,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.xunmei.common.core.constant.DictConstants;
|
|
|
import com.xunmei.common.core.constant.ErrorMsgConstants;
|
|
|
import com.xunmei.common.core.constant.SecurityConstants;
|
|
|
+import com.xunmei.common.core.constant.SystemParameterConstant;
|
|
|
import com.xunmei.common.core.domain.DateRange;
|
|
|
import com.xunmei.common.core.domain.R;
|
|
|
import com.xunmei.common.core.domain.drill.domain.*;
|
|
|
@@ -23,6 +24,7 @@ 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.DrillRecStatus;
|
|
|
import com.xunmei.common.core.enums.drill.DrillType;
|
|
|
import com.xunmei.common.core.exception.SystemException;
|
|
|
import com.xunmei.common.core.utils.DateUtils;
|
|
|
@@ -37,9 +39,11 @@ import com.xunmei.core.drill.mapper.CoreDrillTaskToUserMapper;
|
|
|
import com.xunmei.core.drill.service.ICoreDrillTaskService;
|
|
|
import com.xunmei.core.drill.service.ICoreDrillTaskToRoleService;
|
|
|
import com.xunmei.core.drill.service.ICoreDrillTaskToUserService;
|
|
|
+import com.xunmei.system.api.RemoteConfigService;
|
|
|
import com.xunmei.system.api.RemoteFileService;
|
|
|
import com.xunmei.system.api.RemoteOrgService;
|
|
|
import com.xunmei.system.api.RemoteRoleService;
|
|
|
+import com.xunmei.system.api.domain.SysConfig;
|
|
|
import com.xunmei.system.api.domain.SysDictData;
|
|
|
import com.xunmei.system.api.domain.SysOrg;
|
|
|
import com.xunmei.system.api.domain.SysUser;
|
|
|
@@ -89,6 +93,8 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
|
|
|
@Autowired
|
|
|
private CoreDrillPlanMapper coreDrillPlanMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ RemoteConfigService remoteConfigService;
|
|
|
|
|
|
@Override
|
|
|
public TableDataInfo<CoreDrillTaskPageVo> selectPage(CoreDrillTaskPageDto request) {
|
|
|
@@ -703,13 +709,48 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
|
|
|
if (drillTask == null) {
|
|
|
throw new SystemException("获取预案演练数据失败!");
|
|
|
}
|
|
|
- //todo 确认是否能取消推荐
|
|
|
- if (DrillDoStatus.DONE.getCode().equals(drillTask.getStatus())){
|
|
|
- //说明是已完成的案例,设置为正常案例
|
|
|
+ if (request.getRecStatus() > drillTask.getRecStatus()) {
|
|
|
+ //说明是向上级推荐优秀案例,需要判断是否已达上限
|
|
|
+ checkRecNum(drillTask, request.getRecStatus());
|
|
|
+ }
|
|
|
+ //判断是否越级推荐
|
|
|
+ if (ObjectUtil.notEqual(drillTask.getRecStatus(), request.getRecStatus() - 1)) {
|
|
|
+ throw new SystemException("推荐状态异常!");
|
|
|
+ }
|
|
|
+ if (ObjectUtil.notEqual(DrillDoStatus.DONE.getCode(), drillTask.getStatus())) {
|
|
|
+ throw new SystemException("该预案演练任务未完成或已逾期!");
|
|
|
+ }
|
|
|
+ return coreDrillTaskMapper.updateStatusById(request.getDrillTaskId(), request.getRecStatus());
|
|
|
+ }
|
|
|
|
|
|
+ private void checkRecNum(CoreDrillTask drillTask, Integer recStatus) {
|
|
|
+
|
|
|
+ DrillRecStatus drillRecStatus = DrillRecStatus.getDrillRecStatus(recStatus);
|
|
|
+ if (drillRecStatus == null) {
|
|
|
+ throw new SystemException("推荐状态异常!");
|
|
|
+ }
|
|
|
+ SysConfig sysConfig;
|
|
|
+ if (ObjectUtil.equal(drillRecStatus, DrillRecStatus.REC_REGION_EXCELLENT_CASE)) {
|
|
|
+ sysConfig = RemoteCallHandlerExecutor.executeRemoteCall(() ->
|
|
|
+ remoteConfigService.findSysConfigByCode(SystemParameterConstant.HS_REC_DRILL_TASK_MAX, SecurityConstants.INNER), ErrorMsgConstants.QUERY_CONFIG_ERROR);
|
|
|
+ Long count = coreDrillTaskMapper.selectCount(new LambdaQueryWrapper<CoreDrillTask>()
|
|
|
+ .eq(CoreDrillTask::getRecStatus, DrillRecStatus.REC_REGION_EXCELLENT_CASE.getCode())
|
|
|
+ .likeRight(CoreDrillTask::getOrgPath, drillTask.getOrgPath()));
|
|
|
+ if (count != null && count >= Integer.parseInt(sysConfig.getConfigValue())) {
|
|
|
+ throw new SystemException("推荐地区优秀案例已达上限!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (ObjectUtil.equal(drillRecStatus, DrillRecStatus.REC_PROVINCE_EXCELLENT_CASE)) {
|
|
|
+ sysConfig = RemoteCallHandlerExecutor.executeRemoteCall(() ->
|
|
|
+ remoteConfigService.findSysConfigByCode(SystemParameterConstant.AREA_REC_DRILL_TASK_MAX, SecurityConstants.INNER), ErrorMsgConstants.QUERY_CONFIG_ERROR);
|
|
|
|
|
|
+ Long count = coreDrillTaskMapper.selectCount(new LambdaQueryWrapper<CoreDrillTask>()
|
|
|
+ .eq(CoreDrillTask::getRecStatus, DrillRecStatus.REC_PROVINCE_EXCELLENT_CASE.getCode())
|
|
|
+ .likeRight(CoreDrillTask::getOrgPath, drillTask.getOrgPath()));
|
|
|
+ if (count != null && count >= Integer.parseInt(sysConfig.getConfigValue())) {
|
|
|
+ throw new SystemException("推荐省级优秀案例已达上限!");
|
|
|
+ }
|
|
|
}
|
|
|
- return 0;
|
|
|
}
|
|
|
}
|
|
|
|