Commit eba126aa by 张祺

修正任务下发启动的问题

parent b258d5b8
......@@ -432,6 +432,8 @@ public class TaskServiceImpl implements TaskService {
models.add(model);
}
break;
case Constants.OBJ_TYPE_USER:
break;
}
Map<String, String> idMapValues = new HashMap<>();
for (TaskIndValue value : values) {
......@@ -587,110 +589,126 @@ public class TaskServiceImpl implements TaskService {
Result result = null;
TaskRule rule = taskRuleService.getById(ruleId, true);
if (rule != null) {
String roleIdStr = rule.getToRoleIds();
if (StringUtils.isNotBlank(roleIdStr)) {
List<NoticeInfo> noticeInfos = new ArrayList<>();
List<RoleRefUserModel> users = getUserByRoleIdStr(roleIdStr);
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 user = SystemUserUtil.getCurrentUser();
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.setId(IdWorker.getStrId());
task.setValueTime(valueTime);
task.setCreateTime(now);
task.setNeedLast(needLast);
task.setToRoleNames(rule.getToRoleNames());
task.setCreator(user);
task.setUpdateTime(now);
task.setUpdater(user);
task.setStatus(Constants.APPLY_STATE_DRAFT);
task.setState(Constants.DATA_STATE_A);
task.setIndicators(tis);
task.setNeedSelfEnter(false);
task.setHasChildren(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.setRefIndDept(dept);
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);
NoticeInfo noticeInfo = new NoticeInfo();
noticeInfo.setCreateTime(now);
noticeInfo.setCreator(user);
noticeInfo.setDetail("您有新的数据填报任务:" +
task.getRuleName() + "-[" +task.getId()+ "]");
noticeInfo.setTitle("您有新的数据填报任务:" + task.getRuleName() );
noticeInfo.setToUserId(um.getId());
noticeInfo.setIsRead(false);
noticeInfo.setState(Constants.DATA_STATE_A);
noticeInfo.setUpdater(user);
noticeInfo.setUpdateTime(now);
noticeInfos.add(noticeInfo);
List<Task> tasks = taskMapper.getByRuleIdAndValueTime(ruleId, valueTime, false);
if (CollectionUtils.isNotEmpty(tasks)) {
boolean found = false;
for (Task t : tasks) {
if (t.getStatus() == Constants.APPLY_STATE_DRAFT || t.getStatus() == Constants.APPLY_STATE_AUDITING) {
found = true;
}
}
if (found) {
result = Result.genFailedResult("该规则已经存在相同时间的任务在填报或者审核中");
}
}
if (result == null) {
String roleIdStr = rule.getToRoleIds();
if (StringUtils.isNotBlank(roleIdStr)) {
List<NoticeInfo> noticeInfos = new ArrayList<>();
List<RoleRefUserModel> users = getUserByRoleIdStr(roleIdStr);
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 user = SystemUserUtil.getCurrentUser();
List<Task> allTasks = new ArrayList<>();
for (String dept : deptMapInds.keySet()) {
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.setId(IdWorker.getStrId());
task.setValueTime(valueTime);
task.setCreateTime(now);
task.setNeedLast(needLast);
task.setToRoleNames(rule.getToRoleNames());
task.setCreator(user);
task.setUpdateTime(now);
task.setUpdater(user);
task.setStatus(Constants.APPLY_STATE_DRAFT);
task.setState(Constants.DATA_STATE_A);
task.setIndicators(tis);
task.setNeedSelfEnter(false);
task.setHasChildren(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.setRefIndDept(dept);
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);
NoticeInfo noticeInfo = new NoticeInfo();
noticeInfo.setCreateTime(now);
noticeInfo.setCreator(user);
noticeInfo.setDetail("您有新的数据填报任务:" +
task.getRuleName() + "-[" + task.getId() + "]");
noticeInfo.setTitle("您有新的数据填报任务:" + task.getRuleName());
noticeInfo.setToUserId(um.getId());
noticeInfo.setIsRead(false);
noticeInfo.setState(Constants.DATA_STATE_A);
noticeInfo.setUpdater(user);
noticeInfo.setUpdateTime(now);
noticeInfos.add(noticeInfo);
}
task.setEnterUsers(userIds.toString());
task.setEnterUserNames(userNames.toString());
allTasks.add(task);
}
task.setEnterUsers(userIds.toString());
task.setEnterUserNames(userNames.toString());
allTasks.add(task);
}
}
if (result != null && !allTasks.isEmpty()) {
this.batchCreateTask(allTasks, valueTime, ruleId);
rule.setLastActiveTime(now);
taskRuleService.updateRuleWithInd(rule);
noticeInfoService.createNotices(noticeInfos);
result = Result.genOkResult();
} else if (result != null) {
result = Result.genFailedResult("规则配置没有生成可用的任务信息");
if (result == null) {
if (!allTasks.isEmpty()) {
this.batchCreateTask(allTasks, valueTime, ruleId);
rule.setLastActiveTime(now);
taskRuleService.updateRuleWithInd(rule);
noticeInfoService.createNotices(noticeInfos);
result = Result.genOkResult();
} else {
result = Result.genFailedResult("规则配置没有生成可用的任务信息");
}
}
} else {
result = Result.genFailedResult("规则配置的指标没有可用的数据项");
}
} else {
result = Result.genFailedResult("规则配置的指标没有可用的数据项");
result = Result.genFailedResult("规则没有配置相关的指标");
}
} else {
result = Result.genFailedResult("规则没有配置相关的指标");
result = Result.genFailedResult("找不到用户来生成任务");
}
} else {
result = Result.genFailedResult("找不到用户来生成任务");
result = Result.genFailedResult("规则没有配置对应的下发对象");
}
} else {
result = Result.genFailedResult("规则没有配置对应的下发对象");
}
} else {
result = Result.genFailedResult("规则不存在");
......
......@@ -8,7 +8,7 @@
values
<foreach collection="notices" item="nt" separator=",">
(
#{nt.titile}, #{nt.detail}, #{nt.isRead}, #{nt.toUser}, #{nt.state},
#{nt.title}, #{nt.detail}, #{nt.isRead}, #{nt.toUserId}, #{nt.state},
#{nt.creator},#{nt.updater}, #{nt.createTime}, #{nt.updateTime}
)
</foreach>
......
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