feat(ticket): 优化工单信息获取功能

- 移除未读消息中工单项目统计相关代码
- 添加区域服务依赖注入和区域ID获取功能
- 实现多语言区域信息获取方法
- 在工单信息中添加区域ID和组件ID字段
- 重构工单控制器中的区域和公司名称获取逻辑
- 更新设备代理商名称获取方式
This commit is contained in:
曹鹏飞 2025-12-29 17:32:57 +08:00
parent 5e89b47d58
commit 76e3cd5c2d
8 changed files with 90 additions and 30 deletions

View File

@ -256,7 +256,7 @@ public class TicketController extends ControllerBase {
public ApiResult<TicketInfoVO> 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<AdminUser> 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)) {

View File

@ -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<AppNotReadTicketMessageCountVO> ticketItems;
// private List<AppNotReadTicketMessageCountVO> ticketItems;
}

View File

@ -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;

View File

@ -13,4 +13,6 @@ import com.nflg.mobilebroken.repository.entity.GongfuTicketArea;
public interface IGongfuTicketAreaService extends IService<GongfuTicketArea> {
String getAreaName(Long areaId, String language);
GongfuTicketArea getArea(Long areaId, String language);
}

View File

@ -32,4 +32,6 @@ public interface ITBaseCustomerService extends IService<TBaseCustomer> {
List<CompanySimpleVO> getSimpleCompanysFromAdmin(Integer userId);
Collection<String> getAreas(List<Integer> companyIds);
Collection<Integer> getAreaIds(List<Integer> companyIds);
}

View File

@ -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<AppMessageMapper, AppMess
@Override
public AppNotReadMessageCountVO getNotReadMessageCount1(Integer userId, String from) {
List<AppMessage> datas = lambdaQuery()
// List<AppMessage> 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(Math.toIntExact(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())
.count())
);
}
}

View File

@ -33,4 +33,20 @@ public class GongfuTicketAreaServiceImpl extends ServiceImpl<GongfuTicketAreaMap
.orElse(new LanguageDataRequest().setLanguageValue(area.getName()))
.getLanguageValue();
}
@Override
public GongfuTicketArea getArea(Long areaId, String language) {
GongfuTicketArea area = getById(areaId);
if (Objects.isNull(area)) {
return null;
}
area.setName(JSONUtil.toList(area.getLanguageData(), LanguageDataRequest.class)
.stream()
.filter(item -> item.getCode().equals(language))
.findFirst()
.orElse(new LanguageDataRequest().setLanguageValue(area.getName()))
.getLanguageValue()
);
return area;
}
}

View File

@ -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<TBaseCustomerMapper, T
@Resource
private IAppUserService appUserService;
@Resource
private ITBaseAreaService areaService;
public Page<TBaseCustomer> getList(@Param("page") Page<PageBaseQuery> page, @Param("query") PageBaseQuery query) {
return this.getBaseMapper().getList(page, query);
}
@ -119,4 +121,23 @@ public class TBaseCustomerServiceImpl extends ServiceImpl<TBaseCustomerMapper, T
.flatMap(name -> StrUtil.split(name, ",").stream())
.collect(Collectors.toSet());
}
@Override
public Collection<Integer> getAreaIds(List<Integer> companyIds) {
Set<String> 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());
}
}