From c8ab2314ef277fce192b79efe13dfc922be80140 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期二, 03 三月 2026 16:52:11 +0800
Subject: [PATCH] fix: 工序的工资定额可以保存为null值

---
 src/main/java/com/ruoyi/aftersalesservice/service/impl/AfterSalesServiceFileServiceImpl.java |  137 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 137 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/aftersalesservice/service/impl/AfterSalesServiceFileServiceImpl.java b/src/main/java/com/ruoyi/aftersalesservice/service/impl/AfterSalesServiceFileServiceImpl.java
new file mode 100644
index 0000000..c1e7bd5
--- /dev/null
+++ b/src/main/java/com/ruoyi/aftersalesservice/service/impl/AfterSalesServiceFileServiceImpl.java
@@ -0,0 +1,137 @@
+package com.ruoyi.aftersalesservice.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.aftersalesservice.mapper.AfterSalesServiceFileMapper;
+import com.ruoyi.aftersalesservice.pojo.AfterSalesService;
+import com.ruoyi.aftersalesservice.pojo.AfterSalesServiceFile;
+import com.ruoyi.aftersalesservice.service.AfterSalesServiceFileService;
+import com.ruoyi.aftersalesservice.service.AfterSalesServiceService;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.file.FileUtils;
+import org.apache.commons.io.FilenameUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.UUID;
+
+/**
+ * <br>
+ * 鍞悗鏈嶅姟闄勪欢琛ㄦ帴鍙e疄鐜扮被
+ * </br>
+ *
+ * @author deslrey
+ * @version 1.0
+ * @since 2026/03/02 11:19
+ */
+@Service
+public class AfterSalesServiceFileServiceImpl extends ServiceImpl<AfterSalesServiceFileMapper, AfterSalesServiceFile> implements AfterSalesServiceFileService {
+
+    @Autowired
+    private AfterSalesServiceService afterSalesServiceService;
+
+    @Value("${file.upload-dir}")
+    private String uploadDir;
+
+    @Override
+    public void fileUpload(MultipartFile file, Long afterSalesServiceId) {
+        if (file == null || file.isEmpty()) {
+            throw new ServiceException("涓婁紶鏂囦欢涓嶈兘涓虹┖");
+        }
+        if (afterSalesServiceId == null) {
+            throw new ServiceException("鍞悗鏈嶅姟ID涓嶈兘涓虹┖");
+        }
+        AfterSalesService afterSalesService = afterSalesServiceService.getById(afterSalesServiceId);
+        if (afterSalesService == null) {
+            throw new ServiceException("鍞悗鏈嶅姟璁板綍涓嶅瓨鍦�");
+        }
+        Long currentTenantId = SecurityUtils.getLoginUser().getTenantId();
+        if (!currentTenantId.equals(afterSalesService.getTenantId())) {
+            throw new ServiceException("鏃犳潈鎿嶄綔璇ュ敭鍚庢湇鍔¤褰�");
+        }
+
+        try {
+            String formalDir = uploadDir + LocalDate.now().format(DateTimeFormatter.ISO_LOCAL_DATE);
+            Path formalDirPath = Paths.get(formalDir);
+            //  姝e紡鐩綍瀛樺湪
+            if (!Files.exists(formalDirPath)) {
+                Files.createDirectories(formalDirPath);
+            }
+            //  姝e紡鏂囦欢鍚嶏紙鍖呭惈涓氬姟ID + 鏃堕棿鎴� + UUID锛�
+            String originalFilename = file.getOriginalFilename();
+            String fileExtension = FilenameUtils.getExtension(originalFilename);
+            String formalFilename = afterSalesServiceId + "_" +
+                    System.currentTimeMillis() + "_" +
+                    UUID.randomUUID().toString().substring(0, 8) +
+                    (StringUtils.hasText(fileExtension) ? "." + fileExtension : "");
+
+            Path formalFilePath = formalDirPath.resolve(formalFilename);
+            file.transferTo(formalFilePath.toFile());
+
+            AfterSalesServiceFile serviceFile = new AfterSalesServiceFile();
+            serviceFile.setServiceId(afterSalesServiceId);
+            serviceFile.setFileName(originalFilename);
+            serviceFile.setFileUrl(formalFilePath.toString());
+            serviceFile.setFileSize(file.getSize());
+            serviceFile.setFileSuffix(fileExtension);
+            serviceFile.setDelFlag("0");
+            serviceFile.setCreateUser(SecurityUtils.getUserId());
+            serviceFile.setCreateTime(LocalDateTime.now());
+            serviceFile.setTenantId(currentTenantId);
+            save(serviceFile);
+        } catch (Exception e) {
+            throw new ServiceException("鏂囦欢涓婁紶澶辫触锛�" + e.getMessage());
+        }
+    }
+
+    @Override
+    public IPage<AfterSalesServiceFile> fileList(Page<AfterSalesServiceFile> page, Long afterSalesServiceId) {
+        if (afterSalesServiceId == null) {
+            throw new ServiceException("鍞悗鏈嶅姟ID涓嶈兘涓虹┖");
+        }
+
+        LambdaQueryWrapper<AfterSalesServiceFile> wrapper = new LambdaQueryWrapper<>();
+        wrapper.select(
+                AfterSalesServiceFile::getId,
+                AfterSalesServiceFile::getFileName,
+                AfterSalesServiceFile::getFileUrl
+        );
+        wrapper.eq(AfterSalesServiceFile::getServiceId, afterSalesServiceId)
+                .eq(AfterSalesServiceFile::getDelFlag, "0")
+                .orderByDesc(AfterSalesServiceFile::getCreateTime);
+
+        return page(page, wrapper);
+    }
+
+    @Override
+    public void delFile(Long fileId) {
+        if (fileId == null) {
+            throw new ServiceException("闄勪欢ID涓嶈兘涓虹┖");
+        }
+
+        Long tenantId = SecurityUtils.getLoginUser().getTenantId();
+
+        AfterSalesServiceFile file = getById(fileId);
+        if (file == null) {
+            throw new ServiceException("闄勪欢涓嶅瓨鍦�");
+        }
+        if (!tenantId.equals(file.getTenantId())) {
+            throw new ServiceException("鏃犳潈闄愬垹闄�");
+        }
+        removeById(fileId);
+
+        FileUtils.deleteFile(file.getFileUrl());
+    }
+}

--
Gitblit v1.9.3