From 15edf77a8e4904017d810a219340383f7f44965a Mon Sep 17 00:00:00 2001 From: huguanghan Date: Wed, 25 Dec 2024 16:59:20 +0800 Subject: [PATCH] =?UTF-8?q?=E9=99=84=E5=B1=9E=E5=B1=9E=E6=80=A7=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/EquipmentController.java | 14 +--- .../domain/dto/SysGenExtPropsDto.java | 5 ++ .../equipment/domain/vo/SysGenExtPropsVo.java | 71 ++++++++++++++++ .../service/SysEquipmentService.java | 4 +- .../service/impl/SysEquipmentServiceImpl.java | 82 ++++++++++++++----- 5 files changed, 142 insertions(+), 34 deletions(-) create mode 100644 das/src/main/java/com/das/modules/equipment/domain/vo/SysGenExtPropsVo.java diff --git a/das/src/main/java/com/das/modules/equipment/controller/EquipmentController.java b/das/src/main/java/com/das/modules/equipment/controller/EquipmentController.java index e35f05c6..bcf6b3f2 100644 --- a/das/src/main/java/com/das/modules/equipment/controller/EquipmentController.java +++ b/das/src/main/java/com/das/modules/equipment/controller/EquipmentController.java @@ -197,8 +197,8 @@ public class EquipmentController { } @RequestMapping(value = "/file/upload", method = RequestMethod.POST) - public R> addFile(Long deviceId, String component,String folderName, List fileList) throws Exception { - List upload = sysEquipmentService.upload(deviceId, component,folderName, fileList); + public R> addFile(String folderName, List fileList){ + List upload = sysEquipmentService.upload(folderName, fileList); return R.success(upload); } @@ -215,16 +215,6 @@ public class EquipmentController { } response.setContentType("application/octet-stream"); sysEquipmentService.readFileToSteam(path, response.getOutputStream()); - } - @RequestMapping(value = "/file/delete", method = RequestMethod.GET) - public void deleteFile(String path, HttpServletResponse response) throws IOException { - if (StringUtils.isBlank(path)){ - throw new ServiceException("请输入浏览的文件路径"); - } - response.setContentType("application/octet-stream"); - sysEquipmentService.readFileToSteam(path, response.getOutputStream()); - - } } diff --git a/das/src/main/java/com/das/modules/equipment/domain/dto/SysGenExtPropsDto.java b/das/src/main/java/com/das/modules/equipment/domain/dto/SysGenExtPropsDto.java index 93887550..eda8508b 100644 --- a/das/src/main/java/com/das/modules/equipment/domain/dto/SysGenExtPropsDto.java +++ b/das/src/main/java/com/das/modules/equipment/domain/dto/SysGenExtPropsDto.java @@ -4,12 +4,15 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.das.modules.equipment.entity.SysEquipmentDocs; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.List; + @Data @NoArgsConstructor @AllArgsConstructor @@ -67,4 +70,6 @@ public class SysGenExtPropsDto { private String mainControlSystemManufacturer; private String mainControlSystemSoftwareVersion; + + private List sysEquipmentDocsList; } diff --git a/das/src/main/java/com/das/modules/equipment/domain/vo/SysGenExtPropsVo.java b/das/src/main/java/com/das/modules/equipment/domain/vo/SysGenExtPropsVo.java new file mode 100644 index 00000000..a7fb34f4 --- /dev/null +++ b/das/src/main/java/com/das/modules/equipment/domain/vo/SysGenExtPropsVo.java @@ -0,0 +1,71 @@ +package com.das.modules.equipment.domain.vo; + +import com.das.modules.equipment.entity.SysEquipmentDocs; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class SysGenExtPropsVo { + + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + private String pitchSystemModel; + + private String pitchSystemManufacturer; + + private String blade1Model; + + private String blade1Manufacturer; + + private String blade1BearingModel; + + private String blade1BearingManufacturer; + + private String blade2Model; + + private String blade2Manufacturer; + + private String blade2BearingModel; + + private String blade2BearingManufacturer; + + private String blade3Model; + + private String blade3Manufacturer; + + private String blade3BearingModel; + + private String blade3BearingManufacturer; + + private String mainBearingModel; + + private String mainBearingManufacturer; + + private String gearboxModel; + + private String gearboxManufacturer; + + private String generatorModel; + + private String generatorManufacturer; + + private String converterModel; + + private String converterManufacturer; + + private String mainControlSystemModel; + + private String mainControlSystemManufacturer; + + private String mainControlSystemSoftwareVersion; + + private List sysEquipmentDocsList; +} diff --git a/das/src/main/java/com/das/modules/equipment/service/SysEquipmentService.java b/das/src/main/java/com/das/modules/equipment/service/SysEquipmentService.java index 90ba395f..eff835c7 100644 --- a/das/src/main/java/com/das/modules/equipment/service/SysEquipmentService.java +++ b/das/src/main/java/com/das/modules/equipment/service/SysEquipmentService.java @@ -40,11 +40,9 @@ public interface SysEquipmentService { SysGenExtProps querySysEquipmentExtProps(Long id); - List upload(Long deviceId, String component,String folderName, List fileList) throws Exception; + List upload(String folderName, List fileList); List getFileList(Long deviceId, String component); void readFileToSteam(String path, OutputStream stream); - - void deleteFile(String path); } diff --git a/das/src/main/java/com/das/modules/equipment/service/impl/SysEquipmentServiceImpl.java b/das/src/main/java/com/das/modules/equipment/service/impl/SysEquipmentServiceImpl.java index 0524103c..4f772193 100644 --- a/das/src/main/java/com/das/modules/equipment/service/impl/SysEquipmentServiceImpl.java +++ b/das/src/main/java/com/das/modules/equipment/service/impl/SysEquipmentServiceImpl.java @@ -9,6 +9,7 @@ import cn.hutool.poi.excel.ExcelUtil; import cn.hutool.poi.excel.ExcelWriter; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.das.common.config.SessionUtil; import com.das.common.constant.EquipmentTypeIds; import com.das.common.constant.FileConstants; @@ -65,6 +66,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.LinkedHashMap; import java.util.List; +import java.util.stream.Collectors; @Transactional(rollbackFor = Exception.class) @Service @@ -403,6 +405,14 @@ public class SysEquipmentServiceImpl implements SysEquipmentService { SysGenExtProps sysEquipmentExtProps = new SysGenExtProps(); BeanCopyUtils.copy(sysGenExtPropsDto, sysEquipmentExtProps); sysGenExtPropsMapper.insert(sysEquipmentExtProps); + List sysEquipmentDocsList = sysGenExtPropsDto.getSysEquipmentDocsList(); + if (CollectionUtils.isNotEmpty(sysEquipmentDocsList)){ + for (SysEquipmentDocs item : sysEquipmentDocsList){ + item.setUpdateTime(new Date()); + item.setDeviceId(sysGenExtPropsDto.getId()); + sysEquipmentDocsMapper.insert(item); + } + } return sysEquipmentExtProps; } @@ -414,6 +424,28 @@ public class SysEquipmentServiceImpl implements SysEquipmentService { SysGenExtProps sysEquipmentExtProps = new SysGenExtProps(); BeanCopyUtils.copy(sysGenExtPropsDto, sysEquipmentExtProps); sysGenExtPropsMapper.updateById(sysEquipmentExtProps); + List sysEquipmentDocsList = sysGenExtPropsDto.getSysEquipmentDocsList(); + if (CollectionUtils.isNotEmpty(sysEquipmentDocsList)){ + List insertList = sysEquipmentDocsList.stream().filter(item -> item.getId() == null).collect(Collectors.toList()); + sysEquipmentDocsList.removeAll(insertList); + if (CollectionUtils.isNotEmpty(sysEquipmentDocsList)){ + List collect = sysEquipmentDocsList.stream().map(SysEquipmentDocs::getId).collect(Collectors.toList()); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("deviceid",sysGenExtPropsDto.getId()); + List sysEquipmentDocs = sysEquipmentDocsMapper.selectList(queryWrapper); + List collectDelete = sysEquipmentDocs.stream().filter(item -> !collect.contains(item.getId())).collect(Collectors.toList()); + //删除minio文件和数据库记录 + for (SysEquipmentDocs item : collectDelete){ + deleteFile(item); + } + + } + for (SysEquipmentDocs item : insertList){ + item.setUpdateTime(new Date()); + item.setDeviceId(sysGenExtPropsDto.getId()); + sysEquipmentDocsMapper.insert(item); + } + } return sysEquipmentExtProps; } @@ -426,7 +458,13 @@ public class SysEquipmentServiceImpl implements SysEquipmentService { List sysEquipmentDocsList = sysEquipmentDocsMapper.selectList(queryWrapper); if (CollectionUtils.isNotEmpty(sysEquipmentDocsList)){ for (SysEquipmentDocs item : sysEquipmentDocsList){ - deleteFile(item.getUrl()); + try { + minioViewsServcie.removeFile(minioAutoProperties.getPublicBucket(),item.getUrl(),false); + } + catch (Exception e){ + log.error("删除文件失败{}",e); + } + deleteFile(item); sysEquipmentDocsMapper.deleteById(item.getId()); } @@ -439,22 +477,27 @@ public class SysEquipmentServiceImpl implements SysEquipmentService { } @Override - public List upload(Long deviceId, String component, String folderName, List fileList) throws Exception { + public List upload(String folderName, List fileList){ List result = new ArrayList<>(); for (MultipartFile file : fileList) { - DeviceInfoCache deviceInfoCache = equipmentCache.getDeviceInfoCacheById(deviceId); - String parent = FileConstants.FILE_SEPARATOR + "WindTurbine" + FileConstants.FILE_SEPARATOR + deviceInfoCache.getDeviceCode() + FileConstants.FILE_SEPARATOR + "pic"; + Long picId = IdWorker.getId(); + String originalFilename = file.getOriginalFilename(); + if (StringUtils.isEmpty(originalFilename)){ + throw new ServiceException("文件名不存在,请检查"); + } + String suffix = originalFilename.substring(originalFilename.lastIndexOf(".")); + String fileName = picId+suffix; + String parent = FileConstants.FILE_SEPARATOR + "WindTurbine" + FileConstants.FILE_SEPARATOR + "pic" + FileConstants.FILE_SEPARATOR + fileName; File scale = null; try { - String url = minioViewsServcie.upload(minioAutoProperties.getPublicBucket(), parent, folderName, file); + minioViewsServcie.uploadFile(minioAutoProperties.getPublicBucket(), file,parent,"application/octet-stream"); scale = scale(file); - String scaleFileName = scale.getName(); - String scaleName = scaleFileName.substring(scaleFileName.lastIndexOf("_") + 1); - String scaleParent = FileConstants.FILE_SEPARATOR + "WindTurbine" + FileConstants.FILE_SEPARATOR + deviceInfoCache.getDeviceCode() + FileConstants.FILE_SEPARATOR + "thumbnailPic" + FileConstants.FILE_SEPARATOR + scaleName; + String scaleParent = FileConstants.FILE_SEPARATOR + "WindTurbine" + FileConstants.FILE_SEPARATOR + "thumbnailPic" + FileConstants.FILE_SEPARATOR + fileName; minioViewsServcie.uploadTemFile(minioAutoProperties.getPublicBucket(), scale, scaleParent); - String fileName = url.substring(url.lastIndexOf("/") + 1); - SysEquipmentDocs sysEquipmentDocs = saveDocs(deviceId, component, fileName, url); - SysEquipmentDocs sysEquipmentDocsScale = saveDocs(deviceId, component, scaleName, scaleParent); + SysEquipmentDocs sysEquipmentDocs = new SysEquipmentDocs(); + sysEquipmentDocs.setUrl(parent); + SysEquipmentDocs sysEquipmentDocsScale = new SysEquipmentDocs(); + sysEquipmentDocsScale.setUrl(scaleParent); result.add(sysEquipmentDocs); result.add(sysEquipmentDocsScale); } catch (Exception e) { @@ -482,13 +525,10 @@ public class SysEquipmentServiceImpl implements SysEquipmentService { minioViewsServcie.readFileToStream(path, stream); } - @Override - public void deleteFile(String path) { + public void deleteFile(SysEquipmentDocs sysEquipmentDocs) { try { - minioViewsServcie.removeFile(minioAutoProperties.getPublicBucket(), path,false); - //删除缩略图 - String thumbnailPath = path.replace("pic", "thumbnailPic"); - minioViewsServcie.removeFile(minioAutoProperties.getPublicBucket(), thumbnailPath,false); + sysEquipmentDocsMapper.deleteById(sysEquipmentDocs.getId()); + minioViewsServcie.removeFile(minioAutoProperties.getPublicBucket(), sysEquipmentDocs.getUrl(),false); }catch (Exception e){ log.error("文件删除失败"); } @@ -510,20 +550,24 @@ public class SysEquipmentServiceImpl implements SysEquipmentService { // 创建临时文件,名称基于原始文件名 File tempFile = File.createTempFile("thumbnail_", "_" + originalFileName); InputStream inputStream = file.getInputStream(); + File mulFile = null; try { - File mulFile = new File(System.getProperty("java.io.tmpdir") + "/" + file.getOriginalFilename()); + mulFile = new File(System.getProperty("java.io.tmpdir") + "/" + file.getOriginalFilename()); // 将MultipartFile写入临时文件 file.transferTo(mulFile); // 生成缩略图 ImgUtil.scale(mulFile, tempFile, 700, 700, null); } finally { IoUtil.close(inputStream); + if (mulFile != null && mulFile.exists()){ + mulFile.delete(); + } } return tempFile; } - public SysEquipmentDocs saveDocs(Long deviceId, String component,String fileName,String url){ + public SysEquipmentDocs deleteDocs(Long deviceId, String component,String fileName,String url){ SysEquipmentDocs sysEquipmentDocs = new SysEquipmentDocs(); sysEquipmentDocs.setDeviceId(deviceId); sysEquipmentDocs.setName(fileName);