collect/src/main/java/com/qianwen/mdc/collect/cache/WorkstationCache.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
collect/src/main/java/com/qianwen/mdc/collect/config/XxlJobConfig.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
collect/src/main/java/com/qianwen/mdc/collect/job/DeviceStatusAggregateJob.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
collect/src/main/java/com/qianwen/mdc/collect/job/ProductionTimeCacheXxlJob.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
collect/src/main/java/com/qianwen/mdc/collect/mapper/iotdb/DeviceStateMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
collect/src/main/java/com/qianwen/mdc/collect/runner/InitRunner.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
collect/src/main/java/com/qianwen/mdc/collect/service/DeviceStateFixPointService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
collect/src/main/resources/application-dev.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
collect/src/main/resources/com/qianwen/mdc/collect/mapper/iotdb/DeviceStateMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
collect/src/main/java/com/qianwen/mdc/collect/cache/WorkstationCache.java
@@ -53,7 +53,7 @@ public Map<Long, WorkstationDTO> getWorkStations() { public Map<Long, WorkstationDTO> getWorkstations() { String redisKey = "posting:workstation".concat("::").concat(WORKSTATION_ALL); /*Map<String, WorkstationDTO> map = bladeRedis.hGetAll(redisKey); @@ -66,14 +66,14 @@ Map<Long, WorkstationDTO> map = convertMap(redisUtil.hmget(redisKey)); if (ObjectUtil.isEmpty(map)) { map = setWorkStations(); map = setWorkstations(); } return map; } private Map<Long, WorkstationDTO> setWorkStations() { private Map<Long, WorkstationDTO> setWorkstations() { List<Workstation> list = workstationService.list(); String redisKey = "posting:workstation".concat("::").concat(WORKSTATION_ALL); collect/src/main/java/com/qianwen/mdc/collect/config/XxlJobConfig.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,41 @@ package com.qianwen.mdc.collect.config; import com.xxl.job.core.executor.impl.XxlJobSpringExecutor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class XxlJobConfig { private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class); @Value("${xxl.job.admin.addresses}") private String adminAddresses; @Value("${xxl.job.executor.appname}") private String appName; @Value("${xxl.job.executor.ip:}") private String ip; @Value("${xxl.job.executor.port}") private int port; @Value("${xxl.job.accessToken:}") private String accessToken; @Value("${xxl.job.executor.logpath}") private String logPath; @Value("${xxl.job.executor.logretentiondays:7}") private int logRetentionDays; @Bean public XxlJobSpringExecutor xxlJobExecutor() { this.logger.info("xxl-job é ç½®åå§å..."); XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); xxlJobSpringExecutor.setAdminAddresses(this.adminAddresses); xxlJobSpringExecutor.setAppName(this.appName); xxlJobSpringExecutor.setIp(this.ip); xxlJobSpringExecutor.setPort(this.port); xxlJobSpringExecutor.setAccessToken(this.accessToken); xxlJobSpringExecutor.setLogPath(this.logPath); xxlJobSpringExecutor.setLogRetentionDays(this.logRetentionDays); return xxlJobSpringExecutor; } } collect/src/main/java/com/qianwen/mdc/collect/job/DeviceStatusAggregateJob.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,44 @@ package com.qianwen.mdc.collect.job; import com.qianwen.mdc.collect.cache.WorkstationCache; import com.qianwen.mdc.collect.dto.WorkstationDTO; import com.qianwen.mdc.collect.service.DeviceStateAggregateService; import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.handler.annotation.XxlJob; import com.xxl.job.core.log.XxlJobLogger; import cn.hutool.core.util.ObjectUtil; import java.util.Map; import java.util.Set; import javax.annotation.Resource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component public class DeviceStatusAggregateJob { private static final Logger log = LoggerFactory.getLogger(DeviceStatusAggregateJob.class); @Resource private DeviceStateAggregateService deviceStateAggregateService; @Autowired private WorkstationCache workstationCache; @XxlJob("workStationAggregateJobHandler") public ReturnT<String> workStationAggregateJobHandler(String param) throws Exception { XxlJobLogger.log("XXL-JOB, 宿¶è®¡ç®å·¥ä½çç¶æï¼äº§éçä¿¡æ¯,å¼å§åé.....", new Object[0]); Map<Long, WorkstationDTO> workstations = workstationCache.getWorkstations(); if (ObjectUtil.isNotEmpty(workstations)) { Set<Long> workStationIds = workstations.keySet(); for(Long workstationId :workStationIds) { deviceStateAggregateService.stateAggregate(workstationId); } } XxlJobLogger.log("XXL-JOB, 宿¶è®¡ç®å·¥ä½çç¶æï¼äº§éçä¿¡æ¯,åéç»æ", new Object[0]); return ReturnT.SUCCESS; } } collect/src/main/java/com/qianwen/mdc/collect/job/ProductionTimeCacheXxlJob.java
@@ -22,7 +22,7 @@ @Autowired private TimeSliceCache timeSliceCache; @XxlJob("productionTimeCacheJobHandler") @XxlJob("prodCalendarTimeCacheJobHandler") public ReturnT<String> productionTimeCacheJobHandler(String param) throws Exception { LocalDate targetDate = LocalDate.now().plusDays(1L); if (Func.isNotEmpty(param)) { collect/src/main/java/com/qianwen/mdc/collect/mapper/iotdb/DeviceStateMapper.java
@@ -13,7 +13,7 @@ @DS("iotdb") @InterceptorIgnore(tenantLine = "true") public interface DeviceStateMapper extends BaseMapper<DeviceState> { void createSuperTable(); //void createSuperTable(); //void createTable(Long workstationId); @@ -51,5 +51,10 @@ */ List<DeviceState> statesInTimeRange(@Param("workstationId")Long workstationId,@Param("timeRange") StateAggregateTimeDTO timeRange); /** * æ¥è¯¢æå¤©åºå®ç¹æ°é * @param factoryDate * @return */ long fixPointCountByDate(int factoryDate); } collect/src/main/java/com/qianwen/mdc/collect/runner/InitRunner.java
@@ -1,18 +1,10 @@ package com.qianwen.mdc.collect.runner; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateTime; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.google.common.collect.Sets; import java.lang.invoke.SerializedLambda; import java.time.LocalDate; import javax.annotation.Resource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.qianwen.mdc.collect.service.DeviceStateFixPointService; import org.springframework.beans.factory.annotation.Autowired; /* import com.qianwen.core.redis.lock.RedisLock; import com.qianwen.posting.cache.TimeSliceCache; @@ -25,21 +17,34 @@ import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; import com.google.common.collect.Sets; import com.qianwen.mdc.collect.cache.TimeSliceCache; import com.qianwen.mdc.collect.dto.CacheBuildDTO; import com.qianwen.mdc.collect.mapper.iotdb.DeviceStateMapper; import com.qianwen.mdc.collect.service.DeviceStateFixPointService; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateTime; @Component public class InitRunner implements ApplicationRunner { private static final Logger log = LoggerFactory.getLogger(InitRunner.class); @Resource @Autowired private DeviceStateFixPointService stateFixPointService; //@Resource //private WorkstationStateMapper workstationStateMapper; @Autowired private TimeSliceCache timeSliceCache; @Autowired private DeviceStateMapper deviceStateMapper; public void run(ApplicationArguments args) throws Exception { /* //çææ¶é´åç CacheBuildDTO cacheBuildDTO = CacheBuildDTO.builder().tenantIds(Sets.newHashSet(new String[]{"000000"})).targetDate(LocalDate.now()).build(); TimeSliceCache.build(cacheBuildDTO); timeSliceCache.build(cacheBuildDTO); checkNeedStateFixPoint(); */ } //@RedisLock("posting:lock:initStateFixPoint") @@ -47,18 +52,19 @@ DateTime dateTime = DateTime.now(); log.info("è¿å ¥ç¨åºå¯å¨æ ¡éªæ¯å¦åå¨å·¥ä½æè¿åºå®ç¹....... "); long count = deviceStateMapper.fixPointCountByDate(Integer.valueOf(DatePattern.PURE_DATE_FORMAT.format(dateTime))); /* Long result = this.workstationStateMapper.selectCount(Wrappers.<WorkstationState>lambdaQuery() .eq(WorkstationState::getFactoryDate, Integer.valueOf(DatePattern.PURE_DATE_FORMAT.format(dateTime))) .eq(WorkstationState::getIsFixPoint, Boolean.TRUE)); */ Long result = 1L; if (result == null || result.longValue() <= 0) { log.info("工使ªæè¿åºå®ç¹....... "); //Long result = 1L; if (count <= 0) { log.info("工使ªæè¿åºå®ç¹,å¯å¨æ¶æç¹....... "); //this.workStationStateFixPointService.workStationStateFixPoint(dateTime, null); stateFixPointService.deviceStateFixPoint(dateTime, null); return; }else { log.info("å·¥ä½å·²åå¨åºå®ç¹"); } log.info("å·¥ä½å·²åå¨åºå®ç¹"); } } collect/src/main/java/com/qianwen/mdc/collect/service/DeviceStateFixPointService.java
@@ -58,7 +58,7 @@ public void deviceStateFixPoint(DateTime dateTime, List<String> includeWorkstationIds) { List<DeviceState> result; Map<Long, WorkstationDTO> workStations = workstationCache.getWorkStations(); Map<Long, WorkstationDTO> workStations = workstationCache.getWorkstations(); if (ObjectUtil.isEmpty(workStations)) { return; } collect/src/main/resources/application-dev.yml
@@ -49,3 +49,19 @@ username: root password: root xxl: job: admin: ### xxl-job admin address list, such as "http://address" or "http://address01,http://address02" addresses: http://127.0.0.1:8080/xxl-job-admin ### xxl-job executor address executor: appname: qwmdc-collect ip: port: 38801 ### xxl-job log path logpath: /qwlogs/xxl-job/jobhandler ### xxl-job log remain days logretentiondays: 7 ### xxl-job, access token accessToken: collect/src/main/resources/com/qianwen/mdc/collect/mapper/iotdb/DeviceStateMapper.xml
@@ -94,5 +94,9 @@ order by time asc </select> <select id="fixPointCountByDate" resultType="Long"> select count(factory_date) FROM root.f2.state_* where factory_date=#{factoryDate} and is_fix_point=true </select> </mapper>