Commit e4662b65 by 张祺

修改任务规则相关模型

parent bb126eeb
......@@ -23,6 +23,7 @@
<akka.version>2.6.0-M4</akka.version>
<poi.version>4.1.1</poi.version>
<easyExcel.version>2.1.1</easyExcel.version>
<fastjson.version>1.2.70</fastjson.version>
</properties>
<dependencies>
......@@ -181,6 +182,11 @@
<systemPath>${project.basedir}/lib/auth-common-1.0.2-SNAPSHOT.jar</systemPath>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
......
package com.keymobile.indicators.api.hytobacco;
import com.alibaba.fastjson.JSONObject;
import com.keymobile.indicators.constant.Constants;
import com.keymobile.indicators.model.entity.AuthModel;
import com.keymobile.indicators.model.entity.UserModel;
import com.keymobile.indicators.model.entity.dataenter.*;
import com.keymobile.indicators.model.entity.indicators.BaseIndDef;
import com.keymobile.indicators.result.Result;
import com.keymobile.indicators.service.SystemAuthService;
import com.keymobile.indicators.service.dataenter.TaskRuleService;
import com.keymobile.indicators.service.dataenter.TaskService;
import com.keymobile.indicators.service.hytobacco.IndicatorsRelService;
import com.keymobile.indicators.utils.IdWorker;
import com.keymobile.indicators.utils.SystemUserUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
@Api(tags={"数据填报-填报任务管理"})
......@@ -25,14 +36,100 @@ public class TaskCtrl {
@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") Integer ruleId,
@ApiParam("收数月份, 格式: 2020-03、2020-06、2020-09、2020-12") @RequestParam("valueTime")String valueTime) {
Result result = null;
taskRuleService.getById(ruleId);
TaskRule rule = taskRuleService.getById(ruleId);
if (rule != null) {
String roleIdStr = rule.getToRoleIds();
if (StringUtils.isNotBlank(roleIdStr)) {
String[] roleIds = StringUtils.split(roleIdStr, Constants.SEP_COMMA);
List<UserModel> 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) {
UserModel user = new UserModel();
user.setId(jo.getString("id"));
user.setDisName(jo.getString("disname"));
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)) {
//TODO
} else {
result = Result.genFailedResult("规则配置的指标没有可用的数据项");
}
} else {
result = Result.genFailedResult("规则没有配置相关的指标");
}
} else {
result = Result.genFailedResult("找不到用户来生成任务");
}
} else {
result = Result.genFailedResult("规则没有配置对应的下发对象");
}
} else {
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.setIndSource(Integer.parseInt(baseIndDef.getIndSource()));
taskIndicator.setIndUnit(baseIndDef.getIndUnit());
taskIndicator.setIndId(baseIndDef.getIndId());
if (!taskIndicators.contains(taskIndicator)) {
taskIndicators.add(taskIndicator);
} else {
continue;
}
List<BaseIndDef> children = baseIndDef.getChildren();
if (CollectionUtils.isNotEmpty(children)) {
taskIndicator.setHasChildren(true);
} else {
taskIndicator.setHasChildren(false);
}
getBaseIndDef(ruleId, taskIndicator.getIndId(), children, taskIndicators);
}
}
}
@ApiOperation("根据关键字、规则类型、用户获取相关的填报任务")
@PostMapping("findByPage")
public Page<Task> findByPage(@RequestBody QueryTaskParam param) {
......
package com.keymobile.indicators.api.hytobacco;
import com.keymobile.indicators.constant.Constants;
import com.keymobile.indicators.model.entity.RoleModel;
import com.keymobile.indicators.model.entity.dataenter.TaskRule;
import com.keymobile.indicators.model.entity.dataenter.TaskRuleGroupObj;
import com.keymobile.indicators.result.Result;
import com.keymobile.indicators.service.dataenter.TaskRuleService;
import com.keymobile.indicators.utils.LogManager;
......@@ -15,6 +17,7 @@ import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.List;
@Api(tags={"数据填报-任务规则管理"})
@RestController
......@@ -75,5 +78,19 @@ public class TaskRuleCtrl {
return result;
}
@ApiOperation("根据规则类型获取任务单位列表")
@GetMapping("findGroupObjs")
public List<TaskRuleGroupObj> findGroupObjs(@ApiParam("规则类型:1 省 2 市 3 县")
@RequestParam(value = "ruleType", required = false) Integer ruleType) {
return taskRuleService.findRuleGroupObj(ruleType);
}
@ApiOperation("根据规则类型获取任务单位列表")
@GetMapping("findTaskRoles")
public List<RoleModel> findTaskRoles(@ApiParam("规则类型:1 省 2 市 3 县")
@RequestParam(value = "ruleType", required = false) Integer ruleType) {
return null;
}
}
......@@ -24,6 +24,11 @@ public class Constants {
*/
public static final String SEP_DOT = ".";
/**
* 分隔符,
*/
public static final String SEP_COMMA = ",";
/**
* 分隔符/
*/
public static final String SEP = "/";
......
package com.keymobile.indicators.model.entity;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.util.Objects;
@Data
@ApiModel("权限对象(角色、用户)")
public class AuthModel {
private String id;
private String name;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
AuthModel authModel = (AuthModel) o;
return Objects.equals(id, authModel.id) &&
Objects.equals(name, authModel.name);
}
@Override
public int hashCode() {
return Objects.hash(id, name);
}
}
package com.keymobile.indicators.model.entity;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@Data
@ApiModel("角色对象")
public class OrgModel {
private String id;
private String name;
}
package com.keymobile.indicators.model.entity;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@Data
@ApiModel("角色对象")
public class RoleModel {
private String id;
private String name;
}
......@@ -70,7 +70,7 @@ public class TaskIndValue extends BaseModel {
/**
* 数据对象类型:1、组织机构 2、人员
*/
@ApiModelProperty("数据对象类型:1、组织机构 2、人员")
@ApiModelProperty("数据对象类型:1、组织机构 2、人员 3、岗位")
private Integer objType;
/**
......
......@@ -5,6 +5,7 @@ import lombok.Data;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Objects;
/**
* 任务关联的数据项
......@@ -17,9 +18,9 @@ public class TaskIndicator extends BaseModel {
private String id;
/**
* 任务关联数据项id
* 所属任务规则id
*/
private String tiId;
private Integer ruleId;
/**
* 所属任务id
......@@ -32,6 +33,16 @@ public class TaskIndicator extends BaseModel {
private String indId;
/**
* 是否存在子数据项
*/
private Boolean hasChildren;
/**
* 父指标id
*/
private Integer parentIndId;
/**
* 指标名称
*/
private String indName;
......@@ -50,4 +61,25 @@ public class TaskIndicator extends BaseModel {
* 数据项关联的公式
*/
private String indFormula;
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
if (!super.equals(o)) {
return false;
}
TaskIndicator indicator = (TaskIndicator) o;
return Objects.equals(taskId, indicator.taskId) &&
Objects.equals(indId, indicator.indId);
}
@Override
public int hashCode() {
return Objects.hash(super.hashCode(), taskId, indId);
}
}
......@@ -74,6 +74,13 @@ public class TaskRule extends BaseModel {
@ApiModelProperty("上报时限,填完后多少天上报完, >= 0")
private Integer submitLimit;
@ApiModelProperty("任务单位id")
private String groupId;
@Transient
@ApiModelProperty("任务单位名称")
private String groupName;
/**
* 填报角色id,多个用,分割
*/
......
package com.keymobile.indicators.service.dataenter;
import com.keymobile.indicators.model.entity.dataenter.TaskRule;
import com.keymobile.indicators.model.entity.dataenter.TaskRuleGroupObj;
import org.springframework.data.domain.Page;
import java.util.List;
/**
* 任务规则管理
*/
......@@ -52,9 +55,10 @@ public interface TaskRuleService {
Page<TaskRule> findRuleByPage(Integer ruleType, String keyword, int page, int pageSize);
/**
* 根据规则生成填报任务
* @param ruleId
* @param valueTime
* 规则类型
* @param ruleType
* @return
*/
void createTaskByRule(Integer ruleId, String valueTime);
List<TaskRuleGroupObj> findRuleGroupObj(Integer ruleType);
}
......@@ -18,6 +18,13 @@ public interface TaskService {
Task createTask(Task task);
/**
* 根据规则和时间批量创建任务
* @param tasks
* @param valueTime
* @param ruleId
*/
void createTaskByRule(List<Task> tasks, String valueTime, Integer ruleId);
/**
* 更新任务
* @param task
*/
......
......@@ -2,9 +2,11 @@ package com.keymobile.indicators.service.dataenter.impl;
import com.keymobile.indicators.constant.Constants;
import com.keymobile.indicators.model.entity.dataenter.TaskRule;
import com.keymobile.indicators.model.entity.dataenter.TaskRuleGroupObj;
import com.keymobile.indicators.model.entity.dataenter.TaskRuleIndicator;
import com.keymobile.indicators.model.mapper.indicators.TaskRuleIndicatorMapper;
import com.keymobile.indicators.model.mapper.indicators.TaskRuleMapper;
import com.keymobile.indicators.model.mapper.indicators.TaskRuleObjMapper;
import com.keymobile.indicators.service.dataenter.TaskRuleService;
import com.keymobile.indicators.service.dataenter.TaskService;
import org.apache.commons.collections.CollectionUtils;
......@@ -28,6 +30,9 @@ public class TaskRuleServiceImpl implements TaskRuleService {
private TaskRuleIndicatorMapper taskRuleIndicatorMapper;
@Autowired
private TaskRuleObjMapper taskRuleObjMapper;
@Autowired
private TaskService taskService;
......@@ -99,12 +104,8 @@ public class TaskRuleServiceImpl implements TaskRuleService {
}
@Override
@Transactional(rollbackFor = Exception.class)
public void createTaskByRule(Integer ruleId, String valueTime) {
// 先删除已有的任务
taskService.deleteByRuleIdAndValueTime(ruleId, valueTime);
TaskRule rule = getById(ruleId);
List<TaskRuleIndicator> ruleIndicators = rule.getIndicators();
public List<TaskRuleGroupObj> findRuleGroupObj(Integer ruleType) {
return taskRuleObjMapper.findAllByRuleType(ruleType);
}
......
package com.keymobile.indicators.service.dataenter.impl;
import com.alibaba.fastjson.JSONObject;
import com.keymobile.indicators.constant.Constants;
import com.keymobile.indicators.model.entity.UserModel;
import com.keymobile.indicators.model.entity.dataenter.*;
import com.keymobile.indicators.model.mapper.indicators.*;
import com.keymobile.indicators.service.SystemAuthService;
import com.keymobile.indicators.service.dataenter.TaskService;
import com.keymobile.indicators.utils.IdWorker;
import org.apache.commons.collections.CollectionUtils;
......@@ -35,6 +38,9 @@ public class TaskServiceImpl implements TaskService {
@Autowired
private TaskRuleIndicatorMapper taskRuleIndicatorMapper;
@Autowired
private SystemAuthService systemAuthService;
@Override
@Transactional(rollbackFor = Exception.class)
public Task createTask(Task task) {
......@@ -45,6 +51,17 @@ public class TaskServiceImpl implements TaskService {
@Override
@Transactional(rollbackFor = Exception.class)
public void createTaskByRule(List<Task> tasks, String valueTime, Integer ruleId) {
deleteByRuleIdAndValueTime(ruleId, valueTime);
for (Task task : tasks) {
task.setValueTime(valueTime);
taskMapper.insert(task);
saveTaskIndicators(task);
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateTask(Task task) {
taskIndicatorMapper.deleteByTaskId(task.getId());
taskMapper.updateByPrimaryKey(task);
......@@ -61,6 +78,8 @@ public class TaskServiceImpl implements TaskService {
for (TaskIndicator indicator : indicators) {
indicator.setId(IdWorker.getStrId());
indicator.setState(Constants.DATA_STATE_A);
indicator.setTaskId(task.getId());
indicator.setRuleId(task.getRuleId());
taskIndicatorMapper.insert(indicator);
}
}
......@@ -152,12 +171,28 @@ public class TaskServiceImpl implements TaskService {
break;
case 2:
//人员
for (String obj : objIds) {
}
break;
case 3:
//角色
List<UserModel> users = new ArrayList<>();
for (String obj : objIds) {
List<JSONObject> list =
systemAuthService.findUserList(obj, true,
null, null, null, 1, 100);
if (CollectionUtils.isNotEmpty(list)) {
for (JSONObject jo : list) {
UserModel user = new UserModel();
user.setId(jo.getString("id"));
user.setDisName(jo.getString("disname"));
if (!users.contains(user)) {
users.add(user);
}
}
}
}
break;
default:
break;
}
//TODO 保存任务和关联的指标信息
......
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