From 027f4a17adc46f10852360bb4b1db0bc737e55a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Fri, 19 Dec 2025 16:48:14 +0800 Subject: [PATCH] =?UTF-8?q?fix(ticket-solution):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E8=A7=A3=E5=86=B3=E6=96=B9=E6=A1=88=E6=95=B0=E6=8D=AE=E5=A4=84?= =?UTF-8?q?=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 过滤解决方案项中描述为空的数据,避免无效内容保存 - 获取所有字典项后移除已处理项,确保新增项准确无遗漏 - 未处理的初始字典项批量新增解决方案实体 - 新增数据保存前删除对应旧的空描述记录,防止数据重复 - 优化代码结构,提升处理流程的清晰度和准确性 --- .../impl/TicketSolutionServiceImpl.java | 39 +++++++++++++++---- 1 file changed, 31 insertions(+), 8 deletions(-) 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 6bb675c4..f13a3055 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 @@ -93,14 +93,18 @@ public class TicketSolutionServiceImpl extends ServiceImpl new SolutionMeasuresItemVO() .setName(ks.getValue().get(0).getDictionaryItemName()) - .setItems(ks.getValue().stream().map(v -> new SolutionMeasuresDataItemVO() - .setId(Long.valueOf(v.getId())) - .setName(v.getDescription()) - .setSuperintendent(v.getSuperintendent()) - .setScheduleDate(v.getScheduleDate()) - .setConfirmedDate(v.getConfirmedDate()) - .setRemark(v.getRemark()) - .setCreateUserId(v.getCreateUserId())).collect(Collectors.toList()) + .setItems(ks.getValue() + .stream() + .filter(v -> StrUtil.isNotBlank(v.getDescription())) + .map(v -> new SolutionMeasuresDataItemVO() + .setId(Long.valueOf(v.getId())) + .setName(v.getDescription()) + .setSuperintendent(v.getSuperintendent()) + .setScheduleDate(v.getScheduleDate()) + .setConfirmedDate(v.getConfirmedDate()) + .setRemark(v.getRemark()) + .setCreateUserId(v.getCreateUserId()) + ).collect(Collectors.toList()) )).collect(Collectors.toList()); } else { for (DictionaryItem it : initial) { @@ -215,9 +219,11 @@ public class TicketSolutionServiceImpl extends ServiceImpl Objects.equals(uid, userId)) && handleIds.stream().noneMatch(uid -> Objects.equals(uid, userId))) .throwMessage("无权修改解决方案"); + List initial = dictionaryItemService.getListByDictionaryCode(Constant.DICTIONARY_SOLUTION_MEASURES, Constant.DEFAULT_LANGUAGE_CODE); List forAdd = new ArrayList<>(); List forUpdate = new ArrayList<>(); for (SolutionMeasuresItemVO solutionMeasuresItemVO : request.getSolutionMeasures()) { + initial.removeIf(it -> Objects.equals(it.getId(), solutionMeasuresItemVO.getId())); for (SolutionMeasuresDataItemVO solutionMeasuresDataItemVO : solutionMeasuresItemVO.getItems()) { TicketSolution solution = new TicketSolution() .setTicketId(request.getTicketId()) @@ -239,6 +245,17 @@ public class TicketSolutionServiceImpl extends ServiceImpl { + forAdd.add(new TicketSolution() + .setTicketId(request.getTicketId()) + .setDictionaryItemId(it.getId()) + .setDictionaryItemName(it.getName()) + .setCreateUserId(userId) + .setCreateTime(LocalDateTime.now()) + ); + }); + } List idForReserve = forUpdate.stream().map(TicketSolution::getId).collect(Collectors.toList()); List solutions = lambdaQuery().eq(TicketSolution::getTicketId, request.getTicketId()).orderByAsc(TicketSolution::getId).list(); if (!cqmIds.contains(userId)) { @@ -263,6 +280,12 @@ public class TicketSolutionServiceImpl extends ServiceImpl