From 499444f6b018d1c8d12fbfb11a5a413abd23e490 Mon Sep 17 00:00:00 2001 From: hongawen <83944980@qq.com> Date: Thu, 2 Mar 2023 15:36:30 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 16 ++++++++-------- .../majornetwork/Impl/TransientServiceImpl.java | 9 --------- 2 files changed, 8 insertions(+), 17 deletions(-) diff --git a/pom.xml b/pom.xml index fb613a012..25a9777db 100644 --- a/pom.xml +++ b/pom.xml @@ -42,20 +42,21 @@ - - 192.168.1.31 + + 192.168.1.13 - + 192.168.1.111 192.168.1.13 ${middle.server.url}:18848 - - - - + + fd74182b-1fce-4dba-afa7-2623b0376205 + + + ${middle.server.url}:8080 @@ -86,7 +87,6 @@ 2.1.3 1.2.5 8.0.19 - 2.4.0 21.6.0.0 21.1.0.0 3.4.2 diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/TransientServiceImpl.java b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/TransientServiceImpl.java index 0cd693df9..249b42321 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/TransientServiceImpl.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/TransientServiceImpl.java @@ -173,15 +173,6 @@ public class TransientServiceImpl implements TransientService { EventDetail eventDetailByTime = eventDetailService.getEventDetailByTime(lineId, timeId); String ip = lineDetailData.getIp(); String waveName = eventDetailByTime.getWaveName(); - // TransientVO transientVO = transientMapper.getTransientDataById(lineId); - // String name = transientVO.getName(); - // String substation = transientVO.getSubstation(); - // Double eventValue = new BigDecimal(eventDetailByTime.getEventValue()).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue(); - // Double v = new BigDecimal(eventValue*100).setScale(0,BigDecimal.ROUND_HALF_UP).doubleValue(); - // Double persistTime = eventDetailByTime.getPersistTime()/1000; - - // waveDataVO.setName("变电站名称: "+ substation +" 监测点名称: "+ name +" 发生时刻: "+ timeId +" 暂降幅值: "+ v +"% 持续时间: "+ persistTime +"s"); - // waveDataVO.setTargetName("相电压有效值"); AnalyWave analyWave = new AnalyWave(); WaveDataDTO comtrade = analyWave.getComtrade(generalInfo.getBusinessWavePath() + File.separator + ip + File.separator + waveName + ".CFG", 1); if (Objects.isNull(comtrade.getComtradeCfgDTO())) { From d8eb9dccb67a27ac3faf3f20bc03e8200b22e0e1 Mon Sep 17 00:00:00 2001 From: hongawen <83944980@qq.com> Date: Thu, 2 Mar 2023 15:37:52 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../event/service/majornetwork/Impl/TransientServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/TransientServiceImpl.java b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/TransientServiceImpl.java index 249b42321..b2eaaeba9 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/TransientServiceImpl.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/TransientServiceImpl.java @@ -174,6 +174,7 @@ public class TransientServiceImpl implements TransientService { String ip = lineDetailData.getIp(); String waveName = eventDetailByTime.getWaveName(); AnalyWave analyWave = new AnalyWave(); + // 从本地读取该事件的波形 WaveDataDTO comtrade = analyWave.getComtrade(generalInfo.getBusinessWavePath() + File.separator + ip + File.separator + waveName + ".CFG", 1); if (Objects.isNull(comtrade.getComtradeCfgDTO())) { throw new BusinessException(EventResponseEnum.ANALYSEWAVE_NOT_FOUND); From c2c3fd9fd6102c752092c9a5746e140cb90e492c Mon Sep 17 00:00:00 2001 From: hongawen <83944980@qq.com> Date: Mon, 6 Mar 2023 16:03:57 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E9=9B=86=E6=88=90?= =?UTF-8?q?=E5=8D=8E=E4=B8=BAobs=E6=9F=A5=E7=9C=8B=E6=B3=A2=E5=BD=A2?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/njcn/common/config/GeneralInfo.java | 9 + .../common/pojo/constant/GeneralConstant.java | 24 + .../njcn/common/pojo/constant/OssPath.java | 26 + .../enums/response/CommonResponseEnum.java | 1 + .../TransientStasticDataController.java | 54 - .../majornetwork/TransientPmsService.java | 21 - .../impl/TransientPmsServiceImpl.java | 144 -- .../njcn/event/enums/EventResponseEnum.java | 3 + .../njcn/event}/pojo/dto/wave/AnalogDTO.java | 2 +- .../event}/pojo/dto/wave/ComtradeCfgDTO.java | 10 +- .../njcn/event}/pojo/dto/wave/DigitalDTO.java | 2 +- .../event}/pojo/dto/wave/EigenvalueDTO.java | 3 +- .../event}/pojo/dto/wave/MutationDTO.java | 2 +- .../njcn/event}/pojo/dto/wave/RateDTO.java | 2 +- .../event}/pojo/dto/wave/SamplingDTO.java | 2 +- .../event}/pojo/dto/wave/SamplingsDTO.java | 2 +- .../event}/pojo/dto/wave/WaveDataDTO.java | 2 +- .../java/com/njcn/event/pojo/po/WavePath.java | 21 - pqs-event/event-boot/pom.xml | 12 + .../majornetwork/MonitorPointController.java | 19 - .../majornetwork/TransientController.java | 2 +- .../majornetwork/EventAnalysisService.java | 9 +- .../Impl/EventAnalysisServiceImpl.java | 52 +- .../Impl/EventDetailServiceImpl.java | 2 +- .../Impl/TransientServiceImpl.java | 102 +- .../majornetwork/TransientService.java | 2 +- .../com/njcn/event/utils/BitConverter.java | 81 ++ .../java/com/njcn/event/utils/WaveUtil.java | 1164 +++++++++-------- .../src/main/resources/bootstrap.yml | 1 + .../njcn/event/EventBootApplicationTest.java | 80 +- pqs-harmonic/harmonic-boot/pom.xml | 7 + pqs-job/job-executor/src/test/java/Test1.java | 2 +- 32 files changed, 938 insertions(+), 927 deletions(-) create mode 100644 pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/GeneralConstant.java create mode 100644 pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/OssPath.java delete mode 100644 pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/majornetwork/TransientStasticDataController.java delete mode 100644 pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/TransientPmsService.java delete mode 100644 pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/TransientPmsServiceImpl.java rename {pqs-common/common-core/src/main/java/com/njcn/common => pqs-event/event-api/src/main/java/com/njcn/event}/pojo/dto/wave/AnalogDTO.java (96%) rename {pqs-common/common-core/src/main/java/com/njcn/common => pqs-event/event-api/src/main/java/com/njcn/event}/pojo/dto/wave/ComtradeCfgDTO.java (88%) rename {pqs-common/common-core/src/main/java/com/njcn/common => pqs-event/event-api/src/main/java/com/njcn/event}/pojo/dto/wave/DigitalDTO.java (93%) rename {pqs-common/common-core/src/main/java/com/njcn/common => pqs-event/event-api/src/main/java/com/njcn/event}/pojo/dto/wave/EigenvalueDTO.java (90%) rename {pqs-common/common-core/src/main/java/com/njcn/common => pqs-event/event-api/src/main/java/com/njcn/event}/pojo/dto/wave/MutationDTO.java (94%) rename {pqs-common/common-core/src/main/java/com/njcn/common => pqs-event/event-api/src/main/java/com/njcn/event}/pojo/dto/wave/RateDTO.java (91%) rename {pqs-common/common-core/src/main/java/com/njcn/common => pqs-event/event-api/src/main/java/com/njcn/event}/pojo/dto/wave/SamplingDTO.java (95%) rename {pqs-common/common-core/src/main/java/com/njcn/common => pqs-event/event-api/src/main/java/com/njcn/event}/pojo/dto/wave/SamplingsDTO.java (92%) rename {pqs-common/common-core/src/main/java/com/njcn/common => pqs-event/event-api/src/main/java/com/njcn/event}/pojo/dto/wave/WaveDataDTO.java (95%) delete mode 100644 pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/WavePath.java create mode 100644 pqs-event/event-boot/src/main/java/com/njcn/event/utils/BitConverter.java rename pqs-common/common-core/src/main/java/com/njcn/common/utils/wave/AnalyWave.java => pqs-event/event-boot/src/main/java/com/njcn/event/utils/WaveUtil.java (57%) diff --git a/pqs-common/common-core/src/main/java/com/njcn/common/config/GeneralInfo.java b/pqs-common/common-core/src/main/java/com/njcn/common/config/GeneralInfo.java index b962b65a5..56f6bea43 100644 --- a/pqs-common/common-core/src/main/java/com/njcn/common/config/GeneralInfo.java +++ b/pqs-common/common-core/src/main/java/com/njcn/common/config/GeneralInfo.java @@ -36,4 +36,13 @@ public class GeneralInfo { @Value("${business.tempPath}") private String businessTempPath; + /*** + * 文件存储方式 + * 1:本地磁盘 + * 2:华为obs + * 3: minioss + */ + @Value("${business.file.storage}") + private int businessFileStorage; + } diff --git a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/GeneralConstant.java b/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/GeneralConstant.java new file mode 100644 index 000000000..f3501bc3f --- /dev/null +++ b/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/GeneralConstant.java @@ -0,0 +1,24 @@ +package com.njcn.common.pojo.constant; + +/** + * @author hongawen + * @version 1.0.0 + * @date 2023年03月06日 11:07 + */ +public interface GeneralConstant { + + /*** + * 文件存储的3种方式 + */ + Integer LOCAL_DISK = 1; + Integer HUAWEI_OBS = 2; + Integer MINIO_OSS = 3; + + /*** + * 波形文件的3种后缀 + */ + String CFG =".CFG"; + String DAT =".DAT"; + String HDR =".HDR"; + +} diff --git a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/OssPath.java b/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/OssPath.java new file mode 100644 index 000000000..eaddd037f --- /dev/null +++ b/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/OssPath.java @@ -0,0 +1,26 @@ +package com.njcn.common.pojo.constant; + +/** + * @author hongawen + * @version 1.0.0 + * @date 2023年03月03日 16:29 + */ +public interface OssPath { + + /*** + * 波形文件 + */ + String WAVE_DIR="comtrade/"; + + /*** + * 稳态报表 + */ + String HARMONIC_EXCEL_REPORT="harmonic/excel/report"; + + /*** + * 稳态报表模板 + */ + String HARMONIC_EXCEL_TEMPLATE="harmonic/excel/template"; + + +} diff --git a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/enums/response/CommonResponseEnum.java b/pqs-common/common-core/src/main/java/com/njcn/common/pojo/enums/response/CommonResponseEnum.java index 65e744d85..c76a2c16c 100644 --- a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/enums/response/CommonResponseEnum.java +++ b/pqs-common/common-core/src/main/java/com/njcn/common/pojo/enums/response/CommonResponseEnum.java @@ -91,6 +91,7 @@ public enum CommonResponseEnum { ID_NOT_EXIST("A0100", "id不存在"), TIME_ERROR("A0101","时间格式有误"), + CLOSE_RESOURCE_ERROR("A0102","关闭资源有误"), ; diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/majornetwork/TransientStasticDataController.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/majornetwork/TransientStasticDataController.java deleted file mode 100644 index c4bc3f45e..000000000 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/majornetwork/TransientStasticDataController.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.njcn.device.pms.controller.majornetwork; - - -import com.njcn.common.pojo.annotation.OperateInfo; -import com.njcn.common.pojo.dto.wave.WaveDataDTO; -import com.njcn.common.pojo.enums.common.LogEnum; -import com.njcn.common.pojo.enums.response.CommonResponseEnum; -import com.njcn.common.pojo.response.HttpResult; -import com.njcn.common.utils.HttpResultUtil; -import com.njcn.device.pms.service.majornetwork.TransientPmsService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiImplicitParams; -import io.swagger.annotations.ApiOperation; -import lombok.AllArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; - -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; -import com.njcn.web.controller.BaseController; - -/** - * 暂态事件列表(PMS暂用) - * @author hongawen - * @since 2022-10-14 - */ -@Validated -@Slf4j -@RestController -@RequestMapping("/pms/transientStasticData") -@Api(tags = "暂态事件列表(PMS暂用)") -@AllArgsConstructor -public class TransientStasticDataController extends BaseController { - - private final TransientPmsService transientPmsService; - - @OperateInfo(info = LogEnum.BUSINESS_COMMON) - @PostMapping("/getTransientAnalyseWavePms") - @ApiOperation("暂态事件波形分析") - @ApiImplicitParams({ - @ApiImplicitParam(name = "timeId", value = "暂态时刻", required = true), - @ApiImplicitParam(name = "lineId", value = "暂态监测点Id", required = true), - @ApiImplicitParam(name = "lineType", value = "暂态监测点类型(1主网 2配网)", required = true) - }) - public HttpResult getTransientAnalyseWavePms(@RequestParam("timeId") String timeId, @RequestParam("lineId") String lineId, @RequestParam("lineType") Integer lineType){ - String methodDescribe = getMethodDescribe("getTransientAnalyseWavePms"); - WaveDataDTO wave = transientPmsService.getTransientAnalyseWavePms(timeId, lineId,lineType); - return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, wave, methodDescribe); - } -} - diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/TransientPmsService.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/TransientPmsService.java deleted file mode 100644 index 7dc9ff7d2..000000000 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/TransientPmsService.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.njcn.device.pms.service.majornetwork; - -import com.njcn.common.pojo.dto.wave.WaveDataDTO; - -/** - * TransientPmsService - * - * @author qijian - * @version 1.0.0 - * @createTime 2022/12/14 - 15:09 - */ -public interface TransientPmsService { - /** - * 功能描述: 暂态事件波形分析 - * @param timeId - * @param lineId - * @param lineType - * @return - */ - WaveDataDTO getTransientAnalyseWavePms(String timeId, String lineId, Integer lineType); -} diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/TransientPmsServiceImpl.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/TransientPmsServiceImpl.java deleted file mode 100644 index 5482a5786..000000000 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/TransientPmsServiceImpl.java +++ /dev/null @@ -1,144 +0,0 @@ -package com.njcn.device.pms.service.majornetwork.impl; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.njcn.common.config.GeneralInfo; -import com.njcn.common.pojo.dto.wave.WaveDataDTO; -import com.njcn.common.pojo.enums.common.ServerEnum; -import com.njcn.common.pojo.exception.BusinessException; -import com.njcn.common.pojo.response.HttpResult; -import com.njcn.common.utils.PubUtils; -import com.njcn.common.utils.wave.AnalyWave; -import com.njcn.device.pms.api.DistributionMonitorClient; -import com.njcn.device.pms.api.MonitorClient; -import com.njcn.device.pms.mapper.majornetwork.DistributionMonitorMapper; -import com.njcn.device.pms.mapper.majornetwork.MonitorMapper; -import com.njcn.device.pms.mapper.majornetwork.TerminalMapper; -import com.njcn.device.pms.pojo.po.DistributionMonitor; -import com.njcn.device.pms.pojo.po.Monitor; -import com.njcn.device.pms.pojo.po.PmsTerminal; -import com.njcn.device.pms.service.majornetwork.EventDetailPmsService; -import com.njcn.device.pms.service.majornetwork.IMonitorService; -import com.njcn.device.pms.service.majornetwork.TransientPmsService; -import com.njcn.device.pq.api.GeneralDeviceInfoClient; -import com.njcn.device.pq.api.LineFeignClient; -import com.njcn.device.pq.enums.DeviceResponseEnum; -import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO; -import com.njcn.device.pq.pojo.vo.AreaLineInfoVO; -import com.njcn.device.pq.pojo.vo.LineDetailDataVO; -import com.njcn.event.enums.EventResponseEnum; -import com.njcn.event.pojo.param.TransientParam; -import com.njcn.event.pojo.param.WaveFileParam; -import com.njcn.event.pojo.po.EventDetail; -import com.njcn.event.pojo.po.EventDetailNew; -import com.njcn.event.pojo.vo.TransientVO; -import com.njcn.influxdb.mapper.InfluxDBResultMapperCn; -import com.njcn.influxdb.param.InfluxDBPublicParam; -import com.njcn.influxdb.utils.InfluxDBCommUtils; -import com.njcn.influxdb.utils.InfluxDbUtils; -import com.njcn.system.api.DicDataFeignClient; -import com.njcn.system.enums.DicDataTypeEnum; -import com.njcn.system.pojo.po.DictData; -import lombok.AllArgsConstructor; -import org.influxdb.dto.QueryResult; -import org.springframework.stereotype.Service; -import org.springframework.util.CollectionUtils; - -import javax.servlet.http.HttpServletResponse; -import java.io.*; -import java.math.BigDecimal; -import java.text.DecimalFormat; -import java.time.Instant; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; -import java.util.zip.ZipEntry; -import java.util.zip.ZipOutputStream; - -/** - * @author: chenchao - * @date: 2022/03/29 14:37 - * @Description: <描述> - */ -@Service -@AllArgsConstructor -public class TransientPmsServiceImpl implements TransientPmsService { - - private final GeneralDeviceInfoClient generalDeviceInfoClient; - - private final DicDataFeignClient dicDataFeignClient; - - private final EventDetailPmsService eventDetailPmsService; - - private final GeneralInfo generalInfo; - - private final DistributionMonitorMapper distributionMonitorMapper; - - private final MonitorMapper monitorMapper; - - private final TerminalMapper terminalMapper; - - @Override - public WaveDataDTO getTransientAnalyseWavePms(String timeId, String lineId,Integer lineType) { - //初始化 - WaveDataDTO waveDataDTO; - PmsTerminal pmsTerminal; - DictData dictData; - String ip = null; - String ptTypeName = null; - Float pt1 = null; - Float pt2 = null; - Float ct1 = null; - Float ct2 = null; - - //根据监测点id获取信息(1主网 2配网) - if (lineType == 1){ - Monitor monitor = monitorMapper.selectById(lineId); - //获取ip - pmsTerminal = terminalMapper.selectById(monitor.getTerminalId()); - ip = pmsTerminal.getIp(); - //获取接线方式 - dictData = dicDataFeignClient.getDicDataById(monitor.getTerminalWiringMethod()).getData(); - ptTypeName = dictData.getName(); - //获取pt、ct - pt1 = monitor.getPt1(); - pt2 = monitor.getPt1(); - ct1 = monitor.getCt1(); - ct2 = monitor.getCt2(); - }else{ - DistributionMonitor distributionMonitor = distributionMonitorMapper.selectById(lineId); - //获取ip - pmsTerminal = terminalMapper.selectById(distributionMonitor.getTerminalId()); - ip = pmsTerminal.getIp(); - //获取接线方式 - dictData = dicDataFeignClient.getDicDataById(distributionMonitor.getTerminalWiringMethod()).getData(); - ptTypeName = dictData.getName(); - //获取pt、ct - pt1 = distributionMonitor.getPt1(); - pt2 = distributionMonitor.getPt1(); - ct1 = distributionMonitor.getCt1(); - ct2 = distributionMonitor.getCt2(); - } - - EventDetail eventDetailByTime = eventDetailPmsService.getEventDetailByTime(lineId, timeId); - String waveName = eventDetailByTime.getWaveName(); - - AnalyWave analyWave = new AnalyWave(); - WaveDataDTO comtrade = analyWave.getComtrade(generalInfo.getBusinessWavePath() + File.separator + ip + File.separator + waveName + ".CFG", 1); - if (Objects.isNull(comtrade.getComtradeCfgDTO())) { - throw new BusinessException(EventResponseEnum.ANALYSEWAVE_NOT_FOUND); - } - waveDataDTO = analyWave.getValidData(comtrade); - waveDataDTO.setPtType(PubUtils.ptTypeName(ptTypeName)); - waveDataDTO.setPt((double) (pt1 / pt2)); - waveDataDTO.setCt((double) (ct1 / ct2)); - return waveDataDTO; - } - -} diff --git a/pqs-event/event-api/src/main/java/com/njcn/event/enums/EventResponseEnum.java b/pqs-event/event-api/src/main/java/com/njcn/event/enums/EventResponseEnum.java index a4e1dda2e..a8577149a 100644 --- a/pqs-event/event-api/src/main/java/com/njcn/event/enums/EventResponseEnum.java +++ b/pqs-event/event-api/src/main/java/com/njcn/event/enums/EventResponseEnum.java @@ -17,6 +17,9 @@ public enum EventResponseEnum { EVENT_COMMON_ERROR("A00650","暂降模块异常"), EVENT_NOT_FOUND("A00651","暂降事件或监测点不存在"), ANALYSEWAVE_NOT_FOUND("A00652","波形文件找不到"), + WAVE_DATA_INVALID("A00654","波形文件数据缺失"), + DAT_DATA_ERROR("A00653","dat文件数据读取失败"), + RMS_DATA_ERROR("A00653","rms数据读取失败"), /** diff --git a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/wave/AnalogDTO.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/dto/wave/AnalogDTO.java similarity index 96% rename from pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/wave/AnalogDTO.java rename to pqs-event/event-api/src/main/java/com/njcn/event/pojo/dto/wave/AnalogDTO.java index 07ea390f7..e135eb0ae 100644 --- a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/wave/AnalogDTO.java +++ b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/dto/wave/AnalogDTO.java @@ -1,4 +1,4 @@ -package com.njcn.common.pojo.dto.wave; +package com.njcn.event.pojo.dto.wave; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/wave/ComtradeCfgDTO.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/dto/wave/ComtradeCfgDTO.java similarity index 88% rename from pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/wave/ComtradeCfgDTO.java rename to pqs-event/event-api/src/main/java/com/njcn/event/pojo/dto/wave/ComtradeCfgDTO.java index 1d9a21f5a..d583823b5 100644 --- a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/wave/ComtradeCfgDTO.java +++ b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/dto/wave/ComtradeCfgDTO.java @@ -1,6 +1,5 @@ -package com.njcn.common.pojo.dto.wave; +package com.njcn.event.pojo.dto.wave; -import cn.hutool.core.date.DateTime; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -41,6 +40,11 @@ public class ComtradeCfgDTO implements Serializable { // 最终采样率,计算的时候只用一个采样率 private Long finalSampleRate; // 整个波形大小 - private Long nAllWaveNum = 0l; + private Long nAllWaveNum = 0L; + + /*** + * 赋值编码格式(二进制) + */ + private String strBinType; } diff --git a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/wave/DigitalDTO.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/dto/wave/DigitalDTO.java similarity index 93% rename from pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/wave/DigitalDTO.java rename to pqs-event/event-api/src/main/java/com/njcn/event/pojo/dto/wave/DigitalDTO.java index 77ab65333..32c6d4c95 100644 --- a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/wave/DigitalDTO.java +++ b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/dto/wave/DigitalDTO.java @@ -1,4 +1,4 @@ -package com.njcn.common.pojo.dto.wave; +package com.njcn.event.pojo.dto.wave; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/wave/EigenvalueDTO.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/dto/wave/EigenvalueDTO.java similarity index 90% rename from pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/wave/EigenvalueDTO.java rename to pqs-event/event-api/src/main/java/com/njcn/event/pojo/dto/wave/EigenvalueDTO.java index fdcb25227..e4faf5d4f 100644 --- a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/wave/EigenvalueDTO.java +++ b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/dto/wave/EigenvalueDTO.java @@ -1,11 +1,10 @@ -package com.njcn.common.pojo.dto.wave; +package com.njcn.event.pojo.dto.wave; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; -import java.util.List; /** * @author yxb diff --git a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/wave/MutationDTO.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/dto/wave/MutationDTO.java similarity index 94% rename from pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/wave/MutationDTO.java rename to pqs-event/event-api/src/main/java/com/njcn/event/pojo/dto/wave/MutationDTO.java index dde936d01..10c24f928 100644 --- a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/wave/MutationDTO.java +++ b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/dto/wave/MutationDTO.java @@ -1,4 +1,4 @@ -package com.njcn.common.pojo.dto.wave; +package com.njcn.event.pojo.dto.wave; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/wave/RateDTO.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/dto/wave/RateDTO.java similarity index 91% rename from pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/wave/RateDTO.java rename to pqs-event/event-api/src/main/java/com/njcn/event/pojo/dto/wave/RateDTO.java index cd67cd677..6fdbce05a 100644 --- a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/wave/RateDTO.java +++ b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/dto/wave/RateDTO.java @@ -1,4 +1,4 @@ -package com.njcn.common.pojo.dto.wave; +package com.njcn.event.pojo.dto.wave; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/wave/SamplingDTO.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/dto/wave/SamplingDTO.java similarity index 95% rename from pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/wave/SamplingDTO.java rename to pqs-event/event-api/src/main/java/com/njcn/event/pojo/dto/wave/SamplingDTO.java index 36c4a5e6c..d04250d24 100644 --- a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/wave/SamplingDTO.java +++ b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/dto/wave/SamplingDTO.java @@ -1,4 +1,4 @@ -package com.njcn.common.pojo.dto.wave; +package com.njcn.event.pojo.dto.wave; import lombok.AllArgsConstructor; diff --git a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/wave/SamplingsDTO.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/dto/wave/SamplingsDTO.java similarity index 92% rename from pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/wave/SamplingsDTO.java rename to pqs-event/event-api/src/main/java/com/njcn/event/pojo/dto/wave/SamplingsDTO.java index 65f86d90f..1d5393af9 100644 --- a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/wave/SamplingsDTO.java +++ b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/dto/wave/SamplingsDTO.java @@ -1,4 +1,4 @@ -package com.njcn.common.pojo.dto.wave; +package com.njcn.event.pojo.dto.wave; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/wave/WaveDataDTO.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/dto/wave/WaveDataDTO.java similarity index 95% rename from pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/wave/WaveDataDTO.java rename to pqs-event/event-api/src/main/java/com/njcn/event/pojo/dto/wave/WaveDataDTO.java index 3fc199e3f..ada34ad7b 100644 --- a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/wave/WaveDataDTO.java +++ b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/dto/wave/WaveDataDTO.java @@ -1,4 +1,4 @@ -package com.njcn.common.pojo.dto.wave; +package com.njcn.event.pojo.dto.wave; import lombok.AllArgsConstructor; diff --git a/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/WavePath.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/WavePath.java deleted file mode 100644 index e350848ab..000000000 --- a/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/WavePath.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.njcn.event.pojo.po; - -import lombok.Data; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; - -/** - * @version 1.0.0 - * @author: chenchao - * @date: 2022/06/28 19:41 - */ -@Data -@Component -public class WavePath { - - - @Value("${business.wavePath}") - private String wavePath; - - -} diff --git a/pqs-event/event-boot/pom.xml b/pqs-event/event-boot/pom.xml index 3ba8bf31b..27dc8d35e 100644 --- a/pqs-event/event-boot/pom.xml +++ b/pqs-event/event-boot/pom.xml @@ -72,6 +72,18 @@ pq-device-api ${project.version} + + + com.njcn + huawei-obs-springboot-starter + ${project.version} + + + com.squareup.okio + okio + 2.8.0 + + diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/controller/majornetwork/MonitorPointController.java b/pqs-event/event-boot/src/main/java/com/njcn/event/controller/majornetwork/MonitorPointController.java index 128bea687..fe1bae09d 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/controller/majornetwork/MonitorPointController.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/controller/majornetwork/MonitorPointController.java @@ -3,7 +3,6 @@ package com.njcn.event.controller.majornetwork; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.common.pojo.annotation.OperateInfo; import com.njcn.common.pojo.constant.OperateType; -import com.njcn.common.pojo.dto.wave.WaveDataDTO; import com.njcn.common.pojo.enums.common.LogEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.response.HttpResult; @@ -202,24 +201,6 @@ public class MonitorPointController extends BaseController { - /** - *监测点事件波形分析 - * @author zbj - * @date 2022/7/27 - */ - @OperateInfo(info = LogEnum.BUSINESS_COMMON) - @PostMapping("/getMonitorEventAnalyseWave") - @ApiOperation("监测点事件波形分析") - @ApiImplicitParams({ - @ApiImplicitParam(name = "timeId", value = "时间Id", required = true), - @ApiImplicitParam(name = "lineId", value = "监测点Id", required = true) - }) - public HttpResult getMonitorEventAnalyseWave(@RequestParam("timeId") String timeId, @RequestParam("lineId") String lineId){ - String methodDescribe = getMethodDescribe("getMonitorEventAnalyseWave"); - WaveDataDTO wave = eventAnalysisService.getMonitorEventAnalyseWave(timeId, lineId); - return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, wave, methodDescribe); - } - /** *监测点事件波形下载 * @author zbj diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/controller/majornetwork/TransientController.java b/pqs-event/event-boot/src/main/java/com/njcn/event/controller/majornetwork/TransientController.java index da7446b5f..c28777e3b 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/controller/majornetwork/TransientController.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/controller/majornetwork/TransientController.java @@ -3,11 +3,11 @@ package com.njcn.event.controller.majornetwork; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.common.pojo.annotation.OperateInfo; import com.njcn.common.pojo.constant.OperateType; -import com.njcn.common.pojo.dto.wave.WaveDataDTO; import com.njcn.common.pojo.enums.common.LogEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.HttpResultUtil; +import com.njcn.event.pojo.dto.wave.WaveDataDTO; import com.njcn.event.pojo.param.TransientParam; import com.njcn.event.pojo.param.WaveFileParam; import com.njcn.event.pojo.po.EventDetailNew; diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/EventAnalysisService.java b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/EventAnalysisService.java index fda135de2..3dc61a3ba 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/EventAnalysisService.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/EventAnalysisService.java @@ -1,7 +1,7 @@ package com.njcn.event.service.majornetwork; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.njcn.common.pojo.dto.wave.WaveDataDTO; +import com.njcn.event.pojo.dto.wave.WaveDataDTO; import com.njcn.event.pojo.param.*; import com.njcn.event.pojo.po.EventDetail; import com.njcn.event.pojo.vo.*; @@ -82,12 +82,7 @@ public interface EventAnalysisService { */ Page getMonitorEventAnalyseQuery(EventBaseParam eventBaseParam); - /** - *监测点事件波形分析 - * @author zbj - * @date 2022/7/27 - */ - WaveDataDTO getMonitorEventAnalyseWave(String timeId, String lineId); + /** *监测点事件波形下载 diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/EventAnalysisServiceImpl.java b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/EventAnalysisServiceImpl.java index 69f4a4f51..66307b25b 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/EventAnalysisServiceImpl.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/EventAnalysisServiceImpl.java @@ -4,16 +4,15 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.common.config.GeneralInfo; -import com.njcn.common.pojo.dto.wave.WaveDataDTO; import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.PubUtils; -import com.njcn.common.utils.wave.AnalyWave; import com.njcn.device.pq.api.LineFeignClient; import com.njcn.device.pq.pojo.vo.AreaLineInfoVO; import com.njcn.device.pq.pojo.vo.LineDetailDataVO; import com.njcn.event.enums.EventResponseEnum; import com.njcn.event.pojo.constant.Param; +import com.njcn.event.pojo.dto.wave.WaveDataDTO; import com.njcn.event.pojo.param.*; import com.njcn.event.pojo.po.EventDetail; import com.njcn.event.pojo.po.EventDetailNew; @@ -1627,55 +1626,6 @@ public class EventAnalysisServiceImpl implements EventAnalysisService { } - /** - * 监测点事件波形分析 - * - * @author zbj - * @date 2022/7/27 - */ - @Override - public WaveDataDTO getMonitorEventAnalyseWave(String timeId, String lineId) { - WaveDataDTO waveDataDTO = new WaveDataDTO(); - //根据监测点id获取监测点详情 - LineDetailDataVO lineDetailData = lineFeignClient.getLineDetailData(lineId).getData(); - EventDetail eventDetailByTime = eventDetailService.getEventDetailByTime(lineId, timeId); - - //暂时没有进行拼接 - String ip = lineDetailData.getIp(); - String waveName = eventDetailByTime.getWaveName(); - /* if(StrUtil.isBlank(waveName)){ - throw new BusinessException(EventResponseEnum.ANALYSEWAVE_NOT_FOUND); - }*/ - - - AnalyWave analyWave = new AnalyWave(); - - - /*WaveDataDTO comtrade = analyWave.getComtrade(generalInfo.getBusinessWavePath() + File.separator + ip + File.separator + waveName + ".CFG", 1); - if (Objects.isNull(comtrade.getComtradeCfgDTO())) { - throw new BusinessException(EventResponseEnum.ANALYSEWAVE_NOT_FOUND); - }*/ - - - //测试用的本地路径 - WaveDataDTO comtrade = analyWave.getComtrade("C:\\Users\\CDF\\Desktop\\00-B7-8D-00-E7-15\\1_20220204_125513_383.cfg", 1); - - - waveDataDTO = analyWave.getValidData(comtrade); - - - waveDataDTO.setPtType(PubUtils.ptTypeName(lineDetailData.getPtType())); - double pt1 = Double.parseDouble(lineDetailData.getPt().split("/")[0]); - double pt2 = Double.parseDouble(lineDetailData.getPt().split("/")[1]); - double ct1 = Double.parseDouble(lineDetailData.getCt().split("/")[0]); - double ct2 = Double.parseDouble(lineDetailData.getCt().split("/")[1]); - - waveDataDTO.setPt(pt1 / pt2); - waveDataDTO.setCt(ct1 / ct2); - - - return waveDataDTO; - } /** diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/EventDetailServiceImpl.java b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/EventDetailServiceImpl.java index 55440b8c7..6d418ac47 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/EventDetailServiceImpl.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/EventDetailServiceImpl.java @@ -118,7 +118,7 @@ public class EventDetailServiceImpl implements EventDetailService { } stringBuilder.append(") order by time desc"); int i = (pageNum - 1)*pageSize; - stringBuilder.append("LIMIT ").append(pageSize).append(" OFFSET ").append(i).append(" tz('Asia/Shanghai')"); + stringBuilder.append(" LIMIT ").append(pageSize).append(" OFFSET ").append(i).append(" tz('Asia/Shanghai')"); //sql语句 String sql = "SELECT * FROM pqs_eventdetail WHERE " + stringBuilder; System.out.println(sql); diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/TransientServiceImpl.java b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/TransientServiceImpl.java index b2eaaeba9..6961b31b8 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/TransientServiceImpl.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/TransientServiceImpl.java @@ -5,11 +5,11 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.common.config.GeneralInfo; -import com.njcn.common.pojo.dto.wave.WaveDataDTO; +import com.njcn.common.pojo.constant.GeneralConstant; +import com.njcn.common.pojo.constant.OssPath; import com.njcn.common.pojo.enums.common.ServerEnum; import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.utils.PubUtils; -import com.njcn.common.utils.wave.AnalyWave; import com.njcn.device.pq.api.GeneralDeviceInfoClient; import com.njcn.device.pq.api.LineFeignClient; import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO; @@ -17,6 +17,7 @@ import com.njcn.device.pq.pojo.vo.AreaLineInfoVO; import com.njcn.device.pq.pojo.vo.LineDetailDataVO; import com.njcn.event.enums.EventResponseEnum; import com.njcn.event.mapper.majornetwork.TransientMapper; +import com.njcn.event.pojo.dto.wave.WaveDataDTO; import com.njcn.event.pojo.param.TransientParam; import com.njcn.event.pojo.param.WaveFileParam; import com.njcn.event.pojo.po.EventDetail; @@ -24,6 +25,8 @@ import com.njcn.event.pojo.po.EventDetailNew; import com.njcn.event.pojo.vo.TransientVO; import com.njcn.event.service.majornetwork.EventDetailService; import com.njcn.event.service.majornetwork.TransientService; +import com.njcn.event.utils.WaveUtil; +import com.njcn.huawei.obs.util.OBSUtil; import com.njcn.influxdb.mapper.InfluxDBResultMapperCn; import com.njcn.influxdb.param.InfluxDBPublicParam; import com.njcn.influxdb.utils.InfluxDBCommUtils; @@ -75,6 +78,11 @@ public class TransientServiceImpl implements TransientService { private final InfluxDbUtils influxDbUtils; + private final OBSUtil obsUtil; + + private final WaveUtil waveUtil; + + @Override public Page getTransientData(TransientParam transientParam) { Page page = new Page<>(); @@ -86,7 +94,7 @@ public class TransientServiceImpl implements TransientService { List deviceList = generalDeviceInfoClient.getPracticalRunDeviceInfo(transientParam).getData(); if (!CollectionUtils.isEmpty(deviceList)) { //获取按终端分类的监测点索引集合 - List LineIndexes = deviceList.stream().flatMap(list->list.getLineIndexes().stream()).collect(Collectors.toList()); + List LineIndexes = deviceList.stream().flatMap(list -> list.getLineIndexes().stream()).collect(Collectors.toList()); if (!CollectionUtils.isEmpty(LineIndexes)) { //influxDB查询待分页数据总量 @@ -96,7 +104,7 @@ public class TransientServiceImpl implements TransientService { int pages = (int) Math.ceil(data.size() * 1.0 / transientParam.getPageSize()); page.setPages(pages);*/ //influxDB分页查询 - List eventDetailData = eventDetailService.getEventDetailLimit(LineIndexes, transientParam.getSearchBeginTime(), transientParam.getSearchEndTime(), transientParam.getPageSize(), transientParam.getPageNum(),transientParam.getWaveType()); + List eventDetailData = eventDetailService.getEventDetailLimit(LineIndexes, transientParam.getSearchBeginTime(), transientParam.getSearchEndTime(), transientParam.getPageSize(), transientParam.getPageNum(), transientParam.getWaveType()); if (!CollectionUtils.isEmpty(eventDetailData)) { List lineIds = eventDetailData.stream().map(EventDetail::getLineId).collect(Collectors.toList()); @@ -168,23 +176,47 @@ public class TransientServiceImpl implements TransientService { @Override public WaveDataDTO getTransientAnalyseWave(String timeId, String lineId) { WaveDataDTO waveDataDTO; + //原始数据 + WaveDataDTO originalData; //根据监测点id获取监测点详情 LineDetailDataVO lineDetailData = lineFeignClient.getLineDetailData(lineId).getData(); EventDetail eventDetailByTime = eventDetailService.getEventDetailByTime(lineId, timeId); String ip = lineDetailData.getIp(); String waveName = eventDetailByTime.getWaveName(); - AnalyWave analyWave = new AnalyWave(); - // 从本地读取该事件的波形 - WaveDataDTO comtrade = analyWave.getComtrade(generalInfo.getBusinessWavePath() + File.separator + ip + File.separator + waveName + ".CFG", 1); - if (Objects.isNull(comtrade.getComtradeCfgDTO())) { - throw new BusinessException(EventResponseEnum.ANALYSEWAVE_NOT_FOUND); + String cfgPath, datPath; + if (generalInfo.getBusinessFileStorage() == GeneralConstant.LOCAL_DISK) { + cfgPath = generalInfo.getBusinessWavePath() + File.separator + ip + File.separator + waveName + GeneralConstant.CFG; + datPath = generalInfo.getBusinessWavePath() + File.separator + ip + File.separator + waveName + GeneralConstant.DAT; + InputStream cfgStream = waveUtil.getFileInputStreamByFilePath(cfgPath); + InputStream datStream = waveUtil.getFileInputStreamByFilePath(datPath); + if (Objects.isNull(cfgStream) || Objects.isNull(datStream)) { + throw new BusinessException(EventResponseEnum.ANALYSEWAVE_NOT_FOUND); + } + originalData = waveUtil.getComtrade(cfgStream, datStream, 1); +// } else if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) { + } else { + ip = "192.168.1.190"; + waveName = "PQMonitor_PQM1_002438_20210508_092859_938"; + cfgPath = OssPath.WAVE_DIR + ip + StrUtil.SLASH + waveName + GeneralConstant.CFG; + datPath = OssPath.WAVE_DIR + ip + StrUtil.SLASH + waveName + GeneralConstant.DAT; + try ( + InputStream cfgStream = obsUtil.fileDownload(cfgPath); + InputStream datStream = obsUtil.fileDownload(datPath) + ) { + if (Objects.isNull(cfgStream) || Objects.isNull(datStream)) { + throw new BusinessException(EventResponseEnum.ANALYSEWAVE_NOT_FOUND); + } + originalData = waveUtil.getComtrade(cfgStream, datStream, 1); + } catch (IOException e) { + throw new BusinessException(EventResponseEnum.WAVE_DATA_INVALID); + } } - waveDataDTO = analyWave.getValidData(comtrade); + waveDataDTO = waveUtil.getValidData(originalData); waveDataDTO.setPtType(PubUtils.ptTypeName(lineDetailData.getPtType())); - double pt1 = Double.parseDouble(lineDetailData.getPt().split("/")[0]); - double pt2 = Double.parseDouble(lineDetailData.getPt().split("/")[1]); - double ct1 = Double.parseDouble(lineDetailData.getCt().split("/")[0]); - double ct2 = Double.parseDouble(lineDetailData.getCt().split("/")[1]); + double pt1 = Double.parseDouble(lineDetailData.getPt().split(StrUtil.SLASH)[0]); + double pt2 = Double.parseDouble(lineDetailData.getPt().split(StrUtil.SLASH)[1]); + double ct1 = Double.parseDouble(lineDetailData.getCt().split(StrUtil.SLASH)[0]); + double ct2 = Double.parseDouble(lineDetailData.getCt().split(StrUtil.SLASH)[1]); waveDataDTO.setPt(pt1 / pt2); waveDataDTO.setCt(ct1 / ct2); return waveDataDTO; @@ -227,7 +259,7 @@ public class TransientServiceImpl implements TransientService { } @Override - public Page getTransientValue(TransientParam transientParam){ + public Page getTransientValue(TransientParam transientParam) { Page page = new Page<>(); page.setSize(transientParam.getPageSize()); page.setCurrent(transientParam.getPageNum()); @@ -241,7 +273,7 @@ public class TransientServiceImpl implements TransientService { if (!CollectionUtils.isEmpty(lineList)) { StringBuilder stringBuilder = InfluxDBCommUtils.assToInfluxParam(lineList); //influxDB查询待分页数据总量 - Long total = getTransientDetail(stringBuilder,transientParam); + Long total = getTransientDetail(stringBuilder, transientParam); page.setTotal(total); //分页总页数 int pages = (int) Math.ceil(transientParam.getPageNum() * 1.0 / transientParam.getPageSize()); @@ -259,8 +291,8 @@ public class TransientServiceImpl implements TransientService { for (EventDetailNew eventDetail : eventDetailData) { - for(AreaLineInfoVO areaLineInfoVO : r){ - if(eventDetail.getLineId().equals(areaLineInfoVO.getLineId())){ + for (AreaLineInfoVO areaLineInfoVO : r) { + if (eventDetail.getLineId().equals(areaLineInfoVO.getLineId())) { eventDetail.setLineId(areaLineInfoVO.getLineId()); eventDetail.setLineName(areaLineInfoVO.getLineName()); eventDetail.setGdName(areaLineInfoVO.getGdName()); @@ -301,22 +333,22 @@ public class TransientServiceImpl implements TransientService { /** * 查询数据库 */ - private Long getTransientDetail(StringBuilder stringBuilder,TransientParam transientParam) { + private Long getTransientDetail(StringBuilder stringBuilder, TransientParam transientParam) { Long total = 0L; //组装sql语句 stringBuilder.append(" and time >= '").append(DateUtil.beginOfDay(DateUtil.parse(transientParam.getSearchBeginTime()))).append("' and ").append("time <= '").append(DateUtil.endOfDay(DateUtil.parse(transientParam.getSearchEndTime()))).append("'").append(InfluxDBPublicParam.TIME_ZONE); //sql语句 String sql = "SELECT count(wave_type) FROM pqs_eventdetail WHERE " + stringBuilder; - System.out.println("sql------------->>>"+sql); + System.out.println("sql------------->>>" + sql); //结果集 QueryResult result = influxDbUtils.query(sql); //结果集映射到对象中 List series = result.getResults().get(0).getSeries(); - if(CollUtil.isNotEmpty(series)){ - Double tem =(Double)series.get(0).getValues().get(0).get(1); + if (CollUtil.isNotEmpty(series)) { + Double tem = (Double) series.get(0).getValues().get(0).get(1); total = tem.longValue(); } - return total; + return total; } /** @@ -325,31 +357,31 @@ public class TransientServiceImpl implements TransientService { private List getTransientDetailLimit(List lineIndexes, TransientParam transientParam) { //查询数据是否为空,不为空拼接sql语句 StringBuilder querySql = new StringBuilder(); - if(Objects.nonNull(transientParam.getEventValueMin())){ + if (Objects.nonNull(transientParam.getEventValueMin())) { querySql.append(" and event_value >=").append(transientParam.getEventValueMin()); } - if(Objects.nonNull(transientParam.getEventValueMax())){ + if (Objects.nonNull(transientParam.getEventValueMax())) { querySql.append(" and event_value <=").append(transientParam.getEventValueMax()); } - if(Objects.nonNull(transientParam.getPersistMin())){ + if (Objects.nonNull(transientParam.getPersistMin())) { querySql.append(" and persist_time >=").append(transientParam.getPersistMin()); } - if(Objects.nonNull(transientParam.getEventValueMax())){ + if (Objects.nonNull(transientParam.getEventValueMax())) { querySql.append(" and persist_time <=").append(transientParam.getPersistMax()); } - if(Objects.nonNull(transientParam.getSeverityMin())){ + if (Objects.nonNull(transientParam.getSeverityMin())) { querySql.append(" and severity >=").append(transientParam.getSeverityMin()); } - if(Objects.nonNull(transientParam.getSeverityMax())){ + if (Objects.nonNull(transientParam.getSeverityMax())) { querySql.append(" and severity <=").append(transientParam.getSeverityMax()); } - if(Objects.nonNull(transientParam.getFileFlag())){ + if (Objects.nonNull(transientParam.getFileFlag())) { querySql.append(" and file_flag = ").append(transientParam.getFileFlag()); } - if(CollUtil.isNotEmpty(transientParam.getWaveType())) { + if (CollUtil.isNotEmpty(transientParam.getWaveType())) { querySql.append(" and ( "); for (int i = 0; i < transientParam.getWaveType().size(); i++) { if (transientParam.getWaveType().size() - i != 1) { @@ -359,7 +391,7 @@ public class TransientServiceImpl implements TransientService { } } } - if(CollUtil.isNotEmpty(transientParam.getEventReason())) { + if (CollUtil.isNotEmpty(transientParam.getEventReason())) { querySql.append(" and ( "); for (int i = 0; i < transientParam.getEventReason().size(); i++) { if (transientParam.getWaveType().size() - i != 1) { @@ -369,7 +401,7 @@ public class TransientServiceImpl implements TransientService { } } } - if(CollUtil.isNotEmpty(transientParam.getEventType())) { + if (CollUtil.isNotEmpty(transientParam.getEventType())) { querySql.append(" and ( "); for (int i = 0; i < transientParam.getEventType().size(); i++) { if (transientParam.getEventType().size() - i != 1) { @@ -393,8 +425,8 @@ public class TransientServiceImpl implements TransientService { stringBuilder.append("line_id ='").append(lineIndexes.get(i)).append("') "); } } - int i = (transientParam.getPageNum() - 1)*transientParam.getPageSize(); - stringBuilder.append("LIMIT ").append(transientParam.getPageSize()).append(" OFFSET ").append(i).append(" tz('Asia/Shanghai')"); + int i = (transientParam.getPageNum() - 1) * transientParam.getPageSize(); + stringBuilder.append(" LIMIT ").append(transientParam.getPageSize()).append(" OFFSET ").append(i).append(" tz('Asia/Shanghai')"); //sql语句 String sql = "SELECT * FROM pqs_eventdetail WHERE " + stringBuilder; diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/TransientService.java b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/TransientService.java index 3fffdad32..3fc5c4d9c 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/TransientService.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/TransientService.java @@ -1,7 +1,7 @@ package com.njcn.event.service.majornetwork; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.njcn.common.pojo.dto.wave.WaveDataDTO; +import com.njcn.event.pojo.dto.wave.WaveDataDTO; import com.njcn.event.pojo.param.TransientParam; import com.njcn.event.pojo.param.WaveFileParam; import com.njcn.event.pojo.po.EventDetail; diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/utils/BitConverter.java b/pqs-event/event-boot/src/main/java/com/njcn/event/utils/BitConverter.java new file mode 100644 index 000000000..3c44d08c9 --- /dev/null +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/utils/BitConverter.java @@ -0,0 +1,81 @@ +package com.njcn.event.utils; + +public class BitConverter { + + /** + * byte数组转换为无符号short整数 + * @param bytes byte数组 + * @param off 开始位置 + * @return short整数 + */ + public static short byte2ToUnsignedShort(byte[] bytes, int off) { + int low = bytes[off]& 0xFF; + int high = bytes[off + 1]& 0xFF; + return (short)(((high & 0x00FF) << 8) | (0x00FF & low)); + } + + /** + * 字节转换为浮点 + * + * @param b 字节(至少4个字节) + * @param index 开始位置 + * @return + */ + public static float byte4float(byte[] b, int index) { + /* b=new byte[4]; + b[0]=-16; + b[1]=-1; + b[2]=117; + b[3]=66;*/ + + int l; + l = b[index + 0]; + l &= 0xff; + l |= ((long) b[index + 1] << 8); + l &= 0xffff; + l |= ((long) b[index + 2] << 16); + l &= 0xffffff; + l |= ((long) b[index + 3] << 24); + return Float.intBitsToFloat(l); + } + /** + * byte数组转换为int32整数 + * @param bytes byte数组 + * @param off 开始位置 + * @return int整数 + */ + public static int byte4ToInt(byte[] bytes, int off) { + int b0 = bytes[off] & 0xFF; + int b1 = bytes[off + 1] & 0xFF; + int b2 = bytes[off + 2] & 0xFF; + int b3 = bytes[off + 3] & 0xFF; + return (b3 << 24) | (b2 << 16) | (b1 << 8) | b0; + } + + /** + * byte数组转换为int16整数 + * @param bytes byte数组 + * @param off 开始位置 + * @return int整数 + */ + public static int byte2ToInt(byte[] bytes, int off) { + int b0 = bytes[off] & 0xFF; + int b1 = bytes[off + 1] & 0xFF; + return (b1 << 8) | b0; + } + + /** + * byte数组转换为int16整数 + * @param bytes byte数组 + * @param off 开始位置 + * @return int整数 + */ + public static long byte4ToLong(byte[] bytes, int off) { + long b0 = bytes[off] & 0xFF; + long b1 = bytes[off + 1] & 0xFF; + long b2 = bytes[off + 2] & 0xFF; + long b3 = bytes[off + 3] & 0xFF; + + return (b3 << 24) | (b2 << 16) | (b1 << 8) | b0; + } +} diff --git a/pqs-common/common-core/src/main/java/com/njcn/common/utils/wave/AnalyWave.java b/pqs-event/event-boot/src/main/java/com/njcn/event/utils/WaveUtil.java similarity index 57% rename from pqs-common/common-core/src/main/java/com/njcn/common/utils/wave/AnalyWave.java rename to pqs-event/event-boot/src/main/java/com/njcn/event/utils/WaveUtil.java index ef41e7958..080390d09 100644 --- a/pqs-common/common-core/src/main/java/com/njcn/common/utils/wave/AnalyWave.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/utils/WaveUtil.java @@ -1,25 +1,35 @@ -package com.njcn.common.utils.wave; +package com.njcn.event.utils; +import cn.hutool.core.io.IoUtil; +import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.StrUtil; -import com.njcn.common.pojo.dto.wave.*; +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.common.utils.wave.BitConverter; +import com.njcn.event.enums.EventResponseEnum; +import com.njcn.event.pojo.dto.wave.*; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; import java.io.*; +import java.nio.file.Files; import java.text.DateFormat; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.List; +import java.util.*; /** - * @author yxb + * @author hongawen * @version 1.0.0 - * @date 2022年06月02日 20:03 - * 解析comtrate文件工具类 + * @date 2023年03月03日 10:01 */ @Slf4j -public class AnalyWave { +@Component +@RequiredArgsConstructor +public class WaveUtil { + + /****************************************** * 调用读取comtrate文件方法 * param strFilePath 波形.cfg文件路径 @@ -28,46 +38,36 @@ public class AnalyWave { * iType == 2 App抽点要求,采样率抽点成32 * iType == 3 高级算法原始波形(大于32) ******************************************/ - private String strBinType;//结束读取cfg标志 - public WaveDataDTO getComtrade(String strFilePath, int iType) { + public WaveDataDTO getComtrade(InputStream cfgStream, InputStream datStream, int iType) { WaveDataDTO waveDataDTO = new WaveDataDTO(); // 首先判断文件路径是否为空 - if(StrUtil.isNotEmpty(strFilePath)){ - File file = new File(strFilePath); - // 判断文件是否存在 - if (file.isFile() && file.exists()) { - // 读取cfg文件 - ComtradeCfgDTO comtradeCfgDTO = getComtradeCfg(file); - // 为空或者未找到结束符号 - if (comtradeCfgDTO == null && !strBinType.equals("BINARY")) - return waveDataDTO; - /*****根据通道号计算相别** add by yexb -----Start**** - * 1、判断是否是3的倍数,是3的倍数则是3相 - * 2、假如不是3的倍数 ,是1的倍数则是单相 - ********************************************************/ - if(comtradeCfgDTO.getNAnalogNum() % 3 == 0) { - comtradeCfgDTO.setNPhasic(3); - }else if(comtradeCfgDTO.getNAnalogNum() % 1 == 0) { - comtradeCfgDTO.setNPhasic(1); - }else{ - comtradeCfgDTO.setNPhasic(3); - } - // 给相别幅值 - waveDataDTO.setIPhasic(comtradeCfgDTO.getNPhasic()); - // 组装解析抬头 - List lstWaveTitle = getWaveTitle(comtradeCfgDTO); - // 解析.dat文件 - List> listWaveData = getComtradeDat(comtradeCfgDTO,strFilePath, iType); - waveDataDTO.setComtradeCfgDTO(comtradeCfgDTO); - waveDataDTO.setWaveTitle(lstWaveTitle); - waveDataDTO.setListWaveData(listWaveData); - - /*****根据通道号计算相别** add by yexb -----end****/ - }else{ - // .cfg文件不存在 - log.info("{},CFG文件不存在!",strFilePath); - } + // 读取cfg文件 + ComtradeCfgDTO comtradeCfgDTO = getComtradeCfg(cfgStream); + // 为空或者未找到结束符号 + if (comtradeCfgDTO == null || !"BINARY".equalsIgnoreCase(comtradeCfgDTO.getStrBinType())) { + return waveDataDTO; } + /*****根据通道号计算相别** add by yexb -----Start**** + * 1、判断是否是3的倍数,是3的倍数则是3相 + * 2、假如不是3的倍数 ,是1的倍数则是单相 + ********************************************************/ + if (comtradeCfgDTO.getNAnalogNum() % 3 == 0) { + comtradeCfgDTO.setNPhasic(3); + } else { + comtradeCfgDTO.setNPhasic(1); + } + // 给相别幅值 + waveDataDTO.setIPhasic(comtradeCfgDTO.getNPhasic()); + // 组装解析抬头 + List lstWaveTitle = getWaveTitle(comtradeCfgDTO); + // 解析.dat文件 + List> listWaveData = getComtradeDat(comtradeCfgDTO, datStream, iType); + waveDataDTO.setComtradeCfgDTO(comtradeCfgDTO); + waveDataDTO.setWaveTitle(lstWaveTitle); + waveDataDTO.setListWaveData(listWaveData); + + /*****根据通道号计算相别** add by yexb -----end****/ + return waveDataDTO; } @@ -78,72 +78,76 @@ public class AnalyWave { **********************************/ @SuppressWarnings("unused") public WaveDataDTO getValidData(WaveDataDTO waveDataDTO) { - ComtradeCfgDTO comtradeCfgDTO = waveDataDTO.getComtradeCfgDTO();//CFG 配置文件 - List> lstWave = waveDataDTO.getListWaveData();//瞬时波形值 - List> listRms = new ArrayList<>();//返回rms的值 + //CFG 配置文件 + ComtradeCfgDTO comtradeCfgDTO = waveDataDTO.getComtradeCfgDTO(); + //瞬时波形值 + List> lstWave = waveDataDTO.getListWaveData(); + //返回rms的值 + List> listRms = new ArrayList<>(); /*float fs = nOneWaveNum; int nWaveNum = (int) nAllWaveNum;*/ - int HalfTs = comtradeCfgDTO.getFinalSampleRate().intValue();// 全波有效值 (int)fs / 2;//半波有效值 + // 全波有效值 (int)fs / 2;//半波有效值 + int halfTs = comtradeCfgDTO.getFinalSampleRate().intValue(); // 计算有效值算法 /********************************* * modify by yexibao 2020-10-29 * 增加多波形算法 ---------start ********************************/ - double iWave = 0 ; - int nPhasic = 0;// 相别 - List> listRmsMin =new ArrayList<>();//存放RMS值的最小值 - if(lstWave.size() > 0){ + double iWave; + // 相别 + int nPhasic; + //存放RMS值的最小值 + List> listRmsMin = new ArrayList<>(); + if (lstWave.size() > 0) { nPhasic = comtradeCfgDTO.getNPhasic(); //ComtradeCfg.nAnalogNum为值的个数(-1的原因是一个存的是时间) - iWave = Math.floor((lstWave.get(0).size() -1) / nPhasic); + iWave = Math.floor((lstWave.get(0).size() - 1) / (double) nPhasic); List tmpListRms; List tmpListRmsMin; //增加RMS的最小值 - double fMinTime = 0.0 , fMinValue = 0.0; - + double fMinTime = 0.0, fMinValue = 0.0; //每一项一项计算 - for(int j = 0; j < iWave; j ++){ + for (int j = 0; j < iWave; j++) { // 实例化 tmpListRmsMin = new ArrayList<>(); - - double fSumA = 0.0, fSumB= 0.0, fSumC = 0.0; - double fValidA = 0.0, fValidB = 0.0, fValidC = 0.0; + double fSumA = 0.0, fSumB = 0.0, fSumC = 0.0; + double fValidA, fValidB, fValidC; //循环原始数据 for (int i = 0; i < lstWave.size(); i++) { - // 当第一次循环的时候实例化,其余的获取已有的List - List tmpListValue = lstWave.get(i); //获取每一项的值 + // 当第一次循环的时候实例化,其余的获取已有的List//获取每一项的值 + List tmpListValue = lstWave.get(i); if (j == 0) { tmpListRms = new ArrayList<>(); - tmpListRms.add(tmpListValue.get(0));//获取时间 + //获取时间 + tmpListRms.add(tmpListValue.get(0)); listRms.add(tmpListRms); - } else + } else { tmpListRms = listRms.get(i); + } //包含了时间、电压(A、B、C)三相、电流(A、B、C)三相 if (tmpListValue.size() >= 2) { //电压有效值算法,根据相别进行处理 - switch(comtradeCfgDTO.getNPhasic()) { + switch (comtradeCfgDTO.getNPhasic()) { case 1: fSumA += Math.pow(tmpListValue.get(1 + nPhasic * j), 2); - if (i >= HalfTs)// 计算有效值 - { - List forwardListValue = lstWave.get(i - HalfTs);//获取前推周波的值 + // 计算有效值 + if (i >= halfTs) { + //获取前推周波的值 + List forwardListValue = lstWave.get(i - halfTs); fSumA -= Math.pow(forwardListValue.get(1 + nPhasic * j), 2); } - fValidA = Math.sqrt(fSumA / HalfTs); - + fValidA = Math.sqrt(fSumA / halfTs); tmpListRms.add((float) (Math.round(fValidA * 100)) / 100); - listRms.set(i,tmpListRms); - + listRms.set(i, tmpListRms); // 最小值判断 - if (i >= HalfTs){ - if(i == HalfTs){ + if (i >= halfTs) { + if (i == halfTs) { fMinValue = fValidA; fMinTime = tmpListValue.get(0); - } - else{ - if(fValidA < fMinValue){ + } else { + if (fValidA < fMinValue) { fMinValue = fValidA; fMinTime = tmpListValue.get(0); } @@ -153,31 +157,31 @@ public class AnalyWave { case 2: fSumA += Math.pow(tmpListValue.get(1 + nPhasic * j), 2); fSumB += Math.pow(tmpListValue.get(2 + nPhasic * j), 2); - if (i >= HalfTs)// 计算有效值 - { - List forwardListValue = lstWave.get(i - HalfTs);//获取前推周波的值 + // 计算有效值 + if (i >= halfTs) { + //获取前推周波的值 + List forwardListValue = lstWave.get(i - halfTs); fSumA -= Math.pow(forwardListValue.get(1 + nPhasic * j), 2); fSumB -= Math.pow(forwardListValue.get(2 + nPhasic * j), 2); } - fValidA = Math.sqrt(fSumA / HalfTs); - fValidB = Math.sqrt(fSumB / HalfTs); + fValidA = Math.sqrt(fSumA / halfTs); + fValidB = Math.sqrt(fSumB / halfTs); tmpListRms.add((float) (Math.round(fValidA * 100)) / 100); tmpListRms.add((float) (Math.round(fValidB * 100)) / 100); - listRms.set(i,tmpListRms); + listRms.set(i, tmpListRms); // 最小值判断 - if (i >= HalfTs){ - if(i == HalfTs){ + if (i >= halfTs) { + if (i == halfTs) { fMinValue = fValidA; fMinTime = tmpListValue.get(0); - } - else{ - if(fValidA < fMinValue){ + } else { + if (fValidA < fMinValue) { fMinValue = fValidA; fMinTime = tmpListValue.get(0); } - if(fValidB < fMinValue){ + if (fValidB < fMinValue) { fMinValue = fValidB; fMinTime = tmpListValue.get(0); } @@ -188,87 +192,94 @@ public class AnalyWave { fSumA += Math.pow(tmpListValue.get(1 + nPhasic * j), 2); fSumB += Math.pow(tmpListValue.get(2 + nPhasic * j), 2); fSumC += Math.pow(tmpListValue.get(3 + nPhasic * j), 2); - if (i >= HalfTs)// 计算有效值 - { - List forwardListValue = lstWave.get(i - HalfTs);//获取前推周波的值 + // 计算有效值 + if (i >= halfTs) { + //获取前推周波的值 + List forwardListValue = lstWave.get(i - halfTs); fSumA -= Math.pow(forwardListValue.get(1 + nPhasic * j), 2); fSumB -= Math.pow(forwardListValue.get(2 + nPhasic * j), 2); fSumC -= Math.pow(forwardListValue.get(3 + nPhasic * j), 2); } - fValidA = Math.sqrt(fSumA / HalfTs); - fValidB = Math.sqrt(fSumB / HalfTs); - fValidC = Math.sqrt(fSumC / HalfTs); + fValidA = Math.sqrt(fSumA / halfTs); + fValidB = Math.sqrt(fSumB / halfTs); + fValidC = Math.sqrt(fSumC / halfTs); tmpListRms.add((float) (Math.round(fValidA * 100)) / 100); tmpListRms.add((float) (Math.round(fValidB * 100)) / 100); tmpListRms.add((float) (Math.round(fValidC * 100)) / 100); - listRms.set(i,tmpListRms); + listRms.set(i, tmpListRms); // 最小值判断 - if (i >= HalfTs){ - if(i == HalfTs){ + if (i >= halfTs) { + if (i == halfTs) { fMinValue = fValidA; fMinTime = tmpListValue.get(0); - } - else{ - if(fValidA < fMinValue){ + } else { + if (fValidA < fMinValue) { fMinValue = fValidA; fMinTime = tmpListValue.get(0); } - if(fValidB < fMinValue){ + if (fValidB < fMinValue) { fMinValue = fValidB; fMinTime = tmpListValue.get(0); } - if(fValidC < fMinValue){ + if (fValidC < fMinValue) { fMinValue = fValidC; fMinTime = tmpListValue.get(0); } } } break; + default: + break; } } } - - //增加最小值时间,最小值 - tmpListRmsMin.add((float)fMinTime);//获取时间 - tmpListRmsMin.add((float)(Math.round(fMinValue * 100)) / 100);//获取时间 + //增加最小值时间,最小值//获取时间 + tmpListRmsMin.add((float) fMinTime); + //获取时间 + tmpListRmsMin.add((float) (Math.round(fMinValue * 100)) / 100); listRmsMin.add(tmpListRmsMin); } //过滤前一个周波 //HalfTs表示一个周波 try { - for (int i = 0; i < HalfTs; i++) { - //电压有效值算法 - List tmpNewListRms = new ArrayList<>();//没相具体的值 - for(int j = 0; j < iWave; j ++) { - if (j == 0) - tmpNewListRms.add(listRms.get(i).get(0));//获取时间 - - switch(nPhasic) { + for (int i = 0; i < halfTs; i++) { + //电压有效值算法 //没相具体的值 + List tmpNewListRms = new ArrayList<>(); + for (int j = 0; j < iWave; j++) { + if (j == 0) { + //获取时间 + tmpNewListRms.add(listRms.get(i).get(0)); + } + switch (nPhasic) { case 1: - tmpNewListRms.add(listRms.get(i + HalfTs).get(1 + nPhasic * j)); + tmpNewListRms.add(listRms.get(i + halfTs).get(1 + nPhasic * j)); break; case 2: - tmpNewListRms.add(listRms.get(i + HalfTs).get(1 + nPhasic * j)); - tmpNewListRms.add(listRms.get(i + HalfTs).get(2 + nPhasic * j)); + tmpNewListRms.add(listRms.get(i + halfTs).get(1 + nPhasic * j)); + tmpNewListRms.add(listRms.get(i + halfTs).get(2 + nPhasic * j)); break; case 3: - tmpNewListRms.add(listRms.get(i + HalfTs).get(1 + nPhasic * j)); - tmpNewListRms.add(listRms.get(i + HalfTs).get(2 + nPhasic * j)); - tmpNewListRms.add(listRms.get(i + HalfTs).get(3 + nPhasic * j)); + tmpNewListRms.add(listRms.get(i + halfTs).get(1 + nPhasic * j)); + tmpNewListRms.add(listRms.get(i + halfTs).get(2 + nPhasic * j)); + tmpNewListRms.add(listRms.get(i + halfTs).get(3 + nPhasic * j)); + break; + default: break; } } - listRms.set(i, tmpNewListRms);//重新赋值 + //重新赋值 + listRms.set(i, tmpNewListRms); } } catch (Exception e) { - // TODO 更改收个周波值出错 + throw new BusinessException(EventResponseEnum.RMS_DATA_ERROR); } } waveDataDTO.setListRmsData(listRms); - waveDataDTO.setListRmsMinData(listRmsMin);//RMS最小值 + //RMS最小值 + waveDataDTO.setListRmsMinData(listRmsMin); return waveDataDTO; } @@ -279,196 +290,221 @@ public class AnalyWave { * param blType 计算方式 true:浮动门槛 false:固定门槛 *****************************/ public List getEigenvalue(WaveDataDTO waveDataDTO, boolean blType) { - ComtradeCfgDTO comtradeCfgDTO = waveDataDTO.getComtradeCfgDTO();//CFG 配置文件 - List> lstWave = waveDataDTO.getListWaveData();// 瞬时波形值 - Long finalSampleRate = comtradeCfgDTO.getFinalSampleRate();//获取最终采样率 - List lstEigenvalueDTO =new ArrayList<>();// 返回值 + //CFG 配置文件 + ComtradeCfgDTO comtradeCfgDTO = waveDataDTO.getComtradeCfgDTO(); + // 瞬时波形值 + List> lstWave = waveDataDTO.getListWaveData(); + //获取最终采样率 + Long finalSampleRate = comtradeCfgDTO.getFinalSampleRate(); + // 返回值 + List lstEigenvalueDTO = new ArrayList<>(); // 必须包含了瞬时波形 if (lstWave.size() > 0) { - MutationDTO mutationDTO = getMutationValue(lstWave,finalSampleRate); + MutationDTO mutationDTO = getMutationValue(lstWave, finalSampleRate); //获取突变量和RMS值 - if(mutationDTO != null){ - if (mutationDTO.getListRms_Offline().size() > 0 && mutationDTO.getListTBL_Offline().size() > 0) { - lstEigenvalueDTO = getEventValue(lstWave,mutationDTO,comtradeCfgDTO,blType); - } + if (mutationDTO.getListRms_Offline().size() > 0 && mutationDTO.getListTBL_Offline().size() > 0) { + lstEigenvalueDTO = getEventValue(lstWave, mutationDTO, comtradeCfgDTO, blType); } - } - else{ + } else { lstEigenvalueDTO = null; } return lstEigenvalueDTO; } + /*** + * 获取波形文件流,存在则返回inputStream,不存在则返回null + * 为null时,这抛出波形文件不存在异常 + * @author hongawen + * @date 2023/3/3 14:03 + */ + public InputStream getFileInputStreamByFilePath(String filePath) { + File file = new File(filePath); + if (file.isFile() && file.exists()) { + InputStream inputStream; + try { + inputStream = Files.newInputStream(file.toPath()); + if (inputStream.available() < 1) { + throw new BusinessException(EventResponseEnum.WAVE_DATA_INVALID); + } + return inputStream; + } catch (IOException e) { + throw new BusinessException(EventResponseEnum.WAVE_DATA_INVALID); + } + } else { + throw new BusinessException(EventResponseEnum.ANALYSEWAVE_NOT_FOUND); + } + } + /********************************* * 读取cfg方法 * param strFilePath 文件路径 * return 返回bool为是否解析出错 **********************************/ - private String encoding = "GBK"; - private float nFreq;//comtrade频率 WW 2019-11-14 - private BufferedReader bufferedReader; - private InputStreamReader read; - private String strFileLine;// 每行读取内容 - private String[] strTempArray;// 每行读取内容按“,”分割 - //private ComtradeCfgDTO comtradeCfgDTO;//波形文件cfg总类 - private ComtradeCfgDTO getComtradeCfg(File file) { + private ComtradeCfgDTO getComtradeCfg(InputStream cfgStream) { ComtradeCfgDTO comtradeCfgDTO = new ComtradeCfgDTO(); + InputStreamReader read = null; + BufferedReader bufferedReader = null; try { // 将.cfg文件转换为管道流 - // Stream lines = Files.lines(Paths.get(strFilePath)); - read = new InputStreamReader(new FileInputStream(file), encoding);// 考虑到编码格式 + read = new InputStreamReader(cfgStream, CharsetUtil.CHARSET_GBK); bufferedReader = new BufferedReader(read); - - if (bufferedReader != null) { - nFreq = 0f;//WW 2019-11-14 - // 第一行不关心仅仅是一些描述类的信息 - strFileLine = bufferedReader.readLine(); - // 第二行需要关心第二个(模拟量的个数)和第三个参数(开关量的个数) - strFileLine = bufferedReader.readLine(); - // 按“,”进行分割 - strTempArray = strFileLine.split(","); - // 按“,”进行分割 - for (int i = 0; i < strTempArray.length; i++) { - switch (i) { - case 0:// 总个数 - comtradeCfgDTO.setNChannelNum(Integer.parseInt(strTempArray[i])); - break; - case 1:// 模拟量的个数 - { - String str = strTempArray[i].substring(0, strTempArray[i].length() - 1); - comtradeCfgDTO.setNAnalogNum(Integer.parseInt(str)); - } + //WW 2019-11-14 + float nFreq; + // 第一行不关心仅仅是一些描述类的信息 + String strFileLine = bufferedReader.readLine(); + // 第二行需要关心第二个(模拟量的个数)和第三个参数(开关量的个数) + strFileLine = bufferedReader.readLine(); + // 按“,”进行分割 + String[] strTempArray = strFileLine.split(StrUtil.COMMA); + // 按“,”进行分割 + for (int i = 0; i < strTempArray.length; i++) { + switch (i) { + // 总个数 + case 0: + comtradeCfgDTO.setNChannelNum(Integer.parseInt(strTempArray[i])); break; - case 2:// 开关量的个数 - { - String str = strTempArray[i].substring(0, strTempArray[i].length() - 1); - comtradeCfgDTO.setNDigitalNum(Integer.parseInt(str)); - } + // 模拟量的个数 + case 1: + comtradeCfgDTO.setNAnalogNum(Integer.parseInt(strTempArray[i].substring(0, strTempArray[i].length() - 1))); + break; + // 开关量的个数 + case 2: + comtradeCfgDTO.setNDigitalNum(Integer.parseInt(strTempArray[i].substring(0, strTempArray[i].length() - 1))); + break; + default: break; - } } - - // 从第三行到第ComtradeCfg.nChannelNum + 3行是模拟量通道和数字量通道 - List lstAnalogDTO =new ArrayList<>(); - comtradeCfgDTO.setLstAnalogDTO(lstAnalogDTO); - for (int i = 0; i < comtradeCfgDTO.getNChannelNum(); i++) { - AnalogDTO analogDTO = new AnalogDTO(); - lstAnalogDTO.add(analogDTO); - - strFileLine = bufferedReader.readLine(); - strTempArray = strFileLine.split(","); - // 配置总共13项 - for (int j = 0; j < strTempArray.length; j++) { - switch (j) { - case 0:// 通道序号 - analogDTO.setNIndex(Integer.parseInt(strTempArray[j])); - break; - case 1:// 通道名称 - analogDTO.setSzChannleName(strTempArray[j]); - break; - case 2:// 相位名称 - analogDTO.setSzPhasicName(strTempArray[j]); - break; - case 3:// 监视的通道名称 - analogDTO.setSzMonitoredChannleName(strTempArray[j]); - break; - case 4:// 通道的单位 - analogDTO.setSzUnitName(strTempArray[j]); - break; - case 5:// 通道的系数 - analogDTO.setFCoefficent(Float.parseFloat(strTempArray[j])); - break; - case 6:// 通道的偏移量 - analogDTO.setFOffset(Float.parseFloat(strTempArray[j])); - break; - case 7:// 起始采样时间的偏移量 - analogDTO.setFTimeOffset(Float.parseFloat(strTempArray[j])); - break; - case 8:// 采样值的最小值 - analogDTO.setNMin(Integer.parseInt(strTempArray[j])); - break; - case 9:// 采样值的最大值 - analogDTO.setNMax(Integer.parseInt(strTempArray[j])); - break; - case 10:// 一次变比 - analogDTO.setFPrimary(Float.parseFloat(strTempArray[j])); - break; - case 11:// 二次变比 - analogDTO.setFSecondary(Float.parseFloat(strTempArray[j])); - break; - case 12:// 一次值还是二次值标志 - analogDTO.setSzValueType(strTempArray[j]); - break; - } - } - } - // 采样频率 - strFileLine = bufferedReader.readLine(); - float fFreq = Float.parseFloat(strFileLine); - nFreq = (Float) fFreq;//WW 2019-11-14 - // 获取采样段数 - strFileLine = bufferedReader.readLine(); - int nRates = Integer.parseInt(strFileLine); - comtradeCfgDTO.setNRates(nRates); - // 获得每段的采样率 - List lstRate =new ArrayList<>();//采样率 - long nOffset = 0; - for (int i = 0; i < nRates; i++) { - strFileLine = bufferedReader.readLine(); - strTempArray = strFileLine.split(","); - RateDTO rateDTO = new RateDTO(); - lstRate.add(rateDTO); - for (int j = 0; j < strTempArray.length; j++) { - switch (j) { - case 0:// 单周波采样点数 - rateDTO.setNOneSample((long) (Float.parseFloat(strTempArray[j]) / nFreq));//WW 2019-11-14 - break; - case 1:// 总点数 //这里的strTemp是一个偏移量 - nOffset = (long) (Float.parseFloat(strTempArray[j]) - nOffset); - rateDTO.setNSampleNum(nOffset); - break; - } - } - } - comtradeCfgDTO.setLstRate(lstRate); - - // 增加读取波形起始时间个结束时间 - SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss.SSS"); - // 波形起始时间 - strFileLine = bufferedReader.readLine(); - strFileLine = strFileLine.substring(0, strFileLine.length() - 3).replace(",", " "); - comtradeCfgDTO.setTimeStart(sdf.parse(strFileLine)); - // 暂态触发时间 - strFileLine = bufferedReader.readLine(); - strFileLine = strFileLine.substring(0, strFileLine.length() - 3).replace(",", " "); - comtradeCfgDTO.setTimeTrige(sdf.parse(strFileLine)); - // 获取触发时间的时间 + 毫秒 - Calendar calendar = Calendar.getInstance(); - calendar.setTime(comtradeCfgDTO.getTimeTrige()); - comtradeCfgDTO.setFirstMs(calendar.get(Calendar.MILLISECOND)); - comtradeCfgDTO.setFirstTime(calendar.getTime()); - - long a = comtradeCfgDTO.getTimeStart().getTime(); - long b = comtradeCfgDTO.getTimeTrige().getTime(); - int c = (int) (b - a); - if (c >= 90 && c <= 110) { - comtradeCfgDTO.setNPush(100); - } else if (c >= 190 && c <= 210) { - comtradeCfgDTO.setNPush(200); - } - // 赋值编码格式(二进制) - strBinType = bufferedReader.readLine().toUpperCase(); - read.close(); - } else { - //未读取到.cfg内容 - log.info("{},未读取到CFG文件内容!",file.getPath()); - comtradeCfgDTO = null; } + + // 从第三行到第ComtradeCfg.nChannelNum + 3行是模拟量通道和数字量通道 + List lstAnalogDTO = new ArrayList<>(); + comtradeCfgDTO.setLstAnalogDTO(lstAnalogDTO); + for (int i = 0; i < comtradeCfgDTO.getNChannelNum(); i++) { + AnalogDTO analogDTO = new AnalogDTO(); + lstAnalogDTO.add(analogDTO); + strFileLine = bufferedReader.readLine(); + strTempArray = strFileLine.split(StrUtil.COMMA); + // 配置总共13项 + for (int j = 0; j < strTempArray.length; j++) { + switch (j) { + // 通道序号 + case 0: + analogDTO.setNIndex(Integer.parseInt(strTempArray[j])); + break; + // 通道名称 + case 1: + analogDTO.setSzChannleName(strTempArray[j]); + break; + // 相位名称 + case 2: + analogDTO.setSzPhasicName(strTempArray[j]); + break; + // 监视的通道名称 + case 3: + analogDTO.setSzMonitoredChannleName(strTempArray[j]); + break; + // 通道的单位 + case 4: + analogDTO.setSzUnitName(strTempArray[j]); + break; + // 通道的系数 + case 5: + analogDTO.setFCoefficent(Float.parseFloat(strTempArray[j])); + break; + // 通道的偏移量 + case 6: + analogDTO.setFOffset(Float.parseFloat(strTempArray[j])); + break; + // 起始采样时间的偏移量 + case 7: + analogDTO.setFTimeOffset(Float.parseFloat(strTempArray[j])); + break; + // 采样值的最小值 + case 8: + analogDTO.setNMin(Integer.parseInt(strTempArray[j])); + break; + // 采样值的最大值 + case 9: + analogDTO.setNMax(Integer.parseInt(strTempArray[j])); + break; + // 一次变比 + case 10: + analogDTO.setFPrimary(Float.parseFloat(strTempArray[j])); + break; + // 二次变比 + case 11: + analogDTO.setFSecondary(Float.parseFloat(strTempArray[j])); + break; + // 一次值还是二次值标志 + case 12: + analogDTO.setSzValueType(strTempArray[j]); + break; + default: + break; + } + } + } + //WW 2019-11-14 // 采样频率 + nFreq = Float.parseFloat(bufferedReader.readLine()); + // 获取采样段数 + strFileLine = bufferedReader.readLine(); + int nRates = Integer.parseInt(strFileLine); + comtradeCfgDTO.setNRates(nRates); + // 获得每段的采样率 //采样率 + List lstRate = new ArrayList<>(); + long nOffset = 0; + for (int i = 0; i < nRates; i++) { + strFileLine = bufferedReader.readLine(); + strTempArray = strFileLine.split(StrUtil.COMMA); + RateDTO rateDTO = new RateDTO(); + // 单周波采样点数 //WW 2019-11-14 + rateDTO.setNOneSample((long) (Float.parseFloat(strTempArray[0]) / nFreq)); + // 总点数 //这里的strTemp是一个偏移量 + rateDTO.setNSampleNum((long) (Float.parseFloat(strTempArray[1]) - nOffset)); + lstRate.add(rateDTO); + } + comtradeCfgDTO.setLstRate(lstRate); + // 增加读取波形起始时间个结束时间 + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss.SSS"); + // 波形起始时间 + strFileLine = bufferedReader.readLine(); + strFileLine = strFileLine.substring(0, strFileLine.length() - 3).replace(StrUtil.COMMA, StrUtil.SPACE); + comtradeCfgDTO.setTimeStart(sdf.parse(strFileLine)); + // 暂态触发时间 + strFileLine = bufferedReader.readLine(); + strFileLine = strFileLine.substring(0, strFileLine.length() - 3).replace(StrUtil.COMMA, StrUtil.SPACE); + comtradeCfgDTO.setTimeTrige(sdf.parse(strFileLine)); + // 获取触发时间的时间 + 毫秒 + Calendar calendar = Calendar.getInstance(); + calendar.setTime(comtradeCfgDTO.getTimeTrige()); + comtradeCfgDTO.setFirstMs(calendar.get(Calendar.MILLISECOND)); + comtradeCfgDTO.setFirstTime(calendar.getTime()); + + long a = comtradeCfgDTO.getTimeStart().getTime(); + long b = comtradeCfgDTO.getTimeTrige().getTime(); + int c = (int) (b - a); + if (c >= 90 && c <= 110) { + comtradeCfgDTO.setNPush(100); + } else if (c >= 190 && c <= 210) { + comtradeCfgDTO.setNPush(200); + } + // 赋值编码格式(二进制) + comtradeCfgDTO.setStrBinType(bufferedReader.readLine().toUpperCase()); } catch (Exception e) { // 解析.cfg文件出错 - log.info("{},解析CFG文件出错!",file.getPath()); comtradeCfgDTO = null; + } finally { + try { + bufferedReader.close(); + } catch (IOException e) { + throw new BusinessException(CommonResponseEnum.CLOSE_RESOURCE_ERROR); + } + try { + read.close(); + } catch (IOException e) { + throw new BusinessException(CommonResponseEnum.CLOSE_RESOURCE_ERROR); + } } return comtradeCfgDTO; } @@ -480,60 +516,50 @@ public class AnalyWave { * param iType 访问波形类型 * List> 返回波形瞬时值 **********************************/ - private List> getComtradeDat(ComtradeCfgDTO comtradeCfgDTO,String strFilePath, int iType) { - List> listWaveData = new ArrayList<>();//返回数据 + private List> getComtradeDat(ComtradeCfgDTO comtradeCfgDTO, InputStream datStream, int iType) { + //返回数据 + List> listWaveData = new ArrayList<>(); // 波形文件路径由 .cfg 换成 .dat - String strDatFilePath = getDatFilePath(strFilePath); - float xValueAll = 0;//初始化xValue的值 - boolean blxValue = false;//判断是否首次登陆 - byte[] Array; + //初始化xValue的值 + float xValueAll = 0; + //判断是否首次登陆 + boolean blxValue = false; + byte[] datArray; try { - //读取本地文件 - File file = new File(strDatFilePath); - // 判断文件是否存在 - if (file.isFile() && file.exists()) { - Array = new byte[(int) file.length()]; - FileInputStream readFile = null; - try { - readFile = new FileInputStream(file); - readFile.read(Array, 0, Array.length); - } catch (IOException e) { - // TODO 读取DAT文件失败 - } - finally { - if (readFile != null) { - //PubUtils.safeClose(readFile,"安全关闭读取CFG文件失败,异常为:"); - } - } - } else { - // TODO 找不到DAT文件 + datArray = IoUtil.readBytes(datStream); + if (ArrayUtil.isEmpty(datArray)) { return listWaveData; } - - // 计算每个单独的数据块的大小 4字节的序号 4字节的时间 2字节的值 - // 示例中的排布是 4字节的序号 4字节的时间 UA(2字节) UB(2字节) UC(2字节) IA(2字节) IB(2字节) IC(2字节) - int nDigSize = (comtradeCfgDTO.getNDigitalNum() % 16) > 0 ? (comtradeCfgDTO.getNDigitalNum() / 16 + 1) * 2: comtradeCfgDTO.getNDigitalNum() / 16 * 2; + // 计算每个单独的数据块的大小 4个字节的序号 4个字节的时间 2个字节的值 + // 示例中的排布是 4个字节的序号 4个字节的时间 UA(2字节) UB(2字节) UC(2字节) IA(2字节) IB(2字节) IC(2字节) + int nDigSize = (comtradeCfgDTO.getNDigitalNum() % 16) > 0 ? (comtradeCfgDTO.getNDigitalNum() / 16 + 1) * 2 : comtradeCfgDTO.getNDigitalNum() / 16 * 2; int nBlockSize = 2 * Integer.SIZE / 8 + comtradeCfgDTO.getNAnalogNum() * 2 + nDigSize; - int nBlockNum = Array.length / nBlockSize;// 总长度除以每个快的大小 - long finalSampleRate = getFinalWaveSample(comtradeCfgDTO.getLstRate(),iType);// 获取采样率 - if (finalSampleRate != -1){ - comtradeCfgDTO.setFinalSampleRate(finalSampleRate);//设置最终采样率 - - int nnInd = 0;// 计算转换后的采样率 - long nWaveNum = 0;// 抽点后总共多少点数据 - List newLstRate = new ArrayList<>();//抽点后新的的采样率 + // 总长度除以每个快的大小 + int nBlockNum = datArray.length / nBlockSize; + // 获取采样率 + long finalSampleRate = getFinalWaveSample(comtradeCfgDTO.getLstRate(), iType); + if (finalSampleRate != -1) { + //设置最终采样率 + comtradeCfgDTO.setFinalSampleRate(finalSampleRate); + // 计算转换后的采样率 + int nnInd = 0; + // 抽点后总共多少点数据 + long nWaveNum; + //抽点后新的的采样率 + List newLstRate = new ArrayList<>(); for (int iRate = 0; iRate < comtradeCfgDTO.getNRates(); iRate++) { if (comtradeCfgDTO.getLstRate().get(iRate).getNOneSample() >= 32) { // 计算本段录波总共有多少波形 nWaveNum = comtradeCfgDTO.getLstRate().get(iRate).getNSampleNum() / comtradeCfgDTO.getLstRate().get(iRate).getNOneSample(); - comtradeCfgDTO.setNAllWaveNum(comtradeCfgDTO.getNAllWaveNum() + nWaveNum);//设置总波形大小 + //设置总波形大小 + comtradeCfgDTO.setNAllWaveNum(comtradeCfgDTO.getNAllWaveNum() + nWaveNum); // 将最低采样率替换到本段录波内 RateDTO tmpRateDTO = new RateDTO(); newLstRate.add(tmpRateDTO); //iFlag =3 一定不进行抽点算法 - if(iType !=3) { + if (iType != 3) { //true 抽点算法(当前采样率跟统一采样率不一样则是抽点,否则是未抽点) - if (comtradeCfgDTO.getLstRate().get(iRate).getNOneSample() != comtradeCfgDTO.getFinalSampleRate()) { + if (!Objects.equals(comtradeCfgDTO.getLstRate().get(iRate).getNOneSample(), comtradeCfgDTO.getFinalSampleRate())) { newLstRate.get(nnInd).setNOneSample(comtradeCfgDTO.getFinalSampleRate()); // 计算本段录波按照最低采样点应该有多少录波 newLstRate.get(nnInd).setNSampleNum(comtradeCfgDTO.getFinalSampleRate() * nWaveNum); @@ -542,7 +568,7 @@ public class AnalyWave { // 计算本段录波按照最低采样点应该有多少录波 newLstRate.get(nnInd).setNSampleNum(comtradeCfgDTO.getLstRate().get(iRate).getNOneSample() * nWaveNum); } - } else{ + } else { newLstRate.get(nnInd).setNOneSample(comtradeCfgDTO.getLstRate().get(iRate).getNOneSample()); // 计算本段录波按照最低采样点应该有多少录波 newLstRate.get(nnInd).setNSampleNum(comtradeCfgDTO.getLstRate().get(iRate).getNOneSample() * nWaveNum); @@ -554,13 +580,15 @@ public class AnalyWave { nnInd++; } } - - long nOffSet = 0,nWaveSpan = 0;// 偏移量,采样间隔 - float fValue = 0f,dfValue = 0f;//两个点之间的时间差 - int nIndex = 0;// 计算不同块的采样率 + // 偏移量,采样间隔 + long nOffSet = 0, nWaveSpan; + //两个点之间的时间差 + float fValue, dfValue; + // 计算不同块的采样率 + int nIndex = 0; // 将最低采样率替换到本段录波内 - RateDTO tmpRateDTO = new RateDTO();// .CFG中采样率 - + // .CFG中采样率 + RateDTO tmpRateDTO; // nBlockNum 总循环次数 for (int i = 0; i < nBlockNum; i++) { tmpRateDTO = comtradeCfgDTO.getLstRate().get(nIndex); @@ -570,55 +598,56 @@ public class AnalyWave { if (i == tmpRateDTO.getNSampleNum() + nOffSet) { nOffSet += tmpRateDTO.getNSampleNum(); nIndex++; - if (nIndex == nnInd) + if (nIndex == nnInd) { break; + } } dfValue = (float) 20 / tmpRateDTO.getNOneSample(); // 判断是否到了需要抽的采样点 if (i % nWaveSpan == 0) { // 计算每个通道的值 - List tmpWaveData = new ArrayList();//存储局部数据集合,包含了时间,A,B,C三相 - AnalogDTO tmpAnalogDTO =new AnalogDTO(); + //存储局部数据集合,包含了时间,A,B,C三相 + List tmpWaveData = new ArrayList<>(); + AnalogDTO tmpAnalogDTO; for (int j = 0; j < comtradeCfgDTO.getNAnalogNum(); j++) { tmpAnalogDTO = comtradeCfgDTO.getLstAnalogDTO().get(j); - //数据只有电压ABC三相数据,不展示U0、I0等数据 YXB2020-10-09 去除相别为N相的数据 - if (tmpAnalogDTO.getSzPhasicName().toUpperCase().equals("N")) + if ("N".equalsIgnoreCase(tmpAnalogDTO.getSzPhasicName())) { break; - - float fCoef = tmpAnalogDTO.getFCoefficent(); - fValue = BitConverter.byte2ToUnsignedShort(Array, i * nBlockSize + 2 * 4 + j * 2) * fCoef; - - //WW 2019-11-14 - if (tmpAnalogDTO.getSzValueType().toUpperCase().equals("S"))//P是一次值 S是二次值 - { - if (tmpAnalogDTO.getSzUnitName().toUpperCase().equals("KV"))//判断单位是V还是kV - fValue = fValue*1000.0f; - else - fValue = fValue; } - else if (tmpAnalogDTO.getSzValueType().toUpperCase().equals("P"))//P是一次值 S是二次值 - { - if (tmpAnalogDTO.getSzUnitName().toUpperCase().equals("V"))//判断单位是V还是kV - { - if (tmpAnalogDTO.getFPrimary() != 0.0f)//根据cfg内的变比,将一次值转换成二次值 + float fCoef = tmpAnalogDTO.getFCoefficent(); + fValue = BitConverter.byte2ToUnsignedShort(datArray, i * nBlockSize + 2 * 4 + j * 2) * fCoef; + + //WW 2019-11-14//P是一次值 S是二次值 + if ("S".equalsIgnoreCase(tmpAnalogDTO.getSzValueType())) { + //判断单位是V还是kV + if ("KV".equalsIgnoreCase(tmpAnalogDTO.getSzUnitName())) { + fValue = fValue * 1000.0f; + } + } + //P是一次值 S是二次值 + else if ("P".equalsIgnoreCase(tmpAnalogDTO.getSzValueType())) { + //判断单位是V还是kV + if ("V".equalsIgnoreCase(tmpAnalogDTO.getSzUnitName())) { + //根据cfg内的变比,将一次值转换成二次值 + if (tmpAnalogDTO.getFPrimary() != 0.0f) { fValue = fValue * tmpAnalogDTO.getFSecondary() / tmpAnalogDTO.getFPrimary(); - else - fValue = fValue; + } + } - else if(tmpAnalogDTO.getSzUnitName().toUpperCase().equals("KV"))//判断单位是V还是kV - { - if (tmpAnalogDTO.getFPrimary() != 0.0f)//根据cfg内的变比,将一次值转换成二次值 + //判断单位是V还是kV + else if ("KV".equalsIgnoreCase(tmpAnalogDTO.getSzUnitName())) { + //根据cfg内的变比,将一次值转换成二次值 + if (tmpAnalogDTO.getFPrimary() != 0.0f) { fValue = fValue * 1000.0f * tmpAnalogDTO.getFSecondary() / tmpAnalogDTO.getFPrimary(); - else - fValue = fValue; + } } - else //还有可能是电流,单位是A - { - if (tmpAnalogDTO.getFPrimary() != 0.0f)//根据cfg内的变比,将一次值转换成二次值 + //还有可能是电流,单位是A + else { + //根据cfg内的变比,将一次值转换成二次值 + if (tmpAnalogDTO.getFPrimary() != 0.0f) { fValue = tmpAnalogDTO.getFSecondary() / tmpAnalogDTO.getFPrimary(); - else - fValue= fValue; + } } } @@ -628,124 +657,49 @@ public class AnalyWave { if (!blxValue && j == 0) { xValueAll = (float) (i * 20) / tmpRateDTO.getNOneSample() - comtradeCfgDTO.getNPush(); blxValue = true; - //只增加一个xValue的值 - tmpWaveData.add((float) (Math.round(xValueAll * 100)) / 100);//增加时间值 + //只增加一个xValue的值 //增加时间值 + tmpWaveData.add((float) (Math.round(xValueAll * 100)) / 100); } else if (j == 0) { xValueAll += (float) nWaveSpan * dfValue; - //只增加一个xValue的值 - tmpWaveData.add((float) (Math.round(xValueAll * 100)) / 100);//增加时间值 + //只增加一个xValue的值 //增加时间值 + tmpWaveData.add((float) (Math.round(xValueAll * 100)) / 100); } - //不同通道yValue的值都需要增加,最终成ABC三相 - tmpWaveData.add((float) (Math.round(fValue * 100)) / 100);//每个通道的值 + //不同通道yValue的值都需要增加,最终成ABC三相 //每个通道的值 + tmpWaveData.add((float) (Math.round(fValue * 100)) / 100); } - listWaveData.add(tmpWaveData);//把每个单独的值赋予到整体里面去 + //把每个单独的值赋予到整体里面去 + listWaveData.add(tmpWaveData); } } } } catch (Exception e) { - // TODO 读取文件出错 - return listWaveData; + throw new BusinessException(EventResponseEnum.DAT_DATA_ERROR); } return listWaveData; } - /********************************* - * 获取波形标题的方法 - * param tmpComtradeCfgDTO 文件路径 - * return 返回List返回数据格式说明 - **********************************/ - private List getWaveTitle(ComtradeCfgDTO comtradeCfgDTO){ - //编辑数据标题 YXB2020-10-09 去除相别为N相的数据//存储数据标题 - List tmpWaveTitle = new ArrayList<>(); - // 模拟量通道记录类 - AnalogDTO analogDTO = new AnalogDTO(); - tmpWaveTitle.add("Time"); - String strUnit = "U"; - for (int j = 0; j lstRate,int iType) { - long nFinalOneSample = -1;// 最终返回采样率 - long nMinOneSample = -1;// 最小采样率 - if(lstRate.size() > 0){ - nMinOneSample = lstRate.get(0).getNOneSample(); - long tmpOneSample = 0; - for (int i = 0; i < lstRate.size(); i++) { - tmpOneSample = lstRate.get(i).getNOneSample(); + private long getFinalWaveSample(List lstRate, int iType) { + // 最终返回采样率 + long nFinalOneSample = -1; + // 最小采样率 + long nMinOneSample = -1; + if (lstRate.size() > 0) { + nMinOneSample = lstRate.get(0).getNOneSample(); + long tmpOneSample; + for (RateDTO rateDTO : lstRate) { + tmpOneSample = rateDTO.getNOneSample(); if (tmpOneSample >= 32) { - if (nMinOneSample > tmpOneSample) + if (nMinOneSample > tmpOneSample) { nMinOneSample = tmpOneSample; + } } } } @@ -755,7 +709,7 @@ public class AnalyWave { * iFlag == 2 App抽点要求,采样率抽点成32 * iFlag == 3 高级算法原始波形(大于32) ********************************************************/ - switch (iType){ + switch (iType) { case 0: if (nMinOneSample < 32) { nFinalOneSample = 32; @@ -763,15 +717,10 @@ public class AnalyWave { nFinalOneSample = 128; } break; - case 1: - nFinalOneSample = nMinOneSample; - break; case 2: nFinalOneSample = 32; break; - case 3: - nFinalOneSample = nMinOneSample; - break; + default: nFinalOneSample = nMinOneSample; break; @@ -780,20 +729,22 @@ public class AnalyWave { return nFinalOneSample; } + /********************************* * 离线波形导入时获取突变量算法 * param tmpListWave 波形原始数据 * param finalSampleRate 最终采样率 **********************************/ - private MutationDTO getMutationValue(List> lstWave,float finalSampleRate) { - MutationDTO mutationDTO =new MutationDTO(); + private MutationDTO getMutationValue(List> lstWave, float finalSampleRate) { + MutationDTO mutationDTO = new MutationDTO(); // 计算有效值 double fSumA = 0.0, fSumB = 0.0, fSumC = 0.0; - double fValidA = 0.0, fValidB = 0.0, fValidC = 0.0; + double fValidA, fValidB, fValidC; double fValue = 0.0; - int HalfTs = (int) finalSampleRate;// 全波有效值 ; (int)fs / 2;//半波有效值 + // 全波有效值 ; (int)fs / 2;//半波有效值 + int HalfTs = (int) finalSampleRate; //瞬时波形数据_瞬时---前推周波的值_瞬时----周波的值_突变量----前推周波的值_突变量 - List tmpRealValue,forwardRealValue,tblValue,forwardTblValue; + List tmpRealValue, forwardRealValue, tblValue, forwardTblValue; // 计算有效值算法 for (int i = 0; i < lstWave.size(); i++) { //获取每一项的值 @@ -813,10 +764,13 @@ public class AnalyWave { } // 计算突变量值 List tmpTblValue = new ArrayList<>(); - tmpTblValue.add(tmpRealValue.get(0));//获取时间 + //获取时间 + tmpTblValue.add(tmpRealValue.get(0)); if (i >= HalfTs) { - tblValue = lstWave.get(i);//获取前推周波的值 - forwardTblValue = lstWave.get(i - HalfTs);//获取前推周波的值 + //获取前推周波的值 + tblValue = lstWave.get(i); + //获取前推周波的值 + forwardTblValue = lstWave.get(i - HalfTs); tmpTblValue.add(tblValue.get(1) - forwardTblValue.get(1)); tmpTblValue.add(tblValue.get(2) - forwardTblValue.get(2)); tmpTblValue.add(tblValue.get(3) - forwardTblValue.get(3)); @@ -830,15 +784,18 @@ public class AnalyWave { fValidC = Math.sqrt(fSumC / HalfTs); if (i >= finalSampleRate) { - if (fValidA < mutationDTO.getFMinMagA()) + if (fValidA < mutationDTO.getFMinMagA()) { mutationDTO.setFMinMagA(fValidA); - if (fValidB < mutationDTO.getFMinMagB()) + } + if (fValidB < mutationDTO.getFMinMagB()) { mutationDTO.setFMinMagB(fValidB); - if (fValidC < mutationDTO.getFMinMagC()) + } + if (fValidC < mutationDTO.getFMinMagC()) { mutationDTO.setFMinMagC(fValidC); + } } - //RMS获取 - tmpRmsValue.add(tmpRealValue.get(0));//获取时间 + //RMS获取//获取时间 + tmpRmsValue.add(tmpRealValue.get(0)); tmpRmsValue.add((float) fValidA); tmpRmsValue.add((float) fValidB); tmpRmsValue.add((float) fValidC); @@ -860,13 +817,13 @@ public class AnalyWave { * param blType 计算方式 * List> 返回暂降数据 **********************************/ - private List getEventValue(List> lstWave,MutationDTO mutationDTO,ComtradeCfgDTO comtradeCfgDTO, boolean blType) { + private List getEventValue(List> lstWave, MutationDTO mutationDTO, ComtradeCfgDTO comtradeCfgDTO, boolean blType) { List> tblWave = mutationDTO.getListTBL_Offline(); List> rmstWave = mutationDTO.getListRms_Offline(); //额定电压 float fBase = 57.74f; - //假如所选的是380V,那么PT变比是1:1,因此额定电压要选220 - List lstAnalogDTO = comtradeCfgDTO.getLstAnalogDTO();//模拟量通道记录 + //假如所选的是380V,那么PT变比是1:1,因此额定电压要选220 //模拟量通道记录 + List lstAnalogDTO = comtradeCfgDTO.getLstAnalogDTO(); if (lstAnalogDTO.size() > 0) { if (lstAnalogDTO.get(0).getFPrimary() / lstAnalogDTO.get(0).getFSecondary() <= 1) { fBase = 220f; @@ -880,10 +837,13 @@ public class AnalyWave { * 2额定定压(动态电压) * 3是持续时间 **********************************/ - List lstEigenvalueDTO = new ArrayList<>();//ABC三相分析结果 + //ABC三相分析结果 + List lstEigenvalueDTO = new ArrayList<>(); for (int i = 0; i < 3; i++) { - int iDDY = 0, iGDY = 0;//低电压和郭电压标识值 - EigenvalueDTO eigenvalueDTO = new EigenvalueDTO();//某一项分析结果 + //低电压和郭电压标识值 + int iDDY = 0, iGDY; + //某一项分析结果 + EigenvalueDTO eigenvalueDTO = new EigenvalueDTO(); iDDY = App_Disturb_DDY1(lstWave, tblWave, rmstWave, nSJ, i, blType); if (Disturb_Val == 0 && Disturb_SJ == 0) { //判断A相的暂态事件类型是否为短时中断或电压暂降 @@ -891,19 +851,27 @@ public class AnalyWave { if (iGDY != 0) { if (Disturb_Val != 0) { if (blType) { - eigenvalueDTO.setAmplitude(Disturb_Val / rmstWave.get(nSJ + 2).get(i + 1));//征幅值(残余电压百分比) - eigenvalueDTO.setResidualVoltage(Disturb_Val);//特征幅值(残余电压) - eigenvalueDTO.setRatedVoltage(rmstWave.get(nSJ + 2).get(i + 1));//额定定压(动态电压) + //征幅值(残余电压百分比) + eigenvalueDTO.setAmplitude(Disturb_Val / rmstWave.get(nSJ + 2).get(i + 1)); + //特征幅值(残余电压) + eigenvalueDTO.setResidualVoltage(Disturb_Val); + //额定定压(动态电压) + eigenvalueDTO.setRatedVoltage(rmstWave.get(nSJ + 2).get(i + 1)); } else { - eigenvalueDTO.setAmplitude(Disturb_Val / 57.74f);//征幅值(残余电压百分比) - eigenvalueDTO.setResidualVoltage(Disturb_Val);//特征幅值(残余电压) - eigenvalueDTO.setRatedVoltage(57.74f);//额定定压(动态电压) + //征幅值(残余电压百分比) + eigenvalueDTO.setAmplitude(Disturb_Val / 57.74f); + //特征幅值(残余电压) + eigenvalueDTO.setResidualVoltage(Disturb_Val); + //额定定压(动态电压) + eigenvalueDTO.setRatedVoltage(57.74f); } } - } else//如果都没有找到,那么需要从曲线里面找出比较小的值来计算 - { + } + //如果都没有找到,那么需要从曲线里面找出比较小的值来计算 + else { double rate = 0f; - double residualVoltage = 0.f;//残余电压 + //残余电压 + double residualVoltage = 0.f; switch (i) { case 0: residualVoltage = mutationDTO.getFMinMagA(); @@ -914,43 +882,71 @@ public class AnalyWave { case 2: residualVoltage = mutationDTO.getFMinMagC(); break; + default: + break; } if (residualVoltage != -1) { rate = residualVoltage / fBase > 1 ? 1.0f : residualVoltage / fBase; } - eigenvalueDTO.setAmplitude((float) rate);//征幅值(残余电压百分比) - eigenvalueDTO.setResidualVoltage((float) residualVoltage);//特征幅值(残余电压) - eigenvalueDTO.setRatedVoltage(fBase);//额定定压(动态电压) + //征幅值(残余电压百分比) + eigenvalueDTO.setAmplitude((float) rate); + //特征幅值(残余电压) + eigenvalueDTO.setResidualVoltage((float) residualVoltage); + //额定定压(动态电压) + eigenvalueDTO.setRatedVoltage(fBase); } } else { if (Disturb_Val != 0) { - if (Disturb_Val != 0) { - if (blType) { - eigenvalueDTO.setAmplitude(Disturb_Val / rmstWave.get(nSJ + 2).get(i + 1));//征幅值(残余电压百分比) - eigenvalueDTO.setResidualVoltage(Disturb_Val);//特征幅值(残余电压) - eigenvalueDTO.setRatedVoltage(rmstWave.get(nSJ + 2).get(i + 1));//额定定压(动态电压) - } else { - eigenvalueDTO.setAmplitude(Disturb_Val / 57.74f);//征幅值(残余电压百分比) - eigenvalueDTO.setResidualVoltage(Disturb_Val);//特征幅值(残余电压) - eigenvalueDTO.setRatedVoltage(57.74f);//额定定压(动态电压) - } + if (blType) { + //征幅值(残余电压百分比) + eigenvalueDTO.setAmplitude(Disturb_Val / rmstWave.get(nSJ + 2).get(i + 1)); + //特征幅值(残余电压) + eigenvalueDTO.setResidualVoltage(Disturb_Val); + //额定定压(动态电压) + eigenvalueDTO.setRatedVoltage(rmstWave.get(nSJ + 2).get(i + 1)); + } else { + //征幅值(残余电压百分比) + eigenvalueDTO.setAmplitude(Disturb_Val / 57.74f); + //特征幅值(残余电压) + eigenvalueDTO.setResidualVoltage(Disturb_Val); + //额定定压(动态电压) + eigenvalueDTO.setRatedVoltage(57.74f); } } } - eigenvalueDTO.setDurationTime(Disturb_SJ / nSJ * 20.0f);//持续时间 + //持续时间 + eigenvalueDTO.setDurationTime(Disturb_SJ / nSJ * 20.0f); lstEigenvalueDTO.add(eigenvalueDTO); } return lstEigenvalueDTO; } - private float Disturb_Val = 0;//暂降幅值 - private double Disturb_Time = 0;//持续时间 - private float Disturb_SJ = 0;//暂态启动点号 + /*** + * 暂降幅值 + */ + private float Disturb_Val = 0; + /*** + * 持续时间 + */ + private double Disturb_Time = 0; + /*** + * 暂态启动点号 + */ + private float Disturb_SJ = 0; - private float Un09 = (0.90f * 57.74f);//暂降幅值90% - private float Un002 = (0.02f * 57.74f);//暂降幅值2% - private float Un110 = (1.10f * 57.74f);//暂降幅值110% + /*** + * 暂降幅值90% + */ + private float Un09 = (0.90f * 57.74f); + /*** + * 暂降幅值2% + */ + private float Un002 = (0.02f * 57.74f); + /*** + * 暂降幅值110% + */ + private float Un110 = (1.10f * 57.74f); /************************************ *低电压的判据 包含了暂降和中断 @@ -1007,13 +1003,13 @@ public class AnalyWave { for (int j = 0; j < nHalfSJ; j++) { //临时的突变量 ADC = tblWave.get(i - nHalfSJ + j).get(nType + 1); - //临时的突变量小于0时候取绝对值 + //临时的突变量小于0的时候取绝对值 if (ADC < 0) { ADC = 0 - ADC; } if (ADC > fUN002) { Disturb_SJ += (nHalfSJ - j); - iTbl = (int) (i - nHalfSJ + j); + iTbl = (i - nHalfSJ + j); break; } } @@ -1035,12 +1031,13 @@ public class AnalyWave { iFlag = j; //临时的突变量 ADC = tblWave.get(i - nHalfSJ + j).get(nType + 1); - //临时的突变量小于0时候取绝对值 + //临时的突变量小于0的时候取绝对值 if (ADC < 0) { ADC = 0 - ADC; } - if (ADC > fUN002) + if (ADC > fUN002) { break; + } } Disturb_SJ -= (nHalfSJ - iFlag); Disturb_Time = ((double) Disturb_SJ) * 20 / nSJ; @@ -1048,9 +1045,13 @@ public class AnalyWave { } else { Disturb_SJ++; ADC = realWave.get(i).get(nType + 1); - if (ADC < 0) ADC = 0 - ADC; + if (ADC < 0) { + ADC = 0 - ADC; + } temp = rmsValue - Disturb_JS_Val; - if (temp < 0) temp = 0 - temp; + if (temp < 0) { + temp = 0 - temp; + } if ((ADC > 100) && (temp < 0.1)) { Disturb_SJ -= (nHalfSJ + 1); Disturb_Time = ((double) Disturb_SJ) * 20 / nSJ + 1; @@ -1064,6 +1065,7 @@ public class AnalyWave { return iTbl; } + /************************************ *过电压的判据 * @param realWave 原始波形数据 @@ -1134,8 +1136,9 @@ public class AnalyWave { else { if (rmsValue > (fUN110 - fUN002)) { Disturb_SJ++; - if (Disturb_Val < rmsValue) + if (Disturb_Val < rmsValue) { Disturb_Val = rmsValue; + } Disturb_JS_Val = rmsValue; } else { if (Disturb_SJ >= (nSJ + nHalfSJ)) { @@ -1143,9 +1146,12 @@ public class AnalyWave { for (int j = 0; j < nHalfSJ; j++) { iFlag = j; ADC = tblWave.get(i - nHalfSJ + j).get(nType + 1); - if (ADC < 0) ADC = 0 - ADC; - if (ADC > fUN002) + if (ADC < 0) { + ADC = 0 - ADC; + } + if (ADC > fUN002) { break; + } } Disturb_SJ -= (nHalfSJ - iFlag); Disturb_Time = (double) Disturb_SJ * 20 / nSJ; @@ -1153,9 +1159,13 @@ public class AnalyWave { } else { Disturb_SJ++; ADC = realWave.get(i).get(nType + 1); - if (ADC < 0) ADC = 0 - ADC; + if (ADC < 0) { + ADC = 0 - ADC; + } temp = rmsValue - Disturb_JS_Val; - if (temp < 0) temp = 0 - temp; + if (temp < 0) { + temp = 0 - temp; + } if ((ADC > 100) && (temp < 0.1)) { Disturb_SJ -= (nHalfSJ + 1); Disturb_Time = Disturb_SJ * 20 / nSJ + 1; @@ -1170,6 +1180,79 @@ public class AnalyWave { } + /********************************* + * 获取波形标题的方法 + * param tmpComtradeCfgDTO 文件路径 + * return 返回List返回数据格式说明 + **********************************/ + private List getWaveTitle(ComtradeCfgDTO comtradeCfgDTO) { + //编辑数据标题 YXB2020-10-09 去除相别为N相的数据//存储数据标题 + List tmpWaveTitle = new ArrayList<>(); + // 模拟量通道记录类 + AnalogDTO analogDTO; + tmpWaveTitle.add("Time"); + String strUnit; + for (int j = 0; j < comtradeCfgDTO.getNAnalogNum(); j++) { + analogDTO = comtradeCfgDTO.getLstAnalogDTO().get(j); + // 假如为N相则跳过 + if (!StrUtil.equals(analogDTO.getSzPhasicName().toUpperCase(), "N")) { + if ("A".equalsIgnoreCase(analogDTO.getSzUnitName())) { + strUnit = "I"; + } else { + strUnit = "U"; + } + tmpWaveTitle.add(strUnit + analogDTO.getSzPhasicName().toUpperCase() + "相"); + } + } + return tmpWaveTitle; + } + + /********************************* + * 由.cfg 路径更换成 .dat + * param strFilePath 文件路径 + * return String返回.dat文件的路径 + **********************************/ + private String getDatFilePath(String strFilePath) { + String strDatFilePath; + //替换前的 + String strOriginally = ".cfg"; + //替换后的 + String strReplace = ".dat"; + //截取.之后字符串 + String strIntercept = strFilePath.substring(strFilePath.lastIndexOf(".") + 1); + switch (strIntercept) { + case "cfg": + strOriginally = ".cfg"; + strReplace = ".dat"; + break; + case "CFG": + strOriginally = ".CFG"; + strReplace = ".DAT"; + break; + case "Cfg": + strOriginally = ".Cfg"; + strReplace = ".Dat"; + break; + case "CFg": + strOriginally = ".CFg"; + strReplace = ".DAt"; + break; + case "cFg": + strOriginally = ".cFg"; + strReplace = ".dAt"; + break; + case "cFG": + strOriginally = ".cFG"; + strReplace = ".dAT"; + break; + default: + break; + } + //把.cfg换成.dat + strDatFilePath = strFilePath.replace(strOriginally, strReplace); + return strDatFilePath; + } + public static void main(String[] args) { /******************************************************** * iFlag == 0 高级算法的要求,采样率只能是32-128 @@ -1179,24 +1262,25 @@ public class AnalyWave { ********************************************************/ /** 输出格式: 2014-5-05 00:00:00 大写H为24小时制 */ DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - String s = null; + String s; Date d = new Date(); s = sdf.format(d); System.out.println(s); - - AnalyWave analyWave = new AnalyWave(); - // 获取瞬时波形 - WaveDataDTO waveDataDTO = analyWave.getComtrade("D:\\Comtrade\\00-B7-8D-00-EA-4A\\PQMonitor_PQM1_001341_20220627_063159_104_WAV.CFG", 1);//获取原始波形值 + WaveUtil waveUtil = new WaveUtil(); + InputStream cfgStream = waveUtil.getFileInputStreamByFilePath("D:\\comtrade\\00-B7-8D-00-B7-25\\1_20200629_164016_234.CFG"); + InputStream datStream = waveUtil.getFileInputStreamByFilePath("D:\\comtrade\\00-B7-8D-00-B7-25\\1_20200629_164016_234.DAT"); + // 获取瞬时波形 //获取原始波形值 + WaveDataDTO waveDataDTO = waveUtil.getComtrade(cfgStream,datStream, 1); d = new Date(); s = sdf.format(d); System.out.println(s); // 获取RMS波形 - WaveDataDTO waveDataDTO1 = analyWave.getValidData(waveDataDTO); + WaveDataDTO waveDataDTO1 = waveUtil.getValidData(waveDataDTO); d = new Date(); s = sdf.format(d); System.out.println(s); // 获取特征值 - List lstEigenvalueDTO = analyWave.getEigenvalue(waveDataDTO,true); - String str = ""; + List lstEigenvalueDTO = waveUtil.getEigenvalue(waveDataDTO, true); } + } diff --git a/pqs-event/event-boot/src/main/resources/bootstrap.yml b/pqs-event/event-boot/src/main/resources/bootstrap.yml index 3ebf023df..185a07259 100644 --- a/pqs-event/event-boot/src/main/resources/bootstrap.yml +++ b/pqs-event/event-boot/src/main/resources/bootstrap.yml @@ -44,3 +44,4 @@ mybatis-plus: type-aliases-package: com.njcn.event.pojo mqtt: client-id: @artifactId@${random.value} + diff --git a/pqs-event/event-boot/src/test/java/com/njcn/event/EventBootApplicationTest.java b/pqs-event/event-boot/src/test/java/com/njcn/event/EventBootApplicationTest.java index 44ba22767..8a62afc3e 100644 --- a/pqs-event/event-boot/src/test/java/com/njcn/event/EventBootApplicationTest.java +++ b/pqs-event/event-boot/src/test/java/com/njcn/event/EventBootApplicationTest.java @@ -1,8 +1,14 @@ package com.njcn.event; +import com.njcn.common.pojo.constant.OssPath; +import com.njcn.event.enums.EventResponseEnum; import com.njcn.event.pojo.PqsEventDetail; import com.njcn.event.pojo.PqsOnlinerateAggregate; import com.njcn.event.pojo.PqsEventDetailCount; +import com.njcn.event.pojo.dto.wave.EigenvalueDTO; +import com.njcn.event.pojo.dto.wave.WaveDataDTO; +import com.njcn.event.utils.WaveUtil; +import com.njcn.huawei.obs.util.OBSUtil; import com.njcn.influxdb.config.InfluxDbConfig; import com.njcn.influxdb.utils.InfluxDbUtils; import org.influxdb.dto.QueryResult; @@ -20,8 +26,14 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import javax.annotation.Resource; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.InputStream; import java.util.Arrays; +import java.util.Date; import java.util.List; +import java.util.Objects; import static com.njcn.influxdb.param.InfluxDBPublicParam.PQS_EVENT_DETAIL; @@ -39,79 +51,85 @@ public class EventBootApplicationTest { @Autowired private InfluxDbUtils influxDbUtils; - + + @Autowired + private WaveUtil waveUtil; + + @Autowired + private OBSUtil obsUtil; + // TODO https://github.com/influxdata/influxdb-java/blob/master/QUERY_BUILDER.md - + @Test public void queryList() { // or 条件数据 List clauses = getClauses(); - + SelectQueryImpl selectQuery = select().column("line_id").column("eventass_index").from(influxDbConfig.getDatabase(), PQS_EVENT_DETAIL); WhereQueryImpl where = selectQuery.where(); - + // WHERE (line_id = '1' OR line_id = '2' OR line_id = '3') 加上前后() whereAndNested(clauses, where); - + // AND time >= '2022-05-01T00:00:00Z' AND time <= '2022-09-01T00:00:00Z' tz('Asia/Shanghai'); where.and(gte("time", "2022-05-01T00:00:00Z")).and(lte("time", "2022-09-01T00:00:00Z")); where.tz("Asia/Shanghai"); - + QueryResult result = influxDbUtils.query(selectQuery.getCommand()); InfluxDBResultMapper influxDBResultMapper = new InfluxDBResultMapper(); List re = influxDBResultMapper.toPOJO(result, PqsEventDetail.class); Assert.assertTrue(re.size() > 0); } - + @Test public void queryCount() { // or 条件数据 List clauses = getClauses(); - + SelectQueryImpl selectQuery = select().count("eventass_index").from(influxDbConfig.getDatabase(), PQS_EVENT_DETAIL); WhereQueryImpl where = selectQuery.where(); - + // WHERE (line_id = '1' OR line_id = '2' OR line_id = '3') 加上前后() whereAndNested(clauses, where); - + // AND time >= '2022-05-01T00:00:00Z' AND time <= '2022-09-01T00:00:00Z' tz('Asia/Shanghai'); where.and(gte("time", "2022-05-01T00:00:00Z")).and(lte("time", "2022-09-01T00:00:00Z")); where.tz("Asia/Shanghai"); - + QueryResult result = influxDbUtils.query(selectQuery.getCommand()); InfluxDBResultMapper influxDBResultMapper = new InfluxDBResultMapper(); List re = influxDBResultMapper.toPOJO(result, PqsEventDetailCount.class); Assert.assertTrue(re.size() > 0); } - + @Test public void queryAggregate() { - + // SELECT (SUM(onlinemin) / (SUM(onlinemin) + SUM(offlinemin))) * 100 FROM pqs_onlinerate SelectionQueryImpl select = select(); SelectionQueryImpl sum = select.op(op(sum("onlinemin"), "/", op(sum("onlinemin"), "+", sum("offlinemin"))), "*", 100) .as("value"); SelectQueryImpl selectQuery = sum.from(influxDbConfig.getDatabase(), "pqs_onlinerate"); WhereQueryImpl where = selectQuery.where(); - + // AND time >= '2022-05-01T00:00:00Z' AND time <= '2022-09-01T00:00:00Z' tz('Asia/Shanghai'); where.and(gte("time", "2022-05-01T00:00:00Z")).and(lte("time", "2022-09-01T00:00:00Z")); where.tz("Asia/Shanghai"); - + QueryResult result = influxDbUtils.query(selectQuery.getCommand()); InfluxDBResultMapper influxDBResultMapper = new InfluxDBResultMapper(); List re = influxDBResultMapper.toPOJO(result, PqsOnlinerateAggregate.class); Assert.assertTrue(re.size() > 0); } - + private List getClauses() { Clause c1 = eq("line_id", "5e467a40023b299070682eb21f2ec9a1"); Clause c2 = eq("line_id", "183245996f303ebfd80eeb3377cecdc2"); Clause c3 = eq("line_id", "0d46f54420246e999d5c68b3133f668c"); - + return Arrays.asList(c1, c2, c3); } - + private void whereAndNested(List clauses, WhereQueryImpl whereQuery) { WhereNested> andNested = whereQuery.andNested(); for (Clause clause : clauses) { @@ -119,5 +137,29 @@ public class EventBootApplicationTest { } andNested.close(); } - + + @Test + public void testHuaweiOBS() throws FileNotFoundException { + + String cfgPath = OssPath.WAVE_DIR+"192.168.1.190/PQMonitor_PQM1_002438_20210508_092859_938.CFG"; + String datPath = OssPath.WAVE_DIR+"192.168.1.190/PQMonitor_PQM1_002438_20210508_092859_938.DAT"; + + InputStream cfgStream =obsUtil.fileDownload(cfgPath); + InputStream datStream =obsUtil.fileDownload(datPath); + + if(Objects.isNull(cfgStream) || Objects.isNull(datStream)){ + throw new FileNotFoundException(EventResponseEnum.ANALYSEWAVE_NOT_FOUND.getMessage()); + } + + // 获取瞬时波形 //获取原始波形值 + WaveDataDTO waveDataDTO = waveUtil.getComtrade(cfgStream,datStream, 1); + + // 获取RMS波形 + WaveDataDTO waveDataDTO1 = waveUtil.getValidData(waveDataDTO); + + // 获取特征值 + List lstEigenvalueDTO = waveUtil.getEigenvalue(waveDataDTO, true); + System.out.println(1); + } + } diff --git a/pqs-harmonic/harmonic-boot/pom.xml b/pqs-harmonic/harmonic-boot/pom.xml index 1b768d0f9..b5f166343 100644 --- a/pqs-harmonic/harmonic-boot/pom.xml +++ b/pqs-harmonic/harmonic-boot/pom.xml @@ -97,6 +97,13 @@ spring-boot-configuration-processor true + + + + com.njcn + huawei-obs-springboot-starter + ${project.version} + diff --git a/pqs-job/job-executor/src/test/java/Test1.java b/pqs-job/job-executor/src/test/java/Test1.java index 4ad8689ad..c56d3c2de 100644 --- a/pqs-job/job-executor/src/test/java/Test1.java +++ b/pqs-job/job-executor/src/test/java/Test1.java @@ -33,7 +33,7 @@ public class Test1 extends BaseJunitTest{ @Test public void testMethod(){ - InfluxDbUtils influxDBUtil = new InfluxDbUtils(influxDbConfig.getUserName(), influxDbConfig.getPassword(), influxDbConfig.getInfluxDBUrl(), influxDbConfig.getDatabase(), ""); + InfluxDbUtils influxDBUtil = new InfluxDbUtils(influxDbConfig.getUser(), influxDbConfig.getPassword(), influxDbConfig.getUrl(), influxDbConfig.getDatabase(), ""); SelectQueryImpl selectQuery = select().from(influxDbConfig.getDatabase(),"data_flicker").where(eq("fluc",0)).limit(1).tz("Asia/Shanghai"); WhereQueryImpl where = selectQuery.where(); QueryResult queryResult = influxDBUtil.query(selectQuery.getCommand()); From 280dfbad2957aa9d9eaa39ea461fe50b7e038c4f Mon Sep 17 00:00:00 2001 From: hongawen <83944980@qq.com> Date: Mon, 6 Mar 2023 19:05:09 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E9=9B=86=E6=88=90?= =?UTF-8?q?=E5=8D=8E=E4=B8=BAobs=E6=9F=A5=E7=9C=8B=E6=B3=A2=E5=BD=A2?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../njcn/common/pojo/constant/OssPath.java | 10 ++ .../java/com/njcn/minio/utils/MinIoUtils.java | 2 +- .../algorithm/AlgorithmController.java | 37 +++-- .../service/impl/CustomReportServiceImpl.java | 99 +++++++++---- pqs-process/process-boot/pom.xml | 6 + .../impl/LoadTypeUserManageServiceImpl.java | 132 +++++++++++------- 6 files changed, 191 insertions(+), 95 deletions(-) diff --git a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/OssPath.java b/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/OssPath.java index eaddd037f..a8cb4cc44 100644 --- a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/OssPath.java +++ b/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/OssPath.java @@ -22,5 +22,15 @@ public interface OssPath { */ String HARMONIC_EXCEL_TEMPLATE="harmonic/excel/template"; + /*** + * 算法模块的上传路径 + */ + String ALGORITHM="algorithm/"; + + /*** + * process模块中干扰源入网报告的上传路径 + */ + String LOAD_TYPE_USER="loadTypeUser/"; + } diff --git a/pqs-common/common-minio/src/main/java/com/njcn/minio/utils/MinIoUtils.java b/pqs-common/common-minio/src/main/java/com/njcn/minio/utils/MinIoUtils.java index 04237d254..a2909f65e 100644 --- a/pqs-common/common-minio/src/main/java/com/njcn/minio/utils/MinIoUtils.java +++ b/pqs-common/common-minio/src/main/java/com/njcn/minio/utils/MinIoUtils.java @@ -536,7 +536,7 @@ public class MinIoUtils { * @author exe.wangtaotao * @date 2020/10/21 15:07 */ - private String minFileName(String originalFileName) { + public String minFileName(String originalFileName) { String suffix = originalFileName; if (originalFileName.contains(SEPARATOR_DOT)) { suffix = originalFileName.substring(originalFileName.lastIndexOf(SEPARATOR_DOT)); diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/algorithm/AlgorithmController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/algorithm/AlgorithmController.java index 9d207035d..127e1318d 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/algorithm/AlgorithmController.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/algorithm/AlgorithmController.java @@ -1,7 +1,10 @@ package com.njcn.harmonic.controller.algorithm; import cn.hutool.core.bean.BeanUtil; +import com.njcn.common.config.GeneralInfo; import com.njcn.common.pojo.annotation.OperateInfo; +import com.njcn.common.pojo.constant.GeneralConstant; +import com.njcn.common.pojo.constant.OssPath; import com.njcn.common.pojo.enums.common.LogEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.exception.BusinessException; @@ -13,6 +16,7 @@ import com.njcn.harmonic.pojo.param.RStatFileVO; import com.njcn.harmonic.pojo.po.RStatFile; import com.njcn.harmonic.pojo.vo.PwRStatOrgVO; import com.njcn.harmonic.service.algorithm.RStatFileService; +import com.njcn.huawei.obs.util.OBSUtil; import com.njcn.minio.bo.MinIoUploadResDTO; import com.njcn.minio.config.MinIoProperties; import com.njcn.minio.utils.MinIoUtils; @@ -42,6 +46,12 @@ public class AlgorithmController extends BaseController { @Resource private MinIoProperties minIoProperties; + @Resource + private GeneralInfo generalInfo; + + @Resource + private OBSUtil obsUtil; + /** * 算法保存 * @@ -56,10 +66,10 @@ public class AlgorithmController extends BaseController { String methodDescribe = getMethodDescribe("getAlgorithmSave"); RStatFile rStatFile = BeanUtil.copyProperties(param, RStatFile.class); boolean b = rStatFileService.updateById(rStatFile); - if(b){ + if (b) { // minIoUtils.removeObjects( minIoProperties.getBucket(),param.getAddress()); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); - }else{ + } else { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe); } } @@ -79,16 +89,19 @@ public class AlgorithmController extends BaseController { */ @PostMapping("/common/upload") @ResponseBody - public HttpResult uploadFile(MultipartFile file) - { - try - { - //把名称存入数据 - MinIoUploadResDTO upload = minIoUtils.upload(file, minIoProperties.getBucket(), "algorithm/"); - return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, upload, null); - } - catch (Exception e) - { + public HttpResult uploadFile(MultipartFile file) { + try { + //为2则为:华为OBS + if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) { + String fileName = file.getOriginalFilename(); + fileName = OssPath.ALGORITHM + minIoUtils.minFileName(fileName); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, obsUtil.multiFileUpload(file, fileName), null); + } else { + //把名称存入数据 + MinIoUploadResDTO upload = minIoUtils.upload(file, minIoProperties.getBucket(), OssPath.ALGORITHM); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, upload.getMinFileUrl(), null); + } + } catch (Exception e) { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, null); } } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/CustomReportServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/CustomReportServiceImpl.java index 0281d5fac..1df5ec05c 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/CustomReportServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/CustomReportServiceImpl.java @@ -8,6 +8,8 @@ import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.njcn.common.config.GeneralInfo; +import com.njcn.common.pojo.constant.GeneralConstant; +import com.njcn.common.pojo.constant.OssPath; import com.njcn.common.pojo.enums.common.DataStateEnum; import com.njcn.common.pojo.exception.BusinessException; import com.njcn.harmonic.enums.HarmonicResponseEnum; @@ -26,6 +28,7 @@ import com.njcn.harmonic.pojo.vo.ReportTemplateVO; import com.njcn.harmonic.pojo.vo.ReportTreeVO; import com.njcn.harmonic.pojo.vo.SysDeptTempVO; import com.njcn.harmonic.service.CustomReportService; +import com.njcn.huawei.obs.util.OBSUtil; import com.njcn.influxdb.config.InfluxDbConfig; import com.njcn.influxdb.param.InfluxDBSqlConstant; import com.njcn.influxdb.param.InfluxDBTableConstant; @@ -98,21 +101,35 @@ public class CustomReportServiceImpl implements CustomReportService { @Resource private InfluxDbConfig influxDbConfig; + @Resource + private OBSUtil obsUtil; + + @Override public boolean addCustomReportTemplate(ReportTemplateParam reportTemplateParam) { checkName(reportTemplateParam, false); - + MultipartFile fileContent = reportTemplateParam.getFileContent(); + String fileName = fileContent.getName(); //检验模板json数据规范 try { - String content = MultipartFileToString(reportTemplateParam.getFileContent()); + String content = MultipartFileToString(fileContent); new JSONArray(content); } catch (Exception e) { throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_JSON); } - //文件上传到Minio服务器,存入文件名 - MinIoUploadResDTO minIoUploadResDTO = contentToMinio(reportTemplateParam.getFileContent()); - reportTemplateParam.setContent(minIoUploadResDTO.getMinFileName()); + //为2则为:华为OBS + if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) { + fileName = OssPath.HARMONIC_EXCEL_TEMPLATE + minIoUtils.minFileName(fileName); + obsUtil.multiFileUpload(fileContent,fileName); + reportTemplateParam.setContent(fileName); + } else { + //否则认为是minioss + //文件上传到Minio服务器,存入文件名 + MinIoUploadResDTO minIoUploadResDTO = contentToMinio(reportTemplateParam.getFileContent(), OssPath.HARMONIC_EXCEL_TEMPLATE); + reportTemplateParam.setContent(minIoUploadResDTO.getMinFileName()); + } + //新增模板表 ExcelRptTemp excelRptTemp = new ExcelRptTemp(); @@ -137,10 +154,11 @@ public class CustomReportServiceImpl implements CustomReportService { @Override public boolean updateCustomReportTemplate(ReportTemplateParam.UpdateReportTemplateParam reportTemplateParam) { checkName(reportTemplateParam, true); - + MultipartFile fileContent = reportTemplateParam.getFileContent(); + String fileName = fileContent.getName(); //检验模板json数据规范 try { - String content = MultipartFileToString(reportTemplateParam.getFileContent()); + String content = MultipartFileToString(fileContent); new JSONArray(content); } catch (Exception e) { throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_JSON); @@ -148,12 +166,18 @@ public class CustomReportServiceImpl implements CustomReportService { //删除之前的文件 ExcelRptTemp excelRptTempOld = excelRptTempMapper.selectById(reportTemplateParam.getId()); - minIoUtils.removeObject(minIoProperties.getBucket(), excelRptTempOld.getContent()); - - //文件上传到Minio服务器,存入文件名 - MinIoUploadResDTO minIoUploadResDTO = contentToMinio(reportTemplateParam.getFileContent()); - reportTemplateParam.setContent(minIoUploadResDTO.getMinFileName()); - + //为2则为:华为OBS + if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) { + obsUtil.delete(excelRptTempOld.getContent()); + fileName = OssPath.HARMONIC_EXCEL_TEMPLATE + minIoUtils.minFileName(fileName); + obsUtil.multiFileUpload(fileContent,fileName); + reportTemplateParam.setContent(fileName); + }else{ + minIoUtils.removeObject(minIoProperties.getBucket(), excelRptTempOld.getContent()); + //文件上传到Minio服务器,存入文件名 + MinIoUploadResDTO minIoUploadResDTO = contentToMinio(reportTemplateParam.getFileContent(), OssPath.HARMONIC_EXCEL_TEMPLATE); + reportTemplateParam.setContent(minIoUploadResDTO.getMinFileName()); + } //修改模板数据 ExcelRptTemp excelRptTemp = new ExcelRptTemp(); BeanUtils.copyProperties(reportTemplateParam, excelRptTemp); @@ -240,10 +264,10 @@ public class CustomReportServiceImpl implements CustomReportService { lambdaQuery.eq(ExcelRpt::getLineId, reportSearchParam.getLineId()).eq(ExcelRpt::getTempId, reportSearchParam.getTempId()); List excelRpts = excelRptMapper.selectList(lambdaQuery); String content; - if (excelRpts.size() > 0){ + if (excelRpts.size() > 0) { content = minIoUtils.getObjectUrl(minIoProperties.getBucket(), excelRpts.get(0).getContent(), 7 * 24 * 60 * 60); - }else{ - content = minIoUtils.getObjectUrl(minIoProperties.getBucket(), analyzeReport(reportSearchParam,excelRptTemp), 7 * 24 * 60 * 60); + } else { + content = minIoUtils.getObjectUrl(minIoProperties.getBucket(), analyzeReport(reportSearchParam, excelRptTemp), 7 * 24 * 60 * 60); } //拼接数据 @@ -364,7 +388,7 @@ public class CustomReportServiceImpl implements CustomReportService { /** * 解析报表数据 */ - private String analyzeReport(ReportSearchParam reportSearchParam,ExcelRptTemp excelRptTemp){ + private String analyzeReport(ReportSearchParam reportSearchParam, ExcelRptTemp excelRptTemp) { //根据content,获取v值并进行处理 List reportTemplateDTOList = new ArrayList<>(); JSONArray jsonArray = null; @@ -394,7 +418,7 @@ public class CustomReportServiceImpl implements CustomReportService { if (vItem.length == 4) { //$HA[_25]#B#max#classId$ reportTemplateDTO.setTemplateName(vItem[0]); - reportTemplateDTO.setPhase(vItem[1].substring(0,1)); + reportTemplateDTO.setPhase(vItem[1].substring(0, 1)); reportTemplateDTO.setStatMethod(vItem[2].toUpperCase()); reportTemplateDTO.setClassId(vItem[3]); } else if (vItem.length == 3) { @@ -462,11 +486,22 @@ public class CustomReportServiceImpl implements CustomReportService { }); } - //文件上传到Minio服务器,存入文件名 + String newContent; File newFile = stringToFile(jsonArray.toString()); MultipartFile newMultipartFile = getMultipartFile(newFile); - MinIoUploadResDTO minIoUploadResDTO = contentToMinio(newMultipartFile); - String newContent = minIoUploadResDTO.getMinFileName(); + //为2则为:华为OBS + if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) { + newContent = newMultipartFile.getName(); + newContent = OssPath.HARMONIC_EXCEL_REPORT + minIoUtils.minFileName(newContent); + obsUtil.multiFileUpload(newMultipartFile,newContent); + }else{ + //否则认为是minioss + //文件上传到Minio服务器,存入文件名 + MinIoUploadResDTO minIoUploadResDTO = contentToMinio(newMultipartFile,OssPath.HARMONIC_EXCEL_REPORT); + newContent = minIoUploadResDTO.getMinFileName(); + } + + //存入报表库 ExcelRpt excelRpt = new ExcelRpt(); @@ -479,7 +514,7 @@ public class CustomReportServiceImpl implements CustomReportService { //根据模板激活状态,判断是否进库(修改State字段:0未进库 1已进库) if (DataStateEnum.ENABLE.getCode().equals(reportSearchParam.getActivation())) { excelRpt.setState(DataStateEnum.ENABLE.getCode()); - }else{ + } else { excelRpt.setState(DataStateEnum.DELETED.getCode()); } excelRptMapper.insert(excelRpt); @@ -496,9 +531,9 @@ public class CustomReportServiceImpl implements CustomReportService { //sql拼接示例:select MAX(IHA2) as IHA2 from power_quality_data where Phase = 'A' and LineId='1324564568' and Stat_Method='max' tz('Asia/Shanghai') //cp95函数特殊处理 PERCENTILE(field_key, N) - if (InfluxDBSqlConstant.CP95.equals(method)){ + if (InfluxDBSqlConstant.CP95.equals(method)) { sql.append(method).append(InfluxDBSqlConstant.LBK).append(data.getTemplateName()).append(InfluxDBSqlConstant.NUM_95).append(InfluxDBSqlConstant.RBK).append(InfluxDBSqlConstant.AS_VALUE); - }else{ + } else { sql.append(method).append(InfluxDBSqlConstant.LBK).append(data.getTemplateName()).append(InfluxDBSqlConstant.RBK).append(InfluxDBSqlConstant.AS_VALUE); } sql.append(InfluxDBSqlConstant.FROM).append(data.getClassId()).append(InfluxDBSqlConstant.WHERE).append(InfluxDBTableConstant.LINE_ID).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(reportSearchParam.getLineId()).append(InfluxDBSqlConstant.QM); @@ -508,7 +543,7 @@ public class CustomReportServiceImpl implements CustomReportService { } //data_flicker、data_fluc、data_plt 无 value_type - if (!InfluxDBTableConstant.DATA_FLICKER.equals(data.getClassId()) && !InfluxDBTableConstant.DATA_FLUC.equals(data.getClassId()) && !InfluxDBTableConstant.DATA_PLT.equals(data.getClassId())){ + if (!InfluxDBTableConstant.DATA_FLICKER.equals(data.getClassId()) && !InfluxDBTableConstant.DATA_FLUC.equals(data.getClassId()) && !InfluxDBTableConstant.DATA_PLT.equals(data.getClassId())) { sql.append(InfluxDBSqlConstant.AND).append(InfluxDBTableConstant.VALUE_TYPE).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(data.getStatMethod()).append(InfluxDBSqlConstant.QM); } sql.append(InfluxDBSqlConstant.TZ); @@ -520,7 +555,7 @@ public class CustomReportServiceImpl implements CustomReportService { List results = queryResult.getResults(); if (results.size() != 0) { QueryResult.Result result = results.get(0); - if (result.getSeries() != null){ + if (result.getSeries() != null) { List seriess = result.getSeries(); if (seriess.size() != 0) { QueryResult.Series series = seriess.get(0); @@ -545,10 +580,10 @@ public class CustomReportServiceImpl implements CustomReportService { * @param file 文件 * @return 成功标记 */ - private MinIoUploadResDTO contentToMinio(MultipartFile file) { + private MinIoUploadResDTO contentToMinio(MultipartFile file, String dir) { try { //把名称存入数据 - MinIoUploadResDTO upload = minIoUtils.upload(file, minIoProperties.getBucket(), "report/"); + MinIoUploadResDTO upload = minIoUtils.upload(file, minIoProperties.getBucket(), dir); return upload; } catch (Exception e) { throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_FILE); @@ -566,7 +601,7 @@ public class CustomReportServiceImpl implements CustomReportService { BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); StringBuffer buffer = new StringBuffer(); String line = " "; - while ((line = in.readLine()) != null){ + while ((line = in.readLine()) != null) { buffer.append(line); } return buffer.toString(); @@ -575,7 +610,7 @@ public class CustomReportServiceImpl implements CustomReportService { /** * 字符串写入指定文件 * - * @param res 原字符串 + * @param res 原字符串 * @return 成功标记 */ public File stringToFile(String res) { @@ -584,7 +619,9 @@ public class CustomReportServiceImpl implements CustomReportService { String businessTempPath = generalInfo.getBusinessTempPath(); File distFile = new File(businessTempPath + File.separator + "temp.json"); try { - if (!distFile.getParentFile().exists()) distFile.getParentFile().mkdirs(); + if (!distFile.getParentFile().exists()){ + distFile.getParentFile().mkdirs(); + } bufferedReader = new BufferedReader(new StringReader(res)); bufferedWriter = new BufferedWriter(new FileWriter(distFile)); bufferedWriter.write(""); diff --git a/pqs-process/process-boot/pom.xml b/pqs-process/process-boot/pom.xml index fbd19f790..7b49be431 100644 --- a/pqs-process/process-boot/pom.xml +++ b/pqs-process/process-boot/pom.xml @@ -114,6 +114,12 @@ 1.0.0 compile + + + com.njcn + huawei-obs-springboot-starter + ${project.version} + diff --git a/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/LoadTypeUserManageServiceImpl.java b/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/LoadTypeUserManageServiceImpl.java index e6e8141e4..bce24b7ad 100644 --- a/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/LoadTypeUserManageServiceImpl.java +++ b/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/LoadTypeUserManageServiceImpl.java @@ -4,8 +4,12 @@ import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.njcn.common.config.GeneralInfo; +import com.njcn.common.pojo.constant.GeneralConstant; +import com.njcn.common.pojo.constant.OssPath; import com.njcn.common.pojo.exception.BusinessException; import com.njcn.device.pms.api.DistributionMonitorClient; +import com.njcn.huawei.obs.util.OBSUtil; import com.njcn.minio.bo.MinIoUploadResDTO; import com.njcn.minio.config.MinIoProperties; import com.njcn.minio.utils.MinIoUtils; @@ -60,16 +64,22 @@ public class LoadTypeUserManageServiceImpl implements LoadTypeUserManageService @Resource private MinIoUtils minIoUtils; + @Resource + private GeneralInfo generalInfo; + + @Resource + private OBSUtil obsUtil; @Resource private MinIoProperties minIoProperties; /** * 干扰源用户分页查询 + * * @param loadTypeUserSearchParam * @return */ @Override - public Page getLoadTypeUserList(LoadTypeUserSearchParam loadTypeUserSearchParam){ + public Page getLoadTypeUserList(LoadTypeUserSearchParam loadTypeUserSearchParam) { Page page = new Page<>(loadTypeUserSearchParam.getPageNum(), loadTypeUserSearchParam.getPageSize()); Page loadTypeUserPage = loadTypeUserManageMapper.getLoadTypeUserPage(page, loadTypeUserSearchParam); @@ -90,6 +100,7 @@ public class LoadTypeUserManageServiceImpl implements LoadTypeUserManageService /** * 根据id查询干扰源用户 + * * @param id * @return */ @@ -99,11 +110,11 @@ public class LoadTypeUserManageServiceImpl implements LoadTypeUserManageService RLoadTypeUserManageVO rLoadTypeUserManageVO = new RLoadTypeUserManageVO(); BeanUtils.copyProperties(rLoadTypeUserManage, rLoadTypeUserManageVO); //文件 - if (rLoadTypeUserManageVO.getIFilePath() != null){ + if (rLoadTypeUserManageVO.getIFilePath() != null) { String iFile = minIoUtils.getObjectUrl(minIoProperties.getBucket(), rLoadTypeUserManageVO.getIFilePath(), 7 * 24 * 60 * 60); rLoadTypeUserManageVO.setIFile(iFile); } - if (rLoadTypeUserManageVO.getAFilePath() != null){ + if (rLoadTypeUserManageVO.getAFilePath() != null) { String aFile = minIoUtils.getObjectUrl(minIoProperties.getBucket(), rLoadTypeUserManageVO.getAFilePath(), 7 * 24 * 60 * 60); rLoadTypeUserManageVO.setIFile(aFile); } @@ -112,6 +123,7 @@ public class LoadTypeUserManageServiceImpl implements LoadTypeUserManageService /** * 新增干扰源用户 + * * @param loadTypeUserParam * @return */ @@ -130,6 +142,7 @@ public class LoadTypeUserManageServiceImpl implements LoadTypeUserManageService /** * 上传干扰源用户入网报告 + * * @param loadTypeUserIUploadParam * @return */ @@ -138,19 +151,25 @@ public class LoadTypeUserManageServiceImpl implements LoadTypeUserManageService RLoadTypeUserManage rLoadTypeUserManage = new RLoadTypeUserManage(); BeanUtils.copyProperties(loadTypeUserIUploadParam, rLoadTypeUserManage); - + MultipartFile multipartFile = loadTypeUserIUploadParam.getFile(); //文件上传到Minio服务器,存入文件名 - if(loadTypeUserIUploadParam.getFile() != null){ - MinIoUploadResDTO minIoUploadResDTO = fileToMinio(loadTypeUserIUploadParam.getFile()); - rLoadTypeUserManage.setIFilePath(minIoUploadResDTO.getMinFileName()); + if (Objects.nonNull(multipartFile)) { + if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) { + String fileName = OssPath.LOAD_TYPE_USER + minIoUtils.minFileName(multipartFile.getOriginalFilename()); + obsUtil.multiFileUpload(multipartFile, fileName); + rLoadTypeUserManage.setIFilePath(fileName); + } else { + MinIoUploadResDTO minIoUploadResDTO = fileToMinio(loadTypeUserIUploadParam.getFile(), OssPath.LOAD_TYPE_USER); + rLoadTypeUserManage.setIFilePath(minIoUploadResDTO.getMinFileName()); + } rLoadTypeUserManage.setIUploadTime(new Date()); } //提交:待审核/保存:新建 DictData dictData; - if(Objects.equals(Param.LOAD_TYPE_USER_SUBMIT,loadTypeUserIUploadParam.getStatus())){ + if (Objects.equals(Param.LOAD_TYPE_USER_SUBMIT, loadTypeUserIUploadParam.getStatus())) { dictData = dicDataFeignClient.getDicDataByCode(DicDataEnum.AUDIT.getCode()).getData(); - }else{ + } else { dictData = dicDataFeignClient.getDicDataByCode(DicDataEnum.NEWLY.getCode()).getData(); } rLoadTypeUserManage.setIStatus(dictData.getId()); @@ -162,6 +181,7 @@ public class LoadTypeUserManageServiceImpl implements LoadTypeUserManageService /** * 关联营销用户 + * * @param * @return */ @@ -176,13 +196,14 @@ public class LoadTypeUserManageServiceImpl implements LoadTypeUserManageService /** * 查询所有干扰源用户(与营销系统关联) + * * @param loadTypeUserSearchParam * @return */ @Override public Page getLoadTypeRelationList(LoadTypeUserSearchParam loadTypeUserSearchParam) { Page page = new Page<>(loadTypeUserSearchParam.getPageNum(), loadTypeUserSearchParam.getPageSize()); - Page loadTypeUserPage = loadTypeUserManageMapper.getLoadTypeRelationPage(page,loadTypeUserSearchParam); + Page loadTypeUserPage = loadTypeUserManageMapper.getLoadTypeRelationPage(page, loadTypeUserSearchParam); //部门处理:根据部门code取名称 List list = loadTypeUserPage.getRecords(); @@ -205,10 +226,10 @@ public class LoadTypeUserManageServiceImpl implements LoadTypeUserManageService * @param file 文件 * @return 成功标记 */ - private MinIoUploadResDTO fileToMinio(MultipartFile file) { + private MinIoUploadResDTO fileToMinio(MultipartFile file, String dir) { try { //把名称存入数据 - MinIoUploadResDTO upload = minIoUtils.upload(file, minIoProperties.getBucket(), "loadTypeUser/"); + MinIoUploadResDTO upload = minIoUtils.upload(file, minIoProperties.getBucket(), dir); return upload; } catch (Exception e) { throw new BusinessException(ProcessResponseEnum.UPLOAD_FILE_ERROR); @@ -217,6 +238,7 @@ public class LoadTypeUserManageServiceImpl implements LoadTypeUserManageService /** * 上传干扰源用户入网报告 + * * @param loadTypeUserAUploadParam * @return */ @@ -225,19 +247,25 @@ public class LoadTypeUserManageServiceImpl implements LoadTypeUserManageService RLoadTypeUserManage rLoadTypeUserManage = new RLoadTypeUserManage(); BeanUtils.copyProperties(loadTypeUserAUploadParam, rLoadTypeUserManage); - - //文件上传到Minio服务器,存入文件名 - if(loadTypeUserAUploadParam.getFile() != null){ - MinIoUploadResDTO minIoUploadResDTO = fileToMinio(loadTypeUserAUploadParam.getFile()); - rLoadTypeUserManage.setAFilePath(minIoUploadResDTO.getMinFileName()); + MultipartFile multipartFile = loadTypeUserAUploadParam.getFile(); + //文件上传到文件服务器,存入文件名 + if (Objects.nonNull(multipartFile)) { + if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) { + String fileName = OssPath.LOAD_TYPE_USER + minIoUtils.minFileName(multipartFile.getOriginalFilename()); + obsUtil.multiFileUpload(multipartFile, fileName); + rLoadTypeUserManage.setIFilePath(fileName); + } else { + MinIoUploadResDTO minIoUploadResDTO = fileToMinio(loadTypeUserAUploadParam.getFile(), OssPath.LOAD_TYPE_USER); + rLoadTypeUserManage.setAFilePath(minIoUploadResDTO.getMinFileName()); + } rLoadTypeUserManage.setAUploadTime(new Date()); } //提交:待审核/保存:新建 DictData dictData; - if(Objects.equals(Param.LOAD_TYPE_USER_SUBMIT,loadTypeUserAUploadParam.getStatus())){ + if (Objects.equals(Param.LOAD_TYPE_USER_SUBMIT, loadTypeUserAUploadParam.getStatus())) { dictData = dicDataFeignClient.getDicDataByCode(DicDataEnum.AUDIT.getCode()).getData(); - }else{ + } else { dictData = dicDataFeignClient.getDicDataByCode(DicDataEnum.NEWLY.getCode()).getData(); } rLoadTypeUserManage.setAStatus(dictData.getId()); @@ -248,13 +276,14 @@ public class LoadTypeUserManageServiceImpl implements LoadTypeUserManageService /** * 导出未建档干扰源用户管理信息 + * * @param list * @return */ @Override public List exportLoadTypeUserList(List list) { //数据处理 - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<> (); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.in(RLoadTypeUserManage::getId, list); List rLoadTypeUserManages = loadTypeUserManageMapper.selectList(queryWrapper); //1、部门数据 @@ -271,25 +300,25 @@ public class LoadTypeUserManageServiceImpl implements LoadTypeUserManageService List resultList = rLoadTypeUserManages.stream().map(item -> { LoadTypeUserExcel loadTypeUserExcel = new LoadTypeUserExcel(); - if (item.getUserName() != null){ + if (item.getUserName() != null) { loadTypeUserExcel.setUserName(item.getUserName()); } - if (item.getRecordTime() != null){ + if (item.getRecordTime() != null) { loadTypeUserExcel.setRecordTime(item.getRecordTime()); } - if (item.getAIsFileUpload() != null){ + if (item.getAIsFileUpload() != null) { loadTypeUserExcel.setIIsFileUpload(item.getIIsFileUpload() == 0 ? "否" : "是"); //实测报告是否上传 } - if (item.getOrgNo() != null){ + if (item.getOrgNo() != null) { loadTypeUserExcel.setOrgName(pvTerminalTreeVOMap.get(item.getOrgNo()).getName()); //单位 } - if (item.getLoadType() != null){ + if (item.getLoadType() != null) { loadTypeUserExcel.setLoadTypeName(loadTypeMap.get(item.getLoadType()).getName()); //入网报告状态 } - if (item.getIStatus() != null){ + if (item.getIStatus() != null) { loadTypeUserExcel.setIStatusName(iStatusMap.get(item.getIStatus()).getName()); //入网报告状态 } - if (item.getAIsFileUpload() != null){ + if (item.getAIsFileUpload() != null) { loadTypeUserExcel.setIIsFileUpload(item.getIIsFileUpload() == 0 ? "否" : "是"); //实测报告是否上传 } return loadTypeUserExcel; @@ -300,13 +329,14 @@ public class LoadTypeUserManageServiceImpl implements LoadTypeUserManageService /** * 导出干扰源用户常态化管理信息 + * * @param list * @return */ @Override public List exportLoadTypeRelationList(List list) { //数据处理 - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<> (); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.in(RLoadTypeUserManage::getId, list); List rLoadTypeUserManages = loadTypeUserManageMapper.selectList(queryWrapper); //1、部门数据 @@ -323,19 +353,19 @@ public class LoadTypeUserManageServiceImpl implements LoadTypeUserManageService List resultList = rLoadTypeUserManages.stream().map(item -> { LoadTypeRelationExcel loadTypeRelationExcel = new LoadTypeRelationExcel(); - if (item.getOrgNo() != null){ + if (item.getOrgNo() != null) { loadTypeRelationExcel.setOrgName(pvTerminalTreeVOMap.get(item.getOrgNo()).getName()); } - if (item.getLoadType() != null){ + if (item.getLoadType() != null) { loadTypeRelationExcel.setLoadTypeName(loadTypeMap.get(item.getLoadType()).getName()); } - if (item.getUserName() != null){ + if (item.getUserName() != null) { loadTypeRelationExcel.setUserName(item.getUserName()); } - if (item.getRelationUserName() != null){ + if (item.getRelationUserName() != null) { loadTypeRelationExcel.setRelationUserName(item.getRelationUserName()); } - if (item.getAStatus() != null){ + if (item.getAStatus() != null) { loadTypeRelationExcel.setAStatusName(aStatusMap.get(item.getIStatus()).getName()); } return loadTypeRelationExcel; @@ -355,17 +385,17 @@ public class LoadTypeUserManageServiceImpl implements LoadTypeUserManageService @Override public Boolean checkLoadTypeUserI(LoadTypeUserCheckParam loadTypeUserCheckParam) { boolean result = true; - UpdateWrapper updateWrapper = new UpdateWrapper (); - updateWrapper.eq ("id", loadTypeUserCheckParam.getId ()); - updateWrapper.set ("i_check_comment", loadTypeUserCheckParam.getCheckComment ()); - updateWrapper.set ("i_check_person",loadTypeUserCheckParam.getCheckPerson ()); + UpdateWrapper updateWrapper = new UpdateWrapper(); + updateWrapper.eq("id", loadTypeUserCheckParam.getId()); + updateWrapper.set("i_check_comment", loadTypeUserCheckParam.getCheckComment()); + updateWrapper.set("i_check_person", loadTypeUserCheckParam.getCheckPerson()); - DictData fail = dicDataFeignClient.getDicDataByCode (DicDataEnum.FAIL.getCode ( )).getData ( ); - DictData finish = dicDataFeignClient.getDicDataByCode(DicDataEnum.SUCCESS.getCode()).getData(); + DictData fail = dicDataFeignClient.getDicDataByCode(DicDataEnum.FAIL.getCode()).getData(); + DictData finish = dicDataFeignClient.getDicDataByCode(DicDataEnum.SUCCESS.getCode()).getData(); - updateWrapper.set ("i_status", Objects.equals ("1", loadTypeUserCheckParam.getCheckResult ())?finish.getId ():fail.getId ()); - int i= loadTypeUserManageMapper.update (null,updateWrapper); - result = i==1; + updateWrapper.set("i_status", Objects.equals("1", loadTypeUserCheckParam.getCheckResult()) ? finish.getId() : fail.getId()); + int i = loadTypeUserManageMapper.update(null, updateWrapper); + result = i == 1; return result; } @@ -380,17 +410,17 @@ public class LoadTypeUserManageServiceImpl implements LoadTypeUserManageService @Override public Boolean checkLoadTypeUserA(LoadTypeUserCheckParam loadTypeUserCheckParam) { boolean result = true; - UpdateWrapper updateWrapper = new UpdateWrapper (); - updateWrapper.eq ("id", loadTypeUserCheckParam.getId ()); - updateWrapper.set ("a_check_comment", loadTypeUserCheckParam.getCheckComment ()); - updateWrapper.set ("a_check_person",loadTypeUserCheckParam.getCheckPerson ()); + UpdateWrapper updateWrapper = new UpdateWrapper(); + updateWrapper.eq("id", loadTypeUserCheckParam.getId()); + updateWrapper.set("a_check_comment", loadTypeUserCheckParam.getCheckComment()); + updateWrapper.set("a_check_person", loadTypeUserCheckParam.getCheckPerson()); - DictData fail = dicDataFeignClient.getDicDataByCode (DicDataEnum.FAIL.getCode ( )).getData ( ); - DictData finish = dicDataFeignClient.getDicDataByCode(DicDataEnum.SUCCESS.getCode()).getData(); + DictData fail = dicDataFeignClient.getDicDataByCode(DicDataEnum.FAIL.getCode()).getData(); + DictData finish = dicDataFeignClient.getDicDataByCode(DicDataEnum.SUCCESS.getCode()).getData(); - updateWrapper.set ("a_status", Objects.equals ("1", loadTypeUserCheckParam.getCheckResult ())?finish.getId ():fail.getId ()); - int i= loadTypeUserManageMapper.update (null,updateWrapper); - result = i==1; + updateWrapper.set("a_status", Objects.equals("1", loadTypeUserCheckParam.getCheckResult()) ? finish.getId() : fail.getId()); + int i = loadTypeUserManageMapper.update(null, updateWrapper); + result = i == 1; return result; } } From ad044fc2b2fd5e93f0a50c7b29e7395d538fd77d Mon Sep 17 00:00:00 2001 From: hongawen <83944980@qq.com> Date: Wed, 8 Mar 2023 10:31:36 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E9=9B=86=E6=88=90?= =?UTF-8?q?=E5=8D=8E=E4=B8=BAobs=E6=9F=A5=E7=9C=8B=E6=B3=A2=E5=BD=A2?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 23 +- pqs-common/common-minio/pom.xml | 50 -- .../com/njcn/minio/bo/MinIoUploadResDTO.java | 24 - .../main/java/com/njcn/minio/bo/Result.java | 104 --- .../njcn/minio/config/MinIoProperties.java | 35 -- .../java/com/njcn/minio/utils/MinIoUtils.java | 595 ------------------ pqs-common/common-oss/pom.xml | 37 ++ .../njcn/oss}/constant/GeneralConstant.java | 2 +- .../java/com/njcn/oss}/constant/OssPath.java | 12 +- .../com/njcn/oss/enums/OssResponseEnum.java | 29 + .../com/njcn/oss/utils/FileStorageUtil.java | 102 +++ pqs-common/pom.xml | 2 +- pqs-event/event-boot/pom.xml | 2 +- .../Impl/TransientServiceImpl.java | 7 +- .../njcn/event/EventBootApplicationTest.java | 5 +- pqs-harmonic/harmonic-boot/pom.xml | 15 +- .../algorithm/AlgorithmController.java | 33 +- .../service/impl/CustomReportServiceImpl.java | 92 +-- pqs-prepare/harmonic-prepare/pom.xml | 20 +- .../mysql/Impl/line/ReportServiceImpl.java | 36 +- .../process/enums/ProcessResponseEnum.java | 2 - pqs-process/process-boot/pom.xml | 15 +- .../ElectricityQualityIssuesController.java | 9 +- .../RGeneralSurveyPlanController.java | 2 +- .../njcn/process/service/IssuesService.java | 3 +- .../service/RGeneralSurveyPlanPOService.java | 2 +- .../service/impl/IssuesServiceImpl.java | 356 +++++------ .../impl/LoadTypeUserManageServiceImpl.java | 58 +- .../impl/RGeneralSurveyPlanPOServiceImpl.java | 302 +++++---- pqs-user/user-boot/pom.xml | 6 +- .../src/test/java/com/njcn/MinioTest.java | 84 --- 31 files changed, 558 insertions(+), 1506 deletions(-) delete mode 100644 pqs-common/common-minio/pom.xml delete mode 100644 pqs-common/common-minio/src/main/java/com/njcn/minio/bo/MinIoUploadResDTO.java delete mode 100644 pqs-common/common-minio/src/main/java/com/njcn/minio/bo/Result.java delete mode 100644 pqs-common/common-minio/src/main/java/com/njcn/minio/config/MinIoProperties.java delete mode 100644 pqs-common/common-minio/src/main/java/com/njcn/minio/utils/MinIoUtils.java create mode 100644 pqs-common/common-oss/pom.xml rename pqs-common/{common-core/src/main/java/com/njcn/common/pojo => common-oss/src/main/java/com/njcn/oss}/constant/GeneralConstant.java (90%) rename pqs-common/{common-core/src/main/java/com/njcn/common/pojo => common-oss/src/main/java/com/njcn/oss}/constant/OssPath.java (70%) create mode 100644 pqs-common/common-oss/src/main/java/com/njcn/oss/enums/OssResponseEnum.java create mode 100644 pqs-common/common-oss/src/main/java/com/njcn/oss/utils/FileStorageUtil.java delete mode 100644 pqs-user/user-boot/src/test/java/com/njcn/MinioTest.java diff --git a/pom.xml b/pom.xml index 25a9777db..6727d4e15 100644 --- a/pom.xml +++ b/pom.xml @@ -25,6 +25,7 @@ pqs-process pqs-algorithm + pom 灿能微服务生态系统 @@ -111,10 +112,8 @@ 2.3.0 1.2.7 4.4.0 - 0.5.3 - 4.8.1 - 8.2.1 1.7.0-Hoxton + 4.8.1 @@ -341,29 +340,11 @@ easypoi-spring-boot-starter ${easypoi.version} - - - - me.tongfei - progressbar - ${progressbar.version} - com.squareup.okhttp3 okhttp ${okhttp.version} - - io.minio - minio - ${minio.version} - - - com.squareup.okhttp3 - okhttp - - - com.baomidou diff --git a/pqs-common/common-minio/pom.xml b/pqs-common/common-minio/pom.xml deleted file mode 100644 index 17fba24b2..000000000 --- a/pqs-common/common-minio/pom.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - pqs-common - com.njcn - 1.0.0 - - 4.0.0 - common-minio - minioss的公共信息 - - 8 - 8 - UTF-8 - - - - - com.njcn - common-core - ${project.version} - - - com.njcn - common-web - ${project.version} - - - me.tongfei - progressbar - - - com.squareup.okhttp3 - okhttp - - - io.minio - minio - - - com.squareup.okhttp3 - okhttp - - - - - - \ No newline at end of file diff --git a/pqs-common/common-minio/src/main/java/com/njcn/minio/bo/MinIoUploadResDTO.java b/pqs-common/common-minio/src/main/java/com/njcn/minio/bo/MinIoUploadResDTO.java deleted file mode 100644 index 6447b79a5..000000000 --- a/pqs-common/common-minio/src/main/java/com/njcn/minio/bo/MinIoUploadResDTO.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.njcn.minio.bo; - -import lombok.Data; - -import java.io.Serializable; - -/** - * @author hongawen - * @version 1.0.0 - * @date 2022年10月16日 18:40 - */ -@Data -public class MinIoUploadResDTO implements Serializable { - - private static final long serialVersionUID = 475040120689218785L; - private String minFileName; - private String minFileUrl; - - public MinIoUploadResDTO(String minFileName, String minFileUrl) { - this.minFileName = minFileName; - this.minFileUrl = minFileUrl; - } - -} diff --git a/pqs-common/common-minio/src/main/java/com/njcn/minio/bo/Result.java b/pqs-common/common-minio/src/main/java/com/njcn/minio/bo/Result.java deleted file mode 100644 index 4e466f4d0..000000000 --- a/pqs-common/common-minio/src/main/java/com/njcn/minio/bo/Result.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.njcn.minio.bo; - -import java.io.Serializable; - -/** - * @author hongawen - * @version 1.0.0 - * @date 2022年10月16日 18:41 - */ -public class Result implements Serializable { - - private static final long serialVersionUID = 6273326371984994386L; - private Integer code; - private String msg; - private T data; - - private Result() { - this.code = 200; - this.msg = "OK"; - } - - private Result(T data) { - this.code = 200; - this.msg = "OK"; - this.setData(data); - } - - private Result(Integer code, String msg) { - this.code = code; - this.msg = msg; - } - - private Result(Integer code, String msg, T data) { - this.code = code; - this.msg = msg; - this.data = data; - } - - public Result setError(Integer code, String msg) { - this.setCode(code); - this.setMsg(msg); - return this; - } - - public boolean isSuccess() { - return this.getCode().equals(200); - } - - public static Result ok() { - return new Result(); - } - - public static Result ok(T data) { - return new Result(data); - } - - public static Result ok(Integer code, String msg) { - return new Result(code, msg); - } - - public static Result ok(Integer code, String msg, T data) { - return new Result(code, msg, data); - } - - public static Result error() { - return new Result(500, "failed"); - } - - public static Result error(String msg) { - return new Result(500, msg); - } - - public static Result error(Integer code, String msg) { - return new Result(code, msg); - } - - public static Result error(Integer code, String msg, T data) { - return new Result(code, msg, data); - } - - public Integer getCode() { - return this.code; - } - - public void setCode(Integer code) { - this.code = code; - } - - public String getMsg() { - return this.msg; - } - - public void setMsg(String msg) { - this.msg = msg; - } - - public T getData() { - return this.data; - } - - public void setData(T data) { - this.data = data; - } -} diff --git a/pqs-common/common-minio/src/main/java/com/njcn/minio/config/MinIoProperties.java b/pqs-common/common-minio/src/main/java/com/njcn/minio/config/MinIoProperties.java deleted file mode 100644 index 08b22ed43..000000000 --- a/pqs-common/common-minio/src/main/java/com/njcn/minio/config/MinIoProperties.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.njcn.minio.config; - -import io.minio.MinioClient; -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.stereotype.Component; - -/** - * @author hongawen - * @version 1.0.0 - * @date 2022年10月16日 18:37 - */ -@Data -@Component -@ConfigurationProperties(prefix = "min.io") -public class MinIoProperties { - - /** - * Minio 服务端ip - */ - private String endpoint; - - private String accessKey; - - private String secretKey; - - private String bucket; - - @Bean - public MinioClient getMinioClient() { - return MinioClient.builder() - .endpoint(endpoint).credentials(accessKey, secretKey).build(); - } -} diff --git a/pqs-common/common-minio/src/main/java/com/njcn/minio/utils/MinIoUtils.java b/pqs-common/common-minio/src/main/java/com/njcn/minio/utils/MinIoUtils.java deleted file mode 100644 index a2909f65e..000000000 --- a/pqs-common/common-minio/src/main/java/com/njcn/minio/utils/MinIoUtils.java +++ /dev/null @@ -1,595 +0,0 @@ -package com.njcn.minio.utils; - -import com.njcn.minio.bo.MinIoUploadResDTO; -import com.njcn.minio.config.MinIoProperties; -import io.minio.*; -import io.minio.Result; -import io.minio.http.Method; -import io.minio.messages.Bucket; -import io.minio.messages.DeleteError; -import io.minio.messages.DeleteObject; -import io.minio.messages.Item; -import lombok.SneakyThrows; -import org.apache.tomcat.util.http.fileupload.IOUtils; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.multipart.MultipartFile; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletResponse; -import java.io.ByteArrayInputStream; -import java.io.InputStream; -import java.util.*; - - -@Configuration -@EnableConfigurationProperties({MinIoProperties.class}) -public class MinIoUtils { - - @Resource - private MinioClient instance; - - private static final String SEPARATOR_DOT = "."; - - private static final String SEPARATOR_ACROSS = "-"; - - private static final String SEPARATOR_STR = ""; - - // 存储桶名称 - private static final String chunkBucKet = "miniobucket"; - - /** - * 不排序 - */ - public final static boolean NOT_SORT = false; - - /** - * 排序 - */ - public final static boolean SORT = true; - - /** - * 默认过期时间(分钟) - */ - private final static Integer DEFAULT_EXPIRY = 60; - - /** - * 删除分片 - */ - public final static boolean DELETE_CHUNK_OBJECT = true; - /** - * 不删除分片 - */ - public final static boolean NOT_DELETE_CHUNK_OBJECT = false; - - /** - * 判断桶是否存在 - * @param bucketName 桶名 - * @return boolean - * @author exe.wangtaotao - * @date 2020/10/21 16:33 - */ - public boolean bucketExists(String bucketName) { - try { - return instance.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build()); - } catch (Exception e) { - e.printStackTrace(); - } - return false; - } - - - /** - * 创建存储桶 - * 创建 bucket - * - * @param bucketName 桶名 - */ - public void makeBucket(String bucketName) { - try { - boolean isExist = bucketExists(bucketName); - if (!isExist) { - instance.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build()); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * @return java.util.List - * @Description 获取文件存储服务的所有存储桶名称 - * @author exe.wangtaotao - * @date 2020/10/21 16:35 - */ - public List listBucketNames() { - List bucketList = listBuckets(); - List bucketListName = new ArrayList<>(); - for (Bucket bucket : bucketList) { - bucketListName.add(bucket.name()); - } - return bucketListName; - } - - /** - * @return java.util.List - * @Description 列出所有存储桶 - */ - @SneakyThrows - private List listBuckets() { - return instance.listBuckets(); - } - - - /** - * 获取对象文件名称列表 - * - * @param bucketName 存储桶名称 - * @param prefix 对象名称前缀(文件夹 /xx/xx/xxx.jpg 中的 /xx/xx/) - * @return objectNames - */ - public List listObjectNames(String bucketName, String prefix) { - return listObjectNames(bucketName, prefix, NOT_SORT); - } - - - /** - * 获取对象文件名称列表 - * - * @param bucketName 存储桶名称 - * @param prefix 对象名称前缀(文件夹 /xx/xx/xxx.jpg 中的 /xx/xx/) - * @param sort 是否排序(升序) - * @return objectNames - */ - @SneakyThrows - public List listObjectNames(String bucketName, String prefix, Boolean sort) { - boolean flag = bucketExists(bucketName); - if (flag) { - ListObjectsArgs listObjectsArgs; - if (null == prefix) { - listObjectsArgs = ListObjectsArgs.builder() - .bucket(bucketName) - .recursive(true) - .build(); - } else { - listObjectsArgs = ListObjectsArgs.builder() - .bucket(bucketName) - .prefix(prefix) - .recursive(true) - .build(); - } - Iterable> chunks = instance.listObjects(listObjectsArgs); - List chunkPaths = new ArrayList<>(); - for (Result item : chunks) { - chunkPaths.add(item.get().objectName()); - } - if (sort) { - chunkPaths.sort(new Str2IntComparator(false)); - } - return chunkPaths; - } - return new ArrayList<>(); - } - - /** - * 在桶下创建文件夹,文件夹层级结构根据参数决定 - * - * @param bucket 桶名称 - * @param WotDir 格式为 xxx/xxx/xxx/ - */ - @SneakyThrows - public String createDirectory(String bucket, String WotDir) { - if (!this.bucketExists(bucket)) { - return null; - } - instance.putObject(PutObjectArgs.builder().bucket(bucket).object(WotDir).stream( - new ByteArrayInputStream(new byte[]{}), 0, -1) - .build()); - return WotDir; - } - - - /** - * 删除一个文件 - * - * @param bucketName 桶名称 - * @param objectName /xx/xx/xxx.jpg - */ - @SneakyThrows - public boolean removeObject(String bucketName, String objectName) { - - if (!bucketExists(bucketName)) { - return false; - } - instance.removeObject( - RemoveObjectArgs.builder() - .bucket(bucketName) - .object(objectName) - .build()); - return true; - } - - /** - * @param bucketName 桶名称 - * @param objectNames /xx/xx/xxx.jpg - * @return java.util.List - * @Description 删除指定桶的多个文件对象, 返回删除错误的对象列表,全部删除成功,返回空列表 - * @author exe.wangtaotao - * @date 2020/10/21 16:43 - */ - @SneakyThrows - public List removeObjects(String bucketName, List objectNames) { - if (!bucketExists(bucketName)) { - return new ArrayList<>(); - } - List deleteObjects = new ArrayList<>(objectNames.size()); - for (String objectName : objectNames) { - deleteObjects.add(new DeleteObject(objectName)); - } - List deleteErrorNames = new ArrayList<>(); - Iterable> results = instance.removeObjects( - RemoveObjectsArgs.builder() - .bucket(bucketName) - .objects(deleteObjects) - .build()); - for (Result result : results) { - DeleteError error = result.get(); - deleteErrorNames.add(error.objectName()); - } - return deleteErrorNames; - } - - - /** - * 获取访问对象的外链地址 - * 获取文件的下载url - * - * @param bucketName 存储桶名称 - * @param objectName 对象名称 - * @param expiry 过期时间(分钟) 最大为7天 超过7天则默认最大值 - * @return viewUrl - */ - @SneakyThrows - public String getObjectUrl(String bucketName, String objectName, Integer expiry) { - expiry = expiryHandle(expiry); - return instance.getPresignedObjectUrl( - GetPresignedObjectUrlArgs.builder() - .method(Method.GET) - .bucket(bucketName) - .object(objectName) - .expiry(expiry) - .build() - ); - } - - - /** - * 创建上传文件对象的外链 - * - * @param bucketName 存储桶名称 - * @param objectName 欲上传文件对象的名称 - * @return uploadUrl - */ - public String createUploadUrl(String bucketName, String objectName) { - return createUploadUrl(bucketName, objectName, DEFAULT_EXPIRY); - } - - /** - * 创建上传文件对象的外链 - * - * @param bucketName 存储桶名称 - * @param objectName 欲上传文件对象的名称 - * @param expiry 过期时间(分钟) 最大为7天 超过7天则默认最大值 - * @return uploadUrl - */ - @SneakyThrows - public String createUploadUrl(String bucketName, String objectName, Integer expiry) { - expiry = expiryHandle(expiry); - return instance.getPresignedObjectUrl( - GetPresignedObjectUrlArgs.builder() - .method(Method.PUT) - .bucket(bucketName) - .object(objectName) - .expiry(expiry) - .build() - ); - } - - -// /** -// * 批量下载 -// * -// * @param directory -// * @return -// */ -// @SneakyThrows -// public List downLoadMore(String bucket, String directory) { -// Iterable> objs = instance.listObjects(ListObjectsArgs.builder().bucket(bucket).prefix(directory).useUrlEncodingType(false).build()); -// List list = new ArrayList<>(); -// for (io.minio.Result result : objs) { -// String objectName = null; -// objectName = result.get().objectName(); -// ObjectStat statObject = instance.statObject(StatObjectArgs.builder().bucket(bucket).object(objectName).build()); -// if (statObject != null && statObject.length() > 0) { -// String fileurl = instance.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder().bucket(bucket).object(statObject.name()).method(Method.GET).build()); -// list.add(fileurl); -// } -// } -// return list; -// } -// - - /** - * @param multipartFile 文件 - * @param bucketName 桶名 - * @param directory image/ - * @return java.lang.String - * @Description 文件上传 - * @author exe.wangtaotao - * @date 2020/10/21 13:45 - */ - public MinIoUploadResDTO upload(MultipartFile multipartFile, String bucketName, String directory) throws Exception { - if (!this.bucketExists(bucketName)) { - this.makeBucket(bucketName); - } - InputStream inputStream = multipartFile.getInputStream(); - directory = Optional.ofNullable(directory).orElse(""); - String minFileName = directory + minFileName(multipartFile.getOriginalFilename()); - //上传文件到指定目录 - instance.putObject(PutObjectArgs.builder() - .bucket(bucketName) - .object(minFileName) - .contentType(multipartFile.getContentType()) - .stream(inputStream, inputStream.available(), -1) - .build()); - inputStream.close(); - // 返回生成文件名、访问路径 - return new MinIoUploadResDTO(minFileName, getObjectUrl(bucketName, minFileName, DEFAULT_EXPIRY)); - } - - /** - * @param response - * @return java.lang.String - * @Description 下载文件 - * @author exe.wangtaotao - * @date 2020/10/21 15:18 - */ - public void download(HttpServletResponse response, String bucketName, String minFileName) throws Exception { - InputStream fileInputStream = instance.getObject(GetObjectArgs.builder() - .bucket(bucketName) - .object(minFileName).build()); - response.setHeader("Content-Disposition", "attachment;filename=" + minFileName); - response.setContentType("application/force-download"); - response.setCharacterEncoding("UTF-8"); - IOUtils.copy(fileInputStream, response.getOutputStream()); - } - - - /** - * 批量创建分片上传外链 - * - * @param bucketName 存储桶名称 - * @param objectMD5 欲上传分片文件主文件的MD5 - * @param chunkCount 分片数量 - * @return uploadChunkUrls - */ - public List createUploadChunkUrlList(String bucketName, String objectMD5, Integer chunkCount) { - if (null == bucketName) { - bucketName = chunkBucKet; - } - if (null == objectMD5) { - return null; - } - objectMD5 += "/"; - if (null == chunkCount || 0 == chunkCount) { - return null; - } - List urlList = new ArrayList<>(chunkCount); - for (int i = 1; i <= chunkCount; i++) { - String objectName = objectMD5 + i + ".chunk"; - urlList.add(createUploadUrl(bucketName, objectName, DEFAULT_EXPIRY)); - } - return urlList; - } - - /** - * 创建指定序号的分片文件上传外链 - * - * @param bucketName 存储桶名称 - * @param objectMD5 欲上传分片文件主文件的MD5 - * @param partNumber 分片序号 - * @return uploadChunkUrl - */ - public String createUploadChunkUrl(String bucketName, String objectMD5, Integer partNumber) { - if (null == bucketName) { - bucketName = chunkBucKet; - } - if (null == objectMD5) { - return null; - } - objectMD5 += "/" + partNumber + ".chunk"; - return createUploadUrl(bucketName, objectMD5, DEFAULT_EXPIRY); - } - - - /** - * 获取分片文件名称列表 - * - * @param bucketName 存储桶名称 - * @param ObjectMd5 对象Md5 - * @return objectChunkNames - */ - public List listChunkObjectNames(String bucketName, String ObjectMd5) { - if (null == bucketName) { - bucketName = chunkBucKet; - } - if (null == ObjectMd5) { - return null; - } - return listObjectNames(bucketName, ObjectMd5, SORT); - } - - /** - * 获取分片名称地址HashMap key=分片序号 value=分片文件地址 - * - * @param bucketName 存储桶名称 - * @param ObjectMd5 对象Md5 - * @return objectChunkNameMap - */ - public Map mapChunkObjectNames(String bucketName, String ObjectMd5) { - if (null == bucketName) { - bucketName = chunkBucKet; - } - if (null == ObjectMd5) { - return null; - } - List chunkPaths = listObjectNames(bucketName, ObjectMd5); - if (null == chunkPaths || chunkPaths.size() == 0) { - return null; - } - Map chunkMap = new HashMap<>(chunkPaths.size()); - for (String chunkName : chunkPaths) { - Integer partNumber = Integer.parseInt(chunkName.substring(chunkName.indexOf("/") + 1, chunkName.lastIndexOf("."))); - chunkMap.put(partNumber, chunkName); - } - return chunkMap; - } - - - /** - * 合并分片文件成对象文件 - * - * @param chunkBucKetName 分片文件所在存储桶名称 - * @param composeBucketName 合并后的对象文件存储的存储桶名称 - * @param chunkNames 分片文件名称集合 - * @param objectName 合并后的对象文件名称 - * @return true/false - */ - @SneakyThrows - public boolean composeObject(String chunkBucKetName, String composeBucketName, List chunkNames, String objectName, boolean isDeleteChunkObject) { - if (null == chunkBucKetName) { - chunkBucKetName = chunkBucKet; - } - List sourceObjectList = new ArrayList<>(chunkNames.size()); - for (String chunk : chunkNames) { - sourceObjectList.add( - ComposeSource.builder() - .bucket(chunkBucKetName) - .object(chunk) - .build() - ); - } - instance.composeObject( - ComposeObjectArgs.builder() - .bucket(composeBucketName) - .object(objectName) - .sources(sourceObjectList) - .build() - ); - if (isDeleteChunkObject) { - removeObjects(chunkBucKetName, chunkNames); - } - return true; - } - - /** - * 合并分片文件成对象文件 - * - * @param bucketName 存储桶名称 - * @param chunkNames 分片文件名称集合 - * @param objectName 合并后的对象文件名称 - * @return true/false - */ - public boolean composeObject(String bucketName, List chunkNames, String objectName) { - return composeObject(chunkBucKet, bucketName, chunkNames, objectName, NOT_DELETE_CHUNK_OBJECT); - } - - /** - * 合并分片文件成对象文件 - * - * @param bucketName 存储桶名称 - * @param chunkNames 分片文件名称集合 - * @param objectName 合并后的对象文件名称 - * @return true/false - */ - public boolean composeObject(String bucketName, List chunkNames, String objectName, boolean isDeleteChunkObject) { - return composeObject(chunkBucKet, bucketName, chunkNames, objectName, isDeleteChunkObject); - } - - /** - * 合并分片文件,合并成功后删除分片文件 - * - * @param bucketName 存储桶名称 - * @param chunkNames 分片文件名称集合 - * @param objectName 合并后的对象文件名称 - * @return true/false - */ - public boolean composeObjectAndRemoveChunk(String bucketName, List chunkNames, String objectName) { - return composeObject(chunkBucKet, bucketName, chunkNames, objectName, DELETE_CHUNK_OBJECT); - } - - - /** - * @param originalFileName 原始名称 - * @return java.lang.String - * @Description 生成上传文件名 - * @author exe.wangtaotao - * @date 2020/10/21 15:07 - */ - public String minFileName(String originalFileName) { - String suffix = originalFileName; - if (originalFileName.contains(SEPARATOR_DOT)) { - suffix = originalFileName.substring(originalFileName.lastIndexOf(SEPARATOR_DOT)); - } - return UUID.randomUUID().toString().replace(SEPARATOR_ACROSS, SEPARATOR_STR).toUpperCase() + suffix; - } - - - /** - * 将分钟数转换为秒数 - * - * @param expiry 过期时间(分钟数) - * @return expiry - */ - private static int expiryHandle(Integer expiry) { - expiry = expiry * 60; - if (expiry > 604800) { - return 604800; - } - return expiry; - } - - static class Str2IntComparator implements Comparator { - private final boolean reverseOrder; // 是否倒序 - - public Str2IntComparator(boolean reverseOrder) { - this.reverseOrder = reverseOrder; - } - - @Override - public int compare(String arg0, String arg1) { - Integer intArg0 = Integer.parseInt(arg0.substring(arg0.indexOf("/") + 1, arg0.lastIndexOf("."))); - Integer intArg1 = Integer.parseInt(arg1.substring(arg1.indexOf("/") + 1, arg1.lastIndexOf("."))); - if (reverseOrder) { - return intArg1 - intArg0; - } else { - return intArg0 - intArg1; - } - } - } - - /*** - * 根据url地址获取对象名称 - * @author hongawen - * @date 2022/10/17 20:05 - * @param objectUrl 对象地址 - * @return String 对象名称 - */ - public static String getObjectNameByUrl(String objectUrl) { - if(objectUrl.indexOf("?") < 0){ - return "unknownFile"; - } - String objectName = objectUrl.substring(0, objectUrl.indexOf("?")); - return objectName.substring(objectName.lastIndexOf("/") + 1); - } -} diff --git a/pqs-common/common-oss/pom.xml b/pqs-common/common-oss/pom.xml new file mode 100644 index 000000000..128a2d112 --- /dev/null +++ b/pqs-common/common-oss/pom.xml @@ -0,0 +1,37 @@ + + + 4.0.0 + + pqs-common + com.njcn + 1.0.0 + + + common-oss + + + 8 + 8 + UTF-8 + + + 文件服务器处理模块 + + + + + com.njcn + huawei-obs-springboot-starter + 1.0.0 + + + + com.njcn + minioss-springboot-starter + 1.0.0 + + + + \ No newline at end of file diff --git a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/GeneralConstant.java b/pqs-common/common-oss/src/main/java/com/njcn/oss/constant/GeneralConstant.java similarity index 90% rename from pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/GeneralConstant.java rename to pqs-common/common-oss/src/main/java/com/njcn/oss/constant/GeneralConstant.java index f3501bc3f..3f9dc5458 100644 --- a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/GeneralConstant.java +++ b/pqs-common/common-oss/src/main/java/com/njcn/oss/constant/GeneralConstant.java @@ -1,4 +1,4 @@ -package com.njcn.common.pojo.constant; +package com.njcn.oss.constant; /** * @author hongawen diff --git a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/OssPath.java b/pqs-common/common-oss/src/main/java/com/njcn/oss/constant/OssPath.java similarity index 70% rename from pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/OssPath.java rename to pqs-common/common-oss/src/main/java/com/njcn/oss/constant/OssPath.java index a8cb4cc44..7a99c2356 100644 --- a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/OssPath.java +++ b/pqs-common/common-oss/src/main/java/com/njcn/oss/constant/OssPath.java @@ -1,4 +1,4 @@ -package com.njcn.common.pojo.constant; +package com.njcn.oss.constant; /** * @author hongawen @@ -32,5 +32,15 @@ public interface OssPath { */ String LOAD_TYPE_USER="loadTypeUser/"; + /*** + * 技术监督管理 进度文件 + */ + String ELECTRICITY_QUALITY = "electricityQuality/"; + + + /*** + * 技术监督管理 普测结果报告 + */ + String SURVEY_RESULT = "surveyresult/"; } diff --git a/pqs-common/common-oss/src/main/java/com/njcn/oss/enums/OssResponseEnum.java b/pqs-common/common-oss/src/main/java/com/njcn/oss/enums/OssResponseEnum.java new file mode 100644 index 000000000..c26740e26 --- /dev/null +++ b/pqs-common/common-oss/src/main/java/com/njcn/oss/enums/OssResponseEnum.java @@ -0,0 +1,29 @@ +package com.njcn.oss.enums; + +import lombok.Getter; + +/** + * @author hongawen + * @version 1.0.0 + * @date 2023年03月07日 22:58 + */ +@Getter +public enum OssResponseEnum { + /** + * 文件服务器异常响应码的范围: + * A00550 ~ A00649 + */ + UPLOAD_FILE_ERROR("A00551","上传文件服务器错误,请检查数据"), + DOWNLOAD_FILE_ERROR("A00554","下载文件URL不存在,请检查数据") + + ; + + private final String code; + + private final String message; + + OssResponseEnum(String code, String message) { + this.code = code; + this.message = message; + } +} diff --git a/pqs-common/common-oss/src/main/java/com/njcn/oss/utils/FileStorageUtil.java b/pqs-common/common-oss/src/main/java/com/njcn/oss/utils/FileStorageUtil.java new file mode 100644 index 000000000..600c61a69 --- /dev/null +++ b/pqs-common/common-oss/src/main/java/com/njcn/oss/utils/FileStorageUtil.java @@ -0,0 +1,102 @@ +package com.njcn.oss.utils; + +import com.njcn.common.config.GeneralInfo; +import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.huawei.obs.util.OBSUtil; +import com.njcn.minioss.bo.MinIoUploadResDTO; +import com.njcn.minioss.config.MinIoProperties; +import com.njcn.minioss.util.MinIoUtils; +import com.njcn.oss.constant.GeneralConstant; +import com.njcn.oss.constant.OssPath; +import com.njcn.oss.enums.OssResponseEnum; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +/** + * @author hongawen + * @version 1.0.0 + * @date 2023年03月07日 22:24 + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class FileStorageUtil { + + private final GeneralInfo generalInfo; + + /*** + * 华为文件服务器工具类 + * 若有方法需求或方法不满足,去私有仓库下载huawei-obs-springboot-starter模块进行二次开发 + * 开发完毕后需deploy到maven私有仓库 + */ + private final OBSUtil obsUtil; + + /*** + * 免费开源Minioss文件服务器工具类 + * 若有方法需求或方法不满足,去私有仓库下载minioss-springboot-starter模块进行二次开发 + * 开发完毕后需deploy到maven私有仓库 + */ + private final MinIoUtils minIoUtils; + + private final MinIoProperties minIoProperties; + + + /*** + * 上传MultipartFile文件, + * @author hongawen + * @date 2023/3/7 22:48 + * @param multipartFile 文件源 + * @param dir 服务器文件存放路径 + */ + public String uploadMultipart(MultipartFile multipartFile, String dir) { + String filePath; + if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) { + filePath = dir + minIoUtils.minFileName(multipartFile.getOriginalFilename()); + obsUtil.multiFileUpload(multipartFile, filePath); + } else { + try { + //把名称存入数据 + MinIoUploadResDTO minIoUploadResDTO = minIoUtils.upload(multipartFile, minIoProperties.getBucket(), dir); + filePath = minIoUploadResDTO.getMinFileName(); + } catch (Exception e) { + throw new BusinessException(OssResponseEnum.UPLOAD_FILE_ERROR); + } + } + return filePath; + } + + + /*** + * 根据文件路径获取文件短期的一个url + * @author hongawen + * @date 2023/3/7 23:04 + * @param filePath 文件在服务器的路径 + */ + public String getFileUrl(String filePath){ + String url; + if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) { + url = obsUtil.getFileUrl(filePath); + } else { + url = minIoUtils.getObjectUrl(minIoProperties.getBucket(), filePath, 7 * 24 * 60 * 60); + } + return url; + } + + + /*** + * 根据文件路径删除指定文件对象 + * @author hongawen + * @date 2023/3/8 9:25 + * @param fileName 文件路径名 + */ + public void deleteFile(String fileName){ + if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) { + obsUtil.delete(fileName); + }else{ + minIoUtils.removeObject(minIoProperties.getBucket(), fileName); + } + } + +} diff --git a/pqs-common/pom.xml b/pqs-common/pom.xml index a92424a53..d59a856b1 100644 --- a/pqs-common/pom.xml +++ b/pqs-common/pom.xml @@ -22,8 +22,8 @@ common-influxdb common-poi common-echarts - common-minio common-huawei + common-oss diff --git a/pqs-event/event-boot/pom.xml b/pqs-event/event-boot/pom.xml index 27dc8d35e..9d26a9187 100644 --- a/pqs-event/event-boot/pom.xml +++ b/pqs-event/event-boot/pom.xml @@ -75,7 +75,7 @@ com.njcn - huawei-obs-springboot-starter + common-oss ${project.version} diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/TransientServiceImpl.java b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/TransientServiceImpl.java index 6961b31b8..c257403bc 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/TransientServiceImpl.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/TransientServiceImpl.java @@ -5,11 +5,11 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.common.config.GeneralInfo; -import com.njcn.common.pojo.constant.GeneralConstant; -import com.njcn.common.pojo.constant.OssPath; import com.njcn.common.pojo.enums.common.ServerEnum; import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.utils.PubUtils; +import com.njcn.oss.constant.GeneralConstant; +import com.njcn.oss.constant.OssPath; import com.njcn.device.pq.api.GeneralDeviceInfoClient; import com.njcn.device.pq.api.LineFeignClient; import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO; @@ -48,7 +48,6 @@ import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.ArrayList; -import java.util.Collection; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @@ -195,8 +194,6 @@ public class TransientServiceImpl implements TransientService { originalData = waveUtil.getComtrade(cfgStream, datStream, 1); // } else if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) { } else { - ip = "192.168.1.190"; - waveName = "PQMonitor_PQM1_002438_20210508_092859_938"; cfgPath = OssPath.WAVE_DIR + ip + StrUtil.SLASH + waveName + GeneralConstant.CFG; datPath = OssPath.WAVE_DIR + ip + StrUtil.SLASH + waveName + GeneralConstant.DAT; try ( diff --git a/pqs-event/event-boot/src/test/java/com/njcn/event/EventBootApplicationTest.java b/pqs-event/event-boot/src/test/java/com/njcn/event/EventBootApplicationTest.java index 8a62afc3e..aa4e69c66 100644 --- a/pqs-event/event-boot/src/test/java/com/njcn/event/EventBootApplicationTest.java +++ b/pqs-event/event-boot/src/test/java/com/njcn/event/EventBootApplicationTest.java @@ -1,6 +1,5 @@ package com.njcn.event; -import com.njcn.common.pojo.constant.OssPath; import com.njcn.event.enums.EventResponseEnum; import com.njcn.event.pojo.PqsEventDetail; import com.njcn.event.pojo.PqsOnlinerateAggregate; @@ -11,6 +10,7 @@ import com.njcn.event.utils.WaveUtil; import com.njcn.huawei.obs.util.OBSUtil; import com.njcn.influxdb.config.InfluxDbConfig; import com.njcn.influxdb.utils.InfluxDbUtils; +import com.njcn.oss.constant.OssPath; import org.influxdb.dto.QueryResult; import org.influxdb.impl.InfluxDBResultMapper; import org.influxdb.querybuilder.SelectQueryImpl; @@ -26,12 +26,9 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import javax.annotation.Resource; -import java.io.File; -import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.util.Arrays; -import java.util.Date; import java.util.List; import java.util.Objects; diff --git a/pqs-harmonic/harmonic-boot/pom.xml b/pqs-harmonic/harmonic-boot/pom.xml index b5f166343..1158f0fe1 100644 --- a/pqs-harmonic/harmonic-boot/pom.xml +++ b/pqs-harmonic/harmonic-boot/pom.xml @@ -60,18 +60,9 @@ event-api ${project.version} - - com.njcn - common-minio - ${project.version} - - - - me.tongfei - progressbar - 0.5.3 - + + com.squareup.okhttp3 @@ -101,7 +92,7 @@ com.njcn - huawei-obs-springboot-starter + common-oss ${project.version} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/algorithm/AlgorithmController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/algorithm/AlgorithmController.java index 127e1318d..c62a72e1c 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/algorithm/AlgorithmController.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/algorithm/AlgorithmController.java @@ -3,23 +3,16 @@ package com.njcn.harmonic.controller.algorithm; import cn.hutool.core.bean.BeanUtil; import com.njcn.common.config.GeneralInfo; import com.njcn.common.pojo.annotation.OperateInfo; -import com.njcn.common.pojo.constant.GeneralConstant; -import com.njcn.common.pojo.constant.OssPath; import com.njcn.common.pojo.enums.common.LogEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum; -import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.HttpResultUtil; -import com.njcn.harmonic.enums.HarmonicResponseEnum; import com.njcn.harmonic.pojo.param.RStatFileVO; import com.njcn.harmonic.pojo.po.RStatFile; -import com.njcn.harmonic.pojo.vo.PwRStatOrgVO; import com.njcn.harmonic.service.algorithm.RStatFileService; -import com.njcn.huawei.obs.util.OBSUtil; -import com.njcn.minio.bo.MinIoUploadResDTO; -import com.njcn.minio.config.MinIoProperties; -import com.njcn.minio.utils.MinIoUtils; +import com.njcn.oss.constant.OssPath; +import com.njcn.oss.utils.FileStorageUtil; import com.njcn.web.controller.BaseController; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -29,7 +22,6 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.annotation.Resource; import java.util.*; @@ -41,16 +33,10 @@ public class AlgorithmController extends BaseController { private final RStatFileService rStatFileService; - @Resource - private MinIoUtils minIoUtils; - @Resource - private MinIoProperties minIoProperties; + private final FileStorageUtil fileStorageUtil; + - @Resource - private GeneralInfo generalInfo; - @Resource - private OBSUtil obsUtil; /** * 算法保存 @@ -91,16 +77,7 @@ public class AlgorithmController extends BaseController { @ResponseBody public HttpResult uploadFile(MultipartFile file) { try { - //为2则为:华为OBS - if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) { - String fileName = file.getOriginalFilename(); - fileName = OssPath.ALGORITHM + minIoUtils.minFileName(fileName); - return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, obsUtil.multiFileUpload(file, fileName), null); - } else { - //把名称存入数据 - MinIoUploadResDTO upload = minIoUtils.upload(file, minIoProperties.getBucket(), OssPath.ALGORITHM); - return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, upload.getMinFileUrl(), null); - } + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, fileStorageUtil.uploadMultipart(file,OssPath.ALGORITHM), null); } catch (Exception e) { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, null); } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/CustomReportServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/CustomReportServiceImpl.java index 1df5ec05c..144a4dd2d 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/CustomReportServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/CustomReportServiceImpl.java @@ -1,5 +1,6 @@ package com.njcn.harmonic.service.impl; +import ch.qos.logback.core.rolling.helper.FileStoreUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; @@ -8,8 +9,6 @@ import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.njcn.common.config.GeneralInfo; -import com.njcn.common.pojo.constant.GeneralConstant; -import com.njcn.common.pojo.constant.OssPath; import com.njcn.common.pojo.enums.common.DataStateEnum; import com.njcn.common.pojo.exception.BusinessException; import com.njcn.harmonic.enums.HarmonicResponseEnum; @@ -28,14 +27,11 @@ import com.njcn.harmonic.pojo.vo.ReportTemplateVO; import com.njcn.harmonic.pojo.vo.ReportTreeVO; import com.njcn.harmonic.pojo.vo.SysDeptTempVO; import com.njcn.harmonic.service.CustomReportService; -import com.njcn.huawei.obs.util.OBSUtil; -import com.njcn.influxdb.config.InfluxDbConfig; import com.njcn.influxdb.param.InfluxDBSqlConstant; import com.njcn.influxdb.param.InfluxDBTableConstant; import com.njcn.influxdb.utils.InfluxDbUtils; -import com.njcn.minio.bo.MinIoUploadResDTO; -import com.njcn.minio.config.MinIoProperties; -import com.njcn.minio.utils.MinIoUtils; +import com.njcn.oss.constant.OssPath; +import com.njcn.oss.utils.FileStorageUtil; import com.njcn.system.api.DicDataFeignClient; import com.njcn.user.api.DeptFeignClient; import com.njcn.user.pojo.dto.DeptDTO; @@ -92,17 +88,7 @@ public class CustomReportServiceImpl implements CustomReportService { private final GeneralInfo generalInfo; - @Resource - private MinIoUtils minIoUtils; - - @Resource - private MinIoProperties minIoProperties; - - @Resource - private InfluxDbConfig influxDbConfig; - - @Resource - private OBSUtil obsUtil; + private final FileStorageUtil fileStorageUtil; @Override @@ -117,20 +103,7 @@ public class CustomReportServiceImpl implements CustomReportService { } catch (Exception e) { throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_JSON); } - - //为2则为:华为OBS - if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) { - fileName = OssPath.HARMONIC_EXCEL_TEMPLATE + minIoUtils.minFileName(fileName); - obsUtil.multiFileUpload(fileContent,fileName); - reportTemplateParam.setContent(fileName); - } else { - //否则认为是minioss - //文件上传到Minio服务器,存入文件名 - MinIoUploadResDTO minIoUploadResDTO = contentToMinio(reportTemplateParam.getFileContent(), OssPath.HARMONIC_EXCEL_TEMPLATE); - reportTemplateParam.setContent(minIoUploadResDTO.getMinFileName()); - } - - + reportTemplateParam.setContent(fileStorageUtil.uploadMultipart(fileContent, OssPath.HARMONIC_EXCEL_TEMPLATE)); //新增模板表 ExcelRptTemp excelRptTemp = new ExcelRptTemp(); BeanUtils.copyProperties(reportTemplateParam, excelRptTemp); @@ -155,7 +128,6 @@ public class CustomReportServiceImpl implements CustomReportService { public boolean updateCustomReportTemplate(ReportTemplateParam.UpdateReportTemplateParam reportTemplateParam) { checkName(reportTemplateParam, true); MultipartFile fileContent = reportTemplateParam.getFileContent(); - String fileName = fileContent.getName(); //检验模板json数据规范 try { String content = MultipartFileToString(fileContent); @@ -166,18 +138,8 @@ public class CustomReportServiceImpl implements CustomReportService { //删除之前的文件 ExcelRptTemp excelRptTempOld = excelRptTempMapper.selectById(reportTemplateParam.getId()); - //为2则为:华为OBS - if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) { - obsUtil.delete(excelRptTempOld.getContent()); - fileName = OssPath.HARMONIC_EXCEL_TEMPLATE + minIoUtils.minFileName(fileName); - obsUtil.multiFileUpload(fileContent,fileName); - reportTemplateParam.setContent(fileName); - }else{ - minIoUtils.removeObject(minIoProperties.getBucket(), excelRptTempOld.getContent()); - //文件上传到Minio服务器,存入文件名 - MinIoUploadResDTO minIoUploadResDTO = contentToMinio(reportTemplateParam.getFileContent(), OssPath.HARMONIC_EXCEL_TEMPLATE); - reportTemplateParam.setContent(minIoUploadResDTO.getMinFileName()); - } + fileStorageUtil.deleteFile(excelRptTempOld.getContent()); + reportTemplateParam.setContent(fileStorageUtil.uploadMultipart(fileContent, OssPath.HARMONIC_EXCEL_TEMPLATE)); //修改模板数据 ExcelRptTemp excelRptTemp = new ExcelRptTemp(); BeanUtils.copyProperties(reportTemplateParam, excelRptTemp); @@ -218,7 +180,7 @@ public class CustomReportServiceImpl implements CustomReportService { @Override public ExcelRptTemp getCustomReportTemplateById(String id) { ExcelRptTemp excelRptTemp = excelRptTempMapper.selectById(id); - String contentUrl = minIoUtils.getObjectUrl(minIoProperties.getBucket(), excelRptTemp.getContent(), 7 * 24 * 60 * 60); + String contentUrl = fileStorageUtil.getFileUrl(excelRptTemp.getContent()); excelRptTemp.setContent(contentUrl); return excelRptTemp; } @@ -265,9 +227,9 @@ public class CustomReportServiceImpl implements CustomReportService { List excelRpts = excelRptMapper.selectList(lambdaQuery); String content; if (excelRpts.size() > 0) { - content = minIoUtils.getObjectUrl(minIoProperties.getBucket(), excelRpts.get(0).getContent(), 7 * 24 * 60 * 60); + content = fileStorageUtil.getFileUrl(excelRpts.get(0).getContent()); } else { - content = minIoUtils.getObjectUrl(minIoProperties.getBucket(), analyzeReport(reportSearchParam, excelRptTemp), 7 * 24 * 60 * 60); + content = fileStorageUtil.getFileUrl(analyzeReport(reportSearchParam, excelRptTemp)); } //拼接数据 @@ -394,7 +356,7 @@ public class CustomReportServiceImpl implements CustomReportService { JSONArray jsonArray = null; try { //通过文件服务器获取 - String objectUrl = minIoUtils.getObjectUrl(minIoProperties.getBucket(), excelRptTemp.getContent(), 7 * 24 * 60 * 60); + String objectUrl = fileStorageUtil.getFileUrl(excelRptTemp.getContent()); jsonArray = JSONUtil.parseArray(urlToString(objectUrl)); jsonArray.forEach(item -> { JSONObject jsonObject = (JSONObject) item; @@ -486,22 +448,9 @@ public class CustomReportServiceImpl implements CustomReportService { }); } - String newContent; File newFile = stringToFile(jsonArray.toString()); MultipartFile newMultipartFile = getMultipartFile(newFile); - //为2则为:华为OBS - if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) { - newContent = newMultipartFile.getName(); - newContent = OssPath.HARMONIC_EXCEL_REPORT + minIoUtils.minFileName(newContent); - obsUtil.multiFileUpload(newMultipartFile,newContent); - }else{ - //否则认为是minioss - //文件上传到Minio服务器,存入文件名 - MinIoUploadResDTO minIoUploadResDTO = contentToMinio(newMultipartFile,OssPath.HARMONIC_EXCEL_REPORT); - newContent = minIoUploadResDTO.getMinFileName(); - } - - + String newContent = fileStorageUtil.uploadMultipart(newMultipartFile, OssPath.HARMONIC_EXCEL_REPORT); //存入报表库 ExcelRpt excelRpt = new ExcelRpt(); @@ -574,21 +523,6 @@ public class CustomReportServiceImpl implements CustomReportService { endList.add(data); } - /** - * 上传文件到Minio - * - * @param file 文件 - * @return 成功标记 - */ - private MinIoUploadResDTO contentToMinio(MultipartFile file, String dir) { - try { - //把名称存入数据 - MinIoUploadResDTO upload = minIoUtils.upload(file, minIoProperties.getBucket(), dir); - return upload; - } catch (Exception e) { - throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_FILE); - } - } /** * 文件Url 转 String @@ -619,7 +553,7 @@ public class CustomReportServiceImpl implements CustomReportService { String businessTempPath = generalInfo.getBusinessTempPath(); File distFile = new File(businessTempPath + File.separator + "temp.json"); try { - if (!distFile.getParentFile().exists()){ + if (!distFile.getParentFile().exists()) { distFile.getParentFile().mkdirs(); } bufferedReader = new BufferedReader(new StringReader(res)); diff --git a/pqs-prepare/harmonic-prepare/pom.xml b/pqs-prepare/harmonic-prepare/pom.xml index dc1f818f3..079750ceb 100644 --- a/pqs-prepare/harmonic-prepare/pom.xml +++ b/pqs-prepare/harmonic-prepare/pom.xml @@ -112,16 +112,11 @@ com.njcn - common-minio + common-oss ${project.version} - - - me.tongfei - progressbar - 0.5.3 - + com.squareup.okhttp3 @@ -129,17 +124,6 @@ 4.8.1 - - io.minio - minio - 8.2.1 - - - com.squareup.okhttp3 - okhttp - - - com.njcn diff --git a/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/ReportServiceImpl.java b/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/ReportServiceImpl.java index 8de56fda1..76167cec2 100644 --- a/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/ReportServiceImpl.java +++ b/pqs-prepare/harmonic-prepare/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/ReportServiceImpl.java @@ -19,9 +19,9 @@ import com.njcn.harmonic.pojo.po.ExcelRptTemp; import com.njcn.influxdb.param.InfluxDBSqlConstant; import com.njcn.influxdb.param.InfluxDBTableConstant; import com.njcn.influxdb.utils.InfluxDbUtils; -import com.njcn.minio.bo.MinIoUploadResDTO; -import com.njcn.minio.config.MinIoProperties; -import com.njcn.minio.utils.MinIoUtils; +import com.njcn.minioss.bo.MinIoUploadResDTO; +import com.njcn.oss.constant.OssPath; +import com.njcn.oss.utils.FileStorageUtil; import com.njcn.prepare.harmonic.constant.AlgorithmParam; import com.njcn.prepare.harmonic.mapper.mysql.line.ExcelRptMapper; import com.njcn.prepare.harmonic.mapper.mysql.line.ExcelRptTempMapper; @@ -65,11 +65,7 @@ public class ReportServiceImpl implements ReportService { private final GeneralInfo generalInfo; - @Resource - private MinIoUtils minIoUtils; - - @Resource - private MinIoProperties minIoProperties; + private final FileStorageUtil fileStorageUtil; @Override @@ -100,7 +96,7 @@ public class ReportServiceImpl implements ReportService { for (ExcelRptTemp excelRptTemp : reportTemplateList) { try { //获取content解析数据 - String objectUrl = minIoUtils.getObjectUrl(minIoProperties.getBucket(), excelRptTemp.getContent(), 7 * 24 * 60 * 60); + String objectUrl = fileStorageUtil.getFileUrl(excelRptTemp.getContent()); jsonArray = JSONUtil.parseArray(urlToString(objectUrl)); dataList = getDataList(jsonArray); } catch (Exception e) { @@ -144,13 +140,11 @@ public class ReportServiceImpl implements ReportService { //月:例如2022十月份,传入2022-10-01进行匹配,有则更新无则插入 //周:例如2022年第五周,传入2022-01-23(周一)进行匹配,有则更新无则插入 //日:直接插入,无需配对 - //文件上传到Minio服务器,存入文件名 - MinIoUploadResDTO minIoUploadResDTO = contentToMinio(jsonArray.toString()); - String afterContent = minIoUploadResDTO.getMinFileName(); + //文件上传到文件服务器,存入文件名 if (BizParamConstant.STAT_BIZ_DAY.equals(reportParam.getType().toString())){ - rptInsert(reportParam, lineId, excelRptTemp, afterContent); + rptInsert(reportParam, lineId, excelRptTemp, contentToOss(jsonArray.toString())); }else{ - rptBiz(reportParam, lineId, excelRptTemp, afterContent); + rptBiz(reportParam, lineId, excelRptTemp, contentToOss(jsonArray.toString())); } } } @@ -331,23 +325,17 @@ public class ReportServiceImpl implements ReportService { /** - * 上传文件到Minio + * 上传文件到Oss * * @param content 文件 * @return 成功标记 */ - private MinIoUploadResDTO contentToMinio(String content) { + private String contentToOss(String content) { //上传到minio String businessTempPath = generalInfo.getBusinessTempPath(); - File file = stringToFile(content, businessTempPath + File.separator + "a.json"); + File file = stringToFile(content, businessTempPath + File.separator + "temp.json"); MultipartFile multiFile = getMultipartFile(file); - try { - //把名称存入数据 - MinIoUploadResDTO upload = minIoUtils.upload(multiFile, minIoProperties.getBucket(), "report/"); - return upload; - } catch (Exception e) { - throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_FILE); - } + return fileStorageUtil.uploadMultipart(multiFile, OssPath.HARMONIC_EXCEL_REPORT); } /** diff --git a/pqs-process/process-api/src/main/java/com/njcn/process/enums/ProcessResponseEnum.java b/pqs-process/process-api/src/main/java/com/njcn/process/enums/ProcessResponseEnum.java index c9c6d818f..bb2c414db 100644 --- a/pqs-process/process-api/src/main/java/com/njcn/process/enums/ProcessResponseEnum.java +++ b/pqs-process/process-api/src/main/java/com/njcn/process/enums/ProcessResponseEnum.java @@ -16,10 +16,8 @@ public enum ProcessResponseEnum { * A00550 ~ A00649 */ PROCESS_COMMON_ERROR("A00550","监督管理模块异常"), - UPLOAD_FILE_ERROR("A00551","上传文件服务器错误,请检查数据"), ARCHIVE_ERROR("A00552","不满足归档调节,操作失败!"), PROCESS_ERROR("A00553","当前流程未审核通过,操作失败!"), - DOWNLOAD_FILE_ERROR("A00554","下载文件URL不存在,请检查数据"), ; diff --git a/pqs-process/process-boot/pom.xml b/pqs-process/process-boot/pom.xml index 7b49be431..a7ed2024d 100644 --- a/pqs-process/process-boot/pom.xml +++ b/pqs-process/process-boot/pom.xml @@ -67,18 +67,9 @@ ${project.version} - - - com.njcn - common-minio - ${project.version} - - - me.tongfei - progressbar - 0.5.3 - + + com.squareup.okhttp3 @@ -117,7 +108,7 @@ com.njcn - huawei-obs-springboot-starter + common-oss ${project.version} diff --git a/pqs-process/process-boot/src/main/java/com/njcn/process/controller/ElectricityQualityIssuesController.java b/pqs-process/process-boot/src/main/java/com/njcn/process/controller/ElectricityQualityIssuesController.java index 7913d9cab..54646664c 100644 --- a/pqs-process/process-boot/src/main/java/com/njcn/process/controller/ElectricityQualityIssuesController.java +++ b/pqs-process/process-boot/src/main/java/com/njcn/process/controller/ElectricityQualityIssuesController.java @@ -8,7 +8,6 @@ import com.njcn.common.pojo.enums.common.LogEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.HttpResultUtil; -import com.njcn.minio.bo.MinIoUploadResDTO; import com.njcn.process.pojo.param.*; import com.njcn.process.pojo.vo.*; import com.njcn.process.service.IssuesService; @@ -185,11 +184,11 @@ public class ElectricityQualityIssuesController extends BaseController { @PostMapping("/uploadFile") @ApiOperation("上传文件") @ApiImplicitParam(name = "file", value = "填报进度文件", required = true) - public HttpResult uploadFile(@RequestParam("file") MultipartFile issuesFile){ + public HttpResult uploadFile(@RequestParam("file") MultipartFile issuesFile){ String methodDescribe = getMethodDescribe("uploadFile"); - MinIoUploadResDTO out = issuesService.uploadFile(issuesFile); - out.setMinFileName(issuesFile.getOriginalFilename()); - return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, out, methodDescribe); + String filePath = issuesService.uploadFile(issuesFile); +// out.setMinFileName(issuesFile.getOriginalFilename()); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, filePath, methodDescribe); } @OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.DOWNLOAD) diff --git a/pqs-process/process-boot/src/main/java/com/njcn/process/controller/RGeneralSurveyPlanController.java b/pqs-process/process-boot/src/main/java/com/njcn/process/controller/RGeneralSurveyPlanController.java index e99de112b..91b57fb45 100644 --- a/pqs-process/process-boot/src/main/java/com/njcn/process/controller/RGeneralSurveyPlanController.java +++ b/pqs-process/process-boot/src/main/java/com/njcn/process/controller/RGeneralSurveyPlanController.java @@ -9,7 +9,7 @@ import com.njcn.common.pojo.enums.common.LogEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.HttpResultUtil; -import com.njcn.minio.bo.MinIoUploadResDTO; +import com.njcn.minioss.bo.MinIoUploadResDTO; import com.njcn.poi.util.PoiUtil; import com.njcn.process.pojo.param.*; import com.njcn.process.pojo.po.RGeneralSurveyPlanPO; diff --git a/pqs-process/process-boot/src/main/java/com/njcn/process/service/IssuesService.java b/pqs-process/process-boot/src/main/java/com/njcn/process/service/IssuesService.java index 255a1cc9a..da33dd585 100644 --- a/pqs-process/process-boot/src/main/java/com/njcn/process/service/IssuesService.java +++ b/pqs-process/process-boot/src/main/java/com/njcn/process/service/IssuesService.java @@ -1,7 +1,6 @@ package com.njcn.process.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.njcn.minio.bo.MinIoUploadResDTO; import com.njcn.process.pojo.param.*; import com.njcn.process.pojo.vo.*; import org.springframework.web.multipart.MultipartFile; @@ -79,7 +78,7 @@ public interface IssuesService { /** * 上传文件 */ - MinIoUploadResDTO uploadFile(MultipartFile issuesFile); + String uploadFile(MultipartFile issuesFile); /** * 下载文件 diff --git a/pqs-process/process-boot/src/main/java/com/njcn/process/service/RGeneralSurveyPlanPOService.java b/pqs-process/process-boot/src/main/java/com/njcn/process/service/RGeneralSurveyPlanPOService.java index eeb407748..cb8c2b461 100644 --- a/pqs-process/process-boot/src/main/java/com/njcn/process/service/RGeneralSurveyPlanPOService.java +++ b/pqs-process/process-boot/src/main/java/com/njcn/process/service/RGeneralSurveyPlanPOService.java @@ -2,7 +2,7 @@ package com.njcn.process.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.jeffreyning.mybatisplus.service.IMppService; -import com.njcn.minio.bo.MinIoUploadResDTO; +import com.njcn.minioss.bo.MinIoUploadResDTO; import com.njcn.process.pojo.param.*; import com.njcn.process.pojo.po.RGeneralSurveyPlanPO; import com.njcn.process.pojo.vo.SurveyPlanExcel; diff --git a/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/IssuesServiceImpl.java b/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/IssuesServiceImpl.java index 4495ae504..1d8e9f4c8 100644 --- a/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/IssuesServiceImpl.java +++ b/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/IssuesServiceImpl.java @@ -13,9 +13,8 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.common.pojo.constant.BizParamConstant; import com.njcn.common.pojo.exception.BusinessException; -import com.njcn.minio.bo.MinIoUploadResDTO; -import com.njcn.minio.config.MinIoProperties; -import com.njcn.minio.utils.MinIoUtils; +import com.njcn.oss.constant.OssPath; +import com.njcn.oss.utils.FileStorageUtil; import com.njcn.process.enums.ProcessResponseEnum; import com.njcn.process.mapper.*; import com.njcn.process.pojo.param.*; @@ -41,6 +40,7 @@ import java.util.Objects; /** * 电能质量问题实现类 + * * @author xiaoyao * @version 1.0.0 * @createTime 2022/11/14 11:03 @@ -68,19 +68,15 @@ public class IssuesServiceImpl implements IssuesService { private final RStatElectricQualityProblemLogMapper rStatElectricQualityProblemLogMapper; - @Resource - private MinIoUtils minIoUtils; - - @Resource - private MinIoProperties minIoProperties; + private final FileStorageUtil fileStorageUtil; /** * 新增电能质量问题流程表信息 */ - private LocalDateTime addIssues(IssuesParam issuesParam,String powerQualityProblemNo){ + private LocalDateTime addIssues(IssuesParam issuesParam, String powerQualityProblemNo) { RStatElectricQualityProblemFlow issues = new RStatElectricQualityProblemFlow(); LocalDateTime local = LocalDateTimeUtil.now(); - BeanUtil.copyProperties(issuesParam,issues); + BeanUtil.copyProperties(issuesParam, issues); issues.setPowerQualityProblemNo(powerQualityProblemNo); issues.setDataDate(local); issues.setStartTime(null); @@ -94,16 +90,16 @@ public class IssuesServiceImpl implements IssuesService { /** * 生成问题编号 */ - private String getPowerQualityProblemNo(IssuesParam issuesParam){ + private String getPowerQualityProblemNo(IssuesParam issuesParam) { StringBuilder powerQualityProblemNo = new StringBuilder(); - powerQualityProblemNo.append(PinyinUtil.getFirstLetter(issuesParam.getOrgName(),"").toUpperCase()).append("-"); - if (DicDataEnum.ONLINE.getCode().equals(issuesParam.getProblemSources())){ + powerQualityProblemNo.append(PinyinUtil.getFirstLetter(issuesParam.getOrgName(), "").toUpperCase()).append("-"); + if (DicDataEnum.ONLINE.getCode().equals(issuesParam.getProblemSources())) { powerQualityProblemNo.append("ZXJC"); - }else if (DicDataEnum.GENERAL.getCode().equals(issuesParam.getProblemSources())){ + } else if (DicDataEnum.GENERAL.getCode().equals(issuesParam.getProblemSources())) { powerQualityProblemNo.append("PCCB"); - }else if (DicDataEnum.USER_COMPLAINTS.getCode().equals(issuesParam.getProblemSources())){ + } else if (DicDataEnum.USER_COMPLAINTS.getCode().equals(issuesParam.getProblemSources())) { powerQualityProblemNo.append("YHTS"); - }else if (DicDataEnum.DEV_EXCEPTION.getCode().equals(issuesParam.getProblemSources())){ + } else if (DicDataEnum.DEV_EXCEPTION.getCode().equals(issuesParam.getProblemSources())) { powerQualityProblemNo.append("YWYC"); } String nowDate = DateUtil.format(new Date(), "yyyyMMdd"); @@ -112,9 +108,9 @@ public class IssuesServiceImpl implements IssuesService { LambdaQueryWrapper issuesQuery = new LambdaQueryWrapper<>(); LocalDateTime local = LocalDateTimeUtil.parse(processDate + "T00:00:00"); LocalDateTime localEnd = LocalDateTimeUtil.parse(processDate + "T23:59:59"); - issuesQuery.ge(RStatElectricQualityProblemFlow::getDataDate, local).le(RStatElectricQualityProblemFlow::getDataDate,localEnd); + issuesQuery.ge(RStatElectricQualityProblemFlow::getDataDate, local).le(RStatElectricQualityProblemFlow::getDataDate, localEnd); Integer count = issuesMapper.selectCount(issuesQuery); - powerQualityProblemNo.append(StrUtil.padPre(String.valueOf(count + 1),5, '0')); + powerQualityProblemNo.append(StrUtil.padPre(String.valueOf(count + 1), 5, '0')); return powerQualityProblemNo.toString(); } @@ -124,11 +120,11 @@ public class IssuesServiceImpl implements IssuesService { @Override public void addExcessiveIssues(ExcessiveParam excessiveParam) { IssuesParam issuesParam = new IssuesParam(); - BeanUtil.copyProperties(excessiveParam,issuesParam); + BeanUtil.copyProperties(excessiveParam, issuesParam); String powerQualityProblemNo = getPowerQualityProblemNo(issuesParam); - LocalDateTime localDateTime = addIssues(issuesParam,powerQualityProblemNo); + LocalDateTime localDateTime = addIssues(issuesParam, powerQualityProblemNo); RMpOnlineMonitorOverproofProblem excessive = new RMpOnlineMonitorOverproofProblem(); - BeanUtil.copyProperties(excessiveParam,excessive); + BeanUtil.copyProperties(excessiveParam, excessive); excessive.setPowerQualityProblemNo(powerQualityProblemNo); excessive.setDataDate(localDateTime); excessiveMapper.insert(excessive); @@ -140,12 +136,12 @@ public class IssuesServiceImpl implements IssuesService { @Override public void addGeneralSurveyIssues(GeneralSurveyParam generalSurveyParam) { IssuesParam issuesParam = new IssuesParam(); - BeanUtil.copyProperties(generalSurveyParam,issuesParam); + BeanUtil.copyProperties(generalSurveyParam, issuesParam); String powerQualityProblemNo = getPowerQualityProblemNo(issuesParam); - LocalDateTime localDateTime = addIssues(issuesParam,powerQualityProblemNo); + LocalDateTime localDateTime = addIssues(issuesParam, powerQualityProblemNo); RMpGeneralSurveyOverproofProblem generalSurvey = new RMpGeneralSurveyOverproofProblem(); - BeanUtil.copyProperties(generalSurveyParam,generalSurvey); - generalSurvey.setOverLimitTarget(ArrayUtil.toString(generalSurveyParam.getSteadyState())+ArrayUtil.toString(generalSurveyParam.getTransientIndicators())); + BeanUtil.copyProperties(generalSurveyParam, generalSurvey); + generalSurvey.setOverLimitTarget(ArrayUtil.toString(generalSurveyParam.getSteadyState()) + ArrayUtil.toString(generalSurveyParam.getTransientIndicators())); generalSurvey.setPowerQualityProblemNo(powerQualityProblemNo); generalSurvey.setDataDate(localDateTime); generalSurveyMapper.insert(generalSurvey); @@ -157,12 +153,12 @@ public class IssuesServiceImpl implements IssuesService { @Override public void addComplaintIssues(ComplaintParam complaintParam) { IssuesParam issuesParam = new IssuesParam(); - BeanUtil.copyProperties(complaintParam,issuesParam); + BeanUtil.copyProperties(complaintParam, issuesParam); String powerQualityProblemNo = getPowerQualityProblemNo(issuesParam); - LocalDateTime localDateTime = addIssues(issuesParam,powerQualityProblemNo); + LocalDateTime localDateTime = addIssues(issuesParam, powerQualityProblemNo); RMpUserComplaint complaint = new RMpUserComplaint(); - BeanUtil.copyProperties(complaintParam,complaint); - complaint.setAbnormalTarget(ArrayUtil.toString(complaintParam.getSteadyState())+ArrayUtil.toString(complaintParam.getTransientIndicators())); + BeanUtil.copyProperties(complaintParam, complaint); + complaint.setAbnormalTarget(ArrayUtil.toString(complaintParam.getSteadyState()) + ArrayUtil.toString(complaintParam.getTransientIndicators())); complaint.setPowerQualityProblemNo(powerQualityProblemNo); complaint.setDataDate(localDateTime); complaintMapper.insert(complaint); @@ -174,12 +170,12 @@ public class IssuesServiceImpl implements IssuesService { @Override public void addAbnormalIssues(AbnormalParam abnormalParam) { IssuesParam issuesParam = new IssuesParam(); - BeanUtil.copyProperties(abnormalParam,issuesParam); + BeanUtil.copyProperties(abnormalParam, issuesParam); String powerQualityProblemNo = getPowerQualityProblemNo(issuesParam); - LocalDateTime localDateTime = addIssues(issuesParam,powerQualityProblemNo); + LocalDateTime localDateTime = addIssues(issuesParam, powerQualityProblemNo); RMpOperationMonitorAbnormal abnormal = new RMpOperationMonitorAbnormal(); - BeanUtil.copyProperties(abnormalParam,abnormal); - abnormal.setAbnormalTarget(ArrayUtil.toString(abnormalParam.getSteadyState())+ArrayUtil.toString(abnormalParam.getTransientIndicators())); + BeanUtil.copyProperties(abnormalParam, abnormal); + abnormal.setAbnormalTarget(ArrayUtil.toString(abnormalParam.getSteadyState()) + ArrayUtil.toString(abnormalParam.getTransientIndicators())); abnormal.setPowerQualityProblemNo(powerQualityProblemNo); abnormal.setDataDate(localDateTime); abnormalMapper.insert(abnormal); @@ -194,26 +190,26 @@ public class IssuesServiceImpl implements IssuesService { Date dateOut = DateUtil.parse(param.getDataDate()); Date dateBegin = new Date(); Date dateEnd = new Date(); - if (Integer.valueOf(BizParamConstant.STAT_BIZ_YEAR).equals(param.getDataType())){ + if (Integer.valueOf(BizParamConstant.STAT_BIZ_YEAR).equals(param.getDataType())) { dateBegin = DateUtil.beginOfYear(dateOut); dateEnd = DateUtil.endOfYear(dateOut); - }else if (Integer.valueOf(BizParamConstant.STAT_BIZ_QUARTER).equals(param.getDataType())){ + } else if (Integer.valueOf(BizParamConstant.STAT_BIZ_QUARTER).equals(param.getDataType())) { dateBegin = DateUtil.beginOfQuarter(dateOut); dateEnd = DateUtil.endOfQuarter(dateOut); - }else if (Integer.valueOf(BizParamConstant.STAT_BIZ_MONTH).equals(param.getDataType())){ + } else if (Integer.valueOf(BizParamConstant.STAT_BIZ_MONTH).equals(param.getDataType())) { dateBegin = DateUtil.beginOfMonth(dateOut); dateEnd = DateUtil.endOfMonth(dateOut); } - List deptIds = deptFeignClient.getDepSonIdtByDeptId(param.getOrgNo ()).getData(); + List deptIds = deptFeignClient.getDepSonIdtByDeptId(param.getOrgNo()).getData(); - List out = issuesMapper.getIssues(deptIds,param,DateUtil.formatDateTime(dateBegin), DateUtil.formatDateTime(dateEnd)); + List out = issuesMapper.getIssues(deptIds, param, DateUtil.formatDateTime(dateBegin), DateUtil.formatDateTime(dateEnd)); if (!CollectionUtils.isEmpty(out)) { out.forEach(data -> data.setOrgName((deptFeignClient.getDeptById(data.getOrgNo()).getData().getName()))); /*问题来源*/ List problemSourcesDictData = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.PROBLEM_SOURCES.getCode()).getData(); problemSourcesDictData.forEach(dict -> out.stream().filter(data -> dict.getCode().equals(data.getProblemSources())).forEach(data -> data.setProblemSources(dict.getName()))); page.setTotal(out.size()); - int pages = (int)Math.ceil(out.size()*1.0/param.getPageSize()); + int pages = (int) Math.ceil(out.size() * 1.0 / param.getPageSize()); page.setPages(pages); List> partition = Lists.partition(out, param.getPageSize()); List issuesVOS = partition.get(param.getPageNum() - 1); @@ -225,49 +221,49 @@ public class IssuesServiceImpl implements IssuesService { /** * 问题基本信息查询 */ - private RStatElectricQualityProblemFlow issuesSelectOne(String powerQualityProblemNo){ + private RStatElectricQualityProblemFlow issuesSelectOne(String powerQualityProblemNo) { LambdaQueryWrapper issuesQuery = new LambdaQueryWrapper<>(); - issuesQuery.eq(RStatElectricQualityProblemFlow::getPowerQualityProblemNo,powerQualityProblemNo); + issuesQuery.eq(RStatElectricQualityProblemFlow::getPowerQualityProblemNo, powerQualityProblemNo); return issuesMapper.selectOne(issuesQuery); } /** * 填报流程详情查询 */ - private RMpElectricQualityProblemFlowDetails flowDetailSelectOne(String powerQualityProblemNo){ + private RMpElectricQualityProblemFlowDetails flowDetailSelectOne(String powerQualityProblemNo) { LambdaQueryWrapper flowQuery = new LambdaQueryWrapper<>(); - flowQuery.eq(RMpElectricQualityProblemFlowDetails::getPowerQualityProblemNo,powerQualityProblemNo); + flowQuery.eq(RMpElectricQualityProblemFlowDetails::getPowerQualityProblemNo, powerQualityProblemNo); return flowDetailsMapper.selectOne(flowQuery); } /** * 处理填报信息 */ - private FlowDetailVO processFlowDetail(RMpElectricQualityProblemFlowDetails details){ + private FlowDetailVO processFlowDetail(RMpElectricQualityProblemFlowDetails details) { FlowDetailVO process = new FlowDetailVO(); - BeanUtil.copyProperties(details,process); - if (!StrUtil.isEmpty(details.getReportProcessContentYyfx())){ - process.setReportProcessContentYyfx(StrUtil.removeSuffix(StrUtil.removePrefix(details.getReportProcessContentYyfx(),"["),"]").split(",")); + BeanUtil.copyProperties(details, process); + if (!StrUtil.isEmpty(details.getReportProcessContentYyfx())) { + process.setReportProcessContentYyfx(StrUtil.removeSuffix(StrUtil.removePrefix(details.getReportProcessContentYyfx(), "["), "]").split(",")); StrUtil.trim(process.getReportProcessContentYyfx()); } - if (!StrUtil.isEmpty(details.getUserReportProcessContentYyfx())){ - process.setUserReportProcessContentYyfx(StrUtil.removeSuffix(StrUtil.removePrefix(details.getUserReportProcessContentYyfx(),"["),"]").split(",")); + if (!StrUtil.isEmpty(details.getUserReportProcessContentYyfx())) { + process.setUserReportProcessContentYyfx(StrUtil.removeSuffix(StrUtil.removePrefix(details.getUserReportProcessContentYyfx(), "["), "]").split(",")); StrUtil.trim(process.getUserReportProcessContentYyfx()); } - if (!StrUtil.isEmpty(details.getReportProcessContentJhzg())){ - process.setReportProcessContentJhzg(StrUtil.removeSuffix(StrUtil.removePrefix(details.getReportProcessContentJhzg(),"["),"]").split(",")); + if (!StrUtil.isEmpty(details.getReportProcessContentJhzg())) { + process.setReportProcessContentJhzg(StrUtil.removeSuffix(StrUtil.removePrefix(details.getReportProcessContentJhzg(), "["), "]").split(",")); StrUtil.trim(process.getReportProcessContentJhzg()); } - if (!StrUtil.isEmpty(details.getUserReportProcessContentJhzg())){ - process.setUserReportProcessContentJhzg(StrUtil.removeSuffix(StrUtil.removePrefix(details.getUserReportProcessContentJhzg(),"["),"]").split(",")); + if (!StrUtil.isEmpty(details.getUserReportProcessContentJhzg())) { + process.setUserReportProcessContentJhzg(StrUtil.removeSuffix(StrUtil.removePrefix(details.getUserReportProcessContentJhzg(), "["), "]").split(",")); StrUtil.trim(process.getUserReportProcessContentJhzg()); } - if (!StrUtil.isEmpty(details.getReportProcessContentSjcq())){ - process.setReportProcessContentSjcq(StrUtil.removeSuffix(StrUtil.removePrefix(details.getReportProcessContentSjcq(),"["),"]").split(",")); + if (!StrUtil.isEmpty(details.getReportProcessContentSjcq())) { + process.setReportProcessContentSjcq(StrUtil.removeSuffix(StrUtil.removePrefix(details.getReportProcessContentSjcq(), "["), "]").split(",")); StrUtil.trim(process.getReportProcessContentSjcq()); } - if (!StrUtil.isEmpty(details.getUserReportProcessContentSjcq())){ - process.setUserReportProcessContentSjcq(StrUtil.removeSuffix(StrUtil.removePrefix(details.getUserReportProcessContentSjcq(),"["),"]").split(",")); + if (!StrUtil.isEmpty(details.getUserReportProcessContentSjcq())) { + process.setUserReportProcessContentSjcq(StrUtil.removeSuffix(StrUtil.removePrefix(details.getUserReportProcessContentSjcq(), "["), "]").split(",")); StrUtil.trim(process.getUserReportProcessContentSjcq()); } return process; @@ -279,14 +275,14 @@ public class IssuesServiceImpl implements IssuesService { @Override public ExcessiveDetailVO getExcessiveDetail(String powerQualityProblemNo) { ExcessiveDetailVO detail = new ExcessiveDetailVO(); - BeanUtil.copyProperties(issuesSelectOne(powerQualityProblemNo),detail); + BeanUtil.copyProperties(issuesSelectOne(powerQualityProblemNo), detail); detail.setOrgName(deptFeignClient.getDeptById(detail.getOrgNo()).getData().getName()); LambdaQueryWrapper excessiveQuery = new LambdaQueryWrapper<>(); - excessiveQuery.eq(RMpOnlineMonitorOverproofProblem::getPowerQualityProblemNo,powerQualityProblemNo); + excessiveQuery.eq(RMpOnlineMonitorOverproofProblem::getPowerQualityProblemNo, powerQualityProblemNo); RMpOnlineMonitorOverproofProblem excessiveOut = excessiveMapper.selectOne(excessiveQuery); - BeanUtil.copyProperties(excessiveOut,detail); + BeanUtil.copyProperties(excessiveOut, detail); RMpElectricQualityProblemFlowDetails flowDetails = flowDetailSelectOne(powerQualityProblemNo); - BeanUtil.copyProperties(processFlowDetail(flowDetails),detail); + BeanUtil.copyProperties(processFlowDetail(flowDetails), detail); return detail; } @@ -296,16 +292,16 @@ public class IssuesServiceImpl implements IssuesService { @Override public GeneralSurveyVO getGeneralSurveyDetail(String powerQualityProblemNo) { GeneralSurveyVO detail = new GeneralSurveyVO(); - BeanUtil.copyProperties(issuesSelectOne(powerQualityProblemNo),detail); + BeanUtil.copyProperties(issuesSelectOne(powerQualityProblemNo), detail); detail.setOrgName(deptFeignClient.getDeptById(detail.getOrgNo()).getData().getName()); LambdaQueryWrapper generalSurveyQuery = new LambdaQueryWrapper<>(); - generalSurveyQuery.eq(RMpGeneralSurveyOverproofProblem::getPowerQualityProblemNo,powerQualityProblemNo); + generalSurveyQuery.eq(RMpGeneralSurveyOverproofProblem::getPowerQualityProblemNo, powerQualityProblemNo); RMpGeneralSurveyOverproofProblem generalSurveyOut = generalSurveyMapper.selectOne(generalSurveyQuery); - BeanUtil.copyProperties(generalSurveyOut,detail); + BeanUtil.copyProperties(generalSurveyOut, detail); detail.setSteadyIndicator(steadyIndicator(generalSurveyOut.getOverLimitTarget())); detail.setTransientIndicators(transientIndicators(generalSurveyOut.getOverLimitTarget())); RMpElectricQualityProblemFlowDetails flowDetails = flowDetailSelectOne(powerQualityProblemNo); - BeanUtil.copyProperties(processFlowDetail(flowDetails),detail); + BeanUtil.copyProperties(processFlowDetail(flowDetails), detail); return detail; } @@ -315,22 +311,22 @@ public class IssuesServiceImpl implements IssuesService { @Override public ComplaintVO getComplaintDetail(String powerQualityProblemNo) { ComplaintVO detail = new ComplaintVO(); - BeanUtil.copyProperties(issuesSelectOne(powerQualityProblemNo),detail); + BeanUtil.copyProperties(issuesSelectOne(powerQualityProblemNo), detail); detail.setOrgName(deptFeignClient.getDeptById(detail.getOrgNo()).getData().getName()); LambdaQueryWrapper complaintQuery = new LambdaQueryWrapper<>(); - complaintQuery.eq(RMpUserComplaint::getPowerQualityProblemNo,powerQualityProblemNo); + complaintQuery.eq(RMpUserComplaint::getPowerQualityProblemNo, powerQualityProblemNo); RMpUserComplaint complaintOut = complaintMapper.selectOne(complaintQuery); - BeanUtil.copyProperties(complaintOut,detail); + BeanUtil.copyProperties(complaintOut, detail); detail.setSteadyIndicator(steadyIndicator(complaintOut.getAbnormalTarget())); detail.setTransientIndicators(transientIndicators(complaintOut.getAbnormalTarget())); RMpElectricQualityProblemFlowDetails flowDetails = flowDetailSelectOne(powerQualityProblemNo); - BeanUtil.copyProperties(processFlowDetail(flowDetails),detail); - if (!StrUtil.isEmpty(complaintOut.getPowerGridAffectDev())){ - detail.setPowerGridAffectDev(StrUtil.removeSuffix(StrUtil.removePrefix(complaintOut.getPowerGridAffectDev(),"["),"]").split(",")); + BeanUtil.copyProperties(processFlowDetail(flowDetails), detail); + if (!StrUtil.isEmpty(complaintOut.getPowerGridAffectDev())) { + detail.setPowerGridAffectDev(StrUtil.removeSuffix(StrUtil.removePrefix(complaintOut.getPowerGridAffectDev(), "["), "]").split(",")); StrUtil.trim(detail.getPowerGridAffectDev()); } - if (!StrUtil.isEmpty(complaintOut.getUserAffectDev())){ - detail.setUserAffectDev(StrUtil.removeSuffix(StrUtil.removePrefix(complaintOut.getUserAffectDev(),"["),"]").split(",")); + if (!StrUtil.isEmpty(complaintOut.getUserAffectDev())) { + detail.setUserAffectDev(StrUtil.removeSuffix(StrUtil.removePrefix(complaintOut.getUserAffectDev(), "["), "]").split(",")); StrUtil.trim(detail.getUserAffectDev()); } return detail; @@ -342,22 +338,22 @@ public class IssuesServiceImpl implements IssuesService { @Override public AbnormalVO getAbnormalDetail(String powerQualityProblemNo) { AbnormalVO detail = new AbnormalVO(); - BeanUtil.copyProperties(issuesSelectOne(powerQualityProblemNo),detail); + BeanUtil.copyProperties(issuesSelectOne(powerQualityProblemNo), detail); detail.setOrgName(deptFeignClient.getDeptById(detail.getOrgNo()).getData().getName()); LambdaQueryWrapper abnormalQuery = new LambdaQueryWrapper<>(); - abnormalQuery.eq(RMpOperationMonitorAbnormal::getPowerQualityProblemNo,powerQualityProblemNo); + abnormalQuery.eq(RMpOperationMonitorAbnormal::getPowerQualityProblemNo, powerQualityProblemNo); RMpOperationMonitorAbnormal abnormalOut = abnormalMapper.selectOne(abnormalQuery); - BeanUtil.copyProperties(abnormalOut,detail); + BeanUtil.copyProperties(abnormalOut, detail); detail.setSteadyIndicator(steadyIndicator(abnormalOut.getAbnormalTarget())); detail.setTransientIndicators(transientIndicators(abnormalOut.getAbnormalTarget())); RMpElectricQualityProblemFlowDetails flowDetails = flowDetailSelectOne(powerQualityProblemNo); - BeanUtil.copyProperties(processFlowDetail(flowDetails),detail); - if (!StrUtil.isEmpty(abnormalOut.getPowerGridAffectDev())){ - detail.setPowerGridAffectDev(StrUtil.removeSuffix(StrUtil.removePrefix(abnormalOut.getPowerGridAffectDev(),"["),"]").split(",")); + BeanUtil.copyProperties(processFlowDetail(flowDetails), detail); + if (!StrUtil.isEmpty(abnormalOut.getPowerGridAffectDev())) { + detail.setPowerGridAffectDev(StrUtil.removeSuffix(StrUtil.removePrefix(abnormalOut.getPowerGridAffectDev(), "["), "]").split(",")); StrUtil.trim(detail.getPowerGridAffectDev()); } - if (!StrUtil.isEmpty(abnormalOut.getUserAffectDev())){ - detail.setUserAffectDev(StrUtil.removeSuffix(StrUtil.removePrefix(abnormalOut.getUserAffectDev(),"["),"]").split(",")); + if (!StrUtil.isEmpty(abnormalOut.getUserAffectDev())) { + detail.setUserAffectDev(StrUtil.removeSuffix(StrUtil.removePrefix(abnormalOut.getUserAffectDev(), "["), "]").split(",")); StrUtil.trim(detail.getUserAffectDev()); } return detail; @@ -366,8 +362,8 @@ public class IssuesServiceImpl implements IssuesService { /** * 稳态指标处理 */ - private String[] steadyIndicator(String target){ - String[] process = StrUtil.removePrefix(target.split("]\\[")[0],"\\[").split(","); + private String[] steadyIndicator(String target) { + String[] process = StrUtil.removePrefix(target.split("]\\[")[0], "\\[").split(","); StrUtil.trim(process); return process; } @@ -375,8 +371,8 @@ public class IssuesServiceImpl implements IssuesService { /** * 暂态指标处理 */ - private String[] transientIndicators(String target){ - String[] process = StrUtil.removeSuffix(target.split("]\\[")[1],"]").split(","); + private String[] transientIndicators(String target) { + String[] process = StrUtil.removeSuffix(target.split("]\\[")[1], "]").split(","); StrUtil.trim(process); return process; } @@ -388,31 +384,31 @@ public class IssuesServiceImpl implements IssuesService { public void reasonAnalysis(ProcessParam processParam) { LocalDateTime local = LocalDateTimeUtil.now(); RMpElectricQualityProblemFlowDetails details = new RMpElectricQualityProblemFlowDetails(); - BeanUtil.copyProperties(processParam,details); + BeanUtil.copyProperties(processParam, details); details.setDataDateYyfx(local); details.setReportProcessContentYyfx(ArrayUtil.toString(processParam.getReportProcessContentYyfx())); details.setUserReportProcessContentYyfx(ArrayUtil.toString(processParam.getUserReportProcessContentYyfx())); flowDetailsMapper.insert(details); LambdaQueryWrapper issuesQuery = new LambdaQueryWrapper<>(); - issuesQuery.eq(RStatElectricQualityProblemFlow::getPowerQualityProblemNo,processParam.getPowerQualityProblemNo()); + issuesQuery.eq(RStatElectricQualityProblemFlow::getPowerQualityProblemNo, processParam.getPowerQualityProblemNo()); RStatElectricQualityProblemFlow issuesOut = issuesMapper.selectOne(issuesQuery); issuesOut.setReportProcess(DicDataEnum.CAUSE_ANALYSIS.getCode()); - issuesOut.setReportProcessStatus (DicDataEnum.AUDITT.getCode()); - issuesMapper.update(issuesOut,issuesQuery); - if (DicDataEnum.USER_COMPLAINTS.getCode().equals(issuesOut.getProblemSources())){ + issuesOut.setReportProcessStatus(DicDataEnum.AUDITT.getCode()); + issuesMapper.update(issuesOut, issuesQuery); + if (DicDataEnum.USER_COMPLAINTS.getCode().equals(issuesOut.getProblemSources())) { LambdaQueryWrapper complaintQuery = new LambdaQueryWrapper<>(); - complaintQuery.eq(RMpUserComplaint::getPowerQualityProblemNo,processParam.getPowerQualityProblemNo()); + complaintQuery.eq(RMpUserComplaint::getPowerQualityProblemNo, processParam.getPowerQualityProblemNo()); RMpUserComplaint complaintOut = complaintMapper.selectOne(complaintQuery); complaintOut.setPowerGridAffectDev(ArrayUtil.toString(processParam.getPowerGridAffectDev())); complaintOut.setUserAffectDev(ArrayUtil.toString(processParam.getUserAffectDev())); - complaintMapper.update(complaintOut,complaintQuery); - }else if (DicDataEnum.DEV_EXCEPTION.getCode().equals(issuesOut.getProblemSources())){ + complaintMapper.update(complaintOut, complaintQuery); + } else if (DicDataEnum.DEV_EXCEPTION.getCode().equals(issuesOut.getProblemSources())) { LambdaQueryWrapper abnormalQuery = new LambdaQueryWrapper<>(); - abnormalQuery.eq(RMpOperationMonitorAbnormal::getPowerQualityProblemNo,processParam.getPowerQualityProblemNo()); + abnormalQuery.eq(RMpOperationMonitorAbnormal::getPowerQualityProblemNo, processParam.getPowerQualityProblemNo()); RMpOperationMonitorAbnormal abnormalOut = abnormalMapper.selectOne(abnormalQuery); abnormalOut.setPowerGridAffectDev(ArrayUtil.toString(processParam.getPowerGridAffectDev())); abnormalOut.setUserAffectDev(ArrayUtil.toString(processParam.getUserAffectDev())); - abnormalMapper.update(abnormalOut,abnormalQuery); + abnormalMapper.update(abnormalOut, abnormalQuery); } } @@ -422,26 +418,26 @@ public class IssuesServiceImpl implements IssuesService { @Override public void process(ProcessParam processParam, String code) { LambdaQueryWrapper issuesQuery = new LambdaQueryWrapper<>(); - issuesQuery.eq(RStatElectricQualityProblemFlow::getPowerQualityProblemNo,processParam.getPowerQualityProblemNo()); + issuesQuery.eq(RStatElectricQualityProblemFlow::getPowerQualityProblemNo, processParam.getPowerQualityProblemNo()); RStatElectricQualityProblemFlow issuesOut = issuesMapper.selectOne(issuesQuery); - if (DicDataEnum.SUCCESS.getCode().equals(issuesOut.getReportProcessStatus())){ + if (DicDataEnum.SUCCESS.getCode().equals(issuesOut.getReportProcessStatus())) { LambdaQueryWrapper query = new LambdaQueryWrapper<>(); - query.eq(RMpElectricQualityProblemFlowDetails::getPowerQualityProblemNo,processParam.getPowerQualityProblemNo()); + query.eq(RMpElectricQualityProblemFlowDetails::getPowerQualityProblemNo, processParam.getPowerQualityProblemNo()); RMpElectricQualityProblemFlowDetails details = flowDetailsMapper.selectOne(query); LocalDateTime local = LocalDateTimeUtil.now(); - if (DicDataEnum.PLAN_MEASURES.getCode().equals(code)){ + if (DicDataEnum.PLAN_MEASURES.getCode().equals(code)) { details.setDataDateJhzg(local); details.setReportProcessContentJhzg(ArrayUtil.toString(processParam.getReportProcessContentJhzg())); details.setUserReportProcessContentJhzg(ArrayUtil.toString(processParam.getUserReportProcessContentJhzg())); details.setFileNameJhzg(processParam.getFileNameJhzg()); details.setFilePathJhzg(processParam.getFilePathJhzg()); - }else if (DicDataEnum.ACTUAL_MEASURES.getCode().equals(code)){ + } else if (DicDataEnum.ACTUAL_MEASURES.getCode().equals(code)) { details.setDataDateSjcq(local); details.setReportProcessContentSjcq(ArrayUtil.toString(processParam.getReportProcessContentSjcq())); details.setUserReportProcessContentSjcq(ArrayUtil.toString(processParam.getUserReportProcessContentSjcq())); details.setFileNameSjcq(processParam.getFileNameSjcq()); details.setFilePathSjcq(processParam.getFilePathSjcq()); - }else if (DicDataEnum.INSIGHTS.getCode().equals(code)){ + } else if (DicDataEnum.INSIGHTS.getCode().equals(code)) { details.setDataDateZlxg(local); details.setDescriptionZlxg(processParam.getDescriptionZlxg()); details.setFileNameZlxg(processParam.getFileNameZlxg()); @@ -450,8 +446,8 @@ public class IssuesServiceImpl implements IssuesService { flowDetailsMapper.update(details, query); issuesOut.setReportProcess(code); issuesOut.setReportProcessStatus(DicDataEnum.AUDITT.getCode()); - issuesMapper.update(issuesOut,issuesQuery); - }else { + issuesMapper.update(issuesOut, issuesQuery); + } else { throw new BusinessException(ProcessResponseEnum.PROCESS_ERROR); } } @@ -462,13 +458,13 @@ public class IssuesServiceImpl implements IssuesService { @Override public void archive(String powerQualityProblemNo) { LambdaQueryWrapper query = new LambdaQueryWrapper<>(); - query.eq(RStatElectricQualityProblemFlow::getPowerQualityProblemNo,powerQualityProblemNo); + query.eq(RStatElectricQualityProblemFlow::getPowerQualityProblemNo, powerQualityProblemNo); RStatElectricQualityProblemFlow issuesOut = issuesMapper.selectOne(query); if (DicDataEnum.INSIGHTS.getCode().equals(issuesOut.getReportProcess()) - && DicDataEnum.SUCCESS.getCode().equals(issuesOut.getReportProcessStatus())){ + && DicDataEnum.SUCCESS.getCode().equals(issuesOut.getReportProcessStatus())) { issuesOut.setReportProcess(DicDataEnum.ARCHIVED.getCode()); - issuesMapper.update(issuesOut,query); - }else { + issuesMapper.update(issuesOut, query); + } else { throw new BusinessException(ProcessResponseEnum.ARCHIVE_ERROR); } } @@ -477,30 +473,26 @@ public class IssuesServiceImpl implements IssuesService { * 上传文件 */ @Override - public MinIoUploadResDTO uploadFile(MultipartFile issuesFile) { - try { - return minIoUtils.upload(issuesFile, minIoProperties.getBucket(), "electricityQuality/"); - } catch (Exception e) { - throw new BusinessException(ProcessResponseEnum.UPLOAD_FILE_ERROR); - } + public String uploadFile(MultipartFile issuesFile) { + return fileStorageUtil.uploadMultipart(issuesFile, OssPath.ELECTRICITY_QUALITY); } /** * 下载文件 */ @Override - public String downloadFile(String powerQualityProblemNo,String reportProcess) { + public String downloadFile(String powerQualityProblemNo, String reportProcess) { LambdaQueryWrapper issuesQuery = new LambdaQueryWrapper<>(); - issuesQuery.eq(RMpElectricQualityProblemFlowDetails::getPowerQualityProblemNo,powerQualityProblemNo); + issuesQuery.eq(RMpElectricQualityProblemFlowDetails::getPowerQualityProblemNo, powerQualityProblemNo); RMpElectricQualityProblemFlowDetails details = flowDetailsMapper.selectOne(issuesQuery); String filePath = null; - if (DicDataEnum.CAUSE_ANALYSIS.getName().equals(reportProcess)){ + if (DicDataEnum.CAUSE_ANALYSIS.getName().equals(reportProcess)) { filePath = details.getFilePathYyfx(); - }else if (DicDataEnum.PLAN_MEASURES.getName().equals(reportProcess)){ + } else if (DicDataEnum.PLAN_MEASURES.getName().equals(reportProcess)) { filePath = details.getFilePathJhzg(); - }else if (DicDataEnum.ACTUAL_MEASURES.getName().equals(reportProcess)){ + } else if (DicDataEnum.ACTUAL_MEASURES.getName().equals(reportProcess)) { filePath = details.getFilePathSjcq(); - }else if (DicDataEnum.INSIGHTS.getName().equals(reportProcess)){ + } else if (DicDataEnum.INSIGHTS.getName().equals(reportProcess)) { filePath = details.getFilePathZlxg(); } return filePath; @@ -512,27 +504,27 @@ public class IssuesServiceImpl implements IssuesService { @Override public void deleteIssues(String powerQualityProblemNo) { LambdaQueryWrapper query = new LambdaQueryWrapper<>(); - query.eq(RStatElectricQualityProblemFlow::getPowerQualityProblemNo,powerQualityProblemNo); + query.eq(RStatElectricQualityProblemFlow::getPowerQualityProblemNo, powerQualityProblemNo); RStatElectricQualityProblemFlow issuesOut = issuesMapper.selectOne(query); - if (DicDataEnum.ONLINE.getCode().equals(issuesOut.getProblemSources())){ + if (DicDataEnum.ONLINE.getCode().equals(issuesOut.getProblemSources())) { LambdaQueryWrapper issuesQuery = new LambdaQueryWrapper<>(); - issuesQuery.eq(RMpOnlineMonitorOverproofProblem::getPowerQualityProblemNo,powerQualityProblemNo); + issuesQuery.eq(RMpOnlineMonitorOverproofProblem::getPowerQualityProblemNo, powerQualityProblemNo); excessiveMapper.delete(issuesQuery); - }else if (DicDataEnum.GENERAL.getCode().equals(issuesOut.getProblemSources())){ + } else if (DicDataEnum.GENERAL.getCode().equals(issuesOut.getProblemSources())) { LambdaQueryWrapper issuesQuery = new LambdaQueryWrapper<>(); - issuesQuery.eq(RMpGeneralSurveyOverproofProblem::getPowerQualityProblemNo,powerQualityProblemNo); + issuesQuery.eq(RMpGeneralSurveyOverproofProblem::getPowerQualityProblemNo, powerQualityProblemNo); generalSurveyMapper.delete(issuesQuery); - }else if (DicDataEnum.USER_COMPLAINTS.getCode().equals(issuesOut.getProblemSources())){ + } else if (DicDataEnum.USER_COMPLAINTS.getCode().equals(issuesOut.getProblemSources())) { LambdaQueryWrapper issuesQuery = new LambdaQueryWrapper<>(); - issuesQuery.eq(RMpUserComplaint::getPowerQualityProblemNo,powerQualityProblemNo); + issuesQuery.eq(RMpUserComplaint::getPowerQualityProblemNo, powerQualityProblemNo); complaintMapper.delete(issuesQuery); - }else if (DicDataEnum.DEV_EXCEPTION.getCode().equals(issuesOut.getProblemSources())){ + } else if (DicDataEnum.DEV_EXCEPTION.getCode().equals(issuesOut.getProblemSources())) { LambdaQueryWrapper issuesQuery = new LambdaQueryWrapper<>(); - issuesQuery.eq(RMpOperationMonitorAbnormal::getPowerQualityProblemNo,powerQualityProblemNo); + issuesQuery.eq(RMpOperationMonitorAbnormal::getPowerQualityProblemNo, powerQualityProblemNo); abnormalMapper.delete(issuesQuery); } LambdaQueryWrapper issuesQuery = new LambdaQueryWrapper<>(); - issuesQuery.eq(RMpElectricQualityProblemFlowDetails::getPowerQualityProblemNo,powerQualityProblemNo); + issuesQuery.eq(RMpElectricQualityProblemFlowDetails::getPowerQualityProblemNo, powerQualityProblemNo); flowDetailsMapper.delete(issuesQuery); issuesMapper.delete(query); } @@ -551,17 +543,15 @@ public class IssuesServiceImpl implements IssuesService { List deptIds = deptFeignClient.getDepSonIdtByDeptId(orgNo).getData(); /*问题个数*/ - QueryWrapper qualityProblemFlowQueryWrapper = new QueryWrapper<> (); - qualityProblemFlowQueryWrapper.select ("1"). - in ("orgNo",deptIds); - Integer integer = issuesMapper.selectCount (qualityProblemFlowQueryWrapper); - issueesAndOrderVO.setId (orgNo); - issueesAndOrderVO.setIssueesCount (integer); + QueryWrapper qualityProblemFlowQueryWrapper = new QueryWrapper<>(); + qualityProblemFlowQueryWrapper.select("1"). + in("orgNo", deptIds); + Integer integer = issuesMapper.selectCount(qualityProblemFlowQueryWrapper); + issueesAndOrderVO.setId(orgNo); + issueesAndOrderVO.setIssueesCount(integer); /*已关联工单数量*/ - - return issueesAndOrderVO; } @@ -577,62 +567,62 @@ public class IssuesServiceImpl implements IssuesService { public Boolean checkPowerQuality(ElectricityQualityCheckParam electricityQualityCheckParam) { boolean result = true; RStatElectricQualityProblemLogPO rStatElectricQualityProblemLogPO = new RStatElectricQualityProblemLogPO(); - rStatElectricQualityProblemLogPO.setPowerQualityProblemNo (electricityQualityCheckParam.getPowerQualityProblemNo ()); - rStatElectricQualityProblemLogPO.setChecker (electricityQualityCheckParam.getCheckPerson ()); - rStatElectricQualityProblemLogPO.setDataDate ( new Date ()); - rStatElectricQualityProblemLogPO.setDescription (electricityQualityCheckParam.getCheckComment ()); - rStatElectricQualityProblemLogPO.setReportProcess (electricityQualityCheckParam.getReportProcess ()); - rStatElectricQualityProblemLogPO.setReportProcessContent (electricityQualityCheckParam.getCheckComment ()); + rStatElectricQualityProblemLogPO.setPowerQualityProblemNo(electricityQualityCheckParam.getPowerQualityProblemNo()); + rStatElectricQualityProblemLogPO.setChecker(electricityQualityCheckParam.getCheckPerson()); + rStatElectricQualityProblemLogPO.setDataDate(new Date()); + rStatElectricQualityProblemLogPO.setDescription(electricityQualityCheckParam.getCheckComment()); + rStatElectricQualityProblemLogPO.setReportProcess(electricityQualityCheckParam.getReportProcess()); + rStatElectricQualityProblemLogPO.setReportProcessContent(electricityQualityCheckParam.getCheckComment()); - rStatElectricQualityProblemLogPO.setType (Objects.equals ("1", electricityQualityCheckParam.getCheckResult ())?DicDataEnum.SUCCESS.getCode ( ):DicDataEnum.FAIL.getCode ( )); + rStatElectricQualityProblemLogPO.setType(Objects.equals("1", electricityQualityCheckParam.getCheckResult()) ? DicDataEnum.SUCCESS.getCode() : DicDataEnum.FAIL.getCode()); /*插入审核日志表*/ - int insert = rStatElectricQualityProblemLogMapper.insert (rStatElectricQualityProblemLogPO); - String report_process =""; - String report_process_status =""; - String reportProcess =electricityQualityCheckParam.getReportProcess (); - String checkResult = electricityQualityCheckParam.getCheckResult ( ); - if (DicDataEnum.CAUSE_ANALYSIS.getCode ().equals(reportProcess)){ - if(Objects.equals ("1", checkResult)){ - report_process_status = DicDataEnum.AUDITT.getCode (); - report_process = DicDataEnum.PLAN_MEASURES.getCode (); - }else{ - report_process_status = DicDataEnum.FAIL.getCode (); - report_process = DicDataEnum.CAUSE_ANALYSIS.getCode (); + int insert = rStatElectricQualityProblemLogMapper.insert(rStatElectricQualityProblemLogPO); + String report_process = ""; + String report_process_status = ""; + String reportProcess = electricityQualityCheckParam.getReportProcess(); + String checkResult = electricityQualityCheckParam.getCheckResult(); + if (DicDataEnum.CAUSE_ANALYSIS.getCode().equals(reportProcess)) { + if (Objects.equals("1", checkResult)) { + report_process_status = DicDataEnum.AUDITT.getCode(); + report_process = DicDataEnum.PLAN_MEASURES.getCode(); + } else { + report_process_status = DicDataEnum.FAIL.getCode(); + report_process = DicDataEnum.CAUSE_ANALYSIS.getCode(); } - }else if (DicDataEnum.PLAN_MEASURES.getCode().equals(reportProcess)){ - if(Objects.equals ("1", checkResult)){ - report_process_status = DicDataEnum.AUDITT.getCode (); - report_process = DicDataEnum.ACTUAL_MEASURES.getCode (); - }else{ - report_process_status = DicDataEnum.FAIL.getCode (); - report_process = DicDataEnum.PLAN_MEASURES.getCode (); + } else if (DicDataEnum.PLAN_MEASURES.getCode().equals(reportProcess)) { + if (Objects.equals("1", checkResult)) { + report_process_status = DicDataEnum.AUDITT.getCode(); + report_process = DicDataEnum.ACTUAL_MEASURES.getCode(); + } else { + report_process_status = DicDataEnum.FAIL.getCode(); + report_process = DicDataEnum.PLAN_MEASURES.getCode(); } - }else if (DicDataEnum.ACTUAL_MEASURES.getCode().equals(reportProcess)){ - if(Objects.equals ("1", checkResult)){ - report_process_status = DicDataEnum.AUDITT.getCode (); - report_process = DicDataEnum.INSIGHTS.getCode (); - }else{ - report_process_status = DicDataEnum.FAIL.getCode (); - report_process = DicDataEnum.ACTUAL_MEASURES.getCode (); + } else if (DicDataEnum.ACTUAL_MEASURES.getCode().equals(reportProcess)) { + if (Objects.equals("1", checkResult)) { + report_process_status = DicDataEnum.AUDITT.getCode(); + report_process = DicDataEnum.INSIGHTS.getCode(); + } else { + report_process_status = DicDataEnum.FAIL.getCode(); + report_process = DicDataEnum.ACTUAL_MEASURES.getCode(); } - }else if (DicDataEnum.INSIGHTS.getCode().equals(reportProcess)){ + } else if (DicDataEnum.INSIGHTS.getCode().equals(reportProcess)) { - if(Objects.equals ("1", checkResult)){ - report_process_status = DicDataEnum.AUDITT.getCode (); - report_process = DicDataEnum.ARCHIVED.getCode (); - }else{ - report_process_status = DicDataEnum.FAIL.getCode (); - report_process = DicDataEnum.INSIGHTS.getCode (); + if (Objects.equals("1", checkResult)) { + report_process_status = DicDataEnum.AUDITT.getCode(); + report_process = DicDataEnum.ARCHIVED.getCode(); + } else { + report_process_status = DicDataEnum.FAIL.getCode(); + report_process = DicDataEnum.INSIGHTS.getCode(); } } - UpdateWrapper updateWrapper = new UpdateWrapper (); - updateWrapper.eq ("power_quality_problem_no", electricityQualityCheckParam.getPowerQualityProblemNo ()); - updateWrapper.set ("report_process", report_process); - updateWrapper.set ("report_process_status",report_process_status); - int i= issuesMapper.update (null,updateWrapper); - result = insert==1&&i==1; + UpdateWrapper updateWrapper = new UpdateWrapper(); + updateWrapper.eq("power_quality_problem_no", electricityQualityCheckParam.getPowerQualityProblemNo()); + updateWrapper.set("report_process", report_process); + updateWrapper.set("report_process_status", report_process_status); + int i = issuesMapper.update(null, updateWrapper); + result = insert == 1 && i == 1; return result; } diff --git a/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/LoadTypeUserManageServiceImpl.java b/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/LoadTypeUserManageServiceImpl.java index bce24b7ad..d78e460e1 100644 --- a/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/LoadTypeUserManageServiceImpl.java +++ b/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/LoadTypeUserManageServiceImpl.java @@ -5,16 +5,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.common.config.GeneralInfo; -import com.njcn.common.pojo.constant.GeneralConstant; -import com.njcn.common.pojo.constant.OssPath; -import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.oss.constant.OssPath; import com.njcn.device.pms.api.DistributionMonitorClient; -import com.njcn.huawei.obs.util.OBSUtil; -import com.njcn.minio.bo.MinIoUploadResDTO; -import com.njcn.minio.config.MinIoProperties; -import com.njcn.minio.utils.MinIoUtils; +import com.njcn.oss.utils.FileStorageUtil; import com.njcn.process.constant.Param; -import com.njcn.process.enums.ProcessResponseEnum; import com.njcn.process.mapper.LoadTypeUserManageMapper; import com.njcn.process.pojo.param.*; import com.njcn.process.pojo.po.RLoadTypeUserManage; @@ -61,16 +55,12 @@ public class LoadTypeUserManageServiceImpl implements LoadTypeUserManageService private final DeptFeignClient deptFeignClient; - @Resource - private MinIoUtils minIoUtils; - @Resource private GeneralInfo generalInfo; - @Resource - private OBSUtil obsUtil; - @Resource - private MinIoProperties minIoProperties; + private final FileStorageUtil fileStorageUtil; + + /** * 干扰源用户分页查询 @@ -111,11 +101,11 @@ public class LoadTypeUserManageServiceImpl implements LoadTypeUserManageService BeanUtils.copyProperties(rLoadTypeUserManage, rLoadTypeUserManageVO); //文件 if (rLoadTypeUserManageVO.getIFilePath() != null) { - String iFile = minIoUtils.getObjectUrl(minIoProperties.getBucket(), rLoadTypeUserManageVO.getIFilePath(), 7 * 24 * 60 * 60); + String iFile = fileStorageUtil.getFileUrl(rLoadTypeUserManageVO.getIFilePath()); rLoadTypeUserManageVO.setIFile(iFile); } if (rLoadTypeUserManageVO.getAFilePath() != null) { - String aFile = minIoUtils.getObjectUrl(minIoProperties.getBucket(), rLoadTypeUserManageVO.getAFilePath(), 7 * 24 * 60 * 60); + String aFile = fileStorageUtil.getFileUrl(rLoadTypeUserManageVO.getAFilePath()); rLoadTypeUserManageVO.setIFile(aFile); } return rLoadTypeUserManageVO; @@ -154,14 +144,7 @@ public class LoadTypeUserManageServiceImpl implements LoadTypeUserManageService MultipartFile multipartFile = loadTypeUserIUploadParam.getFile(); //文件上传到Minio服务器,存入文件名 if (Objects.nonNull(multipartFile)) { - if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) { - String fileName = OssPath.LOAD_TYPE_USER + minIoUtils.minFileName(multipartFile.getOriginalFilename()); - obsUtil.multiFileUpload(multipartFile, fileName); - rLoadTypeUserManage.setIFilePath(fileName); - } else { - MinIoUploadResDTO minIoUploadResDTO = fileToMinio(loadTypeUserIUploadParam.getFile(), OssPath.LOAD_TYPE_USER); - rLoadTypeUserManage.setIFilePath(minIoUploadResDTO.getMinFileName()); - } + rLoadTypeUserManage.setIFilePath(fileStorageUtil.uploadMultipart(multipartFile,OssPath.LOAD_TYPE_USER)); rLoadTypeUserManage.setIUploadTime(new Date()); } @@ -220,21 +203,7 @@ public class LoadTypeUserManageServiceImpl implements LoadTypeUserManageService return loadTypeUserPage.setRecords(resultList); } - /** - * 上传文件到Minio - * - * @param file 文件 - * @return 成功标记 - */ - private MinIoUploadResDTO fileToMinio(MultipartFile file, String dir) { - try { - //把名称存入数据 - MinIoUploadResDTO upload = minIoUtils.upload(file, minIoProperties.getBucket(), dir); - return upload; - } catch (Exception e) { - throw new BusinessException(ProcessResponseEnum.UPLOAD_FILE_ERROR); - } - } + /** * 上传干扰源用户入网报告 @@ -250,14 +219,7 @@ public class LoadTypeUserManageServiceImpl implements LoadTypeUserManageService MultipartFile multipartFile = loadTypeUserAUploadParam.getFile(); //文件上传到文件服务器,存入文件名 if (Objects.nonNull(multipartFile)) { - if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) { - String fileName = OssPath.LOAD_TYPE_USER + minIoUtils.minFileName(multipartFile.getOriginalFilename()); - obsUtil.multiFileUpload(multipartFile, fileName); - rLoadTypeUserManage.setIFilePath(fileName); - } else { - MinIoUploadResDTO minIoUploadResDTO = fileToMinio(loadTypeUserAUploadParam.getFile(), OssPath.LOAD_TYPE_USER); - rLoadTypeUserManage.setAFilePath(minIoUploadResDTO.getMinFileName()); - } + rLoadTypeUserManage.setAFilePath(fileStorageUtil.uploadMultipart(multipartFile,OssPath.LOAD_TYPE_USER)); rLoadTypeUserManage.setAUploadTime(new Date()); } diff --git a/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/RGeneralSurveyPlanPOServiceImpl.java b/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/RGeneralSurveyPlanPOServiceImpl.java index 4de804af4..fbec2906d 100644 --- a/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/RGeneralSurveyPlanPOServiceImpl.java +++ b/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/RGeneralSurveyPlanPOServiceImpl.java @@ -7,10 +7,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; import com.njcn.common.pojo.exception.BusinessException; -import com.njcn.minio.bo.MinIoUploadResDTO; -import com.njcn.minio.config.MinIoProperties; -import com.njcn.minio.utils.MinIoUtils; -import com.njcn.process.enums.ProcessResponseEnum; +import com.njcn.minioss.bo.MinIoUploadResDTO; +import com.njcn.oss.constant.OssPath; +import com.njcn.oss.enums.OssResponseEnum; +import com.njcn.oss.utils.FileStorageUtil; import com.njcn.process.mapper.RGeneralSurveyPlanDetailMapper; import com.njcn.process.mapper.RGeneralSurveyPlanPOMapper; import com.njcn.process.pojo.param.*; @@ -38,7 +38,6 @@ import java.util.stream.Collectors; import java.util.stream.Stream; /** - * * Description: * 接口文档访问地址:http://serverIP:port/swagger-ui.html * Date: 2022/11/11 11:24【需求编号】 @@ -47,27 +46,24 @@ import java.util.stream.Stream; * @version V1.0.0 */ @Service -public class RGeneralSurveyPlanPOServiceImpl extends MppServiceImpl implements RGeneralSurveyPlanPOService{ +public class RGeneralSurveyPlanPOServiceImpl extends MppServiceImpl implements RGeneralSurveyPlanPOService { - - private @Autowired - RGeneralSurveyPlanDetailService rGeneralSurveyPlanDetailService; - - private @Autowired - RGeneralSurveyPlanPOMapper rGeneralSurveyPlanPOMapper; - - private @Autowired - RGeneralSurveyPlanDetailMapper rGeneralSurveyPlanDetailMapper; + @Autowired + private RGeneralSurveyPlanDetailService rGeneralSurveyPlanDetailService; @Resource - private MinIoUtils minIoUtils; - - private @Autowired - DeptFeignClient deptFeignClient; - + private RGeneralSurveyPlanPOMapper rGeneralSurveyPlanPOMapper; @Resource - private MinIoProperties minIoProperties; + private RGeneralSurveyPlanDetailMapper rGeneralSurveyPlanDetailMapper; + + @Autowired + private DeptFeignClient deptFeignClient; + + @Resource + private FileStorageUtil fileStorageUtil; + + /** * @param rGeneralSurveyPlanAddParm * @Description: addPlan @@ -80,31 +76,31 @@ public class RGeneralSurveyPlanPOServiceImpl extends MppServiceImpl rGeneralSurveyPlanDetailAddParm = rGeneralSurveyPlanAddParm.getRGeneralSurveyPlanDetailAddParm ( ); - QueryWrapper queryWrapper = new QueryWrapper (); - queryWrapper.lambda ().eq (RGeneralSurveyPlanDetail::getPlanNo, rGeneralSurveyPlanAddParm.getPlanNo ()); - rGeneralSurveyPlanDetailService.remove (queryWrapper); - List rGeneralSurveyPlanDetailList = new ArrayList<> (); - rGeneralSurveyPlanDetailAddParm.forEach (temp->{ + List rGeneralSurveyPlanDetailAddParm = rGeneralSurveyPlanAddParm.getRGeneralSurveyPlanDetailAddParm(); + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.lambda().eq(RGeneralSurveyPlanDetail::getPlanNo, rGeneralSurveyPlanAddParm.getPlanNo()); + rGeneralSurveyPlanDetailService.remove(queryWrapper); + List rGeneralSurveyPlanDetailList = new ArrayList<>(); + rGeneralSurveyPlanDetailAddParm.forEach(temp -> { RGeneralSurveyPlanDetail rGeneralSurveyPlanDetail = new RGeneralSurveyPlanDetail(); - BeanUtils.copyProperties (temp, rGeneralSurveyPlanDetail); + BeanUtils.copyProperties(temp, rGeneralSurveyPlanDetail); /*目前时间与计划开始时间,结束时间一致*/ - rGeneralSurveyPlanDetail.setGeneralSurveyStartTime (rGeneralSurveyPlanAddParm.getPlanStartTime ()); - rGeneralSurveyPlanDetail.setGeneralSurveyTime (rGeneralSurveyPlanAddParm.getPlanStartTime ()); - rGeneralSurveyPlanDetail.setGeneralSurveyEndTime (rGeneralSurveyPlanAddParm.getPlanEndTime ()); - rGeneralSurveyPlanDetail.setPlanNo (rGeneralSurveyPlanAddParm.getPlanNo ()); - rGeneralSurveyPlanDetail.setGeneralSurveyLeader(rGeneralSurveyPlanAddParm.getLeader ()); - rGeneralSurveyPlanDetailList.add (rGeneralSurveyPlanDetail); + rGeneralSurveyPlanDetail.setGeneralSurveyStartTime(rGeneralSurveyPlanAddParm.getPlanStartTime()); + rGeneralSurveyPlanDetail.setGeneralSurveyTime(rGeneralSurveyPlanAddParm.getPlanStartTime()); + rGeneralSurveyPlanDetail.setGeneralSurveyEndTime(rGeneralSurveyPlanAddParm.getPlanEndTime()); + rGeneralSurveyPlanDetail.setPlanNo(rGeneralSurveyPlanAddParm.getPlanNo()); + rGeneralSurveyPlanDetail.setGeneralSurveyLeader(rGeneralSurveyPlanAddParm.getLeader()); + rGeneralSurveyPlanDetailList.add(rGeneralSurveyPlanDetail); }); - boolean b1 = rGeneralSurveyPlanDetailService.saveOrUpdateBatchByMultiId (rGeneralSurveyPlanDetailList, 5); + boolean b1 = rGeneralSurveyPlanDetailService.saveOrUpdateBatchByMultiId(rGeneralSurveyPlanDetailList, 5); - return b&&b1; + return b && b1; } /** @@ -116,34 +112,34 @@ public class RGeneralSurveyPlanPOServiceImpl extends MppServiceImpl query(RGeneralSurveyPlanQueryParm rGeneralSurveyPlanQueryParm,List statusList ) { - IPage page = new Page<> (rGeneralSurveyPlanQueryParm.getCurrentPage(), rGeneralSurveyPlanQueryParm.getPageSize()); - IPage returnpage = new Page<> (rGeneralSurveyPlanQueryParm.getCurrentPage(), rGeneralSurveyPlanQueryParm.getPageSize()); + public IPage query(RGeneralSurveyPlanQueryParm rGeneralSurveyPlanQueryParm, List statusList) { + IPage page = new Page<>(rGeneralSurveyPlanQueryParm.getCurrentPage(), rGeneralSurveyPlanQueryParm.getPageSize()); + IPage returnpage = new Page<>(rGeneralSurveyPlanQueryParm.getCurrentPage(), rGeneralSurveyPlanQueryParm.getPageSize()); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<> (); - if (!StringUtils.isEmpty (rGeneralSurveyPlanQueryParm.getOrgNo ())) { - List data = deptFeignClient.getDepSonIdtByDeptId (rGeneralSurveyPlanQueryParm.getOrgNo ()).getData ( ); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if (!StringUtils.isEmpty(rGeneralSurveyPlanQueryParm.getOrgNo())) { + List data = deptFeignClient.getDepSonIdtByDeptId(rGeneralSurveyPlanQueryParm.getOrgNo()).getData(); - queryWrapper.in (RGeneralSurveyPlanPO::getOrgNo, data); + queryWrapper.in(RGeneralSurveyPlanPO::getOrgNo, data); } - if (!StringUtils.isEmpty (rGeneralSurveyPlanQueryParm. getStatus ())) { - queryWrapper.eq (RGeneralSurveyPlanPO::getStatus, rGeneralSurveyPlanQueryParm.getStatus ()); + if (!StringUtils.isEmpty(rGeneralSurveyPlanQueryParm.getStatus())) { + queryWrapper.eq(RGeneralSurveyPlanPO::getStatus, rGeneralSurveyPlanQueryParm.getStatus()); } - if (!StringUtils.isEmpty (rGeneralSurveyPlanQueryParm.getIsFileUpload ())) { - queryWrapper.eq (RGeneralSurveyPlanPO::getIsFileUpload, rGeneralSurveyPlanQueryParm.getIsFileUpload ()); + if (!StringUtils.isEmpty(rGeneralSurveyPlanQueryParm.getIsFileUpload())) { + queryWrapper.eq(RGeneralSurveyPlanPO::getIsFileUpload, rGeneralSurveyPlanQueryParm.getIsFileUpload()); } - if (!Objects.isNull (rGeneralSurveyPlanQueryParm.getPlanStartTime ())) { - queryWrapper.ge (RGeneralSurveyPlanPO::getPlanStartTime, rGeneralSurveyPlanQueryParm.getPlanStartTime ()); + if (!Objects.isNull(rGeneralSurveyPlanQueryParm.getPlanStartTime())) { + queryWrapper.ge(RGeneralSurveyPlanPO::getPlanStartTime, rGeneralSurveyPlanQueryParm.getPlanStartTime()); } - if (!Objects.isNull (rGeneralSurveyPlanQueryParm.getPlanEndTime ())) { - queryWrapper.le (RGeneralSurveyPlanPO::getPlanEndTime, rGeneralSurveyPlanQueryParm.getPlanEndTime ()); + if (!Objects.isNull(rGeneralSurveyPlanQueryParm.getPlanEndTime())) { + queryWrapper.le(RGeneralSurveyPlanPO::getPlanEndTime, rGeneralSurveyPlanQueryParm.getPlanEndTime()); } - queryWrapper.in (RGeneralSurveyPlanPO::getStatus, statusList); - queryWrapper.orderByAsc (RGeneralSurveyPlanPO::getStatus).orderByDesc (RGeneralSurveyPlanPO::getPlanCreateTime); + queryWrapper.in(RGeneralSurveyPlanPO::getStatus, statusList); + queryWrapper.orderByAsc(RGeneralSurveyPlanPO::getStatus).orderByDesc(RGeneralSurveyPlanPO::getPlanCreateTime); - List rGeneralSurveyPlanPOS = rGeneralSurveyPlanPOMapper.selectPage (page,queryWrapper).getRecords (); - if(CollectionUtils.isEmpty (rGeneralSurveyPlanPOS)){ - return returnpage; + List rGeneralSurveyPlanPOS = rGeneralSurveyPlanPOMapper.selectPage(page, queryWrapper).getRecords(); + if (CollectionUtils.isEmpty(rGeneralSurveyPlanPOS)) { + return returnpage; } //部门处理:根据部门code取名称 @@ -154,36 +150,36 @@ public class RGeneralSurveyPlanPOServiceImpl extends MppServiceImpl collect = rGeneralSurveyPlanPOS.stream ( ).map (RGeneralSurveyPlanPO::getPlanNo).collect (Collectors.toList ( )); - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<> (); - lambdaQueryWrapper.in (RGeneralSurveyPlanDetail::getPlanNo, collect); - List rGeneralSurveyPlanDetails = rGeneralSurveyPlanDetailMapper.selectList (lambdaQueryWrapper); - List rGeneralSurveyPlanVOList = new ArrayList<> (); - rGeneralSurveyPlanPOS.forEach (temp ->{ - RGeneralSurveyPlanVO rGeneralSurveyPlanVO = new RGeneralSurveyPlanVO(); - BeanUtils.copyProperties (temp, rGeneralSurveyPlanVO); - long Busbarcount = rGeneralSurveyPlanDetails.stream ( ). - filter (surveyPlanDetail -> Objects.equals (surveyPlanDetail.getPlanNo ( ), temp.getPlanNo ( ))). - map (RGeneralSurveyPlanDetail::getBusbarId).distinct ( ).count ( ); + List collect = rGeneralSurveyPlanPOS.stream().map(RGeneralSurveyPlanPO::getPlanNo).collect(Collectors.toList()); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.in(RGeneralSurveyPlanDetail::getPlanNo, collect); + List rGeneralSurveyPlanDetails = rGeneralSurveyPlanDetailMapper.selectList(lambdaQueryWrapper); + List rGeneralSurveyPlanVOList = new ArrayList<>(); + rGeneralSurveyPlanPOS.forEach(temp -> { + RGeneralSurveyPlanVO rGeneralSurveyPlanVO = new RGeneralSurveyPlanVO(); + BeanUtils.copyProperties(temp, rGeneralSurveyPlanVO); + long Busbarcount = rGeneralSurveyPlanDetails.stream(). + filter(surveyPlanDetail -> Objects.equals(surveyPlanDetail.getPlanNo(), temp.getPlanNo())). + map(RGeneralSurveyPlanDetail::getBusbarId).distinct().count(); - long Subcount = rGeneralSurveyPlanDetails.stream ( ). - filter (surveyPlanDetail -> Objects.equals (surveyPlanDetail.getPlanNo ( ), temp.getPlanNo ( ))). - map (RGeneralSurveyPlanDetail::getSubId).distinct ( ).count ( ); - rGeneralSurveyPlanVO.setBusCount (Busbarcount); - rGeneralSurveyPlanVO.setSubCount (Subcount); - List collect1 = rGeneralSurveyPlanDetails.stream ( ). - filter (surveyPlanDetail -> Objects.equals (surveyPlanDetail.getPlanNo ( ), temp.getPlanNo ( ))). - map (surveyPlanDetail -> { - RGeneralSurveyPlanVO.RGeneralSurveyPlanDetailVO rGeneralSurveyPlanDetailVO = new RGeneralSurveyPlanVO.RGeneralSurveyPlanDetailVO ( ); - BeanUtils.copyProperties (surveyPlanDetail, rGeneralSurveyPlanDetailVO); - return rGeneralSurveyPlanDetailVO; - }).collect (Collectors.toList ( )); + long Subcount = rGeneralSurveyPlanDetails.stream(). + filter(surveyPlanDetail -> Objects.equals(surveyPlanDetail.getPlanNo(), temp.getPlanNo())). + map(RGeneralSurveyPlanDetail::getSubId).distinct().count(); + rGeneralSurveyPlanVO.setBusCount(Busbarcount); + rGeneralSurveyPlanVO.setSubCount(Subcount); + List collect1 = rGeneralSurveyPlanDetails.stream(). + filter(surveyPlanDetail -> Objects.equals(surveyPlanDetail.getPlanNo(), temp.getPlanNo())). + map(surveyPlanDetail -> { + RGeneralSurveyPlanVO.RGeneralSurveyPlanDetailVO rGeneralSurveyPlanDetailVO = new RGeneralSurveyPlanVO.RGeneralSurveyPlanDetailVO(); + BeanUtils.copyProperties(surveyPlanDetail, rGeneralSurveyPlanDetailVO); + return rGeneralSurveyPlanDetailVO; + }).collect(Collectors.toList()); rGeneralSurveyPlanVO.setOrgName(pvTerminalTreeVOMap.get(temp.getOrgNo())); //单位名称 - rGeneralSurveyPlanVO.setRGeneralSurveyPlanDetailVOList (collect1); - rGeneralSurveyPlanVOList.add (rGeneralSurveyPlanVO); + rGeneralSurveyPlanVO.setRGeneralSurveyPlanDetailVOList(collect1); + rGeneralSurveyPlanVOList.add(rGeneralSurveyPlanVO); }); - returnpage.setRecords (rGeneralSurveyPlanVOList); + returnpage.setRecords(rGeneralSurveyPlanVOList); return returnpage; } @@ -199,25 +195,25 @@ public class RGeneralSurveyPlanPOServiceImpl extends MppServiceImpl surveyResultDownload(String planNo) { RGeneralSurveyPlanPO rGeneralSurveyPlanPO = new RGeneralSurveyPlanPO(); - rGeneralSurveyPlanPO.setPlanNo (planNo); - rGeneralSurveyPlanPO = this.selectByMultiId (rGeneralSurveyPlanPO); - String filePath = rGeneralSurveyPlanPO.getFilePath ( ); - if(StringUtils.isEmpty (filePath)){ - throw new BusinessException(ProcessResponseEnum.DOWNLOAD_FILE_ERROR); + rGeneralSurveyPlanPO.setPlanNo(planNo); + rGeneralSurveyPlanPO = this.selectByMultiId(rGeneralSurveyPlanPO); + String filePath = rGeneralSurveyPlanPO.getFilePath(); + if (StringUtils.isEmpty(filePath)) { + throw new BusinessException(OssResponseEnum.DOWNLOAD_FILE_ERROR); } - String[] split = filePath.substring (0, filePath.length ( ) - 1).split (";"); - List collect = Stream.of (split).map (temp -> { - String[] split1 = temp.split ("##"); + String[] split = filePath.substring(0, filePath.length() - 1).split(";"); + List collect = Stream.of(split).map(temp -> { + String[] split1 = temp.split("##"); String OriginalFilename = split1[1]; String minoFileName = split1[0]; - MinIoUploadResDTO dto = new MinIoUploadResDTO(OriginalFilename,minIoUtils.getObjectUrl (minIoProperties.getBucket ( ), minoFileName, 7 * 24 * 60 * 60)); - return dto ; - }).collect (Collectors.toList ( )); + MinIoUploadResDTO dto = new MinIoUploadResDTO(OriginalFilename, fileStorageUtil.getFileUrl(minoFileName)); + return dto; + }).collect(Collectors.toList()); return collect; } @@ -258,13 +254,13 @@ public class RGeneralSurveyPlanPOServiceImpl extends MppServiceImpl exportSurveyPlan(List planIdList) { - List surveyPlanExcels = new ArrayList<> (); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<> (); - queryWrapper.in (RGeneralSurveyPlanPO::getPlanNo,planIdList); - List rGeneralSurveyPlanPOS = rGeneralSurveyPlanPOMapper.selectList (queryWrapper); - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<> (); - lambdaQueryWrapper.in (RGeneralSurveyPlanDetail::getPlanNo, planIdList); - List rGeneralSurveyPlanDetails = rGeneralSurveyPlanDetailMapper.selectList (lambdaQueryWrapper); + List surveyPlanExcels = new ArrayList<>(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(RGeneralSurveyPlanPO::getPlanNo, planIdList); + List rGeneralSurveyPlanPOS = rGeneralSurveyPlanPOMapper.selectList(queryWrapper); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.in(RGeneralSurveyPlanDetail::getPlanNo, planIdList); + List rGeneralSurveyPlanDetails = rGeneralSurveyPlanDetailMapper.selectList(lambdaQueryWrapper); //部门处理:根据部门code取名称 List dept = deptFeignClient.allDeptList().getData(); @@ -272,21 +268,21 @@ public class RGeneralSurveyPlanPOServiceImpl extends MppServiceImpl{ + rGeneralSurveyPlanPOS.forEach(temp -> { SurveyPlanExcel surveyPlanExcel = new SurveyPlanExcel(); - BeanUtils.copyProperties (temp, surveyPlanExcel); + BeanUtils.copyProperties(temp, surveyPlanExcel); - long Busbarcount = rGeneralSurveyPlanDetails.stream ( ). - filter (surveyPlanDetail -> Objects.equals (surveyPlanDetail.getPlanNo ( ), temp.getPlanNo ( ))). - map (RGeneralSurveyPlanDetail::getBusbarId).distinct ( ).count ( ); + long Busbarcount = rGeneralSurveyPlanDetails.stream(). + filter(surveyPlanDetail -> Objects.equals(surveyPlanDetail.getPlanNo(), temp.getPlanNo())). + map(RGeneralSurveyPlanDetail::getBusbarId).distinct().count(); - long Subcount = rGeneralSurveyPlanDetails.stream ( ). - filter (surveyPlanDetail -> Objects.equals (surveyPlanDetail.getPlanNo ( ), temp.getPlanNo ( ))). - map (RGeneralSurveyPlanDetail::getSubId).distinct ( ).count ( ); - surveyPlanExcel.setBusCount (Busbarcount); - surveyPlanExcel.setSubCount (Subcount); - surveyPlanExcel.setOrgNo (pvTerminalTreeVOMap.get (surveyPlanExcel.getOrgNo ())); - surveyPlanExcels.add (surveyPlanExcel); + long Subcount = rGeneralSurveyPlanDetails.stream(). + filter(surveyPlanDetail -> Objects.equals(surveyPlanDetail.getPlanNo(), temp.getPlanNo())). + map(RGeneralSurveyPlanDetail::getSubId).distinct().count(); + surveyPlanExcel.setBusCount(Busbarcount); + surveyPlanExcel.setSubCount(Subcount); + surveyPlanExcel.setOrgNo(pvTerminalTreeVOMap.get(surveyPlanExcel.getOrgNo())); + surveyPlanExcels.add(surveyPlanExcel); }); return surveyPlanExcels; @@ -302,8 +298,8 @@ public class RGeneralSurveyPlanPOServiceImpl extends MppServiceImpl querySurveyPlanOnQuestion(SurveyPlanQuestionQueryParm questionQueryParm) { - List rGeneralSurveyPlanDetailOnQuestionVOS = new ArrayList<> (); - rGeneralSurveyPlanDetailOnQuestionVOS =rGeneralSurveyPlanDetailMapper.querySurveyPlanOnQuestion(questionQueryParm); + List rGeneralSurveyPlanDetailOnQuestionVOS = new ArrayList<>(); + rGeneralSurveyPlanDetailOnQuestionVOS = rGeneralSurveyPlanDetailMapper.querySurveyPlanOnQuestion(questionQueryParm); return rGeneralSurveyPlanDetailOnQuestionVOS; } @@ -319,14 +315,14 @@ public class RGeneralSurveyPlanPOServiceImpl extends MppServiceImpl querySurveyPlanName(SurveyPlanQuestionQueryParm questionQueryParm) { - List data = deptFeignClient.getDepSonIdtByDeptId (questionQueryParm.getOrgNo ()).getData ( ); + List data = deptFeignClient.getDepSonIdtByDeptId(questionQueryParm.getOrgNo()).getData(); - QueryWrapper queryWrapper = new QueryWrapper<> (); - queryWrapper.select ("plan_name"). - in ("org_no", data). - eq ("DATE_FORMAT(upload_time, '%Y-%m')", new SimpleDateFormat ("yyyy-MM"). - format (questionQueryParm.getPlanStartTime ())); - List list = this.list (queryWrapper); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select("plan_name"). + in("org_no", data). + eq("DATE_FORMAT(upload_time, '%Y-%m')", new SimpleDateFormat("yyyy-MM"). + format(questionQueryParm.getPlanStartTime())); + List list = this.list(queryWrapper); return list; } @@ -343,26 +339,12 @@ public class RGeneralSurveyPlanPOServiceImpl extends MppServiceImpl updateWrapper = new UpdateWrapper(); - updateWrapper.eq ("plan_no", rGeneralSurveyPlanChcekParm.getPlanNo ()); - updateWrapper.set ("check_comment", rGeneralSurveyPlanChcekParm.getCheckComment ()); - updateWrapper.set ("check_person",rGeneralSurveyPlanChcekParm.getCheckPerson ()); - updateWrapper.set ("status", Objects.equals ("1", rGeneralSurveyPlanChcekParm.getCheckResult ())?3:2); - result = this.update (updateWrapper); + updateWrapper.eq("plan_no", rGeneralSurveyPlanChcekParm.getPlanNo()); + updateWrapper.set("check_comment", rGeneralSurveyPlanChcekParm.getCheckComment()); + updateWrapper.set("check_person", rGeneralSurveyPlanChcekParm.getCheckPerson()); + updateWrapper.set("status", Objects.equals("1", rGeneralSurveyPlanChcekParm.getCheckResult()) ? 3 : 2); + result = this.update(updateWrapper); return result; } - /** - * 上传文件到Minio - * - * @param file 文件 - * @return 成功标记 - */ - private MinIoUploadResDTO fileToMinio(MultipartFile file) { - try { - MinIoUploadResDTO upload = minIoUtils.upload(file, minIoProperties.getBucket(), "surveyresult/"); - return upload; - } catch (Exception e) { - throw new BusinessException (ProcessResponseEnum.UPLOAD_FILE_ERROR); - } - } } diff --git a/pqs-user/user-boot/pom.xml b/pqs-user/user-boot/pom.xml index 90e79a5d8..9c3f01c77 100644 --- a/pqs-user/user-boot/pom.xml +++ b/pqs-user/user-boot/pom.xml @@ -44,11 +44,7 @@ common-swagger ${project.version} - - com.njcn - common-minio - ${project.version} - + diff --git a/pqs-user/user-boot/src/test/java/com/njcn/MinioTest.java b/pqs-user/user-boot/src/test/java/com/njcn/MinioTest.java deleted file mode 100644 index 9baa77ed6..000000000 --- a/pqs-user/user-boot/src/test/java/com/njcn/MinioTest.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.njcn; - -import com.njcn.minio.config.MinIoProperties; -import com.njcn.minio.utils.MinIoUtils; -import org.apache.commons.fileupload.FileItem; -import org.apache.commons.fileupload.disk.DiskFileItemFactory; -import org.apache.commons.io.IOUtils; -import org.junit.Test; -import org.springframework.http.MediaType; -import org.springframework.web.multipart.MultipartFile; -import org.springframework.web.multipart.commons.CommonsMultipartFile; - -import javax.annotation.Resource; -import java.io.File; -import java.io.FileInputStream; -import java.io.InputStream; -import java.io.OutputStream; - -/** - * @author hongawen - * @version 1.0.0 - * @date 2022年11月02日 19:49 - */ -public class MinioTest extends BaseJunitTest { - - @Resource - private MinIoUtils minIoUtils; - - @Resource - private MinIoProperties minIoProperties; - - /*** - * 上传 - */ - @Test - public void upload() throws Exception { - String strUrl = "C:\\Users\\DELL\\Desktop\\功能测试文件\\text.json"; - File file = new File(strUrl); - MultipartFile cMultiFile = getMultipartFile(file); - System.out.println(minIoUtils.upload(cMultiFile, minIoProperties.getBucket(), "day/")); - } - - - /*** - * 删除 - */ - @Test - public void removeObject(){ - String name = "day/8D113DD5CE4B4AB2ABB5E531373E3D88.txt"; - minIoUtils.removeObject(minIoProperties.getBucket(), name); - } - - - /*** - * 根据对象名获取查看的url - */ - @Test - public void getObjectUrl(){ - String name = "day/8D113DD5CE4B4AB2ABB5E531373E3D88.txt"; - System.out.println(minIoUtils.getObjectUrl(minIoProperties.getBucket(), name, 7 * 24 * 60 * 60)); - } - - - - public static MultipartFile getMultipartFile(File file) { - FileItem item = new DiskFileItemFactory().createItem("file" - , MediaType.MULTIPART_FORM_DATA_VALUE - , true - , file.getName()); - try (InputStream input = new FileInputStream(file); - OutputStream os = item.getOutputStream()) { - // 流转移 - IOUtils.copy(input, os); - } catch (Exception e) { - throw new IllegalArgumentException("Invalid file: " + e, e); - } - - return new CommonsMultipartFile(item); - } - - - - -}