diff --git a/nflg-mobilebroken-auth/src/main/java/com/nflg/mobilebroken/auth/controller/AppController.java b/nflg-mobilebroken-auth/src/main/java/com/nflg/mobilebroken/auth/controller/AppController.java index 18697b14..e185806b 100644 --- a/nflg-mobilebroken-auth/src/main/java/com/nflg/mobilebroken/auth/controller/AppController.java +++ b/nflg-mobilebroken-auth/src/main/java/com/nflg/mobilebroken/auth/controller/AppController.java @@ -73,10 +73,15 @@ public class AppController extends ControllerBase { .throwMessage(STATE.PassportErr, dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_SYSTEMERROR, Constant.DICTIONARY_ITEM_ACCOUNT_DISABLED, user.getLanguageCode())); VUtils.trueThrow(Objects.equals(user.getState(), UserState.ToBeActivated.getState())) .throwMessage(STATE.PassportErr, dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_SYSTEMERROR, Constant.DICTIONARY_ITEM_ACCOUNT_NOT_ACTIVATED, user.getLanguageCode())); - VUtils.trueThrow(user.getExpireTime().isBefore(ChronoLocalDate.from(LocalDateTime.now())) && user.getIsPrimary()) - .throwMessage(STATE.PassportErr, dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_SYSTEMERROR, Constant.DICTIONARY_ITEM_ACCOUNT_HAS_EXPIRED_PRIMARY, user.getLanguageCode())); - VUtils.trueThrow(user.getExpireTime().isBefore(ChronoLocalDate.from(LocalDateTime.now())) && !user.getIsPrimary()) - .throwMessage(STATE.PassportErr, dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_SYSTEMERROR, Constant.DICTIONARY_ITEM_ACCOUNT_HAS_EXPIRED, user.getLanguageCode())); + if (user.getType() == 0) { + VUtils.trueThrow(user.getExpireTime().isBefore(ChronoLocalDate.from(LocalDateTime.now())) && user.getIsPrimary()) + .throwMessage(STATE.PassportErr, dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_SYSTEMERROR, Constant.DICTIONARY_ITEM_ACCOUNT_HAS_EXPIRED_PRIMARY, user.getLanguageCode())); + VUtils.trueThrow(user.getExpireTime().isBefore(ChronoLocalDate.from(LocalDateTime.now())) && !user.getIsPrimary()) + .throwMessage(STATE.PassportErr, dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_SYSTEMERROR, Constant.DICTIONARY_ITEM_ACCOUNT_HAS_EXPIRED, user.getLanguageCode())); + } else if (user.getType() == 1) { + VUtils.trueThrow(user.getExpireTime().isBefore(ChronoLocalDate.from(LocalDateTime.now()))) + .throwMessage(STATE.PassportErr, dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_SYSTEMERROR, Constant.DICTIONARY_ITEM_ACCOUNT_HAS_EXPIRED_ENDUSER, user.getLanguageCode())); + } SaTokenAppUtil.login(user.getId(), SaLoginConfig .setExtra("from", Constant.FROM_APP) .setExtra("name", user.getName()) diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/FileController.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/FileController.java index a26b7e99..3f6a32e4 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/FileController.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/FileController.java @@ -43,59 +43,59 @@ public class FileController extends ControllerBase { @Resource private IFileUploadRecordService fileUploadRecordService; - private static final DateTimeFormatter FORMATTER= DateTimeFormatter.ofPattern("yyyyMMdd"); + private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd"); /** * 上传单个文件 - * @param file 要上传的文件 - * @param source 文件来源 0:工单,1:代理商,2:管理端账户;3:匿名工单 + * @param file 要上传的文件 + * @param source 文件来源 0:工单,1:代理商,2:管理端账户;3:匿名工单 * @param sourceId 文件来源id 对应来源的数据id,比如工单id,代理商id,管理端账户id * @return 可访问的文件url */ @PostMapping("uploadSingleFile") public ApiResult uploadSingleFile(@Valid @NotNull @RequestParam("file") MultipartFile file - ,@Valid @NotNull @RequestParam("source") Byte source - ,@Valid @NotNull @RequestParam("sourceId") Integer sourceId) { + , @Valid @NotNull @RequestParam("source") Byte source + , @Valid @NotNull @RequestParam("sourceId") Long sourceId) { try { - String fileName=file.getOriginalFilename(); - String fileType=getFileType(fileName); - String url=fileUploadService.upload(buildFilePath(fileType), file); - FileUploadRecord record=buildFileUploadRecord(source,sourceId,fileName,fileType,url); + String fileName = file.getOriginalFilename(); + String fileType = getFileType(fileName); + String url = fileUploadService.upload(buildFilePath(fileType), file); + FileUploadRecord record = buildFileUploadRecord(source, sourceId, fileName, fileType, url); fileUploadRecordService.save(record); return ApiResult.success(new FileUploadVO(record.getId(), fileName, url, file.getSize())); - }catch (Exception ex){ - throw new NflgException(STATE.BusinessError,"上传文件失败:"+ex.getMessage()); + } catch (Exception ex) { + throw new NflgException(STATE.BusinessError, "上传文件失败:" + ex.getMessage()); } } private String buildFilePath(String fileType) { - if (SaTokenAppUtil.isLogin()){ + if (SaTokenAppUtil.isLogin()) { return StrUtil.format("cfs/{}/{}/{}/{}{}", LocalDateTime.now().format(FORMATTER) - , AppUserUtil.getUserId(), RandomUtil.randomString(4), IdUtil.fastUUID(),fileType); - }else { + , AppUserUtil.getUserId(), RandomUtil.randomString(4), IdUtil.fastUUID(), fileType); + } else { return StrUtil.format("cfs/{}/temp/{}/{}{}", LocalDateTime.now().format(FORMATTER) - ,RandomUtil.randomString(4), IdUtil.fastUUID(),fileType); + , RandomUtil.randomString(4), IdUtil.fastUUID(), fileType); } } /** * 上传多个文件 - * @param files 要上传的文件列表 - * @param source 文件来源 0:工单,1:代理商,2:管理端账户;3:匿名工单 + * @param files 要上传的文件列表 + * @param source 文件来源 0:工单,1:代理商,2:管理端账户;3:匿名工单 * @param sourceId 文件来源id 对应来源的数据id,比如工单id,代理商id,管理端账户id * @return 可访问的文件url列表 */ @PostMapping("uploadMultipleFiles") public ApiResult> uploadMultipleFiles(@Valid @RequestParam("files") @NotEmpty List files - ,@Valid @NotNull @RequestParam("source") Byte source - ,@Valid @NotNull @RequestParam("sourceId") Integer sourceId) { + , @Valid @NotNull @RequestParam("source") Byte source + , @Valid @NotNull @RequestParam("sourceId") Long sourceId) { try { List list = new ArrayList<>(); for (MultipartFile file : files) { - String fileName=file.getOriginalFilename(); - String fileType=getFileType(fileName); - String url=fileUploadService.upload(buildFilePath(fileType), file); - FileUploadRecord record=buildFileUploadRecord(source,sourceId,fileName,fileType,url); + String fileName = file.getOriginalFilename(); + String fileType = getFileType(fileName); + String url = fileUploadService.upload(buildFilePath(fileType), file); + FileUploadRecord record = buildFileUploadRecord(source, sourceId, fileName, fileType, url); fileUploadRecordService.save(record); list.add(new FileUploadVO(record.getId(), fileName, url, file.getSize())); } @@ -113,28 +113,28 @@ public class FileController extends ControllerBase { @PostMapping("uploadSingleFile1") public ApiResult uploadSingleFile1(@Valid @NotNull @RequestParam("file") MultipartFile file) { try { - String fileName=file.getOriginalFilename(); - String fileType=getFileType(fileName); - String url=fileUploadService.upload(buildFilePath(fileType), file); + String fileName = file.getOriginalFilename(); + String fileType = getFileType(fileName); + String url = fileUploadService.upload(buildFilePath(fileType), file); return ApiResult.success(new FileUploadVO(0, fileName, url, file.getSize())); - }catch (Exception ex){ - throw new NflgException(STATE.BusinessError,"上传文件失败:"+ex.getMessage()); + } catch (Exception ex) { + throw new NflgException(STATE.BusinessError, "上传文件失败:" + ex.getMessage()); } } - private String getFileType(String fileName){ - return "."+FilenameUtils.getExtension(fileName); + private String getFileType(String fileName) { + return "." + FilenameUtils.getExtension(fileName); } - private FileUploadRecord buildFileUploadRecord(Byte source,Integer sourceId,String fileName,String fileType,String url){ + private FileUploadRecord buildFileUploadRecord(Byte source, Long sourceId, String fileName, String fileType, String url) { return new FileUploadRecord() .setFileName(fileName) .setFileType(fileType) .setFrom("app") .setCreateTime(LocalDateTime.now()) .setSource(source) - .setSourceId(Long.valueOf(sourceId)) + .setSourceId(sourceId) .setUrl(url) - .setCreateBy(SaTokenAppUtil.isLogin()?AppUserUtil.getUserName():""); + .setCreateBy(SaTokenAppUtil.isLogin() ? AppUserUtil.getUserName() : ""); } } diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TicketController.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TicketController.java index 6979d544..365fc47a 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TicketController.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TicketController.java @@ -8,6 +8,7 @@ import com.nflg.mobilebroken.cfs.publisher.GongFuTicketEventPublisher; import com.nflg.mobilebroken.cfs.publisher.TicketEventPublisher; import com.nflg.mobilebroken.cfs.service.ShengWangService; import com.nflg.mobilebroken.cfs.service.SsePushService; +import com.nflg.mobilebroken.cfs.service.TicketUnionService; import com.nflg.mobilebroken.common.constant.Constant; import com.nflg.mobilebroken.common.constant.TicketState; import com.nflg.mobilebroken.common.pojo.ApiResult; @@ -52,6 +53,9 @@ public class TicketController extends ControllerBase { @Resource private IGongfuTicketService ticket1Service; + @Resource + private TicketUnionService ticketUnionService; + @Resource private ITicketFollowService ticketFollowService; @@ -110,7 +114,7 @@ public class TicketController extends ControllerBase { private ITicketSolutionAuditService ticketSolutionAuditService; @Resource - private ITBaseAreaService baseAreaService; + private IGongfuTicketAreaService gongfuTicketAreaService; /** * 搜索设备 @@ -232,9 +236,9 @@ public class TicketController extends ControllerBase { public ApiResult getTicket(@Valid @RequestParam @NotNull Long id) { TicketDTO ticket = ticketService.getDto(id); VUtils.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("未找到工单"); - String areaName = ""; - List companys = new ArrayList<>(); + String areaName = "", companyName = ""; String userName, userAvatar; + DeviceInfoVO device = deviceService.getByDeviceNo(ticket.getDeviceNo()); if (StrUtil.equals(ticket.getUserPlatform(), "app")) { AppUser user = appUserService.getById(ticket.getUserId()); userName = user.getName(); @@ -248,21 +252,17 @@ public class TicketController extends ControllerBase { areaName = area.getName(); } } - companys = customerService.listByIds(Arrays.stream(user.getCompanyId().split(",")).map(Integer::parseInt).collect(Collectors.toList())); + companyName = StrUtil.join(",", customerService.listByIds(Arrays.stream(user.getCompanyId().split(",")).map(Integer::parseInt).collect(Collectors.toList())) + .stream().map(TBaseCustomer::getAgencyCompanyName).collect(Collectors.toList())); } else if (user.getType() == 1) { - if (Objects.nonNull(user.getAreaId())) { - TBaseArea area = baseAreaService.getById(user.getAreaId()); - if (Objects.nonNull(area)) { - areaName = area.getAreaName(); - } - } + areaName = gongfuTicketAreaService.getAreaName(ticket.getAreaId(), MultilingualUtil.getLanguage()); + companyName = device.getAgentName(); } } else { AdminUser adminUser = adminUserService.getById(ticket.getUserId()); userName = adminUser.getUserName(); userAvatar = adminUser.getAvatar(); } - DeviceInfoVO device = deviceService.getByDeviceNo(ticket.getDeviceNo()); String handle = ticket.getHandle(); if (StrUtil.isNotBlank(handle)) { List adminUsers = adminUserService.listByIds(Arrays.stream(handle.split(",")).map(Integer::parseInt).collect(Collectors.toList())); @@ -286,9 +286,11 @@ public class TicketController extends ControllerBase { .setCreateTime(ticket.getCreateTime()) .setAreaName(areaName) .setSolveTime(ticket.getSolveTime()) - .setCompanyName(StrUtil.join(",", companys.stream().map(TBaseCustomer::getAgencyCompanyName).collect(Collectors.toList()))) + .setCompanyName(companyName) .setHandle(handle) .setSolution(ticket.getReason()) + .setCustomerName(ticket.getCustomerName()) + .setType(ticket.getType()) .setEvaluate(getTicketEvaluate(ticket.getId())); if (Objects.equals(ticket.getType(), 0)) { @@ -400,7 +402,7 @@ public class TicketController extends ControllerBase { **/ @PostMapping("addChatMessage") public ApiResult addChatMessage(@Valid @RequestBody AddChatMessageRequest request) { - TicketVO ticket = ticketService.getFromView(request.getTicketId()); + TicketDTO ticket = ticketService.getDto(request.getTicketId()); VUtils.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("工单不存在"); VUtils.trueThrowBusinessError(Byte.compare(ticket.getState(), TicketState.Processing.getState()) > 1) .throwMessage("当前工单状态不允许发送消息"); @@ -452,8 +454,8 @@ public class TicketController extends ControllerBase { * @param id 工单编号 **/ @GetMapping("revokedTicket") - public ApiResult revokedTicket(@Valid @RequestParam @NotNull Integer id) { - Ticket ticket = ticketService.revoked(id); + public ApiResult revokedTicket(@Valid @RequestParam @NotNull Long id) { + TicketDTO ticket = ticketUnionService.revoked(id); ticketEventPublisher.publishTicketRevokeEvent(ticket, MultilingualUtil.getLanguage(), MultilingualUtil.getZone()); return ApiResult.success(); } @@ -463,8 +465,8 @@ public class TicketController extends ControllerBase { * @param id 工单编号 **/ @GetMapping - public ApiResult reopenTicket(@Valid @RequestParam @NotNull Integer id) { - Ticket ticket = ticketService.reopen(id); + public ApiResult reopenTicket(@Valid @RequestParam @NotNull Long id) { + TicketDTO ticket = ticketUnionService.reopen(id); ticketEventPublisher.publishTicketReopenEvent(ticket, MultilingualUtil.getLanguage(), MultilingualUtil.getZone()); ChatMessageDTO message = new ChatMessageDTO() .setId(IdUtil.getSnowflakeNextIdStr()) @@ -474,10 +476,10 @@ public class TicketController extends ControllerBase { .setSenderName("服务助手") .setContent("重启议题
用户重启议题,请继续关注此工单信息。") .setCreateTime(Instant.now()); - ticketChatService.addMessage(Long.valueOf(id), message); + ticketChatService.addMessage(id, message); //推送消息 - ssePushService.sendTicketMessageToAdmin(Long.valueOf(id), message); - ssePushService.sendTicketMessageToApp(Long.valueOf(id), message); + ssePushService.sendTicketMessageToAdmin(id, message); + ssePushService.sendTicketMessageToApp(id, message); return ApiResult.success(); } @@ -496,7 +498,7 @@ public class TicketController extends ControllerBase { **/ @PostMapping("addTicketEvaluate") public ApiResult addTicketEvaluate(@Valid @RequestBody TicketEvaluateAddRequest request) { - Ticket ticket = ticketEvaluateService.add(request); + TicketDTO ticket = ticketEvaluateService.add(request); // ticketEventPublisher.publishTicketEvaluateEvent(ticket, MultilingualUtil.getLanguage(), MultilingualUtil.getZone()); ChatMessageDTO message = new ChatMessageDTO() .setId(IdUtil.getSnowflakeNextIdStr()) @@ -508,9 +510,9 @@ public class TicketController extends ControllerBase { .setCreateTime(Instant.now()); ticketChatService.addMessage(request.getTicketId(), message); //推送消息 - ssePushService.sendTicketMessageToAdmin(Long.valueOf(ticket.getId()), message); - ssePushService.sendTicketMessageToApp(Long.valueOf(ticket.getId()), message); - if (ticketService.close(ticket)) { + ssePushService.sendTicketMessageToAdmin(ticket.getId(), message); + ssePushService.sendTicketMessageToApp(ticket.getId(), message); + if (ticketUnionService.close(ticket)) { ticketEventPublisher.publishTicketCloseEvent(ticket); message = new ChatMessageDTO() .setId(IdUtil.getSnowflakeNextIdStr()) @@ -553,7 +555,7 @@ public class TicketController extends ControllerBase { */ @GetMapping("call") public ApiResult call(@Valid @RequestParam @NotNull Long ticketId) { - Ticket ticket = ticketService.getById(ticketId); + TicketDTO ticket = ticketService.getDto(ticketId); VUtils.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("工单不存在"); VUtils.trueThrowBusinessError(!Objects.equals(ticket.getState(), TicketState.Processing.getState())) .throwMessage("当前工单状态不允许请求通话"); @@ -591,8 +593,8 @@ public class TicketController extends ControllerBase { * @param ticketId 工单编号 */ @GetMapping("call/joinChannel") - public ApiResult joinChannel(@Valid @RequestParam @NotNull Integer ticketId) throws IOException, InterruptedException { - Ticket ticket = ticketService.getById(ticketId); + public ApiResult joinChannel(@Valid @RequestParam @NotNull Long ticketId) throws IOException, InterruptedException { + TicketDTO ticket = ticketService.getDto(ticketId); VUtils.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("工单不存在"); VUtils.trueThrowBusinessError(!Objects.equals(ticket.getState(), TicketState.Processing.getState())) .throwMessage("当前工单状态不允许通话"); @@ -607,7 +609,7 @@ public class TicketController extends ControllerBase { .setSendData(new UniPushMessageBody() .setTitle("视频通话") .setPayload(new UniPushMessageCallPayload() - .setTicketId(Long.valueOf(ticketId)) + .setTicketId(ticketId) .setUserId(AppUserUtil.getUserId()) .setCategory("ticketCallJoined") .setFrom("app") @@ -633,7 +635,7 @@ public class TicketController extends ControllerBase { .setSendData(new UniPushMessageBody() .setTitle("视频通话结束") .setPayload(new UniPushMessageCallPayload() - .setTicketId(Long.valueOf(request.getTicketId())) + .setTicketId(request.getTicketId()) .setUserId(Integer.valueOf(StrUtil.split(uid, "-").get(1))) .setCategory("ticketCallEnd") .setFrom("app") diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TranslateController.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TranslateController.java index 1e4748e4..7606a3f6 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TranslateController.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TranslateController.java @@ -4,8 +4,8 @@ import com.nflg.mobilebroken.common.pojo.ApiResult; import com.nflg.mobilebroken.common.util.AppUserUtil; import com.nflg.mobilebroken.starter.service.impl.DeepSeekTranslate; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; @@ -26,7 +26,7 @@ public class TranslateController extends ControllerBase { * @return 翻译结果 */ @PostMapping("deepseek") - public ApiResult deepseek(@RequestParam String text) { + public ApiResult deepseek(@RequestBody String text) { return ApiResult.success(deepSeekTranslate.translateWord(text, "auto", AppUserUtil.getLanguageName(), "html")); } } diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCallBeginEvent.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCallBeginEvent.java index dc49143f..34597915 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCallBeginEvent.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCallBeginEvent.java @@ -40,7 +40,7 @@ public class TicketCallBeginEvent extends ApplicationEvent implements Applicatio .setSenderName("通话助手") .setContent(userName+"发起了视频通话") .setCreateTime(Instant.now()); - ticketChatService.addMessage(Long.valueOf(ticketId), message); + ticketChatService.addMessage(ticketId, message); //推送消息 ssePushService.sendTicketMessageToAdmin(ticketId,message); ssePushService.sendTicketMessageToApp(ticketId,message); diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCallEndEvent.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCallEndEvent.java index 2222ecbe..78bf02bd 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCallEndEvent.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCallEndEvent.java @@ -54,7 +54,7 @@ public class TicketCallEndEvent extends ApplicationEvent implements ApplicationC .setSenderName("通话助手") .setContent("视频通话已结束") .setCreateTime(Instant.now()); - ticketChatService.addMessage(Long.valueOf(ticketId), message); + ticketChatService.addMessage(ticketId, message); //推送消息 ssePushService.sendTicketMessageToAdmin(ticketId, message); ssePushService.sendTicketMessageToApp(ticketId, message); 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 10480d76..6b18d28b 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 @@ -1,66 +1,55 @@ package com.nflg.mobilebroken.cfs.event; import cn.hutool.core.collection.CollectionUtil; -import cn.hutool.core.date.DatePattern; import cn.hutool.core.util.StrUtil; import com.nflg.mobilebroken.common.constant.MessageSubType; import com.nflg.mobilebroken.common.constant.MessageType; +import com.nflg.mobilebroken.common.pojo.dto.TicketDTO; import com.nflg.mobilebroken.repository.entity.AdminMessage; import com.nflg.mobilebroken.repository.entity.AdminUser; -import com.nflg.mobilebroken.repository.entity.Ticket; -import com.nflg.mobilebroken.repository.service.*; -import com.nflg.mobilebroken.starter.service.EmailService; +import com.nflg.mobilebroken.repository.service.IAdminMessageService; +import com.nflg.mobilebroken.repository.service.IAdminUserService; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.context.ApplicationEvent; import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; import java.util.List; import java.util.stream.Collectors; public class TicketCloseEvent extends ApplicationEvent implements ApplicationContextAware { - private static final DateTimeFormatter FORMATTER= DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN); - private final Ticket ticket; - private IDictionaryItemTranslateService dictionaryItemTranslateService; - private IAppUserService appUserService; - private EmailService emailService; - private ITBaseDeviceTypeService deviceTypeService; + private final TicketDTO ticket; private IAdminUserService adminUserService; private IAdminMessageService adminMessageService; - public TicketCloseEvent(Object source,Ticket ticket) { + public TicketCloseEvent(Object source, TicketDTO ticket) { super(source); this.ticket = ticket; } @Override public void setApplicationContext(ApplicationContext applicationContext) { - this.dictionaryItemTranslateService = applicationContext.getBean(IDictionaryItemTranslateService.class); - this.appUserService = applicationContext.getBean(IAppUserService.class); - this.emailService = applicationContext.getBean(EmailService.class); this.adminUserService = applicationContext.getBean(IAdminUserService.class); this.adminMessageService = applicationContext.getBean(IAdminMessageService.class); - this.deviceTypeService = applicationContext.getBean(ITBaseDeviceTypeService.class); } - public void send(){ + public void send() { sendUserMessage(); } - private void sendUserMessage(){ + private void sendUserMessage() { //我的待办 - List userIds= StrUtil.split(ticket.getHandle(),",").stream().map(Integer::parseInt).collect(Collectors.toList()); - List adminUsers=adminUserService.listByIds(userIds); - if (CollectionUtil.isNotEmpty(adminUsers)){ + 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( new AdminMessage() .setNo(ticket.getNo()) .setTitle(ticket.getTitle()) .setUserId(c.getId()) - .setSourceId(Long.valueOf(ticket.getId())) - .setSource(0) + .setSourceId(ticket.getId()) + .setSource(ticket.getType() == 0 ? 0 : 3) .setType(MessageType.WorkOrderAssignment.getState()) .setSubType(MessageSubType.TicketClosed.getState()) .setIsRead(false) diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketEvaluateEvent.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketEvaluateEvent.java index 8cdf1830..6a85d19b 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketEvaluateEvent.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketEvaluateEvent.java @@ -4,11 +4,13 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DatePattern; import com.nflg.mobilebroken.common.constant.MessageSubType; import com.nflg.mobilebroken.common.constant.MessageType; +import com.nflg.mobilebroken.common.pojo.dto.TicketDTO; import com.nflg.mobilebroken.repository.entity.AdminMessage; import com.nflg.mobilebroken.repository.entity.AdminUser; -import com.nflg.mobilebroken.repository.entity.Ticket; -import com.nflg.mobilebroken.repository.service.*; -import com.nflg.mobilebroken.starter.service.EmailService; +import com.nflg.mobilebroken.repository.service.IAdminMessageService; +import com.nflg.mobilebroken.repository.service.IAdminUserService; +import com.nflg.mobilebroken.repository.service.IGongfuDeviceTypeService; +import com.nflg.mobilebroken.repository.service.ITBaseDeviceTypeService; import lombok.extern.slf4j.Slf4j; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; @@ -21,45 +23,40 @@ import java.util.List; @Slf4j public class TicketEvaluateEvent extends ApplicationEvent implements ApplicationContextAware { - private static final DateTimeFormatter FORMATTER= DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN); - private final Ticket ticket; - private final String language; - private final String zone; + private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN); + private final TicketDTO ticket; - private IDictionaryItemTranslateService dictionaryItemTranslateService; - private IAppUserService appUserService; - private EmailService emailService; private ITBaseDeviceTypeService deviceTypeService; + private IGongfuDeviceTypeService gongfuDeviceTypeService; private IAdminUserService adminUserService; private IAdminMessageService adminMessageService; - public TicketEvaluateEvent(Object source, Ticket ticket,String language,String zone) { + public TicketEvaluateEvent(Object source, TicketDTO ticket, String language, String zone) { super(source); this.ticket = ticket; - this.language = language; - this.zone = zone; } @Override public void setApplicationContext(ApplicationContext applicationContext) { - this.dictionaryItemTranslateService = applicationContext.getBean(IDictionaryItemTranslateService.class); - this.appUserService = applicationContext.getBean(IAppUserService.class); - this.emailService = applicationContext.getBean(EmailService.class); this.adminUserService = applicationContext.getBean(IAdminUserService.class); this.adminMessageService = applicationContext.getBean(IAdminMessageService.class); this.deviceTypeService = applicationContext.getBean(ITBaseDeviceTypeService.class); } - public void send(){ - sendUserMessage(); + public void send() { + if (ticket.getType() == 0) { + sendUserMessage(); + } else { + sendUserMessage1(); + } } - private void sendUserMessage(){ + private void sendUserMessage() { //我的待办 - List cqms=deviceTypeService.getCqmsByDeviceType(ticket.getDeviceNo()); - if (CollectionUtil.isEmpty(cqms)){ + List cqms = deviceTypeService.getCqmsByDeviceType(ticket.getDeviceNo()); + if (CollectionUtil.isEmpty(cqms)) { log.warn("该设备尚未设置CQM负责人:{}", ticket.getDeviceNo()); - }else { + } else { List cqmUsers = adminUserService.listByIds(cqms); if (CollectionUtil.isNotEmpty(cqmUsers)) { cqmUsers.forEach(c -> adminMessageService.add( @@ -67,7 +64,7 @@ public class TicketEvaluateEvent extends ApplicationEvent implements Application .setNo(ticket.getNo()) .setTitle(ticket.getTitle()) .setUserId(c.getId()) - .setSourceId(Long.valueOf(ticket.getId())) + .setSourceId(ticket.getId()) .setSource(0) .setType(MessageType.WorkOrderAssignment.getState()) .setSubType(MessageSubType.TicketCompletion.getState()) @@ -77,4 +74,28 @@ public class TicketEvaluateEvent extends ApplicationEvent implements Application } } } + + private void sendUserMessage1() { + //我的待办 + List cqms = gongfuDeviceTypeService.getCqms(ticket.getDeviceNo()); + if (CollectionUtil.isEmpty(cqms)) { + log.warn("该设备尚未设置负责人:{}", ticket.getDeviceNo()); + } else { + List cqmUsers = adminUserService.listByIds(cqms); + if (CollectionUtil.isNotEmpty(cqmUsers)) { + cqmUsers.forEach(c -> adminMessageService.add( + new AdminMessage() + .setNo(ticket.getNo()) + .setTitle(ticket.getTitle()) + .setUserId(c.getId()) + .setSourceId(ticket.getId()) + .setSource(3) + .setType(MessageType.WorkOrderAssignment.getState()) + .setSubType(MessageSubType.TicketCompletion.getState()) + .setIsRead(false) + .setCreateTime(LocalDateTime.now())) + ); + } + } + } } diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketReopenEvent.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketReopenEvent.java index 7a454cdb..262c377f 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketReopenEvent.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketReopenEvent.java @@ -1,76 +1,46 @@ package com.nflg.mobilebroken.cfs.event; import cn.hutool.core.collection.CollectionUtil; -import cn.hutool.core.date.DatePattern; import cn.hutool.core.util.StrUtil; import com.nflg.mobilebroken.common.constant.MessageSubType; import com.nflg.mobilebroken.common.constant.MessageType; +import com.nflg.mobilebroken.common.pojo.dto.TicketDTO; import com.nflg.mobilebroken.repository.entity.AdminMessage; import com.nflg.mobilebroken.repository.entity.AdminUser; -import com.nflg.mobilebroken.repository.entity.Ticket; import com.nflg.mobilebroken.repository.service.IAdminMessageService; import com.nflg.mobilebroken.repository.service.IAdminUserService; -import com.nflg.mobilebroken.repository.service.IAppUserService; -import com.nflg.mobilebroken.repository.service.IDictionaryItemTranslateService; -import com.nflg.mobilebroken.starter.service.EmailService; import lombok.extern.slf4j.Slf4j; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.context.ApplicationEvent; import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; import java.util.List; import java.util.stream.Collectors; @Slf4j public class TicketReopenEvent extends ApplicationEvent implements ApplicationContextAware { - private static final DateTimeFormatter FORMATTER= DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN); - private final Ticket ticket; - private final String language; - private final String zone; - private IDictionaryItemTranslateService dictionaryItemTranslateService; - private IAppUserService appUserService; - private EmailService emailService; + private final TicketDTO ticket; private IAdminUserService adminUserService; private IAdminMessageService adminMessageService; - public TicketReopenEvent(Object source,Ticket ticket, String language, String zone) { + public TicketReopenEvent(Object source, TicketDTO ticket, String language, String zone) { super(source); this.ticket = ticket; - this.language = language; - this.zone = zone; } @Override public void setApplicationContext(ApplicationContext applicationContext) { - this.dictionaryItemTranslateService = applicationContext.getBean(IDictionaryItemTranslateService.class); - this.appUserService = applicationContext.getBean(IAppUserService.class); - this.emailService = applicationContext.getBean(EmailService.class); this.adminUserService = applicationContext.getBean(IAdminUserService.class); this.adminMessageService = applicationContext.getBean(IAdminMessageService.class); } - public void send(){ + public void send() { sendUserMessage(); } - private void sendUserMessage(){ - //我的待办 -// CQM -// AdminUser cqmUser = adminUserService.getById(ticket.getCqm()); -// adminMessageService.add( -// new AdminMessage() -// .setNo(ticket.getNo()) -// .setTitle(ticket.getTitle()) -// .setUserId(cqmUser.getId()) -// .setSourceId(ticket.getId()) -// .setSource(0) -// .setType(MessageType.WorkOrderAssignment.getState()) -// .setSubType(MessageSubType.TicketReopen.getState()) -// .setIsRead(false) -// .setCreateTime(LocalDateTime.now())); + private void sendUserMessage() { //处理人 List userIds = StrUtil.split(ticket.getHandle(), ",").stream().map(Integer::parseInt).collect(Collectors.toList()); List adminUsers = adminUserService.listByIds(userIds); @@ -80,8 +50,8 @@ public class TicketReopenEvent extends ApplicationEvent implements ApplicationCo .setNo(ticket.getNo()) .setTitle(ticket.getTitle()) .setUserId(c.getId()) - .setSourceId(Long.valueOf(ticket.getId())) - .setSource(0) + .setSourceId(ticket.getId()) + .setSource(ticket.getType() == 0 ? 0 : 3) .setType(MessageType.WorkOrderAssignment.getState()) .setSubType(MessageSubType.TicketReopen.getState()) .setIsRead(false) 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 5d109a66..8f67a304 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 @@ -6,7 +6,7 @@ import cn.hutool.core.util.StrUtil; import com.nflg.mobilebroken.common.constant.Constant; import com.nflg.mobilebroken.common.constant.MessageSubType; import com.nflg.mobilebroken.common.constant.MessageType; -import com.nflg.mobilebroken.common.pojo.vo.TicketVO; +import com.nflg.mobilebroken.common.pojo.dto.TicketDTO; import com.nflg.mobilebroken.repository.entity.AdminMessage; import com.nflg.mobilebroken.repository.entity.AdminUser; import com.nflg.mobilebroken.repository.entity.AppUser; @@ -31,8 +31,8 @@ import java.util.stream.Collectors; @Slf4j public class TicketReplyEvent extends ApplicationEvent implements ApplicationContextAware { - private static final DateTimeFormatter FORMATTER= DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN); - private final TicketVO ticket; + private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN); + private final TicketDTO ticket; private final String language; private final String zone; private IDictionaryItemTranslateService dictionaryItemTranslateService; @@ -41,7 +41,7 @@ public class TicketReplyEvent extends ApplicationEvent implements ApplicationCon private IAdminUserService adminUserService; private IAdminMessageService adminMessageService; - public TicketReplyEvent(Object source, TicketVO ticket, String language, String zone) { + public TicketReplyEvent(Object source, TicketDTO ticket, String language, String zone) { super(source); this.ticket = ticket; this.language = language; @@ -57,15 +57,15 @@ public class TicketReplyEvent extends ApplicationEvent implements ApplicationCon this.adminMessageService = applicationContext.getBean(IAdminMessageService.class); } - public void send(){ + public void send() { sendUserMessage(); // sendEmail(); } - private void sendUserMessage(){ + private void sendUserMessage() { //我的待办 - if(StrUtil.isNotBlank(ticket.getHandle())) { - List userIds = StrUtil.split(ticket.getHandle(),",").stream().map(Integer::parseInt).collect(Collectors.toList()); + if (StrUtil.isNotBlank(ticket.getHandle())) { + 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( @@ -74,7 +74,7 @@ public class TicketReplyEvent extends ApplicationEvent implements ApplicationCon .setTitle(ticket.getTitle()) .setUserId(c.getId()) .setSourceId(ticket.getId()) - .setSource(0) + .setSource(ticket.getType() == 0 ? 0 : 3) .setType(MessageType.WorkOrderAssignment.getState()) .setSubType(MessageSubType.TicketNewMessage.getState()) .setIsRead(false) @@ -86,7 +86,7 @@ public class TicketReplyEvent extends ApplicationEvent implements ApplicationCon private void sendEmail() { try { - List userIds = StrUtil.split(ticket.getHandle(),",").stream().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()); @@ -106,15 +106,15 @@ public class TicketReplyEvent extends ApplicationEvent implements ApplicationCon } } - private void sendEmail(List adminUsers,String subject,String content) throws MessagingException { - if (CollectionUtil.isNotEmpty(adminUsers)){ - for (AdminUser adminUser:adminUsers) { - emailService.sendEmail(adminUser.getEmail(),subject,content); + private void sendEmail(List adminUsers, String subject, String content) throws MessagingException { + if (CollectionUtil.isNotEmpty(adminUsers)) { + for (AdminUser adminUser : adminUsers) { + emailService.sendEmail(adminUser.getEmail(), subject, content); } } } - private String toTimeString(LocalDateTime time){ + private String toTimeString(LocalDateTime time) { return time.atZone(ZoneOffset.UTC) .withZoneSameInstant(ZoneId.of(zone)) .toLocalDateTime() 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 39226fdf..d89061f2 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 @@ -1,85 +1,60 @@ package com.nflg.mobilebroken.cfs.event; import cn.hutool.core.collection.CollectionUtil; -import cn.hutool.core.date.DatePattern; import cn.hutool.core.util.StrUtil; import com.nflg.mobilebroken.common.constant.MessageSubType; import com.nflg.mobilebroken.common.constant.MessageType; +import com.nflg.mobilebroken.common.pojo.dto.TicketDTO; import com.nflg.mobilebroken.repository.entity.AdminMessage; import com.nflg.mobilebroken.repository.entity.AdminUser; -import com.nflg.mobilebroken.repository.entity.Ticket; -import com.nflg.mobilebroken.repository.service.*; -import com.nflg.mobilebroken.starter.service.EmailService; +import com.nflg.mobilebroken.repository.service.IAdminMessageService; +import com.nflg.mobilebroken.repository.service.IAdminUserService; +import com.nflg.mobilebroken.repository.service.IGongfuDeviceTypeService; +import com.nflg.mobilebroken.repository.service.ITBaseDeviceTypeService; import lombok.extern.slf4j.Slf4j; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.context.ApplicationEvent; import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; import java.util.List; import java.util.stream.Collectors; @Slf4j public class TicketRevokeEvent extends ApplicationEvent implements ApplicationContextAware { - private static final DateTimeFormatter FORMATTER= DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN); - private final Ticket ticket; - private final String language; - private final String zone; - private IDictionaryItemTranslateService dictionaryItemTranslateService; - private IAppUserService appUserService; - private EmailService emailService; + private final TicketDTO ticket; private ITBaseDeviceTypeService deviceTypeService; + private IGongfuDeviceTypeService gongfuDeviceTypeService; private IAdminUserService adminUserService; private IAdminMessageService adminMessageService; - public TicketRevokeEvent(Object source,Ticket ticket, String language, String zone) { + public TicketRevokeEvent(Object source, TicketDTO ticket, String language, String zone) { super(source); this.ticket = ticket; - this.language = language; - this.zone = zone; } + @Override public void setApplicationContext(ApplicationContext applicationContext) { - this.dictionaryItemTranslateService = applicationContext.getBean(IDictionaryItemTranslateService.class); - this.appUserService = applicationContext.getBean(IAppUserService.class); - this.emailService = applicationContext.getBean(EmailService.class); this.adminUserService = applicationContext.getBean(IAdminUserService.class); this.adminMessageService = applicationContext.getBean(IAdminMessageService.class); this.deviceTypeService = applicationContext.getBean(ITBaseDeviceTypeService.class); + this.gongfuDeviceTypeService = applicationContext.getBean(IGongfuDeviceTypeService.class); } - public void send(){ - sendUserMessage(); - } - - private void sendUserMessage(){ - //我的待办 - //CQM - List cqms=deviceTypeService.getCqmsByDeviceType(ticket.getDeviceNo()); - if (CollectionUtil.isEmpty(cqms)){ - log.warn("该设备尚未设置CQM负责人:{}", ticket.getDeviceNo()); - }else { - List cqmUsers = adminUserService.listByIds(cqms); - if (CollectionUtil.isNotEmpty(cqmUsers)) { - cqmUsers.forEach(c -> adminMessageService.add( - new AdminMessage() - .setNo(ticket.getNo()) - .setTitle(ticket.getTitle()) - .setUserId(c.getId()) - .setSourceId(Long.valueOf(ticket.getId())) - .setSource(0) - .setType(MessageType.WorkOrderAssignment.getState()) - .setSubType(MessageSubType.TicketRevoke.getState()) - .setIsRead(false) - .setCreateTime(LocalDateTime.now())) - ); - } + public void send() { + if (ticket.getType() == 0) { + sendToCqm(); + } else { + sendToCqm1(); } + sendToHandler(); + } + + private void sendToHandler() { //处理人 - List userIds= StrUtil.split(ticket.getHandle(),",").stream().map(Integer::parseInt).collect(Collectors.toList()); + List userIds = StrUtil.split(ticket.getHandle(), ",").stream().map(Integer::parseInt).collect(Collectors.toList()); if (CollectionUtil.isNotEmpty(userIds)) { List adminUsers = adminUserService.listByIds(userIds); if (CollectionUtil.isNotEmpty(adminUsers)) { @@ -88,7 +63,7 @@ public class TicketRevokeEvent extends ApplicationEvent implements ApplicationCo .setNo(ticket.getNo()) .setTitle(ticket.getTitle()) .setUserId(c.getId()) - .setSourceId(Long.valueOf(ticket.getId())) + .setSourceId(ticket.getId()) .setSource(0) .setType(MessageType.WorkOrderAssignment.getState()) .setSubType(MessageSubType.TicketRevoke.getState()) @@ -98,4 +73,54 @@ public class TicketRevokeEvent extends ApplicationEvent implements ApplicationCo } } } + + private void sendToCqm() { + //我的待办 + //CQM + List cqms = deviceTypeService.getCqmsByDeviceType(ticket.getDeviceNo()); + if (CollectionUtil.isEmpty(cqms)) { + log.warn("该设备尚未设置CQM负责人:{}", ticket.getDeviceNo()); + } else { + List cqmUsers = adminUserService.listByIds(cqms); + if (CollectionUtil.isNotEmpty(cqmUsers)) { + cqmUsers.forEach(c -> adminMessageService.add( + new AdminMessage() + .setNo(ticket.getNo()) + .setTitle(ticket.getTitle()) + .setUserId(c.getId()) + .setSourceId(ticket.getId()) + .setSource(0) + .setType(MessageType.WorkOrderAssignment.getState()) + .setSubType(MessageSubType.TicketRevoke.getState()) + .setIsRead(false) + .setCreateTime(LocalDateTime.now())) + ); + } + } + } + + private void sendToCqm1() { + //我的待办 + //CQM + List cqms = gongfuDeviceTypeService.getCqms(ticket.getDeviceNo()); + if (CollectionUtil.isEmpty(cqms)) { + log.warn("该设备尚未设置负责人:{}", ticket.getDeviceNo()); + } else { + List cqmUsers = adminUserService.listByIds(cqms); + if (CollectionUtil.isNotEmpty(cqmUsers)) { + cqmUsers.forEach(c -> adminMessageService.add( + new AdminMessage() + .setNo(ticket.getNo()) + .setTitle(ticket.getTitle()) + .setUserId(c.getId()) + .setSourceId(ticket.getId()) + .setSource(3) + .setType(MessageType.WorkOrderAssignment.getState()) + .setSubType(MessageSubType.TicketRevoke.getState()) + .setIsRead(false) + .setCreateTime(LocalDateTime.now())) + ); + } + } + } } diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/publisher/TicketEventPublisher.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/publisher/TicketEventPublisher.java index 925a1a9e..299eea75 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/publisher/TicketEventPublisher.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/publisher/TicketEventPublisher.java @@ -1,7 +1,7 @@ package com.nflg.mobilebroken.cfs.publisher; import com.nflg.mobilebroken.cfs.event.*; -import com.nflg.mobilebroken.common.pojo.vo.TicketVO; +import com.nflg.mobilebroken.common.pojo.dto.TicketDTO; import com.nflg.mobilebroken.repository.entity.Ticket; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationEventPublisher; @@ -24,31 +24,31 @@ public class TicketEventPublisher { eventPublisher.publishEvent(event); } - public void publishTicketReplyEvent(TicketVO ticket, String language, String zone) { + public void publishTicketReplyEvent(TicketDTO ticket, String language, String zone) { TicketReplyEvent event = new TicketReplyEvent(this, ticket, language, zone); event.setApplicationContext(applicationContext); eventPublisher.publishEvent(event); } - public void publishTicketRevokeEvent(Ticket ticket, String language, String zone) { + public void publishTicketRevokeEvent(TicketDTO ticket, String language, String zone) { TicketRevokeEvent event = new TicketRevokeEvent(this, ticket, language, zone); event.setApplicationContext(applicationContext); eventPublisher.publishEvent(event); } - public void publishTicketReopenEvent(Ticket ticket, String language, String zone) { + public void publishTicketReopenEvent(TicketDTO ticket, String language, String zone) { TicketReopenEvent event = new TicketReopenEvent(this, ticket, language, zone); event.setApplicationContext(applicationContext); eventPublisher.publishEvent(event); } - public void publishTicketEvaluateEvent(Ticket ticket, String language, String zone) { + public void publishTicketEvaluateEvent(TicketDTO ticket, String language, String zone) { TicketEvaluateEvent event = new TicketEvaluateEvent(this, ticket, language, zone); event.setApplicationContext(applicationContext); eventPublisher.publishEvent(event); } - public void publishTicketCloseEvent(Ticket ticket) { + public void publishTicketCloseEvent(TicketDTO ticket) { TicketCloseEvent event = new TicketCloseEvent(this, ticket); event.setApplicationContext(applicationContext); eventPublisher.publishEvent(event); diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/service/SsePushService.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/service/SsePushService.java index 75e7bb59..b728a432 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/service/SsePushService.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/service/SsePushService.java @@ -174,17 +174,17 @@ public class SsePushService { return restTemplate.postForObject(sseUrl + "/sse/" + to + "/push/user/message", request, ApiResult.class); } - public void sendTicketCallHangUpToAdmin(@NotNull Integer ticketId, @NotNull Integer userId, AppUser user) { + public void sendTicketCallHangUpToAdmin(@NotNull Long ticketId, @NotNull Integer userId, AppUser user) { try { PushUserMessageRequest request = new PushUserMessageRequest() .setUserId(userId) .setMessage(new PushMessageDTO() .setType("ticketCallHangUp") .setData(new PushMessageDataBody() - .setTargetId(Long.valueOf(ticketId)) + .setTargetId(ticketId) .setType("ticketCallHangUp") .setData(new UniPushMessageCallPayload() - .setTicketId(Long.valueOf(ticketId)) + .setTicketId(ticketId) .setUserId(user.getId()) .setUserName(user.getName()) .setUserAvatar(user.getAvatar()) @@ -199,17 +199,17 @@ public class SsePushService { } } - public void sendTicketCallCancelToAdmin(@NotNull Integer ticketId, @NotNull Integer userId, AppUser user) { + public void sendTicketCallCancelToAdmin(@NotNull Long ticketId, @NotNull Integer userId, AppUser user) { try { PushUserMessageRequest request = new PushUserMessageRequest() .setUserId(userId) .setMessage(new PushMessageDTO() .setType("ticketCallCancel") .setData(new PushMessageDataBody() - .setTargetId(Long.valueOf(ticketId)) + .setTargetId(ticketId) .setType("ticketCallCancel") .setData(new UniPushMessageCallPayload() - .setTicketId(Long.valueOf(ticketId)) + .setTicketId(ticketId) .setUserId(user.getId()) .setUserName(user.getName()) .setUserAvatar(user.getAvatar()) @@ -224,17 +224,17 @@ public class SsePushService { } } - public void sendTicketCallJoinedToApp(Integer userId,@NotNull Integer ticketId) { + public void sendTicketCallJoinedToApp(Integer userId, @NotNull Long ticketId) { try { PushUserMessageRequest request = new PushUserMessageRequest() .setUserId(userId) .setMessage(new PushMessageDTO() .setType("ticketCallJoined") .setData(new PushMessageDataBody() - .setTargetId(Long.valueOf(ticketId)) + .setTargetId(ticketId) .setType("ticketCallJoined") .setData(new UniPushMessageCallPayload() - .setTicketId(Long.valueOf(ticketId)) + .setTicketId(ticketId) .setFrom("app") ) ) @@ -246,17 +246,17 @@ public class SsePushService { } } - public void sendTicketCallJoined(Integer userId, @Valid @NotNull Integer ticketId, String to) { + public void sendTicketCallJoined(Integer userId, @Valid @NotNull Long ticketId, String to) { try { PushUserMessageRequest request = new PushUserMessageRequest() .setUserId(userId) .setMessage(new PushMessageDTO() .setType("ticketCallJoined") .setData(new PushMessageDataBody() - .setTargetId(Long.valueOf(ticketId)) + .setTargetId(ticketId) .setType("ticketCallJoined") .setData(new UniPushMessageCallPayload() - .setTicketId(Long.valueOf(ticketId)) + .setTicketId(ticketId) .setFrom("app") ) ) diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/service/TicketUnionService.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/service/TicketUnionService.java new file mode 100644 index 00000000..bbf2c6e5 --- /dev/null +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/service/TicketUnionService.java @@ -0,0 +1,57 @@ +package com.nflg.mobilebroken.cfs.service; + +import cn.hutool.core.convert.Convert; +import com.nflg.mobilebroken.common.pojo.dto.TicketDTO; +import com.nflg.mobilebroken.repository.entity.GongfuTicket; +import com.nflg.mobilebroken.repository.entity.Ticket; +import com.nflg.mobilebroken.repository.service.IGongfuTicketService; +import com.nflg.mobilebroken.repository.service.ITicketService; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Component +public class TicketUnionService { + + @Resource + private ITicketService ticketService; + + @Resource + private IGongfuTicketService gongfuTicketService; + + public TicketDTO reopen(Long id) { + if (id < Integer.MAX_VALUE) { + Ticket ticket = ticketService.reopen(Math.toIntExact(id)); + TicketDTO dto = Convert.convert(TicketDTO.class, ticket); + dto.setType(0); + return dto; + } else { + GongfuTicket ticket = gongfuTicketService.reopen(id); + TicketDTO dto = Convert.convert(TicketDTO.class, ticket); + dto.setType(1); + return dto; + } + } + + public TicketDTO revoked(Long id) { + if (id < Integer.MAX_VALUE) { + Ticket ticket = ticketService.revoked(Math.toIntExact(id)); + TicketDTO dto = Convert.convert(TicketDTO.class, ticket); + dto.setType(0); + return dto; + } else { + GongfuTicket ticket = gongfuTicketService.revoked(id); + TicketDTO dto = Convert.convert(TicketDTO.class, ticket); + dto.setType(1); + return dto; + } + } + + public boolean close(TicketDTO ticket) { + if (ticket.getType() == 0) { + return ticketService.close(Convert.convert(Ticket.class, ticket)); + } else { + return gongfuTicketService.close(Convert.convert(GongfuTicket.class, ticket)); + } + } +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/constant/Constant.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/constant/Constant.java index bdc58f4f..71f6d002 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/constant/Constant.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/constant/Constant.java @@ -110,6 +110,8 @@ public class Constant { public static final String DICTIONARY_ITEM_ACCOUNT_HAS_EXPIRED="AccountHasExpired"; + public static final String DICTIONARY_ITEM_ACCOUNT_HAS_EXPIRED_ENDUSER = "EndUserAccountHasExpired"; + public static final String DICTIONARY_SOLUTION_MEASURES = "SolutionMeasures"; public static final String DICTIONARY_SOLUTION_REVIEW_DEPARTMENT = "SolutionReviewDepartment"; diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/TicketDTO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/TicketDTO.java index 289542f1..b3c11144 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/TicketDTO.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/TicketDTO.java @@ -143,4 +143,9 @@ public class TicketDTO { * 类型:0:移动破;1:工服 */ private Integer type; + + /** + * 区域id,仅工服工单 + */ + private Long areaId; } diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/LanguageDataRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/LanguageDataRequest.java index 54e518ae..64950ff1 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/LanguageDataRequest.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/LanguageDataRequest.java @@ -1,10 +1,12 @@ package com.nflg.mobilebroken.common.pojo.request; import lombok.Data; +import lombok.experimental.Accessors; import javax.validation.constraints.NotBlank; @Data +@Accessors(chain = true) public class LanguageDataRequest { /** diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/TicketAddRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/TicketAddRequest.java index c7bea0b1..52ee375b 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/TicketAddRequest.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/TicketAddRequest.java @@ -54,7 +54,7 @@ public class TicketAddRequest { /** * 紧急程度,0:非紧急;1:普通;2:紧急 */ - private Integer urgency; + private Byte urgency; /** * 处理人id diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/TicketInfoVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/TicketInfoVO.java index f1f828d6..7fc8397c 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/TicketInfoVO.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/TicketInfoVO.java @@ -142,4 +142,14 @@ public class TicketInfoVO { * 区域 */ private String area; + + /** + * 客户名称 + */ + private String customerName; + + /** + * 类型:0:移动破;1:工服 + */ + private Integer type; } diff --git a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/DispatchController.java b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/DispatchController.java index 6f6d6677..b4b51666 100644 --- a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/DispatchController.java +++ b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/DispatchController.java @@ -176,6 +176,7 @@ public class DispatchController extends ControllerBase { @GetMapping("/getInfo") public ApiResult getInfo(@RequestParam Long id) { DispatchVO vo = dispatchService.getInfo(id); + VUtils.trueThrowBusinessError(Objects.isNull(vo)).throwMessage("派工单不存在"); vo.setFiles(Convert.toList(GongfuFileVO.class, fileService.lambdaQuery() .eq(GongfuFile::getNo, vo.getNo()) .eq(GongfuFile::getType, 0) diff --git a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/TicketController.java b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/TicketController.java index ea854d08..315beb77 100644 --- a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/TicketController.java +++ b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/TicketController.java @@ -131,9 +131,6 @@ public class TicketController extends ControllerBase { @Resource private IGongfuTicketAreaService ticketAreaService; - @Resource - private ITBaseAreaService baseAreaService; - /** * 获取问题类型 * @return 问题类型列表 @@ -557,12 +554,7 @@ public class TicketController extends ControllerBase { areaName = appAreaService.getById(user.getAreaId()).getName(); } } else if (user.getType() == 1) { - if (Objects.nonNull(user.getAreaId())) { - TBaseArea area = baseAreaService.getById(user.getAreaId()); - if (Objects.nonNull(area)) { - areaName = area.getAreaName(); - } - } + areaName = ticketAreaService.getAreaName(ticket.getAreaId(), MultilingualUtil.getLanguage()); } } // TBaseCustomer company = customerService.getById(Integer.valueOf(user.getCompanyId())); @@ -639,7 +631,9 @@ public class TicketController extends ControllerBase { .setUserPlatform(ticket.getUserPlatform()) .setCanSendMessage(adminUsers.contains(AdminUserUtil.getUserId())) .setEvaluate(getTicketEvaluate(ticket.getId())) - .setArea(area); + .setArea(area) + .setType(1) + .setCustomerName(ticket.getCustomerName()); return ApiResult.success(vo); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/AdminMessage.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/AdminMessage.java index 9ef524b3..aebb1d52 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/AdminMessage.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/AdminMessage.java @@ -40,7 +40,7 @@ public class AdminMessage implements Serializable { private String title; /** - * 来源,0:工单;1:代理商账户 + * 来源,0:工单表;1:代理商账户审核表;2:派工单;3:工服工单 */ private Integer source; diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/TicketMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/TicketMapper.java index 25021254..3af6d763 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/TicketMapper.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/TicketMapper.java @@ -44,6 +44,4 @@ public interface TicketMapper extends BaseMapper { IPage searchByFavouritesId(Integer userId, Integer favouritesId, Page page); TicketDTO getDto(Long id); - - TicketVO getById(Long id); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IGongfuTicketAreaService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IGongfuTicketAreaService.java index 5cc3123d..d0500bf9 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IGongfuTicketAreaService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IGongfuTicketAreaService.java @@ -1,7 +1,7 @@ package com.nflg.mobilebroken.repository.service; -import com.nflg.mobilebroken.repository.entity.GongfuTicketArea; import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.mobilebroken.repository.entity.GongfuTicketArea; /** *

@@ -12,4 +12,5 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface IGongfuTicketAreaService extends IService { + String getAreaName(Long areaId, String language); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketEvaluateService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketEvaluateService.java index 26269181..e3ae5b78 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketEvaluateService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketEvaluateService.java @@ -1,8 +1,8 @@ package com.nflg.mobilebroken.repository.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.mobilebroken.common.pojo.dto.TicketDTO; import com.nflg.mobilebroken.common.pojo.request.TicketEvaluateAddRequest; -import com.nflg.mobilebroken.repository.entity.Ticket; import com.nflg.mobilebroken.repository.entity.TicketEvaluate; /** @@ -15,5 +15,5 @@ import com.nflg.mobilebroken.repository.entity.TicketEvaluate; */ public interface ITicketEvaluateService extends IService { - Ticket add(TicketEvaluateAddRequest request); + TicketDTO add(TicketEvaluateAddRequest request); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketService.java index 144ab9d2..9c7542e7 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketService.java @@ -59,6 +59,4 @@ public interface ITicketService extends IService { boolean close(Ticket ticket); TicketDTO getDto(Long id); - - TicketVO getFromView(Long ticketId); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/GongfuTicketAreaServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/GongfuTicketAreaServiceImpl.java index 5ab5324a..0d90e412 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/GongfuTicketAreaServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/GongfuTicketAreaServiceImpl.java @@ -1,11 +1,15 @@ package com.nflg.mobilebroken.repository.service.impl; +import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.mobilebroken.common.pojo.request.LanguageDataRequest; import com.nflg.mobilebroken.repository.entity.GongfuTicketArea; import com.nflg.mobilebroken.repository.mapper.GongfuTicketAreaMapper; import com.nflg.mobilebroken.repository.service.IGongfuTicketAreaService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.Objects; + /** *

* 服务实现类 @@ -16,4 +20,17 @@ import org.springframework.stereotype.Service; @Service public class GongfuTicketAreaServiceImpl extends ServiceImpl implements IGongfuTicketAreaService { + @Override + public String getAreaName(Long areaId, String language) { + GongfuTicketArea area = getById(areaId); + if (Objects.isNull(area)) { + return null; + } + return JSONUtil.toList(area.getLanguageData(), LanguageDataRequest.class) + .stream() + .filter(item -> item.getCode().equals(language)) + .findFirst() + .orElse(new LanguageDataRequest().setLanguageValue(area.getName())) + .getLanguageValue(); + } } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/GongfuTicketServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/GongfuTicketServiceImpl.java index 7d27db6d..9198fa0a 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/GongfuTicketServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/GongfuTicketServiceImpl.java @@ -92,6 +92,7 @@ public class GongfuTicketServiceImpl extends ServiceImpl ids) { - - /// / baseMapper.completeTicket(ids, AdminUserUtil.getUserId()); -// List tickets=listByIds(ids); -// List stateErrors=new ArrayList<>(); -// List handleErrors=new ArrayList<>(); -// for (Ticket ticket : tickets) { -// if (!Objects.equals(ticket.getState(), TicketState.Processing.getState())){ -// stateErrors.add(ticket.getTitle()); -// }else if(Arrays.stream(ticket.getHandle().split(",")) -// .noneMatch(uid->StrUtil.equals(uid, AdminUserUtil.getUserId().toString())) -// ){ -// handleErrors.add(ticket.getTitle()); -// } -// } -// StringBuilder sb=new StringBuilder(); -// if (!stateErrors.isEmpty()){ -// sb.append("以下工单状态不允许完成:").append(StrUtil.join(",", stateErrors)); -// } -// if (!handleErrors.isEmpty()){ -// sb.append("以下工单你无权操作:").append(StrUtil.join(",", handleErrors)); -// } -// String msg=sb.toString(); -// VUtils.trueThrowBusinessError(StrUtil.isNotBlank(msg)) -// .throwMessage(msg); -// lambdaUpdate() -// .in(Ticket::getId, ids) -// .set(Ticket::getState, TicketState.ProcessingCompleted.getState()) -// .set(Ticket::getUpdateTime, LocalDateTime.now()) -// .update(); -// } @Override public GongfuTicket completeTicket(Long id) { GongfuTicket ticket = getById(id); VUtils.trueThrowBusinessError(!Objects.equals(ticket.getState(), TicketState.Processing.getState())) .throwMessage("非处理中状态不允许完成"); - List tickerMangagers = adminUserService.getTickerMangagers(); + List tickerMangagers = adminUserService.getGongfuTickerMangagers(); 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("你无权完成工单"); @@ -252,40 +221,19 @@ public class GongfuTicketServiceImpl extends ServiceImpl tickerMangagers = adminUserService.getTickerMangagers(); -// tickerMangagers.addAll(Arrays.stream(ticket.getHandle().split(",")).map(Integer::parseInt).collect(Collectors.toList())); -// VUtils.trueThrowBusinessError(tickerMangagers.stream().noneMatch(uid -> Objects.equals(uid, AdminUserUtil.getUserId()))) -// .throwMessage("你无权关闭工单"); -// ticket.setState(TicketState.Closed.getState()); -// ticket.setReason(request.getSolution()); -// ticket.setSolveTime(LocalDateTime.now()); -// ticket.setCurrentHandle(AdminUserUtil.getUserId()); -// updateById(ticket); -// return ticket; -// } - @Override public List exportSearch(AdminTicketSearchRequest request) { if (request.getType() == 2) { return baseMapper.searchAllFromAdminAndFollow(request, AdminUserUtil.getUserId()); } else if (request.getType() == 4) { Integer userId = AdminUserUtil.getUserId(); - List tickerMangagers = adminUserService.getTickerMangagers(); + List tickerMangagers = adminUserService.getGongfuTickerMangagers(); request.setTicketManager(tickerMangagers.stream().anyMatch(uid -> Objects.equals(uid, userId))); return baseMapper.searchAllFromAdmin(request, userId); } @@ -353,7 +301,7 @@ public class GongfuTicketServiceImpl extends ServiceImpl tickerMangagers = adminUserService.getTickerMangagers(); + List tickerMangagers = adminUserService.getGongfuTickerMangagers(); 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("你无权添加处理人"); @@ -394,7 +342,7 @@ public class GongfuTicketServiceImpl extends ServiceImpl tickerMangagers = adminUserService.getTickerMangagers(); + List tickerMangagers = adminUserService.getGongfuTickerMangagers(); VUtils.trueThrowBusinessError(tickerMangagers.stream().noneMatch(uid -> Objects.equals(uid, AdminUserUtil.getUserId()))) .throwMessage("你无权驳回工单"); ticket.setState(TicketState.Processing.getState()); @@ -426,7 +374,7 @@ public class GongfuTicketServiceImpl extends ServiceImpl impleme .throwMessage("工单“" + ticket.getTitle() + "”还未填写解决方案"); ticket.setState(TicketState.ProcessingCompleted.getState()); ticket.setCurrentHandle(AdminUserUtil.getUserId()); + ticket.setSolveTime(LocalDateTime.now()); ticket.setUpdateTime(LocalDateTime.now()); updateById(ticket); return ticket; @@ -365,7 +366,7 @@ public class TicketServiceImpl extends ServiceImpl impleme @Override public List getTicketHandle(Long id) { - TicketVO ticket = baseMapper.getById(id); + TicketDTO ticket = baseMapper.getDto(id); VUtils.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("未找到工单"); List handles = StrUtil.split(ticket.getHandle(), ",") .stream() @@ -432,9 +433,4 @@ public class TicketServiceImpl extends ServiceImpl impleme public TicketDTO getDto(Long id) { return baseMapper.getDto(id); } - - @Override - public TicketVO getFromView(Long ticketId) { - return baseMapper.getById(ticketId); - } } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketSolutionServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketSolutionServiceImpl.java index 970a6fde..91ea819e 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketSolutionServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketSolutionServiceImpl.java @@ -240,12 +240,11 @@ public class TicketSolutionServiceImpl extends ServiceImpl ts = forUpdate.stream().filter(s -> !Objects.equals(s.getCreateUserId(), userId)).sorted(Comparator.comparing(TicketSolution::getId)).collect(Collectors.toList()); VUtils.trueThrowBusinessError(!ts.equals(solutions1)).throwMessage("不能修改他人创建的措施"); } - ticketService.lambdaUpdate() - .set(Ticket::getReason, request.getReason()) - .set(Ticket::getAccidentLevel, request.getAccidentLevel()) - .set(Ticket::getState, 2) - .set(Ticket::getSolveTime, LocalDateTime.now()) - .eq(Ticket::getId, request.getTicketId()) + ticket1Service.lambdaUpdate() + .set(GongfuTicket::getReason, request.getReason()) + .set(GongfuTicket::getQuestion, request.getQuestion()) + .set(GongfuTicket::getAccidentLevel, request.getAccidentLevel()) + .eq(GongfuTicket::getId, request.getTicketId()) .update(); if (CollectionUtil.isNotEmpty(idForReserve)) { baseMapper.delete(new LambdaQueryWrapper() diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/GongfuTicketMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/GongfuTicketMapper.xml index a845f94a..5753136f 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/GongfuTicketMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/GongfuTicketMapper.xml @@ -155,9 +155,9 @@ SELECT t.id,t.`no`,t.title,t.state,t.urgency,p.part_name AS 'component',t.question,t.reason ,a1.area_name AS 'areaName','' AS 'agentAreaName',d.customer_name AS 'customerName',d.agent_name AS 'agentName' ,IF(t.user_platform='admin',au.user_name,u.`name`) AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime' - ,t.create_time AS 'createTime',t.update_time AS 'completeTime',di.name AS 'warrantyStatusDesc',d.device_type AS 'deviceType' + ,t.create_time AS 'createTime',t.solve_time AS 'completeTime',di.name AS 'warrantyStatusDesc',d.device_type AS 'deviceType' ,d.model_no AS 'equipmentModel',d.shipment_date AS 'shipmentDate',IF(tf.id IS NULL, false, true) AS 'followed' - ,auc.user_name AS 'cqm',t.solve_time AS 'closeTime',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms' + ,auc.user_name AS 'cqm',t.update_time AS 'closeTime',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms' ,t.handle_name AS 'handle',t.description FROM gongfu_ticket t LEFT JOIN app_user u ON t.user_id=u.id @@ -178,9 +178,9 @@ SELECT t.id,t.`no`,t.title,t.state,t.urgency,p.part_name AS 'component',t.question,t.reason ,a1.area_name AS 'areaName','' AS 'agentAreaName',d.customer_name AS 'customerName',d.agent_name AS 'agentName' ,IF(t.user_platform='admin',au.user_name,u.`name`) AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime' - ,t.create_time AS 'createTime',t.update_time AS 'completeTime',di.name AS 'warrantyStatusDesc',d.device_type AS 'deviceType' + ,t.create_time AS 'createTime',t.solve_time AS 'completeTime',di.name AS 'warrantyStatusDesc',d.device_type AS 'deviceType' ,d.model_no AS 'equipmentModel',d.shipment_date AS 'shipmentDate',IF(tf.id IS NULL, false, true) AS 'followed' - ,auc.user_name AS 'cqm',t.solve_time AS 'closeTime',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms' + ,auc.user_name AS 'cqm',t.update_time AS 'closeTime',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms' ,t.handle_name AS 'handle',t.description FROM gongfu_ticket t LEFT JOIN app_user u ON t.user_id=u.id @@ -201,9 +201,9 @@ SELECT t.id,t.`no`,t.title,t.state,t.urgency,p.part_name AS 'component',t.question,t.reason ,a1.area_name AS 'areaName','' AS 'agentAreaName',d.customer_name AS 'customerName',d.agent_name AS 'agentName' ,IF(t.user_platform='admin',au.user_name,u.`name`) AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime' - ,t.create_time AS 'createTime',t.update_time AS 'completeTime',di.name AS 'warrantyStatusDesc',d.device_type AS 'deviceType' + ,t.create_time AS 'createTime',t.solve_time AS 'completeTime',di.name AS 'warrantyStatusDesc',d.device_type AS 'deviceType' ,d.model_no AS 'equipmentModel',d.shipment_date AS 'shipmentDate',true AS 'followed',auc.user_name AS 'cqm' - ,t.solve_time AS 'closeTime',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms' + ,t.update_time AS 'closeTime',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms' ,t.handle_name AS 'handle',t.description FROM gongfu_ticket t LEFT JOIN app_user u ON t.user_id=u.id @@ -224,8 +224,8 @@ SELECT t.id,t.`no`,t.title,t.state,t.urgency,p.part_name AS 'component',t.question,t.reason ,a1.area_name AS 'areaName','' AS 'agentAreaName',d.customer_name AS 'customerName',d.agent_name AS 'agentName' ,IF(t.user_platform='admin',au.user_name,u.`name`) AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime' - ,t.create_time AS 'createTime',t.update_time AS 'completeTime',di.name AS 'warrantyStatusDesc',true AS 'followed' - ,auc.user_name AS 'cqm',t.solve_time AS 'closeTime',auh.user_name AS 'currentHandle' + ,t.create_time AS 'createTime',t.solve_time AS 'completeTime',di.name AS 'warrantyStatusDesc',true AS 'followed' + ,auc.user_name AS 'cqm',t.update_time AS 'closeTime',auh.user_name AS 'currentHandle' ,dt.cqm_person_name AS 'cqms',t.handle_name AS 'handle',t.description FROM gongfu_ticket t LEFT JOIN app_user u ON t.user_id=u.id @@ -256,9 +256,9 @@ SELECT t.id,t.`no`,t.title,t.state,t.urgency,p.part_name AS 'component',t.question,t.reason ,a1.area_name AS 'areaName','' AS 'agentAreaName',d.customer_name AS 'customerName',d.agent_name AS 'agentName' ,IF(t.user_platform='admin',au.user_name,u.`name`) AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime' - ,t.create_time AS 'createTime',t.update_time AS 'completeTime',di.name AS 'warrantyStatusDesc',d.device_type AS 'deviceType' + ,t.create_time AS 'createTime',t.solve_time AS 'completeTime',di.name AS 'warrantyStatusDesc',d.device_type AS 'deviceType' ,d.model_no AS 'equipmentModel',d.shipment_date AS 'shipmentDate',true AS 'followed',auc.user_name AS 'cqm' - ,t.solve_time AS 'closeTime',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms' + ,t.update_time AS 'closeTime',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms' ,t.handle_name AS 'handle',t.description FROM gongfu_ticket t LEFT JOIN app_user u ON t.user_id=u.id diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/TicketMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/TicketMapper.xml index 898fc3af..f8578eb3 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/TicketMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/TicketMapper.xml @@ -281,12 +281,6 @@ - -