From e1d9e602ea4e4bf08d0e4dd8e40b9e9cf061cfb1 Mon Sep 17 00:00:00 2001 From: jack ning Date: Sat, 15 Feb 2025 16:06:34 +0800 Subject: [PATCH] update modules/ticket: add 1 mod 2 files --- .../process/ProcessDefinitionResponse.java | 38 +++++++++++++++++++ .../process/TicketProcessRestController.java | 33 ++++++++++------ .../ticket/process/TicketProcessService.java | 37 +++++++++++++----- 3 files changed, 88 insertions(+), 20 deletions(-) create mode 100644 modules/ticket/src/main/java/com/bytedesk/ticket/process/ProcessDefinitionResponse.java diff --git a/modules/ticket/src/main/java/com/bytedesk/ticket/process/ProcessDefinitionResponse.java b/modules/ticket/src/main/java/com/bytedesk/ticket/process/ProcessDefinitionResponse.java new file mode 100644 index 0000000000..d925cc49d2 --- /dev/null +++ b/modules/ticket/src/main/java/com/bytedesk/ticket/process/ProcessDefinitionResponse.java @@ -0,0 +1,38 @@ +/* + * @Author: jackning 270580156@qq.com + * @Date: 2025-02-15 15:44:10 + * @LastEditors: jackning 270580156@qq.com + * @LastEditTime: 2025-02-15 15:44:13 + * @Description: bytedesk.com https://github.com/Bytedesk/bytedesk + * Please be aware of the BSL license restrictions before installing Bytedesk IM – + * selling, reselling, or hosting Bytedesk IM as a service is a breach of the terms and automatically terminates your rights under the license. + * Business Source License 1.1: https://github.com/Bytedesk/bytedesk/blob/main/LICENSE + * contact: 270580156@qq.com + * + * Copyright (c) 2025 by bytedesk.com, All Rights Reserved. + */ +package com.bytedesk.ticket.process; + +import java.io.Serializable; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class ProcessDefinitionResponse implements Serializable { + + private static final long serialVersionUID = 1L; + + private String id; + private String key; + private String name; + private String description; + private int version; + private String deploymentId; + private String tenantId; +} diff --git a/modules/ticket/src/main/java/com/bytedesk/ticket/process/TicketProcessRestController.java b/modules/ticket/src/main/java/com/bytedesk/ticket/process/TicketProcessRestController.java index 9fe98a7629..53f6f21313 100644 --- a/modules/ticket/src/main/java/com/bytedesk/ticket/process/TicketProcessRestController.java +++ b/modules/ticket/src/main/java/com/bytedesk/ticket/process/TicketProcessRestController.java @@ -2,7 +2,7 @@ * @Author: jackning 270580156@qq.com * @Date: 2024-05-11 18:25:36 * @LastEditors: jackning 270580156@qq.com - * @LastEditTime: 2025-02-15 15:22:17 + * @LastEditTime: 2025-02-15 15:45:34 * @Description: bytedesk.com https://github.com/Bytedesk/bytedesk * Please be aware of the BSL license restrictions before installing Bytedesk IM – * selling, reselling, or hosting Bytedesk IM as a service is a breach of the terms and automatically terminates your rights under the license. @@ -14,6 +14,7 @@ package com.bytedesk.ticket.process; import java.util.List; +import java.util.stream.Collectors; import org.flowable.engine.repository.ProcessDefinition; import org.springframework.data.domain.Page; @@ -75,14 +76,24 @@ public class TicketProcessRestController extends BaseRestController queryProcessDefinition(TicketProcessRequest request) { + List definitions = processService.query(request); + + List dtos = definitions.stream() + .map(def -> ProcessDefinitionResponse.builder() + .id(def.getId()) + .key(def.getKey()) + .name(def.getName()) + .description(def.getDescription()) + .version(def.getVersion()) + .deploymentId(def.getDeploymentId()) + .tenantId(def.getTenantId()) + .build()) + .collect(Collectors.toList()); - List processDefinition = processService.query(request); - - return ResponseEntity.ok(JsonResult.success(processDefinition)); + return ResponseEntity.ok(JsonResult.success(dtos)); } // 部署流程 @@ -94,11 +105,11 @@ public class TicketProcessRestController extends BaseRestController deleteDeployment(TicketProcessRequest request) { - - List processDefinition = processService.delete(request); + // 取消部署流程 + @RequestMapping("/undeploy") + public ResponseEntity undeployProcess(TicketProcessRequest request) { + + List processDefinition = processService.undeploy(request); return ResponseEntity.ok(JsonResult.success(processDefinition)); } diff --git a/modules/ticket/src/main/java/com/bytedesk/ticket/process/TicketProcessService.java b/modules/ticket/src/main/java/com/bytedesk/ticket/process/TicketProcessService.java index e635110a2e..504f01e114 100644 --- a/modules/ticket/src/main/java/com/bytedesk/ticket/process/TicketProcessService.java +++ b/modules/ticket/src/main/java/com/bytedesk/ticket/process/TicketProcessService.java @@ -2,7 +2,7 @@ * @Author: jackning 270580156@qq.com * @Date: 2025-02-15 15:10:47 * @LastEditors: jackning 270580156@qq.com - * @LastEditTime: 2025-02-15 15:17:26 + * @LastEditTime: 2025-02-15 16:01:21 * @Description: bytedesk.com https://github.com/Bytedesk/bytedesk * Please be aware of the BSL license restrictions before installing Bytedesk IM – * selling, reselling, or hosting Bytedesk IM as a service is a breach of the terms and automatically terminates your rights under the license. @@ -14,6 +14,7 @@ package com.bytedesk.ticket.process; import java.util.List; +import java.util.Optional; import org.flowable.engine.RepositoryService; import org.flowable.engine.repository.Deployment; @@ -30,6 +31,8 @@ public class TicketProcessService { private final RepositoryService repositoryService; + private final TicketProcessRepository ticketProcessRepository; + // 查询流程 public List query(TicketProcessRequest request) { String orgUid = request.getOrgUid(); @@ -54,10 +57,12 @@ public class TicketProcessService { // 部署流程 public ProcessDefinition deploy(TicketProcessRequest request) { - // 部署流程 - String orgUid = request.getOrgUid(); - // BPMN流程定义XML字符串 - String bpmnXml = request.getContent(); + Optional ticketProcess = ticketProcessRepository.findByUid(request.getUid()); + if (!ticketProcess.isPresent()) { + throw new RuntimeException("流程定义不存在" + request.getUid()); + } + String orgUid = ticketProcess.get().getOrgUid(); + String bpmnXml = ticketProcess.get().getContent(); // 部署流程 Deployment deployment = repositoryService.createDeployment() @@ -65,6 +70,11 @@ public class TicketProcessService { .addString(request.getKey() + ".bpmn20.xml", bpmnXml) .tenantId(orgUid) .deploy(); + + // 更新流程定义 + ticketProcess.get().setDeployed(true); + ticketProcess.get().setDeploymentId(deployment.getId()); + ticketProcessRepository.save(ticketProcess.get()); // 验证部署结果 ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery() @@ -81,10 +91,13 @@ public class TicketProcessService { } // 删除流程 - public List delete(TicketProcessRequest request) { - // 删除流程 - String orgUid = request.getOrgUid(); - String processKey = request.getKey(); + public List undeploy(TicketProcessRequest request) { + Optional ticketProcess = ticketProcessRepository.findByUid(request.getUid()); + if (!ticketProcess.isPresent()) { + throw new RuntimeException("流程定义不存在" + request.getUid()); + } + String orgUid = ticketProcess.get().getOrgUid(); + String processKey = ticketProcess.get().getKey(); // 查询指定租户的所有版本流程定义 List processes = repositoryService.createProcessDefinitionQuery() @@ -111,6 +124,12 @@ public class TicketProcessService { pd.getDeploymentId(), e.getMessage()); } } + + // 取消流程部署 + ticketProcess.get().setDeployed(false); + ticketProcess.get().setDeploymentId(null); + ticketProcessRepository.save(ticketProcess.get()); + // 验证删除结果 List remainingProcesses = repositoryService.createProcessDefinitionQuery()