Commit 170adf25 by chenweisong

更新

parent 9e2b5d10
......@@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.RestControllerAdvice;
* @author :ws6049
* @date :2019/1/13 0:26
*/
@RestControllerAdvice
//@RestControllerAdvice
public class ExceptionHandlerConfig {
private static final Logger logger = LoggerFactory.getLogger(ExceptionHandlerConfig.class);
......
package com.keymobile.rest.common.exception;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import org.springframework.http.HttpStatus;
@JsonTypeInfo(include = JsonTypeInfo.As.WRAPPER_OBJECT, use = JsonTypeInfo.Id.NAME, property = "error", visible = true)
class ApiError {
private HttpStatus status;
private Long timestamp;
private String message;
private String cnMessage = "网络异常";
private ApiError() {
timestamp = System.currentTimeMillis();
}
ApiError(HttpStatus status) {
this();
this.status = status;
}
ApiError(HttpStatus status, Throwable ex) {
this();
this.status = status;
}
ApiError(HttpStatus status, String message, Throwable ex) {
this();
this.status = status;
this.message = message;
}
ApiError(HttpStatus status, String message, String cnMessage, Throwable ex) {
this();
this.status = status;
this.message = message;
this.cnMessage = cnMessage;
}
public HttpStatus getStatus() {
return status;
}
public Long getTimestamp() {
return timestamp;
}
public String getMessage() {
return message;
}
public String getCnMessage() {
return cnMessage;
}
}
\ No newline at end of file
package com.keymobile.rest.common.exception;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;
import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR;
@Order(Ordered.HIGHEST_PRECEDENCE)
@ControllerAdvice
public class RestExceptionHandler extends ResponseEntityExceptionHandler {
@ExceptionHandler(Exception.class)
protected ResponseEntity<Object> handlException(Exception ex, WebRequest request) {
ApiError apiError;
if (ex instanceof DataIntegrityViolationException) {
apiError = new ApiError(INTERNAL_SERVER_ERROR, ex.getMessage(), "重复值", ex);
} else {
apiError = new ApiError(INTERNAL_SERVER_ERROR, ex.getMessage(), ex);
}
return buildResponseEntity(apiError);
}
private ResponseEntity<Object> buildResponseEntity(ApiError apiError) {
return new ResponseEntity<>(apiError, apiError.getStatus());
}
}
\ No newline at end of file
......@@ -5,7 +5,6 @@ import com.keymobile.rest.common.utils.DateUtil;
import com.keymobile.rest.model.DataInfo;
import com.keymobile.rest.model.Mission;
import com.keymobile.rest.model.Template;
import com.keymobile.rest.model.User;
import com.keymobile.rest.service.DataInfoService;
import com.keymobile.rest.service.TemplateService;
import com.keymobile.rest.service.MissionService;
......@@ -20,7 +19,6 @@ import java.sql.Timestamp;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
@Api(tags = "模板 控制器", description = "Excel Info")
@RestController
......
......@@ -16,6 +16,7 @@ import org.activiti.engine.*;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.IdentityLink;
import org.activiti.engine.task.Task;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -25,6 +26,8 @@ import org.springframework.web.bind.annotation.*;
import java.util.*;
import static com.keymobile.rest.controller.constant.TaskConstant.*;
@Api(tags = "活动 控制器", description = "Task Info")
@RestController
@RequestMapping(path = "/api")
......@@ -42,8 +45,6 @@ public class TaskController {
@Autowired
private TemplateService templateService;
@Autowired
private MissionService missionService;
@Autowired
private UserService userService;
@Autowired
private FeignAuthService feignAuthService;
......@@ -91,92 +92,49 @@ public class TaskController {
return ApiResponse.ok(SimpleTask.convert(activity));
}
@ApiOperation(value = "我的任务", notes = "补录任务列表及审核任务列表")
@ApiOperation(value = "我的任务", notes = "任务列表")
@ApiImplicitParams({
@ApiImplicitParam(name = "userId", value = "用户id", paramType = "query", required = true, dataType = "long", defaultValue = "3")
})
@PostMapping(value = "/getMyTasks")
@PostMapping(value = "/task/getMyTasks")
public ApiResponse getMyMissions(long userId) {
// Map user = feignAuthService.getUserById(userId);
// CommonValidator.notNull(user, "用户不存在");
// String username = user.get("name").toString();
String username = "汤颖思1";
Map user = feignAuthService.getUserById(userId);
CommonValidator.notNull(user, "用户不存在");
String username = user.get("name").toString();
List<Map> missions = new ArrayList<>();
List<Task> tasks = taskService.createTaskQuery().taskAssignee(username).active().list();
// 获取个人任务
List<Task> tasks = taskService.createTaskQuery().taskAssigneeLike("%" + username + "%").active().list();
tasks.forEach(task -> {
Map mission = new HashMap();
mission.put("id", task.getId());
mission.put("user", task.getAssignee());
mission.put("createAt", DateUtil.formatDateTime(task.getCreateTime()));
if (task.getTaskDefinitionKey().toLowerCase().equals("dataenter")) {
mission.put("kind", 1);
mission.put("mission", "填写补录数据");
} else if (task.getTaskDefinitionKey().toLowerCase().equals("dataaudit")) {
mission.put("kind", 2);
mission.put("mission", "审核补录数据");
} else if (task.getTaskDefinitionKey().toLowerCase().equals("useraudit")) {
mission.put("kind", 3);
mission.put("mission", "审核人审核");
} else if (task.getTaskDefinitionKey().toLowerCase().equals("databackflow")) {
mission.put("kind", 4);
mission.put("mission", "数据回流");
}
missions.add(mission);
missions.add(convert(task, ImmutableMap.of("username", username, "type", TASK_TYPE_PERSONAL)));
});
List<UserTemplateMapper> mappers = userTemplateMapperService.findAllByUserIdAndActivityStatus(userId, Activity.STATUS_BEGIN);
mappers.forEach(mapper -> {
Template template = mapper.getTemplate();
// 查找当前模板的任务
List<Task> tassks = taskService.createTaskQuery().taskCandidateUser("id:" + template.getId())
.list();
System.out.println("taskLength:" + tassks.size());
// 获取组任务
List<Task> groupTasks = taskService.createTaskQuery().taskUnassigned().active().list();
groupTasks.forEach(groupTask -> {
List<IdentityLink> identityLinkList = taskService.getIdentityLinksForTask(groupTask.getId());
if (identityLinkList != null && identityLinkList.size() > 0) {
identityLinkList.forEach(identityLink -> {
if (identityLink.getType().equals("candidate")) {
List<UserTemplateMapper> mappers = userTemplateMapperService.findAllByUserIdAndActivityStatus(userId, Activity.STATUS_BEGIN);
mappers.forEach(mapper -> {
Template template = mapper.getTemplate();
// 组id
String groupId = "id:" + template.getId();
if (groupId.equals(identityLink.getGroupId())) {
missions.add(convert(groupTask, ImmutableMap.of("username", username, "type", TASK_TYPE_PERSONAL, "templateId", template.getId())));
}
});
}
});
}
});
List<Task> tasasdasks = taskService.createTaskQuery().taskAssigneeLike(username)
.list();
// tasks.forEach(task -> {
// String assignee = task.getAssignee();
// Map map = new HashMap();
// long templateId = Long.parseLong(assignee.split(":template:")[1]);
// String processId = task.getProcessInstanceId();
// Process process = processService.findByProcessId(processId);
// Mission mission = missionService.findByProcessIdAndUsernameAndTemplateIdAndStatusAndType(process.getId(), username, templateId, Mission.STATUS_BEGIN);
// mission.setTaskId(task.getId());
// missionService.save(mission);
// map.put("id", mission.getId());
// Template template = mission.getTemplate();
// Map _template = new HashMap();
// _template.put("id", mission.getId());
// _template.put("config", template.getConfig());
// _template.put("name", template.getName());
// _template.put("createAt", template.getCreateAt());
// map.put("excelList", Arrays.asList(_template));
//
// if (task.getTaskDefinitionKey().toLowerCase().equals("dataenter")) {
// map.put("kind", 1);
// map.put("mission", "填写补录数据");
// } else if (task.getTaskDefinitionKey().toLowerCase().equals("dataaudit")) {
// map.put("kind", 2);
// map.put("mission", "审核补录数据");
// } else if (task.getTaskDefinitionKey().toLowerCase().equals("useraudit")) {
// map.put("kind", 3);
// map.put("mission", "审核人审核");
// } else if (task.getTaskDefinitionKey().toLowerCase().equals("databackflow")) {
// map.put("kind", 4);
// map.put("mission", "数据回流");
// }
// missions.add(map);
// });
return ApiResponse.ok(missions);
}
@ApiOperation(value = "新建活动")
@PostMapping(value = "/create")
@PostMapping(value = "/task/create")
public ApiResponse createTask(@RequestBody TaskForm form) {
CommonValidator.notEmpty(form.getName(), "名称不能为空");
CommonValidator.notNull(form.getType(), "类型不能为空");
......@@ -228,7 +186,7 @@ public class TaskController {
}
@ApiOperation(value = "修改活动")
@PostMapping(value = "/update")
@PostMapping(value = "/task/update")
public ApiResponse updateTask(@RequestBody TaskForm form) {
return ApiResponse.ok();
}
......@@ -237,10 +195,12 @@ public class TaskController {
@ApiImplicitParams({
@ApiImplicitParam(name = "taskId", value = "活动id", paramType = "query", required = true, dataType = "long")
})
@PostMapping(value = "/start")
public ApiResponse startTask(long taskId) {
@PostMapping(value = "/task/start")
public ApiResponse runTask(long taskId) {
Activity activity = activityService.get(taskId);
CommonValidator.notNull(activity, "活动不存在");
CommonValidator.isTrue(activity.getStatus() == Activity.STATUS_WAIT, "活动正在运行,不能重复启动");
// 根据活动查找需要填写的人 目前只支持一人
List<Template> templateList = activity.getTemplateList();
CommonValidator.notLessThan(templateList.size(), 1, "补录模板不存在");
......@@ -273,8 +233,7 @@ public class TaskController {
Process process = new Process();
process.setProcessId(processInstance.getId());
process.setActivity(activity);
// 新建当前任务进程,但是先不绑定missions
process.setStatus(Process.STATUS_BEGIN);
process.setStartAt(DateUtil.getTimestamp());
processService.save(process);
activity.setStatus(Activity.STATUS_BEGIN);
......@@ -287,7 +246,7 @@ public class TaskController {
@ApiImplicitParams({
@ApiImplicitParam(name = "taskId", value = "活动id", paramType = "query", required = true, dataType = "long")
})
@PostMapping(value = "/pass")
@PostMapping(value = "/task/pass")
public ApiResponse passTask(long taskId) {
Activity activity = activityService.get(taskId);
// 完结活动, 流程跑完
......@@ -304,7 +263,7 @@ public class TaskController {
@ApiOperation(value = "审核驳回活动")
@PostMapping(value = "/reject")
@PostMapping(value = "/task/reject")
public ApiResponse rejectTask(@RequestParam Long taskId) {
Activity activity = activityService.get(taskId);
// 完结活动, 流程跑完
......@@ -317,12 +276,57 @@ public class TaskController {
return ApiResponse.ok();
}
@ApiOperation(value = "查看当前活动进程列表", hidden = true)
@PostMapping(value = "/task/progress")
public ApiResponse viewTasksProgress() {
return ApiResponse.ok();
}
@ApiOperation(value = "查看当前活动进度")
@PostMapping(value = "/task/viewTaskProcess")
public ApiResponse viewTaskProcess(@RequestParam Long taskId) {
@ApiOperation(value = "查看当前活动进度", hidden = true)
@ApiImplicitParams({
@ApiImplicitParam(name = "taskId", value = "活动id", paramType = "query", required = true, dataType = "long")
})
@PostMapping(value = "/task/progress/{taskId}")
public ApiResponse viewTaskProgress(@PathVariable long taskId) {
return ApiResponse.ok();
}
public Map<String, Object> convert(Task task, Map<String, Object> params) {
Map<String, Object> mission = new HashMap<>();
mission.put("id", task.getId());
mission.put("user", params.get("username").toString());
int type = Integer.valueOf(params.get("type").toString());
mission.put("taskType", type);
mission.put("createAt", DateUtil.formatDateTime(task.getCreateTime()));
if (task.getTaskDefinitionKey().toLowerCase().equals(MISSION_LOW_CASE_KEY_DATA_ENTER)) {
mission.put("missionType", MISSION_TYPE_DATA_ENTER);
mission.put("mission", MISSION_TEXT_DATA_ENTER);
long templateId = 0;
if (type == TASK_TYPE_PERSONAL) {
String assignee = task.getAssignee();
String[] array = assignee.split(":");
try {
templateId = Long.parseLong(array[1]);
} catch (Exception e) {
}
} else if (type == TASK_TYPE_GROUP) {
templateId = Long.parseLong(params.get("templateId").toString());
}
mission.put("excelId", templateId);
} else if (task.getTaskDefinitionKey().toLowerCase().equals(MISSION_LOW_CASE_KEY__DATA_AUDIT)) {
mission.put("missionType", MISSION_TYPE_DATA_AUDIT);
mission.put("mission", MISSION_TEXT_DATA_AUDIT);
} else if (task.getTaskDefinitionKey().toLowerCase().equals(MISSION_LOW_CASE_KEY__MANAGER_AUDIT)) {
mission.put("missionType", MISSION_TYPE_MANAGER_AUDIT);
mission.put("mission", MISSION_TEXT_MANAGER_AUDIT);
} else if (task.getTaskDefinitionKey().toLowerCase().equals(MISSION_LOW_CASE_KEY__DATA_BACK_FLOW) ||
task.getTaskDefinitionKey().toLowerCase().equals("_26")) {
mission.put("missionType", MISSION_TYPE_DATA_BACK_FLOW);
mission.put("mission", MISSION_TEXT_DATA_BACK_FLOW);
}
return mission;
}
}
package com.keymobile.rest.controller.constant;
public interface TaskConstant {
int TASK_TYPE_PERSONAL = 1;
int TASK_TYPE_GROUP = 2;
int MISSION_TYPE_DATA_ENTER = 1;
int MISSION_TYPE_DATA_AUDIT = 2;
int MISSION_TYPE_MANAGER_AUDIT = 3;
int MISSION_TYPE_DATA_BACK_FLOW = 4;
String MISSION_LOW_CASE_KEY_DATA_ENTER = "dataenter";
String MISSION_LOW_CASE_KEY__DATA_AUDIT = "dataaudit";
String MISSION_LOW_CASE_KEY__MANAGER_AUDIT = "managerconfirm";
String MISSION_LOW_CASE_KEY__DATA_BACK_FLOW = "databackflow";
String MISSION_TEXT_DATA_ENTER = "填写补录数据";
String MISSION_TEXT_DATA_AUDIT = "审核补录数据";
String MISSION_TEXT_MANAGER_AUDIT = "负责人审核";
String MISSION_TEXT_DATA_BACK_FLOW = "数据回流";
}
......@@ -51,7 +51,7 @@ public class Activity implements Serializable {
private Timestamp createAt;
@Column(columnDefinition = ("integer(2) comment '状态'"))
private Integer status;
private Integer status = 1;
/**
* 发送人
......
......@@ -6,6 +6,7 @@ import lombok.Data;
import javax.persistence.*;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.List;
/**
......@@ -17,10 +18,6 @@ import java.util.List;
@Table(name = "t_process")
public class Process implements Serializable {
public static int STATUS_BEGIN = 0; // 起始状态
public static int STATUS_RECORDING = 1; // 补录中
public static int STATUS_AUDIT = 2; // 审核中
public static int STATUS_COMPLETED = 3; // 已经完成
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
......@@ -32,8 +29,8 @@ public class Process implements Serializable {
@Column(name = "process_id", unique = true, columnDefinition = ("varchar(100) comment '当前活动在跑进程 id'"))
private String processId;
@Column(nullable = false, columnDefinition = ("integer(2) default 0 comment '进程状态'"))
private int status = 0;
@Column(nullable = false, name = "start_at")
private Timestamp startAt;
/**
* 该进程启动得所有子任务
......
......@@ -19,6 +19,8 @@ public class SimpleTask {
private String remark;
private Integer status;
private Integer type;
private Integer freq;
......
......@@ -40,8 +40,8 @@ spring:
max-file-size: 20Mb
max-request-size: 100Mb
redis:
# host: 192.168.0.192
host: 127.0.0.1
host: 192.168.0.192
# host: 127.0.0.1
port: 6379
session:
store-type: redis
......
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