diff --git a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java index 5899602..7ad49ba 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java @@ -11,9 +11,6 @@ //任务关闭 String STATUS_CLOSE = "0"; - //任务已完成 - String STATUS_COMPLETE = "2"; - //浓度超限 String GAS_ALARM = "0"; @@ -25,4 +22,11 @@ String ALARM_ON = "0"; //已消警 String ALARM_CLOSE = "1"; + + //任务开启 + String TASK_RUNNING = "1"; + //任务未开始 + String TASK_UNSTART= "0"; + //任务已完成 + String TASK_COMPLETE = "2"; } diff --git a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java index 5899602..7ad49ba 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java @@ -11,9 +11,6 @@ //任务关闭 String STATUS_CLOSE = "0"; - //任务已完成 - String STATUS_COMPLETE = "2"; - //浓度超限 String GAS_ALARM = "0"; @@ -25,4 +22,11 @@ String ALARM_ON = "0"; //已消警 String ALARM_CLOSE = "1"; + + //任务开启 + String TASK_RUNNING = "1"; + //任务未开始 + String TASK_UNSTART= "0"; + //任务已完成 + String TASK_COMPLETE = "2"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml index 996baf5..46ee10b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml @@ -19,11 +19,11 @@ - ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts + ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status,TASK_STATUS AS taskStatus, UPDATE_TIME AS updateTime, TS AS ts SELECT - , + FROM bus_plan bp WHERE 1=1 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java index 3aba122..0332421 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java @@ -23,9 +23,6 @@ private String jobId; - - - public void setJobId(String jobId) { this.jobId = jobId; } @@ -35,8 +32,7 @@ //业务逻辑 SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + System.out.println("CRON ----> StartTaskJob is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); getJobDelay(jobId); } @@ -46,6 +42,6 @@ System.out.println("开始执行了------"); //更新任务执行状态 - planService.updateStatus(Long.valueOf(id),StatusEnum.STATUS_OPEN); + planService.updateStatus(Long.valueOf(id),StatusEnum.TASK_RUNNING); } } diff --git a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java index 5899602..7ad49ba 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java @@ -11,9 +11,6 @@ //任务关闭 String STATUS_CLOSE = "0"; - //任务已完成 - String STATUS_COMPLETE = "2"; - //浓度超限 String GAS_ALARM = "0"; @@ -25,4 +22,11 @@ String ALARM_ON = "0"; //已消警 String ALARM_CLOSE = "1"; + + //任务开启 + String TASK_RUNNING = "1"; + //任务未开始 + String TASK_UNSTART= "0"; + //任务已完成 + String TASK_COMPLETE = "2"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml index 996baf5..46ee10b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml @@ -19,11 +19,11 @@ - ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts + ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status,TASK_STATUS AS taskStatus, UPDATE_TIME AS updateTime, TS AS ts SELECT - , + FROM bus_plan bp WHERE 1=1 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java index 3aba122..0332421 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java @@ -23,9 +23,6 @@ private String jobId; - - - public void setJobId(String jobId) { this.jobId = jobId; } @@ -35,8 +32,7 @@ //业务逻辑 SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + System.out.println("CRON ----> StartTaskJob is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); getJobDelay(jobId); } @@ -46,6 +42,6 @@ System.out.println("开始执行了------"); //更新任务执行状态 - planService.updateStatus(Long.valueOf(id),StatusEnum.STATUS_OPEN); + planService.updateStatus(Long.valueOf(id),StatusEnum.TASK_RUNNING); } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java index 8012b03..d6f1f11 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java @@ -33,8 +33,7 @@ //业务逻辑 SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + System.out.println("CRON ----> StopTaskJob is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); getJobDelay(jobId); } @@ -43,6 +42,6 @@ System.out.println("停止执行了------"); //更新任务执行状态 - planService.updateStatus(Long.valueOf(id), StatusEnum.STATUS_COMPLETE); + planService.updateStatus(Long.valueOf(id), StatusEnum.TASK_COMPLETE); } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java index ed71dde..2f3b874 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java @@ -1,10 +1,13 @@ package com.casic.missiles.modular.system.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; @@ -71,11 +74,13 @@ /** * 任务执行状态(2:已完成执行,1:正在执行,0:未执行) */ - @TableField("STATUS") + @TableField("TASK_STATUS") private String taskStatus; /** * 修改时间 */ + @JSONField(serializeUsing = DateDeserializer.class) + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @TableField("UPDATE_TIME") private Date updateTime; /** diff --git a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java index 5899602..7ad49ba 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java @@ -11,9 +11,6 @@ //任务关闭 String STATUS_CLOSE = "0"; - //任务已完成 - String STATUS_COMPLETE = "2"; - //浓度超限 String GAS_ALARM = "0"; @@ -25,4 +22,11 @@ String ALARM_ON = "0"; //已消警 String ALARM_CLOSE = "1"; + + //任务开启 + String TASK_RUNNING = "1"; + //任务未开始 + String TASK_UNSTART= "0"; + //任务已完成 + String TASK_COMPLETE = "2"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml index 996baf5..46ee10b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml @@ -19,11 +19,11 @@ - ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts + ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status,TASK_STATUS AS taskStatus, UPDATE_TIME AS updateTime, TS AS ts SELECT - , + FROM bus_plan bp WHERE 1=1 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java index 3aba122..0332421 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java @@ -23,9 +23,6 @@ private String jobId; - - - public void setJobId(String jobId) { this.jobId = jobId; } @@ -35,8 +32,7 @@ //业务逻辑 SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + System.out.println("CRON ----> StartTaskJob is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); getJobDelay(jobId); } @@ -46,6 +42,6 @@ System.out.println("开始执行了------"); //更新任务执行状态 - planService.updateStatus(Long.valueOf(id),StatusEnum.STATUS_OPEN); + planService.updateStatus(Long.valueOf(id),StatusEnum.TASK_RUNNING); } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java index 8012b03..d6f1f11 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java @@ -33,8 +33,7 @@ //业务逻辑 SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + System.out.println("CRON ----> StopTaskJob is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); getJobDelay(jobId); } @@ -43,6 +42,6 @@ System.out.println("停止执行了------"); //更新任务执行状态 - planService.updateStatus(Long.valueOf(id), StatusEnum.STATUS_COMPLETE); + planService.updateStatus(Long.valueOf(id), StatusEnum.TASK_COMPLETE); } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java index ed71dde..2f3b874 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java @@ -1,10 +1,13 @@ package com.casic.missiles.modular.system.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; @@ -71,11 +74,13 @@ /** * 任务执行状态(2:已完成执行,1:正在执行,0:未执行) */ - @TableField("STATUS") + @TableField("TASK_STATUS") private String taskStatus; /** * 修改时间 */ + @JSONField(serializeUsing = DateDeserializer.class) + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @TableField("UPDATE_TIME") private Date updateTime; /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java index e278536..fe7df27 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java @@ -60,6 +60,10 @@ @Transactional @Override public boolean saveOrUpdateBusPlan(BusPlan busPlan) { + //若是编辑重置执行状态 + if(ObjectUtil.isNotEmpty(busPlan.getId())){ + busPlan.setTaskStatus(StatusEnum.TASK_UNSTART); + } //先保存数据 if (this.saveOrUpdate(busPlan)) { //toDo:若已启动任务,则创建启动job任务 缺消息提示 、和修改时间的 @@ -112,13 +116,16 @@ BusPlan busPlan = this.getById(id); if (ObjectUtil.isNotEmpty(busPlan)) { busPlan.setTaskStatus(status); + if(StatusEnum.TASK_COMPLETE.equals(status)){ + busPlan.setStatus(StatusEnum.STATUS_CLOSE); + } this.updateById(busPlan); //开启巡航 或者停止巡航 BusMonipoiInfo baseInfo = monipoiInfoService.getById(busPlan.getMonitorId()); if (null != baseInfo) { - if (StatusEnum.STATUS_OPEN.equals(status)) { + if (StatusEnum.TASK_RUNNING.equals(status)) { cruise(baseInfo.getDeviceIp(), "start", busPlan.getLineNum()); - } else if (StatusEnum.STATUS_COMPLETE.equals(status)) { + } else if (StatusEnum.TASK_COMPLETE.equals(status)) { cruise(baseInfo.getDeviceIp(), "stop", busPlan.getLineNum()); } } @@ -135,9 +142,9 @@ List busPlanList =this.baseMapper.pageList(page,busPlan,dataScope); for(BusPlan busPlan1:busPlanList){ busPlan1.setTaskStatusName(dictService.getDictNameByCode(DictEnum.TASK_EXECUTE,busPlan1.getTaskStatus())); - busPlan1.setStatus(dictService.getDictNameByCode(DictEnum.TASK_STATUS,busPlan1.getStatus())); + busPlan1.setStatusName(dictService.getDictNameByCode(DictEnum.TASK_STATUS,busPlan1.getStatus())); } - return this.baseMapper.pageList(page,busPlan,dataScope); + return busPlanList; } //开始job diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java b/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java index c9d9189..84398ca 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/task/CollectGasDataTask.java @@ -1,158 +1,158 @@ -package com.casic.missiles.modular.system.task; - -import cn.hutool.core.util.ObjectUtil; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.modular.system.dto.DeviceCommom; -import com.casic.missiles.modular.system.dto.DeviceInfo; -import com.casic.missiles.modular.system.model.BusMonipoiInfo; -import com.casic.missiles.modular.system.service.IBusMonipoiInfoService; -import com.casic.missiles.modular.system.service.IHCNetService; -import com.casic.missiles.modular.system.service.impl.HCNetServiceImpl; -import com.sun.jna.Memory; -import com.sun.jna.Pointer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.ApplicationArguments; -import org.springframework.boot.ApplicationRunner; -import org.springframework.scheduling.annotation.EnableScheduling; -import org.springframework.stereotype.Component; - -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ArrayBlockingQueue; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; - -@Component -@EnableScheduling -public class CollectGasDataTask implements ApplicationRunner { - private static final Logger logger = LoggerFactory.getLogger(CollectGasDataTask.class); - - @Autowired - private IBusMonipoiInfoService monipoiInfoService; - @Autowired - private IHCNetService ihcNetService; - - @Autowired - private HCNetServiceImpl hcNetService; - - @Value("${casic.presetInterval}") - private int presetInterval; - @Value("${casic.collectInterval}") - private int collectInterval; - @Value("${casic.isOpen}") - private int isOpen; - - @Override - public void run(ApplicationArguments args) throws Exception { - // 查询全部设备 - QueryWrapper query = new QueryWrapper(); - query.eq("VALID", "0"); - List deviceList = monipoiInfoService.list(query); - // 创建线程池,每个设备一个线程 - ThreadPoolExecutor executor = new ThreadPoolExecutor(deviceList.size(), deviceList.size(), 10, TimeUnit.SECONDS, - new ArrayBlockingQueue<>(20), new ThreadPoolExecutor.CallerRunsPolicy()); - - for (BusMonipoiInfo monipoiInfo : deviceList) { - if (ObjectUtil.isNotEmpty(monipoiInfo.getDeviceIp())) { - Runnable worker = this.new GasDataRunnable(monipoiInfo.getDeviceIp(), monipoiInfo.getDeviceUser(), monipoiInfo.getDevicePassword()); - executor.execute(worker); - } - } - } - - class GasDataRunnable implements Runnable { - - private String deviceIp; - private String deviceUser; - private String devicePassword; - private Long userId; - private Long serialHandle; - - public GasDataRunnable(String deviceIp, String deviceUser, String devicePassword) { - this.deviceIp = deviceIp; - this.deviceUser = deviceUser; - this.devicePassword = devicePassword; - this.userId = -1L; - this.serialHandle = -1L; - } - - private boolean registerAndStartSerial() { - this.userId = ihcNetService.register(this.deviceUser, this.devicePassword, this.deviceIp); - this.serialHandle = ihcNetService.serialHandle(userId); - if (this.userId >= 0 && this.serialHandle >= 0) { - return true; - } else { - return false; - } - } - - private Map map = new HashMap<>(); - - private void sendGasCommand() { - DeviceInfo deviceInfo = DeviceCommom.selectByDeviceIp(this.deviceIp); - Long serial = deviceInfo.getSerialHandle(); - if (deviceInfo.getSerialHandle() < 0) { - return; - } - // FF 01 00 90 01 00 92 - int[] command = {0xff, 0x01, 0x00, 0x90, 0x01, 0x00, 0x92}; -// int[] command = {0xff,0x01,0x00,0x53,0x00,0x00,0x54}; - Pointer pointer = new Memory(command.length); - for (int i = 0; i < command.length; i++) { - pointer.setByte(i, (byte) command[i]); - } - int size = (int) ((Memory) pointer).getSize(); - //用于与控制指令错开下发 - hcNetService.setTimestampCollcect(System.currentTimeMillis()); - - boolean res = ihcNetService.serialSend(serial, pointer, size); -// System.out.println("collect**************"+new Date()); - if (!res) { - //判断是否掉线,断电重启规则 若同一云台300次(5分钟)获取不到甲烷浓度值,则重启设备 - //是否配置重启 - if (isOpen == 1) { - if (map.get(this.deviceIp) != null) { - map.put(this.deviceIp, map.get(this.deviceIp) + 1); - if (map.get(this.deviceIp) == 300L) { - if (ihcNetService.interruptStart(this.deviceIp)) { - map.remove(this.deviceIp); - logger.error(deviceIp.concat("restart success ********************* ")); - } - } - } else { - map.put(this.deviceIp, 1); - } - } - logger.error(deviceIp.concat("fetch gas data error, error code: ").concat(String.valueOf(ihcNetService.getLastError()))); - } - } - - @Override - public void run() { - System.out.println("Thread-" + deviceIp + " -> start... " + new Date()); - // 登录,登录失败就一直尝试登录 - while (true) { - boolean register = registerAndStartSerial(); - if (register) { - break; - } - } - // 登录成功后,按每秒一次查询甲烷数据 - while (true) { - try { - sendGasCommand(); - Thread.sleep(collectInterval); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } - } - - -} +//package com.casic.missiles.modular.system.task; +// +//import cn.hutool.core.util.ObjectUtil; +//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +//import com.casic.missiles.modular.system.dto.DeviceCommom; +//import com.casic.missiles.modular.system.dto.DeviceInfo; +//import com.casic.missiles.modular.system.model.BusMonipoiInfo; +//import com.casic.missiles.modular.system.service.IBusMonipoiInfoService; +//import com.casic.missiles.modular.system.service.IHCNetService; +//import com.casic.missiles.modular.system.service.impl.HCNetServiceImpl; +//import com.sun.jna.Memory; +//import com.sun.jna.Pointer; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.beans.factory.annotation.Value; +//import org.springframework.boot.ApplicationArguments; +//import org.springframework.boot.ApplicationRunner; +//import org.springframework.scheduling.annotation.EnableScheduling; +//import org.springframework.stereotype.Component; +// +//import java.util.Date; +//import java.util.HashMap; +//import java.util.List; +//import java.util.Map; +//import java.util.concurrent.ArrayBlockingQueue; +//import java.util.concurrent.ThreadPoolExecutor; +//import java.util.concurrent.TimeUnit; +// +//@Component +//@EnableScheduling +//public class CollectGasDataTask implements ApplicationRunner { +// private static final Logger logger = LoggerFactory.getLogger(CollectGasDataTask.class); +// +// @Autowired +// private IBusMonipoiInfoService monipoiInfoService; +// @Autowired +// private IHCNetService ihcNetService; +// +// @Autowired +// private HCNetServiceImpl hcNetService; +// +// @Value("${casic.presetInterval}") +// private int presetInterval; +// @Value("${casic.collectInterval}") +// private int collectInterval; +// @Value("${casic.isOpen}") +// private int isOpen; +// +// @Override +// public void run(ApplicationArguments args) throws Exception { +// // 查询全部设备 +// QueryWrapper query = new QueryWrapper(); +// query.eq("VALID", "0"); +// List deviceList = monipoiInfoService.list(query); +// // 创建线程池,每个设备一个线程 +// ThreadPoolExecutor executor = new ThreadPoolExecutor(deviceList.size(), deviceList.size(), 10, TimeUnit.SECONDS, +// new ArrayBlockingQueue<>(20), new ThreadPoolExecutor.CallerRunsPolicy()); +// +// for (BusMonipoiInfo monipoiInfo : deviceList) { +// if (ObjectUtil.isNotEmpty(monipoiInfo.getDeviceIp())) { +// Runnable worker = this.new GasDataRunnable(monipoiInfo.getDeviceIp(), monipoiInfo.getDeviceUser(), monipoiInfo.getDevicePassword()); +// executor.execute(worker); +// } +// } +// } +// +// class GasDataRunnable implements Runnable { +// +// private String deviceIp; +// private String deviceUser; +// private String devicePassword; +// private Long userId; +// private Long serialHandle; +// +// public GasDataRunnable(String deviceIp, String deviceUser, String devicePassword) { +// this.deviceIp = deviceIp; +// this.deviceUser = deviceUser; +// this.devicePassword = devicePassword; +// this.userId = -1L; +// this.serialHandle = -1L; +// } +// +// private boolean registerAndStartSerial() { +// this.userId = ihcNetService.register(this.deviceUser, this.devicePassword, this.deviceIp); +// this.serialHandle = ihcNetService.serialHandle(userId); +// if (this.userId >= 0 && this.serialHandle >= 0) { +// return true; +// } else { +// return false; +// } +// } +// +// private Map map = new HashMap<>(); +// +// private void sendGasCommand() { +// DeviceInfo deviceInfo = DeviceCommom.selectByDeviceIp(this.deviceIp); +// Long serial = deviceInfo.getSerialHandle(); +// if (deviceInfo.getSerialHandle() < 0) { +// return; +// } +// // FF 01 00 90 01 00 92 +// int[] command = {0xff, 0x01, 0x00, 0x90, 0x01, 0x00, 0x92}; +//// int[] command = {0xff,0x01,0x00,0x53,0x00,0x00,0x54}; +// Pointer pointer = new Memory(command.length); +// for (int i = 0; i < command.length; i++) { +// pointer.setByte(i, (byte) command[i]); +// } +// int size = (int) ((Memory) pointer).getSize(); +// //用于与控制指令错开下发 +// hcNetService.setTimestampCollcect(System.currentTimeMillis()); +// +// boolean res = ihcNetService.serialSend(serial, pointer, size); +//// System.out.println("collect**************"+new Date()); +// if (!res) { +// //判断是否掉线,断电重启规则 若同一云台300次(5分钟)获取不到甲烷浓度值,则重启设备 +// //是否配置重启 +// if (isOpen == 1) { +// if (map.get(this.deviceIp) != null) { +// map.put(this.deviceIp, map.get(this.deviceIp) + 1); +// if (map.get(this.deviceIp) == 300L) { +// if (ihcNetService.interruptStart(this.deviceIp)) { +// map.remove(this.deviceIp); +// logger.error(deviceIp.concat("restart success ********************* ")); +// } +// } +// } else { +// map.put(this.deviceIp, 1); +// } +// } +// logger.error(deviceIp.concat("fetch gas data error, error code: ").concat(String.valueOf(ihcNetService.getLastError()))); +// } +// } +// +// @Override +// public void run() { +// System.out.println("Thread-" + deviceIp + " -> start... " + new Date()); +// // 登录,登录失败就一直尝试登录 +// while (true) { +// boolean register = registerAndStartSerial(); +// if (register) { +// break; +// } +// } +// // 登录成功后,按每秒一次查询甲烷数据 +// while (true) { +// try { +// sendGasCommand(); +// Thread.sleep(collectInterval); +// } catch (InterruptedException e) { +// e.printStackTrace(); +// } +// } +// } +// } +// +// +//}