From 173f44a1f9a59509996192e3446cbd26f2613b5e Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期五, 10 十月 2025 15:55:32 +0800
Subject: [PATCH] yys 新增关键煤种锁仓模块
---
main-business/src/main/java/com/ruoyi/business/service/impl/InspectionTaskServiceImpl.java | 235 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 233 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..2c2400a 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,36 @@
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.Supply;
+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.core.domain.entity.SysUser;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.bean.BeanUtils;
+import com.ruoyi.common.utils.file.MinioUtils;
+import com.ruoyi.system.mapper.SysUserMapper;
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 +44,210 @@
@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;
+
+ private final SysUserMapper sysUserMapper;
+
+ @Override
+ public IPage<InspectionTaskDto> selectInspectionTaskList(Page<InspectionTask> 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).toList();
+ //鐧昏浜篿ds
+ List<Long> registrantIds = entityPage.getRecords().stream().map(InspectionTask::getRegistrantId).toList();
+ // 鎵归噺鏌ヨ鐧昏浜�
+ Map<Long, SysUser> sysUserMap;
+ if (!registrantIds.isEmpty()) {
+ List<SysUser> sysUsers = sysUserMapper.selectList(registrantIds);
+ sysUserMap = sysUsers.stream().collect(Collectors.toMap(SysUser::getUserId, Function.identity()));
+ } else {
+ sysUserMap = new HashMap<>();
+ }
+ //宸℃浜篿ds
+ List<String> inspectorIds = entityPage.getRecords().stream().map(InspectionTask::getInspectorId).toList();
+
+ //鑾峰彇鎵�鏈変笉閲嶅鐨勭敤鎴稩D
+ Set<Long> allUserIds = entityPage.getRecords().stream()
+ .map(InspectionTask::getInspectorId) // 鑾峰彇"2,3"杩欐牱鐨勫瓧绗︿覆
+ .filter(StringUtils::isNotBlank)
+ .flatMap(idsStr -> Arrays.stream(idsStr.split(",")))
+ .map(idStr -> {
+ try {
+ return Long.parseLong(idStr.trim());
+ } catch (NumberFormatException e) {
+ return null;
+ }
+ })
+ .filter(Objects::nonNull)
+ .collect(Collectors.toSet());
+
+ // 浣跨敤SQL鎵归噺鏌ヨ鐢ㄦ埛淇℃伅
+ Map<Long, String> userIdToNameMap = allUserIds.isEmpty()
+ ? Collections.emptyMap()
+ : sysUserMapper.selectUsersByIds(new ArrayList<>(allUserIds))
+ .stream()
+ .collect(Collectors.toMap(
+ SysUser::getUserId,
+ SysUser::getNickName,
+ (existing, replacement) -> existing));
+
+ //澶勭悊闄勪欢
+ 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); // 澶嶅埗涓诲璞″睘鎬�
+
+ // 璁剧疆鐧昏浜�
+ SysUser sysUser = sysUserMap.get(inspectionTask.getRegistrantId());
+ if (sysUser != null) {
+ dto.setRegistrant(sysUser.getNickName());
+ }
+ // 澶勭悊宸℃浜哄悕绉�
+ if (StringUtils.isNotBlank(inspectionTask.getInspectorId())) {
+ String inspectorNames = Arrays.stream(inspectionTask.getInspectorId().split(","))
+ .map(String::trim)
+ .map(idStr -> {
+ try {
+ Long userId = Long.parseLong(idStr);
+ return userIdToNameMap.getOrDefault(userId, "鏈煡鐢ㄦ埛(" + idStr + ")");
+ } catch (NumberFormatException e) {
+ return "鏃犳晥ID(" + idStr + ")";
+ }
+ })
+ .collect(Collectors.joining(","));
+ dto.setInspector(inspectorNames);
+ }
+
+ // 鍒濆鍖栦笁涓檮浠跺垪琛�
+ 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<>();
+ BeanUtils.copyProperties(entityPage, resultPage);
+ 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) {
+ 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