From 73d286aca740f1bc198482eade74ac324f7ae94f Mon Sep 17 00:00:00 2001 From: ccongli <123@cjyx.com> Date: Mon, 24 Apr 2023 13:05:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=87=E6=B3=A8=E6=9C=BA=E3=80=81=E7=A1=AB?= =?UTF-8?q?=E5=8C=96=E6=9C=BA=E8=AE=BE=E5=A4=87=E7=8A=B6=E6=80=81=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/TtPouringEquipServiceImpl.java | 1 - .../controller/TtSulfEquipController.java | 3 +- .../ttsulfequip/mapper/TtSulfEquipMapper.java | 2 +- .../mapper/xml/TtSulfEquipMapper.xml | 12 +++++-- .../service/ITtSulfEquipService.java | 2 +- .../service/impl/TtSulfEquipServiceImpl.java | 31 +++++++++++++++-- .../org/jeecg/custom/enums/DEVICE_STATUS.java | 23 +++++++++++++ .../jeecg/custom/task/TtDataCollectTask.java | 33 ++++++++++++++++--- 8 files changed, 94 insertions(+), 13 deletions(-) create mode 100644 linkage-boot/linkage-module-system/linkage-system-start/src/main/java/org/jeecg/custom/enums/DEVICE_STATUS.java diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ttpouringequip/service/impl/TtPouringEquipServiceImpl.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ttpouringequip/service/impl/TtPouringEquipServiceImpl.java index df42686..928e112 100644 --- a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ttpouringequip/service/impl/TtPouringEquipServiceImpl.java +++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ttpouringequip/service/impl/TtPouringEquipServiceImpl.java @@ -86,7 +86,6 @@ public class TtPouringEquipServiceImpl extends ServiceImpl> sulfScreen() { - List sulfEquipList = ttSulfEquipService.queryLastTtSulfEquipByGroup(); + long timestamp = System.currentTimeMillis(); + List sulfEquipList = ttSulfEquipService.queryLastTtSulfEquipByGroup(timestamp); return Result.OK(sulfEquipList); } diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ttsulfequip/mapper/TtSulfEquipMapper.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ttsulfequip/mapper/TtSulfEquipMapper.java index 5102999..d491d44 100644 --- a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ttsulfequip/mapper/TtSulfEquipMapper.java +++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ttsulfequip/mapper/TtSulfEquipMapper.java @@ -21,5 +21,5 @@ public interface TtSulfEquipMapper extends BaseMapper { IPage queryTtSulfEquip(@Param("page") Page page, @Param("ttSulfEquip") TtSulfEquip ttSulfEquip); - List queryLastTtSulfEquipByGroup(); + List queryLastTtSulfEquipByGroup(@Param("date") String date, @Param("time") String time); } diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ttsulfequip/mapper/xml/TtSulfEquipMapper.xml b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ttsulfequip/mapper/xml/TtSulfEquipMapper.xml index 616aa4f..d252012 100644 --- a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ttsulfequip/mapper/xml/TtSulfEquipMapper.xml +++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ttsulfequip/mapper/xml/TtSulfEquipMapper.xml @@ -2,7 +2,7 @@ - + diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ttsulfequip/service/ITtSulfEquipService.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ttsulfequip/service/ITtSulfEquipService.java index 58768c2..f05b1ad 100644 --- a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ttsulfequip/service/ITtSulfEquipService.java +++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ttsulfequip/service/ITtSulfEquipService.java @@ -18,6 +18,6 @@ public interface ITtSulfEquipService extends IService { IPage queryTtSulfEquipInfo(Page page,TtSulfEquip ttSulfEquip); - List queryLastTtSulfEquipByGroup(); + List queryLastTtSulfEquipByGroup(Long timestamp); } diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ttsulfequip/service/impl/TtSulfEquipServiceImpl.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ttsulfequip/service/impl/TtSulfEquipServiceImpl.java index 3e15909..1c7102d 100644 --- a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ttsulfequip/service/impl/TtSulfEquipServiceImpl.java +++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ttsulfequip/service/impl/TtSulfEquipServiceImpl.java @@ -2,6 +2,7 @@ package org.jeecg.modules.demo.ttsulfequip.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.commons.lang3.time.DateFormatUtils; import org.jeecg.modules.demo.ttsulfequip.entity.TtSulfEquip; import org.jeecg.modules.demo.ttsulfequip.mapper.TtSulfEquipMapper; import org.jeecg.modules.demo.ttsulfequip.service.ITtSulfEquipService; @@ -10,8 +11,11 @@ import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import javax.annotation.Resource; +import java.time.ZoneId; +import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.TimeZone; /** * @Description: tt_sulf_equip @@ -30,8 +34,31 @@ public class TtSulfEquipServiceImpl extends ServiceImpl queryLastTtSulfEquipByGroup() { - return ttSulfEquipMapper.queryLastTtSulfEquipByGroup(); + public List queryLastTtSulfEquipByGroup(Long timestamp) { + List dateAndTime = getDateAndTime(timestamp); + String date = dateAndTime.get(0); + String time = dateAndTime.get(1); + return ttSulfEquipMapper.queryLastTtSulfEquipByGroup(date,time); + } + + + private static List getDateAndTime(Long timestamp){ + List dateAndTime = new ArrayList<>(); + timestamp -= 30 * 60 * 1000; // 半小时之前 +// timestamp -= 2 * 20 * 60 * 60 * 1000; + ZoneId zoneId = ZoneId.of("Asia/Shanghai"); + String date = DateFormatUtils.format(timestamp, "yyyy-MM-dd", TimeZone.getTimeZone(zoneId)); + String time = DateFormatUtils.format(timestamp, "HH:mm:ss", TimeZone.getTimeZone(zoneId)); + dateAndTime.add(date); + dateAndTime.add(time); + return dateAndTime; + } + + public static void main(String[] args) { + long timestamp = System.currentTimeMillis(); + timestamp -= 2 * 20 * 60 * 60 * 1000; + List dateAndTime = getDateAndTime(timestamp); + System.out.println(dateAndTime); } } diff --git a/linkage-boot/linkage-module-system/linkage-system-start/src/main/java/org/jeecg/custom/enums/DEVICE_STATUS.java b/linkage-boot/linkage-module-system/linkage-system-start/src/main/java/org/jeecg/custom/enums/DEVICE_STATUS.java new file mode 100644 index 0000000..4048665 --- /dev/null +++ b/linkage-boot/linkage-module-system/linkage-system-start/src/main/java/org/jeecg/custom/enums/DEVICE_STATUS.java @@ -0,0 +1,23 @@ +package org.jeecg.custom.enums; + +import org.apache.commons.lang3.StringUtils; + +public enum DEVICE_STATUS { + + RUNNING(1), + WAITING(2), + TROUBLE(3), + SHUTDOWN(4); + + private Integer status; + + + + private DEVICE_STATUS(Integer status) { + this.status = status; + } + + public Integer getVal() { + return status; + } +} diff --git a/linkage-boot/linkage-module-system/linkage-system-start/src/main/java/org/jeecg/custom/task/TtDataCollectTask.java b/linkage-boot/linkage-module-system/linkage-system-start/src/main/java/org/jeecg/custom/task/TtDataCollectTask.java index e1b7a5b..6bff518 100644 --- a/linkage-boot/linkage-module-system/linkage-system-start/src/main/java/org/jeecg/custom/task/TtDataCollectTask.java +++ b/linkage-boot/linkage-module-system/linkage-system-start/src/main/java/org/jeecg/custom/task/TtDataCollectTask.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.fazecast.jSerialComm.SerialPort; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.jeecg.custom.enums.DEVICE_STATUS; import org.jeecg.custom.enums.DEVICE_TYPE; import org.jeecg.custom.utils.RS485Handler; import org.jeecg.modules.demo.ttelectricmeter.entity.TtElectricMeter; @@ -25,6 +26,7 @@ import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.*; import java.util.concurrent.Executors; +import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; @Configuration //1.主要用于标记配置类,兼备Component的效果。 @@ -73,14 +75,15 @@ public class TtDataCollectTask implements SchedulingConfigurer { for(Map.Entry entry : jzjHandlerMap.entrySet()) { RS485Handler handler = entry.getValue(); DEVICE_TYPE deviceType = entry.getKey(); + // 原子计数器 + AtomicInteger atomic = new AtomicInteger(); Runnable runnable = () -> { log.info("5min执行一次浇注设备温度采集:" + LocalDateTime.now().toLocalTime()); String str = handler.write(deviceType.getCommand()); String temp = handler.parseData(str, 1); - log.info("device com {} read str = {} | parse temp = {}", deviceType.name(), str, temp); + String eqtIp = deviceType.getHostNum(); if (StringUtils.isNotBlank(temp)) { Integer type = jzjMolds.contains(deviceType) ? 2 : 1; - String eqtIp = deviceType.getHostNum(); TtPouringEquip ttPouringEquip = new TtPouringEquip(); ttPouringEquip.setTemperature(new BigDecimal(temp)); ttPouringEquip.setCreateTime(new Date()); @@ -88,7 +91,16 @@ public class TtDataCollectTask implements SchedulingConfigurer { ttPouringEquip.setEqtNo(Optional.ofNullable(eqtNoIpMap.get(eqtIp)).orElse("0")); ttPouringEquip.setEqtIp(eqtIp); pouringEquipService.save(ttPouringEquip); + atomic.getAndSet(0); // 重新记为 0 + updateEqtStatus(eqtIp, DEVICE_STATUS.RUNNING.getVal()); + } else { + int number = atomic.getAndIncrement(); // 采集失败次数 +1; + if (number >= 6) { + updateEqtStatus(eqtIp, DEVICE_STATUS.SHUTDOWN.getVal()); + } } + log.info("device com {} read str = {} | parse temp = {} | atomic = {}", deviceType.name(), + str, temp, atomic.get()); }; this.addTriggerTask(runnable, cron1); } @@ -153,12 +165,25 @@ public class TtDataCollectTask implements SchedulingConfigurer { } - // 获取所有运行状态正常的Ip设备 + // 更新浇注机设备采集状态 + private void updateEqtStatus(String ip, Integer status) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(TtEqtBase::getEqtIp, ip); + TtEqtBase eqtInfo = iTtEqtBaseService.getOne(lqw); + if (eqtInfo != null) { + eqtInfo.setEqtStatus(status); + iTtEqtBaseService.save(eqtInfo); + } + } + + + // 获取所有串口采集运行的Ip设备 private Map getEqtNoIpMapping() { Map map; LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.isNotNull(TtEqtBase::getEqtIp); - lqw.eq(TtEqtBase::getEqtStatus,1); // 运行正常 +// lqw.eq(TtEqtBase::getEqtStatus,1); // 运行正常 + lqw.in(TtEqtBase::getEqtType, 2,5,6,7); List list = iTtEqtBaseService.list(lqw); map = list.stream().collect(Collectors.toMap(TtEqtBase::getEqtIp, TtEqtBase::getEqtNo)); log.info("running eqt ip no mappings = {}", map);