From 11d4be720620abf502d35000e2ed40d30c4023bf Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期一, 24 十一月 2025 16:33:34 +0800
Subject: [PATCH] 修复离线时间展示
---
collect/src/main/java/com/qianwen/mdc/collect/service/PackedDataService.java | 124 +++++++++++++++++++++--------------------
1 files changed, 64 insertions(+), 60 deletions(-)
diff --git a/collect/src/main/java/com/qianwen/mdc/collect/service/PackedDataService.java b/collect/src/main/java/com/qianwen/mdc/collect/service/PackedDataService.java
index c888a43..d6c4986 100644
--- a/collect/src/main/java/com/qianwen/mdc/collect/service/PackedDataService.java
+++ b/collect/src/main/java/com/qianwen/mdc/collect/service/PackedDataService.java
@@ -1,31 +1,35 @@
package com.qianwen.mdc.collect.service;
-import java.time.DayOfWeek;
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneOffset;
-import java.time.temporal.WeekFields;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.apache.commons.lang3.time.FastDateFormat;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-import com.qianwen.mdc.collect.config.IotDBSessionConfig;
+import com.google.common.collect.Sets;
+import com.qianwen.mdc.collect.cache.TimeSliceCache;
+import com.qianwen.mdc.collect.cache.WorkstationCache;
+import com.qianwen.mdc.collect.constants.CommonConstant;
import com.qianwen.mdc.collect.domain.TelemetryData;
import com.qianwen.mdc.collect.domain.TelemetryDataItem;
+import com.qianwen.mdc.collect.dto.CacheBuildDTO;
+import com.qianwen.mdc.collect.dto.CalendarShiftTimeSlicesDTO;
import com.qianwen.mdc.collect.dto.PackedTelemetryData;
import com.qianwen.mdc.collect.handler.PackedTelemetryDataHandlerSelector;
import com.qianwen.mdc.collect.handler.TelemetryDataHandler;
+import com.qianwen.mdc.collect.utils.LocalDateTimeUtils;
+
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
/**
* 閲囬泦鏁版嵁濉厖锛岃仛鍚堝拰鍏ュ簱
@@ -34,16 +38,15 @@
public class PackedDataService {
private static final Logger log = LoggerFactory.getLogger(PackedDataService.class);
- private String DB_PREFIX = "root.f2.";
private static final Map<Integer, String> PROCESS_PARAM_MAP = new HashMap<>();
- @Autowired
- private IotDBSessionConfig iotdbConfig;
- @Autowired
- private IotDBCommonService iotDBCommonService;
+
@Autowired
private PackedTelemetryDataHandlerSelector handlerSelector;
- private static String TEMPLATE_NAME = "process_param";
+ @Autowired
+ private WorkstationCache workstationCache;
+ @Autowired
+ private TimeSliceCache timeSliceCache;
static {
PROCESS_PARAM_MAP.put(1, "STATE");
@@ -58,7 +61,7 @@
public void handle(List<TelemetryData> telemetryDataList) {
List<PackedTelemetryData> pdataList = packetData(telemetryDataList);
- System.out.print(pdataList);
+ //System.out.print(pdataList);
for (PackedTelemetryData pdt : pdataList) {
TelemetryDataHandler handler = handlerSelector.select(pdt.getParamType());
if (handler == null) {
@@ -70,7 +73,7 @@
}
/**
- * 鏁版嵁濉厖锛�(calendarCode,factoryYear,month,date,week锛�
+ * 鏁版嵁濉厖锛屾棩鍘嗕唬鐮佷箣绫荤殑缁熻鐩稿叧瀛楁鍒濆鍖�(calendarCode,factoryYear,month,date,week锛�
*
* @param telemetryDataList
* @return
@@ -87,12 +90,13 @@
String[] keys = map.keySet().toArray(new String[0]);
for (int j = 0; j < keys.length; j++) {
+
PackedTelemetryData pkData = new PackedTelemetryData();
pkData.setWorkstationId(tdata.getWorkstationId());
pkData.setValue(map.get(keys[j]));
pkData.setTime(item.getTime());
- pkData.setName(keys[j]);//鍙傛暟鍚嶇О
+ pkData.setName(keys[j]);//鏁版嵁鐐瑰悕绉�
fillByCalendar(pkData);
@@ -111,19 +115,56 @@
*
* @param pdata
*/
- void fillByCalendar(PackedTelemetryData pdata) {
+ public void fillByCalendar(PackedTelemetryData pdata) {
//鍘熸潵鍦═elemetryPropertyWrapper.packWorkstationCalendarInfo涓畬鎴�
//FIXME: 濉啓瀹為檯鐨勬暟鎹繕闇�瑕佸悗缁鐞�
- pdata.setCalendarCode("1");//涓存椂锛岀洰鍓嶅簱鍐呴兘鏄�1
- pdata.setShiftIndex(1);//涓存椂
- pdata.setShiftTimeType(1);//涓存椂
+
+ Date collectTime = new Date(pdata.getTime());
+ String calendarCode = workstationCache.getWorkstationCalendarCodeForDate(pdata.getWorkstationId(), DateUtil.formatDate(DateUtil.date(collectTime)));
+ if (ObjectUtil.isNotEmpty(calendarCode)) {
+ pdata.setCalendarCode(calendarCode);
+ //telemetryData.setCalendarCode(calendarCode);
+ } else {
+ //telemetryData.setCalendarCode("#default#");
+ pdata.setCalendarCode(CommonConstant.DEFAULT_CODE);
+ }
// TelemetryPropertyWrapper涓璸ackWorkstationCalendarInfo
- Date collectTime = new Date(pdata.getTime());
+ //------------start
+ boolean isDefaultCalendar = true;
+ if (!CommonConstant.DEFAULT_CODE.equals(pdata.getCalendarCode())) {
+ CalendarShiftTimeSlicesDTO calendarShiftTimeSlicesDTO = timeSliceCache.getTimeSliceShift(pdata.getCalendarCode(), collectTime);//浠巖edis涓幏寰楁棩鍘嗙殑鏃堕棿鍒囩墖
+ if (ObjectUtil.isEmpty(calendarShiftTimeSlicesDTO)) {//濡傛灉娌℃湁鏃堕棿鍒囩墖锛屽垯浣跨敤TimeSliceCache.build(cacheBuildDTO);鏋勫缓
+ LocalDate targetDate = Instant.ofEpochMilli(pdata.getTime()).atZone(ZoneOffset.systemDefault()).toLocalDate();
+ CacheBuildDTO cacheBuildDTO = CacheBuildDTO.builder().tenantIds(Sets.newHashSet(new String[]{"000000"})).calendarCode(calendarCode).targetDate(targetDate).build();
+ timeSliceCache.build(cacheBuildDTO);
+ calendarShiftTimeSlicesDTO = timeSliceCache.getTimeSliceShift(pdata.getCalendarCode(), collectTime);
+ }
+ if (ObjectUtil.isNotEmpty(calendarShiftTimeSlicesDTO)) {
+ pdata.setShiftIndex(calendarShiftTimeSlicesDTO.getShiftIndex()).setShiftTimeType(Integer.valueOf(calendarShiftTimeSlicesDTO.getShiftTimeType())).setFactoryDate(Integer.valueOf(calendarShiftTimeSlicesDTO.getFactoryDate().replaceAll("-", ""))).setFactoryWeek(calendarShiftTimeSlicesDTO.getFactoryWeek()).setFactoryMonth(calendarShiftTimeSlicesDTO.getFactoryMonth()).setFactoryYear(calendarShiftTimeSlicesDTO.getFactoryYear());
+ isDefaultCalendar = false;
+ }
+ }
+
+ //鏃犳棩鍘嗗垏鐗囷紝浣跨敤閲囬泦鏃堕棿濉厖factoryYear锛宮onth锛宒ate锛寃eek鍑犱釜灞炴��
+ if (isDefaultCalendar) {
+ log.info("鏃犳棩鍘嗗垏鐗�");
+ LocalDate localDate = Instant.ofEpochMilli(pdata.getTime().longValue()).atZone(ZoneOffset.systemDefault()).toLocalDate();
+ pdata.setFactoryDate(Integer.valueOf(DatePattern.PURE_DATE_FORMAT.format(collectTime)))
+ .setFactoryYear(DateUtil.year(collectTime))
+ .setFactoryWeek(LocalDateTimeUtils.getWeek(localDate))
+ .setFactoryMonth(DateUtil.month(collectTime) + 1)
+ .setShiftIndex(CommonConstant.DEFAULT_SHIFT_INDEX)
+ .setShiftTimeType(CommonConstant.DEFAULT_SHIFT_TYPE);
+ }
+
+ //----------------------end
+ /*
+
LocalDate localDate = Instant.ofEpochMilli(pdata.getTime()).atZone(ZoneOffset.systemDefault()).toLocalDate();
String PURE_DATE_PATTERN = "yyyyMMdd";
- /** 鏍囧噯鏃ユ湡鏍煎紡 {@link FastDateFormat}锛歽yyyMMdd */
+
FastDateFormat PURE_DATE_FORMAT = FastDateFormat.getInstance(PURE_DATE_PATTERN);
WeekFields weekFields = WeekFields.of(DayOfWeek.MONDAY, 1);
@@ -131,44 +172,7 @@
pdata.setFactoryYear(localDate.getYear()).setFactoryMonth(localDate.getMonthValue())
.setFactoryDate(Integer.valueOf(PURE_DATE_FORMAT.format(collectTime)))
.setFactoryWeek(localDate.get(weekFields.weekOfYear()));
+ */
}
- void handleOneWorkstationXX(TelemetryData dt) {
- String deviceId = DB_PREFIX + TEMPLATE_NAME + "_" + dt.getWorkstationId();
-
- // 鎸傝浇妯℃澘
- iotDBCommonService.setTemmplateIsNotSet(TEMPLATE_NAME, deviceId);
-
- List<MeasurementSchema> schemas = new ArrayList<>();
-
- schemas.add(new MeasurementSchema("workstation_id", TSDataType.INT64));
- schemas.add(new MeasurementSchema("n", TSDataType.TEXT));
- schemas.add(new MeasurementSchema("v", TSDataType.TEXT));
-
- Tablet tablet = new Tablet(deviceId, schemas);
- int rowIndex = 0;
- for (TelemetryDataItem dataItem : dt.getDataItems()) {
-
- for (Map<String, String> point : dataItem.getDataPoints()) {
-
- String[] keys = point.keySet().toArray(new String[0]);
- for (int i = 0; i < keys.length; i++) {
- rowIndex = tablet.rowSize++;
- tablet.addTimestamp(rowIndex, dataItem.getTime());
- tablet.addValue("workstation_id", rowIndex, new Long(dt.getWorkstationId()));
- tablet.addValue("n", rowIndex, keys[i]);
- tablet.addValue("v", rowIndex, point.get(keys[i]));
- }
-
- }
-
- try {
- iotdbConfig.getSessionPool().insertAlignedTablet(tablet);
- } catch (Exception e) {
- log.error("IODDB鍏ュ簱澶辫触", e);
- e.printStackTrace();
- }
- }
-
- }
}
--
Gitblit v1.9.3