修改:新增报告附加草稿状态的流程,获取流程审批人附带流程信息
This commit is contained in:
parent
c45f9938e9
commit
0b704c9977
@ -93,7 +93,7 @@ public class ActivitiProcessController {
|
||||
public Response getApprovalUsers(
|
||||
@NotBlank @RequestParam String templateId
|
||||
) {
|
||||
List<ApprovalUserNodeDTO> nodes = activitiProcessService.getApprovalUsers(templateId);
|
||||
ApprovalNodesDTO nodes = activitiProcessService.getApprovalUsers(templateId);
|
||||
return Response.ok().data(nodes);
|
||||
}
|
||||
// 直送回退回的节点
|
||||
|
||||
@ -6,6 +6,7 @@ import com.xdap.runtime.service.RuntimeDatasourceService;
|
||||
import com.xdap.self_development.controller.form.*;
|
||||
import com.xdap.self_development.exception.CommonException;
|
||||
import com.xdap.self_development.pojo.dto.ApprovalNodeDTO;
|
||||
import com.xdap.self_development.pojo.dto.ApprovalNodesDTO;
|
||||
import com.xdap.self_development.pojo.view.ApprovalFlowNodeView;
|
||||
import com.xdap.self_development.pojo.view.DepartmentUserView;
|
||||
import com.xdap.self_development.pojo.view.TemplateChangeView;
|
||||
@ -40,7 +41,7 @@ public class TemplateApprovalController {
|
||||
public Response getApprovalUsers(
|
||||
@NotBlank @RequestParam String templateId
|
||||
) {
|
||||
List<ApprovalUserNodeDTO> nodes = templateApprovalService.getApprovalUsers(templateId);
|
||||
ApprovalNodesDTO nodes = templateApprovalService.getApprovalUsers(templateId);
|
||||
return Response.ok().data(nodes);
|
||||
}
|
||||
|
||||
|
||||
@ -9,15 +9,12 @@ import java.util.List;
|
||||
|
||||
@Data
|
||||
public class ApprovalPersonForm {
|
||||
@NotEmpty(message = "创建者不能为空")
|
||||
@NotBlank(message = "创建者不能为空")
|
||||
private String userId;
|
||||
|
||||
@NotEmpty(message = "报告不能为空")
|
||||
@NotBlank(message = "报告不能为空")
|
||||
private String reportId;
|
||||
@NotBlank(message = "流程标题不能为空")
|
||||
private String processTitle;
|
||||
// 审批环节配置列表
|
||||
@NotEmpty(message = "环节不能为空")
|
||||
private List<ApprovalNodeDTO> nodeList;
|
||||
private String explanation;
|
||||
|
||||
@NotBlank(message = "流程不能为空")
|
||||
private String flowId;
|
||||
}
|
||||
|
||||
@ -1,8 +1,11 @@
|
||||
package com.xdap.self_development.controller.form;
|
||||
|
||||
import com.xdap.self_development.pojo.dto.ApprovalNodeDTO;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class SaveBenchmarkingReportForm {
|
||||
@ -24,6 +27,13 @@ public class SaveBenchmarkingReportForm {
|
||||
private String subsystem;
|
||||
private String partsName;
|
||||
|
||||
@NotBlank(message = "流程标题不能为空")
|
||||
private String processTitle;
|
||||
// 审批环节配置列表
|
||||
@NotEmpty(message = "环节不能为空")
|
||||
private List<ApprovalNodeDTO> nodeList;
|
||||
private String explanation;
|
||||
|
||||
@NotBlank(message = "发起人不能为空")
|
||||
private String userId;
|
||||
private String fileUrl;
|
||||
|
||||
@ -1,13 +1,18 @@
|
||||
package com.xdap.self_development.controller.form;
|
||||
|
||||
import com.xdap.self_development.pojo.dto.ApprovalNodeDTO;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class UpdateBenchmarkingReportForm {
|
||||
@NotBlank(message = "原对标报告不能为空")
|
||||
private String reportId;
|
||||
@NotBlank(message = "流程不能为空")
|
||||
private String flowId;
|
||||
|
||||
private String title;
|
||||
private String manufacturerName;
|
||||
@ -25,9 +30,14 @@ public class UpdateBenchmarkingReportForm {
|
||||
|
||||
private String subsystem;
|
||||
private String partsName;
|
||||
|
||||
private String fileUrl;
|
||||
|
||||
@NotBlank(message = "流程标题不能为空")
|
||||
private String processTitle;
|
||||
@NotEmpty(message = "流程节点不能为空")
|
||||
private List<ApprovalNodeDTO> nodeList;
|
||||
private String explanation;
|
||||
|
||||
@NotBlank(message = "发起人不能为空")
|
||||
private String userId;
|
||||
}
|
||||
|
||||
@ -0,0 +1,13 @@
|
||||
package com.xdap.self_development.pojo.dto;
|
||||
|
||||
import com.xdap.self_development.controller.form.ApprovalUserNodeDTO;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class ApprovalNodesDTO {
|
||||
private String processTitle;
|
||||
private List<ApprovalUserNodeDTO> nodeList;
|
||||
private String explanation;
|
||||
}
|
||||
@ -12,7 +12,7 @@ import java.util.List;
|
||||
// CASE af.flow_status WHEN 'COMPLETE' THEN 1 WHEN 'APPROVING' THEN 2 WHEN 'DRAFT' THEN 3 WHEN 'REJECTED' THEN 4 ELSE 5 END ASC,
|
||||
@SQLQuery(value = {
|
||||
@SQL(view = "getAllReportApprovalList",
|
||||
sql = "WITH RankedFlows AS (SELECT af.id AS flowId, r.id AS reportId, af.process_title AS title, af.flow_status AS status, af.create_by AS createBy, xu.username AS username, af.created_time AS createdTime, ac.assignees AS current_users, ROW_NUMBER() OVER (PARTITION BY af.template_id ORDER BY af.created_time DESC) AS rn FROM yfsjglpt_model_approval_flow af LEFT JOIN approval_config ac ON af.id = ac.approval_id AND af.current_node = ac.node_order LEFT JOIN yfsjglpt_model_benchmarking_report r ON af.template_id = r.id LEFT JOIN xdap_users xu ON xu.id = af.create_by WHERE af.flow_type = 2) SELECT flowId, reportId, title, status, createBy, username, createdTime, current_users FROM RankedFlows WHERE rn = 1 AND title LIKE CONCAT('%', #title, '%') AND status LIKE CONCAT('%', #status, '%') AND createdTime LIKE CONCAT('%', #createdTime, '%') AND username LIKE CONCAT('%', #username, '%') ORDER BY createdTime DESC")
|
||||
sql = "WITH RankedFlows AS (SELECT af.id AS flowId, r.id AS reportId, af.process_title AS title, af.flow_status AS status, af.create_by AS createBy, xu.username AS username, af.created_time AS createdTime, ac.assignees AS current_users, ROW_NUMBER() OVER (PARTITION BY af.template_id ORDER BY af.created_time DESC) AS rn FROM yfsjglpt_model_approval_flow af LEFT JOIN approval_config ac ON af.id = ac.approval_id AND af.current_node = ac.node_order LEFT JOIN yfsjglpt_model_benchmarking_report r ON af.template_id = r.id LEFT JOIN xdap_users xu ON xu.id = af.create_by WHERE af.flow_type = 2 and af.flow_status <> 'DRAFT') SELECT flowId, reportId, title, status, createBy, username, createdTime, current_users FROM RankedFlows WHERE rn = 1 AND title LIKE CONCAT('%', #title, '%') AND status LIKE CONCAT('%', #status, '%') AND createdTime LIKE CONCAT('%', #createdTime, '%') AND username LIKE CONCAT('%', #username, '%') ORDER BY createdTime DESC")
|
||||
})
|
||||
@Data
|
||||
public class TodoAndReportListView {
|
||||
|
||||
@ -8,10 +8,7 @@ import com.xdap.self_development.controller.request.ApprovalByPlatformRequest;
|
||||
import com.xdap.self_development.controller.request.ApprovalNodeRequest;
|
||||
import com.xdap.self_development.enums.ParamValueVersionEnum;
|
||||
import com.xdap.self_development.pojo.*;
|
||||
import com.xdap.self_development.pojo.dto.ActivitiDataAndRecordDTO;
|
||||
import com.xdap.self_development.pojo.dto.ActivitiDataDTO;
|
||||
import com.xdap.self_development.pojo.dto.HandleApprovalDTO;
|
||||
import com.xdap.self_development.pojo.dto.ShowActivitiDTO;
|
||||
import com.xdap.self_development.pojo.dto.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
@ -31,7 +28,7 @@ public interface ActivitiProcessService {
|
||||
|
||||
boolean getIsDirect(String flowId);
|
||||
|
||||
List<ApprovalUserNodeDTO> getApprovalUsers(@NotBlank String flowId);
|
||||
ApprovalNodesDTO getApprovalUsers(@NotBlank String flowId);
|
||||
|
||||
void directSendingApproval(@NotBlank String templateId, @NotBlank String userId);
|
||||
|
||||
|
||||
@ -7,6 +7,7 @@ import com.xdap.self_development.pojo.ApprovalFlow;
|
||||
import com.xdap.self_development.pojo.ApprovalRecord;
|
||||
import com.xdap.self_development.pojo.Template;
|
||||
import com.xdap.self_development.pojo.dto.ApprovalNodeDTO;
|
||||
import com.xdap.self_development.pojo.dto.ApprovalNodesDTO;
|
||||
import com.xdap.self_development.pojo.view.ApprovalFlowNodeView;
|
||||
import com.xdap.self_development.pojo.view.TemplateChangeView;
|
||||
import com.xdap.self_development.pojo.view.TodoAndTemplateView;
|
||||
@ -48,7 +49,7 @@ public interface TemplateApprovalService {
|
||||
|
||||
List<String> getReturnNodes(@NotBlank String flowId);
|
||||
|
||||
List<ApprovalUserNodeDTO> getApprovalUsers(@NotBlank String templateId);
|
||||
ApprovalNodesDTO getApprovalUsers(@NotBlank String templateId);
|
||||
|
||||
boolean getIsDirect(String flowId);
|
||||
}
|
||||
|
||||
@ -682,7 +682,10 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ApprovalUserNodeDTO> getApprovalUsers(String flowId) {
|
||||
public ApprovalNodesDTO getApprovalUsers(String flowId) {
|
||||
ApprovalNodesDTO nodes = new ApprovalNodesDTO();
|
||||
nodes.setProcessTitle("");
|
||||
nodes.setExplanation("");
|
||||
List<ApprovalUserNodeDTO> list = new ArrayList<>();
|
||||
|
||||
// 获取到模板最近一次未完成的流程
|
||||
@ -690,7 +693,8 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService {
|
||||
.eq("id", flowId)
|
||||
.doQueryFirst(EngineReviewListPojo.class);
|
||||
if (flow == null) {
|
||||
return list;
|
||||
nodes.setNodeList(list);
|
||||
return nodes;
|
||||
}
|
||||
|
||||
// 获取流程节点
|
||||
@ -710,7 +714,10 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService {
|
||||
);
|
||||
list.add(dto);
|
||||
});
|
||||
return list;
|
||||
nodes.setProcessTitle(flow.getProcessTopic());
|
||||
nodes.setExplanation(flow.getReviewComment());
|
||||
nodes.setNodeList(list);
|
||||
return nodes;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -58,6 +58,158 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService
|
||||
private static final String FLOW_LOCK_PREFIX = "report:lock:";
|
||||
private static final int FLOW_LOCK_EXPIRE_SECONDS = 5;
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void insertReport(SaveBenchmarkingReportForm form) {
|
||||
// 创建报告
|
||||
BenchmarkingReport report = new BenchmarkingReport();
|
||||
BeanUtils.copyProperties(form, report);
|
||||
report.setFilePath(form.getFileUrl() == null ? "" : form.getFileUrl());
|
||||
report.setUploadTime(Timestamp.valueOf(LocalDateTime.now()));
|
||||
// 草稿状态
|
||||
report.setStatus("DRAFT");
|
||||
report.setCreateBy(form.getUserId());
|
||||
report.setIsDelete(0);
|
||||
report.setReturnNum(0);
|
||||
report.setFileName(form.getFileName());
|
||||
bd.getBusinessDatabase().doInsert(report);
|
||||
|
||||
// 新增流程
|
||||
ApprovalFlow flow = new ApprovalFlow();
|
||||
flow.setTemplateId(report.getId());
|
||||
flow.setCurrentNode(1);
|
||||
flow.setFlowStatus("DRAFT");
|
||||
flow.setProcessTitle(form.getProcessTitle());
|
||||
flow.setCreateBy(form.getUserId());
|
||||
flow.setCreatedTime(Timestamp.valueOf(LocalDateTime.now()));
|
||||
flow.setFlowType(2); // 设置为报告审批流程
|
||||
flow.setExplanation(form.getExplanation());
|
||||
flow.setReturnNum(0);
|
||||
flow.setPreNode(-1);
|
||||
bd.getBusinessDatabase().doInsert(flow);
|
||||
|
||||
// 创建审批配置
|
||||
List<ApprovalConfigPojo> approvalConfigs = new ArrayList<>();
|
||||
for (ApprovalNodeDTO node : form.getNodeList()) {
|
||||
ApprovalConfigPojo config = new ApprovalConfigPojo();
|
||||
config.setNodeName(node.getNodeName());
|
||||
config.setNodeOrder(node.getNodeOrder());
|
||||
config.setAssignees(JSON.toJSONString(node.getAssignees()));
|
||||
config.setApprovalId(flow.getId());
|
||||
approvalConfigs.add(config);
|
||||
}
|
||||
bd.getBusinessDatabase().doBatchInsert(approvalConfigs);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateReport(UpdateBenchmarkingReportForm form) {
|
||||
// 验证报告
|
||||
BenchmarkingReport report = bd.getBusinessDatabase()
|
||||
.eq("id", form.getReportId())
|
||||
.doQueryFirst(BenchmarkingReport.class);
|
||||
if (!"DRAFT".equals(report.getStatus()) && !"REJECTED".equals(report.getStatus())) {
|
||||
throw new CommonException("报告非草稿或拒绝状态不可修改");
|
||||
}
|
||||
if (!Objects.equals(report.getCreateBy(), form.getUserId())) {
|
||||
throw new CommonException("非创建者不能修改");
|
||||
}
|
||||
// 修改报告
|
||||
BeanUtils.copyProperties(form, report);
|
||||
report.setFilePath(form.getFileUrl() == null ? "" : form.getFileUrl());
|
||||
report.setUploadTime(Timestamp.valueOf(LocalDateTime.now()));
|
||||
report.setStatus("DRAFT");
|
||||
bd.getBusinessDatabase()
|
||||
.eq("id", report.getId())
|
||||
.doUpdate(report);
|
||||
|
||||
// 修改流程
|
||||
ApprovalFlow flow = bd.getBusinessDatabase()
|
||||
.eq("id", form.getFlowId())
|
||||
.doQueryFirst(ApprovalFlow.class);
|
||||
flow.setExplanation(form.getExplanation());
|
||||
flow.setProcessTitle(form.getProcessTitle());
|
||||
bd.getBusinessDatabase()
|
||||
.eq("id", flow.getId())
|
||||
.update("explanation", flow.getExplanation())
|
||||
.update("process_title", flow.getProcessTitle())
|
||||
.doUpdate(ApprovalFlow.class);
|
||||
// 修改流程节点
|
||||
List<String> ids = bd.getBusinessDatabase()
|
||||
.eq("approval_id", flow.getId())
|
||||
.orderBy("node_order", "asc")
|
||||
.doQuery(ApprovalConfigPojo.class)
|
||||
.stream().map(ApprovalConfigPojo::getId)
|
||||
.collect(Collectors.toList());
|
||||
bd.getBusinessDatabase()
|
||||
.in("ids", ids)
|
||||
.doDelete(ApprovalConfigPojo.class);
|
||||
List<ApprovalConfigPojo> approvalConfigs = new ArrayList<>();
|
||||
for (ApprovalNodeDTO node : form.getNodeList()) {
|
||||
ApprovalConfigPojo config = new ApprovalConfigPojo();
|
||||
config.setNodeName(node.getNodeName());
|
||||
config.setNodeOrder(node.getNodeOrder());
|
||||
config.setAssignees(JSON.toJSONString(node.getAssignees()));
|
||||
config.setApprovalId(flow.getId());
|
||||
approvalConfigs.add(config);
|
||||
}
|
||||
bd.getBusinessDatabase().doBatchInsert(approvalConfigs);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void deleteReport(String reportId) {
|
||||
BenchmarkingReport report = bd.getBusinessDatabase()
|
||||
.eq("id", reportId)
|
||||
.doQueryFirst(BenchmarkingReport.class);
|
||||
if (report == null) {
|
||||
throw new CommonException("该报告不存在");
|
||||
}
|
||||
ApprovalFlow flow = bd.getBusinessDatabase()
|
||||
.eq("template_id", reportId)
|
||||
.ne("pre_node", -1)
|
||||
.eq("flow_status", "APPROVING")
|
||||
.orderBy("created_time", "desc")
|
||||
.doQueryFirst(ApprovalFlow.class);
|
||||
if (flow != null) {
|
||||
throw new CommonException("该报告正在审批中");
|
||||
}
|
||||
bd.getBusinessDatabase()
|
||||
.eq("id", reportId)
|
||||
.update("is_delete", 1)
|
||||
.doUpdate(BenchmarkingReport.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String uploadFile(MultipartFile file, String userId) {
|
||||
String currentTenantId = runtimeAppContextService.getCurrentTenantId();
|
||||
AppTokenDTO token = apaasMyTokenFeign.getAppToken(
|
||||
"client_credentials",
|
||||
clientId,
|
||||
clientSecret
|
||||
);
|
||||
|
||||
UserTokenDT0 userToken = apaasMyTokenFeign.getUserToken(
|
||||
token.getAccess_token(),
|
||||
userId
|
||||
);
|
||||
|
||||
String uploadId = new ObjectId().toHexString();
|
||||
FileUploadDTO fileUploadDTO = apaasMyTokenFeign.uploadFile(
|
||||
"Bearer " + userToken.getAccess_token(),
|
||||
"application/x-www-form-urlencoded",
|
||||
file,
|
||||
uploadId,
|
||||
currentTenantId,
|
||||
userId
|
||||
);
|
||||
Map<String, String> map = new HashMap<>();
|
||||
map.put("xdaptenantid", currentTenantId);
|
||||
cn.hutool.json.JSON json = JSONUtil.parse(map);
|
||||
String tokenXdap = Base64.encode(json.toString());
|
||||
return fileUploadDTO.getData().getUrl() +"&download=download&token=" + tokenXdap;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void startReportApproval(ApprovalPersonForm form) {
|
||||
@ -70,59 +222,34 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService
|
||||
}
|
||||
|
||||
ApprovalFlow approvalFlow = bd.getBusinessDatabase()
|
||||
.eq("template_id", report.getId())
|
||||
.eq("id", form.getFlowId())
|
||||
.doQueryFirst(ApprovalFlow.class);
|
||||
if (approvalFlow != null && Objects.equals(approvalFlow.getFlowStatus(), "APPROVING")) {
|
||||
throw new CommonException("该报告正在审批中,请勿重复发起审批");
|
||||
if (approvalFlow == null || Objects.equals(approvalFlow.getFlowStatus(), "APPROVING")) {
|
||||
throw new CommonException("该报告正在审批中");
|
||||
}
|
||||
|
||||
// 新增流程
|
||||
ApprovalFlow flow = new ApprovalFlow();
|
||||
flow.setTemplateId(report.getId());
|
||||
flow.setCurrentNode(1);
|
||||
flow.setFlowStatus("APPROVING");
|
||||
flow.setProcessTitle(form.getProcessTitle());
|
||||
flow.setCreateBy(form.getUserId());
|
||||
flow.setCreatedTime(Timestamp.valueOf(LocalDateTime.now()));
|
||||
flow.setFlowType(2); // 设置为报告审批流程
|
||||
flow.setExplanation(form.getExplanation());
|
||||
flow.setReturnNum(0);
|
||||
flow.setPreNode(-1);
|
||||
bd.getBusinessDatabase().doInsert(flow);
|
||||
// 获取首个节点
|
||||
ApprovalConfigPojo firstNode = bd.getBusinessDatabase()
|
||||
.eq("approval_id", approvalFlow.getId())
|
||||
.eq("node_order", 1)
|
||||
.doQueryFirst(ApprovalConfigPojo.class);
|
||||
|
||||
// 创建审批配置
|
||||
List<ApprovalConfigPojo> approvalConfigs = new ArrayList<>();
|
||||
ApprovalNodeDTO firstNode = new ApprovalNodeDTO();
|
||||
for (ApprovalNodeDTO node : form.getNodeList()) {
|
||||
if (node.getNodeOrder() == 1) {
|
||||
firstNode.setNodeOrder(1);
|
||||
firstNode.setAssignees(node.getAssignees());
|
||||
firstNode.setNodeName(node.getNodeName());
|
||||
}
|
||||
ApprovalConfigPojo config = new ApprovalConfigPojo();
|
||||
config.setNodeName(node.getNodeName());
|
||||
config.setNodeOrder(node.getNodeOrder());
|
||||
config.setAssignees(JSON.toJSONString(node.getAssignees()));
|
||||
config.setApprovalId(flow.getId());
|
||||
approvalConfigs.add(config);
|
||||
}
|
||||
bd.getBusinessDatabase().doBatchInsert(approvalConfigs);
|
||||
|
||||
// 新增我的待办
|
||||
List<TodoTaskPojo> list = new ArrayList<>();
|
||||
for (String person : firstNode.getAssignees()) {
|
||||
for (String person : JSON.parseArray(firstNode.getAssignees()).toJavaList(String.class)) {
|
||||
TodoTaskPojo todoTask = new TodoTaskPojo();
|
||||
todoTask.setCreatedById(form.getUserId());
|
||||
todoTask.setCreatedBy(xdapDeptUsersService.selectUserByID(form.getUserId()).getUsername());
|
||||
todoTask.setCurrentNode(firstNode.getNodeName());
|
||||
todoTask.setDataType("对标报告审核");
|
||||
todoTask.setDocumentNo(flow.getId());
|
||||
todoTask.setDocumentNo(approvalFlow.getId());
|
||||
todoTask.setCreationDate(Timestamp.valueOf(LocalDateTime.now()));
|
||||
todoTask.setIsDelete(0);
|
||||
todoTask.setModelId(report.getId());
|
||||
todoTask.setModelName(report.getProjectName() + "对标报告");
|
||||
todoTask.setProcessTitle(form.getProcessTitle());
|
||||
todoTask.setStatusCode(flow.getFlowStatus());
|
||||
todoTask.setProcessTitle(approvalFlow.getProcessTitle());
|
||||
todoTask.setStatusCode(approvalFlow.getFlowStatus());
|
||||
todoTask.setVersionNumber(1);
|
||||
todoTask.setOwnerId(person);
|
||||
todoTask.setCurrentProcessor(JSON.toJSONString(firstNode.getAssignees()));
|
||||
@ -132,23 +259,23 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService
|
||||
|
||||
// 新增我创建的
|
||||
InitiatedTaskPojo initiatedTask = new InitiatedTaskPojo();
|
||||
initiatedTask.setDocumentNo(flow.getId());
|
||||
initiatedTask.setDocumentNo(approvalFlow.getId());
|
||||
initiatedTask.setCreatedById(form.getUserId());
|
||||
initiatedTask.setCreatedBy(xdapDeptUsersService.selectUserByID(form.getUserId()).getUsername());
|
||||
initiatedTask.setCurrentNode(firstNode.getNodeName());
|
||||
initiatedTask.setCurrentProcessor(JSON.toJSONString(firstNode.getAssignees()));
|
||||
initiatedTask.setDataType("对标报告审核");
|
||||
initiatedTask.setProcessTitle(form.getProcessTitle());
|
||||
initiatedTask.setProcessTitle(approvalFlow.getProcessTitle());
|
||||
initiatedTask.setCreationDate(Timestamp.valueOf(LocalDateTime.now()));
|
||||
initiatedTask.setIsDelete(0);
|
||||
initiatedTask.setModelId(flow.getTemplateId());
|
||||
initiatedTask.setModelId(approvalFlow.getTemplateId());
|
||||
initiatedTask.setEnableReturn(1);
|
||||
bd.getBusinessDatabase().doInsert(initiatedTask);
|
||||
|
||||
// 新增发起记录
|
||||
bd.getBusinessDatabase().doInsert(
|
||||
new ApprovalRecord(
|
||||
flow.getId(),
|
||||
approvalFlow.getId(),
|
||||
"发起审批",
|
||||
xdapDeptUsersService.selectUserByID(form.getUserId()).getUsername(),
|
||||
"发起审批",
|
||||
@ -397,60 +524,6 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void deleteReport(String reportId) {
|
||||
BenchmarkingReport report = bd.getBusinessDatabase()
|
||||
.eq("id", reportId)
|
||||
.doQueryFirst(BenchmarkingReport.class);
|
||||
if (report == null) {
|
||||
throw new CommonException("该报告不存在");
|
||||
}
|
||||
ApprovalFlow flow = bd.getBusinessDatabase()
|
||||
.eq("template_id", reportId)
|
||||
.ne("pre_node", -1)
|
||||
.eq("flow_status", "APPROVING")
|
||||
.orderBy("created_time", "desc")
|
||||
.doQueryFirst(ApprovalFlow.class);
|
||||
if (flow != null) {
|
||||
throw new CommonException("该报告正在审批中");
|
||||
}
|
||||
bd.getBusinessDatabase()
|
||||
.eq("id", reportId)
|
||||
.update("is_delete", 1)
|
||||
.doUpdate(BenchmarkingReport.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String uploadFile(MultipartFile file, String userId) {
|
||||
String currentTenantId = runtimeAppContextService.getCurrentTenantId();
|
||||
AppTokenDTO token = apaasMyTokenFeign.getAppToken(
|
||||
"client_credentials",
|
||||
clientId,
|
||||
clientSecret
|
||||
);
|
||||
|
||||
UserTokenDT0 userToken = apaasMyTokenFeign.getUserToken(
|
||||
token.getAccess_token(),
|
||||
userId
|
||||
);
|
||||
|
||||
String uploadId = new ObjectId().toHexString();
|
||||
FileUploadDTO fileUploadDTO = apaasMyTokenFeign.uploadFile(
|
||||
"Bearer " + userToken.getAccess_token(),
|
||||
"application/x-www-form-urlencoded",
|
||||
file,
|
||||
uploadId,
|
||||
currentTenantId,
|
||||
userId
|
||||
);
|
||||
Map<String, String> map = new HashMap<>();
|
||||
map.put("xdaptenantid", currentTenantId);
|
||||
cn.hutool.json.JSON json = JSONUtil.parse(map);
|
||||
String tokenXdap = Base64.encode(json.toString());
|
||||
return fileUploadDTO.getData().getUrl() +"&download=download&token=" + tokenXdap;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageQueryResult<TodoAndReportListView> getApprovalList(ApprovalListForm form) {
|
||||
PageQueryResult<TodoAndReportListView> result = bd.getBusinessDatabase()
|
||||
@ -503,41 +576,6 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void insertReport(SaveBenchmarkingReportForm form) {
|
||||
BenchmarkingReport report = new BenchmarkingReport();
|
||||
BeanUtils.copyProperties(form, report);
|
||||
report.setFilePath(form.getFileUrl() == null ? "" : form.getFileUrl());
|
||||
report.setUploadTime(Timestamp.valueOf(LocalDateTime.now()));
|
||||
// 草稿状态
|
||||
report.setStatus("DRAFT");
|
||||
report.setCreateBy(form.getUserId());
|
||||
report.setIsDelete(0);
|
||||
report.setReturnNum(0);
|
||||
report.setFileName(form.getFileName());
|
||||
bd.getBusinessDatabase().doInsert(report);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateReport(UpdateBenchmarkingReportForm form) {
|
||||
BenchmarkingReport report = bd.getBusinessDatabase()
|
||||
.eq("id", form.getReportId())
|
||||
.doQueryFirst(BenchmarkingReport.class);
|
||||
if (!"DRAFT".equals(report.getStatus()) && !"REJECTED".equals(report.getStatus())) {
|
||||
throw new CommonException("报告非草稿或拒绝状态不可修改");
|
||||
}
|
||||
if (!Objects.equals(report.getCreateBy(), form.getUserId())) {
|
||||
throw new CommonException("非创建者不能修改");
|
||||
}
|
||||
BeanUtils.copyProperties(form, report);
|
||||
report.setFilePath(form.getFileUrl() == null ? "" : form.getFileUrl());
|
||||
report.setUploadTime(Timestamp.valueOf(LocalDateTime.now()));
|
||||
report.setStatus("DRAFT");
|
||||
bd.getBusinessDatabase()
|
||||
.eq("id", report.getId())
|
||||
.doUpdate(report);
|
||||
}
|
||||
|
||||
private void setCurrentApprovers(PageQueryResult<TodoAndReportView> result) {
|
||||
result.getResult().forEach(item -> {
|
||||
ApprovalXdapUsers approvalXdapUser = bd.getBusinessDatabase()
|
||||
|
||||
@ -8,6 +8,7 @@ import com.xdap.self_development.controller.form.*;
|
||||
import com.xdap.self_development.exception.CommonException;
|
||||
import com.xdap.self_development.pojo.*;
|
||||
import com.xdap.self_development.pojo.dto.ApprovalNodeDTO;
|
||||
import com.xdap.self_development.pojo.dto.ApprovalNodesDTO;
|
||||
import com.xdap.self_development.pojo.view.ApprovalFlowNodeView;
|
||||
import com.xdap.self_development.pojo.view.FlowNode;
|
||||
import com.xdap.self_development.pojo.view.TemplateChangeView;
|
||||
@ -603,7 +604,10 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ApprovalUserNodeDTO> getApprovalUsers(String templateId) {
|
||||
public ApprovalNodesDTO getApprovalUsers(String templateId) {
|
||||
ApprovalNodesDTO nodes = new ApprovalNodesDTO();
|
||||
nodes.setProcessTitle("");
|
||||
nodes.setExplanation("");
|
||||
List<ApprovalUserNodeDTO> list = new ArrayList<>();
|
||||
|
||||
// 获取到模板最近一次未完成的流程
|
||||
@ -614,7 +618,8 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
|
||||
.orderBy("created_time", "desc")
|
||||
.doQueryFirst(ApprovalFlow.class);
|
||||
if (flow == null) {
|
||||
return list;
|
||||
nodes.setNodeList(list);
|
||||
return nodes;
|
||||
}
|
||||
|
||||
// 获取流程节点
|
||||
@ -634,7 +639,10 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
|
||||
);
|
||||
list.add(dto);
|
||||
});
|
||||
return list;
|
||||
nodes.setProcessTitle(flow.getProcessTitle());
|
||||
nodes.setExplanation(flow.getExplanation());
|
||||
nodes.setNodeList(list);
|
||||
return nodes;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user