From 3b70ad41acbeaf9d16cb3810f65ea302cbec08a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Wed, 2 Apr 2025 11:54:02 +0800 Subject: [PATCH] =?UTF-8?q?feat(ticket):=20=E4=BC=98=E5=8C=96=E5=B7=A5?= =?UTF-8?q?=E5=8D=95=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91=E5=92=8C=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E6=8F=90=E9=86=92=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加工单处理人获取接口 - 优化工单查询和处理逻辑 - 增加工单解决方案措施获取接口 - 修复工单状态和权限相关问题 - 优化消息提醒功能,支持艾特提醒 --- .../admin/controller/TicketController.java | 18 +++++++++++++---- .../admin/event/TicketCloseEvent.java | 3 +-- .../admin/event/TicketCompleteEvent.java | 3 +-- .../admin/event/TicketReplyEvent.java | 3 +-- .../admin/task/TicketScheduledTasks.java | 17 +++++++--------- .../cfs/controller/TiketController.java | 15 ++++++++++++-- .../cfs/event/TicketCloseEvent.java | 3 +-- .../cfs/event/TicketReplyEvent.java | 5 ++--- .../cfs/event/TicketRevokeEvent.java | 3 +-- .../common/pojo/dto/ChatMessageDTO.java | 3 +++ .../pojo/request/AddChatMessageRequest.java | 3 +++ .../common/pojo/vo/AdminTicketVO.java | 6 +++--- .../common/pojo/vo/AdminUserSimpleVO.java | 3 +++ .../repository/entity/TicketSolution.java | 5 +++-- .../service/impl/TicketServiceImpl.java | 17 +++++++++------- .../impl/TicketSolutionAuditServiceImpl.java | 20 +++++++++++++++---- .../impl/TicketSolutionServiceImpl.java | 3 ++- .../main/resources/mapper/AdminUserMapper.xml | 2 +- .../main/resources/mapper/TicketMapper.xml | 2 +- 19 files changed, 86 insertions(+), 48 deletions(-) diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TicketController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TicketController.java index 5c7c3191..8af8c3ba 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TicketController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TicketController.java @@ -370,7 +370,7 @@ public class TicketController extends ControllerBase { @ApiMark(moduleName = "工单管理", apiName = "添加工单处理人") public ApiResult addTicketHandle(@Valid @RequestBody TicketHandleAddRequest request){ Ticket ticket=ticketService.getById(request.getTicketId()); - List handleIds= Arrays.stream(ticket.getHandle().split(",")).map(Integer::parseInt).collect(Collectors.toList()); + List handleIds= StrUtil.split(ticket.getHandle(),",").stream().map(Integer::parseInt).collect(Collectors.toList()); VUtils.trueThrowBusinessError(handleIds.stream().anyMatch(uid -> Objects.equals(uid, AdminUserUtil.getUserId())) && request.getUserIds().stream().noneMatch(uid -> Objects.equals(uid, AdminUserUtil.getUserId()))) .throwMessage("不可以移除自己"); @@ -708,8 +708,7 @@ public class TicketController extends ControllerBase { VUtils.trueThrowBusinessError(!Objects.equals(ticket.getState(), TicketState.Processing.getState())) .throwMessage("当前工单状态不允许发送消息"); List adminUsers=adminUserService.getTickerMangagers(); - adminUsers.addAll(Arrays.stream(ticket.getHandle().split(",")) - .map(Integer::parseInt).collect(Collectors.toList())); + adminUsers.addAll(StrUtil.split(ticket.getHandle(),",").stream().map(Integer::parseInt).collect(Collectors.toList())); VUtils.trueThrowBusinessError(adminUsers.stream() .noneMatch(uid -> Objects.equals(uid, AdminUserUtil.getUserId()))) .throwMessage("你无权发送消息"); @@ -726,7 +725,8 @@ public class TicketController extends ControllerBase { .setContent(request.getContent()) .setCreateTime(Instant.now()) .setAttachments(request.getAttachments()) - .setImages(request.getImages()); + .setImages(request.getImages()) + .setRemindUserIds(request.getRemindUserIds()); if(Objects.nonNull(request.getQuoteId())){ ChatMessageDTO quoteMessage = ticketChatService.getMessage(request.getTicketId(), request.getQuoteId()); message.setQuote(quoteMessage); @@ -1156,4 +1156,14 @@ public class TicketController extends ControllerBase { titleStyle.setRightBorderColor(IndexedColors.BLACK.getIndex()); // 右边框颜色 return titleStyle; } + + /** + * 获取工单处理人 + * @param ticketId 工单编号 + */ + @GetMapping("/getHandlers") + @ApiMark(moduleName = "工单管理", apiName = "获取工单处理人") + public ApiResult> getHandlers(@Valid @RequestParam @NotNull Integer ticketId) { + return ApiResult.success(ticketService.getTicketHandle(ticketId)); + } } \ No newline at end of file diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCloseEvent.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCloseEvent.java index dcc3cb12..ec892714 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCloseEvent.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCloseEvent.java @@ -17,7 +17,6 @@ import org.springframework.context.ApplicationEvent; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -54,7 +53,7 @@ public class TicketCloseEvent extends ApplicationEvent implements ApplicationCon private void sendUserMessage(){ //我的待办 - List userIds= Arrays.stream(ticket.getHandle().split(",")).filter(StrUtil::isNotBlank).map(Integer::parseInt).collect(Collectors.toList()); + List userIds= StrUtil.split(ticket.getHandle(),",").stream().map(Integer::parseInt).collect(Collectors.toList()); List adminUsers=adminUserService.listByIds(userIds); if (CollectionUtil.isNotEmpty(adminUsers)){ adminUsers.forEach(c -> adminMessageService.add( diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCompleteEvent.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCompleteEvent.java index ea7e1e54..e3cf849c 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCompleteEvent.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCompleteEvent.java @@ -17,7 +17,6 @@ import org.springframework.context.ApplicationEvent; import javax.mail.MessagingException; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -85,7 +84,7 @@ public class TicketCompleteEvent extends ApplicationEvent implements Application if (CollectionUtil.isNotEmpty(cqmUserIds)) { List cqmUsers = adminUserService.listByIds(cqmUserIds); if (CollectionUtil.isNotEmpty(cqmUsers)) { - List handleUserIds = Arrays.stream(ticket.getHandle().split(",")).filter(StrUtil::isNotBlank).map(Integer::parseInt).collect(Collectors.toList()); + List handleUserIds = StrUtil.split(ticket.getHandle(),",").stream().map(Integer::parseInt).collect(Collectors.toList()); List handleUsers = adminUserService.listByIds(handleUserIds); AppUser appUser = appUserService.getById(ticket.getUserId()); String subject = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_TITLE_TICKET_ASSIGNED, Constant.DEFAULT_LANGUAGE_CODE); diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketReplyEvent.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketReplyEvent.java index 0a885e21..6845ba59 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketReplyEvent.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketReplyEvent.java @@ -19,7 +19,6 @@ import org.springframework.context.ApplicationEvent; import javax.mail.MessagingException; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -69,7 +68,7 @@ public class TicketReplyEvent extends ApplicationEvent implements ApplicationCon private void sendEmail(){ try { - List userIds = Arrays.stream(ticket.getHandle().split(",")).filter(StrUtil::isNotBlank).map(Integer::parseInt).collect(Collectors.toList()); + List userIds = StrUtil.split(ticket.getHandle(),",").stream().map(Integer::parseInt).collect(Collectors.toList()); List adminUsers = adminUserService.listByIds(userIds); if (CollectionUtil.isNotEmpty(adminUsers)) { AppUser appUser=appUserService.getById(ticket.getUserId()); diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/task/TicketScheduledTasks.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/task/TicketScheduledTasks.java index 33f1d78f..326e805b 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/task/TicketScheduledTasks.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/task/TicketScheduledTasks.java @@ -7,9 +7,9 @@ import cn.hutool.json.JSONUtil; import com.nflg.mobilebroken.admin.pojo.dto.SyncFromCrmDTO; import com.nflg.mobilebroken.admin.pojo.dto.TiketTimeoutDTO; import com.nflg.mobilebroken.admin.publisher.TicketEventPublisher; -import com.nflg.mobilebroken.admin.service.SsePushService; import com.nflg.mobilebroken.admin.service.AdminCustomerService; import com.nflg.mobilebroken.admin.service.AdminDeviceService; +import com.nflg.mobilebroken.admin.service.SsePushService; import com.nflg.mobilebroken.common.constant.Constant; import com.nflg.mobilebroken.common.constant.MessageSubType; import com.nflg.mobilebroken.common.constant.UserState; @@ -28,13 +28,12 @@ import org.springframework.stereotype.Component; import javax.annotation.Resource; import javax.mail.MessagingException; import java.math.BigDecimal; -import java.time.Instant; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.ZoneOffset; +import java.time.*; import java.time.format.DateTimeFormatter; -import java.util.*; +import java.util.Collections; +import java.util.List; +import java.util.Objects; +import java.util.Set; import java.util.stream.Collectors; @Component @@ -251,9 +250,7 @@ public class TicketScheduledTasks { private void ticketHande(Ticket ticket) { AppUser createUser=appUserService.getById(ticket.getUserId()); //处理人 - Set adminUserIds = Arrays.stream(ticket.getHandle().split(",")) - .map(Integer::parseInt) - .collect(Collectors.toSet()); + Set adminUserIds = StrUtil.split(ticket.getHandle(),",").stream().map(Integer::parseInt).collect(Collectors.toSet()); //CQM adminUserIds.add(ticket.getCqm()); //管理端关注人 diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TiketController.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TiketController.java index 80b594bd..0e24910b 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TiketController.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TiketController.java @@ -70,7 +70,7 @@ public class TiketController extends ControllerBase { private IAppAreaService appAreaService; @Resource - private ITBaseAreaService adminAreaService; + private ITicketSolutionService ticketSolutionService; @Resource private ITBaseCustomerService customerService; @@ -325,7 +325,8 @@ public class TiketController extends ControllerBase { .setContent(request.getContent()) .setCreateTime(Instant.now()) .setAttachments(request.getAttachments()) - .setImages(request.getImages()); + .setImages(request.getImages()) + .setRemindUserIds(request.getRemindUserIds()); if(Objects.nonNull(request.getQuoteId())){ ChatMessageDTO quoteMessage = ticketChatService.getMessage(request.getTicketId(), request.getQuoteId()); message.setQuote(quoteMessage); @@ -417,4 +418,14 @@ public class TiketController extends ControllerBase { } return ApiResult.success(); } + + /** + * 获取工单解决方案措施 + * @param ticketId 工单编号 + * @return 解决方案措施 + **/ + @GetMapping("getSolutionMeasures") + public ApiResult getSolutionMeasures(@Valid @RequestParam @NotNull Integer ticketId){ + return ApiResult.success(ticketSolutionService.getSolutionMeasures(ticketId)); + } } diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCloseEvent.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCloseEvent.java index 1fb02377..0447e349 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCloseEvent.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCloseEvent.java @@ -16,7 +16,6 @@ import org.springframework.context.ApplicationEvent; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -52,7 +51,7 @@ public class TicketCloseEvent extends ApplicationEvent implements ApplicationCon private void sendUserMessage(){ //我的待办 - List userIds= Arrays.stream(ticket.getHandle().split(",")).filter(StrUtil::isNotBlank).map(Integer::parseInt).collect(Collectors.toList()); + List userIds= StrUtil.split(ticket.getHandle(),",").stream().map(Integer::parseInt).collect(Collectors.toList()); List adminUsers=adminUserService.listByIds(userIds); if (CollectionUtil.isNotEmpty(adminUsers)){ adminUsers.forEach(c -> adminMessageService.add( diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketReplyEvent.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketReplyEvent.java index 57968cbf..5a84859c 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketReplyEvent.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketReplyEvent.java @@ -25,7 +25,6 @@ import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZoneOffset; import java.time.format.DateTimeFormatter; -import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -66,7 +65,7 @@ public class TicketReplyEvent extends ApplicationEvent implements ApplicationCon private void sendUserMessage(){ //我的待办 if(StrUtil.isNotBlank(ticket.getHandle())) { - List userIds = Arrays.stream(ticket.getHandle().split(",")).filter(StrUtil::isNotBlank).map(Integer::parseInt).collect(Collectors.toList()); + List userIds = StrUtil.split(ticket.getHandle(),",").stream().map(Integer::parseInt).collect(Collectors.toList()); List adminUsers = adminUserService.listByIds(userIds); if (CollectionUtil.isNotEmpty(adminUsers)) { adminUsers.forEach(c -> adminMessageService.add( @@ -87,7 +86,7 @@ public class TicketReplyEvent extends ApplicationEvent implements ApplicationCon private void sendEmail() { try { - List userIds = Arrays.stream(ticket.getHandle().split(",")).filter(StrUtil::isNotBlank).map(Integer::parseInt).collect(Collectors.toList()); + List userIds = StrUtil.split(ticket.getHandle(),",").stream().map(Integer::parseInt).collect(Collectors.toList()); List adminUsers = adminUserService.listByIds(userIds); if (CollectionUtil.isNotEmpty(adminUsers)) { AppUser appUser = appUserService.getById(ticket.getUserId()); diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketRevokeEvent.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketRevokeEvent.java index fd030f75..fcb86b22 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketRevokeEvent.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketRevokeEvent.java @@ -20,7 +20,6 @@ import org.springframework.context.ApplicationEvent; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -73,7 +72,7 @@ public class TicketRevokeEvent extends ApplicationEvent implements ApplicationCo .setIsRead(false) .setCreateTime(LocalDateTime.now())); //处理人 - List userIds= Arrays.stream(ticket.getHandle().split(",")).filter(StrUtil::isNotBlank).map(Integer::parseInt).collect(Collectors.toList()); + List userIds= StrUtil.split(ticket.getHandle(),",").stream().map(Integer::parseInt).collect(Collectors.toList()); List adminUsers=adminUserService.listByIds(userIds); if (CollectionUtil.isNotEmpty(adminUsers)){ adminUsers.forEach(c -> adminMessageService.add( diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/ChatMessageDTO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/ChatMessageDTO.java index f807f038..3715546a 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/ChatMessageDTO.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/ChatMessageDTO.java @@ -43,4 +43,7 @@ public class ChatMessageDTO { // 引用的消息 private ChatMessageDTO quote; + + //被艾特的用户id列表 + private List remindUserIds; } diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/AddChatMessageRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/AddChatMessageRequest.java index 7995261a..caa8ef6b 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/AddChatMessageRequest.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/AddChatMessageRequest.java @@ -23,4 +23,7 @@ public class AddChatMessageRequest { // 引用的消息 private String quoteId; + + //被艾特的用户id列表 + private List remindUserIds; } diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminTicketVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminTicketVO.java index 8da9e2b6..5b4b0106 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminTicketVO.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminTicketVO.java @@ -167,7 +167,7 @@ public class AdminTicketVO { if (Objects.isNull(accidentLevel)) { return ""; } - return TicketAccidentLevel.findByValue(accidentLevel).getDescription(); + return Objects.requireNonNull(TicketAccidentLevel.findByValue(accidentLevel), "无效的事故等级:" + accidentLevel).getDescription(); } //是否已关注 @@ -178,14 +178,14 @@ public class AdminTicketVO { private String followedDesc; public String getStateDesc() { - return TicketState.findByValue(state).getDescription(); + return Objects.requireNonNull(TicketState.findByValue(state), "无效的状态:" + state).getDescription(); } public String getUrgencyDesc() { if (Objects.isNull(urgency)) { return ""; } - return TicketUrgency.findByValue(urgency).getDescription(); + return Objects.requireNonNull(TicketUrgency.findByValue(urgency), "无效的紧急程度:" + urgency).getDescription(); } public String getFollowedDesc() { diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminUserSimpleVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminUserSimpleVO.java index 6f19435f..fec64f32 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminUserSimpleVO.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminUserSimpleVO.java @@ -8,6 +8,9 @@ public class AdminUserSimpleVO { // 用户ID private Integer userId; + // 头像 + private String avatar; + // 用户名 private String userName; diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/TicketSolution.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/TicketSolution.java index cd07cd16..06a52dd0 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/TicketSolution.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/TicketSolution.java @@ -91,11 +91,12 @@ public class TicketSolution implements Serializable { Objects.equals(description, that.description) && Objects.equals(superintendent, that.superintendent) && Objects.equals(scheduleDate, that.scheduleDate) && - Objects.equals(confirmedDate, that.confirmedDate); + Objects.equals(confirmedDate, that.confirmedDate) && + Objects.equals(remark, that.remark); } @Override public int hashCode() { - return Objects.hash(id, ticketId, dictionaryItemId, description, superintendent, scheduleDate, confirmedDate); + return Objects.hash(id, ticketId, dictionaryItemId, description, superintendent, scheduleDate, confirmedDate,remark); } } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketServiceImpl.java index 8af48dbd..36251108 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketServiceImpl.java @@ -120,17 +120,17 @@ public class TicketServiceImpl extends ServiceImpl impleme @Override public IPage searchPage(AdminTicketSearchRequest request) { + Integer userId = AdminUserUtil.getUserId(); if (Objects.nonNull(request.getFavouritesId())){ - return baseMapper.searchByFavouritesId(AdminUserUtil.getUserId(),request.getFavouritesId(), new Page<>(request.getPage(), request.getPageSize())); + return baseMapper.searchByFavouritesId(userId,request.getFavouritesId(), new Page<>(request.getPage(), request.getPageSize())); }else { if (Objects.nonNull(request.getEndTime())) { request.setEndTime(request.getEndTime().plusDays(1)); } - Integer userId = AdminUserUtil.getUserId(); List tickerMangagers = adminUserService.getTickerMangagers(); request.setTicketManager(tickerMangagers.stream().anyMatch(uid -> Objects.equals(uid, userId))); if (request.getType() == 2) { - return baseMapper.searchFromAdminAndFollow(request, AdminUserUtil.getUserId(), new Page<>(request.getPage(), request.getPageSize())); + return baseMapper.searchFromAdminAndFollow(request, userId, new Page<>(request.getPage(), request.getPageSize())); } else if (request.getType() == 4) { return baseMapper.searchFromAdmin(request, userId, new Page<>(request.getPage(), request.getPageSize())); } @@ -198,7 +198,7 @@ public class TicketServiceImpl extends ServiceImpl impleme VUtils.trueThrowBusinessError(!Objects.equals(ticket.getState(), TicketState.Processing.getState())) .throwMessage("非处理中状态不允许完成"); List tickerMangagers = adminUserService.getTickerMangagers(); - tickerMangagers.addAll(Arrays.stream(ticket.getHandle().split(",")).map(Integer::parseInt).collect(Collectors.toList())); + tickerMangagers.addAll(StrUtil.split(ticket.getHandle(),",").stream().map(Integer::parseInt).collect(Collectors.toList())); VUtils.trueThrowBusinessError(tickerMangagers.stream().noneMatch(uid -> Objects.equals(uid, AdminUserUtil.getUserId()))) .throwMessage("你无权完成工单"); VUtils.trueThrowBusinessError(!ticketSolutionService.lambdaQuery().eq(TicketSolution::getTicketId, id).exists()) @@ -306,7 +306,7 @@ public class TicketServiceImpl extends ServiceImpl impleme VUtils.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("未找到工单"); VUtils.trueThrowBusinessError(!Objects.equals(ticket.getState(), TicketState.Processing.getState())).throwMessage("工单状态异常"); List tickerMangagers = adminUserService.getTickerMangagers(); - tickerMangagers.addAll(Arrays.stream(ticket.getHandle().split(",")).map(Integer::parseInt).collect(Collectors.toList())); + tickerMangagers.addAll(StrUtil.split(ticket.getHandle(),",").stream().map(Integer::parseInt).collect(Collectors.toList())); VUtils.trueThrowBusinessError(tickerMangagers.stream().noneMatch(uid -> Objects.equals(uid, AdminUserUtil.getUserId()))) .throwMessage("你无权添加处理人"); ticket.setHandle(StrUtil.join(",", request.getUserIds())); @@ -327,8 +327,11 @@ public class TicketServiceImpl extends ServiceImpl impleme @Override public List getTicketHandle(Integer id) { - Ticket ticket=getById(id); - List handles=Arrays.stream(ticket.getHandle().split(",")).map(Integer::parseInt).collect(Collectors.toList()); + Ticket ticket=lambdaQuery().select(Ticket::getHandle).eq(Ticket::getId,id).one(); + List handles=StrUtil.split(ticket.getHandle(),",").stream().map(Integer::parseInt).collect(Collectors.toList()); + if (CollectionUtil.isEmpty(handles)){ + return Collections.emptyList(); + } return adminUserService.getSimples(handles); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketSolutionAuditServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketSolutionAuditServiceImpl.java index 78fc3478..76a7db3a 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketSolutionAuditServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketSolutionAuditServiceImpl.java @@ -85,10 +85,22 @@ public class TicketSolutionAuditServiceImpl extends ServiceImpl cqmIds=adminUserService.getCQMIds(); - List handleIds=Arrays.stream(ticket.getHandle().split(",")).map(Integer::parseInt).collect(Collectors.toList()); + List handleIds= StrUtil.split(ticket.getHandle(),",").stream().map(Integer::parseInt).collect(Collectors.toList()); VUtils.trueThrowBusinessError(cqmIds.stream().noneMatch(uid -> Objects.equals(uid, userId)) && handleIds.stream().noneMatch(uid -> Objects.equals(uid, userId))) .throwMessage("无权修改解决方案"); diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/AdminUserMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/AdminUserMapper.xml index 7188f084..52094652 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/AdminUserMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/AdminUserMapper.xml @@ -11,7 +11,7 @@