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 ea84c91f..592c3758 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 @@ -161,6 +161,12 @@ public class TicketInfoVO { @JsonProperty("hasRejected") private Boolean hasRejected; + /** + * 是否可选择图片 + */ + @JsonProperty("canSelectImage") + private boolean canSelectImage; + /** * 产量 */ diff --git a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/DispatchController.java b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/DispatchController.java index 3b647fd5..eef6ba3c 100644 --- a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/DispatchController.java +++ b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/DispatchController.java @@ -266,6 +266,11 @@ public class DispatchController extends ControllerBase { VUtils.trueThrowBusinessError(!Objects.equals(applyfor.getCreateById(), AdminUserUtil.getUserId())) .throwMessage("你无权撤销申请"); dispatchApplyforService.removeById(id); + adminMessageService.lambdaUpdate() + .eq(AdminMessage::getSource, 2) + .eq(AdminMessage::getSourceId, id) + .eq(AdminMessage::getSubType, MessageSubType.DispatchApplyforAudit.getState()) + .remove(); return ApiResult.success(); } @@ -316,6 +321,13 @@ public class DispatchController extends ControllerBase { dispatch.setState(dispatch.getPlanStartDate().compareTo(now) >= 0 ? 1 : 0); dispatchService.updateById(dispatch); } + adminMessageService.lambdaUpdate() + .set(AdminMessage::getIsRead, true) + .eq(AdminMessage::getSource, 2) + .eq(AdminMessage::getSourceId, request.getId()) + .eq(AdminMessage::getUserId, applyfor.getCreateById()) + .eq(AdminMessage::getSubType, MessageSubType.DispatchApplyforAudit.getState()) + .update(); adminMessageService.add( new AdminMessage() .setNo(dispatch.getCode()) diff --git a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/TicketController.java b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/TicketController.java index a5f61c53..85a0b04c 100644 --- a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/TicketController.java +++ b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/TicketController.java @@ -467,6 +467,7 @@ public class TicketController extends ControllerBase { ssePushService.sendTicketMessageToAdmin(id, message); ssePushService.sendTicketMessageToApp(id, message); uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 1, Constant.FROM_ADMIN, StrUtil.splitToInt(ticket.getHandle(), ",")[0], "工单被驳回"); + stringRedisTemplate.opsForHash().delete("ticket:disbale:SelectImage", id.toString()); } return ApiResult.success(); } @@ -678,6 +679,7 @@ public class TicketController extends ControllerBase { .setType(1) .setThroughput(ticket.getThroughput()) .setHasRejected(stringRedisTemplate.hasKey(StrUtil.format(Constant.REDIS_KEY_TICKET_REJECT_RECORD, id))) + .setCanSelectImage(ticket.getState() < 3 && !stringRedisTemplate.opsForHash().hasKey("ticket:disbale:SelectImage", id.toString())) .setCustomerName(ticket.getCustomerName()); return ApiResult.success(vo); } @@ -861,6 +863,8 @@ public class TicketController extends ControllerBase { @ApiMark(moduleName = "工单管理", apiName = "保存工单解决方案措施") public ApiResult saveSolutionMeasures(@Valid @RequestBody SolutionMeasuresSaveRequest request) { ticketSolutionService.saveSolutionMeasures1(request); + stringRedisTemplate.delete(StrUtil.format(Constant.REDIS_KEY_TICKET_REJECT_RECORD, request.getTicketId())); + stringRedisTemplate.opsForHash().put("ticket:disbale:SelectImage", request.getTicketId().toString(), "1"); return ApiResult.success(); } @@ -886,6 +890,7 @@ public class TicketController extends ControllerBase { .setCreateTime(LocalDateTime.now()) ); stringRedisTemplate.opsForValue().set(StrUtil.format(Constant.REDIS_KEY_TICKET_REJECT_RECORD, ticket.getId()), DateTimeUtil.format(LocalDateTime.now())); + stringRedisTemplate.opsForHash().delete("ticket:disbale:SelectImage", request.getTicketId().toString()); } return ApiResult.success(); } @@ -912,6 +917,8 @@ public class TicketController extends ControllerBase { //推送消息 ssePushService.sendTicketMessageToAdmin(ticket.getId(), message); ssePushService.sendTicketMessageToApp(ticket.getId(), message); + stringRedisTemplate.delete(StrUtil.format(Constant.REDIS_KEY_TICKET_REJECT_RECORD, ticketId)); + stringRedisTemplate.opsForHash().delete("ticket:disbale:SelectImage", ticketId.toString()); } return ApiResult.success(); } @@ -1445,32 +1452,36 @@ public class TicketController extends ControllerBase { */ @GetMapping("getSolutionImages") public ApiResult> getSolutionImages(@RequestParam Long id) { - List images = fileUploadRecordService.lambdaQuery() + List selecteds = fileUploadRecordService.lambdaQuery() .eq(FileUploadRecord::getSource, (byte) 0) .eq(FileUploadRecord::getSourceId, id) .eq(FileUploadRecord::getTag, "案例照片") .list(); - if (CollectionUtil.isNotEmpty(images)) { - return ApiResult.success(images.stream() - .map(image -> Convert.convert(SolutionImageVO.class, image)) - .collect(Collectors.toList()) - ); + if (CollectionUtil.isNotEmpty(selecteds)) { + if (!stringRedisTemplate.hasKey(StrUtil.format(Constant.REDIS_KEY_TICKET_REJECT_RECORD, id))) { + return ApiResult.success(selecteds.stream() + .map(image -> Convert.convert(SolutionImageVO.class, image)) + .collect(Collectors.toList()) + ); + } } GongfuTicket ticket = ticketService.getById(id); VUtils.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("工单不存在"); - images = fileUploadRecordService.lambdaQuery() + List all = fileUploadRecordService.lambdaQuery() .eq(FileUploadRecord::getSource, (byte) 0) .eq(FileUploadRecord::getSourceId, id) .in(FileUploadRecord::getFileType, List.of(".jpg", ".png", ".heic", ".jpeg", ".webp")) .list(); - if (CollectionUtil.isEmpty(images)) { + if (CollectionUtil.isEmpty(all)) { return ApiResult.success(Collections.emptyList()); } - int[] mids = StrUtil.splitToInt(ticket.getImages(), ","); + Collection mids = stringRedisTemplate.hasKey(StrUtil.format(Constant.REDIS_KEY_TICKET_REJECT_RECORD, id)) + ? selecteds.stream().map(FileUploadRecord::getId).collect(Collectors.toList()) + : Arrays.stream(StrUtil.splitToInt(ticket.getImages(), ",")).boxed().collect(Collectors.toList()); return ApiResult.success( - images.stream().map(image -> { + all.stream().map(image -> { SolutionImageVO vo = Convert.convert(SolutionImageVO.class, image); - vo.setSelected(Arrays.stream(mids).anyMatch(mid -> mid == image.getId())); + vo.setSelected(mids.stream().anyMatch(mid -> Objects.equals(mid, image.getId()))); return vo; }).collect(Collectors.toList()) ); diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketSolutionAuditServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketSolutionAuditServiceImpl.java index ea58cf96..e42453ba 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketSolutionAuditServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketSolutionAuditServiceImpl.java @@ -251,9 +251,13 @@ public class TicketSolutionAuditServiceImpl extends ServiceImpl