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