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