diff --git a/detection/src/main/java/com/njcn/gather/detection/pojo/vo/DetectionData.java b/detection/src/main/java/com/njcn/gather/detection/pojo/vo/DetectionData.java index 9cbb1236..6c352a72 100644 --- a/detection/src/main/java/com/njcn/gather/detection/pojo/vo/DetectionData.java +++ b/detection/src/main/java/com/njcn/gather/detection/pojo/vo/DetectionData.java @@ -32,5 +32,9 @@ public class DetectionData { */ private Double resultData; + /** + * 误差范围 + */ + private String radius; } diff --git a/detection/src/main/java/com/njcn/gather/detection/service/impl/DetectionServiceImpl.java b/detection/src/main/java/com/njcn/gather/detection/service/impl/DetectionServiceImpl.java index 2451ac15..94aa6e21 100644 --- a/detection/src/main/java/com/njcn/gather/detection/service/impl/DetectionServiceImpl.java +++ b/detection/src/main/java/com/njcn/gather/detection/service/impl/DetectionServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.njcn.gather.detection.pojo.po.DevData; import com.njcn.gather.detection.pojo.vo.DetectionData; @@ -60,9 +61,9 @@ public class DetectionServiceImpl { public Map text(List dev, String errorSysId, Map devIdMapComm, SourceIssue issue, DictDataEnum dataRule) { Map> devDataMap = dev.stream().collect(Collectors.groupingBy(DevData::getId)); Map stringBooleanMap = new LinkedHashMap<>(); - String code="1"; + String code = "1"; devDataMap.forEach(((key, value) -> { - stringBooleanMap.put(key, DetectionIndexProcessing(value,code, errorSysId, devIdMapComm, dataRule, issue)); + stringBooleanMap.put(key, DetectionIndexProcessing(value, code, errorSysId, devIdMapComm, dataRule, issue)); })); return stringBooleanMap; } @@ -77,7 +78,7 @@ public class DetectionServiceImpl { * @param sourceIssue 源下发的参数 * @return */ - public Integer DetectionIndexProcessing(List dev,String code, String errorSysId, Map devIdMapComm, DictDataEnum dataRule, SourceIssue sourceIssue) { + public Integer DetectionIndexProcessing(List dev, String code, String errorSysId, Map devIdMapComm, DictDataEnum dataRule, SourceIssue sourceIssue) { PqErrSysParam.DetectionParam param = new PqErrSysParam.DetectionParam(); param.setIndex(sourceIssue.getIndex()); param.setScriptId(sourceIssue.getScriptId()); @@ -89,70 +90,70 @@ public class DetectionServiceImpl { */ case "FREQ": AdNonHarmonicResult freq = isQualified(dev, devIdMapComm, pqErrSysDtls, F, sourceIssue, dataRule, "FREQ"); - detectionDataDealService.acceptAdNonResult(Arrays.asList(freq),code); + detectionDataDealService.acceptAdNonResult(Arrays.asList(freq), code); return freq.getResultFlag(); /** * 电压 */ case "V": AdNonHarmonicResult vrms = isQualified(dev, devIdMapComm, pqErrSysDtls, U, sourceIssue, dataRule, "VRMS"); - detectionDataDealService.acceptAdNonResult(Arrays.asList(vrms),code); + detectionDataDealService.acceptAdNonResult(Arrays.asList(vrms), code); return vrms.getResultFlag(); /** * 电流 */ case "I": AdNonHarmonicResult irms = isQualified(dev, devIdMapComm, pqErrSysDtls, I, sourceIssue, dataRule, "IRMS"); - detectionDataDealService.acceptAdNonResult(Arrays.asList(irms),code); + detectionDataDealService.acceptAdNonResult(Arrays.asList(irms), code); return irms.getResultFlag(); /** * 谐波电压 */ case "HV": AdHarmonicResult harmV = isHarmQualified(dev, devIdMapComm, pqErrSysDtls, U, sourceIssue, dataRule, 2); - detectionDataDealService.acceptAdResult(Arrays.asList(harmV),code); + detectionDataDealService.acceptAdResult(Arrays.asList(harmV), code); return harmV.getResultFlag(); /** * 谐波电流 */ case "HI": AdHarmonicResult harmI = isHarmQualified(dev, devIdMapComm, pqErrSysDtls, I, sourceIssue, dataRule, 2); - detectionDataDealService.acceptAdResult(Arrays.asList(harmI),code); + detectionDataDealService.acceptAdResult(Arrays.asList(harmI), code); return harmI.getResultFlag(); /** * 间谐波电压 */ case "HSV": AdHarmonicResult harmInV = isHarmQualified(dev, devIdMapComm, pqErrSysDtls, U, sourceIssue, dataRule, 1); - detectionDataDealService.acceptAdResult(Arrays.asList(harmInV),code); + detectionDataDealService.acceptAdResult(Arrays.asList(harmInV), code); return harmInV.getResultFlag(); /** * 间谐波电流 */ case "HSI": AdHarmonicResult harmInI = isHarmQualified(dev, devIdMapComm, pqErrSysDtls, I, sourceIssue, dataRule, 1); - detectionDataDealService.acceptAdResult(Arrays.asList(harmInI),code); + detectionDataDealService.acceptAdResult(Arrays.asList(harmInI), code); return harmInI.getResultFlag(); /** * 三相电压不平衡度 */ case "IMBV": AdNonHarmonicResult vUnban = isUnBalanceOrFlickerQualified(dev, devIdMapComm, pqErrSysDtls, U, sourceIssue, dataRule, "V_UNBAN"); - detectionDataDealService.acceptAdNonResult(Arrays.asList(vUnban),code); + detectionDataDealService.acceptAdNonResult(Arrays.asList(vUnban), code); return vUnban.getResultFlag(); /** * 三相电流不平衡度 */ case "IMBA": AdNonHarmonicResult iUnban = isUnBalanceOrFlickerQualified(dev, devIdMapComm, pqErrSysDtls, I, sourceIssue, dataRule, "I_UNBAN"); - detectionDataDealService.acceptAdNonResult(Arrays.asList(iUnban),code); + detectionDataDealService.acceptAdNonResult(Arrays.asList(iUnban), code); return iUnban.getResultFlag(); /** * 谐波有功功率 */ case "HP": AdHarmonicResult harmP = isHarmQualified(dev, devIdMapComm, pqErrSysDtls, P, sourceIssue, dataRule, 2); - detectionDataDealService.acceptAdResult(Arrays.asList(harmP),code); + detectionDataDealService.acceptAdResult(Arrays.asList(harmP), code); return harmP.getResultFlag(); /** * 功率 @@ -164,13 +165,13 @@ public class DetectionServiceImpl { */ case "F": AdNonHarmonicResult pst = isUnBalanceOrFlickerQualified(dev, devIdMapComm, pqErrSysDtls, null, sourceIssue, dataRule, "PST"); - detectionDataDealService.acceptAdNonResult(Arrays.asList(pst),code); + detectionDataDealService.acceptAdNonResult(Arrays.asList(pst), code); return pst.getResultFlag(); /** * 暂态 */ case "VOLTAGE": - return isVoltageQualified(dev, devIdMapComm, pqErrSysDtls, sourceIssue, dataRule,code); + return isVoltageQualified(dev, devIdMapComm, pqErrSysDtls, sourceIssue, dataRule, code); } return null; } @@ -214,7 +215,7 @@ public class DetectionServiceImpl { result.setDataType("avg"); if (map.containsKey(TYPE_T)) { DetectionData t = rangeComparisonList(map.get(TYPE_T), pqErrSysDtls, fData, 1.0, dataRule); - result.setTValue(t.getData() + "_" + t.getIsData()+"_"+t.getResultData()); + result.setTValue(JSON.toJSONString(t)); result.setResultFlag(t.getIsData()); } else { //取出源所对应的相别信息 @@ -222,19 +223,19 @@ public class DetectionServiceImpl { .filter(x -> (type + "a").equals(x.getChannelType())) .collect(Collectors.toList()); DetectionData a = rangeComparisonList(map.get(TYPE_A), pqErrSysDtls, fData, channelTypeAList.get(0).getFAmp(), dataRule); - result.setAValue(a.getData() + "_" + a.getIsData()+"_"+a.getResultData()); + result.setAValue(JSON.toJSONString(a)); List channelTypeBList = sourceIssue.getChannelList().stream() .filter(x -> (type + "b").equals(x.getChannelType())) .collect(Collectors.toList()); DetectionData b = rangeComparisonList(map.get(TYPE_B), pqErrSysDtls, fData, channelTypeBList.get(0).getFAmp(), dataRule); - result.setBValue(b.getData() + "_" + b.getIsData()+"_"+b.getResultData()); + result.setBValue(JSON.toJSONString(b)); List channelTypeCList = sourceIssue.getChannelList().stream() .filter(x -> (type + "c").equals(x.getChannelType())) .collect(Collectors.toList()); DetectionData c = rangeComparisonList(map.get(TYPE_C), pqErrSysDtls, fData, channelTypeCList.get(0).getFAmp(), dataRule); - result.setCValue(c.getData() + "_" + c.getIsData()+"_"+c.getResultData()); + result.setCValue(JSON.toJSONString(c)); List numbers = Arrays.asList(a.getIsData(), b.getIsData(), c.getIsData()).stream().distinct().collect(Collectors.toList()); return getAdNonHarmonicResult(result, numbers); @@ -328,34 +329,34 @@ public class DetectionServiceImpl { result.setSort(sourceIssue.getIndex()); result.setAdType(pqErrSysDtls.get(0).getScriptType()); result.setDataType("avg"); - if(StrUtil.isBlank(type)){ + if (StrUtil.isBlank(type)) { //取出源所对应的相别信息 List channelTypeAList = checkData.stream() .filter(x -> TYPE_A.equals(x.getPhase())) .collect(Collectors.toList()); DetectionData a = rangeComparisonList(map.get(TYPE_A), pqErrSysDtls, fData, channelTypeAList.get(0).getValue(), dataRule); - result.setAValue(a.getData() + "_" + a.getIsData()+"_"+a.getResultData()); + result.setAValue(JSON.toJSONString(a)); List channelTypeBList = checkData.stream() .filter(x -> TYPE_B.equals(x.getPhase())) .collect(Collectors.toList()); DetectionData b = rangeComparisonList(map.get(TYPE_B), pqErrSysDtls, fData, channelTypeBList.get(0).getValue(), dataRule); - result.setBValue(b.getData() + "_" + b.getIsData()+"_"+b.getResultData()); + result.setBValue(JSON.toJSONString(b)); List channelTypeCList = checkData.stream() .filter(x -> TYPE_C.equals(x.getPhase())) .collect(Collectors.toList()); DetectionData c = rangeComparisonList(map.get(TYPE_C), pqErrSysDtls, fData, channelTypeCList.get(0).getValue(), dataRule); - result.setCValue(c.getData() + "_" + c.getIsData()+"_"+c.getResultData()); + result.setCValue(JSON.toJSONString(c)); List numbers = Arrays.asList(a.getIsData(), b.getIsData(), c.getIsData()); return getAdNonHarmonicResult(result, numbers); - }else{ + } else { List channelTypeBList = checkData.stream() .filter(x -> TYPE_T.equals(x.getPhase())) .collect(Collectors.toList()); DetectionData t = rangeComparisonList(map.get(TYPE_B), pqErrSysDtls, fData, channelTypeBList.get(0).getValue(), dataRule); - result.setBValue(t.getData() + "_" + t.getIsData()+"_"+t.getResultData()); + result.setBValue(JSON.toJSONString(t)); List numbers = Arrays.asList(t.getIsData()); return getAdNonHarmonicResult(result, numbers); } @@ -369,7 +370,7 @@ public class DetectionServiceImpl { * @param pqErrSysDtls 误差体系 * @param sourceIssue 源下发所对应的参数 * @param dataRule 数据处理原则 - * @param code 计划code + * @param code 计划code * @return */ public Integer isVoltageQualified(List dev, @@ -378,7 +379,7 @@ public class DetectionServiceImpl { SourceIssue sourceIssue, DictDataEnum dataRule, String code - ) { + ) { //电压幅值处理数据 Map> mag = devListMap(dev, dataRule, MAG); //暂降时间处理数据 @@ -391,7 +392,7 @@ public class DetectionServiceImpl { magResult.setAdType(magErrList.get(0).getScriptType()); AdNonHarmonicResult durResult = voltageResult(dev.get(0).getId(), devIdMapComm, sourceIssue, dataRule, dur, durErrList, sourceIssue.getFFreq(), DUR); durResult.setAdType(durErrList.get(0).getScriptType()); - detectionDataDealService.acceptAdNonResult(Arrays.asList(magResult,durResult),code); + detectionDataDealService.acceptAdNonResult(Arrays.asList(magResult, durResult), code); List numbers = Arrays.asList(magResult.getResultFlag(), durResult.getResultFlag()).stream().distinct().collect(Collectors.toList()); if (numbers.contains(4)) { return 4; @@ -441,7 +442,7 @@ public class DetectionServiceImpl { retainATime = channelTypeAList.get(0).getFAmp(); } DetectionData a = rangeComparisonList(mag.get(TYPE_A), magErrList, fData, retainATime, dataRule); - result.setAValue(a.getData() + "_" + a.getIsData()+"_"+a.getResultData()); + result.setAValue(JSON.toJSONString(a)); List channelTypeBList = sourceIssue.getChannelList().stream() .filter(x -> ("Ub").equals(x.getChannelType())) @@ -453,7 +454,7 @@ public class DetectionServiceImpl { retainBTime = channelTypeBList.get(0).getFAmp(); } DetectionData b = rangeComparisonList(mag.get(TYPE_B), magErrList, fData, retainBTime, dataRule); - result.setBValue(b.getData() + "_" + b.getIsData()+"_"+b.getResultData()); + result.setBValue(JSON.toJSONString(b)); List channelTypeCList = sourceIssue.getChannelList().stream() .filter(x -> ("Uc").equals(x.getChannelType())) @@ -465,7 +466,7 @@ public class DetectionServiceImpl { retainCTime = channelTypeCList.get(0).getFAmp(); } DetectionData c = rangeComparisonList(mag.get(TYPE_C), magErrList, fData, retainCTime, dataRule); - result.setCValue(c.getData() + "_" + c.getIsData()+"_"+c.getResultData()); + result.setCValue(JSON.toJSONString(c)); List numbers = Arrays.asList(a.getIsData(), b.getIsData(), c.getIsData()).stream().distinct().collect(Collectors.toList()); @@ -578,7 +579,7 @@ public class DetectionServiceImpl { if (ObjectUtil.isNull(value.getIsData())) { idField.set(harmonicResult, value.getData()); } else { - idField.set(harmonicResult, value.getData() + "_" + value.getIsData()+"_"+value.getResultData()); + idField.set(harmonicResult,JSON.toJSONString(value)); } } catch (IllegalAccessException e) { throw new RuntimeException(e); @@ -645,7 +646,7 @@ public class DetectionServiceImpl { } }); devMap.forEach((harm, harmDataList) -> { - PqErrSysDtls errSysDtl = errSysDtlMap.get(num==1?harm+0.5:harm); + PqErrSysDtls errSysDtl = errSysDtlMap.get(num == 1 ? harm + 0.5 : harm); DetectionData data = new DetectionData(); data.setIsData(4); data.setNum(harm); @@ -680,6 +681,7 @@ public class DetectionServiceImpl { BigDecimal.valueOf(-errSysDtl.getMaxErrorValue()), BigDecimal.valueOf(errSysDtl.getMaxErrorValue()))).collect(Collectors.toList()); if (CollUtil.isNotEmpty(qualifiedList)) { + data.setRadius(-errSysDtl.getMaxErrorValue()+"-"+errSysDtl.getMaxErrorValue()); data.setData(qualifiedList.get(0)); switch (dataRule) { case AT_WILL_VALUE: @@ -721,7 +723,7 @@ public class DetectionServiceImpl { for (DevData devData : dev) { Optional first = devData.getSqlData().stream().collect(Collectors.toList()).stream().findFirst(); DevData.SqlDataDTO fund = null; - if (first.isPresent()){ + if (first.isPresent()) { fund = devData.getSqlData().stream().collect(Collectors.toList()).stream().findFirst().get(); } DevData.SqlDataHarmDTO harm = devData.getSqlDataHarm().stream().filter(x -> 49 == x.getNum()).collect(Collectors.toList()).stream().findFirst().get(); @@ -786,9 +788,11 @@ public class DetectionServiceImpl { BigDecimal.valueOf(1.0 / data * (channelData - errSysDtl.getMaxErrorValue())), BigDecimal.valueOf(1.0 / data * (channelData + errSysDtl.getMaxErrorValue()))) ).collect(Collectors.toList()); - detectionData.setResultData(BigDecimal.valueOf(1.0 / data).doubleValue()); + detectionData.setResultData(BigDecimal.valueOf(1.0 / data).doubleValue() * channelData); if (CollUtil.isNotEmpty(qualifiedList)) { detectionData.setData(qualifiedList.get(0)); + detectionData.setRadius(BigDecimal.valueOf(1.0 / data * (channelData - errSysDtl.getMaxErrorValue())) + + "-" + BigDecimal.valueOf(1.0 / data * (channelData + errSysDtl.getMaxErrorValue()))); switch (dataRule) { case AT_WILL_VALUE: case CP95_VALUE: diff --git a/detection/src/main/java/com/njcn/gather/result/service/impl/ResultServiceImpl.java b/detection/src/main/java/com/njcn/gather/result/service/impl/ResultServiceImpl.java index c094fded..734f274e 100644 --- a/detection/src/main/java/com/njcn/gather/result/service/impl/ResultServiceImpl.java +++ b/detection/src/main/java/com/njcn/gather/result/service/impl/ResultServiceImpl.java @@ -760,9 +760,9 @@ public class ResultServiceImpl implements IResultService { if (CollUtil.isNotEmpty(cur)) { String unit; if (isValueType) { - unit = ResultUnitEnum.V_RELATIVE_UNIT.getUnit(); + unit = ResultUnitEnum.I_RELATIVE_UNIT.getUnit(); } else { - unit = ResultUnitEnum.V_ABSOLUTELY_UNIT.getUnit(); + unit = ResultUnitEnum.I_ABSOLUTELY_UNIT.getUnit(); } for (PqScriptDtls dtls : cur) { buffer.append("I" + dtls.getPhase().toLowerCase() + "=" + dtls.getValue() + unit + ",相角=" + dtls.getAngle() + "° "); diff --git a/storage/pom.xml b/storage/pom.xml index 5903320a..22b106f2 100644 --- a/storage/pom.xml +++ b/storage/pom.xml @@ -38,6 +38,11 @@ spingboot2.3.12 2.3.12 + + com.njcn.gather + system + 1.0.0 + diff --git a/storage/src/main/java/com/njcn/gather/storage/pojo/param/StorageParam.java b/storage/src/main/java/com/njcn/gather/storage/pojo/param/StorageParam.java index 7d1d645d..f49bf858 100644 --- a/storage/src/main/java/com/njcn/gather/storage/pojo/param/StorageParam.java +++ b/storage/src/main/java/com/njcn/gather/storage/pojo/param/StorageParam.java @@ -2,6 +2,8 @@ package com.njcn.gather.storage.pojo.param; import lombok.Data; +import java.util.List; + /** * @author wr * @description @@ -34,4 +36,9 @@ public class StorageParam { * 自动生成,用于生成数据表后缀 */ private Integer code; + + /** + * 谐波次数 + */ + private List harmNum; } diff --git a/storage/src/main/java/com/njcn/gather/storage/pojo/vo/RawDataVO.java b/storage/src/main/java/com/njcn/gather/storage/pojo/vo/RawDataVO.java index 0ae6f61c..c21ea69d 100644 --- a/storage/src/main/java/com/njcn/gather/storage/pojo/vo/RawDataVO.java +++ b/storage/src/main/java/com/njcn/gather/storage/pojo/vo/RawDataVO.java @@ -37,4 +37,9 @@ public class RawDataVO { * C相数据 */ private BigDecimal dataC; + + /** + * C相数据 + */ + private BigDecimal dataT; } diff --git a/storage/src/main/java/com/njcn/gather/storage/service/AdHarmonicService.java b/storage/src/main/java/com/njcn/gather/storage/service/AdHarmonicService.java index 4c1bae67..ad3e7b44 100644 --- a/storage/src/main/java/com/njcn/gather/storage/service/AdHarmonicService.java +++ b/storage/src/main/java/com/njcn/gather/storage/service/AdHarmonicService.java @@ -1,10 +1,13 @@ package com.njcn.gather.storage.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.gather.storage.pojo.param.StorageParam; import com.njcn.gather.storage.pojo.po.AdBaseResult; import com.njcn.gather.storage.pojo.po.AdHarmonicResult; +import com.njcn.gather.storage.pojo.vo.RawDataVO; import java.util.List; +import java.util.Map; /** * @author caozehui @@ -16,11 +19,19 @@ public interface AdHarmonicService extends IService { * 根据设备ID和通道号获取谐波结果 * * @param scriptId 脚本id - * @param sort 序号列表 + * @param sort 序号列表 * @param deviceId 设备ID * @param chnNum 通道号,从1开始 - * @param code 计划code + * @param code 计划code * @return 谐波结果 */ - List get(String scriptId, List sort, String deviceId, String chnNum,Integer code); + List get(String scriptId, List index, String deviceId, String chnNum, Integer code); + + /** + * 查询原始数据 + * + * @param param + * @return + */ + Map> listResultData(StorageParam param); } diff --git a/storage/src/main/java/com/njcn/gather/storage/service/AdNonHarmonicService.java b/storage/src/main/java/com/njcn/gather/storage/service/AdNonHarmonicService.java index 252de29f..6442302f 100644 --- a/storage/src/main/java/com/njcn/gather/storage/service/AdNonHarmonicService.java +++ b/storage/src/main/java/com/njcn/gather/storage/service/AdNonHarmonicService.java @@ -1,10 +1,13 @@ package com.njcn.gather.storage.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.gather.storage.pojo.param.StorageParam; import com.njcn.gather.storage.pojo.po.AdBaseResult; import com.njcn.gather.storage.pojo.po.AdNonHarmonicResult; +import com.njcn.gather.storage.pojo.vo.RawDataVO; import java.util.List; +import java.util.Map; public interface AdNonHarmonicService extends IService { @@ -20,5 +23,10 @@ public interface AdNonHarmonicService extends IService { */ List get(String scriptId, List sort, String deviceId, String chnNum,Integer code); - + /** + * 非谐波原始数据展示 + * @param param + * @return + */ + Map> listNonResultData(StorageParam param) ; } diff --git a/storage/src/main/java/com/njcn/gather/storage/service/impl/AdHarmonicServiceImpl.java b/storage/src/main/java/com/njcn/gather/storage/service/impl/AdHarmonicServiceImpl.java index c03aa7d0..a46d45d2 100644 --- a/storage/src/main/java/com/njcn/gather/storage/service/impl/AdHarmonicServiceImpl.java +++ b/storage/src/main/java/com/njcn/gather/storage/service/impl/AdHarmonicServiceImpl.java @@ -2,17 +2,27 @@ package com.njcn.gather.storage.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DatePattern; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.njcn.db.mybatisplus.handler.DynamicTableNameHandler; import com.njcn.gather.storage.mapper.AdHarmonicMappper; +import com.njcn.gather.storage.pojo.param.StorageParam; import com.njcn.gather.storage.pojo.po.AdBaseResult; import com.njcn.gather.storage.pojo.po.AdHarmonicResult; +import com.njcn.gather.storage.pojo.vo.RawDataVO; import com.njcn.gather.storage.service.AdHarmonicService; import org.springframework.stereotype.Service; +import java.lang.reflect.Field; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * @author caozehui @@ -21,9 +31,9 @@ import java.util.List; @Service public class AdHarmonicServiceImpl extends ServiceImpl implements AdHarmonicService { @Override - public List get(String scriptId, List sort, String deviceId, String chnNum,Integer code ) { + public List get(String scriptId, List sort, String deviceId, String chnNum, Integer code) { String prefix = "ad_harmonic_result_"; - DynamicTableNameHandler.setTableName(prefix +code); + DynamicTableNameHandler.setTableName(prefix + code); MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); String monitorId = deviceId + "_" + chnNum; if ("-1".equals(chnNum)) { @@ -36,4 +46,71 @@ public class AdHarmonicServiceImpl extends ServiceImpl> listResultData(StorageParam param) { + String prefix = "ad_harmonic_"; + DynamicTableNameHandler.setTableName(prefix + param.getCode()); + MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); + wrapper.like(AdHarmonicResult::getMonitorId, param.getDevId() + "_" + param.getDevNum()) + .eq(ObjectUtil.isNotNull(param.getScriptId()), AdHarmonicResult::getScriptId, param.getScriptId()) + .in(ObjectUtil.isNotEmpty(param.getIndex()), AdHarmonicResult::getSort, param.getIndex()) + .orderByAsc(AdHarmonicResult::getTimeId) + ; + List adHarmonicResults = this.getBaseMapper().selectJoinList(AdHarmonicResult.class, wrapper); + List harmNum = param.getHarmNum(); + + Map> info=new HashMap<>(3); + RawDataVO dataVO; + List rawDataVOS; + for (AdHarmonicResult harmonicResult : adHarmonicResults) { + for (Double i : harmNum) { + dataVO = new RawDataVO(); + dataVO.setHarmNum(i); + try { + Field timeId = harmonicResult.getClass().getDeclaredField("timeId"); + timeId.setAccessible(true); + LocalDateTime localDateTime = (LocalDateTime) timeId.get(harmonicResult); + dataVO.setTime(localDateTime.format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN))); + + Field fieldA = harmonicResult.getClass().getDeclaredField("aValue" + isHarmOrInHarm(i).intValue()); + fieldA.setAccessible(true); + BigDecimal decimalA = new BigDecimal(fieldA.get(harmonicResult)+""); + dataVO.setDataA(decimalA); + + Field fieldB = harmonicResult.getClass().getDeclaredField("bValue" + isHarmOrInHarm(i).intValue()); + fieldB.setAccessible(true); + BigDecimal decimalB = new BigDecimal(fieldB.get(harmonicResult)+""); + dataVO.setDataB(decimalB); + + Field fieldC = harmonicResult.getClass().getDeclaredField("cValue" + isHarmOrInHarm(i).intValue()); + fieldC.setAccessible(true); + BigDecimal decimalC = new BigDecimal(fieldC.get(harmonicResult)+""); + dataVO.setDataC(decimalC); + } catch (NoSuchFieldException e) { + throw new RuntimeException(e); + } catch (IllegalAccessException e) { + throw new RuntimeException(e); + } + if(info.containsKey(String.valueOf(i))){ + info.get(String.valueOf(i)).add(dataVO); + }else{ + rawDataVOS=new ArrayList<>(); + rawDataVOS.add(dataVO); + info.put(String.valueOf(i),rawDataVOS) ; + } + + } + } + DynamicTableNameHandler.remove(); + return info; + } + + public Double isHarmOrInHarm(Double value) { + if (value == value.longValue()) { + return value; + } else { + return value + 0.5; + } + } } diff --git a/storage/src/main/java/com/njcn/gather/storage/service/impl/AdNonHarmonicServiceImpl.java b/storage/src/main/java/com/njcn/gather/storage/service/impl/AdNonHarmonicServiceImpl.java index b92c823d..5d7826fd 100644 --- a/storage/src/main/java/com/njcn/gather/storage/service/impl/AdNonHarmonicServiceImpl.java +++ b/storage/src/main/java/com/njcn/gather/storage/service/impl/AdNonHarmonicServiceImpl.java @@ -2,24 +2,36 @@ package com.njcn.gather.storage.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DatePattern; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.njcn.db.mybatisplus.handler.DynamicTableNameHandler; import com.njcn.gather.storage.mapper.AdNonHarmonicMapper; +import com.njcn.gather.storage.pojo.param.StorageParam; import com.njcn.gather.storage.pojo.po.AdBaseResult; import com.njcn.gather.storage.pojo.po.AdNonHarmonicResult; +import com.njcn.gather.storage.pojo.vo.RawDataVO; import com.njcn.gather.storage.service.AdNonHarmonicService; +import com.njcn.gather.system.dictionary.pojo.po.DictTree; +import com.njcn.gather.system.dictionary.service.IDictTreeService; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.List; +import java.math.BigDecimal; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.stream.Collectors; /** * */ @Service +@RequiredArgsConstructor public class AdNonHarmonicServiceImpl extends ServiceImpl implements AdNonHarmonicService { + private final IDictTreeService dictTreeService; + @Override public List get(String scriptId, List sort, String deviceId, String chnNum, Integer code) { String prefix = "ad_non_harmonic_result_"; @@ -37,4 +49,37 @@ public class AdNonHarmonicServiceImpl extends ServiceImpl> listNonResultData(StorageParam param) { + String prefix = "ad_non_harmonic_"; + DynamicTableNameHandler.setTableName(prefix + param.getCode()); + MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); + wrapper.like(AdNonHarmonicResult::getMonitorId, param.getDevId() + "_" + param.getDevNum()) + .eq(ObjectUtil.isNotNull(param.getScriptId()), AdNonHarmonicResult::getScriptId, param.getScriptId()) + .in(ObjectUtil.isNotEmpty(param.getIndex()), AdNonHarmonicResult::getSort, param.getIndex()); + List adHarmonicResults = this.getBaseMapper().selectJoinList(AdNonHarmonicResult.class, wrapper); + Map> info = new HashMap<>(2); + Map> adTypeMap = adHarmonicResults.stream().collect(Collectors.groupingBy(AdNonHarmonicResult::getAdType)); + List dictTreeById = dictTreeService.getDictTreeById(new ArrayList<>(adTypeMap.keySet())); + Map dictTreeByName = dictTreeById.stream().collect(Collectors.toMap(DictTree::getId, DictTree::getName)); + adTypeMap.forEach((key, value) -> { + if (dictTreeByName.containsKey(key)) { + String treeName = dictTreeByName.get(key); + List rawDataVOS = new ArrayList<>(); + for (AdNonHarmonicResult result : value) { + RawDataVO dataVO = new RawDataVO(); + dataVO.setTime(result.getTimeId().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN))); + dataVO.setDataA(ObjectUtil.isNotNull(result.getAValue())?new BigDecimal(result.getAValue()):null); + dataVO.setDataB(ObjectUtil.isNotNull(result.getBValue())?new BigDecimal(result.getBValue()):null); + dataVO.setDataC(ObjectUtil.isNotNull(result.getCValue())?new BigDecimal(result.getCValue()):null); + dataVO.setDataT(ObjectUtil.isNotNull(result.getTValue())?new BigDecimal(result.getTValue()):null); + rawDataVOS.add(dataVO); + } + info.put(key,rawDataVOS); + } + }); + DynamicTableNameHandler.remove(); + return info; + } }