From 777abc0824823b5c044ec496fc842525503c53b7 Mon Sep 17 00:00:00 2001 From: guofeihu <3347277866@qq.com> Date: Fri, 26 Jul 2024 13:56:39 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=9B=91=E6=8E=A7=E5=AE=9E?= =?UTF-8?q?=E6=97=B6=E6=95=B0=E6=8D=AE=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E8=B0=83=E6=95=B4(=E6=A0=BC=E5=BC=8F=E4=B8=8E=E5=89=8D?= =?UTF-8?q?=E7=AB=AF=E4=B8=8D=E5=85=BC=E5=AE=B9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/njcn/csdevice/constant/DataParam.java | 20 +- .../equipment/CsGroupController.java | 22 +- .../equipment/PortableOfflLogController.java | 11 +- .../csdevice/service/ICsGroupService.java | 11 +- .../service/IPortableOfflLogService.java | 2 +- .../service/impl/CsGroupServiceImpl.java | 254 ++++++++++++------ .../impl/PortableOfflLogServiceImpl.java | 101 +++++-- .../offline/constant/OfflineConstant.java | 19 ++ .../offline/mincfg/AnalyseComtradeCfg.java | 37 ++- .../mincfg/vo/AnalyseComtradeCfg1.java | 36 ++- .../njcn/csharmonic/offline/vo/Response.java | 3 + .../njcn/csharmonic/pojo/vo/ThdDataTdVO.java | 51 ++++ .../impl/OfflineDataUploadServiceImpl.java | 37 ++- 13 files changed, 444 insertions(+), 160 deletions(-) create mode 100644 cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/offline/constant/OfflineConstant.java create mode 100644 cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/ThdDataTdVO.java diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/constant/DataParam.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/constant/DataParam.java index ce9e8df..9784b03 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/constant/DataParam.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/constant/DataParam.java @@ -1,7 +1,9 @@ package com.njcn.csdevice.constant; import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -21,8 +23,18 @@ public interface DataParam { //统计类型配置-便携式设备-稳态指标的ID(用于某些业务判断) String portableDevStatisticalId = "bce2dfdfb46c4d96e92584def276d1c8"; + //统计类型配置-便携式设备-稳态指标-实时数据-指标的ID(用于某些业务判断) + String portableDevStatisticaTrendlId = "91f4cbe168f97b680192aa133c6e2e78"; + + //统计类型配置-便携式设备-稳态指标下的三个分组ID 对应国标限值字段 + Map overlimitsGroup = new HashMap(){{ + put("6d5470f509ca271d7108a86e83bb283f","uharm"); + put("ae31115b83f02f03a0d3bd65cb017121","inuharm"); + put("8dc260f16280184e2b57d26668dc00b1","iharm"); + }}; + //便携式设备默认统计方式 - String portableDevStatisticalMethods = "min"; + String portableDevStatisticalMethods = "cp95"; //DecimalFormat格式化 String DecimalFormatStr = "#0.0000"; @@ -53,4 +65,10 @@ public interface DataParam { String wlRecordUpload = "Offline_Data_Upload"; + String dataStr = "data"; + + String nameStr = "name"; + + String phaseStr = "phase"; + } diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/CsGroupController.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/CsGroupController.java index db94fd6..35bbcd4 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/CsGroupController.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/CsGroupController.java @@ -12,6 +12,7 @@ import com.njcn.csdevice.pojo.vo.CsGroupVO; import com.njcn.csdevice.pojo.vo.DataGroupTemplateVO; import com.njcn.csdevice.service.ICsGroupService; import com.njcn.csharmonic.param.CommonStatisticalQueryParam; +import com.njcn.csharmonic.pojo.vo.ThdDataTdVO; import com.njcn.csharmonic.pojo.vo.ThdDataVO; import com.njcn.system.pojo.po.EleEpdPqd; import com.njcn.system.pojo.vo.EleEpdPqdListVO; @@ -95,11 +96,22 @@ public class CsGroupController extends BaseController { @ApiOperation("查询实时数据中实时趋势") @ApiImplicitParams({ @ApiImplicitParam(name = "devId", value = "设备ID", required = true), - @ApiImplicitParam(name = "lineId", value = "监测点id", required = true) + @ApiImplicitParam(name = "lineId", value = "监测点id", required = true), + @ApiImplicitParam(name = "groupId", value = "指标分组ID", required = false) }) - public HttpResult> getDeviceTrendData(@RequestParam("devId") String devId, @RequestParam(value = "lineId")String lineId){ + public HttpResult> getDeviceTrendData(@RequestParam("devId") String devId, @RequestParam(value = "lineId")String lineId, + @RequestParam(value = "groupId",required = false)String groupId){ String methodDescribe = getMethodDescribe("getDeviceTrendData"); - List list = csGroupService.getDeviceTrendData(devId,lineId); + List list = csGroupService.getDeviceTrendData(devId,lineId,groupId); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @GetMapping("/getDeviceTrendDataGroup") + @ApiOperation("查询实时数据中实时趋势中指标分组") + public HttpResult> getDeviceTrendDataGroup(){ + String methodDescribe = getMethodDescribe("getDeviceTrendDataGroup"); + List list = csGroupService.getDeviceTrendDataGroup(); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); } @@ -107,9 +119,9 @@ public class CsGroupController extends BaseController { @PostMapping("/getDeviceHarmonicSpectrumData") @ApiOperation("查询实时数据中谐波频谱") @ApiImplicitParam(name = "commonStatisticalQueryParam",required = true) - public HttpResult> getDeviceHarmonicSpectrumData(@RequestBody CommonStatisticalQueryParam commonStatisticalQueryParam){ + public HttpResult> getDeviceHarmonicSpectrumData(@RequestBody CommonStatisticalQueryParam commonStatisticalQueryParam){ String methodDescribe = getMethodDescribe("getDeviceHarmonicSpectrumData"); - List list = csGroupService.getDeviceHarmonicSpectrumData(commonStatisticalQueryParam); + List list = csGroupService.getDeviceHarmonicSpectrumData(commonStatisticalQueryParam); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); } diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/PortableOfflLogController.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/PortableOfflLogController.java index 6a3a3a7..015e43d 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/PortableOfflLogController.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/PortableOfflLogController.java @@ -19,7 +19,6 @@ import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.pojo.po.DictData; import com.njcn.web.pojo.param.BaseParam; import io.swagger.annotations.Api; -import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.apache.poi.ss.usermodel.Workbook; @@ -27,8 +26,6 @@ import org.springframework.web.bind.annotation.*; import com.njcn.web.controller.BaseController; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; -import org.springframework.web.multipart.support.StandardMultipartHttpServletRequest; - import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; @@ -40,7 +37,7 @@ import java.util.stream.Stream; /** *

- * 便携式基础数据导入 前端控制器 + * 离线数据导入 前端控制器 *

* * @author guofeihu @@ -48,7 +45,7 @@ import java.util.stream.Stream; */ @RestController @RequestMapping("/portableOfflLog") -@Api(tags = " 出厂设备") +@Api(tags = " 离线数据导入") @AllArgsConstructor public class PortableOfflLogController extends BaseController { @@ -74,14 +71,14 @@ public class PortableOfflLogController extends BaseController { @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/queryPage") @ApiOperation("便携式设备解析列表") - @ApiImplicitParam(name = "baseParam", value = "查询参数", required = true) public HttpResult> queryPage(@RequestBody BaseParam baseParam){ String methodDescribe = getMethodDescribe("queryPage"); Page list = iPortableOfflLogService.queryPage(baseParam); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); } - @ApiOperation("批量导入便携式设备信息") + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @ApiOperation("离线数据导入") @PostMapping(value = "importEquipment") public HttpResult importEquipment(@RequestParam("devId") String devId , @RequestParam("lineId") String lineId, @RequestParam("paths") String paths,HttpServletRequest request) { diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/ICsGroupService.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/ICsGroupService.java index cd7d257..17089a2 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/ICsGroupService.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/ICsGroupService.java @@ -7,6 +7,7 @@ import com.njcn.csdevice.pojo.po.CsGroup; import com.njcn.csdevice.pojo.vo.CsGroupVO; import com.njcn.csdevice.pojo.vo.DataGroupTemplateVO; import com.njcn.csharmonic.param.CommonStatisticalQueryParam; +import com.njcn.csharmonic.pojo.vo.ThdDataTdVO; import com.njcn.csharmonic.pojo.vo.ThdDataVO; import com.njcn.system.pojo.po.EleEpdPqd; import com.njcn.system.pojo.vo.EleEpdPqdListVO; @@ -51,13 +52,19 @@ public interface ICsGroupService extends IService { * 查询实时数据中实时趋势 * @return */ - List getDeviceTrendData(String devId,String lineId); + List getDeviceTrendData(String devId, String lineId,String groupId); + + /** + * 查询实时数据中实时趋势中指标分组 + * @return + */ + List getDeviceTrendDataGroup(); /** * 查询实时数据中实时趋势 * @return */ - List getDeviceHarmonicSpectrumData(CommonStatisticalQueryParam commonStatisticalQueryParam); + List getDeviceHarmonicSpectrumData(CommonStatisticalQueryParam commonStatisticalQueryParam); /** * 查询稳态指标并按照指标名称分组(A、B、...) diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/IPortableOfflLogService.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/IPortableOfflLogService.java index 863d479..18e2ffb 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/IPortableOfflLogService.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/IPortableOfflLogService.java @@ -8,7 +8,7 @@ import com.njcn.web.pojo.param.BaseParam; /** *

- * 便携式基础数据导入 服务类 + * 离线数据导入 服务类 *

* * @author guofeihu diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsGroupServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsGroupServiceImpl.java index 06034bd..9b53ca5 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsGroupServiceImpl.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsGroupServiceImpl.java @@ -30,7 +30,10 @@ import com.njcn.csdevice.pojo.vo.EnergyTemplateVO; import com.njcn.csdevice.service.ICsDataArrayService; import com.njcn.csdevice.service.ICsGroupService; import com.njcn.csharmonic.param.CommonStatisticalQueryParam; +import com.njcn.csharmonic.pojo.vo.ThdDataTdVO; import com.njcn.csharmonic.pojo.vo.ThdDataVO; +import com.njcn.device.biz.pojo.po.Overlimit; +import com.njcn.device.pq.api.OverLimitClient; import com.njcn.event.api.EventDetailFeignClient; import com.njcn.event.pojo.po.RmpEventDetailPO; import com.njcn.influx.pojo.bo.CommonQueryParam; @@ -53,6 +56,8 @@ import lombok.Data; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; + +import java.lang.reflect.Field; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DecimalFormat; @@ -62,6 +67,8 @@ import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; import java.util.stream.Stream; +import static com.njcn.csdevice.constant.DataParam.overlimitsGroup; + /** *

* 数据分组表 服务实现类 @@ -102,6 +109,8 @@ public class CsGroupServiceImpl extends ServiceImpl impl private final EleEvtFeignClient eleEvtFeignClient; + private final OverLimitClient overLimitClient; + @Override @Transactional(rollbackFor = Exception.class) public List getGroupData(String dataSet) { @@ -297,11 +306,16 @@ public class CsGroupServiceImpl extends ServiceImpl impl eleEpdPqds.addAll(css.getEleEpdPqdVOS()); }); eleEpdPqds.forEach(epdPqd->{ + String frequency = ""; + if(epdPqd.getHarmStart() != null && epdPqd.getHarmEnd() != null){ + frequency = "_" + epdPqd.getHarmStart().intValue(); + } + String finalFrequency = frequency; List commonQueryParams = finalCsLinePOList.stream().map(temp -> { CommonQueryParam commonQueryParam = new CommonQueryParam(); commonQueryParam.setLineId(temp.getLineId()); commonQueryParam.setTableName(getTableNameByClassId(epdPqd.getClassId())); - commonQueryParam.setColumnName(epdPqd.getName()); + commonQueryParam.setColumnName(epdPqd.getName()+ finalFrequency); commonQueryParam.setPhasic(epdPqd.getPhase()); commonQueryParam.setDataType(commonStatisticalQueryParam.getValueType() == null ? DataParam.portableDevStatisticalMethods:commonStatisticalQueryParam.getValueType()); commonQueryParam.setProcess(data1.get(0).getProcess()+""); @@ -355,7 +369,7 @@ public class CsGroupServiceImpl extends ServiceImpl impl filter(dataSetDTO -> Objects.equals(dataSetDTO.getName(), DataParam.EvtParamPhase)). collect(Collectors.toList()); if(CollectionUtil.isEmpty(evtParamPhase)){ - temp.setPhaseType("-"); + temp.setPhaseType(null); }else { temp.setPhaseType(evtParamPhase.get(0).getValue()+(Objects.isNull(evtParamPhase.get(0).getUnit())?"":evtParamPhase.get(0).getUnit())); } @@ -391,102 +405,184 @@ public class CsGroupServiceImpl extends ServiceImpl impl } @Override - public List getDeviceTrendData(String devId, String lineId) { - List result = new ArrayList(); + public List getDeviceTrendData(String devId, String lineId,String groupId) { + List data = new ArrayList(); + List overlimits = overLimitClient.getOverLimitByLineIds(Arrays.asList(lineId)).getData(); List finalCsLinePOList = csLineFeignClient.queryLineById(Arrays.asList(lineId)).getData(); - List data1 = equipmentFeignClient.queryDeviceById(Stream.of(devId.toString()).collect(Collectors.toList())).getData(); - //便携式设备的稳态指标 - CsStatisticalSetVO csStatisticalSetVO = csStatisticalSetFeignClient.queryStatistical(DataParam.portableDevStatisticalId).getData(); - List eleEpdPqds = new ArrayList<>(); + List data1 = equipmentFeignClient.queryDeviceById(Stream.of(devId).collect(Collectors.toList())).getData(); + //便携式设备-稳态指标-实时数据-指标 + CsStatisticalSetVO csStatisticalSetVO = csStatisticalSetFeignClient.queryStatistical(DataParam.portableDevStatisticaTrendlId).getData(); csStatisticalSetVO.getSelectedList().forEach(css->{ - for(EleEpdPqd epdPqd : css.getEleEpdPqdVOS()){ - if(epdPqd.getHarmStart() != null && epdPqd.getHarmEnd() != null){ - eleEpdPqds.add(epdPqd); + if(groupId != null && !groupId.equals(css.getDataType())){ + + }else{ + ThdDataTdVO thdDataTdVO = new ThdDataTdVO(); + thdDataTdVO.setId(css.getDataType()); + thdDataTdVO.setGroupName(css.getDataTypeName()); + List> thdDataVOS = new ArrayList<>(); + List thdDataTdVODatas = new ArrayList<>(); + for(EleEpdPqd epd : css.getEleEpdPqdVOS()){ + if(epd.getHarmStart() != null && epd.getHarmEnd() != null){ + Map map = new HashMap<>(); + List result = new ArrayList(); + List eleEpdPqds = new ArrayList<>(); + eleEpdPqds.add(epd); + eleEpdPqds.forEach(epdPqd->{ + for (int i = epdPqd.getHarmStart().intValue(); i < epdPqd.getHarmEnd().intValue(); i++) { + String index = i+""; + List commonQueryParams = finalCsLinePOList.stream().map(temp -> { + CommonQueryParam commonQueryParam = new CommonQueryParam(); + commonQueryParam.setLineId(temp.getLineId()); + commonQueryParam.setTableName(getTableNameByClassId(epdPqd.getClassId())); + commonQueryParam.setColumnName(epdPqd.getName()+"_"+index); + commonQueryParam.setPhasic(epdPqd.getPhase()); + commonQueryParam.setDataType(DataParam.portableDevStatisticalMethods); + commonQueryParam.setProcess(data1.get(0).getProcess()+""); + commonQueryParam.setClDid(getClDidByLineId(temp.getLineId())); + return commonQueryParam; + }).collect(Collectors.toList()); + List deviceRtData = commonService.getDeviceRtData(commonQueryParams); + List collect1 = deviceRtData.stream().map(temp -> { + ThdDataVO vo = new ThdDataVO(); + vo.setLineId(temp.getLineId()); + vo.setPhase(temp.getPhaseType()); + String position = finalCsLinePOList.stream().filter(csLinePO -> Objects.equals(csLinePO.getLineId(), vo.getLineId())).collect(Collectors.toList()).get(0).getPosition(); + vo.setPosition(position); + vo.setTime(temp.getTime()); + vo.setStatMethod(temp.getValueType()); + vo.setStatisticalData(Double.valueOf(df.format(temp.getValue()))); + vo.setStatisticalIndex(epdPqd.getId()); + vo.setUnit(epdPqd.getUnit()); + vo.setStatisticalName(epdPqd.getName()); + vo.setAnotherName(epdPqd.getShowName()); + vo.setFrequency(index); + return vo; + }).collect(Collectors.toList()); + result.addAll(collect1); + } + }); + + map.put(DataParam.dataStr,result); + map.put(DataParam.nameStr,epd.getPhase()+epd.getShowName()); + map.put(DataParam.phaseStr,epd.getPhase()); + thdDataVOS.add(map); + + for(ThdDataVO thdDataVO : result){ + ThdDataTdVO.ThdDataTdVOData thdDataTdVOData = new ThdDataTdVO.ThdDataTdVOData(); + BeanUtils.copyProperties(thdDataVO,thdDataTdVOData); + if(!overlimits.isEmpty()){ + thdDataTdVOData.setInternationalValue(getOverlimitsByGroup(overlimits.get(0).getClass(),css.getDataType(),thdDataVO.getFrequency(),overlimits.get(0))); + } + thdDataTdVODatas.add(thdDataTdVOData); + } + } } + thdDataTdVO.setThdDataVOS(thdDataVOS); + thdDataTdVO.setThdDataTdVODatas(thdDataTdVODatas); + data.add(thdDataTdVO); } }); - eleEpdPqds.forEach(epdPqd->{ - for (int i = epdPqd.getHarmStart().intValue(); i < epdPqd.getHarmEnd().intValue(); i++) { - String index = i+""; - List commonQueryParams = finalCsLinePOList.stream().map(temp -> { - CommonQueryParam commonQueryParam = new CommonQueryParam(); - commonQueryParam.setLineId(temp.getLineId()); - commonQueryParam.setTableName(getTableNameByClassId(epdPqd.getClassId())); - commonQueryParam.setColumnName(epdPqd.getName()+"_"+index); - commonQueryParam.setPhasic(epdPqd.getPhase()); - commonQueryParam.setDataType(DataParam.portableDevStatisticalMethods); - commonQueryParam.setProcess(data1.get(0).getProcess()+""); - commonQueryParam.setClDid(getClDidByLineId(temp.getLineId())); - return commonQueryParam; - }).collect(Collectors.toList()); - List deviceRtData = commonService.getDeviceRtData(commonQueryParams); - List collect1 = deviceRtData.stream().map(temp -> { - ThdDataVO vo = new ThdDataVO(); - vo.setLineId(temp.getLineId()); - vo.setPhase(temp.getPhaseType()); - String position = finalCsLinePOList.stream().filter(csLinePO -> Objects.equals(csLinePO.getLineId(), vo.getLineId())).collect(Collectors.toList()).get(0).getPosition(); - vo.setPosition(position); - vo.setTime(temp.getTime()); - vo.setStatMethod(temp.getValueType()); - vo.setStatisticalData(Double.valueOf(df.format(temp.getValue()))); - vo.setStatisticalIndex(epdPqd.getId()); - vo.setUnit(epdPqd.getUnit()); - vo.setStatisticalName(epdPqd.getName()); - vo.setAnotherName(epdPqd.getShowName()); - vo.setFrequency(index); - return vo; - }).collect(Collectors.toList()); - result.addAll(collect1); + return data; + } + + //根据指标分组获取对应的国标幅值 + private Object getOverlimitsByGroup(Class clazz,String groupId,String frequency,Overlimit overlimit){ + try { + String name = DataParam.overlimitsGroup.get(groupId); + if(name == null){ + return null; } - }); - return result; + Field field = clazz.getDeclaredField(name+frequency); + field.setAccessible(true); + return field.get(overlimit); + } catch (Exception e) { + return null; + } } @Override - public List getDeviceHarmonicSpectrumData(CommonStatisticalQueryParam commonStatisticalQueryParam) { + public List getDeviceTrendDataGroup() { + List data = new ArrayList(); + //便携式设备-稳态指标-实时数据-指标 + CsStatisticalSetVO csStatisticalSetVO = csStatisticalSetFeignClient.queryStatistical(DataParam.portableDevStatisticaTrendlId).getData(); + csStatisticalSetVO.getSelectedList().forEach(css->{ + ThdDataTdVO thdDataTdVO = new ThdDataTdVO(); + thdDataTdVO.setId(css.getDataType()); + thdDataTdVO.setGroupName(css.getDataTypeName()); + data.add(thdDataTdVO); + }); + return data; + } + + @Override + public List getDeviceHarmonicSpectrumData(CommonStatisticalQueryParam commonStatisticalQueryParam) { formatQueryParamList(commonStatisticalQueryParam); - List result = new ArrayList(); + List thdDataSpectrumVODatas = new ArrayList<>(); List data1 = equipmentFeignClient.queryDeviceById(Stream.of(commonStatisticalQueryParam.getDevId()).collect(Collectors.toList())).getData(); List finalCsLinePOList = csLineFeignClient.queryLineById(Arrays.asList(commonStatisticalQueryParam.getLineId())).getData(); if(commonStatisticalQueryParam.getList() != null && commonStatisticalQueryParam.getList().size() > 0){ for (CommonStatisticalQueryParam param : commonStatisticalQueryParam.getList()){ - if(param.getStatisticalId() == null){ - continue; - } List eleEpdPqds = csStatisticalSetFeignClient.queryStatisticalSelect(param.getStatisticalId()).getData(); + ThdDataTdVO.ThdDataSpectrumVOData thdDataSpectrumVOData = new ThdDataTdVO.ThdDataSpectrumVOData(); + List result = new ArrayList(); eleEpdPqds.forEach(epdPqd->{ - List commonQueryParams = finalCsLinePOList.stream().map(temp -> { - CommonQueryParam commonQueryParam = new CommonQueryParam(); - commonQueryParam.setLineId(temp.getLineId()); - commonQueryParam.setTableName(getTableNameByClassId(epdPqd.getClassId())); - commonQueryParam.setColumnName(epdPqd.getName()+ (param.getFrequency() == null ? "":"_"+param.getFrequency())); - commonQueryParam.setPhasic(epdPqd.getPhase()); - commonQueryParam.setDataType(commonStatisticalQueryParam.getValueType()); - commonQueryParam.setProcess(data1.get(0).getProcess()+""); - commonQueryParam.setClDid(getClDidByLineId(temp.getLineId())); - return commonQueryParam; - }).collect(Collectors.toList()); - List deviceRtData = commonService.getDeviceRtData(commonQueryParams); - List collect1 = deviceRtData.stream().map(temp -> { - ThdDataVO vo = new ThdDataVO(); - vo.setLineId(temp.getLineId()); - vo.setPhase(temp.getPhaseType()); - String position = finalCsLinePOList.stream().filter(csLinePO -> Objects.equals(csLinePO.getLineId(), vo.getLineId())).collect(Collectors.toList()).get(0).getPosition(); - vo.setPosition(position); - vo.setTime(temp.getTime()); - vo.setStatMethod(temp.getValueType()); - vo.setStatisticalData(Double.valueOf(df.format(temp.getValue()))); - vo.setStatisticalIndex(epdPqd.getId()); - vo.setUnit(epdPqd.getUnit()); - vo.setStatisticalName(epdPqd.getName()); - vo.setAnotherName(epdPqd.getShowName()); - return vo; - }).collect(Collectors.toList()); - result.addAll(collect1); + if(epdPqd.getHarmStart() != null && epdPqd.getHarmEnd() != null){ + thdDataSpectrumVOData.setShowName(getShowName(param.getStatisticalId())); + for (int i = epdPqd.getHarmStart().intValue(); i < epdPqd.getHarmEnd().intValue(); i++) { + String index = i+""; + List commonQueryParams = finalCsLinePOList.stream().map(temp -> { + CommonQueryParam commonQueryParam = new CommonQueryParam(); + commonQueryParam.setLineId(temp.getLineId()); + commonQueryParam.setTableName(getTableNameByClassId(epdPqd.getClassId())); + commonQueryParam.setColumnName(epdPqd.getName()+"_"+index); + commonQueryParam.setPhasic(epdPqd.getPhase()); + commonQueryParam.setDataType(DataParam.portableDevStatisticalMethods); + commonQueryParam.setProcess(data1.get(0).getProcess()+""); + commonQueryParam.setClDid(getClDidByLineId(temp.getLineId())); + return commonQueryParam; + }).collect(Collectors.toList()); + List deviceRtData = commonService.getDeviceRtData(commonQueryParams); + List collect1 = deviceRtData.stream().map(temp -> { + ThdDataVO vo = new ThdDataVO(); + vo.setLineId(temp.getLineId()); + vo.setPhase(temp.getPhaseType()); + String position = finalCsLinePOList.stream().filter(csLinePO -> Objects.equals(csLinePO.getLineId(), vo.getLineId())).collect(Collectors.toList()).get(0).getPosition(); + vo.setPosition(position); + vo.setTime(temp.getTime()); + vo.setStatMethod(temp.getValueType()); + vo.setStatisticalData(Double.valueOf(df.format(temp.getValue()))); + vo.setStatisticalIndex(epdPqd.getId()); + vo.setUnit(epdPqd.getUnit()); + vo.setStatisticalName(epdPqd.getName()); + vo.setAnotherName(epdPqd.getShowName()); + vo.setFrequency(index); + return vo; + }).collect(Collectors.toList()); + result.addAll(collect1); + } + } }); + thdDataSpectrumVOData.setThdDataVOS(result); + thdDataSpectrumVODatas.add(thdDataSpectrumVOData); } } - return result; + return thdDataSpectrumVODatas; + } + + private String getShowName(String statisticalId){ + CsStatisticalSetVO csStatisticalSetVO = csStatisticalSetFeignClient.queryStatistical(DataParam.portableDevStatisticaTrendlId).getData(); + for(EleEpdPqdListVO eleEpdPqdListVO : csStatisticalSetVO.getSelectedList()){ + if(statisticalId.equals(eleEpdPqdListVO.getDataType())){ + return eleEpdPqdListVO.getDataTypeName(); + } + } + csStatisticalSetVO = csStatisticalSetFeignClient.queryStatistical(DataParam.portableDevStatisticalId).getData(); + for(EleEpdPqdListVO eleEpdPqdListVO : csStatisticalSetVO.getSelectedList()){ + if(statisticalId.equals(eleEpdPqdListVO.getDataType())){ + return eleEpdPqdListVO.getDataTypeName(); + } + } + return null; } @Override diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/PortableOfflLogServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/PortableOfflLogServiceImpl.java index aeb7784..51479f4 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/PortableOfflLogServiceImpl.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/PortableOfflLogServiceImpl.java @@ -2,7 +2,6 @@ package com.njcn.csdevice.service.impl; import cn.hutool.core.util.IdUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.google.gson.Gson; import com.njcn.common.pojo.exception.BusinessException; import com.njcn.csdevice.constant.DataParam; import com.njcn.csdevice.mapper.PortableOfflLogMapper; @@ -11,25 +10,28 @@ import com.njcn.csdevice.service.IPortableOfflLogService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.njcn.csdevice.param.UploadDataParam; import com.njcn.csharmonic.api.OfflineDataUploadFeignClient; +import com.njcn.csharmonic.offline.constant.OfflineConstant; import com.njcn.csharmonic.offline.log.vo.NewTaglogbuffer; +import com.njcn.csharmonic.offline.mincfg.tagComtradeCfg; import com.njcn.csharmonic.offline.vo.Response; +import com.njcn.influx.pojo.po.cs.PqdData; import com.njcn.oss.utils.FileStorageUtil; import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.pojo.po.DictData; import com.njcn.web.pojo.param.BaseParam; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; - import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.ObjectInputStream; -import java.lang.reflect.Field; +import java.text.SimpleDateFormat; import java.util.*; /** *

- * 便携式基础数据导入 服务实现类 + * 离线数据导入 服务实现类 *

* * @author guofeihu @@ -48,38 +50,40 @@ public class PortableOfflLogServiceImpl extends ServiceImpl queryPage(BaseParam baseParam) { Page returnpage = new Page<> (baseParam.getPageNum(), baseParam.getPageSize ()); - if(baseParam.getSearchBeginTime()!=null) baseParam.setSearchBeginTime(baseParam.getSearchBeginTime()+" 00:00:00"); - if(baseParam.getSearchEndTime()!=null) baseParam.setSearchEndTime(baseParam.getSearchEndTime()+" 23:59:59"); + if(baseParam.getSearchBeginTime()!=null) baseParam.setSearchBeginTime(baseParam.getSearchBeginTime()+DataParam.startTime); + if(baseParam.getSearchEndTime()!=null) baseParam.setSearchEndTime(baseParam.getSearchEndTime()+DataParam.endTime); returnpage = this.getBaseMapper().queryPage(returnpage,baseParam); return returnpage; } @Override + @Transactional(rollbackFor = {Exception.class}) public void importEquipment(UploadDataParam uploadDataParam) { - //获取离线上传对应的字典规则 + //获取离线上传对应的字典规则(字典用来控制上传的文件夹名称,其中字典的name代表名称,code代表该文件夹下对应的解析规则且code不能更改) List dictDatas = dicDataFeignClient.getDicDataByTypeCode(DataParam.wlRecordUpload).getData(); List responses = new ArrayList<>(); - List files = uploadDataParam.getFiles(); - List paths = uploadDataParam.getPaths(); + //便利每个文件夹 for(DictData dictData : dictDatas){ List fileList = new ArrayList<>(); - for (int i = 0; i < files.size(); i++) { - if(paths.get(i).indexOf(dictData.getName())!=-1){ - fileList.add(files.get(i)); - } + for(MultipartFile file : uploadDataParam.getFiles()){ + //获取每个文件夹下对应的文件信息 + if(checkPrevsFolder(file.getOriginalFilename(),dictData.getName())!=null) fileList.add(file); } if(!fileList.isEmpty()){ + //将当前文件夹下的文件统一解析 byte[] resp = offlineDataUploadFeignClient.uploadAnalysis(fileList,dictData.getCode()).getData(); + //解析的返回的是复杂对象所以直接转成byte数组 ByteArrayInputStream bis = new ByteArrayInputStream(resp); ObjectInputStream ois = null; try { ois = new ObjectInputStream(bis); Object obj = ois.readObject(); + //实际返回的是List 也即:该文件夹下所有解析的文件对应的结果集 List response = (List) obj; responses.addAll(response); } catch (Exception e) { e.printStackTrace(); - throw new BusinessException("数据集对象转字节数组失败"); + throw new BusinessException(OfflineConstant.BYTETODATA_FAIL); } finally { try { ois.close(); @@ -91,6 +95,8 @@ public class PortableOfflLogServiceImpl extends ServiceImpl pqdData = (List) response.getObj(); + if(response.getState() != null){ + portableOfflLog.setState(response.getState()); + } + if(pqdData != null && !pqdData.isEmpty()){ + portableOfflLog.setState(1); + portableOfflLog.setAllCount(pqdData.size()); + if(minFlag){ + //min结果集解析入库后就不需要在解析了 + minFlag = false; + portableOfflLog.setRealCount(pqdData.size()); + } + } + }else if(file.getOriginalFilename().equals(response.getFilename())){ //判断当前解析的数据属于哪种结果(目前来说三种:comtrade、log、min) + if(checkPrevsFolder(file.getOriginalFilename(),OfflineConstant.COMTRADE)!=null){ + if(response.getState() != null){ + portableOfflLog.setState(response.getState()); + } + tagComtradeCfg tagComtradeCfg = (tagComtradeCfg) response.getObj(); + if(tagComtradeCfg != null){ + portableOfflLog.setState(1); + portableOfflLog.setAllCount(1); + portableOfflLog.setRealCount(1); + } + } + if(checkPrevsFolder(file.getOriginalFilename(),OfflineConstant.LOG)!=null){ + if(response.getState() != null){ + portableOfflLog.setState(response.getState()); + } + List newTaglogbuffers = (List) response.getObj(); + if(newTaglogbuffers != null && !newTaglogbuffers.isEmpty()){ + portableOfflLog.setState(1); + portableOfflLog.setAllCount(newTaglogbuffers.size()); + portableOfflLog.setRealCount(newTaglogbuffers.size()); + } + } } } this.baseMapper.insert(portableOfflLog); } } - private static T convertToObj(LinkedHashMap map,Class clazz) throws Exception{ - T obj = clazz.newInstance(); - for(Map.Entry entry : map.entrySet()){ - String fieldName = entry.getKey(); - Object fieldValue = entry.getValue(); - Field field = clazz.getDeclaredField(fieldName); - field.setAccessible(true); - field.set(obj,fieldValue); + //根据文件全路径(包含文件夹)解析文件的分类 + private String checkPrevsFolder(String filePath,String type){ + List paths = Arrays.asList(filePath.split("/")); + if(paths.contains(type)){ + return type; } - return obj; + return null; + } + + private String getFolderName(){ + Calendar calendar = Calendar.getInstance(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss"); + return sdf.format(calendar.getTime()); } } diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/offline/constant/OfflineConstant.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/offline/constant/OfflineConstant.java new file mode 100644 index 0000000..6fc7f3c --- /dev/null +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/offline/constant/OfflineConstant.java @@ -0,0 +1,19 @@ +package com.njcn.csharmonic.offline.constant; + +public interface OfflineConstant { + + String COMTRADE = "comtrade"; + + String MIN = "min"; + + String LOG = "log"; + + String BYTETODATA_FAIL = "字节数组转结果集失败"; + + String DATATOBYTE_FAIL = "结果集转字节数组失败"; + + String BIN = ".bin"; + + String CFG = ".cfg"; + +} diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/offline/mincfg/AnalyseComtradeCfg.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/offline/mincfg/AnalyseComtradeCfg.java index 4e8f5d9..1ade2d4 100644 --- a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/offline/mincfg/AnalyseComtradeCfg.java +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/offline/mincfg/AnalyseComtradeCfg.java @@ -70,39 +70,39 @@ public class AnalyseComtradeCfg { List pqdData = new ArrayList<>(); HashMap hashMapA = new HashMap<>(); - hashMapA.put("phasic_type","A"); - hashMapA.put("value_type",valueType); + hashMapA.put("phaseType","A"); + hashMapA.put("valueType",valueType); hashMapA.put("time",dateTime.toInstant()); HashMap hashMapB = new HashMap<>(); - hashMapB.put("phasic_type","B"); - hashMapB.put("value_type",valueType); + hashMapB.put("phaseType","B"); + hashMapB.put("valueType",valueType); hashMapB.put("time",dateTime.toInstant()); HashMap hashMapC = new HashMap<>(); - hashMapC.put("phasic_type","C"); - hashMapC.put("value_type",valueType); + hashMapC.put("phaseType","C"); + hashMapC.put("valueType",valueType); hashMapC.put("time",dateTime.toInstant()); HashMap hashMapM = new HashMap<>(); - hashMapM.put("phasic_type","M"); - hashMapM.put("value_type",valueType); + hashMapM.put("phaseType","M"); + hashMapM.put("valueType",valueType); hashMapM.put("time",dateTime.toInstant()); HashMap hashMapAB = new HashMap<>(); - hashMapAB.put("phasic_type","AB"); - hashMapAB.put("value_type",valueType); + hashMapAB.put("phaseType","AB"); + hashMapAB.put("valueType",valueType); hashMapAB.put("time",dateTime.toInstant()); HashMap hashMapBC = new HashMap<>(); - hashMapBC.put("phasic_type","BC"); - hashMapBC.put("value_type",valueType); + hashMapBC.put("phaseType","BC"); + hashMapBC.put("valueType",valueType); hashMapBC.put("time",dateTime.toInstant()); HashMap hashMapCA = new HashMap<>(); - hashMapCA.put("phasic_type","CA"); - hashMapCA.put("value_type",valueType); + hashMapCA.put("phaseType","CA"); + hashMapCA.put("valueType",valueType); hashMapCA.put("time",dateTime.toInstant()); @@ -297,17 +297,26 @@ public class AnalyseComtradeCfg { hashMapB.put("pq_Plt",ulFlicker[1]); hashMapC.put("pq_Plt",ulFlicker[2]); + ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(new JavaTimeModule()); PqdData pqdDataA = mapper.convertValue(hashMapA, PqdData.class); PqdData pqdDataB = mapper.convertValue(hashMapB, PqdData.class); PqdData pqdDataC = mapper.convertValue(hashMapC, PqdData.class); PqdData pqdDataM = mapper.convertValue(hashMapM, PqdData.class); + PqdData pqdDataAB = mapper.convertValue(hashMapAB, PqdData.class); + PqdData pqdDataBC = mapper.convertValue(hashMapBC, PqdData.class); + PqdData pqdDataCA = mapper.convertValue(hashMapCA, PqdData.class); + + pqdData.add(pqdDataA); pqdData.add(pqdDataB); pqdData.add(pqdDataC); pqdData.add(pqdDataM); + pqdData.add(pqdDataAB); + pqdData.add(pqdDataBC); + pqdData.add(pqdDataCA); return pqdData; diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/offline/mincfg/vo/AnalyseComtradeCfg1.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/offline/mincfg/vo/AnalyseComtradeCfg1.java index 4efefb8..1b0852f 100644 --- a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/offline/mincfg/vo/AnalyseComtradeCfg1.java +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/offline/mincfg/vo/AnalyseComtradeCfg1.java @@ -82,39 +82,39 @@ public class AnalyseComtradeCfg1 { List pqdData = new ArrayList<>(); HashMap hashMapA = new HashMap<>(); - hashMapA.put("phasic_type","A"); - hashMapA.put("value_type",valueType); + hashMapA.put("phaseType","A"); + hashMapA.put("valueType",valueType); hashMapA.put("time",dateTime.toInstant()); HashMap hashMapB = new HashMap<>(); - hashMapB.put("phasic_type","B"); - hashMapB.put("value_type",valueType); + hashMapB.put("phaseType","B"); + hashMapB.put("valueType",valueType); hashMapB.put("time",dateTime.toInstant()); HashMap hashMapC = new HashMap<>(); - hashMapC.put("phasic_type","C"); - hashMapC.put("value_type",valueType); + hashMapC.put("phaseType","C"); + hashMapC.put("valueType",valueType); hashMapC.put("time",dateTime.toInstant()); HashMap hashMapM = new HashMap<>(); - hashMapM.put("phasic_type","M"); - hashMapM.put("value_type",valueType); + hashMapM.put("phaseType","M"); + hashMapM.put("valueType",valueType); hashMapM.put("time",dateTime.toInstant()); HashMap hashMapAB = new HashMap<>(); - hashMapAB.put("phasic_type","AB"); - hashMapAB.put("value_type",valueType); + hashMapAB.put("phaseType","AB"); + hashMapAB.put("valueType",valueType); hashMapAB.put("time",dateTime.toInstant()); HashMap hashMapBC = new HashMap<>(); - hashMapBC.put("phasic_type","BC"); - hashMapBC.put("value_type",valueType); + hashMapBC.put("phaseType","BC"); + hashMapBC.put("valueType",valueType); hashMapBC.put("time",dateTime.toInstant()); HashMap hashMapCA = new HashMap<>(); - hashMapCA.put("phasic_type","CA"); - hashMapCA.put("value_type",valueType); + hashMapCA.put("phaseType","CA"); + hashMapCA.put("valueType",valueType); hashMapCA.put("time",dateTime.toInstant()); @@ -315,11 +315,19 @@ public class AnalyseComtradeCfg1 { PqdData pqdDataB = mapper.convertValue(hashMapB, PqdData.class); PqdData pqdDataC = mapper.convertValue(hashMapC, PqdData.class); PqdData pqdDataM = mapper.convertValue(hashMapM, PqdData.class); + PqdData pqdDataAB = mapper.convertValue(hashMapAB, PqdData.class); + PqdData pqdDataBC = mapper.convertValue(hashMapBC, PqdData.class); + PqdData pqdDataCA = mapper.convertValue(hashMapCA, PqdData.class); + + pqdData.add(pqdDataA); pqdData.add(pqdDataB); pqdData.add(pqdDataC); pqdData.add(pqdDataM); + pqdData.add(pqdDataAB); + pqdData.add(pqdDataBC); + pqdData.add(pqdDataCA); return pqdData; diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/offline/vo/Response.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/offline/vo/Response.java index a7bdd2b..44c0bc6 100644 --- a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/offline/vo/Response.java +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/offline/vo/Response.java @@ -10,6 +10,9 @@ public class Response implements Serializable { @ApiModelProperty("文件名") private String filename; + @ApiModelProperty("解析结果状态(0-未解析 1-解析成功 2-解析失败 3-文件不存在)") + private Integer state; + @ApiModelProperty("解析后数据") private Object obj; diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/ThdDataTdVO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/ThdDataTdVO.java new file mode 100644 index 0000000..2b9a24b --- /dev/null +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/ThdDataTdVO.java @@ -0,0 +1,51 @@ +package com.njcn.csharmonic.pojo.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import java.util.List; +import java.util.Map; + +/** + *

+ * 设备监控-实时数据 + *

+ * + * @author guofeihu + * @since 2024-07-26 + */ +@Data +public class ThdDataTdVO{ + + @ApiModelProperty("id") + private String id; + + @ApiModelProperty("指标分组名称") + private String groupName; + + @ApiModelProperty("该分组下的各个指标的谐坡次数对应值") + private List> thdDataVOS; + + @ApiModelProperty("该指标下的谐坡次数对应值") + private List thdDataTdVODatas; + + @Data + public static class ThdDataTdVOData extends ThdDataVO{ + + @ApiModelProperty(value = "国标限值名称") + private String international = "国标限值"; + + @ApiModelProperty(value = "国标限值") + private Object internationalValue; + } + + @Data + public static class ThdDataSpectrumVOData{ + + @ApiModelProperty(value = "指标名称") + private String showName; + + @ApiModelProperty(value = "国标限值") + private List thdDataVOS; + } + +} diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/OfflineDataUploadServiceImpl.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/OfflineDataUploadServiceImpl.java index 101d92a..bdae192 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/OfflineDataUploadServiceImpl.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/OfflineDataUploadServiceImpl.java @@ -1,6 +1,7 @@ package com.njcn.csharmonic.service.impl; import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.csharmonic.offline.constant.OfflineConstant; import com.njcn.csharmonic.offline.log.Log; import com.njcn.csharmonic.offline.log.vo.NewTaglogbuffer; import com.njcn.csharmonic.offline.mincfg.AnalyseComtradeCfg; @@ -8,6 +9,7 @@ import com.njcn.csharmonic.offline.mincfg.tagComtradeCfg; import com.njcn.csharmonic.offline.vo.Response; import com.njcn.csharmonic.service.OfflineDataUploadService; import com.njcn.influx.pojo.po.cs.PqdData; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.io.ByteArrayOutputStream; @@ -23,6 +25,7 @@ import java.util.List; * @version 1.0.0 * @createTime 2024/7/22 13:56 */ +@Slf4j @Service public class OfflineDataUploadServiceImpl implements OfflineDataUploadService { @@ -34,21 +37,39 @@ public class OfflineDataUploadServiceImpl implements OfflineDataUploadService { List responses = new ArrayList<>(); //min解析较为特殊需要同时解析所有文件 - if(!files.isEmpty() && "min".equals(type)){ + if(!files.isEmpty() && OfflineConstant.MIN.equals(type)){ Response response = new Response(); - response.setFilename("min"); - List pqdData = AnalyseComtradeCfg.processDirectory(files); + response.setFilename(OfflineConstant.MIN); + List pqdData = null; + try { + pqdData = AnalyseComtradeCfg.processDirectory(files); + } catch (Exception e) { + log.error("min文件夹下的数据文件解析失败"); + response.setState(2); + } response.setObj(pqdData); responses.add(response); }else{ for(MultipartFile file : files){ Response response = new Response(); response.setFilename(file.getOriginalFilename()); - if("comtrade".equals(type) && file.getOriginalFilename().indexOf(".cfg") != -1) { - tagComtradeCfg tagComtradeCfg = AnalyseComtradeCfg.analyseComtradeCfg(file); + if(OfflineConstant.COMTRADE.equals(type) && file.getOriginalFilename().indexOf(OfflineConstant.CFG) != -1) { + tagComtradeCfg tagComtradeCfg = null; + try { + tagComtradeCfg = AnalyseComtradeCfg.analyseComtradeCfg(file); + } catch (Exception e) { + log.error("当前文件:{},解析失败",file.getOriginalFilename()); + response.setState(2); + } response.setObj(tagComtradeCfg); - }else if("log".equals(type) && file.getOriginalFilename().indexOf(".bin") != -1){ - List newTaglogbuffers = Log.convertLog(file); + }else if(OfflineConstant.LOG.equals(type) && file.getOriginalFilename().indexOf(OfflineConstant.BIN) != -1){ + List newTaglogbuffers = null; + try { + newTaglogbuffers = Log.convertLog(file); + } catch (Exception e) { + log.error("当前文件:{},解析失败",file.getOriginalFilename()); + response.setState(2); + } response.setObj(newTaglogbuffers); } responses.add(response); @@ -59,7 +80,7 @@ public class OfflineDataUploadServiceImpl implements OfflineDataUploadService { bytes = baos.toByteArray(); } catch (IOException e) { e.printStackTrace(); - throw new BusinessException("数据集对象转字节数组失败"); + throw new BusinessException(OfflineConstant.DATATOBYTE_FAIL); } finally { oos.close(); baos.close();