附属属性相关接口修改

This commit is contained in:
huguanghan 2024-12-25 16:59:20 +08:00
parent 8d20d95bde
commit 15edf77a8e
5 changed files with 142 additions and 34 deletions

View File

@ -197,8 +197,8 @@ public class EquipmentController {
} }
@RequestMapping(value = "/file/upload", method = RequestMethod.POST) @RequestMapping(value = "/file/upload", method = RequestMethod.POST)
public R<List<SysEquipmentDocs>> addFile(Long deviceId, String component,String folderName, List<MultipartFile> fileList) throws Exception { public R<List<SysEquipmentDocs>> addFile(String folderName, List<MultipartFile> fileList){
List<SysEquipmentDocs> upload = sysEquipmentService.upload(deviceId, component,folderName, fileList); List<SysEquipmentDocs> upload = sysEquipmentService.upload(folderName, fileList);
return R.success(upload); return R.success(upload);
} }
@ -215,16 +215,6 @@ public class EquipmentController {
} }
response.setContentType("application/octet-stream"); response.setContentType("application/octet-stream");
sysEquipmentService.readFileToSteam(path, response.getOutputStream()); 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());
}
} }

View File

@ -4,12 +4,15 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; 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.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.util.List;
@Data @Data
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@ -67,4 +70,6 @@ public class SysGenExtPropsDto {
private String mainControlSystemManufacturer; private String mainControlSystemManufacturer;
private String mainControlSystemSoftwareVersion; private String mainControlSystemSoftwareVersion;
private List<SysEquipmentDocs> sysEquipmentDocsList;
} }

View File

@ -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<SysEquipmentDocs> sysEquipmentDocsList;
}

View File

@ -40,11 +40,9 @@ public interface SysEquipmentService {
SysGenExtProps querySysEquipmentExtProps(Long id); SysGenExtProps querySysEquipmentExtProps(Long id);
List<SysEquipmentDocs> upload(Long deviceId, String component,String folderName, List<MultipartFile> fileList) throws Exception; List<SysEquipmentDocs> upload(String folderName, List<MultipartFile> fileList);
List<SysEquipmentDocs> getFileList(Long deviceId, String component); List<SysEquipmentDocs> getFileList(Long deviceId, String component);
void readFileToSteam(String path, OutputStream stream); void readFileToSteam(String path, OutputStream stream);
void deleteFile(String path);
} }

View File

