From a33c33d48c2c16995130b825355b6883be4eb159 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期一, 02 九月 2024 15:26:41 +0800
Subject: [PATCH] 加入定时任务,启动时打固定点 ,并且加入工位数据缓存
---
collect/src/main/java/com/qianwen/mdc/collect/service/DeviceStateFixPointService.java | 2
collect/src/main/java/com/qianwen/mdc/collect/job/DeviceStatusAggregateJob.java | 44 ++++++++++++++
collect/src/main/java/com/qianwen/mdc/collect/job/ProductionTimeCacheXxlJob.java | 2
collect/src/main/java/com/qianwen/mdc/collect/runner/InitRunner.java | 48 +++++++++-------
collect/src/main/java/com/qianwen/mdc/collect/config/XxlJobConfig.java | 41 +++++++++++++
collect/src/main/java/com/qianwen/mdc/collect/mapper/iotdb/DeviceStateMapper.java | 9 ++
collect/src/main/java/com/qianwen/mdc/collect/cache/WorkstationCache.java | 6 +-
collect/src/main/resources/application-dev.yml | 16 +++++
collect/src/main/resources/com/qianwen/mdc/collect/mapper/iotdb/DeviceStateMapper.xml | 4 +
9 files changed, 144 insertions(+), 28 deletions(-)
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 1083904..6bbdfae 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
@@ -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);
diff --git a/collect/src/main/java/com/qianwen/mdc/collect/config/XxlJobConfig.java b/collect/src/main/java/com/qianwen/mdc/collect/config/XxlJobConfig.java
new file mode 100644
index 0000000..5584715
--- /dev/null
+++ b/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;
+ }
+}
diff --git a/collect/src/main/java/com/qianwen/mdc/collect/job/DeviceStatusAggregateJob.java b/collect/src/main/java/com/qianwen/mdc/collect/job/DeviceStatusAggregateJob.java
new file mode 100644
index 0000000..99e115c
--- /dev/null
+++ b/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;
+ }
+}
diff --git a/collect/src/main/java/com/qianwen/mdc/collect/job/ProductionTimeCacheXxlJob.java b/collect/src/main/java/com/qianwen/mdc/collect/job/ProductionTimeCacheXxlJob.java
index 766b53a..e291c1c 100644
--- a/collect/src/main/java/com/qianwen/mdc/collect/job/ProductionTimeCacheXxlJob.java
+++ b/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)) {
diff --git a/collect/src/main/java/com/qianwen/mdc/collect/mapper/iotdb/DeviceStateMapper.java b/collect/src/main/java/com/qianwen/mdc/collect/mapper/iotdb/DeviceStateMapper.java
index a2f7e8e..0fa8177 100644
--- a/collect/src/main/java/com/qianwen/mdc/collect/mapper/iotdb/DeviceStateMapper.java
+++ b/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);
}
diff --git a/collect/src/main/java/com/qianwen/mdc/collect/runner/InitRunner.java b/collect/src/main/java/com/qianwen/mdc/collect/runner/InitRunner.java
index 7a07f9f..ea12d69 100644
--- a/collect/src/main/java/com/qianwen/mdc/collect/runner/InitRunner.java
+++ b/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("宸ヤ綅宸插瓨鍦ㄥ浐瀹氱偣");
}
}
diff --git a/collect/src/main/java/com/qianwen/mdc/collect/service/DeviceStateFixPointService.java b/collect/src/main/java/com/qianwen/mdc/collect/service/DeviceStateFixPointService.java
index b66dd81..b196c7f 100644
--- a/collect/src/main/java/com/qianwen/mdc/collect/service/DeviceStateFixPointService.java
+++ b/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;
}
diff --git a/collect/src/main/resources/application-dev.yml b/collect/src/main/resources/application-dev.yml
index f5e016a..487b9e7 100644
--- a/collect/src/main/resources/application-dev.yml
+++ b/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:
\ No newline at end of file
diff --git a/collect/src/main/resources/com/qianwen/mdc/collect/mapper/iotdb/DeviceStateMapper.xml b/collect/src/main/resources/com/qianwen/mdc/collect/mapper/iotdb/DeviceStateMapper.xml
index af763c6..f72aee0 100644
--- a/collect/src/main/resources/com/qianwen/mdc/collect/mapper/iotdb/DeviceStateMapper.xml
+++ b/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>
--
Gitblit v1.9.3