From 76e3cd5c2d5ee7fca2d6ef5d372d8f7d42b6573e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Mon, 29 Dec 2025 17:32:57 +0800 Subject: [PATCH] =?UTF-8?q?feat(ticket):=20=E4=BC=98=E5=8C=96=E5=B7=A5?= =?UTF-8?q?=E5=8D=95=E4=BF=A1=E6=81=AF=E8=8E=B7=E5=8F=96=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除未读消息中工单项目统计相关代码 - 添加区域服务依赖注入和区域ID获取功能 - 实现多语言区域信息获取方法 - 在工单信息中添加区域ID和组件ID字段 - 重构工单控制器中的区域和公司名称获取逻辑 - 更新设备代理商名称获取方式 --- .../cfs/controller/TicketController.java | 21 +++++++--- .../pojo/vo/AppNotReadMessageCountVO.java | 4 +- .../common/pojo/vo/TicketInfoVO.java | 8 +++- .../service/IGongfuTicketAreaService.java | 2 + .../service/ITBaseCustomerService.java | 2 + .../service/impl/AppMessageServiceImpl.java | 38 +++++++++++-------- .../impl/GongfuTicketAreaServiceImpl.java | 16 ++++++++ .../impl/TBaseCustomerServiceImpl.java | 29 ++++++++++++-- 8 files changed, 90 insertions(+), 30 deletions(-) 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 3f5b3498..c221bd38 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 @@ -256,7 +256,7 @@ 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 = "", companyName = ""; + String areaId = "", areaName = "", companyName = ""; String userName, userAvatar; DeviceInfoVO device = deviceService.getByDeviceNo(ticket.getDeviceNo()); if (StrUtil.equals(ticket.getUserPlatform(), "app")) { @@ -265,24 +265,32 @@ public class TicketController extends ControllerBase { userAvatar = user.getAvatar(); if (user.getType() == 0) { if (user.getIsPrimary()) { + areaId = StrUtil.join(",", customerService.getAreaIds(Arrays.stream(user.getCompanyId().split(",")).map(Integer::parseInt).collect(Collectors.toList()))); areaName = StrUtil.join(",", customerService.getAreas(Arrays.stream(user.getCompanyId().split(",")).map(Integer::parseInt).collect(Collectors.toList()))); } else if (Objects.nonNull(user.getAreaId())) { AppArea area = appAreaService.getById(user.getAreaId()); if (Objects.nonNull(area)) { + areaId = String.valueOf(area.getId()); areaName = area.getName(); } } - companyName = StrUtil.join(",", customerService.listByIds(Arrays.stream(user.getCompanyId().split(",")).map(Integer::parseInt).collect(Collectors.toList())) - .stream().map(TBaseCustomer::getAgencyCompanyName).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) { - areaName = gongfuTicketAreaService.getAreaName(ticket.getAreaId(), MultilingualUtil.getLanguage()); - companyName = device.getAgentName(); +// areaName = gongfuTicketAreaService.getAreaName(ticket.getAreaId(), MultilingualUtil.getLanguage()); + GongfuTicketArea area = gongfuTicketAreaService.getArea(ticket.getAreaId(), MultilingualUtil.getLanguage()); + if (Objects.nonNull(area)) { + areaId = String.valueOf(area.getId()); + areaName = area.getName(); + } +// companyName = device.getAgentName(); } } else { AdminUser adminUser = adminUserService.getById(ticket.getUserId()); userName = adminUser.getUserName(); userAvatar = adminUser.getAvatar(); } + companyName = Objects.nonNull(device) ? device.getAgentName() : ""; String handle = ticket.getHandle(); if (StrUtil.isNotBlank(handle)) { List adminUsers = adminUserService.listByIds(Arrays.stream(handle.split(",")).map(Integer::parseInt).collect(Collectors.toList())); @@ -304,16 +312,17 @@ public class TicketController extends ControllerBase { .setCreateUserName(userName) .setCreateUserAvatar(userAvatar) .setCreateTime(ticket.getCreateTime()) + .setAreaId(areaId) .setAreaName(areaName) .setSolveTime(ticket.getSolveTime()) .setCompanyName(companyName) .setHandle(handle) + .setComponentId(ticket.getComponentId()) .setThroughput(ticket.getThroughput()) .setSolution(ticket.getReason()) .setCustomerName(ticket.getCustomerName()) .setType(ticket.getType()) .setEvaluate(getTicketEvaluate(ticket.getId())); - if (Objects.equals(ticket.getType(), 0)) { TBasePart part = partService.getByIdAndLanguage(Math.toIntExact(ticket.getComponentId()), MultilingualUtil.getLanguage()); if (Objects.nonNull(part)) { diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AppNotReadMessageCountVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AppNotReadMessageCountVO.java index 5ad8e72c..9ec1ce38 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AppNotReadMessageCountVO.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AppNotReadMessageCountVO.java @@ -3,8 +3,6 @@ package com.nflg.mobilebroken.common.pojo.vo; import lombok.Data; import lombok.experimental.Accessors; -import java.util.List; - @Data @Accessors(chain = true) public class AppNotReadMessageCountVO { @@ -15,5 +13,5 @@ public class AppNotReadMessageCountVO { */ private Integer count; - private List ticketItems; +// private List ticketItems; } 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 592c3758..e2d01b15 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 @@ -51,7 +51,10 @@ public class TicketInfoVO { //客户名称 private String companyName; - //所属区域 + //所属区域id,多个时逗号分隔 + private String areaId; + + //所属区域,多个时逗号分隔 private String areaName; //设备编号 @@ -78,6 +81,9 @@ public class TicketInfoVO { //质保期(月) private Integer warrantyMonth; + //问题部位id + private Long componentId; + //问题部位 private String component; 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 d0500bf9..d15916d1 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 @@ -13,4 +13,6 @@ import com.nflg.mobilebroken.repository.entity.GongfuTicketArea; public interface IGongfuTicketAreaService extends IService { String getAreaName(Long areaId, String language); + + GongfuTicketArea getArea(Long areaId, String language); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITBaseCustomerService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITBaseCustomerService.java index 93c1a831..a7ca6b00 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITBaseCustomerService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITBaseCustomerService.java @@ -32,4 +32,6 @@ public interface ITBaseCustomerService extends IService { List getSimpleCompanysFromAdmin(Integer userId); Collection getAreas(List companyIds); + + Collection getAreaIds(List companyIds); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppMessageServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppMessageServiceImpl.java index 207f9c47..5ff528a0 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppMessageServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppMessageServiceImpl.java @@ -9,7 +9,6 @@ import com.nflg.mobilebroken.common.constant.Constant; import com.nflg.mobilebroken.common.pojo.request.AppMessageSearchRequest; import com.nflg.mobilebroken.common.pojo.vo.AppMessageVO; import com.nflg.mobilebroken.common.pojo.vo.AppNotReadMessageCountVO; -import com.nflg.mobilebroken.common.pojo.vo.AppNotReadTicketMessageCountVO; import com.nflg.mobilebroken.repository.entity.AppMessage; import com.nflg.mobilebroken.repository.mapper.AppMessageMapper; import com.nflg.mobilebroken.repository.service.IAdminUserService; @@ -121,22 +120,29 @@ public class AppMessageServiceImpl extends ServiceImpl datas = lambdaQuery() - .eq(AppMessage::getIsRead, false) - .eq(AppMessage::getUserId, userId) - .eq(AppMessage::getUserPlatform, from) - .list(); +// List datas = lambdaQuery() +// .eq(AppMessage::getIsRead, false) +// .eq(AppMessage::getUserId, userId) +// .eq(AppMessage::getUserPlatform, from) +// .list(); +// return new AppNotReadMessageCountVO() +// .setCount(datas.size()) +// .setTicketItems(datas.stream() +// .collect(Collectors.groupingBy(AppMessage::getTicketId)) +// .values() +// .stream() +// .map(items -> new AppNotReadTicketMessageCountVO() +// .setTicketId(items.get(0).getTicketId()) +// .setCount(items.size()) +// ) +// .collect(Collectors.toList()) +// ); return new AppNotReadMessageCountVO() - .setCount(datas.size()) - .setTicketItems(datas.stream() - .collect(Collectors.groupingBy(AppMessage::getTicketId)) - .values() - .stream() - .map(items -> new AppNotReadTicketMessageCountVO() - .setTicketId(items.get(0).getTicketId()) - .setCount(items.size()) - ) - .collect(Collectors.toList()) + .setCount(Math.toIntExact(lambdaQuery() + .eq(AppMessage::getIsRead, false) + .eq(AppMessage::getUserId, userId) + .eq(AppMessage::getUserPlatform, from) + .count()) ); } } 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 0d90e412..b58e1dbb 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 @@ -33,4 +33,20 @@ public class GongfuTicketAreaServiceImpl extends ServiceImpl item.getCode().equals(language)) + .findFirst() + .orElse(new LanguageDataRequest().setLanguageValue(area.getName())) + .getLanguageValue() + ); + return area; + } } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TBaseCustomerServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TBaseCustomerServiceImpl.java index 80c5694a..a1909d4f 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TBaseCustomerServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TBaseCustomerServiceImpl.java @@ -7,18 +7,17 @@ import com.nflg.mobilebroken.common.pojo.query.PageBaseQuery; import com.nflg.mobilebroken.common.pojo.vo.CompanySimpleVO; import com.nflg.mobilebroken.common.util.VUtils; import com.nflg.mobilebroken.repository.entity.AppUser; +import com.nflg.mobilebroken.repository.entity.TBaseArea; import com.nflg.mobilebroken.repository.entity.TBaseCustomer; import com.nflg.mobilebroken.repository.mapper.TBaseCustomerMapper; import com.nflg.mobilebroken.repository.service.IAppUserService; +import com.nflg.mobilebroken.repository.service.ITBaseAreaService; import com.nflg.mobilebroken.repository.service.ITBaseCustomerService; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; /** @@ -34,6 +33,9 @@ public class TBaseCustomerServiceImpl extends ServiceImpl getList(@Param("page") Page page, @Param("query") PageBaseQuery query) { return this.getBaseMapper().getList(page, query); } @@ -119,4 +121,23 @@ public class TBaseCustomerServiceImpl extends ServiceImpl StrUtil.split(name, ",").stream()) .collect(Collectors.toSet()); } + + @Override + public Collection getAreaIds(List companyIds) { + Set areaCodes = lambdaQuery() + .eq(TBaseCustomer::getDelIs, 0) + .eq(TBaseCustomer::getEnableState, 1) + .in(TBaseCustomer::getId, companyIds) + .list() + .stream() + .map(TBaseCustomer::getAreaCode) + .collect(Collectors.toSet()); + return areaService.lambdaQuery() + .eq(TBaseArea::getDelIs, 0) + .in(TBaseArea::getAreaCode, areaCodes) + .list() + .stream() + .map(TBaseArea::getId) + .collect(Collectors.toSet()); + } }