update modules/ticket: mod 4 files

This commit is contained in:
jack ning
2025-02-18 11:31:44 +08:00
parent 63567a38a5
commit 1f55ec0b37
4 changed files with 51 additions and 36 deletions

View File

@@ -2,7 +2,7 @@
* @Author: jackning 270580156@qq.com
* @Date: 2025-01-23 15:00:11
* @LastEditors: jackning 270580156@qq.com
* @LastEditTime: 2025-02-17 15:25:08
* @LastEditTime: 2025-02-18 11:28:12
* @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.
@@ -40,6 +40,18 @@ public class TicketConsts {
// 未分配
public static final String TICKET_FILTER_UNASSIGNED = "UNASSIGNED";
// task definition key
public static final String TICKET_TASK_DEFINITION_ASSIGN_TO_GROUP = "assignToGroup";
// variables
public static final String TICKET_VARIABLE_TICKET_UID = "ticketUid";
public static final String TICKET_VARIABLE_WORKGROUP_UID = "workgroupUid";
public static final String TICKET_VARIABLE_REPORTER_UID = "reporterUid";
public static final String TICKET_VARIABLE_ORGUID = "orgUid";
}

View File

@@ -2,7 +2,7 @@
* @Author: jackning 270580156@qq.com
* @Date: 2025-01-23 14:52:45
* @LastEditors: jackning 270580156@qq.com
* @LastEditTime: 2025-02-18 10:59:56
* @LastEditTime: 2025-02-18 11:25:35
* @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.
@@ -57,10 +57,10 @@ public class TicketEventListener {
// 启动工单流程
Map<String, Object> variables = new HashMap<>();
variables.put("ticketUid", ticket.getUid());
variables.put("workgroupUid", JSON.parseObject(ticket.getWorkgroup(), UserProtobuf.class).getUid());
variables.put("reporterUid", JSON.parseObject(ticket.getReporter(), UserProtobuf.class).getUid());
variables.put("orgUid", ticket.getOrgUid());
variables.put(TicketConsts.TICKET_VARIABLE_TICKET_UID, ticket.getUid());
variables.put(TicketConsts.TICKET_VARIABLE_WORKGROUP_UID, JSON.parseObject(ticket.getWorkgroup(), UserProtobuf.class).getUid());
variables.put(TicketConsts.TICKET_VARIABLE_REPORTER_UID, JSON.parseObject(ticket.getReporter(), UserProtobuf.class).getUid());
variables.put(TicketConsts.TICKET_VARIABLE_ORGUID, ticket.getOrgUid());
// 根据不同优先级设置不同的SLA时间
switch (ticket.getPriority()) {
@@ -104,9 +104,9 @@ public class TicketEventListener {
if (StringUtils.hasText(ticketEntity.getAssignee())) {
Task task = taskService.createTaskQuery()
.processDefinitionKey(TicketConsts.TICKET_PROCESS_KEY_GROUP_SIMPLE)
.taskDefinitionKey("assignToGroup")
.processVariableValueEquals("ticketUid", ticketEntity.getUid())
.processVariableValueEquals("orgUid", ticketEntity.getOrgUid())
.taskDefinitionKey(TicketConsts.TICKET_TASK_DEFINITION_ASSIGN_TO_GROUP)
.processVariableValueEquals(TicketConsts.TICKET_VARIABLE_TICKET_UID, ticketEntity.getUid())
.processVariableValueEquals(TicketConsts.TICKET_VARIABLE_ORGUID, ticketEntity.getOrgUid())
.singleResult();
if (task != null) {
taskService.claim(task.getId(), JSON.parseObject(ticketEntity.getAssignee(), UserProtobuf.class).getUid());
@@ -135,6 +135,9 @@ public class TicketEventListener {
@EventListener
public void handleTicketUpdateWorkgroupEvent(TicketUpdateWorkgroupEvent event) {
log.info("TicketEventListener handleTicketUpdateWorkgroupEvent: {}", event);
TicketEntity ticket = event.getTicket();
// 更新当前技能组workgroupUid
runtimeService.setVariable(ticket.getProcessInstanceId(), TicketConsts.TICKET_VARIABLE_WORKGROUP_UID, event.getNewWorkgroupUid());
}
// 监听上传BPMN流程图

View File

@@ -270,8 +270,8 @@ public class TicketRestService extends BaseRestService<TicketEntity, TicketReque
}
// 发布事件判断assignee是否被修改
if (StringUtils.hasText(request.getAssigneeUid())) {
String oldAssigneeUid = JSON.parse()ticket.getAssignee();
if (StringUtils.hasText(request.getAssigneeUid()) && StringUtils.hasText(ticket.getAssignee())) {
String oldAssigneeUid = JSON.parseObject(ticket.getAssignee(), UserProtobuf.class).getUid();
if (oldAssigneeUid != null && !oldAssigneeUid.equals(request.getAssigneeUid())) {
TicketUpdateAssigneeEvent ticketUpdateAssigneeEvent = new TicketUpdateAssigneeEvent(ticket, oldAssigneeUid, request.getAssigneeUid());
applicationEventPublisher.publishEvent(ticketUpdateAssigneeEvent);
@@ -279,8 +279,8 @@ public class TicketRestService extends BaseRestService<TicketEntity, TicketReque
}
// 发布事件判断workgroupUid是否被修改
if (StringUtils.hasText(request.getWorkgroupUid())) {
String oldWorkgroupUid = ticket.getWorkgroup();
if (StringUtils.hasText(request.getWorkgroupUid()) && StringUtils.hasText(ticket.getWorkgroup())) {
String oldWorkgroupUid = JSON.parseObject(ticket.getWorkgroup(), UserProtobuf.class).getUid();
if (oldWorkgroupUid != null && !oldWorkgroupUid.equals(request.getWorkgroupUid())) {
TicketUpdateWorkgroupEvent ticketUpdateWorkgroupEvent = new TicketUpdateWorkgroupEvent(ticket, oldWorkgroupUid, request.getWorkgroupUid());
applicationEventPublisher.publishEvent(ticketUpdateWorkgroupEvent);

View File

@@ -2,7 +2,7 @@
* @Author: jackning 270580156@qq.com
* @Date: 2025-01-29 12:24:32
* @LastEditors: jackning 270580156@qq.com
* @LastEditTime: 2025-02-18 11:08:33
* @LastEditTime: 2025-02-18 11:27:32
* @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.
@@ -59,19 +59,19 @@ public class TicketService {
//
List<Task> tasks = taskService.createTaskQuery()
.processDefinitionKey(TicketConsts.TICKET_PROCESS_KEY_GROUP_SIMPLE)
.processVariableValueEquals("orgUid", request.getOrgUid())
.processVariableValueEquals(TicketConsts.TICKET_VARIABLE_ORGUID, request.getOrgUid())
.orderByTaskCreateTime().desc()
.listPage(pageable.getPageNumber(), pageable.getPageSize());
long total = taskService.createTaskQuery()
.processDefinitionKey(TicketConsts.TICKET_PROCESS_KEY_GROUP_SIMPLE)
.processVariableValueEquals("orgUid", request.getOrgUid())
.processVariableValueEquals(TicketConsts.TICKET_VARIABLE_ORGUID, request.getOrgUid())
.orderByTaskCreateTime().desc()
.count();
List<TicketResponse> responses = tasks.stream()
.map(task -> {
String ticketUid = (String) runtimeService.getVariable(task.getExecutionId(), "ticketUid");
String ticketUid = (String) runtimeService.getVariable(task.getExecutionId(), TicketConsts.TICKET_VARIABLE_TICKET_UID);
Optional<TicketEntity> ticket = ticketRepository.findByUid(ticketUid);
if (ticket.isPresent()) {
return TicketConvertUtils.convertToResponse(ticket.get());
@@ -94,18 +94,18 @@ public class TicketService {
List<Task> tasks = taskService.createTaskQuery()
.processDefinitionKey(TicketConsts.TICKET_PROCESS_KEY_GROUP_SIMPLE)
.taskAssignee(request.getReporterUid())
.processVariableValueEquals("orgUid", request.getOrgUid())
.processVariableValueEquals(TicketConsts.TICKET_VARIABLE_ORGUID, request.getOrgUid())
.listPage(pageable.getPageNumber(), pageable.getPageSize());
long total = taskService.createTaskQuery()
.processDefinitionKey(TicketConsts.TICKET_PROCESS_KEY_GROUP_SIMPLE)
.taskAssignee(request.getReporterUid())
.processVariableValueEquals("orgUid", request.getOrgUid())
.processVariableValueEquals(TicketConsts.TICKET_VARIABLE_ORGUID, request.getOrgUid())
.count();
List<TicketResponse> responses = tasks.stream()
.map(task -> {
String ticketUid = (String) runtimeService.getVariable(task.getExecutionId(), "ticketUid");
String ticketUid = (String) runtimeService.getVariable(task.getExecutionId(), TicketConsts.TICKET_VARIABLE_TICKET_UID);
Optional<TicketEntity> ticket = ticketRepository.findByUid(ticketUid);
if (ticket.isPresent()) {
return TicketConvertUtils.convertToResponse(ticket.get());
@@ -127,22 +127,22 @@ public class TicketService {
List<Task> tasks = taskService.createTaskQuery()
.processDefinitionKey(TicketConsts.TICKET_PROCESS_KEY_GROUP_SIMPLE)
.taskAssignee(request.getAssigneeUid())
.taskDefinitionKey("assignToGroup")
.processVariableValueEquals("orgUid", request.getOrgUid())
.taskDefinitionKey(TicketConsts.TICKET_TASK_DEFINITION_ASSIGN_TO_GROUP)
.processVariableValueEquals(TicketConsts.TICKET_VARIABLE_ORGUID, request.getOrgUid())
.orderByTaskCreateTime().desc()
.listPage(pageable.getPageNumber(), pageable.getPageSize());
long total = taskService.createTaskQuery()
.processDefinitionKey(TicketConsts.TICKET_PROCESS_KEY_GROUP_SIMPLE)
.taskAssignee(request.getAssigneeUid())
.taskDefinitionKey("assignToGroup")
.processVariableValueEquals("orgUid", request.getOrgUid())
.taskDefinitionKey(TicketConsts.TICKET_TASK_DEFINITION_ASSIGN_TO_GROUP)
.processVariableValueEquals(TicketConsts.TICKET_VARIABLE_ORGUID, request.getOrgUid())
.orderByTaskCreateTime().desc()
.count();
List<TicketResponse> responses = tasks.stream()
.map(task -> {
String ticketUid = (String) runtimeService.getVariable(task.getExecutionId(), "ticketUid");
String ticketUid = (String) runtimeService.getVariable(task.getExecutionId(), TicketConsts.TICKET_VARIABLE_TICKET_UID);
Optional<TicketEntity> ticket = ticketRepository.findByUid(ticketUid);
if (ticket.isPresent()) {
return TicketConvertUtils.convertToResponse(ticket.get());
@@ -164,18 +164,18 @@ public class TicketService {
List<Task> tasks = taskService.createTaskQuery()
.processDefinitionKey(TicketConsts.TICKET_PROCESS_KEY_GROUP_SIMPLE)
.taskCandidateGroup(request.getWorkgroupUid())
.processVariableValueEquals("orgUid", request.getOrgUid())
.processVariableValueEquals(TicketConsts.TICKET_VARIABLE_ORGUID, request.getOrgUid())
.listPage(pageable.getPageNumber(), pageable.getPageSize());
long total = taskService.createTaskQuery()
.processDefinitionKey(TicketConsts.TICKET_PROCESS_KEY_GROUP_SIMPLE)
.taskCandidateGroup(request.getWorkgroupUid())
.processVariableValueEquals("orgUid", request.getOrgUid())
.processVariableValueEquals(TicketConsts.TICKET_VARIABLE_ORGUID, request.getOrgUid())
.count();
List<TicketResponse> responses = tasks.stream()
.map(task -> {
String ticketUid = (String) runtimeService.getVariable(task.getExecutionId(), "ticketUid");
String ticketUid = (String) runtimeService.getVariable(task.getExecutionId(), TicketConsts.TICKET_VARIABLE_TICKET_UID);
Optional<TicketEntity> ticket = ticketRepository.findByUid(ticketUid);
if (ticket.isPresent()) {
return TicketConvertUtils.convertToResponse(ticket.get());
@@ -196,9 +196,9 @@ public class TicketService {
public void claimTicket(TicketRequest request) {
Task task = taskService.createTaskQuery()
.processDefinitionKey(TicketConsts.TICKET_PROCESS_KEY_GROUP_SIMPLE)
.taskDefinitionKey("assignToGroup")
.processVariableValueEquals("ticketUid", request.getUid())
.processVariableValueEquals("orgUid", request.getOrgUid())
.taskDefinitionKey(TicketConsts.TICKET_TASK_DEFINITION_ASSIGN_TO_GROUP)
.processVariableValueEquals(TicketConsts.TICKET_VARIABLE_TICKET_UID, request.getUid())
.processVariableValueEquals(TicketConsts.TICKET_VARIABLE_ORGUID, request.getOrgUid())
.singleResult();
if (task != null) {
@@ -231,10 +231,10 @@ public class TicketService {
public void unclaimTicket(TicketRequest request) {
Task task = taskService.createTaskQuery()
.processDefinitionKey(TicketConsts.TICKET_PROCESS_KEY_GROUP_SIMPLE)
.taskDefinitionKey("assignToGroup")
.taskDefinitionKey(TicketConsts.TICKET_TASK_DEFINITION_ASSIGN_TO_GROUP)
.taskAssignee(request.getAssigneeUid())
.processVariableValueEquals("ticketUid", request.getUid())
.processVariableValueEquals("orgUid", request.getOrgUid())
.processVariableValueEquals(TicketConsts.TICKET_VARIABLE_TICKET_UID, request.getUid())
.processVariableValueEquals(TicketConsts.TICKET_VARIABLE_ORGUID, request.getOrgUid())
.singleResult();
if (task != null) {
@@ -258,8 +258,8 @@ public class TicketService {
public void completeTicket(TicketRequest request) {
Task task = taskService.createTaskQuery()
.processDefinitionKey(TicketConsts.TICKET_PROCESS_KEY_GROUP_SIMPLE)
.processVariableValueEquals("ticketUid", request.getUid())
.processVariableValueEquals("orgUid", request.getOrgUid())
.processVariableValueEquals(TicketConsts.TICKET_VARIABLE_TICKET_UID, request.getUid())
.processVariableValueEquals(TicketConsts.TICKET_VARIABLE_ORGUID, request.getOrgUid())
.singleResult();
if (task != null) {