refactor(ticket): 重构工单相关功能
- 优化了工单详情、PDF生成、Excel导出等功能中的文件处理逻辑 - 使用 FileUploadRecordService 替代直接操作附件 URL - 移除了冗余的 FileInfo 类,简化了文件相关数据结构 -重构了文件上传和更新逻辑,提高了代码可读性和维护性
This commit is contained in:
parent
c20c100054
commit
5c81feeb62
|
|
@ -15,7 +15,6 @@ import com.nflg.mobilebroken.common.exception.NflgException;
|
|||
import com.nflg.mobilebroken.common.pojo.ApiResult;
|
||||
import com.nflg.mobilebroken.common.pojo.PageData;
|
||||
import com.nflg.mobilebroken.common.pojo.dto.ChatMessageDTO;
|
||||
import com.nflg.mobilebroken.common.pojo.dto.FileInfo;
|
||||
import com.nflg.mobilebroken.common.pojo.request.*;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.*;
|
||||
import com.nflg.mobilebroken.common.util.*;
|
||||
|
|
@ -123,6 +122,9 @@ public class TicketController extends ControllerBase {
|
|||
@Resource
|
||||
private ITBaseDeviceTypeService deviceTypeService;
|
||||
|
||||
@Resource
|
||||
private IFileUploadRecordService fileUploadRecordService;
|
||||
|
||||
/**
|
||||
* 获取问题类型
|
||||
* @return 问题类型列表
|
||||
|
|
@ -478,21 +480,17 @@ public class TicketController extends ControllerBase {
|
|||
List<AdminUser> adminUsers = adminUserService.listByIds(Arrays.stream(handle.split(",")).map(Integer::parseInt).collect(Collectors.toList()));
|
||||
handle = adminUsers.stream().map(AdminUser::getUserName).collect(Collectors.joining(","));
|
||||
}
|
||||
List<FileInfo> images = new ArrayList<>();
|
||||
List<FileInfo> files = new ArrayList<>();
|
||||
if (StrUtil.isNotBlank(ticket.getAttachments())) {
|
||||
StrUtil.split(ticket.getAttachments(), ",").forEach(item -> {
|
||||
if (item.endsWith(".jpg") || item.endsWith(".png") || item.endsWith(".jpeg")) {
|
||||
images.add(new FileInfo(item.substring(item.lastIndexOf("/")+1),urlEncode(item)));
|
||||
} else {
|
||||
files.add(new FileInfo(item.substring(item.lastIndexOf("/")+1),urlEncode(item)));
|
||||
}
|
||||
});
|
||||
}
|
||||
if (StrUtil.isNotBlank(ticket.getImages())) {
|
||||
StrUtil.split(ticket.getImages(), ",").forEach(item -> {
|
||||
images.add(new FileInfo(item.substring(item.lastIndexOf("/")+1),item));
|
||||
});
|
||||
List<Integer> fileIds=CollectionUtil.addAll(StrUtil.split(ticket.getAttachments(),","), StrUtil.split(ticket.getImages(),","))
|
||||
.stream()
|
||||
.map(Integer::parseInt)
|
||||
.collect(Collectors.toList());
|
||||
List<String> images = new ArrayList<>();
|
||||
if (CollectionUtil.isNotEmpty(fileIds)){
|
||||
images=fileUploadRecordService.listByIds(fileIds)
|
||||
.stream()
|
||||
.map(FileUploadRecord::getUrl)
|
||||
.filter(url->url.endsWith(".jpg") || url.endsWith(".png") || url.endsWith(".jpeg"))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
TicketPdfVO vo = new TicketPdfVO()
|
||||
.setNo(ticket.getNo())
|
||||
|
|
@ -512,7 +510,7 @@ public class TicketController extends ControllerBase {
|
|||
.setReason(ticket.getReason())
|
||||
.setDeviceAddress(ticket.getDeviceAddress())
|
||||
.setImages(images)
|
||||
.setFiles(files)
|
||||
// .setFiles(files)
|
||||
.setMeasures(ticketSolutionService.getSolutionMeasures(ticket.getId()).getMeasures());
|
||||
Map<String, Object> variables = new HashMap<>();
|
||||
variables.put("ticket", vo);
|
||||
|
|
@ -545,12 +543,12 @@ public class TicketController extends ControllerBase {
|
|||
}
|
||||
}
|
||||
|
||||
private String urlEncode(String url){
|
||||
int index = url.lastIndexOf("/");
|
||||
String pre= url.substring(0,index+1);
|
||||
String end = url.substring(index+1);
|
||||
return pre+URLEncoder.encode(end, StandardCharsets.UTF_8);
|
||||
}
|
||||
// private String urlEncode(String url){
|
||||
// int index = url.lastIndexOf("/");
|
||||
// String pre= url.substring(0,index+1);
|
||||
// String end = url.substring(index+1);
|
||||
// return pre+URLEncoder.encode(end, StandardCharsets.UTF_8);
|
||||
// }
|
||||
|
||||
/**
|
||||
* 获取工单详情
|
||||
|
|
@ -603,8 +601,8 @@ public class TicketController extends ControllerBase {
|
|||
.setSolveTime(ticket.getSolveTime())
|
||||
.setDeviceTypeSub(device.getDeviceTypeSub())
|
||||
.setPrimaryUserName(device.getAgentName())
|
||||
.setImages(StrUtil.isNotBlank(ticket.getImages()) ? StrUtil.split(ticket.getImages(), ",") : Collections.emptyList())
|
||||
.setAttachments(StrUtil.isNotBlank(ticket.getAttachments()) ? StrUtil.split(ticket.getAttachments(), ",") : Collections.emptyList())
|
||||
.setImages(getFileVOs(ticket.getImages()))
|
||||
.setAttachments(getFileVOs(ticket.getAttachments()))
|
||||
.setCreateUserId(ticket.getUserId())
|
||||
.setCreateUserName(user.getName())
|
||||
.setCreateUserAvatar(user.getAvatar())
|
||||
|
|
@ -620,6 +618,16 @@ public class TicketController extends ControllerBase {
|
|||
return ApiResult.success(vo);
|
||||
}
|
||||
|
||||
private List<FileUploadVO> getFileVOs(String ids){
|
||||
if (StrUtil.isBlank(ids)){
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return fileUploadRecordService.listByIds(StrUtil.split(ids, ",").stream().map(Integer::parseInt).collect(Collectors.toList()))
|
||||
.stream()
|
||||
.map(fileUploadRecord -> new FileUploadVO(fileUploadRecord.getId(), fileUploadRecord.getFileName(), fileUploadRecord.getUrl()))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private TicketEvaluateVO getTicketEvaluate(Integer ticketId) {
|
||||
TicketEvaluate ticketEvaluate = ticketEvaluateService.lambdaQuery().eq(TicketEvaluate::getTicketId,ticketId).one();
|
||||
if (Objects.isNull(ticketEvaluate)) {
|
||||
|
|
@ -949,18 +957,17 @@ public class TicketController extends ControllerBase {
|
|||
//第七行
|
||||
Row row7 = sheet.createRow(7);
|
||||
row7.setHeightInPoints(height);
|
||||
List<FileInfo> images = new ArrayList<>();
|
||||
if (StrUtil.isNotBlank(ticket.getAttachments())) {
|
||||
StrUtil.split(ticket.getAttachments(), ",").forEach(item -> {
|
||||
if (item.endsWith(".jpg") || item.endsWith(".png") || item.endsWith(".jpeg")) {
|
||||
images.add(new FileInfo(item.substring(item.lastIndexOf("/") + 1), urlEncode(item)));
|
||||
}
|
||||
});
|
||||
}
|
||||
if (StrUtil.isNotBlank(ticket.getImages())) {
|
||||
StrUtil.split(ticket.getImages(), ",").forEach(item -> {
|
||||
images.add(new FileInfo(item.substring(item.lastIndexOf("/") + 1), item));
|
||||
});
|
||||
List<Integer> fileIds=CollectionUtil.addAll(StrUtil.split(ticket.getAttachments(),","), StrUtil.split(ticket.getImages(),","))
|
||||
.stream()
|
||||
.map(Integer::parseInt)
|
||||
.collect(Collectors.toList());
|
||||
List<String> images = new ArrayList<>();
|
||||
if (CollectionUtil.isNotEmpty(fileIds)){
|
||||
images=fileUploadRecordService.listByIds(fileIds)
|
||||
.stream()
|
||||
.map(FileUploadRecord::getUrl)
|
||||
.filter(url->url.endsWith(".jpg") || url.endsWith(".png") || url.endsWith(".jpeg"))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
int rowIndex = 6;
|
||||
int rows = images.size() % 2 == 0 ? images.size() / 2 : images.size() / 2 + 1;
|
||||
|
|
@ -976,9 +983,9 @@ public class TicketController extends ControllerBase {
|
|||
for (int i = 0; i < images.size(); i++) {
|
||||
if (i % 2 == 0) {
|
||||
rowIndex++;
|
||||
bindPic(images.get(i).getUrl(), workbook, sheet, rowIndex, 1, 6);
|
||||
bindPic(images.get(i), workbook, sheet, rowIndex, 1, 6);
|
||||
} else {
|
||||
bindPic(images.get(i).getUrl(), workbook, sheet, rowIndex, 6, 12);
|
||||
bindPic(images.get(i), workbook, sheet, rowIndex, 6, 12);
|
||||
}
|
||||
}
|
||||
if (images.size() % 2 != 0) {
|
||||
|
|
|
|||
|
|
@ -73,8 +73,8 @@
|
|||
<tr>
|
||||
<td class="desc1">图片</td>
|
||||
<td colspan="11">
|
||||
<div th:each="file:${ticket.images}">
|
||||
<img class="cimg" alt="" th:src="${file.url}"/>
|
||||
<div th:each="url:${ticket.images}">
|
||||
<img alt="" class="cimg" th:src="${url}"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
|||
|
|
@ -86,6 +86,9 @@ public class TiketController extends ControllerBase {
|
|||
@Resource
|
||||
private ITBasePartService partService;
|
||||
|
||||
@Resource
|
||||
private IFileUploadRecordService fileUploadRecordService;
|
||||
|
||||
/**
|
||||
* 搜索设备
|
||||
* @param request 搜索条件
|
||||
|
|
@ -209,8 +212,8 @@ public class TiketController extends ControllerBase {
|
|||
.setUseTime(ticket.getUseTime())
|
||||
.setDescription(ticket.getDescription())
|
||||
.setState(ticket.getState())
|
||||
.setImages(StrUtil.isNotBlank(ticket.getImages()) ? StrUtil.split(ticket.getImages(), ",") : Collections.emptyList())
|
||||
.setAttachments(StrUtil.isNotBlank(ticket.getAttachments()) ? StrUtil.split(ticket.getAttachments(), ",") : Collections.emptyList())
|
||||
.setImages(getFileVOs(ticket.getImages()))
|
||||
.setAttachments(getFileVOs(ticket.getAttachments()))
|
||||
.setCreateUserId(ticket.getUserId())
|
||||
.setCreateUserName(user.getName())
|
||||
.setCreateUserAvatar(user.getAvatar())
|
||||
|
|
@ -224,6 +227,16 @@ public class TiketController extends ControllerBase {
|
|||
return ApiResult.success(vo);
|
||||
}
|
||||
|
||||
private List<FileUploadVO> getFileVOs(String ids){
|
||||
if (StrUtil.isBlank(ids)){
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return fileUploadRecordService.listByIds(StrUtil.split(ids, ",").stream().map(Integer::parseInt).collect(Collectors.toList()))
|
||||
.stream()
|
||||
.map(fileUploadRecord -> new FileUploadVO(fileUploadRecord.getId(), fileUploadRecord.getFileName(), fileUploadRecord.getUrl()))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private TicketEvaluateVO getTicketEvaluate(Integer ticketId) {
|
||||
TicketEvaluate ticketEvaluate = ticketEvaluateService.lambdaQuery().eq(TicketEvaluate::getTicketId,ticketId).one();
|
||||
if (Objects.isNull(ticketEvaluate)) {
|
||||
|
|
|
|||
|
|
@ -87,10 +87,10 @@ public class TicketInfoVO {
|
|||
private Byte urgency;
|
||||
|
||||
//图片
|
||||
private List<String> images;
|
||||
private List<FileUploadVO> images;
|
||||
|
||||
//附件
|
||||
private List<String> attachments;
|
||||
private List<FileUploadVO> attachments;
|
||||
|
||||
//评价
|
||||
private TicketEvaluateVO evaluate;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package com.nflg.mobilebroken.common.pojo.vo;
|
||||
|
||||
import com.nflg.mobilebroken.common.constant.TicketState;
|
||||
import com.nflg.mobilebroken.common.pojo.dto.FileInfo;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
|
|
@ -58,9 +57,9 @@ public class TicketPdfVO {
|
|||
//原因分析
|
||||
private String reason;
|
||||
//图片
|
||||
private List<FileInfo> images;
|
||||
//文件
|
||||
private List<FileInfo> files;
|
||||
private List<String> images;
|
||||
// //文件
|
||||
// private List<FileInfo> files;
|
||||
|
||||
public String getUrgencyDesc() {
|
||||
if (Objects.isNull(urgency)) {
|
||||
|
|
|
|||
|
|
@ -76,8 +76,6 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, Ticket> impleme
|
|||
.setUseTime(request.getUseTime())
|
||||
.setTitle(request.getTitle())
|
||||
.setDescription(request.getDescription())
|
||||
.setImages(StrUtil.join(",", request.getImages()))
|
||||
.setAttachments(StrUtil.join(",", request.getAttachments()))
|
||||
.setState(TicketState.PendingProcessing.getState())
|
||||
.setUserId(userId)
|
||||
.setCreateTime(LocalDateTime.now());
|
||||
|
|
@ -111,11 +109,13 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, Ticket> impleme
|
|||
}
|
||||
fileUploadRecordService.updateBatchById(attachmentsRecords);
|
||||
}
|
||||
lambdaUpdate()
|
||||
.set(CollectionUtil.isNotEmpty(imagesRecords),Ticket::getImages, imagesRecords.stream().map(FileUploadRecord::getId).collect(Collectors.toList()))
|
||||
.set(CollectionUtil.isNotEmpty(attachmentsRecords),Ticket::getAttachments, attachmentsRecords.stream().map(FileUploadRecord::getId).collect(Collectors.toList()))
|
||||
.eq(Ticket::getId, ticket.getId())
|
||||
.update();
|
||||
if(CollectionUtil.isNotEmpty(imagesRecords) || CollectionUtil.isNotEmpty(attachmentsRecords)) {
|
||||
lambdaUpdate()
|
||||
.set(CollectionUtil.isNotEmpty(imagesRecords), Ticket::getImages, StrUtil.join(",",imagesRecords.stream().map(FileUploadRecord::getId).collect(Collectors.toList())))
|
||||
.set(CollectionUtil.isNotEmpty(attachmentsRecords), Ticket::getAttachments, StrUtil.join(",",attachmentsRecords.stream().map(FileUploadRecord::getId).collect(Collectors.toList())))
|
||||
.eq(Ticket::getId, ticket.getId())
|
||||
.update();
|
||||
}
|
||||
return ticket;
|
||||
}
|
||||
|
||||
|
|
@ -347,7 +347,7 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, Ticket> impleme
|
|||
|
||||
@Override
|
||||
public List<AdminUserSimpleVO> getTicketHandle(Integer id) {
|
||||
Ticket ticket=lambdaQuery().select(Ticket::getHandle).eq(Ticket::getId,id).one();
|
||||
Ticket ticket=lambdaQuery().select(Ticket::getHandle,Ticket::getId).eq(Ticket::getId,id).one();
|
||||
List<Integer> handles=StrUtil.split(ticket.getHandle(),",").stream().map(Integer::parseInt).collect(Collectors.toList());
|
||||
if (CollectionUtil.isEmpty(handles)){
|
||||
return Collections.emptyList();
|
||||
|
|
|
|||
Loading…
Reference in New Issue