台账管理 新增风机扩展属性维护功能

This commit is contained in:
huguanghan 2024-12-23 15:18:26 +08:00
parent d9f6895f25
commit 601e15d921
15 changed files with 500 additions and 9 deletions

View File

@ -37,7 +37,7 @@ public class DataController {
@PostMapping("/snapshot")
public R<Map<String,Map<String,Object>>> querySnapshotValues(@RequestBody @Valid List<SnapshotValueQueryParam> param) {
if (log.isDebugEnabled()){
log.debug("/api/rtdbsvr/snapshot is calling");
log.debug("/api/data/snapshot is calling");
log.debug("request params: {}", param);
}
return R.success(dataService.querySnapshotValues(param));
@ -51,7 +51,7 @@ public class DataController {
@PostMapping("/history")
public R<Map<String, Map<String, Map<String, Object>>>> queryTimeSeriesValues(@RequestBody @Valid TSValueQueryParam param) {
if (log.isDebugEnabled()){
log.debug("/api/rtdbsvr/history is calling");
log.debug("/api/data/history is calling");
log.debug("request params: {}", param);
}
return R.success(dataService.queryTimeSeriesValues(param));
@ -65,7 +65,7 @@ public class DataController {
@PostMapping("/windows")
public R<Map<String, Map<String, Map<String, Object>>>> queryWindowsValues(@RequestBody @Valid WindowValueQueryParam param) {
if (log.isDebugEnabled()){
log.debug("/api/rtdbsvr/windows is calling");
log.debug("/api/data/windows is calling");
log.debug("request params: {}", param);
}
return R.success(dataService.queryWindowsValues(param));

View File

@ -7,8 +7,11 @@ import com.das.common.exceptions.ServiceException;
import com.das.common.result.R;
import com.das.common.utils.PageDataInfo;
import com.das.modules.equipment.domain.dto.SysEquipmentDto;
import com.das.modules.equipment.domain.dto.SysGenExtPropsDto;
import com.das.modules.equipment.domain.vo.EquipmentTypeVo;
import com.das.modules.equipment.domain.vo.SysEquipmentVo;
import com.das.modules.equipment.entity.SysEquipmentDocs;
import com.das.modules.equipment.entity.SysGenExtProps;
import com.das.modules.equipment.service.SysEquipmentService;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@ -138,4 +141,63 @@ public class EquipmentController {
sysEquipmentService.importSysEquipment(id, file);
return R.success("导入成功");
}
/**
* 新增设备附属属性
* @return 所有附属属性
*/
@PostMapping("/extProps/add")
public R<SysGenExtProps> addSysEquipmentExtProps(@RequestBody SysGenExtPropsDto sysGenExtPropsDto) {
//判断是否有权限
boolean hasPermission = StpUtil.hasPermission(SysAuthorityIds.SYS_AUTHORITY_ID_DEVICE_MGR.toString());
if(!hasPermission){
return R.fail("没有设备管理权限");
}
return R.success(sysEquipmentService.creatSysEquipmentExtProps(sysGenExtPropsDto));
}
/**
* 更新设备附属属性
* @return 所有附属属性
*/
@PostMapping("/extProps/update")
public R<SysGenExtProps> updateSysEquipmentExtProps(@RequestBody SysGenExtPropsDto sysGenExtPropsDto) {
//判断是否有权限
boolean hasPermission = StpUtil.hasPermission(SysAuthorityIds.SYS_AUTHORITY_ID_DEVICE_MGR.toString());
if(!hasPermission){
return R.fail("没有设备管理权限");
}
return R.success(sysEquipmentService.updateSysEquipmentExtProps(sysGenExtPropsDto));
}
/**
* 更新设备附属属性
* @return 所有附属属性
*/
@PostMapping("/extProps/query")
public R<SysGenExtProps> querySysEquipmentExtProps(@RequestBody SysGenExtPropsDto sysGenExtPropsDto) {
//判断是否有权限
boolean hasPermission = StpUtil.hasPermission(SysAuthorityIds.SYS_AUTHORITY_ID_DEVICE_MGR.toString());
if(!hasPermission){
return R.fail("没有设备管理权限");
}
return R.success(sysEquipmentService.querySysEquipmentExtProps(sysGenExtPropsDto.getId()));
}
@PostMapping("/extProps/delete")
public R<SysGenExtProps> deleteSysEquipmentExtProps(@RequestBody SysGenExtPropsDto sysGenExtPropsDto) {
//判断是否有权限
boolean hasPermission = StpUtil.hasPermission(SysAuthorityIds.SYS_AUTHORITY_ID_DEVICE_MGR.toString());
if(!hasPermission){
return R.fail("没有设备管理权限");
}
sysEquipmentService.deleteSysEquipmentExtProps(sysGenExtPropsDto.getId());
return R.success();
}
@RequestMapping(value = "/file/upload", method = RequestMethod.POST)
public R<SysEquipmentDocs> addFile(Long deviceId, String folderName, MultipartFile file) {
SysEquipmentDocs upload = sysEquipmentService.upload(deviceId, folderName, file);
return R.success(upload);
}
}

View File

@ -0,0 +1,106 @@
package com.das.modules.equipment.domain.dto;
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.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class SysGenExtPropsDto {
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
private String fanName;
private String fanNumber;
private String fanType;
private String fanTypeDetails;
private String pitchSystemModel;
private String pitchSystemManufacturer;
private String pitchSystemDetails;
private String blade1Model;
private String blade1Manufacturer;
private String blade1Details;
private String blade1BearingModel;
private String blade1BearingManufacturer;
private String blade1BearingDetails;
private String blade2Model;
private String blade2Manufacturer;
private String blade2Details;
private String blade2BearingModel;
private String blade2BearingManufacturer;
private String blade2BearingDetails;
private String blade3Model;
private String blade3Manufacturer;
private String blade3Details;
private String blade3BearingModel;
private String blade3BearingManufacturer;
private String blade3BearingDetails;
private String mainBearingModel;
private String mainBearingManufacturer;
private String mainBearingDetails;
private String gearboxModel;
private String gearboxManufacturer;
private String gearboxDetails;
private String generatorModel;
private String generatorManufacturer;
private String generatorDetails;
private String converterModel;
private String converterManufacturer;
private String converterDetails;
private String mainControlSystemModel;
private String mainControlSystemManufacturer;
private String mainControlSystemSoftwareVersion;
private String mainControlSystemSoftwareVersionDetails;
private String towerBaseCabinetDetails;
private String nacelleCabinetDetails;
}

View File

@ -0,0 +1,36 @@
package com.das.modules.equipment.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@TableName("sys_equipment_docs")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class SysEquipmentDocs {
@TableId(value = "deviceid")
private Long deviceId;
@TableField(value = "name")
private String name;
@TableField(value = "url")
private String url;
/**
* 更新时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("update_time")
private Date updateTime;
}

View File

@ -0,0 +1,162 @@
package com.das.modules.equipment.entity;
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.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@TableName("sys_gen_extprops")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class SysGenExtProps {
@TableId(value = "id", type = IdType.ASSIGN_ID)
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
@TableField(value = "fan_name")
private String fanName;
@TableField(value = "fan_Number")
private String fanNumber;
@TableField(value = "fan_type")
private String fanType;
@TableField(value = "fan_type_details")
private String fanTypeDetails;
// Pitch System
@TableField(value = "pitch_system_model")
private String pitchSystemModel;
@TableField(value = "pitch_system_manufacturer")
private String pitchSystemManufacturer;
@TableField(value = "pitch_system_details")
private String pitchSystemDetails;
// Blade 1
@TableField(value = "blade1_model")
private String blade1Model;
@TableField(value = "blade1_manufacturer")
private String blade1Manufacturer;
@TableField(value = "blade1_details")
private String blade1Details;
@TableField(value = "blade1_bearing_model")
private String blade1BearingModel;
@TableField(value = "blade1_bearing_manufacturer")
private String blade1BearingManufacturer;
@TableField(value = "blade1_bearing_details")
private String blade1BearingDetails;
// Blade 2
@TableField(value = "blade2_model")
private String blade2Model;
@TableField(value = "blade2_manufacturer")
private String blade2Manufacturer;
@TableField(value = "blade2_details")
private String blade2Details;
@TableField(value = "blade2_bearing_model")
private String blade2BearingModel;
@TableField(value = "blade2_bearing_manufacturer")
private String blade2BearingManufacturer;
@TableField(value = "blade2_bearing_details")
private String blade2BearingDetails;
// Blade 3
@TableField(value = "blade3_model")
private String blade3Model;
@TableField(value = "blade3_manufacturer")
private String blade3Manufacturer;
@TableField(value = "blade3_details")
private String blade3Details;
@TableField(value = "blade3_bearing_model")
private String blade3BearingModel;
@TableField(value = "blade3_bearing_manufacturer")
private String blade3BearingManufacturer;
@TableField(value = "blade3_bearing_details")
private String blade3BearingDetails;
// Main Bearing
@TableField(value = "main_bearing_model")
private String mainBearingModel;
@TableField(value = "main_bearing_manufacturer")
private String mainBearingManufacturer;
@TableField(value = "main_bearing_details")
private String mainBearingDetails;
// Gearbox
@TableField(value = "gearbox_model")
private String gearboxModel;
@TableField(value = "gearbox_manufacturer")
private String gearboxManufacturer;
@TableField(value = "gearbox_details")
private String gearboxDetails;
// Generator
@TableField(value = "generator_model")
private String generatorModel;
@TableField(value = "generator_manufacturer")
private String generatorManufacturer;
@TableField(value = "generator_details")
private String generatorDetails;
// Converter
@TableField(value = "converter_model")
private String converterModel;
@TableField(value = "converter_manufacturer")
private String converterManufacturer;
@TableField(value = "converter_details")
private String converterDetails;
// Main Control System
@TableField(value = "main_control_system_model")
private String mainControlSystemModel;
@TableField(value = "main_control_system_manufacturer")
private String mainControlSystemManufacturer;
@TableField(value = "main_control_system_software_version")
private String mainControlSystemSoftwareVersion;
@TableField(value = "main_control_system_software_version_details")
private String mainControlSystemSoftwareVersionDetails;
// Cabinet Details
@TableField(value = "tower_base_cabinet_details")
private String towerBaseCabinetDetails;
@TableField(value = "nacelle_cabinet_details")
private String nacelleCabinetDetails;
}

View File

@ -0,0 +1,10 @@
package com.das.modules.equipment.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.das.modules.equipment.entity.SysEquipmentDocs;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface SysEquipmentDocsMapper extends BaseMapper<SysEquipmentDocs> {
}

View File

@ -0,0 +1,10 @@
package com.das.modules.equipment.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.das.modules.equipment.entity.SysGenExtProps;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface SysGenExtPropsMapper extends BaseMapper<SysGenExtProps> {
}

View File

@ -2,7 +2,10 @@ package com.das.modules.equipment.service;
import com.das.common.utils.PageDataInfo;
import com.das.modules.equipment.domain.dto.SysEquipmentDto;
import com.das.modules.equipment.domain.dto.SysGenExtPropsDto;
import com.das.modules.equipment.domain.vo.SysEquipmentVo;
import com.das.modules.equipment.entity.SysEquipmentDocs;
import com.das.modules.equipment.entity.SysGenExtProps;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;
@ -28,4 +31,13 @@ public interface SysEquipmentService {
void importSysEquipment(String parentEquipmentId,MultipartFile file) throws IOException, ParseException;
SysGenExtProps creatSysEquipmentExtProps(SysGenExtPropsDto sysGenExtPropsDto);
SysGenExtProps updateSysEquipmentExtProps(SysGenExtPropsDto sysGenExtPropsDto);
void deleteSysEquipmentExtProps(Long id);
SysGenExtProps querySysEquipmentExtProps(Long id);
SysEquipmentDocs upload(Long deviceId, String folderName, MultipartFile file);
}

View File

@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.das.common.config.SessionUtil;
import com.das.common.constant.EquipmentTypeIds;
import com.das.common.constant.FileConstants;
import com.das.common.exceptions.ServiceException;
import com.das.common.utils.BeanCopyUtils;
import com.das.common.utils.PageDataInfo;
@ -17,16 +18,26 @@ import com.das.common.utils.PageQuery;
import com.das.common.utils.SequenceUtils;
import com.das.modules.auth.domain.vo.SysUserVo;
import com.das.modules.auth.mapper.SysOrgMapper;
import com.das.modules.cache.domain.DeviceInfoCache;
import com.das.modules.cache.service.CacheService;
import com.das.modules.cache.service.EquipmentCache;
import com.das.modules.data.service.TDEngineService;
import com.das.modules.data.service.impl.DataServiceImpl;
import com.das.modules.equipment.domain.dto.SysEquipmentDto;
import com.das.modules.equipment.domain.dto.SysGenExtPropsDto;
import com.das.modules.equipment.domain.excel.SysEquipmentExcel;
import com.das.modules.equipment.domain.vo.SysEquipmentVo;
import com.das.modules.equipment.entity.SysEquipment;
import com.das.modules.equipment.entity.SysEquipmentDocs;
import com.das.modules.equipment.entity.SysGenExtProps;
import com.das.modules.equipment.mapper.SysEquipmentDocsMapper;
import com.das.modules.equipment.mapper.SysEquipmentMapper;
import com.das.modules.equipment.mapper.SysGenExtPropsMapper;
import com.das.modules.equipment.mapper.SysIotModelMapper;
import com.das.modules.equipment.service.SysEquipmentService;
import com.das.modules.fdr.config.MinioProperties;
import com.das.modules.fdr.service.MinioViewsServcie;
import jakarta.annotation.Resource;
import jakarta.servlet.ServletOutputStream;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@ -73,6 +84,21 @@ public class SysEquipmentServiceImpl implements SysEquipmentService {
@Autowired
private TDEngineService tdEngineService;
@Autowired
private SysGenExtPropsMapper sysGenExtPropsMapper;
@Autowired
private MinioViewsServcie minioViewsServcie;
@Resource
private MinioProperties minioAutoProperties;
@Autowired
private EquipmentCache equipmentCache;
@Autowired
private SysEquipmentDocsMapper sysEquipmentDocsMapper;
@Override
public SysEquipmentVo creatSysEquipment(SysEquipmentDto sysEquipmentDto) {
//去除空格
@ -358,4 +384,56 @@ public class SysEquipmentServiceImpl implements SysEquipmentService {
}
}
@Override
public SysGenExtProps creatSysEquipmentExtProps(SysGenExtPropsDto sysGenExtPropsDto) {
if (sysGenExtPropsDto.getId() == null){
throw new ServiceException("设备id不能为空");
}
SysGenExtProps sysEquipmentExtProps = new SysGenExtProps();
BeanCopyUtils.copy(sysGenExtPropsDto, sysEquipmentExtProps);
sysGenExtPropsMapper.insert(sysEquipmentExtProps);
return sysEquipmentExtProps;
}
@Override
public SysGenExtProps updateSysEquipmentExtProps(SysGenExtPropsDto sysGenExtPropsDto) {
if (sysGenExtPropsDto.getId() == null){
throw new ServiceException("设备id不能为空");
}
SysGenExtProps sysEquipmentExtProps = new SysGenExtProps();
BeanCopyUtils.copy(sysGenExtPropsDto, sysEquipmentExtProps);
sysGenExtPropsMapper.updateById(sysEquipmentExtProps);
return sysEquipmentExtProps;
}
@Override
public void deleteSysEquipmentExtProps(Long id) {
sysGenExtPropsMapper.deleteById(id);
}
@Override
public SysGenExtProps querySysEquipmentExtProps(Long id) {
return sysGenExtPropsMapper.selectById(id);
}
@Override
public SysEquipmentDocs upload(Long deviceId, String folderName, MultipartFile file) {
DeviceInfoCache deviceInfoCache = equipmentCache.getDeviceInfoCacheById(deviceId);
String parent = FileConstants.FILE_SEPARATOR +"风机图片"+ FileConstants.FILE_SEPARATOR + deviceInfoCache.getDeviceCode();
String url = minioViewsServcie.upload(minioAutoProperties.getPublicBucket(), parent, folderName, file);
String fileName = url.substring(url.lastIndexOf("/"));
SysEquipmentDocs sysEquipmentDocs = new SysEquipmentDocs();
sysEquipmentDocs.setDeviceId(deviceId);
sysEquipmentDocs.setName(fileName);
sysEquipmentDocs.setUrl(url);
sysEquipmentDocs.setUpdateTime(new Date());
SysEquipmentDocs sysEquipmentDocsInfo = sysEquipmentDocsMapper.selectById(deviceId);
if (sysEquipmentDocsInfo == null){
sysEquipmentDocsMapper.insert(sysEquipmentDocs);
}else {
sysEquipmentDocsMapper.updateById(sysEquipmentDocs);
}
return sysEquipmentDocs;
}
}

View File

@ -150,9 +150,7 @@ public class SysIotModelServiceImpl implements SysIotModelService {
PageQuery pageQuery = new PageQuery();
pageQuery.setPageNum(sysIotModelFieldDto.getPageNum());
pageQuery.setPageSize(sysIotModelFieldDto.getPageSize());
log.info("查询物模型属性参数:{}",sysIotModelFieldDto);
IPage<SysIotModelFieldVo> iPage = sysIotModelFieldMapper.querySysIotModelFieldList(pageQuery.build(), sysIotModelFieldDto);
log.info("查询物模型属性返回总数{}:{}",iPage.getTotal(),iPage.getRecords());
return PageDataInfo.build(iPage.getRecords(), iPage.getTotal());
}

View File

@ -42,6 +42,14 @@ public class MinioConfig {
createBucket(bucketName, minioClient);
}
}
String publicBucket = minioAutoProperties.getPublicBucket();
if (!checkBucket(publicBucket, minioClient)) {
log.info("文件public桶[{}]不存在, 开始检查是否可以新建桶", publicBucket);
if (minioAutoProperties.isCreateBucket()) {
log.info("createBucket为{},开始新建public文件桶", minioAutoProperties.isCreateBucket());
createBucket(publicBucket, minioClient);
}
}
log.info("文件桶[{}]已存在, minio客户端连接成功!", bucketName);
} else {
throw new RuntimeException("桶不存在, 请检查桶名称是否正确或者将checkBucket属性改为false");

View File

@ -40,6 +40,9 @@ public class MinioProperties {
@Value("${minio.bucket}")
private String bucket;
@Value("${minio.publicBucket}")
private String publicBucket;
/**
* 桶不在的时候是否新建桶
*/

View File

@ -78,7 +78,7 @@ public class MinioViewsServcie {
}
public String upload(String path, String folderName,MultipartFile file) {
public String upload(String bucketName, String path, String folderName,MultipartFile file) {
String targetFile = null;
try {
// 上传一个空对象来模拟文件夹
@ -87,14 +87,14 @@ public class MinioViewsServcie {
ByteArrayInputStream bais = new ByteArrayInputStream(new byte[0]);
minioClient.putObject(
PutObjectArgs.builder()
.bucket(minioProperties.getBucket())
.bucket(bucketName)
.object(targetFile)
.stream(bais, 0, -1)
.build());
}
else {
targetFile= path +"/" + file.getOriginalFilename();
uploadFile(minioProperties.getBucket(), file, targetFile, "application/octet-stream");
uploadFile(bucketName, file, targetFile, "application/octet-stream");
}
} catch (Exception e) {
throw new RuntimeException(e);

View File

@ -14,6 +14,7 @@ import com.das.modules.curve.mapper.TheoreticalPowerCurveMapper;
import com.das.modules.equipment.domain.excel.SheetInfoBean;
import com.das.modules.equipment.entity.SysEquipment;
import com.das.modules.equipment.mapper.SysEquipmentMapper;
import com.das.modules.fdr.config.MinioProperties;
import com.das.modules.fdr.domain.FileNode;
import com.das.modules.fdr.domain.SysFaultCodeDict;
import com.das.modules.fdr.domain.SysFaultRecordingDesc;
@ -26,6 +27,7 @@ import com.das.modules.fdr.service.FaultRecorderService;
import com.das.modules.fdr.service.MinioViewsServcie;
import io.micrometer.common.util.StringUtils;
import io.minio.MinioClient;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
@ -52,6 +54,9 @@ public class FaultRecorderServiceImpl implements FaultRecorderService {
@Autowired
MinioClient minioClient;
@Resource
private MinioProperties minioAutoProperties;
@Autowired
private SysEquipmentMapper sysEquipmentMapper;
@ -82,7 +87,7 @@ public class FaultRecorderServiceImpl implements FaultRecorderService {
@Override
public String upload(String parent, String folderName, MultipartFile file) {
return minioViewsServcie.upload(parent, folderName, file);
return minioViewsServcie.upload(minioAutoProperties.getBucket(), parent, folderName, file);
}
@Override

View File

@ -109,5 +109,6 @@ tdengine:
minio:
url: http://192.168.109.187:9000
bucket: das
publicBucket: das-public
accessKey: das
secretKey: zaq12WSX