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