@ -9,6 +9,7 @@ import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter; import cn.hutool.poi.excel.ExcelWriter;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.das.common.config.SessionUtil; import com.das.common.config.SessionUtil;
import com.das.common.constant.EquipmentTypeIds; import com.das.common.constant.EquipmentTypeIds;
import com.das.common.constant.FileConstants; import com.das.common.constant.FileConstants;
@ -65,6 +66,7 @@ import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Service @Service
@ -403,6 +405,14 @@ public class SysEquipmentServiceImpl implements SysEquipmentService {
SysGenExtProps sysEquipmentExtProps = new SysGenExtProps(); SysGenExtProps sysEquipmentExtProps = new SysGenExtProps();
BeanCopyUtils.copy(sysGenExtPropsDto, sysEquipmentExtProps); BeanCopyUtils.copy(sysGenExtPropsDto, sysEquipmentExtProps);
sysGenExtPropsMapper.insert(sysEquipmentExtProps); sysGenExtPropsMapper.insert(sysEquipmentExtProps);
List<SysEquipmentDocs> sysEquipmentDocsList = sysGenExtPropsDto.getSysEquipmentDocsList();
if (CollectionUtils.isNotEmpty(sysEquipmentDocsList)){
for (SysEquipmentDocs item : sysEquipmentDocsList){
item.setUpdateTime(new Date());
item.setDeviceId(sysGenExtPropsDto.getId());
sysEquipmentDocsMapper.insert(item);
}
}
return sysEquipmentExtProps; return sysEquipmentExtProps;
} }
@ -414,6 +424,28 @@ public class SysEquipmentServiceImpl implements SysEquipmentService {
SysGenExtProps sysEquipmentExtProps = new SysGenExtProps(); SysGenExtProps sysEquipmentExtProps = new SysGenExtProps();
BeanCopyUtils.copy(sysGenExtPropsDto, sysEquipmentExtProps); BeanCopyUtils.copy(sysGenExtPropsDto, sysEquipmentExtProps);
sysGenExtPropsMapper.updateById(sysEquipmentExtProps); sysGenExtPropsMapper.updateById(sysEquipmentExtProps);
List<SysEquipmentDocs> sysEquipmentDocsList = sysGenExtPropsDto.getSysEquipmentDocsList();
if (CollectionUtils.isNotEmpty(sysEquipmentDocsList)){
List<SysEquipmentDocs> insertList = sysEquipmentDocsList.stream().filter(item -> item.getId() == null).collect(Collectors.toList());
sysEquipmentDocsList.removeAll(insertList);
if (CollectionUtils.isNotEmpty(sysEquipmentDocsList)){
List<Long> collect = sysEquipmentDocsList.stream().map(SysEquipmentDocs::getId).collect(Collectors.toList());
QueryWrapper<SysEquipmentDocs> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("deviceid",sysGenExtPropsDto.getId());
List<SysEquipmentDocs> sysEquipmentDocs = sysEquipmentDocsMapper.selectList(queryWrapper);
List<SysEquipmentDocs> 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; return sysEquipmentExtProps;
} }
@ -426,7 +458,13 @@ public class SysEquipmentServiceImpl implements SysEquipmentService {
List<SysEquipmentDocs> sysEquipmentDocsList = sysEquipmentDocsMapper.selectList(queryWrapper); List<SysEquipmentDocs> sysEquipmentDocsList = sysEquipmentDocsMapper.selectList(queryWrapper);
if (CollectionUtils.isNotEmpty(sysEquipmentDocsList)){ if (CollectionUtils.isNotEmpty(sysEquipmentDocsList)){
for (SysEquipmentDocs item : 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()); sysEquipmentDocsMapper.deleteById(item.getId());
} }
@ -439,22 +477,27 @@ public class SysEquipmentServiceImpl implements SysEquipmentService {
} }
@Override @Override
public List<SysEquipmentDocs> upload(Long deviceId, String component, String folderName, List<MultipartFile> fileList) throws Exception { public List<SysEquipmentDocs> upload(String folderName, List<MultipartFile> fileList){
List<SysEquipmentDocs> result = new ArrayList<>(); List<SysEquipmentDocs> result = new ArrayList<>();
for (MultipartFile file : fileList) { for (MultipartFile file : fileList) {
DeviceInfoCache deviceInfoCache = equipmentCache.getDeviceInfoCacheById(deviceId); Long picId = IdWorker.getId();
String parent = FileConstants.FILE_SEPARATOR + "WindTurbine" + FileConstants.FILE_SEPARATOR + deviceInfoCache.getDeviceCode() + FileConstants.FILE_SEPARATOR + "pic"; 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; File scale = null;
try { try {
String url = minioViewsServcie.upload(minioAutoProperties.getPublicBucket(), parent, folderName, file); minioViewsServcie.uploadFile(minioAutoProperties.getPublicBucket(), file,parent,"application/octet-stream");
scale = scale(file); scale = scale(file);
String scaleFileName = scale.getName(); String scaleParent = FileConstants.FILE_SEPARATOR + "WindTurbine" + FileConstants.FILE_SEPARATOR + "thumbnailPic" + FileConstants.FILE_SEPARATOR + fileName;
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;
minioViewsServcie.uploadTemFile(minioAutoProperties.getPublicBucket(), scale, scaleParent); minioViewsServcie.uploadTemFile(minioAutoProperties.getPublicBucket(), scale, scaleParent);
String fileName = url.substring(url.lastIndexOf("/") + 1); SysEquipmentDocs sysEquipmentDocs = new SysEquipmentDocs();
SysEquipmentDocs sysEquipmentDocs = saveDocs(deviceId, component, fileName, url); sysEquipmentDocs.setUrl(parent);
SysEquipmentDocs sysEquipmentDocsScale = saveDocs(deviceId, component, scaleName, scaleParent); SysEquipmentDocs sysEquipmentDocsScale = new SysEquipmentDocs();
sysEquipmentDocsScale.setUrl(scaleParent);
result.add(sysEquipmentDocs); result.add(sysEquipmentDocs);
result.add(sysEquipmentDocsScale); result.add(sysEquipmentDocsScale);
} catch (Exception e) { } catch (Exception e) {
@ -482,13 +525,10 @@ public class SysEquipmentServiceImpl implements SysEquipmentService {
minioViewsServcie.readFileToStream(path, stream); minioViewsServcie.readFileToStream(path, stream);
} }
@Override public void deleteFile(SysEquipmentDocs sysEquipmentDocs) {
public void deleteFile(String path) {
try { try {
minioViewsServcie.removeFile(minioAutoProperties.getPublicBucket(), path,false); sysEquipmentDocsMapper.deleteById(sysEquipmentDocs.getId());
//删除缩略图 minioViewsServcie.removeFile(minioAutoProperties.getPublicBucket(), sysEquipmentDocs.getUrl(),false);
String thumbnailPath = path.replace("pic", "thumbnailPic");
minioViewsServcie.removeFile(minioAutoProperties.getPublicBucket(), thumbnailPath,false);
}catch (Exception e){ }catch (Exception e){
log.error("文件删除失败"); log.error("文件删除失败");
} }
@ -510,20 +550,24 @@ public class SysEquipmentServiceImpl implements SysEquipmentService {
// 创建临时文件名称基于原始文件名 // 创建临时文件名称基于原始文件名
File tempFile = File.createTempFile("thumbnail_", "_" + originalFileName); File tempFile = File.createTempFile("thumbnail_", "_" + originalFileName);
InputStream inputStream = file.getInputStream(); InputStream inputStream = file.getInputStream();
File mulFile = null;
try { try {
File mulFile = new File(System.getProperty("java.io.tmpdir") + "/" + file.getOriginalFilename()); mulFile = new File(System.getProperty("java.io.tmpdir") + "/" + file.getOriginalFilename());
// 将MultipartFile写入临时文件 // 将MultipartFile写入临时文件
file.transferTo(mulFile); file.transferTo(mulFile);
// 生成缩略图 // 生成缩略图
ImgUtil.scale(mulFile, tempFile, 700, 700, null); ImgUtil.scale(mulFile, tempFile, 700, 700, null);
} finally { } finally {
IoUtil.close(inputStream); IoUtil.close(inputStream);
if (mulFile != null && mulFile.exists()){
mulFile.delete();
}
} }
return tempFile; 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 sysEquipmentDocs = new SysEquipmentDocs();
sysEquipmentDocs.setDeviceId(deviceId); sysEquipmentDocs.setDeviceId(deviceId);
sysEquipmentDocs.setName(fileName); sysEquipmentDocs.setName(fileName);