review:【bpm 工作流】流程打印
This commit is contained in:
@@ -192,16 +192,18 @@ public class BpmProcessInstanceController {
|
|||||||
@GetMapping("/get-bpmn-model-view")
|
@GetMapping("/get-bpmn-model-view")
|
||||||
@Operation(summary = "获取流程实例的 BPMN 模型视图", description = "在【流程详细】界面中,进行调用")
|
@Operation(summary = "获取流程实例的 BPMN 模型视图", description = "在【流程详细】界面中,进行调用")
|
||||||
@Parameter(name = "id", description = "流程实例的编号", required = true)
|
@Parameter(name = "id", description = "流程实例的编号", required = true)
|
||||||
public CommonResult<BpmProcessInstanceBpmnModelViewRespVO> getProcessInstanceBpmnModelView(@RequestParam(value = "id") String id) {
|
public CommonResult<BpmProcessInstanceBpmnModelViewRespVO> getProcessInstanceBpmnModelView(
|
||||||
|
@RequestParam(value = "id") String id) {
|
||||||
return success(processInstanceService.getProcessInstanceBpmnModelView(id));
|
return success(processInstanceService.getProcessInstanceBpmnModelView(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/get-print-data")
|
@GetMapping("/get-print-data")
|
||||||
@Operation(summary = "获得打印数据")
|
@Operation(summary = "获得流程实例的打印数据")
|
||||||
@Parameter(name = "id", description = "流程实例的编号", required = true)
|
@Parameter(name = "id", description = "流程实例的编号", required = true)
|
||||||
@PreAuthorize("@ss.hasPermission('bpm:process-instance:query')")
|
@PreAuthorize("@ss.hasPermission('bpm:process-instance:query')")
|
||||||
public CommonResult<BpmProcessPrintDataRespVO> getPrintData(@RequestParam("processInstanceId") String processInstanceId) {
|
public CommonResult<BpmProcessPrintDataRespVO> getProcessInstancePrintData(
|
||||||
return success(processInstanceService.getPrintData(getLoginUserId(), processInstanceId));
|
@RequestParam("processInstanceId") String processInstanceId) {
|
||||||
|
return success(processInstanceService.getProcessInstancePrintData(getLoginUserId(), processInstanceId));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ import lombok.Data;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
// TODO @lesan:这个可能复用 BpmApprovalDetailRespVO 哇?
|
||||||
@Schema(description = "管理后台 - 打印数据 Response VO")
|
@Schema(description = "管理后台 - 流程实例的打印数据 Response VO")
|
||||||
@Data
|
@Data
|
||||||
public class BpmProcessPrintDataRespVO {
|
public class BpmProcessPrintDataRespVO {
|
||||||
|
|
||||||
@@ -14,6 +14,7 @@ public class BpmProcessPrintDataRespVO {
|
|||||||
|
|
||||||
private Integer processStatus;
|
private Integer processStatus;
|
||||||
|
|
||||||
|
// TODO @lesan:通过字典?
|
||||||
private String processStatusShow;
|
private String processStatusShow;
|
||||||
|
|
||||||
private String processInstanceId;
|
private String processInstanceId;
|
||||||
@@ -22,6 +23,7 @@ public class BpmProcessPrintDataRespVO {
|
|||||||
|
|
||||||
private String processName;
|
private String processName;
|
||||||
|
|
||||||
|
// TODO @lesan:UserSimpleBaseVO 替代 startUser、startUserDept;
|
||||||
private String startUser;
|
private String startUser;
|
||||||
|
|
||||||
private String startUserDept;
|
private String startUserDept;
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ public interface BpmProcessInstanceService {
|
|||||||
* @param processInstanceId 流程实例id
|
* @param processInstanceId 流程实例id
|
||||||
* @return 打印所需数据
|
* @return 打印所需数据
|
||||||
*/
|
*/
|
||||||
BpmProcessPrintDataRespVO getPrintData(Long loginUserId, String processInstanceId);
|
BpmProcessPrintDataRespVO getProcessInstancePrintData(Long loginUserId, String processInstanceId);
|
||||||
|
|
||||||
// ========== Update 写入相关方法 ==========
|
// ========== Update 写入相关方法 ==========
|
||||||
|
|
||||||
|
|||||||
@@ -735,7 +735,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BpmProcessPrintDataRespVO getPrintData(Long loginUserId, String processInstanceId) {
|
public BpmProcessPrintDataRespVO getProcessInstancePrintData(Long loginUserId, String processInstanceId) {
|
||||||
// TODO 方法抽离
|
// TODO 方法抽离
|
||||||
// 流程实例
|
// 流程实例
|
||||||
HistoricProcessInstance historicProcessInstance = getHistoricProcessInstance(processInstanceId);
|
HistoricProcessInstance historicProcessInstance = getHistoricProcessInstance(processInstanceId);
|
||||||
@@ -747,7 +747,8 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
|
|||||||
.getProcessDefinitionInfo(historicProcessInstance.getProcessDefinitionId());
|
.getProcessDefinitionInfo(historicProcessInstance.getProcessDefinitionId());
|
||||||
BpmModelMetaInfoVO.PrintTemplateSetting printTemplateSetting = processDefinitionInfo.getPrintTemplateSetting();
|
BpmModelMetaInfoVO.PrintTemplateSetting printTemplateSetting = processDefinitionInfo.getPrintTemplateSetting();
|
||||||
List<String> formFieldList = processDefinitionInfo.getFormFields();
|
List<String> formFieldList = processDefinitionInfo.getFormFields();
|
||||||
List<JSONObject> formFieldObjList = formFieldList.stream().map(JSONUtil::parseObj).toList();
|
List<JSONObject> formFieldObjList = formFieldList != null ? formFieldList.stream().map(JSONUtil::parseObj).toList()
|
||||||
|
: ListUtil.of();
|
||||||
List<HistoricTaskInstance> tasks = historyService.createHistoricTaskInstanceQuery()
|
List<HistoricTaskInstance> tasks = historyService.createHistoricTaskInstanceQuery()
|
||||||
.finished()
|
.finished()
|
||||||
.includeTaskLocalVariables()
|
.includeTaskLocalVariables()
|
||||||
@@ -758,7 +759,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
|
|||||||
Set<Long> userIds = convertSet(tasks, item -> Long.valueOf(item.getAssignee()));
|
Set<Long> userIds = convertSet(tasks, item -> Long.valueOf(item.getAssignee()));
|
||||||
userIds.add(loginUserId);
|
userIds.add(loginUserId);
|
||||||
Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(userIds);
|
Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(userIds);
|
||||||
HashMap<String, String> printDataMap = new HashMap<>(8 + formFieldList.size());
|
HashMap<String, String> printDataMap = new HashMap<>(8 + formFieldObjList.size());
|
||||||
// 返回打印所需数据
|
// 返回打印所需数据
|
||||||
BpmProcessPrintDataRespVO printData = new BpmProcessPrintDataRespVO();
|
BpmProcessPrintDataRespVO printData = new BpmProcessPrintDataRespVO();
|
||||||
// 打印模板是否开启
|
// 打印模板是否开启
|
||||||
@@ -776,6 +777,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
|
|||||||
printData.setStartUser(startUser.getNickname());
|
printData.setStartUser(startUser.getNickname());
|
||||||
printData.setStartUserDept(dept.getName());
|
printData.setStartUserDept(dept.getName());
|
||||||
// 审批历史
|
// 审批历史
|
||||||
|
// TODO @lesan:打印的时候,未来节点打印么?
|
||||||
List<BpmProcessPrintDataRespVO.ApproveNode> approveNodes = new ArrayList<>(tasks.size());
|
List<BpmProcessPrintDataRespVO.ApproveNode> approveNodes = new ArrayList<>(tasks.size());
|
||||||
tasks.forEach(item -> {
|
tasks.forEach(item -> {
|
||||||
Map<String, Object> taskLocalVariables = item.getTaskLocalVariables();
|
Map<String, Object> taskLocalVariables = item.getTaskLocalVariables();
|
||||||
@@ -793,8 +795,9 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
|
|||||||
});
|
});
|
||||||
printData.setApproveNodes(approveNodes);
|
printData.setApproveNodes(approveNodes);
|
||||||
// 表单数据
|
// 表单数据
|
||||||
|
// TODO @lesan:这个可以在端上搞么?主要考虑,vben 和 vue3 plus 可能使用了不同的前端框架;可能直接使用 form-create 前端的工具方法,会更方便。
|
||||||
Map<String, Object> processVariables = historicProcessInstance.getProcessVariables();
|
Map<String, Object> processVariables = historicProcessInstance.getProcessVariables();
|
||||||
List<BpmProcessPrintDataRespVO.FormField> formFields = new ArrayList<>(formFieldList.size());
|
List<BpmProcessPrintDataRespVO.FormField> formFields = new ArrayList<>(formFieldObjList.size());
|
||||||
formFieldObjList.forEach(item -> {
|
formFieldObjList.forEach(item -> {
|
||||||
BpmProcessPrintDataRespVO.FormField formField = new BpmProcessPrintDataRespVO.FormField();
|
BpmProcessPrintDataRespVO.FormField formField = new BpmProcessPrintDataRespVO.FormField();
|
||||||
formField.setFormName(item.getStr("title"));
|
formField.setFormName(item.getStr("title"));
|
||||||
@@ -834,6 +837,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
|
|||||||
Elements mention = document.getElementsByAttributeValue("data-w-e-type", "mention");
|
Elements mention = document.getElementsByAttributeValue("data-w-e-type", "mention");
|
||||||
mention.forEach(item -> {
|
mention.forEach(item -> {
|
||||||
String mentionId = JSONUtil.parseObj(URLUtil.decode(item.attr("data-info"))).getStr("id");
|
String mentionId = JSONUtil.parseObj(URLUtil.decode(item.attr("data-info"))).getStr("id");
|
||||||
|
// TODO @lesan:这里要求非空;
|
||||||
item.html(printDataMap.get(mentionId));
|
item.html(printDataMap.get(mentionId));
|
||||||
});
|
});
|
||||||
// 替换流程记录
|
// 替换流程记录
|
||||||
|
|||||||
Reference in New Issue
Block a user