附属属性相关接口修改

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)
public R<List<SysEquipmentDocs>> addFile(Long deviceId, String component,String folderName, List<MultipartFile> fileList) throws Exception {
List<SysEquipmentDocs> upload = sysEquipmentService.upload(deviceId, component,folderName, fileList);
public R<List<SysEquipmentDocs>> addFile(String folderName, List<MultipartFile> fileList){
List<SysEquipmentDocs> 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());
}
}

View File

@ -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<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);
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);
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 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<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;
}
@ -414,6 +424,28 @@ public class SysEquipmentServiceImpl implements SysEquipmentService {
SysGenExtProps sysEquipmentExtProps = new SysGenExtProps();
BeanCopyUtils.copy(sysGenExtPropsDto, 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;
}
@ -426,7 +458,13 @@ public class SysEquipmentServiceImpl implements SysEquipmentService {
List<SysEquipmentDocs> 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<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<>();
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);