From 71fba5328a35b449b11088e540932787220f91d8 Mon Sep 17 00:00:00 2001 From: liding <756868258@qq.com> Date: 星期三, 18 六月 2025 17:28:50 +0800 Subject: [PATCH] 1.生产加工变更库存回滚 2.巡检,档案上传完善 --- main-business/src/main/java/com/ruoyi/business/service/impl/InspectionTaskServiceImpl.java | 170 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 168 insertions(+), 2 deletions(-) diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/InspectionTaskServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/InspectionTaskServiceImpl.java index e8d378d..72f00bf 100644 --- a/main-business/src/main/java/com/ruoyi/business/service/impl/InspectionTaskServiceImpl.java +++ b/main-business/src/main/java/com/ruoyi/business/service/impl/InspectionTaskServiceImpl.java @@ -1,11 +1,32 @@ package com.ruoyi.business.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.basic.entity.StorageAttachment; +import com.ruoyi.basic.entity.StorageBlob; +import com.ruoyi.basic.entity.dto.StorageBlobDTO; +import com.ruoyi.basic.mapper.StorageAttachmentMapper; +import com.ruoyi.basic.mapper.StorageBlobMapper; +import com.ruoyi.basic.service.StorageAttachmentService; +import com.ruoyi.business.dto.InspectionTaskDto; import com.ruoyi.business.entity.InspectionTask; import com.ruoyi.business.mapper.InspectionTaskMapper; import com.ruoyi.business.service.InspectionTaskService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.common.utils.bean.BeanUtils; +import com.ruoyi.common.utils.file.MinioUtils; import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +import static com.ruoyi.common.constant.StorageAttachmentConstants.StorageAttachmentFile; +import static com.ruoyi.common.enums.StorageAttachmentRecordType.InspectionTasks; /** * <p> @@ -19,4 +40,149 @@ @RequiredArgsConstructor public class InspectionTaskServiceImpl extends ServiceImpl<InspectionTaskMapper, InspectionTask> implements InspectionTaskService { + private final InspectionTaskMapper inspectionTaskMapper; + + private final StorageAttachmentService storageAttachmentService; + + private final StorageBlobMapper storageBlobMapper; + + private final StorageAttachmentMapper storageAttachmentMapper; + + private final MinioUtils minioUtils; + + @Override + public IPage<InspectionTaskDto> selectInspectionTaskList(Page page, InspectionTaskDto inspectionTaskDto) { + LambdaQueryWrapper<InspectionTask> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.orderByDesc(InspectionTask::getCreateTime); + IPage<InspectionTask> entityPage = inspectionTaskMapper.selectPage(page, queryWrapper); + + // 鏃犳暟鎹彁鍓嶈繑鍥� + if (CollectionUtils.isEmpty(entityPage.getRecords())) { + return new Page<>(entityPage.getCurrent(), entityPage.getSize(), entityPage.getTotal()); + } + // 鑾峰彇id闆嗗悎 + List<Long> ids = entityPage.getRecords().stream().map(InspectionTask::getId).collect(Collectors.toList()); + + Map<Long, List<StorageAttachment>> attachmentsMap = storageAttachmentMapper.selectList(new LambdaQueryWrapper<StorageAttachment>().in(StorageAttachment::getRecordId, ids) + .eq(StorageAttachment::getRecordType, InspectionTasks.ordinal())) + .stream() + .collect(Collectors.groupingBy(StorageAttachment::getRecordId)); + // 鎵归噺鏌ヨ鎵�鏈夐渶瑕佺殑鏂囦欢鏁版嵁 + Set<Long> blobIds = attachmentsMap.values() + .stream() + .flatMap(List::stream) + .map(StorageAttachment::getStorageBlobId) + .collect(Collectors.toSet()); + Map<Long, StorageBlob> blobMap = blobIds.isEmpty() + ? Collections.emptyMap() + : storageBlobMapper.selectList(new LambdaQueryWrapper<StorageBlob>().in(StorageBlob::getId, blobIds)) + .stream() + .collect(Collectors.toMap(StorageBlob::getId, Function.identity())); + + List<InspectionTaskDto> dtoList = entityPage.getRecords().stream().map(inspectionTask -> { + InspectionTaskDto dto = new InspectionTaskDto(); + BeanUtils.copyProperties(inspectionTask, dto); // 澶嶅埗涓诲璞″睘鎬� + + // 鍒濆鍖栦笁涓檮浠跺垪琛� + dto.setBeforeProduction(new ArrayList<>()); + dto.setAfterProduction(new ArrayList<>()); + dto.setProductionIssues(new ArrayList<>()); + + // 澶勭悊闄勪欢鍒嗙被 + Optional.ofNullable(attachmentsMap.get(inspectionTask.getId())) + .orElse(Collections.emptyList()) + .forEach(attachment -> { + StorageBlob blob = blobMap.get(attachment.getStorageBlobId()); + if (blob != null) { + // 鍒涘缓闄勪欢DTO + StorageBlobDTO blobDto = createBlobDto(blob); + + // 鏍规嵁type鍒嗙被 + switch ((int) blob.getType().longValue()) { + case 0: + dto.getBeforeProduction().add(blobDto); + break; + case 1: + dto.getAfterProduction().add(blobDto); + break; + case 2: + dto.getProductionIssues().add(blobDto); + break; + default: + // 鍙�夛細璁板綍鏈垎绫荤被鍨� + break; + } + } + }); + + return dto; + }).collect(Collectors.toList()); + + // 7. 鏋勫缓杩斿洖鍒嗛〉瀵硅薄 + IPage<InspectionTaskDto> resultPage = new Page<>(); + resultPage.setRecords(dtoList); + return resultPage; + } + + // 鎻愬彇鍒涘缓BlobDTO鐨勫叕鍏辨柟娉� + private StorageBlobDTO createBlobDto(StorageBlob blob) { + StorageBlobDTO dto = new StorageBlobDTO(); + BeanUtils.copyProperties(blob, dto); + + // 璁剧疆URL + dto.setUrl(minioUtils.getPreviewUrls( + blob.getBucketFilename(), + blob.getBucketName(), + true + )); + + // 璁剧疆涓嬭浇URL + dto.setDownloadUrl(minioUtils.getDownloadUrls( + blob.getBucketFilename(), + blob.getBucketName(), + blob.getOriginalFilename(), + true + )); + return dto; + } + + @Override + public int addOrEditInspectionTask(InspectionTaskDto inspectionTaskDto) { + SecurityUtils.getLoginUser().getUserId(); + InspectionTask inspectionTask = new InspectionTask(); + BeanUtils.copyProperties(inspectionTaskDto, inspectionTask); + inspectionTask.setRegistrantId(SecurityUtils.getLoginUser().getUserId()); + inspectionTask.setRegistrant(SecurityUtils.getLoginUser().getUsername()); + int i; + if (Objects.isNull(inspectionTaskDto.getId())) { + i = inspectionTaskMapper.insert(inspectionTask); + } else { + i = inspectionTaskMapper.updateById(inspectionTask); + } + + if (inspectionTaskDto.getStorageBlobDTO() != null && !inspectionTaskDto.getStorageBlobDTO().isEmpty()) { + List<StorageAttachment> attachments = new ArrayList<>(); + + for (StorageBlobDTO storageBlobDTO : inspectionTaskDto.getStorageBlobDTO()) { + StorageAttachment storageAttachment = new StorageAttachment( + StorageAttachmentFile, + (long) InspectionTasks.ordinal(), + inspectionTask.getId() + ); + storageAttachment.setStorageBlobDTO(storageBlobDTO); + attachments.add(storageAttachment); + } + storageAttachmentService.saveStorageAttachment(attachments, inspectionTask.getId(), InspectionTasks, StorageAttachmentFile); + } + return i; + } + + @Override + public int delByIds(Long[] ids) { + // 妫�鏌ュ弬鏁� + if (ids == null || ids.length == 0) { + return 0; + } + return inspectionTaskMapper.deleteByIds(Arrays.asList(ids)); + } } -- Gitblit v1.9.3