Commit eba126aa by 张祺

修正任务下发启动的问题

parent b258d5b8
...@@ -432,6 +432,8 @@ public class TaskServiceImpl implements TaskService { ...@@ -432,6 +432,8 @@ public class TaskServiceImpl implements TaskService {
models.add(model); models.add(model);
} }
break; break;
case Constants.OBJ_TYPE_USER:
break;
} }
Map<String, String> idMapValues = new HashMap<>(); Map<String, String> idMapValues = new HashMap<>();
for (TaskIndValue value : values) { for (TaskIndValue value : values) {
...@@ -587,110 +589,126 @@ public class TaskServiceImpl implements TaskService { ...@@ -587,110 +589,126 @@ public class TaskServiceImpl implements TaskService {
Result result = null; Result result = null;
TaskRule rule = taskRuleService.getById(ruleId, true); TaskRule rule = taskRuleService.getById(ruleId, true);
if (rule != null) { if (rule != null) {
String roleIdStr = rule.getToRoleIds(); List<Task> tasks = taskMapper.getByRuleIdAndValueTime(ruleId, valueTime, false);
if (StringUtils.isNotBlank(roleIdStr)) { if (CollectionUtils.isNotEmpty(tasks)) {
List<NoticeInfo> noticeInfos = new ArrayList<>(); boolean found = false;
List<RoleRefUserModel> users = getUserByRoleIdStr(roleIdStr); for (Task t : tasks) {
if (users.size() > 0) { if (t.getStatus() == Constants.APPLY_STATE_DRAFT || t.getStatus() == Constants.APPLY_STATE_AUDITING) {
List<TaskRuleIndicator> indicators = rule.getIndicators(); found = true;
if (CollectionUtils.isNotEmpty(indicators)) { }
List<TaskIndicator> taskIndicators = new ArrayList<>(); }
for (TaskRuleIndicator indicator : indicators) { if (found) {
List<BaseIndDef> baseIndDefs = result = Result.genFailedResult("该规则已经存在相同时间的任务在填报或者审核中");
this.indRelService.getRelByIndId(indicator.getIndId(), "1"); }
getBaseIndDef(ruleId, null, baseIndDefs, taskIndicators); }
} if (result == null) {
if (CollectionUtils.isNotEmpty(taskIndicators)) { String roleIdStr = rule.getToRoleIds();
//数据项按归属部门分组 if (StringUtils.isNotBlank(roleIdStr)) {
ImmutableListMultimap<String, TaskIndicator> deptMapInds = List<NoticeInfo> noticeInfos = new ArrayList<>();
Multimaps.index(taskIndicators, (taskIndicator) -> taskIndicator.getIndDept()); List<RoleRefUserModel> users = getUserByRoleIdStr(roleIdStr);
//角色关联用户按归属部门分组 if (users.size() > 0) {
ImmutableListMultimap<String, RoleRefUserModel> deptUsers = List<TaskRuleIndicator> indicators = rule.getIndicators();
Multimaps.index(users, (roleRefUser) -> roleRefUser.getRefIndDept()); if (CollectionUtils.isNotEmpty(indicators)) {
//每个分组组成一个任务 List<TaskIndicator> taskIndicators = new ArrayList<>();
Date now = new Date(); for (TaskRuleIndicator indicator : indicators) {
int addEndDate = rule.getTimeLimit(); List<BaseIndDef> baseIndDefs =
int addAuditDate = rule.getAuditLimit(); this.indRelService.getRelByIndId(indicator.getIndId(), "1");
Date editEndDate = DateUtils.addDay(now, addEndDate); getBaseIndDef(ruleId, null, baseIndDefs, taskIndicators);
Date auditEndDate = DateUtils.addDay(now, addEndDate + addAuditDate); }
String user = SystemUserUtil.getCurrentUser(); if (CollectionUtils.isNotEmpty(taskIndicators)) {
List<Task> allTasks = new ArrayList<>(); //数据项按归属部门分组
for (String dept : deptMapInds.keys()) { ImmutableListMultimap<String, TaskIndicator> deptMapInds =
List<TaskIndicator> tis = deptMapInds.get(dept); Multimaps.index(taskIndicators, (taskIndicator) -> taskIndicator.getIndDept());
List<RoleRefUserModel> refUsers = deptUsers.get(dept); //角色关联用户按归属部门分组
if (CollectionUtils.isEmpty(refUsers)) { ImmutableListMultimap<String, RoleRefUserModel> deptUsers =
result = Result.genFailedResult("该规则对应的数据项所属部门{" + dept + "}找不到对应的用户"); Multimaps.index(users, (roleRefUser) -> roleRefUser.getRefIndDept());
break; //每个分组组成一个任务
} else { Date now = new Date();
Task task = new Task(); int addEndDate = rule.getTimeLimit();
task.setId(IdWorker.getStrId()); int addAuditDate = rule.getAuditLimit();
task.setValueTime(valueTime); Date editEndDate = DateUtils.addDay(now, addEndDate);
task.setCreateTime(now); Date auditEndDate = DateUtils.addDay(now, addEndDate + addAuditDate);
task.setNeedLast(needLast); String user = SystemUserUtil.getCurrentUser();
task.setToRoleNames(rule.getToRoleNames()); List<Task> allTasks = new ArrayList<>();
task.setCreator(user); for (String dept : deptMapInds.keySet()) {
task.setUpdateTime(now); List<TaskIndicator> tis = deptMapInds.get(dept);
task.setUpdater(user); List<RoleRefUserModel> refUsers = deptUsers.get(dept);
task.setStatus(Constants.APPLY_STATE_DRAFT); if (CollectionUtils.isEmpty(refUsers)) {
task.setState(Constants.DATA_STATE_A); result = Result.genFailedResult("该规则对应的数据项所属部门{" + dept + "}找不到对应的用户");
task.setIndicators(tis); break;
task.setNeedSelfEnter(false); } else {
task.setHasChildren(false); Task task = new Task();
task.setNeedSum(false); task.setId(IdWorker.getStrId());
task.setEndDate(editEndDate); task.setValueTime(valueTime);
task.setAuditEndDate(auditEndDate); task.setCreateTime(now);
task.setRuleName(rule.getName()); task.setNeedLast(needLast);
task.setRuleType(rule.getRuleType()); task.setToRoleNames(rule.getToRoleNames());
task.setRuleId(rule.getId()); task.setCreator(user);
task.setRuleLevel(rule.getRuleLevel()); task.setUpdateTime(now);
task.setGroupId(rule.getGroupId()); task.setUpdater(user);
task.setRefIndDept(dept); task.setStatus(Constants.APPLY_STATE_DRAFT);
task.setDescription(rule.getDescription()); task.setState(Constants.DATA_STATE_A);
StringBuilder userNames = new StringBuilder(Constants.SEP_COMMA); task.setIndicators(tis);
StringBuilder userIds = new StringBuilder(Constants.SEP_COMMA); task.setNeedSelfEnter(false);
for (RoleRefUserModel um : refUsers) { task.setHasChildren(false);
userNames.append(um.getDisName()); task.setNeedSum(false);
userNames.append(Constants.SEP_COMMA); task.setEndDate(editEndDate);
userIds.append(um.getId()); task.setAuditEndDate(auditEndDate);
userIds.append(Constants.SEP_COMMA); task.setRuleName(rule.getName());
NoticeInfo noticeInfo = new NoticeInfo(); task.setRuleType(rule.getRuleType());
noticeInfo.setCreateTime(now); task.setRuleId(rule.getId());
noticeInfo.setCreator(user); task.setRuleLevel(rule.getRuleLevel());
noticeInfo.setDetail("您有新的数据填报任务:" + task.setGroupId(rule.getGroupId());
task.getRuleName() + "-[" +task.getId()+ "]"); task.setRefIndDept(dept);
noticeInfo.setTitle("您有新的数据填报任务:" + task.getRuleName() ); task.setDescription(rule.getDescription());
noticeInfo.setToUserId(um.getId()); StringBuilder userNames = new StringBuilder(Constants.SEP_COMMA);
noticeInfo.setIsRead(false); StringBuilder userIds = new StringBuilder(Constants.SEP_COMMA);
noticeInfo.setState(Constants.DATA_STATE_A); for (RoleRefUserModel um : refUsers) {
noticeInfo.setUpdater(user); userNames.append(um.getDisName());
noticeInfo.setUpdateTime(now); userNames.append(Constants.SEP_COMMA);
noticeInfos.add(noticeInfo); 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) {
if (result != null && !allTasks.isEmpty()) { if (!allTasks.isEmpty()) {
this.batchCreateTask(allTasks, valueTime, ruleId); this.batchCreateTask(allTasks, valueTime, ruleId);
rule.setLastActiveTime(now); rule.setLastActiveTime(now);
taskRuleService.updateRuleWithInd(rule); taskRuleService.updateRuleWithInd(rule);
noticeInfoService.createNotices(noticeInfos); noticeInfoService.createNotices(noticeInfos);
result = Result.genOkResult(); result = Result.genOkResult();
} else if (result != null) { } else {
result = Result.genFailedResult("规则配置没有生成可用的任务信息"); result = Result.genFailedResult("规则配置没有生成可用的任务信息");
}
}
} else {
result = Result.genFailedResult("规则配置的指标没有可用的数据项");
} }
} else { } else {
result = Result.genFailedResult("规则配置的指标没有可用的数据项"); result = Result.genFailedResult("规则没有配置相关的指标");
} }
} else { } else {
result = Result.genFailedResult("规则没有配置相关的指标"); result = Result.genFailedResult("找不到用户来生成任务");
} }
} else { } else {
result = Result.genFailedResult("找不到用户来生成任务"); result = Result.genFailedResult("规则没有配置对应的下发对象");
} }
} else {
result = Result.genFailedResult("规则没有配置对应的下发对象");
} }
} else { } else {
result = Result.genFailedResult("规则不存在"); result = Result.genFailedResult("规则不存在");
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
values values
<foreach collection="notices" item="nt" separator=","> <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} #{nt.creator},#{nt.updater}, #{nt.createTime}, #{nt.updateTime}
) )
</foreach> </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