Commit 6fcbdfd8 by 张祺

修改任务启动支持多个

parent badcce0c
......@@ -34,165 +34,31 @@ import java.util.List;
@RequestMapping(value = "/task")
public class TaskCtrl {
@Autowired
private TaskRuleService taskRuleService;
@Autowired
private TaskService taskService;
@Autowired
private SystemAuthService systemAuthService;
@Autowired
private IndicatorsRelService indRelService;
@ApiOperation("(启动)根据规则生成相关填报任务")
@GetMapping("generateTaskByRule")
public Result generateTaskByRule(@ApiParam("规则id") @RequestParam("ruleId") Integer ruleId,
public Result generateTaskByRule(@ApiParam("规则id") @RequestParam("ruleId") List<Integer> ruleIds,
@ApiParam("收数月份, 格式: 2020-03、2020-06、2020-09、2020-12") @RequestParam("valueTime")String valueTime) {
Result result = null;
TaskRule rule = taskRuleService.getById(ruleId, true);
if (rule != null) {
String roleIdStr = rule.getToRoleIds();
if (StringUtils.isNotBlank(roleIdStr)) {
String[] roleIds = StringUtils.split(roleIdStr, Constants.SEP_COMMA);
List<RoleRefUserModel> users = new ArrayList<>();
for (String roleId : roleIds) {
List<JSONObject> list =
systemAuthService.findUserList(roleId, true,
null, null, null, 1, 100);
if (CollectionUtils.isNotEmpty(list)) {
for (JSONObject jo : list) {
RoleRefUserModel user = new RoleRefUserModel();
user.setId(jo.getString("id"));
user.setDisName(jo.getString("disname"));
user.setRefIndDept(jo.getString("refIndDept"));
String refIndDept = user.getRefIndDept();
if (StringUtils.isBlank(refIndDept)) {
continue;
}
if (!users.contains(user)) {
users.add(user);
}
}
}
}
if (users.size() > 0) {
List<TaskRuleIndicator> indicators = rule.getIndicators();
if (CollectionUtils.isNotEmpty(indicators)) {
List<TaskIndicator> taskIndicators = new ArrayList<>();
for (TaskRuleIndicator indicator : indicators) {
List<BaseIndDef> baseIndDefs =
this.indRelService.getRelByIndId(indicator.getIndId(), "1");
getBaseIndDef(ruleId, null, baseIndDefs, taskIndicators);
}
if (CollectionUtils.isNotEmpty(taskIndicators)) {
//数据项按归属部门分组
ImmutableListMultimap<String, TaskIndicator> deptMapInds =
Multimaps.index(taskIndicators, (taskIndicator)-> taskIndicator.getIndDept());
//角色关联用户按归属部门分组
ImmutableListMultimap<String, RoleRefUserModel> deptUsers =
Multimaps.index(users, (roleRefUser)-> roleRefUser.getRefIndDept());
//每个分组组成一个任务
Date now = new Date();
int addEndDate = rule.getTimeLimit();
int addAuditDate = rule.getAuditLimit();
Date editEndDate = DateUtils.addDay(now, addEndDate);
Date auditEndDate = DateUtils.addDay(now, addEndDate + addAuditDate);
String userId = SystemUserUtil.getCurrentUserId();
List<Task> allTasks = new ArrayList<>();
for (String dept : deptMapInds.keys()) {
List<TaskIndicator> tis = deptMapInds.get(dept);
List<RoleRefUserModel> refUsers = deptUsers.get(dept);
if (CollectionUtils.isEmpty(refUsers)) {
result = Result.genFailedResult("该规则对应的数据项所属部门{"+ dept +"}找不到对应的用户");
break;
} else {
Task task = new Task();
task.setValueTime(valueTime);
task.setStatus(Constants.APPLY_STATE_DRAFT);
task.setIndicators(tis);
task.setCreateTime(now);
task.setCreator(userId);
task.setUpdateTime(now);
task.setUpdater(userId);
task.setNeedSelfEnter(false);
task.setNeedSum(false);
task.setEndDate(editEndDate);
task.setAuditEndDate(auditEndDate);
task.setRuleName(rule.getName());
task.setRuleType(rule.getRuleType());
task.setRuleId(rule.getId());
task.setRuleLevel(rule.getRuleLevel());
task.setGroupId(rule.getGroupId());
task.setDescription(rule.getDescription());
StringBuilder userNames = new StringBuilder(Constants.SEP_COMMA);
StringBuilder userIds = new StringBuilder(Constants.SEP_COMMA);
for (RoleRefUserModel um : refUsers) {
userNames.append(um.getDisName());
userNames.append(Constants.SEP_COMMA);
userIds.append(um.getId());
userIds.append(Constants.SEP_COMMA);
}
task.setEnterUsers(userIds.toString());
task.setEnterUserNames(userNames.toString());
}
taskService.createTaskByRule(allTasks, valueTime, ruleId);
rule.setLastActiveTime(now);
taskRuleService.updateRule(rule);
}
} else {
result = Result.genFailedResult("规则配置的指标没有可用的数据项");
}
} else {
result = Result.genFailedResult("规则没有配置相关的指标");
}
} else {
result = Result.genFailedResult("找不到用户来生成任务");
}
if (CollectionUtils.isNotEmpty(ruleIds)) {
if (ruleIds.size() > 1) {
taskService.batchCreateTaskByRule(ruleIds, valueTime);
result = Result.genOkResult("开始批量启动任务");
} else {
result = Result.genFailedResult("规则没有配置对应的下发对象");
result = taskService.createTaskByRule(ruleIds.get(0), valueTime);
}
} else {
result = Result.genFailedResult("规则不存在");
result = Result.genFailedResult("没有选择需要启动的任务");
}
return result;
}
/**
* 获取关联的数据项和子数据项
* @param ruleId
* @param parentIndId
* @param baseIndDefs
* @param taskIndicators
*/
private void getBaseIndDef(Integer ruleId, String parentIndId, List<BaseIndDef> baseIndDefs, List<TaskIndicator> taskIndicators) {
if (CollectionUtils.isNotEmpty(baseIndDefs)) {
for (BaseIndDef baseIndDef : baseIndDefs) {
TaskIndicator taskIndicator = new TaskIndicator();
taskIndicator.setIndFormula(baseIndDef.getIndFormat());
taskIndicator.setRuleId(ruleId);
taskIndicator.setParentIndId(parentIndId);
taskIndicator.setIndSource(baseIndDef.getIndSource());
taskIndicator.setIndUnit(baseIndDef.getIndUnit());
taskIndicator.setIndId(baseIndDef.getIndId());
taskIndicator.setIndDept(baseIndDef.getIndDept());
if (!taskIndicators.contains(taskIndicator)) {
taskIndicators.add(taskIndicator);
} else {
continue;
}
List<BaseIndDef> children = baseIndDef.getChildrens();
if (CollectionUtils.isNotEmpty(children)) {
taskIndicator.setHasChildren(true);
} else {
taskIndicator.setHasChildren(false);
}
getBaseIndDef(ruleId, taskIndicator.getIndId(), children, taskIndicators);
}
}
}
@ApiOperation("根据关键字、规则类型、用户获取相关的填报任务")
@PostMapping("findByPage")
......
package com.keymobile.indicators.service.dataenter;
import com.keymobile.indicators.model.entity.dataenter.*;
import com.keymobile.indicators.result.Result;
import io.swagger.annotations.ApiParam;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
......@@ -23,7 +26,7 @@ public interface TaskService {
* @param valueTime
* @param ruleId
*/
void createTaskByRule(List<Task> tasks, String valueTime, Integer ruleId);
void batchCreateTask(List<Task> tasks, String valueTime, Integer ruleId);
/**
* 更新任务
* @param task
......@@ -140,4 +143,23 @@ public interface TaskService {
* @return
*/
TaskAnalysisResult analysisTask(QueryTaskParam param);
/**
* 批量启动任务
* @param ruleIds
* @param valueTime
* @return
*/
void batchCreateTaskByRule(List<Integer> ruleIds,
@ApiParam("收数月份, 格式: 2020-03、2020-06、2020-09、2020-12")String valueTime);
/**
* 单个生成任务
* @param ruleId
* @param valueTime
* @return
*/
Result createTaskByRule(Integer ruleId,
@ApiParam("收数月份, 格式: 2020-03、2020-06、2020-09、2020-12")String valueTime);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment