feat(ticket): 优化工单信息获取功能
- 移除未读消息中工单项目统计相关代码 - 添加区域服务依赖注入和区域ID获取功能 - 实现多语言区域信息获取方法 - 在工单信息中添加区域ID和组件ID字段 - 重构工单控制器中的区域和公司名称获取逻辑 - 更新设备代理商名称获取方式
This commit is contained in:
parent
5e89b47d58
commit
76e3cd5c2d
|
|
@ -256,7 +256,7 @@ public class TicketController extends ControllerBase {
|
||||||
public ApiResult<TicketInfoVO> getTicket(@Valid @RequestParam @NotNull Long id) {
|
public ApiResult<TicketInfoVO> getTicket(@Valid @RequestParam @NotNull Long id) {
|
||||||
TicketDTO ticket = ticketService.getDto(id);
|
TicketDTO ticket = ticketService.getDto(id);
|
||||||
VUtils.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("未找到工单");
|
VUtils.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("未找到工单");
|
||||||
String areaName = "", companyName = "";
|
String areaId = "", areaName = "", companyName = "";
|
||||||
String userName, userAvatar;
|
String userName, userAvatar;
|
||||||
DeviceInfoVO device = deviceService.getByDeviceNo(ticket.getDeviceNo());
|
DeviceInfoVO device = deviceService.getByDeviceNo(ticket.getDeviceNo());
|
||||||
if (StrUtil.equals(ticket.getUserPlatform(), "app")) {
|
if (StrUtil.equals(ticket.getUserPlatform(), "app")) {
|
||||||
|
|
@ -265,24 +265,32 @@ public class TicketController extends ControllerBase {
|
||||||
userAvatar = user.getAvatar();
|
userAvatar = user.getAvatar();
|
||||||
if (user.getType() == 0) {
|
if (user.getType() == 0) {
|
||||||
if (user.getIsPrimary()) {
|
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())));
|
areaName = StrUtil.join(",", customerService.getAreas(Arrays.stream(user.getCompanyId().split(",")).map(Integer::parseInt).collect(Collectors.toList())));
|
||||||
} else if (Objects.nonNull(user.getAreaId())) {
|
} else if (Objects.nonNull(user.getAreaId())) {
|
||||||
AppArea area = appAreaService.getById(user.getAreaId());
|
AppArea area = appAreaService.getById(user.getAreaId());
|
||||||
if (Objects.nonNull(area)) {
|
if (Objects.nonNull(area)) {
|
||||||
|
areaId = String.valueOf(area.getId());
|
||||||
areaName = area.getName();
|
areaName = area.getName();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
companyName = StrUtil.join(",", 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()));
|
// .stream().map(TBaseCustomer::getAgencyCompanyName).collect(Collectors.toList()));
|
||||||
} else if (user.getType() == 1) {
|
} else if (user.getType() == 1) {
|
||||||
areaName = gongfuTicketAreaService.getAreaName(ticket.getAreaId(), MultilingualUtil.getLanguage());
|
// areaName = gongfuTicketAreaService.getAreaName(ticket.getAreaId(), MultilingualUtil.getLanguage());
|
||||||
companyName = device.getAgentName();
|
GongfuTicketArea area = gongfuTicketAreaService.getArea(ticket.getAreaId(), MultilingualUtil.getLanguage());
|
||||||
|
if (Objects.nonNull(area)) {
|
||||||
|
areaId = String.valueOf(area.getId());
|
||||||
|
areaName = area.getName();
|
||||||
|
}
|
||||||
|
// companyName = device.getAgentName();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
AdminUser adminUser = adminUserService.getById(ticket.getUserId());
|
AdminUser adminUser = adminUserService.getById(ticket.getUserId());
|
||||||
userName = adminUser.getUserName();
|
userName = adminUser.getUserName();
|
||||||
userAvatar = adminUser.getAvatar();
|
userAvatar = adminUser.getAvatar();
|
||||||
}
|
}
|
||||||
|
companyName = Objects.nonNull(device) ? device.getAgentName() : "";
|
||||||
String handle = ticket.getHandle();
|
String handle = ticket.getHandle();
|
||||||
if (StrUtil.isNotBlank(handle)) {
|
if (StrUtil.isNotBlank(handle)) {
|
||||||
List<AdminUser> adminUsers = adminUserService.listByIds(Arrays.stream(handle.split(",")).map(Integer::parseInt).collect(Collectors.toList()));
|
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)
|
.setCreateUserName(userName)
|
||||||
.setCreateUserAvatar(userAvatar)
|
.setCreateUserAvatar(userAvatar)
|
||||||
.setCreateTime(ticket.getCreateTime())
|
.setCreateTime(ticket.getCreateTime())
|
||||||
|
.setAreaId(areaId)
|
||||||
.setAreaName(areaName)
|
.setAreaName(areaName)
|
||||||
.setSolveTime(ticket.getSolveTime())
|
.setSolveTime(ticket.getSolveTime())
|
||||||
.setCompanyName(companyName)
|
.setCompanyName(companyName)
|
||||||
.setHandle(handle)
|
.setHandle(handle)
|
||||||
|
.setComponentId(ticket.getComponentId())
|
||||||
.setThroughput(ticket.getThroughput())
|
.setThroughput(ticket.getThroughput())
|
||||||
.setSolution(ticket.getReason())
|
.setSolution(ticket.getReason())
|
||||||
.setCustomerName(ticket.getCustomerName())
|
.setCustomerName(ticket.getCustomerName())
|
||||||
.setType(ticket.getType())
|
.setType(ticket.getType())
|
||||||
.setEvaluate(getTicketEvaluate(ticket.getId()));
|
.setEvaluate(getTicketEvaluate(ticket.getId()));
|
||||||
|
|
||||||
if (Objects.equals(ticket.getType(), 0)) {
|
if (Objects.equals(ticket.getType(), 0)) {
|
||||||
TBasePart part = partService.getByIdAndLanguage(Math.toIntExact(ticket.getComponentId()), MultilingualUtil.getLanguage());
|
TBasePart part = partService.getByIdAndLanguage(Math.toIntExact(ticket.getComponentId()), MultilingualUtil.getLanguage());
|
||||||
if (Objects.nonNull(part)) {
|
if (Objects.nonNull(part)) {
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,6 @@ package com.nflg.mobilebroken.common.pojo.vo;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Accessors(chain = true)
|
@Accessors(chain = true)
|
||||||
public class AppNotReadMessageCountVO {
|
public class AppNotReadMessageCountVO {
|
||||||
|
|
@ -15,5 +13,5 @@ public class AppNotReadMessageCountVO {
|
||||||
*/
|
*/
|
||||||
private Integer count;
|
private Integer count;
|
||||||
|
|
||||||
private List<AppNotReadTicketMessageCountVO> ticketItems;
|
// private List<AppNotReadTicketMessageCountVO> ticketItems;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,10 @@ public class TicketInfoVO {
|
||||||
//客户名称
|
//客户名称
|
||||||
private String companyName;
|
private String companyName;
|
||||||
|
|
||||||
//所属区域
|
//所属区域id,多个时逗号分隔
|
||||||
|
private String areaId;
|
||||||
|
|
||||||
|
//所属区域,多个时逗号分隔
|
||||||
private String areaName;
|
private String areaName;
|
||||||
|
|
||||||
//设备编号
|
//设备编号
|
||||||
|
|
@ -78,6 +81,9 @@ public class TicketInfoVO {
|
||||||
//质保期(月)
|
//质保期(月)
|
||||||
private Integer warrantyMonth;
|
private Integer warrantyMonth;
|
||||||
|
|
||||||
|
//问题部位id
|
||||||
|
private Long componentId;
|
||||||
|
|
||||||
//问题部位
|
//问题部位
|
||||||
private String component;
|
private String component;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,4 +13,6 @@ import com.nflg.mobilebroken.repository.entity.GongfuTicketArea;
|
||||||
public interface IGongfuTicketAreaService extends IService<GongfuTicketArea> {
|
public interface IGongfuTicketAreaService extends IService<GongfuTicketArea> {
|
||||||
|
|
||||||
String getAreaName(Long areaId, String language);
|
String getAreaName(Long areaId, String language);
|
||||||
|
|
||||||
|
GongfuTicketArea getArea(Long areaId, String language);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -32,4 +32,6 @@ public interface ITBaseCustomerService extends IService<TBaseCustomer> {
|
||||||
List<CompanySimpleVO> getSimpleCompanysFromAdmin(Integer userId);
|
List<CompanySimpleVO> getSimpleCompanysFromAdmin(Integer userId);
|
||||||
|
|
||||||
Collection<String> getAreas(List<Integer> companyIds);
|
Collection<String> getAreas(List<Integer> companyIds);
|
||||||
|
|
||||||
|
Collection<Integer> getAreaIds(List<Integer> companyIds);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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.request.AppMessageSearchRequest;
|
||||||
import com.nflg.mobilebroken.common.pojo.vo.AppMessageVO;
|
import com.nflg.mobilebroken.common.pojo.vo.AppMessageVO;
|
||||||
import com.nflg.mobilebroken.common.pojo.vo.AppNotReadMessageCountVO;
|
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.entity.AppMessage;
|
||||||
import com.nflg.mobilebroken.repository.mapper.AppMessageMapper;
|
import com.nflg.mobilebroken.repository.mapper.AppMessageMapper;
|
||||||
import com.nflg.mobilebroken.repository.service.IAdminUserService;
|
import com.nflg.mobilebroken.repository.service.IAdminUserService;
|
||||||
|
|
@ -121,22 +120,29 @@ public class AppMessageServiceImpl extends ServiceImpl<AppMessageMapper, AppMess
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AppNotReadMessageCountVO getNotReadMessageCount1(Integer userId, String from) {
|
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::getIsRead, false)
|
||||||
.eq(AppMessage::getUserId, userId)
|
.eq(AppMessage::getUserId, userId)
|
||||||
.eq(AppMessage::getUserPlatform, from)
|
.eq(AppMessage::getUserPlatform, from)
|
||||||
.list();
|
.count())
|
||||||
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())
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -33,4 +33,20 @@ public class GongfuTicketAreaServiceImpl extends ServiceImpl<GongfuTicketAreaMap
|
||||||
.orElse(new LanguageDataRequest().setLanguageValue(area.getName()))
|
.orElse(new LanguageDataRequest().setLanguageValue(area.getName()))
|
||||||
.getLanguageValue();
|
.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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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.pojo.vo.CompanySimpleVO;
|
||||||
import com.nflg.mobilebroken.common.util.VUtils;
|
import com.nflg.mobilebroken.common.util.VUtils;
|
||||||
import com.nflg.mobilebroken.repository.entity.AppUser;
|
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.entity.TBaseCustomer;
|
||||||
import com.nflg.mobilebroken.repository.mapper.TBaseCustomerMapper;
|
import com.nflg.mobilebroken.repository.mapper.TBaseCustomerMapper;
|
||||||
import com.nflg.mobilebroken.repository.service.IAppUserService;
|
import com.nflg.mobilebroken.repository.service.IAppUserService;
|
||||||
|
import com.nflg.mobilebroken.repository.service.ITBaseAreaService;
|
||||||
import com.nflg.mobilebroken.repository.service.ITBaseCustomerService;
|
import com.nflg.mobilebroken.repository.service.ITBaseCustomerService;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -34,6 +33,9 @@ public class TBaseCustomerServiceImpl extends ServiceImpl<TBaseCustomerMapper, T
|
||||||
@Resource
|
@Resource
|
||||||
private IAppUserService appUserService;
|
private IAppUserService appUserService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ITBaseAreaService areaService;
|
||||||
|
|
||||||
public Page<TBaseCustomer> getList(@Param("page") Page<PageBaseQuery> page, @Param("query") PageBaseQuery query) {
|
public Page<TBaseCustomer> getList(@Param("page") Page<PageBaseQuery> page, @Param("query") PageBaseQuery query) {
|
||||||
return this.getBaseMapper().getList(page, query);
|
return this.getBaseMapper().getList(page, query);
|
||||||
}
|
}
|
||||||
|
|
@ -119,4 +121,23 @@ public class TBaseCustomerServiceImpl extends ServiceImpl<TBaseCustomerMapper, T
|
||||||
.flatMap(name -> StrUtil.split(name, ",").stream())
|
.flatMap(name -> StrUtil.split(name, ",").stream())
|
||||||
.collect(Collectors.toSet());
|
.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());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue