|
|
@@ -1,36 +1,32 @@
|
|
|
package com.ruoyi.data.controller;
|
|
|
|
|
|
-import cn.dev33.satoken.annotation.SaCheckPermission;
|
|
|
+
|
|
|
import com.ruoyi.common.core.controller.BaseController;
|
|
|
-import com.ruoyi.common.core.domain.PageQuery;
|
|
|
-import com.ruoyi.common.core.page.TableDataInfo;
|
|
|
import com.ruoyi.common.utils.ModbusUtils;
|
|
|
-import com.ruoyi.common.utils.mqtt.MQTTConnect;
|
|
|
-import com.ruoyi.common.utils.redis.CacheUtils;
|
|
|
+
|
|
|
+import com.ruoyi.common.utils.PoolUtils;
|
|
|
import com.ruoyi.data.domain.DataFormatBean;
|
|
|
-import com.ruoyi.data.domain.TblDatapoint;
|
|
|
-import com.ruoyi.data.domain.TblEquipment;
|
|
|
+
|
|
|
import com.ruoyi.data.domain.TblModbusTcp;
|
|
|
-import com.ruoyi.data.domain.bo.TblMqttBo;
|
|
|
+import com.ruoyi.data.domain.bo.TblEquipmentBo;
|
|
|
import com.ruoyi.data.domain.vo.TblEquipmentVo;
|
|
|
-import com.ruoyi.data.domain.vo.TblMqttVo;
|
|
|
+import com.ruoyi.data.domain.vo.TblModbusTcpVo;
|
|
|
import com.ruoyi.data.service.DataDealservice;
|
|
|
import com.ruoyi.data.service.ITblDatapointService;
|
|
|
import com.ruoyi.data.service.ITblEquipmentService;
|
|
|
+import com.ruoyi.data.service.ITblModbusTcpService;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
-import org.ehcache.xml.model.ThreadPoolsType;
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
-import java.text.SimpleDateFormat;
|
|
|
-import java.util.Date;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
import java.util.Queue;
|
|
|
-import java.util.concurrent.ConcurrentLinkedQueue;
|
|
|
-import java.util.concurrent.Executors;
|
|
|
-import java.util.concurrent.ScheduledExecutorService;
|
|
|
-import java.util.concurrent.TimeUnit;
|
|
|
+import java.util.TimerTask;
|
|
|
+import java.util.concurrent.*;
|
|
|
+import java.util.concurrent.atomic.AtomicLong;
|
|
|
|
|
|
@Validated
|
|
|
@RequiredArgsConstructor
|
|
|
@@ -46,6 +42,8 @@ public class TblModBusController extends BaseController {
|
|
|
|
|
|
private final ITblEquipmentService tblEquipmentService;
|
|
|
|
|
|
+ private final ITblModbusTcpService tblModbusTcpService;
|
|
|
+
|
|
|
static Queue<String> queue = new ConcurrentLinkedQueue<String>();
|
|
|
|
|
|
@GetMapping("/test")
|
|
|
@@ -56,31 +54,56 @@ public class TblModBusController extends BaseController {
|
|
|
dealservice.getDataToMqtt(tblEquipment);
|
|
|
}
|
|
|
|
|
|
+ @GetMapping("/tests")
|
|
|
+ public void equipment(TblEquipmentBo bo){
|
|
|
+ List<TblEquipmentVo> tblEquipmentVoList = tblEquipmentService.queryList(bo);
|
|
|
+ for(TblEquipmentVo vo:tblEquipmentVoList){
|
|
|
+ dealservice.getDataToMqtt(vo);
|
|
|
+ }
|
|
|
+ ScheduledExecutorService pool = PoolUtils.getPool();
|
|
|
+ for(TblEquipmentVo vo:tblEquipmentVoList){
|
|
|
+ TblModbusTcpVo tblModbusTcp = tblModbusTcpService.queryById(vo.getProtocalId());
|
|
|
+ pool.scheduleAtFixedRate(new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ dealservice.getDataToMqtt(vo);
|
|
|
+ }
|
|
|
+ },5,tblModbusTcp.getIntervals(),TimeUnit.SECONDS);//推迟5秒执行,然后每10秒执行一次
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @GetMapping("/thread")
|
|
|
+ public void thread(DataFormatBean bean){
|
|
|
+ ScheduledThreadPoolExecutor scheduledThreadPoolExecutor = new ScheduledThreadPoolExecutor(2);
|
|
|
+ AtomicLong atomicLong = new AtomicLong(0L);
|
|
|
+ //提交初始延迟1秒执行,固定周期为2秒的runnable任务
|
|
|
+ ScheduledFuture<?> runnableFuture = scheduledThreadPoolExecutor.scheduleAtFixedRate(() -> {
|
|
|
+ //记录当前时间
|
|
|
+ Long current = System.currentTimeMillis();
|
|
|
+ //判断是否为第一次运行
|
|
|
+ if (atomicLong.get()==0){
|
|
|
+ atomicLong.set(current);
|
|
|
+ System.out.printf("first running [%d]\n",atomicLong.get());
|
|
|
+ }else{
|
|
|
+ //记录与上次的间隔时间
|
|
|
+ System.out.printf("running time:[%d]\n",current-atomicLong.get());
|
|
|
+ }
|
|
|
+ //将当前时间保存
|
|
|
+ atomicLong.set(current);
|
|
|
+ //模拟超过固定周期时间
|
|
|
+// mySleep(5);
|
|
|
+ }, 1,10, TimeUnit.SECONDS);
|
|
|
+ }
|
|
|
|
|
|
-// @GetMapping("/thread")
|
|
|
-// public void thread(DataFormatBean bean){
|
|
|
-//// dealservice.setModBusTcp(bean);
|
|
|
-//// dealservice.getModBusTcp(bean);
|
|
|
-// ScheduledExecutorService executor = Executors.newScheduledThreadPool(2);
|
|
|
-// SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
|
|
|
-// System.out.println("时间:" + sdf.format(new Date()) );
|
|
|
-// for (int i = 0; i < queue.size(); i++) {
|
|
|
-// executor.scheduleWithFixedDelay(new Runnable() {
|
|
|
-// @Override
|
|
|
-// public void run() {
|
|
|
-// String value = ThreadPoolTask.queue.poll();
|
|
|
-// if (value != "" && null != value) {
|
|
|
-// System.out.println("时间:" + sdf.format(new Date()) + " 线程" + Thread.currentThread().getName() + " 执行了task: " + value);
|
|
|
-// }
|
|
|
-// try {
|
|
|
-// TimeUnit.SECONDS.sleep(5);
|
|
|
-// } catch (InterruptedException e) {
|
|
|
-// e.printStackTrace();
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }, 2, 6, TimeUnit.SECONDS);
|
|
|
-// }
|
|
|
-// }
|
|
|
+ private static void mySleep(int seconds){
|
|
|
+ try {
|
|
|
+ TimeUnit.SECONDS.sleep(seconds);
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
@GetMapping("/modbusTcpCache")
|
|
|
public void addModbusCache(TblModbusTcp tblModbusTcp){
|