From 9faa74e1912022dc6e54c3e93426946876b5d83a Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期五, 25 十月 2024 10:49:13 +0800
Subject: [PATCH] 修改redistemplate的hashkey serializer,更方便客户端查看redis的数据
---
collect/pom.xml | 10 +
collect/src/main/java/com/qianwen/mdc/collect/config/redis/RedisKeySerializer.java | 44 ++++++++
collect/src/main/java/com/qianwen/mdc/collect/service/PackedDataService.java | 4
collect/src/main/java/com/qianwen/mdc/collect/service/WorkstationService.java | 11 --
collect/src/main/java/com/qianwen/mdc/collect/utils/redis/RedisUtil.java | 10 +
collect/src/main/resources/application-dev.yml | 2
collect/src/main/java/com/qianwen/mdc/collect/service/CalendarService.java | 63 +++++-------
collect/src/test/java/com/qianwen/mdc/collect/service/PackedDataServiceTest.java | 21 ++++
collect/src/main/java/com/qianwen/mdc/collect/config/RedisConfig.java | 15 +-
collect/src/main/java/com/qianwen/mdc/collect/cache/WorkstationCache.java | 11 +-
collect/src/main/java/com/qianwen/mdc/collect/service/feedback/ImmediateFeedbackHandlerStrategy.java | 6 -
collect/src/main/java/com/qianwen/mdc/collect/controller/CalController.java | 61 ++++++++++++
collect/src/main/java/com/qianwen/mdc/collect/cache/TimeSliceCache.java | 35 ++----
collect/src/main/java/com/qianwen/mdc/collect/constants/CommonConstant.java | 4
14 files changed, 203 insertions(+), 94 deletions(-)
diff --git a/collect/pom.xml b/collect/pom.xml
index 682b8a1..d83d854 100644
--- a/collect/pom.xml
+++ b/collect/pom.xml
@@ -115,9 +115,13 @@
<artifactId>smart-starter-mybatis</artifactId>
<version>1.0.0</version>
</dependency>
-
-
-
+ <!--
+ <dependency>
+ <groupId>com.qianwen</groupId>
+ <artifactId>smart-starter-redis</artifactId>
+ <version>1.0.0</version>
+ </dependency>
+ -->
<!-- <dependency>
<groupId>org.opcfoundation</groupId>
diff --git a/collect/src/main/java/com/qianwen/mdc/collect/cache/TimeSliceCache.java b/collect/src/main/java/com/qianwen/mdc/collect/cache/TimeSliceCache.java
index 07e8edc..0f9a7fc 100644
--- a/collect/src/main/java/com/qianwen/mdc/collect/cache/TimeSliceCache.java
+++ b/collect/src/main/java/com/qianwen/mdc/collect/cache/TimeSliceCache.java
@@ -10,8 +10,6 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
-
-import com.qianwen.core.tool.utils.SpringUtil;
import com.qianwen.mdc.collect.dto.CacheBuildDTO;
import com.qianwen.mdc.collect.dto.CalendarShiftTimeSlicesDTO;
import com.qianwen.mdc.collect.dto.TimestampToProductionTimeCacheDto;
@@ -19,47 +17,42 @@
import com.qianwen.mdc.collect.utils.CommonUtil;
import com.qianwen.mdc.collect.utils.redis.RedisUtil;
-/*
-
-import com.qianwen.posting.dto.CacheBuildDTO;
-import com.qianwen.posting.dto.CalendarShiftTimeSlicesDTO;
-import com.qianwen.posting.dto.TimestampToProductionTimeCacheDto;
-import com.qianwen.posting.service.ICalendarService;
-import com.qianwen.posting.utils.CommonUtil;
-*/
@Component
public class TimeSliceCache {
+ public static final String COLLECT_CALENDAR = "collect:calendar";
public static final String CALENDAR = "calendar";
public static final String CALENDARS_CODE = "calendar:code:";
public static final String MINUTE_POINT = "minute-point:";
private static final Logger log = LoggerFactory.getLogger(TimeSliceCache.class);
- //private static final BladeRedis bladeRedis = (BladeRedis) SpringUtil.getBean(BladeRedis.class);
- //private static final ICalendarService calendarService = (ICalendarService) SpringUtil.getBean(ICalendarService.class);
@Autowired
private RedisUtil redisUtil;
@Autowired
private CalendarService calendarService;
-
+ //@Autowired
+ //private BladeRedis bladeRedis;
public CalendarShiftTimeSlicesDTO getTimeSliceShift(String calendarCode, Date date) {
+
int minutes = (DateTime.of(date).hour(true) * 60) + DateTime.of(date).minute();//鏃ユ湡杞寲涓哄垎閽熸暟锛屼綔涓篽ash key浠巖edis鍙栧垏鐗囨暟鎹暟鎹�
- String redisKey = CommonUtil.getReallyCacheName("posting:calendar", CALENDARS_CODE.concat(calendarCode).concat(":").concat(MINUTE_POINT), DateTime.of(date).toDateStr());
- //return (CalendarShiftTimeSlicesDTO) bladeRedis.hGet(redisKey, Integer.valueOf(minutes));
-
- return (CalendarShiftTimeSlicesDTO) redisUtil.hget(redisKey, minutes+"");
+ String redisKey = CommonUtil.getReallyCacheName(COLLECT_CALENDAR, CALENDARS_CODE.concat(calendarCode).concat(":").concat(MINUTE_POINT), DateTime.of(date).toDateStr());
+
+ return (CalendarShiftTimeSlicesDTO)redisUtil.getRedisTemplate().opsForHash().get(redisKey, Integer.valueOf(minutes));
+
}
//鏋勫缓骞朵繚瀛樻椂闂村垏鐗囷紝淇濆瓨鍒皉edis
public void build(CacheBuildDTO cacheBuildDTO) {
+
String key = cacheBuildDTO.getTargetDate().format(DateTimeFormatter.ISO_LOCAL_DATE);
List<TimestampToProductionTimeCacheDto> data = calendarService.buildProductionTimeCache(cacheBuildDTO);//鏌ヨ鐢熶骇鏃ュ巻锛屽苟璁$畻鍑烘椂闂村垏鐗�
data.forEach(t -> {
- String redisKey = CommonUtil.getReallyCacheName("posting:calendar", CALENDARS_CODE.concat(t.getCalendarCode()).concat(":").concat(MINUTE_POINT), key);
+ String redisKey = CommonUtil.getReallyCacheName(COLLECT_CALENDAR, CALENDARS_CODE.concat(t.getCalendarCode()).concat(":").concat(MINUTE_POINT), key);
Map<Integer, CalendarShiftTimeSlicesDTO> timeSlicesDtoMap = t.getTimeSlicesDTOMap();
- //bladeRedis.getRedisTemplate().opsForHash().putAll(redisKey, timeSlicesDtoMap);
- //bladeRedis.expire(redisKey, 259200L);
- redisUtil.hmset(redisKey, timeSlicesDtoMap, 259200L);
+
+ //redisUtil.hmset(redisKey, timeSlicesDtoMap, 259200L);
+ redisUtil.getRedisTemplate().opsForHash().putAll(redisKey, timeSlicesDtoMap);
});
+
}
}
diff --git a/collect/src/main/java/com/qianwen/mdc/collect/cache/WorkstationCache.java b/collect/src/main/java/com/qianwen/mdc/collect/cache/WorkstationCache.java
index 1dfb57a..766f62b 100644
--- a/collect/src/main/java/com/qianwen/mdc/collect/cache/WorkstationCache.java
+++ b/collect/src/main/java/com/qianwen/mdc/collect/cache/WorkstationCache.java
@@ -28,6 +28,7 @@
@Component
public class WorkstationCache {
+ public static final String COLLECT_WORKSTATION = "collect:workstation";
private static final String WORKSTATION_ID = "workstation:id:";
private static final String CALENDAR_DATE = ":calendar:date:";
private static final String WORKSTATION_ALL = "workstation:all";
@@ -46,7 +47,7 @@
public Map<Long, WorkstationDTO> getWorkstations() {
- String redisKey = "posting:workstation".concat("::").concat(WORKSTATION_ALL);
+ String redisKey = COLLECT_WORKSTATION.concat("::").concat(WORKSTATION_ALL);
/*Map<String, WorkstationDTO> map = bladeRedis.hGetAll(redisKey);
@@ -67,7 +68,7 @@
private Map<Long, WorkstationDTO> setWorkstations() {
List<Workstation> list = workstationService.list();
- String redisKey = "posting:workstation".concat("::").concat(WORKSTATION_ALL);
+ String redisKey = COLLECT_WORKSTATION.concat("::").concat(WORKSTATION_ALL);
list.forEach(ws -> {
/*
@@ -109,7 +110,7 @@
* @return
*/
public String getWorkstationCalendarCodeForDate(Long workstationId, String date) {
- String redisKey = "posting:workstation".concat("::").concat(WORKSTATION_ID).concat(workstationId.toString().concat(CALENDAR_DATE)).concat(date);
+ String redisKey = COLLECT_WORKSTATION.concat("::").concat(WORKSTATION_ID).concat(workstationId.toString().concat(CALENDAR_DATE)).concat(date);
//String calendarCode = (String) bladeRedis.get(redisKey);
String calendarCode = (String) redisUtil.get(redisKey);
if (ObjectUtil.isEmpty(calendarCode)) {
@@ -125,7 +126,7 @@
}
public GlobalWcsOfRps getWorkstationWcsSetting(Long workstationId, String code) {
- String redisKey = "posting:workstation".concat("::").concat(WORKSTATION_ID).concat(workstationId.toString()
+ String redisKey = COLLECT_WORKSTATION.concat("::").concat(WORKSTATION_ID).concat(workstationId.toString()
.concat(WCS_SETTING));
//GlobalWcsOfRps wcsSetting = (GlobalWcsOfRps)redisUtil.hGet(redisKey, code);
@@ -155,7 +156,7 @@
*/
public Long getBelongToEmployeeForWorkstation(Long workstationId, Date timePoint) {
Long employeeId = null;
- String redisKey = "posting:workstation".concat("::").concat("workstation:id:")
+ String redisKey = COLLECT_WORKSTATION.concat("::").concat("workstation:id:")
.concat(workstationId.toString().concat(EMPLOYEE));
// Set<EmployeeOnOffWork> employeeOnOffWorks = bladeRedis.sMembers(redisKey);
diff --git a/collect/src/main/java/com/qianwen/mdc/collect/config/RedisConfig.java b/collect/src/main/java/com/qianwen/mdc/collect/config/RedisConfig.java
index 24c2cd3..5b51574 100644
--- a/collect/src/main/java/com/qianwen/mdc/collect/config/RedisConfig.java
+++ b/collect/src/main/java/com/qianwen/mdc/collect/config/RedisConfig.java
@@ -5,6 +5,7 @@
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
+import com.qianwen.mdc.collect.config.redis.RedisKeySerializer;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
@@ -37,16 +38,18 @@
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
//om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL,JsonTypeInfo.As.WRAPPER_ARRAY);
+
jacksonSeial.setObjectMapper(om);
template.setValueSerializer(jacksonSeial);
- template.setKeySerializer(new StringRedisSerializer());
- //new JdkSerializationRedisSerializer(classLoader);
-
- //template.setHashKeySerializer(new StringRedisSerializer());
+ //template.setKeySerializer(new StringRedisSerializer()); //杩欎釜娉ㄩ噴浜�1024
+ RedisKeySerializer keySerializer = new RedisKeySerializer();
+ template.setKeySerializer(keySerializer);
+ template.setHashKeySerializer(keySerializer);
- ClassLoader classLoader = getClass().getClassLoader();
- template.setHashKeySerializer(new JdkSerializationRedisSerializer(classLoader));
+
+ //ClassLoader classLoader = getClass().getClassLoader();
+ //template.setHashKeySerializer(new JdkSerializationRedisSerializer(classLoader));
template.setHashValueSerializer(jacksonSeial);
template.afterPropertiesSet();
return template;
diff --git a/collect/src/main/java/com/qianwen/mdc/collect/config/redis/RedisKeySerializer.java b/collect/src/main/java/com/qianwen/mdc/collect/config/redis/RedisKeySerializer.java
new file mode 100644
index 0000000..cccc5dc
--- /dev/null
+++ b/collect/src/main/java/com/qianwen/mdc/collect/config/redis/RedisKeySerializer.java
@@ -0,0 +1,44 @@
+package com.qianwen.mdc.collect.config.redis;
+
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+import java.util.Objects;
+import org.springframework.cache.interceptor.SimpleKey;
+import org.springframework.core.convert.ConversionService;
+import org.springframework.core.convert.support.DefaultConversionService;
+import org.springframework.data.redis.serializer.RedisSerializer;
+
+public class RedisKeySerializer implements RedisSerializer<Object> {
+ private final Charset charset;
+ private final ConversionService converter;
+
+ public RedisKeySerializer() {
+ this(StandardCharsets.UTF_8);
+ }
+
+ public RedisKeySerializer(Charset charset) {
+ Objects.requireNonNull(charset, "Charset must not be null");
+ this.charset = charset;
+ this.converter = DefaultConversionService.getSharedInstance();
+ }
+
+ public Object deserialize(byte[] bytes) {
+ if (bytes == null) {
+ return null;
+ }
+ return new String(bytes, this.charset);
+ }
+
+ public byte[] serialize(Object object) {
+ String key;
+ Objects.requireNonNull(object, "redis key is null");
+ if (object instanceof SimpleKey) {
+ key = "";
+ } else if (object instanceof String) {
+ key = (String) object;
+ } else {
+ key = this.converter.convert(object, String.class);
+ }
+ return key.getBytes(this.charset);
+ }
+}
diff --git a/collect/src/main/java/com/qianwen/mdc/collect/constants/CommonConstant.java b/collect/src/main/java/com/qianwen/mdc/collect/constants/CommonConstant.java
index 33437fa..f318f85 100644
--- a/collect/src/main/java/com/qianwen/mdc/collect/constants/CommonConstant.java
+++ b/collect/src/main/java/com/qianwen/mdc/collect/constants/CommonConstant.java
@@ -1,7 +1,7 @@
package com.qianwen.mdc.collect.constants;
public interface CommonConstant {
- public static final String APPLICATION_NAME = "posting";
+ public static final String APPLICATION_NAME = "collect";
public static final String ALARM_CODE = "code";
public static final String ALARM_TIME = "timestamp";
public static final String ALARM_MSG = "msg";
@@ -11,7 +11,7 @@
public static final String STATE = "state";
public static final String BIZ_SPLIT = "::";
public static final String DEFAULT_CODE = "#default#";
- public static final String GLOBAL_WORKSTATION_FEEDBACK_ANALYSE_LOCK = "lock:posting:state:{}";
+ public static final String GLOBAL_WORKSTATION_FEEDBACK_ANALYSE_LOCK = "lock:collect:state:{}";
public static final long WAIT_TIME = 10;
public static final long REDIS_LOCK_LEASE_TIME = 240;
public static final Integer DEFAULT_SHIFT_INDEX = 1;
diff --git a/collect/src/main/java/com/qianwen/mdc/collect/controller/CalController.java b/collect/src/main/java/com/qianwen/mdc/collect/controller/CalController.java
new file mode 100644
index 0000000..acebd02
--- /dev/null
+++ b/collect/src/main/java/com/qianwen/mdc/collect/controller/CalController.java
@@ -0,0 +1,61 @@
+package com.qianwen.mdc.collect.controller;
+import java.time.Instant;
+import java.time.LocalDate;
+import java.time.ZoneOffset;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.google.common.collect.Sets;
+import com.qianwen.mdc.collect.cache.TimeSliceCache;
+import com.qianwen.mdc.collect.config.IotDBSessionConfig;
+import com.qianwen.mdc.collect.dto.CacheBuildDTO;
+import com.qianwen.mdc.collect.dto.CalendarShiftInfoDTO;
+import com.qianwen.mdc.collect.dto.CalendarShiftTimeSlicesDTO;
+import com.qianwen.mdc.collect.entity.iotdb.Output;
+import com.qianwen.mdc.collect.entity.iotdb.ProcessParam;
+import com.qianwen.mdc.collect.mapper.iotdb.OutputMapper;
+import com.qianwen.mdc.collect.mapper.iotdb.ProcessParamMapper;
+import com.qianwen.mdc.collect.mapper.mgr.CalendarMapper;
+import com.qianwen.mdc.collect.mqtt.MqttMessageSender;
+import com.qianwen.mdc.collect.service.DeviceStateFixPointService;
+import com.qianwen.mdc.collect.service.IOTMqttReceiveService;
+import com.qianwen.mdc.collect.service.IotDBCommonService;
+import com.qianwen.mdc.collect.service.OutputAggregateService;
+import com.qianwen.mdc.collect.utils.redis.RedisUtil;
+
+import cn.hutool.core.date.DateField;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+
+@RestController("timecache")
+public class CalController {
+ @Autowired
+ private TimeSliceCache timeSliceCache;
+
+ String calCode= "1";
+
+ @GetMapping("/gett")
+ public Object gett() {
+ Date date = new Date();
+ System.out.println("getdate="+date);
+ CalendarShiftTimeSlicesDTO dto = timeSliceCache.getTimeSliceShift(calCode, date);
+
+ return dto;
+ }
+
+ @GetMapping("/sett")
+ public Object sett() {
+ Date date = new Date();
+ LocalDate targetDate = Instant.ofEpochMilli(date.getTime()).atZone(ZoneOffset.systemDefault()).toLocalDate();
+ CacheBuildDTO cacheBuildDTO = CacheBuildDTO.builder().tenantIds(Sets.newHashSet(new String[]{"000000"})).calendarCode(calCode).targetDate(targetDate).build();
+ timeSliceCache.build(cacheBuildDTO);
+
+ return "settOK,targetDate="+targetDate;
+ }
+}
diff --git a/collect/src/main/java/com/qianwen/mdc/collect/service/CalendarService.java b/collect/src/main/java/com/qianwen/mdc/collect/service/CalendarService.java
index 3fa9940..8724fa7 100644
--- a/collect/src/main/java/com/qianwen/mdc/collect/service/CalendarService.java
+++ b/collect/src/main/java/com/qianwen/mdc/collect/service/CalendarService.java
@@ -19,6 +19,7 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qianwen.core.tool.utils.Func;
import com.qianwen.mdc.collect.constants.CommonConstant;
import com.qianwen.mdc.collect.dto.CacheBuildDTO;
import com.qianwen.mdc.collect.dto.CalendarShiftTimeSlicesDTO;
@@ -27,45 +28,23 @@
import com.qianwen.mdc.collect.entity.mgr.ProductionCalendarDaytime;
import com.qianwen.mdc.collect.mapper.mgr.CalendarMapper;
import com.qianwen.mdc.collect.utils.LocalDateTimeUtils;
-import com.qianwen.core.secure.utils.AuthUtil;
-import com.qianwen.core.tool.utils.Func;
-/*
-import com.qianwen.core.redis.cache.BladeRedis;
-import com.qianwen.posting.constant.CommonConstant;
-import com.qianwen.posting.dto.CacheBuildDTO;
-import com.qianwen.posting.dto.CalendarShiftTimeSlicesDTO;
-import com.qianwen.posting.dto.TimestampToProductionTimeCacheDto;
-import com.qianwen.posting.entity.mysql.ProductionCalendar;
-import com.qianwen.posting.entity.mysql.ProductionCalendarDaytime;
-
-import com.qianwen.posting.service.ICalendarDayService;
-import com.qianwen.posting.service.ICalendarDaytimeService;
-import com.qianwen.posting.service.ICalendarService;
-import com.qianwen.posting.utils.LocalDateTimeUtils;
-*/
@Service
public class CalendarService extends ServiceImpl<CalendarMapper, ProductionCalendar>{
private static final Logger log = LoggerFactory.getLogger(CalendarService.class);
- @Autowired
- private CalendarDayService calendarDayService;
+ //@Autowired
+ //private CalendarDayService calendarDayService;
@Autowired
private CalendarDaytimeService calendarDaytimeService;
//private final BladeRedis bladeRedis;
-
- /*
- @Override
- public String getShiftIndexNameByCodeAndYear(String calendarCode, Integer year, Integer shiftIndex) {
- return ((CalendarMapper) this.baseMapper).getShiftIndexNameByCodeAndYear(calendarCode, year, shiftIndex, AuthUtil.getTenantId());
- }*/
//鏋勫缓鐢熶骇鏃ュ巻鍒囩墖锛坆lade_production_calendar锛�
public List<TimestampToProductionTimeCacheDto> buildProductionTimeCache(CacheBuildDTO cacheBuildDTO) {
LocalDate targetDate = cacheBuildDTO.getTargetDate();
Set<String> tenantIds = cacheBuildDTO.getTenantIds();
String code = cacheBuildDTO.getCalendarCode();
- List<TimestampToProductionTimeCacheDto> timestampToProductionTimeCacheDtos = new ArrayList<>();
- List<ProductionCalendar> list = list((new QueryWrapper<ProductionCalendar>()).lambda()
+ List<TimestampToProductionTimeCacheDto> timestampToProductionTimeCacheDtos = new ArrayList<>();//杩斿洖缁撴灉锛�
+ List<ProductionCalendar> calList = list((new QueryWrapper<ProductionCalendar>()).lambda()
.in(ProductionCalendar::getTenantId, tenantIds)
.eq(ProductionCalendar::getStatus, CommonConstant.ENABLE)
.eq(StringUtils.isNotBlank(code), ProductionCalendar::getCode, code)
@@ -73,10 +52,10 @@
LocalDateTime startTime = LocalDateTime.of(targetDate, LocalTime.MIN);//0鍒�0绉掑紑濮�
LocalDateTime endTime = LocalDateTime.of(targetDate.plusDays(1L), LocalTime.of(0, 0));//绗簩澶�0鐐�
- if (Func.isNotEmpty(list)) {
- Map<String, List<ProductionCalendar>> collect = (Map<String, List<ProductionCalendar>>)list.stream().collect(Collectors.groupingBy(ProductionCalendar::getTenantId));
- collect.forEach((tenantId, productionList) -> {
- productionList.forEach(productionCalendar -> {
+ if (Func.isNotEmpty(calList)) {
+ Map<String, List<ProductionCalendar>> collect = calList.stream().collect(Collectors.groupingBy(ProductionCalendar::getTenantId));
+ collect.forEach((tenantId, productionCalList) -> {
+ productionCalList.forEach(productionCalendar -> {
TimestampToProductionTimeCacheDto timestampToProductionTimeCacheDto = TimestampToProductionTimeCacheDto.builder().TenantId(productionCalendar.getTenantId()).CalendarCode(productionCalendar.getCode()).NaturalDay(targetDate).build();
List<ProductionCalendarDaytime> dayTimeList = this.calendarDaytimeService.list(new QueryWrapper<ProductionCalendarDaytime>().lambda()
@@ -85,28 +64,40 @@
.between(ProductionCalendarDaytime::getEndTime, startTime, endTime);
}).orderByAsc(ProductionCalendarDaytime::getStartTime));
+ //鍘绘帀dayTimeList绉嶈捣姝㈡椂闂�=startTime鍜宔ndTime鐨勬暟鎹�
List<ProductionCalendarDaytime> dayTimeList2 = dayTimeList.stream().filter(productionCalendarDaytime -> {
return (productionCalendarDaytime.getEndTime().equals(startTime) || productionCalendarDaytime.getStartTime().equals(endTime)) ? false : true;
}).collect(Collectors.toList());
- Map<Integer, CalendarShiftTimeSlicesDTO> timeSlicesMap = new HashMap<>(1919);
+
+ Map<Integer, CalendarShiftTimeSlicesDTO> timeSlicesMap = new HashMap<>(1919);//涓�澶╀腑鐨勫垎閽熷簭鍙� -> DTO
for (int i2 = 0; i2 <= CommonConstant.MINUTE_STOP.intValue(); i2++) {//MINUTE_STOP=1439,宸竴鍒嗛挓23灏忔椂59鍒嗙殑鍒嗛挓鏁�
buildTimeSlicesMap(startTime, endTime, dayTimeList2, timeSlicesMap, i2, targetDate);
}
timestampToProductionTimeCacheDto.setTimeSlicesDTOMap(timeSlicesMap);
+
timestampToProductionTimeCacheDtos.add(timestampToProductionTimeCacheDto);
});
});
}
return timestampToProductionTimeCacheDtos;
}
-
- private void buildTimeSlicesMap(LocalDateTime startTime, LocalDateTime endTime, List<ProductionCalendarDaytime> dayTimeList, Map<Integer, CalendarShiftTimeSlicesDTO> timeSlicesDTOMap, int i, LocalDate targetDate) {
- LocalDateTime localDateTime = LocalDateTime.of(targetDate, LocalTime.MIN).plusMinutes(i).plusSeconds(1L);
+ /**
+ * 鏋勫缓涓�澶╃殑鏃堕棿鍒囩墖鏁版嵁锛屼繚瀛樺埌timeSlicesDTOMap绉�
+ * @param startTime
+ * @param endTime
+ * @param dayTimeList
+ * @param timeSlicesDTOMap 璁剧疆鍊硷紝涓婂眰鏂规硶鐩存帴浣跨敤
+ * @param minutesOfDay 鍒嗛挓鏁板�� 浠�0鐐瑰紑濮嬬殑锛屼笉鏄瘡灏忔椂鐨勫垎閽熸暟
+ * @param targetDate 鏃ユ湡
+ */
+ private void buildTimeSlicesMap(LocalDateTime startTime, LocalDateTime endTime, List<ProductionCalendarDaytime> dayTimeList, Map<Integer, CalendarShiftTimeSlicesDTO> timeSlicesDTOMap, int minutesOfDay, LocalDate targetDate) {
+ LocalDateTime localDateTime = LocalDateTime.of(targetDate, LocalTime.MIN).plusMinutes(minutesOfDay).plusSeconds(1L);
- //鍦╠ayTimeList涓繃婊ゅ嚭鍦╯tarttime锛宔ndtime涔嬮棿鐨勬棩鏈�
+ //鍦╠ayTimeList涓繃婊ゅ嚭鍦╯tarttime锛宔ndtime涔嬮棿鐨勬暟鎹紝鍙栫涓�涓�
ProductionCalendarDaytime productionCalendarDaytime = dayTimeList.stream().filter(dayTime -> {
return (localDateTime.isAfter(dayTime.getStartTime()) || localDateTime.equals(dayTime.getStartTime())) && (localDateTime.isBefore(dayTime.getEndTime()) || localDateTime.equals(dayTime.getEndTime()));
}).findFirst().orElse(null);
+
if (Func.isEmpty(productionCalendarDaytime)) {
return;
}
@@ -119,6 +110,6 @@
shiftEndTime = endTime;
}
CalendarShiftTimeSlicesDTO calendarShiftTimeSlicesDTO = CalendarShiftTimeSlicesDTO.builder().shiftTimeType(productionCalendarDaytime.getShiftType().toString()).endTime(LocalDateTimeUtils.LocalDateTimeToDate(shiftEndTime)).startTime(LocalDateTimeUtils.LocalDateTimeToDate(shiftStartTime)).shiftIndex(productionCalendarDaytime.getShiftIndex()).shiftTimeType(productionCalendarDaytime.getShiftType().toString()).factoryDate(LocalDateTimeUtils.formatTimeLocalDate(productionCalendarDaytime.getCalendarDate(), "yyyy-MM-dd")).factoryMonth(productionCalendarDaytime.getMonth()).factoryWeek(productionCalendarDaytime.getWeek()).factoryYear(productionCalendarDaytime.getYear()).build();
- timeSlicesDTOMap.put(Integer.valueOf(i), calendarShiftTimeSlicesDTO);
+ timeSlicesDTOMap.put(Integer.valueOf(minutesOfDay), calendarShiftTimeSlicesDTO);
}
}
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 d4fde60..012bd36 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
@@ -75,7 +75,7 @@
}
/**
- * 鏁版嵁濉厖锛�(calendarCode,factoryYear,month,date,week锛�
+ * 鏁版嵁濉厖锛屾棩鍘嗕唬鐮佷箣绫荤殑缁熻鐩稿叧瀛楁鍒濆鍖�(calendarCode,factoryYear,month,date,week锛�
*
* @param telemetryDataList
* @return
@@ -117,7 +117,7 @@
*
* @param pdata
*/
- void fillByCalendar(PackedTelemetryData pdata) {
+ public void fillByCalendar(PackedTelemetryData pdata) {
//鍘熸潵鍦═elemetryPropertyWrapper.packWorkstationCalendarInfo涓畬鎴�
//FIXME: 濉啓瀹為檯鐨勬暟鎹繕闇�瑕佸悗缁鐞�
diff --git a/collect/src/main/java/com/qianwen/mdc/collect/service/WorkstationService.java b/collect/src/main/java/com/qianwen/mdc/collect/service/WorkstationService.java
index c7eac55..bb690ad 100644
--- a/collect/src/main/java/com/qianwen/mdc/collect/service/WorkstationService.java
+++ b/collect/src/main/java/com/qianwen/mdc/collect/service/WorkstationService.java
@@ -21,16 +21,7 @@
import com.qianwen.mdc.collect.utils.LocalDateTimeUtils;
import org.springframework.beans.factory.annotation.Autowired;
-/*
-import com.qianwen.posting.cache.WorkstationCache;
-import com.qianwen.posting.constant.CommonConstant;
-import com.qianwen.posting.dto.CalendarShiftInfoDTO;
-import com.qianwen.posting.entity.mysql.Workstation;
-import com.qianwen.posting.mapper.mysql.CalendarMapper;
-import com.qianwen.posting.mapper.mysql.WorkstationMapper;
-import com.qianwen.posting.service.IWorkstationService;
-import com.qianwen.posting.utils.LocalDateTimeUtils;
-*/
+
import org.springframework.stereotype.Service;
@Service
diff --git a/collect/src/main/java/com/qianwen/mdc/collect/service/feedback/ImmediateFeedbackHandlerStrategy.java b/collect/src/main/java/com/qianwen/mdc/collect/service/feedback/ImmediateFeedbackHandlerStrategy.java
index 87d68c3..4b9a30d 100644
--- a/collect/src/main/java/com/qianwen/mdc/collect/service/feedback/ImmediateFeedbackHandlerStrategy.java
+++ b/collect/src/main/java/com/qianwen/mdc/collect/service/feedback/ImmediateFeedbackHandlerStrategy.java
@@ -18,15 +18,11 @@
import com.qianwen.mdc.collect.enums.FeedbackTypeEnum;
import com.qianwen.mdc.collect.mapper.iotdb.DeviceStateMapper;
import com.qianwen.mdc.collect.mapper.mgr.WorkstationWcsFeedbackDetailMapper;
-//import com.qianwen.posting.entity.tdengine.WorkstationState;
+
import com.qianwen.mdc.collect.mapper.mgr.WorkstationWcsFeedbackMapper;
import com.qianwen.mdc.collect.service.DeviceStateAggregateService;
import com.qianwen.mdc.collect.service.DeviceStateService;
-
-
-//import com.qianwen.posting.message.event.WorkstationAggregateMessage;
-//import com.qianwen.posting.message.producer.WorkstationAggregateProducer;
@Component
public class ImmediateFeedbackHandlerStrategy implements WorkstationFeedbackHandlerStrategy {
diff --git a/collect/src/main/java/com/qianwen/mdc/collect/utils/redis/RedisUtil.java b/collect/src/main/java/com/qianwen/mdc/collect/utils/redis/RedisUtil.java
index 41ed786..b8a9082 100644
--- a/collect/src/main/java/com/qianwen/mdc/collect/utils/redis/RedisUtil.java
+++ b/collect/src/main/java/com/qianwen/mdc/collect/utils/redis/RedisUtil.java
@@ -14,10 +14,15 @@
@Component
public class RedisUtil {
+ @Autowired
+ private RedisTemplate<String, Object> redisTemplate;
+
public RedisUtil(RedisTemplate<String, Object> redisTemplate) {
this.redisTemplate = redisTemplate;
}
-
+ public RedisTemplate<String, Object> getRedisTemplate() {
+ return this.redisTemplate;
+ }
/**
* 鎸囧畾缂撳瓨澶辨晥鏃堕棿
* @param key 閿�
@@ -603,6 +608,5 @@
return boundValueOperations.rightPop();
}
- @Autowired
- private RedisTemplate<String, Object> redisTemplate;
+
}
diff --git a/collect/src/main/resources/application-dev.yml b/collect/src/main/resources/application-dev.yml
index 72fb9ac..b5986ce 100644
--- a/collect/src/main/resources/application-dev.yml
+++ b/collect/src/main/resources/application-dev.yml
@@ -23,7 +23,7 @@
#蹇冭烦鏃堕棿
keepalive: 10
connectionTimeout: 3000 #杩炴帴瓒呮椂鏃堕棿
- dataReceiveTopic: forward/test #浠巌ot骞冲彴鎺ユ敹mqtt閲囬泦鏁版嵁鐨則opic
+ dataReceiveTopic: forward/testxxx #浠巌ot骞冲彴鎺ユ敹mqtt閲囬泦鏁版嵁鐨則opic forward/test
# mysql
datasource:
type: mysql
diff --git a/collect/src/test/java/com/qianwen/mdc/collect/service/PackedDataServiceTest.java b/collect/src/test/java/com/qianwen/mdc/collect/service/PackedDataServiceTest.java
new file mode 100644
index 0000000..dde6a80
--- /dev/null
+++ b/collect/src/test/java/com/qianwen/mdc/collect/service/PackedDataServiceTest.java
@@ -0,0 +1,21 @@
+package com.qianwen.mdc.collect.service;
+
+import java.time.Instant;
+import java.time.LocalDate;
+import java.time.ZoneOffset;
+import java.time.format.DateTimeFormatter;
+
+import org.junit.jupiter.api.Test;
+
+public class PackedDataServiceTest {
+
+ @Test
+ public void testTime() {
+ LocalDate targetDate = Instant.ofEpochMilli(System.currentTimeMillis()).atZone(ZoneOffset.systemDefault()).toLocalDate();
+ System.out.println(targetDate);
+
+ //System.out.println(DateTimeFormatter.ISO_LOCAL_DATE);
+
+ System.out.println(targetDate.format(DateTimeFormatter.ISO_LOCAL_DATE));
+ }
+}
--
Gitblit v1.9.3