修改:导入修改前的保存
This commit is contained in:
parent
e47f92f576
commit
2b63397840
@ -8,6 +8,5 @@ import javax.validation.constraints.NotBlank;
|
|||||||
public class ApprovalFlowForm {
|
public class ApprovalFlowForm {
|
||||||
@NotBlank(message = "流程不能为空")
|
@NotBlank(message = "流程不能为空")
|
||||||
private String flowId;
|
private String flowId;
|
||||||
@NotBlank(message = "模板不能为空")
|
|
||||||
private String templateId;
|
private String templateId;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,7 +9,7 @@ import java.sql.Timestamp;
|
|||||||
|
|
||||||
@SQLQuery(value = {
|
@SQLQuery(value = {
|
||||||
@SQL(view = "getAllReport",
|
@SQL(view = "getAllReport",
|
||||||
sql = "SELECT br.id AS \"reportId\", br.* FROM yfsjglpt_model_benchmarking_report br WHERE br.is_delete = 0 and br.title like CONCAT('%', #title, '%') and br.manufacturer_name like CONCAT('%', #manufacturerName, '%') and br.model_name like CONCAT('%', #modelName, '%') and br.product_number like CONCAT('%', #productNumber, '%') and br.module like CONCAT('%', #module, '%') and br.plate like CONCAT('%', #plate, '%') and br.platform like CONCAT('%', #platform, '%') and br.series like CONCAT('%', #series, '%') and br.market_segment like CONCAT('%', #marketSegment, '%') and br.project_name like CONCAT('%', #projectName, '%') and br.project_number like CONCAT('%', #projectNumber, '%') and br.status like CONCAT('%', #status, '%') ORDER BY CASE br.status WHEN 'COMPLETE' THEN 1 WHEN 'APPROVING' THEN 2 WHEN 'REJECTED' THEN 3 ELSE 4 END ASC")
|
sql = "SELECT br.id AS \"reportId\", br.* FROM yfsjglpt_model_benchmarking_report br WHERE br.is_delete = 0 and br.title like CONCAT('%', #title, '%') and br.manufacturer_name like CONCAT('%', #manufacturerName, '%') and br.model_name like CONCAT('%', #modelName, '%') and br.product_number like CONCAT('%', #productNumber, '%') and br.module like CONCAT('%', #module, '%') and br.plate like CONCAT('%', #plate, '%') and br.platform like CONCAT('%', #platform, '%') and br.series like CONCAT('%', #series, '%') and br.market_segment like CONCAT('%', #marketSegment, '%') and br.project_name like CONCAT('%', #projectName, '%') and br.project_number like CONCAT('%', #projectNumber, '%') and br.status like CONCAT('%', #status, '%') ORDER BY CASE br.status WHEN 'COMPLETE' THEN 1 WHEN 'APPROVING' THEN 2 WHEN 'REJECTED' THEN 3 ELSE 4 END ASC , af.created_time DESC")
|
||||||
})
|
})
|
||||||
@Data
|
@Data
|
||||||
public class TodoAndReportView {
|
public class TodoAndReportView {
|
||||||
|
|||||||
@ -2,6 +2,9 @@ package com.xdap.self_development.service;
|
|||||||
|
|
||||||
import com.definesys.mpaas.query.db.PageQueryResult;
|
import com.definesys.mpaas.query.db.PageQueryResult;
|
||||||
import com.xdap.self_development.controller.form.*;
|
import com.xdap.self_development.controller.form.*;
|
||||||
|
import com.xdap.self_development.pojo.ApprovalConfigPojo;
|
||||||
|
import com.xdap.self_development.pojo.ApprovalFlow;
|
||||||
|
import com.xdap.self_development.pojo.Template;
|
||||||
import com.xdap.self_development.pojo.view.ApprovalFlowNodeView;
|
import com.xdap.self_development.pojo.view.ApprovalFlowNodeView;
|
||||||
import com.xdap.self_development.pojo.view.TemplateChangeView;
|
import com.xdap.self_development.pojo.view.TemplateChangeView;
|
||||||
import com.xdap.self_development.pojo.view.TodoAndTemplateView;
|
import com.xdap.self_development.pojo.view.TodoAndTemplateView;
|
||||||
@ -20,4 +23,18 @@ public interface TemplateApprovalService {
|
|||||||
ApprovalFlowNodeView getApprovalProcess(@Valid ApprovalFlowForm form);
|
ApprovalFlowNodeView getApprovalProcess(@Valid ApprovalFlowForm form);
|
||||||
|
|
||||||
void handleReturn(@Valid HandleApprovalRequest request);
|
void handleReturn(@Valid HandleApprovalRequest request);
|
||||||
|
|
||||||
|
void processApprovalLogic(
|
||||||
|
ApprovalFlow flow, HandleApprovalRequest request, ApprovalConfigPojo currentNode
|
||||||
|
);
|
||||||
|
|
||||||
|
void cancelProcess(ApprovalFlow flow, String status);
|
||||||
|
|
||||||
|
void processNextNode(ApprovalFlow flow, ApprovalConfigPojo currentNode, String userId);
|
||||||
|
|
||||||
|
boolean checkNodeComplete(ApprovalFlow flow, ApprovalConfigPojo node);
|
||||||
|
|
||||||
|
void updateTasks(ApprovalFlow flow, String status);
|
||||||
|
|
||||||
|
void addNodeTodo(ApprovalFlow flow, ApprovalConfigPojo node, Template template, String createBy);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -131,6 +131,8 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService
|
|||||||
initiatedTask.setDataType("对标报告审核");
|
initiatedTask.setDataType("对标报告审核");
|
||||||
initiatedTask.setProcessTitle(form.getProcessTitle());
|
initiatedTask.setProcessTitle(form.getProcessTitle());
|
||||||
initiatedTask.setCreationDate(Timestamp.valueOf(LocalDateTime.now()));
|
initiatedTask.setCreationDate(Timestamp.valueOf(LocalDateTime.now()));
|
||||||
|
initiatedTask.setIsDelete(0);
|
||||||
|
initiatedTask.setModelId(flow.getTemplateId());
|
||||||
bd.getBusinessDatabase().doInsert(initiatedTask);
|
bd.getBusinessDatabase().doInsert(initiatedTask);
|
||||||
|
|
||||||
// 更新报告状态为校对中
|
// 更新报告状态为校对中
|
||||||
@ -343,6 +345,8 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService
|
|||||||
completedTaskPojo.setOwnerId(request.getUserId());
|
completedTaskPojo.setOwnerId(request.getUserId());
|
||||||
completedTaskPojo.setProcessTitle(flow.getProcessTitle());
|
completedTaskPojo.setProcessTitle(flow.getProcessTitle());
|
||||||
completedTaskPojo.setCreationDate(Timestamp.valueOf(LocalDateTime.now()));
|
completedTaskPojo.setCreationDate(Timestamp.valueOf(LocalDateTime.now()));
|
||||||
|
completedTaskPojo.setIsDelete(0);
|
||||||
|
completedTaskPojo.setModelId(flow.getTemplateId());
|
||||||
bd.getBusinessDatabase().doInsert(completedTaskPojo);
|
bd.getBusinessDatabase().doInsert(completedTaskPojo);
|
||||||
|
|
||||||
// 处理驳回逻辑
|
// 处理驳回逻辑
|
||||||
@ -445,7 +449,7 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService
|
|||||||
.doUpdate(CompletedTaskPojo.class);
|
.doUpdate(CompletedTaskPojo.class);
|
||||||
bd.getBusinessDatabase()
|
bd.getBusinessDatabase()
|
||||||
.eq("document_no", flow.getId())
|
.eq("document_no", flow.getId())
|
||||||
.update("current_node", "已拒绝")
|
.update("current_node", status)
|
||||||
.doUpdate(InitiatedTaskPojo.class);
|
.doUpdate(InitiatedTaskPojo.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -35,6 +35,8 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
|
|||||||
private RedisLockUtil redisLockUtil;
|
private RedisLockUtil redisLockUtil;
|
||||||
@Resource
|
@Resource
|
||||||
private XdapDeptUsersService xdapDeptUsersService;
|
private XdapDeptUsersService xdapDeptUsersService;
|
||||||
|
@Resource
|
||||||
|
private TemplateApprovalService myself;
|
||||||
|
|
||||||
// 分布式锁标志
|
// 分布式锁标志
|
||||||
private static final String FLOW_LOCK_PREFIX = "approval:lock:";
|
private static final String FLOW_LOCK_PREFIX = "approval:lock:";
|
||||||
@ -141,11 +143,14 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
|
|||||||
InitiatedTaskPojo initiatedTask = new InitiatedTaskPojo();
|
InitiatedTaskPojo initiatedTask = new InitiatedTaskPojo();
|
||||||
initiatedTask.setDocumentNo(flow.getId());
|
initiatedTask.setDocumentNo(flow.getId());
|
||||||
initiatedTask.setCreatedById(request.getUserId());
|
initiatedTask.setCreatedById(request.getUserId());
|
||||||
|
initiatedTask.setCreatedBy(xdapDeptUsersService.selectUserByID(request.getUserId()).getUsername());
|
||||||
initiatedTask.setCurrentNode(firstNode.getNodeName());
|
initiatedTask.setCurrentNode(firstNode.getNodeName());
|
||||||
initiatedTask.setCurrentProcessor(JSON.toJSONString(firstNode.getAssignees()));
|
initiatedTask.setCurrentProcessor(JSON.toJSONString(firstNode.getAssignees()));
|
||||||
initiatedTask.setDataType("模板审核");
|
initiatedTask.setDataType("模板审核");
|
||||||
initiatedTask.setProcessTitle(request.getProcessTitle());
|
initiatedTask.setProcessTitle(request.getProcessTitle());
|
||||||
initiatedTask.setCreationDate(Timestamp.valueOf(LocalDateTime.now()));
|
initiatedTask.setCreationDate(Timestamp.valueOf(LocalDateTime.now()));
|
||||||
|
initiatedTask.setIsDelete(0);
|
||||||
|
initiatedTask.setModelId(flow.getTemplateId());
|
||||||
bd.getBusinessDatabase().doInsert(initiatedTask);
|
bd.getBusinessDatabase().doInsert(initiatedTask);
|
||||||
|
|
||||||
// 更新模板状态为校对中
|
// 更新模板状态为校对中
|
||||||
@ -229,14 +234,14 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
|
|||||||
if (processedCount > 0) {
|
if (processedCount > 0) {
|
||||||
throw new CommonException("此节点已被他人处理");
|
throw new CommonException("此节点已被他人处理");
|
||||||
}
|
}
|
||||||
processApprovalLogic(flow, request, currentNode);
|
myself.processApprovalLogic(flow, request, currentNode);
|
||||||
} finally {
|
} finally {
|
||||||
redisLockUtil.unlock(lockKey, lockValue);
|
redisLockUtil.unlock(lockKey, lockValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 会签节点
|
// 会签节点
|
||||||
else {
|
else {
|
||||||
processApprovalLogic(flow, request, currentNode);
|
myself.processApprovalLogic(flow, request, currentNode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -246,7 +251,9 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
|
|||||||
.toJavaList(String.class).contains(userId);
|
.toJavaList(String.class).contains(userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void processApprovalLogic(ApprovalFlow flow, HandleApprovalRequest request, ApprovalConfigPojo currentNode) {
|
public void processApprovalLogic(
|
||||||
|
ApprovalFlow flow, HandleApprovalRequest request, ApprovalConfigPojo currentNode
|
||||||
|
) {
|
||||||
// 记录审批结果
|
// 记录审批结果
|
||||||
ApprovalRecord record = new ApprovalRecord();
|
ApprovalRecord record = new ApprovalRecord();
|
||||||
record.setFlowId(flow.getId());
|
record.setFlowId(flow.getId());
|
||||||
@ -269,30 +276,33 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
|
|||||||
CompletedTaskPojo completedTaskPojo = new CompletedTaskPojo();
|
CompletedTaskPojo completedTaskPojo = new CompletedTaskPojo();
|
||||||
completedTaskPojo.setDocumentNo(flow.getId());
|
completedTaskPojo.setDocumentNo(flow.getId());
|
||||||
completedTaskPojo.setCreatedById(request.getUserId());
|
completedTaskPojo.setCreatedById(request.getUserId());
|
||||||
|
completedTaskPojo.setCreatedBy(xdapDeptUsersService.selectUserByID(request.getUserId()).getUsername());
|
||||||
completedTaskPojo.setCurrentNode(currentNode.getNodeName());
|
completedTaskPojo.setCurrentNode(currentNode.getNodeName());
|
||||||
completedTaskPojo.setCurrentProcessor(JSON.toJSONString(currentNode.getAssignees()));
|
completedTaskPojo.setCurrentProcessor(currentNode.getAssignees());
|
||||||
completedTaskPojo.setDataType("模板审核");
|
completedTaskPojo.setDataType("模板审核");
|
||||||
completedTaskPojo.setOwnerId(request.getUserId());
|
completedTaskPojo.setOwnerId(request.getUserId());
|
||||||
completedTaskPojo.setProcessTitle(flow.getProcessTitle());
|
completedTaskPojo.setProcessTitle(flow.getProcessTitle());
|
||||||
completedTaskPojo.setCreationDate(Timestamp.valueOf(LocalDateTime.now()));
|
completedTaskPojo.setCreationDate(Timestamp.valueOf(LocalDateTime.now()));
|
||||||
|
completedTaskPojo.setIsDelete(0);
|
||||||
|
completedTaskPojo.setModelId(flow.getTemplateId());
|
||||||
bd.getBusinessDatabase().doInsert(completedTaskPojo);
|
bd.getBusinessDatabase().doInsert(completedTaskPojo);
|
||||||
|
|
||||||
|
|
||||||
// 处理驳回逻辑
|
// 处理驳回逻辑
|
||||||
if ("REJECT".equals(request.getResult())) {
|
if ("REJECT".equals(request.getResult())) {
|
||||||
// 审批人退回
|
// 审批人退回
|
||||||
cancelProcess(flow, "REJECTED");
|
myself.cancelProcess(flow, "REJECTED");
|
||||||
return;
|
return;
|
||||||
} else if ("RETURN".equals(request.getResult())) {
|
} else if ("RETURN".equals(request.getResult())) {
|
||||||
// 申请人撤回
|
// 申请人撤回
|
||||||
cancelProcess(flow, "RETURNED");
|
myself.cancelProcess(flow, "RETURNED");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 处理通过逻辑,流转到下一节点
|
// 处理通过逻辑,流转到下一节点
|
||||||
processNextNode(flow, currentNode, request.getUserId());
|
myself.processNextNode(flow, currentNode, request.getUserId());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void cancelProcess(ApprovalFlow flow, String status) {
|
public void cancelProcess(ApprovalFlow flow, String status) {
|
||||||
// 更新流程状态
|
// 更新流程状态
|
||||||
flow.setFlowStatus(status);
|
flow.setFlowStatus(status);
|
||||||
bd.getBusinessDatabase()
|
bd.getBusinessDatabase()
|
||||||
@ -310,13 +320,13 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
|
|||||||
.update("return_num", template.getReturnNum() + 1)
|
.update("return_num", template.getReturnNum() + 1)
|
||||||
.doUpdate(Template.class);
|
.doUpdate(Template.class);
|
||||||
|
|
||||||
updateTasks(flow, "已拒绝");
|
myself.updateTasks(flow, "已拒绝");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 处理下一节点流转
|
// 处理下一节点流转
|
||||||
private void processNextNode(ApprovalFlow flow, ApprovalConfigPojo currentNode, String userId) {
|
public void processNextNode(ApprovalFlow flow, ApprovalConfigPojo currentNode, String userId) {
|
||||||
// 检查当前节点是否满足流转条件
|
// 检查当前节点是否满足流转条件
|
||||||
if (!checkNodeComplete(flow, currentNode)) {
|
if (!myself.checkNodeComplete(flow, currentNode)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -347,12 +357,12 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
|
|||||||
.update("published_time", Timestamp.valueOf(LocalDateTime.now()))
|
.update("published_time", Timestamp.valueOf(LocalDateTime.now()))
|
||||||
.doUpdate(Template.class);
|
.doUpdate(Template.class);
|
||||||
// 待办环节修改
|
// 待办环节修改
|
||||||
updateTasks(flow, "已完成");
|
myself.updateTasks(flow, "已完成");
|
||||||
// 更新机型版本
|
// 更新机型版本
|
||||||
// dataEntryEngineModelService.updateModelForNewVersion();
|
// dataEntryEngineModelService.updateModelForNewVersion();
|
||||||
} else {
|
} else {
|
||||||
flow.setCurrentNode(nextNode.getNodeOrder());
|
flow.setCurrentNode(nextNode.getNodeOrder());
|
||||||
addNodeTodo(flow, nextNode, template, userId);
|
myself.addNodeTodo(flow, nextNode, template, userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
bd.getBusinessDatabase()
|
bd.getBusinessDatabase()
|
||||||
@ -363,7 +373,7 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 检查节点是否完成
|
// 检查节点是否完成
|
||||||
private boolean checkNodeComplete(ApprovalFlow flow, ApprovalConfigPojo node) {
|
public boolean checkNodeComplete(ApprovalFlow flow, ApprovalConfigPojo node) {
|
||||||
Integer processedCount = bd.getBusinessDatabase()
|
Integer processedCount = bd.getBusinessDatabase()
|
||||||
.eq("flow_id", flow.getId())
|
.eq("flow_id", flow.getId())
|
||||||
.eq("node", node.getNodeName())
|
.eq("node", node.getNodeName())
|
||||||
@ -375,7 +385,7 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addNodeTodo(ApprovalFlow flow, ApprovalConfigPojo node, Template template, String createBy) {
|
public void addNodeTodo(ApprovalFlow flow, ApprovalConfigPojo node, Template template, String createBy) {
|
||||||
// 获取处理人
|
// 获取处理人
|
||||||
List<String> users = JSON.parseArray(node.getAssignees()).toJavaList(String.class);
|
List<String> users = JSON.parseArray(node.getAssignees()).toJavaList(String.class);
|
||||||
// 新增待办
|
// 新增待办
|
||||||
@ -400,14 +410,14 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 更新已办和发起的状态
|
// 更新已办和发起的状态
|
||||||
updateTasks(flow, node.getNodeName());
|
myself.updateTasks(flow, node.getNodeName());
|
||||||
|
|
||||||
if (!list.isEmpty()) {
|
if (!list.isEmpty()) {
|
||||||
bd.getBusinessDatabase().doBatchInsert(list);
|
bd.getBusinessDatabase().doBatchInsert(list);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateTasks(ApprovalFlow flow, String status) {
|
public void updateTasks(ApprovalFlow flow, String status) {
|
||||||
// 更新已办和发起的节点状态
|
// 更新已办和发起的节点状态
|
||||||
bd.getBusinessDatabase()
|
bd.getBusinessDatabase()
|
||||||
.eq("document_no", flow.getId())
|
.eq("document_no", flow.getId())
|
||||||
@ -415,7 +425,7 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
|
|||||||
.doUpdate(CompletedTaskPojo.class);
|
.doUpdate(CompletedTaskPojo.class);
|
||||||
bd.getBusinessDatabase()
|
bd.getBusinessDatabase()
|
||||||
.eq("document_no", flow.getId())
|
.eq("document_no", flow.getId())
|
||||||
.update("current_node", "已拒绝")
|
.update("current_node", status)
|
||||||
.doUpdate(InitiatedTaskPojo.class);
|
.doUpdate(InitiatedTaskPojo.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -227,6 +227,7 @@ public class TemplateServiceImpl implements TemplateService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void processSheetData(List<Parameter> dataList, String sheetName,
|
public void processSheetData(List<Parameter> dataList, String sheetName,
|
||||||
String templateRowId, String createBy, MyResponse problems) {
|
String templateRowId, String createBy, MyResponse problems) {
|
||||||
if (dataList.isEmpty()) {
|
if (dataList.isEmpty()) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user