From 1db111fdf6c65fa1debadf648e4c22bd466744f8 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期四, 18 六月 2026 16:59:29 +0800
Subject: [PATCH] feat: 设备台账上传图片
---
src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java | 23 +++++++
src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java | 103 ++++++++++++++++++++++++++++++---
src/main/java/com/ruoyi/device/service/IDeviceLedgerService.java | 11 +++
src/main/java/com/ruoyi/common/enums/FileNameType.java | 3
4 files changed, 127 insertions(+), 13 deletions(-)
diff --git a/src/main/java/com/ruoyi/common/enums/FileNameType.java b/src/main/java/com/ruoyi/common/enums/FileNameType.java
index 114d52d..cc6e792 100644
--- a/src/main/java/com/ruoyi/common/enums/FileNameType.java
+++ b/src/main/java/com/ruoyi/common/enums/FileNameType.java
@@ -19,7 +19,8 @@
INSPECTION(12),//宸℃ 鐢熶骇鍓�
EQUIPMENT_WARRANTY(13), // 璁惧淇濅慨
EQUIPMENT_REPAIR_PROBLEM(14), // 璁惧鎶ヤ慨-璁惧闂鍥剧墖
- EQUIPMENT_REPAIR_MAINTAIN(15); // 璁惧鎶ヤ慨-缁翠慨瀹屾垚鍥剧墖
+ EQUIPMENT_REPAIR_MAINTAIN(15), // 璁惧鎶ヤ慨-缁翠慨瀹屾垚鍥剧墖
+ EQUIPMENT_LEDGER(16); // 璁惧鍙拌处鍥剧墖
private final int value;
diff --git a/src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java b/src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java
index c206a2a..746135c 100644
--- a/src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java
+++ b/src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java
@@ -11,6 +11,7 @@
import com.ruoyi.device.service.IDeviceLedgerService;
import com.ruoyi.framework.aspectj.lang.annotation.Anonymous;
import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.sales.pojo.CommonFile;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
@@ -66,7 +67,7 @@
@DeleteMapping("/{ids}")
@ApiOperation("鍒犻櫎璁惧鍙拌处")
public AjaxResult delete(@PathVariable("ids") ArrayList<Long> ids) {
- boolean b = deviceLedgerService.removeBatchByIds(ids);
+ boolean b = deviceLedgerService.deleteLedgerAndFiles(ids);
if (!b) {
return AjaxResult.error("鍒犻櫎澶辫触");
}
@@ -109,4 +110,24 @@
deviceLedger.setCreateTime(deviceLedger.getUpdateTime().plusMonths(1));//涓嬫缁存姢鏃堕棿
return AjaxResult.success(deviceLedger);
}
+ @PostMapping("/uploadFile")
+ @ApiOperation("璁惧鍙拌处-闄勪欢涓婁紶")
+ public AjaxResult uploadFile(MultipartFile file, Long deviceLedgerId, Integer fileType) {
+ deviceLedgerService.uploadFile(file, deviceLedgerId, fileType);
+ return AjaxResult.success();
+ }
+
+ @GetMapping("/file/{deviceLedgerId}")
+ @ApiOperation("璁惧鍙拌处-鏂囦欢鍒楄〃")
+ public AjaxResult getFiles(@PathVariable("deviceLedgerId") Long deviceLedgerId) {
+ java.util.List<CommonFile> list = deviceLedgerService.getFiles(deviceLedgerId);
+ return AjaxResult.success(list);
+ }
+
+ @DeleteMapping("/file/{fileId}")
+ @ApiOperation("璁惧鍙拌处-鍒犻櫎鏂囦欢")
+ public AjaxResult deleteFile(@PathVariable("fileId") Long fileId) {
+ deviceLedgerService.deleteFile(fileId);
+ return AjaxResult.success();
+ }
}
diff --git a/src/main/java/com/ruoyi/device/service/IDeviceLedgerService.java b/src/main/java/com/ruoyi/device/service/IDeviceLedgerService.java
index 9295799..eb17107 100644
--- a/src/main/java/com/ruoyi/device/service/IDeviceLedgerService.java
+++ b/src/main/java/com/ruoyi/device/service/IDeviceLedgerService.java
@@ -6,10 +6,13 @@
import com.ruoyi.device.dto.DeviceLedgerDto;
import com.ruoyi.device.pojo.DeviceLedger;
import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.sales.pojo.CommonFile;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
+import java.util.Collection;
+import java.util.List;
public interface IDeviceLedgerService extends IService<DeviceLedger> {
IPage<DeviceLedgerDto> queryPage(Page page, DeviceLedgerDto deviceLedger);
@@ -23,4 +26,12 @@
void export(HttpServletResponse response, Long[] ids);
Boolean importData(MultipartFile file) throws IOException;
+
+ void uploadFile(MultipartFile file, Long deviceLedgerId, Integer fileType);
+
+ List<CommonFile> getFiles(Long deviceLedgerId);
+
+ void deleteFile(Long fileId);
+
+ boolean deleteLedgerAndFiles(Collection<Long> ids);
}
diff --git a/src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java b/src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java
index e781672..97e9c0f 100644
--- a/src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java
@@ -4,6 +4,8 @@
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.common.enums.FileNameType;
+import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
@@ -12,27 +14,34 @@
import com.ruoyi.device.mapper.DeviceLedgerMapper;
import com.ruoyi.device.pojo.DeviceLedger;
import com.ruoyi.device.service.IDeviceLedgerService;
+import com.ruoyi.other.service.TempFileService;
import com.ruoyi.production.mapper.ProductProcessMapper;
import com.ruoyi.production.pojo.ProductProcess;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.project.system.domain.SysUser;
import com.ruoyi.project.system.mapper.SysUserMapper;
+import com.ruoyi.sales.mapper.CommonFileMapper;
+import com.ruoyi.sales.pojo.CommonFile;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
@Service
@AllArgsConstructor
@Slf4j
-public class DeviceLedgerServiceImpl extends ServiceImpl<DeviceLedgerMapper, DeviceLedger> implements IDeviceLedgerService {
+public class DeviceLedgerServiceImpl extends ServiceImpl<DeviceLedgerMapper, DeviceLedger> implements IDeviceLedgerService {
@Autowired
private DeviceLedgerMapper deviceLedgerMapper;
@@ -54,13 +63,13 @@
return processCheckResult;
}
LambdaQueryWrapper<DeviceLedger> deviceLedgerLambdaQueryWrapper = new LambdaQueryWrapper<>();
- deviceLedgerLambdaQueryWrapper.eq(DeviceLedger::getDeviceName,deviceLedger.getDeviceName());
+ deviceLedgerLambdaQueryWrapper.eq(DeviceLedger::getDeviceName, deviceLedger.getDeviceName());
if (this.count(deviceLedgerLambdaQueryWrapper) > 0) {
return AjaxResult.error("璁惧鍚嶇О宸插瓨鍦�");
}
boolean save = this.save(deviceLedger);
- if (save){
- return AjaxResult.success();
+ if (save) {
+ return AjaxResult.success("娣诲姞鎴愬姛", deviceLedger.getId());
}
return AjaxResult.error();
}
@@ -102,22 +111,22 @@
ArrayList<DeviceLedgerExeclDto> deviceLedgerExeclDtos = new ArrayList<>();
supplierManageList.stream().forEach(deviceLedger -> {
DeviceLedgerExeclDto deviceLedgerExeclDto = new DeviceLedgerExeclDto();
- BeanUtils.copyProperties(deviceLedger,deviceLedgerExeclDto);
+ BeanUtils.copyProperties(deviceLedger, deviceLedgerExeclDto);
deviceLedgerExeclDto.setCreateUser(sysUserMapper.selectUserById(Long.valueOf(deviceLedger.getCreateUser().toString())).getUserName());
deviceLedgerExeclDtos.add(deviceLedgerExeclDto);
});
ExcelUtil<DeviceLedgerExeclDto> util = new ExcelUtil<DeviceLedgerExeclDto>(DeviceLedgerExeclDto.class);
util.exportExcel(response, deviceLedgerExeclDtos, "璁惧鍙拌处瀵煎嚭");
- }else {
+ } else {
ArrayList<Long> arrayList = new ArrayList<>();
Arrays.stream(ids).map(id -> {
- return arrayList.add( id);
+ return arrayList.add(id);
});
List<DeviceLedger> supplierManageList = deviceLedgerMapper.selectBatchIds(arrayList);
ArrayList<DeviceLedgerExeclDto> deviceLedgerExeclDtos = new ArrayList<>();
supplierManageList.stream().forEach(deviceLedger -> {
DeviceLedgerExeclDto deviceLedgerExeclDto = new DeviceLedgerExeclDto();
- BeanUtils.copyProperties(deviceLedger,deviceLedgerExeclDto);
+ BeanUtils.copyProperties(deviceLedger, deviceLedgerExeclDto);
deviceLedgerExeclDto.setCreateUser(sysUserMapper.selectUserById(Long.valueOf(deviceLedger.getCreateUser().toString())).getUserName());
deviceLedgerExeclDtos.add(deviceLedgerExeclDto);
});
@@ -134,15 +143,87 @@
userList.forEach(c -> {
DeviceLedger deviceLedger = new DeviceLedger();
SysUser sysUser = sysUserMapper.selectUserByUserName(c.getCreateUser());
- if (sysUser!=null) {
+ if (sysUser != null) {
deviceLedger.setCreateUser(sysUser.getUserId().intValue());
- }else {
+ } else {
deviceLedger.setCreateUser(SecurityUtils.getUserId().intValue());
}
- BeanUtils.copyProperties(c,deviceLedger);
+ BeanUtils.copyProperties(c, deviceLedger);
deviceLedgerMapper.insert(deviceLedger);
});
return true;
}
+
+ @Autowired
+ private CommonFileMapper commonFileMapper;
+
+ @Autowired
+ private TempFileService tempFileService;
+
+ @Override
+ public void uploadFile(MultipartFile file, Long deviceLedgerId, Integer fileType) {
+ if (file == null || file.isEmpty()) {
+ throw new ServiceException("涓婁紶澶辫触,鏂囦欢涓嶈兘涓虹┖");
+ }
+ if (deviceLedgerId == null || deviceLedgerId <= 0) {
+ throw new ServiceException("涓婁紶澶辫触,璁惧鍙拌处ID涓嶈兘涓虹┖");
+ }
+ int resolvedType = (fileType == null) ? FileNameType.EQUIPMENT_LEDGER.getValue() : fileType;
+
+ try {
+ tempFileService.uploadByCommon(file, resolvedType, deviceLedgerId);
+ } catch (Exception e) {
+ throw new ServiceException("涓婁紶澶辫触," + e.getMessage());
+ }
+ }
+
+ @Override
+ public List<CommonFile> getFiles(Long deviceLedgerId) {
+ if (deviceLedgerId == null || deviceLedgerId <= 0) {
+ return Collections.emptyList();
+ }
+
+ return commonFileMapper.selectList(new LambdaQueryWrapper<CommonFile>()
+ .eq(CommonFile::getCommonId, deviceLedgerId)
+ .eq(CommonFile::getType, FileNameType.EQUIPMENT_LEDGER.getValue())
+ .orderByAsc(CommonFile::getId));
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void deleteFile(Long fileId) {
+ if (fileId == null || fileId <= 0) {
+ throw new ServiceException("鍒犻櫎澶辫触,浼犲叆鏁版嵁寮傚父");
+ }
+ CommonFile commonFile = commonFileMapper.selectById(fileId);
+ if (commonFile == null) {
+ throw new ServiceException("鍒犻櫎澶辫触,鏂囦欢涓嶅瓨鍦�");
+ }
+ try {
+ if (commonFile.getUrl() != null && !commonFile.getUrl().isEmpty()) {
+ Files.deleteIfExists(Paths.get(commonFile.getUrl()));
+ }
+ } catch (Exception e) {
+ log.error("璁惧鍙拌处鏂囦欢鍒犻櫎澶辫触: {}", e.getMessage());
+ throw new ServiceException("鍒犻櫎澶辫触," + e.getMessage());
+ }
+ commonFileMapper.deleteById(fileId);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public boolean deleteLedgerAndFiles(java.util.Collection<Long> ids) {
+ if (ids == null || ids.isEmpty()) {
+ throw new ServiceException("鍒犻櫎澶辫触,璇蜂紶鍏ヨ鍒犻櫎鐨勬暟鎹�");
+ }
+
+ java.util.List<CommonFile> fileList = commonFileMapper.selectList(new LambdaQueryWrapper<CommonFile>()
+ .in(CommonFile::getCommonId, ids)
+ .eq(CommonFile::getType, FileNameType.EQUIPMENT_LEDGER.getValue()));
+ for (CommonFile commonFile : fileList) {
+ deleteFile(commonFile.getId());
+ }
+ return this.removeBatchByIds(ids);
+ }
}
--
Gitblit v1.9.3