|
|
|
@ -1,5 +1,6 @@
|
|
|
|
|
package com.hnac.hzims.bigmodel.interactive.service.impl; |
|
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSON; |
|
|
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
|
|
import com.google.common.collect.Lists; |
|
|
|
|
import com.hnac.hzims.bigmodel.interactive.constants.DataMethodEnum; |
|
|
|
@ -17,8 +18,10 @@ import com.hnac.hzinfo.sdk.v5.device.dto.ReductionDataDTO;
|
|
|
|
|
import com.hnac.hzinfo.sdk.v5.device.vo.ReductionDataVO; |
|
|
|
|
import lombok.AllArgsConstructor; |
|
|
|
|
import org.springblade.core.log.exception.ServiceException; |
|
|
|
|
import org.springblade.core.log.logger.BladeLogger; |
|
|
|
|
import org.springblade.core.tool.utils.DateUtil; |
|
|
|
|
import org.springblade.core.tool.utils.Func; |
|
|
|
|
import org.springblade.core.tool.utils.StringUtil; |
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
import org.springframework.util.Assert; |
|
|
|
|
|
|
|
|
@ -40,11 +43,13 @@ import java.util.stream.Collectors;
|
|
|
|
|
public class AnalyseDataServiceImpl implements IAnalyseDataService { |
|
|
|
|
|
|
|
|
|
private final DeviceDataClient deviceDataClient; |
|
|
|
|
private final BladeLogger logger; |
|
|
|
|
public static final int DATA_COUNT_MAX = 8000; |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public ExtraVO getHistoryData(HistoryDataSearchVO searchVO) { |
|
|
|
|
if(DataMethodEnum.USUAL.getMethod().equals(searchVO.getMethod())) { |
|
|
|
|
if(Func.isEmpty(searchVO.getDataType()) || StringUtil.isBlank(searchVO.getDataType()) |
|
|
|
|
|| DataMethodEnum.USUAL.getMethod().equals(searchVO.getMethod())) { |
|
|
|
|
searchVO.setDataType(DateEnum.SECOND.getDateType()); |
|
|
|
|
} |
|
|
|
|
// 聚合数据方式处理
|
|
|
|
@ -52,12 +57,11 @@ public class AnalyseDataServiceImpl implements IAnalyseDataService {
|
|
|
|
|
searchVO.setDataType(dateEnum.getDateType()); |
|
|
|
|
// 获取最适配时间段
|
|
|
|
|
DateEnum adapterDate = this.getDateEnumByDuration(searchVO.getStartTime(), searchVO.getEndTime(), dateEnum); |
|
|
|
|
String note = adapterDate.getDateType().equals(searchVO.getDataType()) ? "" : "(由于数据量过大,只能帮您" + adapterDate.getDateType() + "查询)"; |
|
|
|
|
searchVO.setDataType(adapterDate.getDateType()); |
|
|
|
|
String label = "根据数据量匹配到的取数规则为:" + adapterDate.getDateType() + "查询,查询结果如下:"; |
|
|
|
|
ExtraVO extraVO = new ExtraVO(); |
|
|
|
|
extraVO.setType(FuncRouteEnum.HISTORY_DATA.getType().getType()); |
|
|
|
|
extraVO.setFuncCode(FuncRouteEnum.HISTORY_DATA.getFuncCode()); |
|
|
|
|
extraVO.setLabel(label); |
|
|
|
|
Map<String,Object> params = new HashMap<>(1); |
|
|
|
|
ReductionDataVO dataVO = this.getPolymerizationData(searchVO); |
|
|
|
|
List<Map> datalist = dataVO.getDataList().stream().map(m -> { |
|
|
|
@ -65,6 +69,15 @@ public class AnalyseDataServiceImpl implements IAnalyseDataService {
|
|
|
|
|
m.remove(searchVO.getSignage()); |
|
|
|
|
return m; |
|
|
|
|
}).collect(Collectors.toList()); |
|
|
|
|
DataMethodEnum enumByMethod = DataMethodEnum.getEnumByMethod(searchVO.getMethod()); |
|
|
|
|
String label = searchVO.getStationName() + "_" |
|
|
|
|
+ searchVO.getDeviceName() + "_" |
|
|
|
|
+ dataVO.getFieldMap().get(searchVO.getSignage()) + "_" |
|
|
|
|
+ adapterDate.getName() |
|
|
|
|
+ enumByMethod.getMethod() |
|
|
|
|
+ note |
|
|
|
|
+ ":"; |
|
|
|
|
extraVO.setLabel(label); |
|
|
|
|
params.put("data",datalist); |
|
|
|
|
params.put("deviceName",searchVO.getDeviceName()); |
|
|
|
|
params.put("attrName",dataVO.getFieldMap().get(searchVO.getSignage())); |
|
|
|
@ -92,6 +105,7 @@ public class AnalyseDataServiceImpl implements IAnalyseDataService {
|
|
|
|
|
dataDTO.setSaveTimeType(dateEnum.getSaveTimeType()); |
|
|
|
|
dataDTO.setTimeInterval(1); |
|
|
|
|
dataDTO.setDtos(Lists.newArrayList(reductionAttrData)); |
|
|
|
|
logger.info("interactive:getPolymerizationData","config传参为:" + JSON.toJSONString(dataDTO)); |
|
|
|
|
Result<ReductionDataVO> dataVO = deviceDataClient.pageDeviceCodeAndSignages(dataDTO); |
|
|
|
|
Assert.isTrue(dataVO.isSuccess(),() -> { |
|
|
|
|
throw new ServiceException("聚合历史数据查询失败!"); |
|
|
|
|