Commit 3738eea8 authored by 高滢's avatar 高滢
parents 2c440960 eaaf04b0
......@@ -24,18 +24,32 @@ import java.util.List;
public class Task {
@TableField(exist = false)
public static final String STATUS_RUNNABLE = "RUNNABLE";
public static final String RUN_STATUS_RUNNABLE = "RUNNABLE";
@TableField(exist = false)
public static final String STATUS_RUNNING = "RUNNING";
public static final String RUN_STATUS_STATUS_RUNNING = "RUNNING";
@TableField(exist = false)
public static final String TASK_STATUS_NEW = "NEW";
@TableField(exist = false)
public static final String STATUS_FINISH = "FINISH";
public static final String TASK_STATUS_PENDING = "PENDING";
@TableField(exist = false)
public static final String TASK_STATUS_FINISH = "FINISH";
/**
* 汽车信息安全一般要求
*/
@TableField(exist = false)
public static final String SUB_TASK_GRFIS = "grfis";
/**
* 汽车信息安全技术要求
*/
@TableField(exist = false)
public static final String SUB_TASK_TRFIS = "trfis";
/**
* 汽车信息安全管理体系要求
*/
@TableField(exist = false)
public static final String SUB_TASK_SRAIF = "sraif";
......@@ -52,22 +66,28 @@ public class Task {
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long carReviewTaskId;
@ApiModelProperty("任务状态NEW(新建的)、PENDING(运行中的)、FINISH(已结束的)")
private String taskStatus;
@ApiModelProperty("任务运行状态[RUNNABLE(可运行的)、RUNNING(运行中的)]")
private String runStatus;
@ApiModelProperty("下一个节点 SUB_TASK_SRAIF(体系审查子任务)、SUB_TASK_TRFIS(车辆实验子任务)、SUB_TASK_GRFIS(车辆问卷子任务)")
private String nextNode;
@ApiModelProperty("任务编号")
private String taskNo;
@ApiModelProperty("任务名称")
private String taskName;
@ApiModelProperty("任务状态(NEW、FINISH)")
private String taskStatus;
@ApiModelProperty("下一个节点 SUB_TASK_SRAIF(体系审查子任务)、SUB_TASK_TRFIS(车辆实验子任务)、SUB_TASK_GRFIS(车辆问卷子任务)")
private String nextNode;
@ApiModelProperty("保密等级")
private String confidentialityLevel;
@ApiModelProperty("产品名称")
private String productName;
@ApiModelProperty("产品型号")
@ApiModelProperty(" 车辆型号(产品型号)")
private String productModel;
@ApiModelProperty("委托单位")
......@@ -82,42 +102,14 @@ public class Task {
@ApiModelProperty("委托单位邮政编码")
private String entrustedUnitCode;
@ApiModelProperty("车辆类型")
private String carType;
@ApiModelProperty("车辆识别码")
private String carIdentificationCode;
@ApiModelProperty("保密等级")
private String confidentialityLevel;
@ApiModelProperty("样品名称")
private String sampleName;
@ApiModelProperty("生产企业id")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long productionId;
@ApiModelProperty("生产企业")
private String productionEnterprise;
@ApiModelProperty("送样者")
private String sampleSender;
@ApiModelProperty("送样日期")
private Date sendDate;
@ApiModelProperty("样品数量")
private String sampleNumber;
@ApiModelProperty("生产日期")
private Date productionDate;
@ApiModelProperty("整车样品信息")
private String vehicleSampleInformation;
@ApiModelProperty("商标")
private String trademark;
@ApiModelProperty("零件样品信息")
private String partSampleInformation;
@ApiModelProperty("检验依据")
private String inspectionBasis;
@ApiModelProperty("任务发起人id")
private Long taskInitiatorId;
@ApiModelProperty("任务发起人姓名")
private String taskInitiator;
......@@ -146,7 +138,7 @@ public class Task {
@JsonFormat(shape = JsonFormat.Shape.STRING)
@ApiModelProperty("关联标准表id")
@ApiModelProperty("关联标准表id(检验依据)")
private Long standardId;
......
package com.ruoyi.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.Date;
/**
* 任务表
*/
@ApiModel
@TableName(value ="t_task_sample_relation", autoResultMap = true)
@Accessors(chain = true)
@Data
public class TaskSampleRelation {
/**
* 整车样品
*/
@TableField(exist = false)
public static final String COMPLETE_VEHICLE_SAMPLE = "0";
/**
* 零部件样品
*/
@TableField(exist = false)
public static final String PART_VEHICLE_SAMPLE = "1";
@ApiModelProperty("主键")
@TableId(type = IdType.ASSIGN_ID)
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long id;
@ApiModelProperty("任务id")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long taskId;
@ApiModelProperty("样品id")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long sampleId;
@ApiModelProperty("0:整车样品 1:零部件样品")
private String flag;
}
......@@ -2,7 +2,9 @@ package com.ruoyi.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.domain.Sample;
import com.ruoyi.domain.TaskSampleRelation;
import com.ruoyi.web.request.SampleManagementRequest;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
......@@ -57,4 +59,6 @@ public interface SampleManagementMapper extends BaseMapper<Sample> {
* */
public List<Sample> selectSampleList(SampleManagementRequest sampleManagementRequest);
List<Sample> findByIdList(@Param("relationList") List<TaskSampleRelation> relationList);
}
......@@ -4,8 +4,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.domain.Task;
import com.ruoyi.web.request.TaskFindFinishRequest;
import com.ruoyi.web.request.TaskFindPendingRequest;
import com.ruoyi.web.request.TaskFindRequest;
import com.ruoyi.web.request.TaskListRequest;
import com.ruoyi.web.response.TaskFindPendingResponse;
import com.ruoyi.web.response.TaskFindResponse;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
......@@ -16,10 +17,12 @@ public interface TaskMapper extends BaseMapper<Task> {
List<Task> findList(TaskListRequest request);
List<TaskFindPendingResponse> findPending(TaskFindPendingRequest request);
List<TaskFindResponse> findPending(TaskFindPendingRequest request);
List<Task> findFinish(TaskFindFinishRequest request);
List<TaskFindResponse> findByUserId(@Param("request") TaskFindRequest request,@Param("userId")Long userId);
Long findByCarReviewTaskId(@Param("carReviewId") Long carReviewId);
Long findBySystemReviewTaskId(@Param("systemReviewId") Long systemReviewId);
......
package com.ruoyi.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.domain.TaskSampleRelation;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface TaskSampleRelationMapper extends BaseMapper<TaskSampleRelation> {
/**
* 根据任务id查询
* @param taskId
* @return
*/
List<TaskSampleRelation> selectByTaskId(@Param("taskId") Long taskId,@Param("flag") String flag);
}
......@@ -41,6 +41,11 @@ public interface CarReviewTaskService extends IService<CarReviewTask> {
*/
void startReviewTask(CarReviewTaskStartRequest request);
/**
* 开始一个车辆审查任务中的问卷任务
*/
void startReviewTask(Long id);
/**
* 确认一个车辆审查任务中的问卷任务
* @param request
......
......@@ -36,6 +36,12 @@ public interface SystemReviewTaskService extends IService<SystemReviewTask> {
*/
void start(SystemReviewTaskStartRequest request);
/**
* 开始一个任务
* @param id
*/
void start(Long id);
/**
* 根据状态查找体系审查任务
* @return
......
package com.ruoyi.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.domain.TaskSampleRelation;
import java.util.List;
public interface TaskSampleRelationService extends IService<TaskSampleRelation> {
List<TaskSampleRelation> selectByTaskId(Long taskId, String flag);
}
......@@ -3,8 +3,8 @@ package com.ruoyi.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.domain.Task;
import com.ruoyi.web.request.*;
import com.ruoyi.web.response.TaskFindPendingResponse;
import org.apache.ibatis.annotations.Param;
import com.ruoyi.web.response.TaskFindResponse;
import com.ruoyi.web.response.TaskGetInfoResponse;
import java.util.List;
......@@ -24,7 +24,7 @@ public interface TaskService extends IService<Task> {
* @param request
* @return
*/
List<TaskFindPendingResponse> findPending(TaskFindPendingRequest request);
List<TaskFindResponse> findPending(TaskFindPendingRequest request);
/**
* 查询完成的任务
......@@ -38,4 +38,13 @@ public interface TaskService extends IService<Task> {
void deleteTask(TaskDeleteRequest request);
void startTask(TaskStartRequest request);
/**
* 用户发起的任务
* @param request
* @return
*/
List<TaskFindResponse> findCreate(TaskFindRequest request,Long userId);
TaskGetInfoResponse getInfo(TaskGetInfoRequest request);
}
package com.ruoyi.service;
import com.ruoyi.domain.Task;
import java.util.List;
public interface TaskState {
void doCreate(Task task, List<String> taskList);
void doStart(Task task);
void doSubmit(Task task);
}
......@@ -113,7 +113,12 @@ public class CarReviewTaskServiceImpl extends ServiceImpl<CarReviewTaskMapper, C
@Override
public void startReviewTask(CarReviewTaskStartRequest request) {
CarReviewTask carReviewTask = carReviewTaskService.getById(request.getTaskId());
startReviewTask(request.getTaskId());
}
@Override
public void startReviewTask(Long id) {
CarReviewTask carReviewTask = carReviewTaskService.getById(id);
strategyCarReviewTaskContext.getResource(carReviewTask.getTaskStatus()).doStartReview(carReviewTask);
}
......
......@@ -43,6 +43,9 @@ public class StrategyCarReviewTaskSigned implements StrategyCarReviewTask, Initi
@Autowired
private TaskMapper taskMapper;
@Autowired
private TaskStateFacade taskStateFacade;
// SIGNED状态下
// 1.standard字段使用task中归档的问卷
// 2.不查询场景变更任务
......@@ -84,7 +87,7 @@ public class StrategyCarReviewTaskSigned implements StrategyCarReviewTask, Initi
// 5.再找带该子任务所属的总任务,将总任务的状态由 RUNNING 改回 RUNNABLE
Task task = taskMapper.selectById(taskMapper.findByCarReviewTaskId(carReviewTask.getId()));
task.setTaskStatus(Task.STATUS_RUNNABLE);
taskStateFacade.doSubmit(task);
carReviewTaskMapper.updateById(carReviewTask);
taskMapper.updateById(task);
......
......@@ -42,6 +42,9 @@ public class StrategySystemReviewTaskSigned implements StrategySystemReviewTask,
@Autowired
private TaskMapper taskMapper;
@Autowired
private TaskStateFacade taskStateFacade;
@Override
public void doStart(SystemReviewTask systemReviewTask) {
......@@ -73,7 +76,7 @@ public class StrategySystemReviewTaskSigned implements StrategySystemReviewTask,
// 5.再找带该子任务所属的总任务,将总任务的状态由 RUNNING 改回 RUNNABLE
Task task = taskMapper.selectById(taskMapper.findBySystemReviewTaskId(systemReviewTask.getId()));
task.setTaskStatus(Task.STATUS_RUNNABLE);
taskStateFacade.doSubmit(task);
systemReviewTaskMapper.updateById(systemReviewTask);
taskMapper.updateById(task);
......
......@@ -102,7 +102,12 @@ public class SystemReviewTaskServiceImpl extends ServiceImpl<SystemReviewTaskMap
@Override
public void start(SystemReviewTaskStartRequest request) {
SystemReviewTask systemReviewTask = systemReviewTaskService.getById(request.getTaskId());
start(request.getTaskId());
}
@Override
public void start(Long id) {
SystemReviewTask systemReviewTask = systemReviewTaskService.getById(id);
strategySystemReviewTaskContext.getResource(systemReviewTask.getTaskStatus()).doStart(systemReviewTask);
}
......
package com.ruoyi.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.domain.TaskSampleRelation;
import com.ruoyi.mapper.TaskSampleRelationMapper;
import com.ruoyi.service.TaskSampleRelationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class TaskSampleRelationServiceImpl extends ServiceImpl<TaskSampleRelationMapper, TaskSampleRelation> implements TaskSampleRelationService {
@Autowired
private TaskSampleRelationMapper taskSampleRelationMapper;
@Override
public List<TaskSampleRelation> selectByTaskId(Long taskId,String flag) {
return taskSampleRelationMapper.selectByTaskId(taskId,flag);
}
}
package com.ruoyi.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.SnowflakeUtil;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.domain.*;
import com.ruoyi.mapper.*;
import com.ruoyi.service.*;
import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.web.request.*;
import com.ruoyi.web.response.TaskFindPendingResponse;
import org.checkerframework.checker.units.qual.A;
import com.ruoyi.web.response.TaskFindResponse;
import com.ruoyi.web.response.TaskGetInfoResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -59,6 +57,16 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
@Autowired
private AutomobileEnterpriseMapper automobileEnterpriseMapper;
@Autowired
private TaskStateFacade taskStateFacade;
@Autowired
private TaskSampleRelationService taskSampleRelationService;
@Autowired
private SampleManagementMapper sampleManagementMapper;
@Override
public List<Task> findList(TaskListRequest request) {
return taskMapper.findList(request);
......@@ -85,9 +93,10 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
// 构建并保存任务信息
// 总任务
Task task = new Task();
task.setTaskInitiatorId(loginUser.getUserId());
task.setTaskInitiator(initiator.getNickName());
task.setTaskInitiatorDept(initiator.getDept().getDeptName());
task.setTaskStatus(Task.STATUS_RUNNABLE);
task.setTaskStatus(Task.TASK_STATUS_NEW);
task.setLeaderId(leader.getUserId());
task.setLeader(leader.getName());
task.setCreateTime(new Date());
......@@ -95,27 +104,16 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
task.setStandardNo(standard.getStandardNo());
task.setFile(standard.getFile());
BeanUtils.copyBeanProp(task, request);
AutomobileEnterprise automobileEnterprise = automobileEnterpriseMapper.selectAutomobileEnterpriseById(request.getProductionId());
task.setProductionEnterprise(automobileEnterprise.getEnterpriseName());
String nextNode = null;
if(request.getTaskList().contains(Task.SUB_TASK_TRFIS)) {
nextNode = Task.SUB_TASK_TRFIS;
}
if(request.getTaskList().contains(Task.SUB_TASK_GRFIS)) {
// 保存车型审查问卷任务
nextNode = Task.SUB_TASK_GRFIS;;
task.setCarReviewTaskId(saveCarReview(request,initiator,standard,leader));
}
if(request.getTaskList().contains(Task.SUB_TASK_SRAIF)) {
// 保存体系审查任务
nextNode = Task.SUB_TASK_SRAIF;
task.setSystemReviewTaskId(saveSystemReview(request,initiator,standard,leader));
}
task.setNextNode(nextNode);
taskService.save(task);
// 构建并保存该任务所关联的审核组信息
......@@ -125,12 +123,34 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
taskUserRelationService.saveBatch(auditors);
// 保存关联的整车样品信息
List<TaskSampleRelation> relations = request.getSample();
if (relations.size() != 0 && relations != null) {
for (TaskSampleRelation sampleRelation : relations) {
sampleRelation.setTaskId(task.getId());
}
taskSampleRelationService.saveBatch(relations);
}
// 保存关联的零部件样品信息
List<TaskSampleRelation> partRelations = request.getPartSample();
if (relations.size() != 0 && relations != null) {
for (TaskSampleRelation sampleRelation : partRelations) {
sampleRelation.setTaskId(task.getId());
}
taskSampleRelationService.saveBatch(partRelations);
}
taskStateFacade.doCreate(task, request.getTaskList());
}
@Override
public List<TaskFindPendingResponse> findPending(TaskFindPendingRequest request) {
List<TaskFindPendingResponse> responses = taskMapper.findPending(request);
for (TaskFindPendingResponse response : responses) {
public List<TaskFindResponse> findPending(TaskFindPendingRequest request) {
List<TaskFindResponse> responses = taskMapper.findPending(request);
for (TaskFindResponse response : responses) {
if (response.getSystemReviewTaskId() != null) {
response.setSystemReview(reviewDetailsMapper.count(response.getSystemReviewTaskId(),SystemReviewTask.TYPE));
}
......@@ -173,6 +193,26 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
auditor.setTaskId(task.getId());
}
taskUserRelationService.updateBatchById(auditors);
// 保存关联的整车样品信息
List<TaskSampleRelation> relations = request.getSample();
if (relations.size() != 0 && relations != null) {
for (TaskSampleRelation sampleRelation : relations) {
sampleRelation.setTaskId(task.getId());
}
taskSampleRelationService.updateBatchById(relations);
}
// 保存关联的零部件样品信息
List<TaskSampleRelation> partRelations = request.getPartSample();
if (relations.size() != 0 && relations != null) {
for (TaskSampleRelation sampleRelation : partRelations) {
sampleRelation.setTaskId(task.getId());
}
taskSampleRelationService.updateBatchById(partRelations);
}
}
@Override
......@@ -187,26 +227,47 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
@Override
public void startTask(TaskStartRequest request) {
Task task = taskMapper.selectById(request.getId());
taskStateFacade.doStart(task);
}
SystemReviewTaskStartRequest systemRequest = new SystemReviewTaskStartRequest();
systemRequest.setTaskId(task.getSystemReviewTaskId());
CarReviewTaskStartRequest carRequest = new CarReviewTaskStartRequest();
carRequest.setTaskId(task.getCarReviewTaskId());
if (Objects.equals(task.getNextNode(), Task.SUB_TASK_SRAIF)) {
systemReviewTaskService.start(systemRequest);
task.setTaskStatus(Task.STATUS_RUNNING);
task.setNextNode(Task.SUB_TASK_GRFIS);
@Override
public List<TaskFindResponse> findCreate(TaskFindRequest request,Long userId) {
List<TaskFindResponse> responses = taskMapper.findByUserId(request,userId);
for (TaskFindResponse response : responses) {
if (response.getSystemReviewTaskId() != null) {
response.setSystemReview(reviewDetailsMapper.count(response.getSystemReviewTaskId(),SystemReviewTask.TYPE));
}
if (response.getCarReviewTaskId() != null) {
response.setCarReview(reviewDetailsMapper.count(response.getCarReviewTaskId(),CarReviewTask.TYPE));
}
}
return responses;
}
taskMapper.updateById(task);
} else if (Objects.equals(task.getNextNode(), Task.SUB_TASK_GRFIS)) {
carReviewTaskService.startReviewTask(carRequest);
task.setTaskStatus(Task.STATUS_RUNNING);
task.setNextNode(Task.SUB_TASK_TRFIS);
@Override
public TaskGetInfoResponse getInfo(TaskGetInfoRequest request) {
TaskGetInfoResponse response = new TaskGetInfoResponse();
Task task = taskService.getById(request.getId());
BeanUtils.copyBeanProp(response, task);
// 小组成员
List<TaskUserRelation> relation = taskUserRelationService.selectQTeamMembers(request.getId());
response.setAuditors(relation);
// 整车样品信息
List<TaskSampleRelation> relationList = taskSampleRelationService.selectByTaskId(request.getId(),TaskSampleRelation.COMPLETE_VEHICLE_SAMPLE);
if (relationList.size() != 0 && relationList != null) {
List<Sample> completeVehicleSampleList = sampleManagementMapper.findByIdList(relationList);
response.setCompleteVehicleSample(completeVehicleSampleList);
}
taskMapper.updateById(task);
// 零部件样品信息
List<TaskSampleRelation> partRelationList = taskSampleRelationService.selectByTaskId(request.getId(),TaskSampleRelation.PART_VEHICLE_SAMPLE);
if (partRelationList.size() != 0 && partRelationList != null) {
List<Sample> partVehicleSampleList = sampleManagementMapper.findByIdList(partRelationList);
response.setPartVehicleSample(partVehicleSampleList);
}
return response;
}
public Long saveSystemReview(TaskCreateRequest request,SysUser initiator,Standard standard,TaskUserRelation leader) {
......
package com.ruoyi.service.impl;
import com.ruoyi.service.TaskState;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@Transactional
@Service
public class TaskStateContext {
private final Map<String, TaskState> strategyMap = new ConcurrentHashMap<>();
public void putResource(String key, TaskState taskState) {
strategyMap.put(key, taskState);
}
public TaskState getResource(String operation){
return strategyMap.get(operation);
}
}
package com.ruoyi.service.impl;
import com.ruoyi.domain.Task;
import com.ruoyi.service.TaskState;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Transactional
@Component
public class TaskStateFacade implements TaskState {
@Autowired
private TaskStateContext taskStateContext;
@Override
public void doCreate(Task task, List<String> taskList) {
taskStateContext.getResource(task.getTaskStatus()).doCreate(task, taskList);
}
@Override
public void doStart(Task task) {
taskStateContext.getResource(task.getTaskStatus()).doStart(task);
}
@Override
public void doSubmit(Task task) {
taskStateContext.getResource(task.getTaskStatus()).doSubmit(task);
}
}
package com.ruoyi.service.impl;
import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.domain.Task;
import com.ruoyi.service.TaskState;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Transactional
@Service
public class TaskStateFinish implements TaskState, InitializingBean {
@Autowired
private TaskStateContext taskStateContext;
@Autowired
private ApplicationContext applicationContext;
@Override
public void doCreate(Task task, List<String> taskList) {
throw new ServiceException("不能创建一个已经结束的任务", HttpStatus.ERROR);
}
@Override
public void doStart(Task task) {
throw new ServiceException("不能开始一个已经结束的任务", HttpStatus.ERROR);
}
@Override
public void doSubmit(Task task) {
throw new ServiceException("不能完成一个已经结束的任务", HttpStatus.ERROR);
}
@Override
public void afterPropertiesSet() throws Exception {
taskStateContext.putResource(Task.TASK_STATUS_FINISH, applicationContext.getBean(this.getClass()));
}
}
package com.ruoyi.service.impl;
import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.domain.Task;
import com.ruoyi.service.CarReviewTaskService;
import com.ruoyi.service.SystemReviewTaskService;
import com.ruoyi.service.TaskService;
import com.ruoyi.service.TaskState;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Objects;
@Transactional
@Service
public class TaskStateNew implements TaskState, InitializingBean {
@Autowired
private TaskStateContext taskStateContext;
@Autowired
private ApplicationContext applicationContext;
@Autowired
private TaskService taskService;
@Autowired
private SystemReviewTaskService systemReviewTaskService;
@Autowired
private CarReviewTaskService carReviewTaskService;
@Override
public void doCreate(Task task, List<String> taskList) {
String nextNode = null;
if(taskList.contains(Task.SUB_TASK_TRFIS)) {
nextNode = Task.SUB_TASK_TRFIS;
}
if(taskList.contains(Task.SUB_TASK_GRFIS)) {
// 保存车型审查问卷任务
nextNode = Task.SUB_TASK_GRFIS;;
}
if(taskList.contains(Task.SUB_TASK_SRAIF)) {
// 保存体系审查任务
nextNode = Task.SUB_TASK_SRAIF;
}
task.setNextNode(nextNode);
taskService.updateById(task);
}
@Override
public void doStart(Task task) {
task.setTaskStatus(Task.TASK_STATUS_PENDING);
task.setRunStatus(Task.RUN_STATUS_STATUS_RUNNING);
if (Objects.equals(task.getNextNode(), Task.SUB_TASK_SRAIF)) {
systemReviewTaskService.start(task.getSystemReviewTaskId());
task.setNextNode(Task.SUB_TASK_GRFIS);
taskService.updateById(task);
} else if (Objects.equals(task.getNextNode(), Task.SUB_TASK_GRFIS)) {
carReviewTaskService.startReviewTask(task.getCarReviewTaskId());
task.setNextNode(Task.SUB_TASK_TRFIS);
taskService.updateById(task);
}
taskService.updateById(task);
}
@Override
public void doSubmit(Task task) {
throw new ServiceException("不能提交一个尚未开始的任务", HttpStatus.ERROR);
}
@Override
public void afterPropertiesSet() throws Exception {
taskStateContext.putResource(Task.TASK_STATUS_NEW, applicationContext.getBean(this.getClass()));
}
}
package com.ruoyi.service.impl;
import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.domain.CarReviewTask;
import com.ruoyi.domain.SystemReviewTask;
import com.ruoyi.domain.Task;
import com.ruoyi.mapper.ReviewDetailsMapper;
import com.ruoyi.service.CarReviewTaskService;
import com.ruoyi.service.SystemReviewTaskService;
import com.ruoyi.service.TaskService;
import com.ruoyi.service.TaskState;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Objects;
@Transactional
@Service
public class TaskStatePending implements TaskState, InitializingBean {
@Autowired
private TaskStateContext taskStateContext;
private ReviewDetailsMapper reviewDetailsMapper;
@Autowired
private TaskService taskService;
@Autowired
private ApplicationContext applicationContext;
@Autowired
private SystemReviewTaskService systemReviewTaskService;
@Autowired
private CarReviewTaskService carReviewTaskService;
@Override
public void doCreate(Task task, List<String> taskList) {
throw new ServiceException("不能创建一个已经开始的任务", HttpStatus.ERROR);
}
@Override
public void doStart(Task task) {
task.setTaskStatus(Task.TASK_STATUS_PENDING);
task.setRunStatus(Task.RUN_STATUS_STATUS_RUNNING);
if (Objects.equals(task.getNextNode(), Task.SUB_TASK_SRAIF)) {
systemReviewTaskService.start(task.getSystemReviewTaskId());
task.setNextNode(Task.SUB_TASK_GRFIS);
taskService.updateById(task);
} else if (Objects.equals(task.getNextNode(), Task.SUB_TASK_GRFIS)) {
carReviewTaskService.startReviewTask(task.getCarReviewTaskId());
task.setNextNode(Task.SUB_TASK_TRFIS);
taskService.updateById(task);
}
}
@Override
public void doSubmit(Task task) {
long subTaskCount = 0;
if(task.getSystemReviewTaskId() != null) {
subTaskCount = reviewDetailsMapper.count(task.getSystemReviewTaskId(), SystemReviewTask.TYPE);
}
if(task.getCarReviewTaskId() != null) {
subTaskCount = reviewDetailsMapper.count(task.getCarReviewTaskId(), CarReviewTask.TYPE);
}
if(subTaskCount > 0) {
task.setTaskStatus(Task.TASK_STATUS_PENDING);
task.setRunStatus(Task.RUN_STATUS_RUNNABLE);
} else {
task.setTaskStatus(Task.TASK_STATUS_FINISH);
task.setRunStatus(Task.RUN_STATUS_STATUS_RUNNING);
}
taskService.updateById(task);
}
@Override
public void afterPropertiesSet() throws Exception {
taskStateContext.putResource(Task.TASK_STATUS_PENDING, applicationContext.getBean(this.getClass()));
}
}
......@@ -7,11 +7,13 @@ import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.domain.Task;
import com.ruoyi.domain.TaskSampleRelation;
import com.ruoyi.domain.TaskUserRelation;
import com.ruoyi.service.TaskSampleRelationService;
import com.ruoyi.service.TaskService;
import com.ruoyi.service.TaskUserRelationService;
import com.ruoyi.web.request.*;
import com.ruoyi.web.response.TaskFindPendingResponse;
import com.ruoyi.web.response.TaskFindResponse;
import com.ruoyi.web.response.TaskGetInfoResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
......@@ -37,6 +39,9 @@ public class TaskController extends BaseController {
@Autowired
private TaskUserRelationService taskUserRelationService;
@Autowired
private TaskSampleRelationService taskSampleRelationService;
@ApiOperation("查询任务列表")
@Trace
@Tags({@Tag(key = "param", value = "arg[0]"), @Tag(key = "result", value = "returnedObj")})
......@@ -62,20 +67,25 @@ public class TaskController extends BaseController {
@RequestMapping(method = RequestMethod.POST, value = "/getInfo")
public R<TaskGetInfoResponse> getInfo(@Validated @RequestBody TaskGetInfoRequest request) {
TaskGetInfoResponse response = new TaskGetInfoResponse();
Task task = taskService.getById(request.getId());
BeanUtils.copyBeanProp(response, task);
List<TaskUserRelation> relation = taskUserRelationService.selectQTeamMembers(request.getId());
response.setAuditors(relation);
TaskGetInfoResponse response = taskService.getInfo(request);
return R.ok(response);
}
@ApiOperation("用户发布的任务")
@Trace
@Tags({@Tag(key = "param", value = "arg[0]"), @Tag(key = "result", value = "returnedObj")})
@RequestMapping(method = RequestMethod.POST, value = "/findCreate")
public TableDataInfo<TaskFindResponse> findCreate(@Validated @RequestBody TaskFindRequest request) {
startPage(request);
return getDataTable(taskService.findCreate(request,getUserId()));
}
@ApiOperation("查询处理中的任务")
@Trace
@Tags({@Tag(key = "param", value = "arg[0]"), @Tag(key = "result", value = "returnedObj")})
@RequestMapping(method = RequestMethod.POST, value = "/findPending")
public TableDataInfo<TaskFindPendingResponse> findPending(@Validated @RequestBody TaskFindPendingRequest request) {
public TableDataInfo<TaskFindResponse> findPending(@Validated @RequestBody TaskFindPendingRequest request) {
startPage(request);
return getDataTable(taskService.findPending(request));
}
......
......@@ -2,6 +2,7 @@ package com.ruoyi.web.request;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.domain.TaskSampleRelation;
import com.ruoyi.domain.TaskUserRelation;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModel;
......@@ -18,16 +19,26 @@ public class TaskCreateRequest {
@ApiModelProperty("小组成员")
private List<TaskUserRelation> auditors;
/**
* 标准id
* 根据哪个标准新建的审查任务
*/
@ApiModelProperty("标准id(检验依据)")
private Long standardId;
@ApiModelProperty("任务编号")
private String taskNo;
@ApiModelProperty("任务名称")
private String taskName;
@ApiModelProperty("保密等级")
private String confidentialityLevel;
@ApiModelProperty("产品名称")
private String productName;
@ApiModelProperty("产品型号")
@ApiModelProperty("车辆型号(产品型号)")
private String productModel;
@ApiModelProperty("委托单位")
......@@ -42,46 +53,14 @@ public class TaskCreateRequest {
@ApiModelProperty("委托单位邮政编码")
private String entrustedUnitCode;
@ApiModelProperty("车辆类型")
private String carType;
@ApiModelProperty("车辆识别码")
private String carIdentificationCode;
@ApiModelProperty("保密等级")
private String confidentialityLevel;
@ApiModelProperty("样品名称")
private String sampleName;
@ApiModelProperty("生产企业id")
private Long productionId;
@ApiModelProperty("送样者")
private String sampleSender;
@ApiModelProperty("送样日期")
private Date sendDate;
@ApiModelProperty("样品数量")
private String sampleNumber;
@ApiModelProperty("生产日期")
private Date productionDate;
@ApiModelProperty("商标")
private String trademark;
@ApiModelProperty("整车样品信息")
private List<TaskSampleRelation> sample;
@ApiModelProperty("检验依据")
private String inspectionBasis;
@ApiModelProperty("零部件样品信息")
private List<TaskSampleRelation> partSample;
@ApiModelProperty("选择的任务")
List<String> taskList;
/**
* 标准id
* 根据哪个标准新建的审查任务
*/
@ApiModelProperty("标准id(根据哪个标准新建的任务)")
private Long standardId;
}
package com.ruoyi.web.request;
import com.ruoyi.domain.TaskSampleRelation;
import com.ruoyi.domain.TaskUserRelation;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......@@ -12,22 +13,29 @@ import java.util.List;
@Data
public class TaskEditRequest {
@ApiModelProperty("ID")
private Long id;
@ApiModelProperty("小组成员")
private List<TaskUserRelation> auditors;
/**
* 标准id
* 根据哪个标准新建的审查任务
*/
@ApiModelProperty("标准id(检验依据)")
private Long standardId;
@ApiModelProperty("任务编号")
private String taskNo;
@ApiModelProperty("任务名称")
private String taskName;
@ApiModelProperty("保密等级")
private String confidentialityLevel;
@ApiModelProperty("产品名称")
private String productName;
@ApiModelProperty("产品型号")
@ApiModelProperty("车辆型号(产品型号)")
private String productModel;
@ApiModelProperty("委托单位")
......@@ -42,38 +50,11 @@ public class TaskEditRequest {
@ApiModelProperty("委托单位邮政编码")
private String entrustedUnitCode;
@ApiModelProperty("车辆类型")
private String carType;
@ApiModelProperty("车辆识别码")
private String carIdentificationCode;
@ApiModelProperty("保密等级")
private String confidentialityLevel;
@ApiModelProperty("样品名称")
private String sampleName;
@ApiModelProperty("生产企业")
private String productionEnterprise;
@ApiModelProperty("送样者")
private String sampleSender;
@ApiModelProperty("送样日期")
private Date sendDate;
@ApiModelProperty("样品数量")
private String sampleNumber;
@ApiModelProperty("生产日期")
private Date productionDate;
@ApiModelProperty("商标")
private String trademark;
@ApiModelProperty("整车样品信息")
private List<TaskSampleRelation> sample;
@ApiModelProperty("检验依据")
private String inspectionBasis;
@ApiModelProperty("零部件样品信息")
private List<TaskSampleRelation> partSample;
@ApiModelProperty("选择的任务")
List<String> taskList;
......
......@@ -11,12 +11,18 @@ import java.util.Date;
@Data
public class TaskFindFinishRequest extends PageDomain {
@ApiModelProperty("任务编号或名称关键词")
private String taskNoOrName;
@ApiModelProperty("检验依据")
private Long standardId;
@ApiModelProperty("任务开始时间")
private Date taskBeginTime;
@ApiModelProperty("任务编号")
private String taskNo;
@ApiModelProperty("任务结束时间")
private Date taskEndTime;
@ApiModelProperty("任务名称")
private String taskName;
@ApiModelProperty("车辆型号")
private String productModel;
@ApiModelProperty("检验项目")
private String inspectionItem;
}
......@@ -11,12 +11,18 @@ import java.util.Date;
@Data
public class TaskFindPendingRequest extends PageDomain {
@ApiModelProperty("任务编号或名称关键词")
private String taskNoOrName;
@ApiModelProperty("检验依据")
private Long standardId;
@ApiModelProperty("任务开始时间")
private Date taskBeginTime;
@ApiModelProperty("任务编号")
private String taskNo;
@ApiModelProperty("子任务状态")
private String subStatus;
@ApiModelProperty("任务名称")
private String taskName;
@ApiModelProperty("车辆型号")
private String productModel;
@ApiModelProperty("检验项目")
private String inspectionItem;
}
package com.ruoyi.web.request;
import com.ruoyi.common.core.page.PageDomain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@ApiModel(value = "TaskFindRequest", description = "用户创建的任务")
@Data
public class TaskFindRequest extends PageDomain {
@ApiModelProperty("检验依据")
private Long standardId;
@ApiModelProperty("任务编号")
private String taskNo;
@ApiModelProperty("任务名称")
private String taskName;
@ApiModelProperty("车辆型号")
private String productModel;
@ApiModelProperty("检验项目")
private String inspectionItem;
@ApiModelProperty("任务状态")
private String taskStatus;
}
package com.ruoyi.web.response;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel(value = "SampleListResponse", description = "样品信息")
@Data
public class SampleListResponse {
@ApiModelProperty("主键")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long id;
@JsonFormat(shape = JsonFormat.Shape.STRING)
@ApiModelProperty("关联车企的id")
private Long enterpriseId;
@ApiModelProperty("车辆识别码")
private String identificationCode;
@ApiModelProperty("样品编号")
private String sampleNumber;
@ApiModelProperty("样品名称")
private String sampleName;
}
......@@ -9,7 +9,7 @@ import java.util.Date;
@ApiModel(value = "TaskFindPendingResponse", description = "进行中的总任务")
@Data
public class TaskFindPendingResponse {
public class TaskFindResponse {
@ApiModelProperty("主键")
@JsonFormat(shape = JsonFormat.Shape.STRING)
......@@ -29,9 +29,15 @@ public class TaskFindPendingResponse {
@ApiModelProperty("任务名称")
private String taskName;
@ApiModelProperty("车辆型号(产品型号)")
private String productModel;
@ApiModelProperty("任务状态(NEW、PENDING、FINISH)")
private String taskStatus;
@ApiModelProperty("任务运行状态[RUNNABLE(可运行的)、RUNNING(运行中的)]")
private String runStatus;
@ApiModelProperty("下一个节点 SUB_TASK_SRAIF(体系审查子任务)、SUB_TASK_TRFIS(车辆实验子任务)、SUB_TASK_GRFIS(车辆问卷子任务)")
private String nextNode;
......@@ -54,7 +60,7 @@ public class TaskFindPendingResponse {
@ApiModelProperty("体系问卷任务开始时间")
private Date systemTaskBeginTime;
@ApiModelProperty("体系问卷任务开始时间")
@ApiModelProperty("体系问卷任务结束时间")
private Date systemTaskEndTime;
@ApiModelProperty("车型审查任务状态")
......@@ -66,7 +72,7 @@ public class TaskFindPendingResponse {
@ApiModelProperty("车辆问卷任务开始时间")
private Date carTaskBeginTime;
@ApiModelProperty("车辆问卷任务开始时间")
@ApiModelProperty("车辆问卷任务结束时间")
private Date carTaskEndTime;
@ApiModelProperty("测试任务状态")
......
......@@ -3,6 +3,8 @@ package com.ruoyi.web.response;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.domain.Sample;
import com.ruoyi.domain.TaskSampleRelation;
import com.ruoyi.domain.TaskUserRelation;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......@@ -27,19 +29,28 @@ public class TaskGetInfoResponse {
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long carReviewTaskId;
@ApiModelProperty("任务状态NEW(新建的)、PENDING(运行中的)、FINISH(已结束的)")
private String taskStatus;
@ApiModelProperty("任务运行状态[RUNNABLE(可运行的)、RUNNING(运行中的)]")
private String runStatus;
@ApiModelProperty("下一个节点 SUB_TASK_SRAIF(体系审查子任务)、SUB_TASK_TRFIS(车辆实验子任务)、SUB_TASK_GRFIS(车辆问卷子任务)")
private String nextNode;
@ApiModelProperty("任务编号")
private String taskNo;
@ApiModelProperty("任务名称")
private String taskName;
@ApiModelProperty("任务状态(NEW、PENDING、FINISH)")
private String taskStatus;
@ApiModelProperty("保密等级")
private String confidentialityLevel;
@ApiModelProperty("产品名称")
private String productName;
@ApiModelProperty("产品型号")
@ApiModelProperty(" 车辆型号(产品型号)")
private String productModel;
@ApiModelProperty("委托单位")
......@@ -54,42 +65,14 @@ public class TaskGetInfoResponse {
@ApiModelProperty("委托单位邮政编码")
private String entrustedUnitCode;
@ApiModelProperty("车辆类型")
private String carType;
@ApiModelProperty("整车样品信息")
private String vehicleSampleInformation;
@ApiModelProperty("车辆识别码")
private String carIdentificationCode;
@ApiModelProperty("零件样品信息")
private String partSampleInformation;
@ApiModelProperty("保密等级")
private String confidentialityLevel;
@ApiModelProperty("样品名称")
private String sampleName;
@ApiModelProperty("生产企业id")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long productionId;
@ApiModelProperty("生产企业")
private String productionEnterprise;
@ApiModelProperty("送样者")
private String sampleSender;
@ApiModelProperty("送样日期")
private Date sendDate;
@ApiModelProperty("样品数量")
private String sampleNumber;
@ApiModelProperty("生产日期")
private Date productionDate;
@ApiModelProperty("商标")
private String trademark;
@ApiModelProperty("检验依据")
private String inspectionBasis;
@ApiModelProperty("任务发起人id")
private Long taskInitiatorId;
@ApiModelProperty("任务发起人姓名")
private String taskInitiator;
......@@ -118,7 +101,7 @@ public class TaskGetInfoResponse {
@JsonFormat(shape = JsonFormat.Shape.STRING)
@ApiModelProperty("关联标准表id")
@ApiModelProperty("关联标准表id(检验依据)")
private Long standardId;
......@@ -135,4 +118,10 @@ public class TaskGetInfoResponse {
@ApiModelProperty("小组成员")
private List<TaskUserRelation> auditors;
@ApiModelProperty("整车样品信息")
private List<Sample> completeVehicleSample;
@ApiModelProperty("零件样品信息")
private List<Sample> partVehicleSample;
}
......@@ -47,7 +47,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
sm.remark,
sm.trademark,
sm.sample_photos,
sm.car_company_namem
sm.car_company_name
from t_sample sm
</sql>
......@@ -164,4 +164,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="flag != null and flag != ''"> and sm.flag = #{flag} </if>
</where>
</select>
<resultMap type="com.ruoyi.web.response.SampleListResponse" id="SampleListResponse">
<result property="id" column="id" />
<result property="identificationCode" column="identification_code" />
<result property="sampleNumber" column="sample_number" />
<result property="sampleName" column="sample_name" />
<result property="enterpriseId" column="enterprise_id" />
</resultMap>
<select id="findByIdList" resultMap="SampleListResponse">
select id,identification_code,sample_number,sample_name,enterprise_id from t_sample
WHERE id IN
<foreach collection="relationList" item="relation" open="(" separator="," close=")">
#{relation.sampleId}
</foreach>
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.mapper.TaskSampleRelationMapper">
<resultMap id="BaseResultMap" type="com.ruoyi.domain.TaskSampleRelation">
<id property="id" column="id" jdbcType="BIGINT"/>
<result property="taskId" column="task_id" jdbcType="BIGINT"/>
<result property="sampleId" column="sample_id" jdbcType="BIGINT"/>
<result property="flag" column="flag" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List">
select id,task_id,sample_id,flag from t_task_sample_relation
</sql>
<select id="selectByTaskId" resultType="com.ruoyi.domain.TaskSampleRelation">
<include refid="Base_Column_List"/>
where
<if test="taskId != null and taskId != ''">
task_id = #{taskId}
</if>
<if test="flag != null and flag != ''">
and flag = #{flag}
</if>
</select>
</mapper>
\ No newline at end of file
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