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> 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();//æ¥æè½¬å为åéæ°ï¼ä½ä¸ºhash keyä»redisååçæ°æ®æ°æ® 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)); } //æå»ºå¹¶ä¿åæ¶é´åçï¼ä¿åå°redis 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); }); } } 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); 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; 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); } } 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; 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; } } 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()); }*/ //æå»ºç产æ¥ååçï¼blade_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åendTimeçæ°æ® 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); //å¨dayTimeListä¸è¿æ»¤åºå¨starttimeï¼endtimeä¹é´çæ¥æ //å¨dayTimeListä¸è¿æ»¤åºå¨starttimeï¼endtimeä¹é´çæ°æ®ï¼å第ä¸ä¸ª 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); } } 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) { //忥å¨TelemetryPropertyWrapper.packWorkstationCalendarInfoä¸å®æ //FIXME: å¡«åå®é çæ°æ®è¿éè¦åç»å¤ç 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 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 { 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; } collect/src/main/resources/application-dev.yml
@@ -23,7 +23,7 @@ #å¿è·³æ¶é´ keepalive: 10 connectionTimeout: 3000 #è¿æ¥è¶ æ¶æ¶é´ dataReceiveTopic: forward/test #ä»iot平尿¥æ¶mqttééæ°æ®çtopic dataReceiveTopic: forward/testxxx #ä»iot平尿¥æ¶mqttééæ°æ®çtopic forward/test # mysql datasource: type: mysql 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)); } }