diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysDiscernController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysDiscernController.java index 4d7b5c2..581562c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysDiscernController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysDiscernController.java @@ -6,6 +6,7 @@ import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.PrimaryRadarData; import com.ruoyi.common.core.domain.entity.RadarTableVO; +import com.ruoyi.common.core.domain.entity.SysDiscern; import com.ruoyi.common.core.domain.entity.TagRadarData; import com.ruoyi.common.core.page.PageDomain; import com.ruoyi.common.core.page.TableDataInfo; @@ -18,6 +19,7 @@ import com.ruoyi.quartz.domain.SysJob; import com.ruoyi.quartz.service.ISysJobService; import com.ruoyi.quartz.util.CronUtils; import com.ruoyi.quartz.util.ScheduleUtils; +import com.ruoyi.system.service.ISysDiscernService; import com.ruoyi.system.service.PrimaryRadarDataService; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.quartz.SchedulerException; @@ -44,6 +46,8 @@ public class SysDiscernController extends BaseController { @Autowired private ISysJobService jobService; + @Autowired + private ISysDiscernService sysDiscernService; @Autowired private PrimaryRadarDataService primaryRadarDataService; @@ -56,20 +60,17 @@ public class SysDiscernController extends BaseController { // @RequiresPermissions("monitor:job:list") @PostMapping("/list") @ResponseBody - public TableDataInfo list(PrimaryRadarData primaryRadarData) { + public TableDataInfo list(SysDiscern sysDiscern) { startPage(); - List list = primaryRadarDataService.selectRadarTable(primaryRadarData); - list.stream().forEach(primaryRadarData1 -> { - if (StringUtils.isNotEmpty(primaryRadarData1.getType())){ - if (("0").equals(primaryRadarData1.getType())){ + List list = sysDiscernService.selectDiscernList(sysDiscern); + list.stream().forEach(sysDiscernList -> { + if (sysDiscernList.getType()!=null){ + if (sysDiscernList.getType()==0){ - primaryRadarData1.setType("铁包"); - } else if (primaryRadarData1.getLadleNumber().contains("铁")) { - primaryRadarData1.setType("铁包"); - }else { - primaryRadarData1.setType(null); + sysDiscernList.setName("铁包"); + } else if (sysDiscernList.getType()==(1)) { + sysDiscernList.setName("车架"); } - } }); return getDataTable(list); diff --git a/ruoyi-admin/src/main/resources/templates/monitor/discern/discern.html b/ruoyi-admin/src/main/resources/templates/monitor/discern/discern.html index e8c6872..e099302 100644 --- a/ruoyi-admin/src/main/resources/templates/monitor/discern/discern.html +++ b/ruoyi-admin/src/main/resources/templates/monitor/discern/discern.html @@ -16,8 +16,8 @@
  • 识别类型:
  • @@ -75,7 +75,7 @@ title: '雷达位置', }, { - field: 'type', + field: 'name', title: '识别类型', formatter: function(value, row, index) { return $.table.selectDictLabel(datas, value); @@ -98,7 +98,7 @@ title: '信号值' }, { - field: 'totalCount', + field: 'count', title: '读取次数' }, { diff --git a/ruoyi-admin/src/main/resources/templates/system/identifier/identifier.html b/ruoyi-admin/src/main/resources/templates/system/identifier/identifier.html index 0bdc91d..96dd3a9 100644 --- a/ruoyi-admin/src/main/resources/templates/system/identifier/identifier.html +++ b/ruoyi-admin/src/main/resources/templates/system/identifier/identifier.html @@ -113,12 +113,13 @@ }, { field: 'id', - title: '序号' + title: '序号', + sortable: true, }, { field: 'identifierId', title: '高温标识器ID1', - sortable: true, + }, { field: 'identifierTwo', diff --git a/ruoyi-admin/src/main/resources/templates/system/normalIdentifier/normalIdentifier.html b/ruoyi-admin/src/main/resources/templates/system/normalIdentifier/normalIdentifier.html index 9d4ed7c..c33c8b4 100644 --- a/ruoyi-admin/src/main/resources/templates/system/normalIdentifier/normalIdentifier.html +++ b/ruoyi-admin/src/main/resources/templates/system/normalIdentifier/normalIdentifier.html @@ -90,12 +90,12 @@ }, { field: 'id', - title: '序号' + title: '序号', + sortable: true, }, { field: 'identifierId', title: '常温温标识器ID1', - sortable: true, }, { field: 'identifierTwo', diff --git a/ruoyi-admin/src/main/resources/templates/system/radar/radar.html b/ruoyi-admin/src/main/resources/templates/system/radar/radar.html index d0b5db9..2c29f28 100644 --- a/ruoyi-admin/src/main/resources/templates/system/radar/radar.html +++ b/ruoyi-admin/src/main/resources/templates/system/radar/radar.html @@ -131,12 +131,13 @@ }, { field: 'id', - title: '表格序号' + title: '表格序号', + sortable: true + }, { field: 'radarIp', title: '雷达IP', - sortable: true, }, { field: 'radarLocation', diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/PrimaryRadarData.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/PrimaryRadarData.java index 7be7307..dd7e1c0 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/PrimaryRadarData.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/PrimaryRadarData.java @@ -3,6 +3,7 @@ package com.ruoyi.common.core.domain.entity; import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.annotation.Excel.ColumnType; import com.ruoyi.common.core.domain.BaseEntity; +import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; @@ -11,10 +12,12 @@ import org.apache.commons.lang3.builder.ToStringStyle; * * @author ruoyi */ +@Data public class PrimaryRadarData extends BaseEntity { private static final long serialVersionUID = 1L; + /** 用户ID */ @Excel(name = "数据序号", cellType = ColumnType.NUMERIC) private Long id; @@ -23,6 +26,9 @@ public class PrimaryRadarData extends BaseEntity */ @Excel(name = "标签id号") private String tagId; + + + private Integer radarId; /** * 峰值1· */ @@ -85,8 +91,6 @@ public class PrimaryRadarData extends BaseEntity /** 删除标志(0代表存在 2代表删除) */ private String delFlag; - private Integer stationCode; - private String type; public String getType() { diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDiscern.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDiscern.java index 315eadf..bb01b3c 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDiscern.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDiscern.java @@ -3,6 +3,7 @@ package com.ruoyi.common.core.domain.entity; import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.annotation.Excel.ColumnType; import com.ruoyi.common.core.domain.BaseEntity; +import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; @@ -13,6 +14,7 @@ import java.util.Date; * * @author ruoyi */ +@Data public class SysDiscern extends BaseEntity { private static final long serialVersionUID = 1L; @@ -55,6 +57,7 @@ public class SysDiscern extends BaseEntity */ private Integer type; + private String name; /** * 开始时间 */ diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/TsanaRadar.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/TsanaRadar.java index b39a81c..ec923bc 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/TsanaRadar.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/TsanaRadar.java @@ -2,7 +2,7 @@ package com.ruoyi.common.core.domain.entity; import lombok.Data; -import java.sql.Date; +import java.util.Date; @Data @@ -15,9 +15,9 @@ public class TsanaRadar { public String labelNum; - public Date timeBegin; + public String timeBegin; - public Date timeEnd; + public String timeEnd; public Integer timeCount; @@ -26,7 +26,7 @@ public class TsanaRadar { } - public TsanaRadar() { + public TsanaRadar(String radarCode, String labelCode, String locationIp, String labelNum, String timeBegin, String timeEnd, Integer timeCount) { this.radarCode = radarCode; this.labelCode = labelCode; this.locationIp = locationIp; diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/SocketUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/SocketUtil.java index c86fd5b..dedff2a 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/SocketUtil.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/SocketUtil.java @@ -11,10 +11,11 @@ import java.net.InetSocketAddress; import java.net.Socket; import java.util.ArrayList; import java.util.List; +import java.util.Objects; public class SocketUtil { - public static DataResponse getData(Socket socket , String radarLocation , String radarIp) { + public static DataResponse getData(Socket socket , String radarLocation , String radarIp,Integer radarId) { DataResponse dataResponse = new DataResponse(); dataResponse.setRadarIp(radarIp); dataResponse.setRadarLocation(radarLocation); @@ -44,14 +45,14 @@ public class SocketUtil { int s = BitUtils.covert(string); decimal.add(s); } - - dataResponse.setData(decimal); - + if (Objects.equals(radarId, decimal.get(0))) { + dataResponse.setData(decimal); + } return dataResponse; } } catch (Exception e) { - System.out.println("读取数据异常:" + radarIp); +// System.out.println("读取数据异常:" + radarIp); } dataResponse.setRadarIp(radarIp); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRadarMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRadarMapper.java index 30fe1a4..eb83b31 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRadarMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRadarMapper.java @@ -3,6 +3,7 @@ package com.ruoyi.system.mapper; import com.ruoyi.common.core.domain.entity.SysIdentifier; import com.ruoyi.common.core.domain.entity.SysRadar; import com.ruoyi.common.core.domain.entity.SysUser; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -42,4 +43,10 @@ public interface SysRadarMapper public int updateStatus(SysRadar radar); int deleteRadarByIds(String ids); + + SysRadar selectRadarByNumber(@Param("number") Integer number, + @Param("radarIp") String radarIp, + @Param("radarId") Integer radarId); + + SysRadar selectRadarByRadarId(@Param("radarId")Integer radarId,@Param("radarIp") String radarIp); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysIdentifierService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysIdentifierService.java index d146c00..00855a7 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysIdentifierService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysIdentifierService.java @@ -35,4 +35,7 @@ public interface ISysIdentifierService String importNormalData(List normalList, boolean isUpdateSupport); String importData(List identifierList, boolean isUpdateSupport); + + List selectAllIdentifierList(); + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRadarService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRadarService.java index 60c4fcb..954a0f1 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRadarService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRadarService.java @@ -2,8 +2,6 @@ package com.ruoyi.system.service; import com.ruoyi.common.core.domain.entity.RadarExcel; import com.ruoyi.common.core.domain.entity.SysRadar; -import com.ruoyi.common.core.domain.entity.SysUser; -import com.ruoyi.system.domain.SysUserRole; import java.util.List; @@ -37,4 +35,8 @@ public interface ISysRadarService int deleteRadarByIds(String ids); String importData(List radarList, boolean isUpdateSupport); + + SysRadar selectRadarByNumber(Integer number, String radarIp, Integer radarId); + + SysRadar selectRadarByRadarId(Integer radarId, String radarIp); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/PrimaryRadarDataServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/PrimaryRadarDataServiceImpl.java index fd8099b..fe4ef4e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/PrimaryRadarDataServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/PrimaryRadarDataServiceImpl.java @@ -80,51 +80,51 @@ public class PrimaryRadarDataServiceImpl implements PrimaryRadarDataService } - - private static void oracleInsert(TsanaRadar tsanaRadar) { - Connection connection = null; - PreparedStatement preparedStatement = null; - try { - Class.forName("oracle.jdbc.driver.OracleDriver"); - - String url = "jdbc:oracle:thin:@172.16.18.195:1523:xccb"; - String user = "radartest"; - String password = "radartest"; - connection = DriverManager.getConnection(url,user,password); - System.out.println(" ============= 连接数据库成功 =========="); - String insertStatement = "INSERT INTO xccb.TS_ANARADAR (RADARCODE, LABELCODE, LOCATIONIP , LABELNUM , TIMEBEGIN , TIMEEND , TIMECOUNT) VALUES (?, ?, ?, ?, ?, ?, ?)"; - - preparedStatement = connection.prepareStatement(insertStatement); - - preparedStatement.setString(1,tsanaRadar.getRadarCode()); - preparedStatement.setString(2,tsanaRadar.getLabelCode()); - preparedStatement.setString(3,tsanaRadar.getLocationIp()); - preparedStatement.setString(4,tsanaRadar.getLabelNum()); - preparedStatement.setDate(5,tsanaRadar.getTimeBegin()); - preparedStatement.setDate(6,tsanaRadar.getTimeEnd()); - preparedStatement.setInt(7,tsanaRadar.getTimeCount()); - - int i = preparedStatement.executeUpdate(); - System.out.println("新增数据成功,新增数量: " + i); - }catch (Exception e){ - System.out.println("连接异常======" + e); - }finally { - // 关闭连接和statement - if (preparedStatement != null) { - try { - preparedStatement.close(); - } catch (SQLException e) { - e.printStackTrace(); - } - } - if (connection != null) { - try { - connection.close(); - } catch (SQLException e) { - e.printStackTrace(); - } - } - } - } +// +// private static void oracleInsert(TsanaRadar tsanaRadar) { +// Connection connection = null; +// PreparedStatement preparedStatement = null; +// try { +// Class.forName("oracle.jdbc.driver.OracleDriver"); +// +// String url = "jdbc:oracle:thin:@172.16.18.195:1523:xccb"; +// String user = "radartest"; +// String password = "radartest"; +// connection = DriverManager.getConnection(url,user,password); +// System.out.println(" ============= 连接数据库成功 =========="); +// String insertStatement = "INSERT INTO xccb.TS_ANARADAR (RADARCODE, LABELCODE, LOCATIONIP , LABELNUM , TIMEBEGIN , TIMEEND , TIMECOUNT) VALUES (?, ?, ?, ?, ?, ?, ?)"; +// +// preparedStatement = connection.prepareStatement(insertStatement); +// +// preparedStatement.setString(1,tsanaRadar.getRadarCode()); +// preparedStatement.setString(2,tsanaRadar.getLabelCode()); +// preparedStatement.setString(3,tsanaRadar.getLocationIp()); +// preparedStatement.setString(4,tsanaRadar.getLabelNum()); +// preparedStatement.setDate(5,tsanaRadar.getTimeBegin()); +// preparedStatement.setDate(6,tsanaRadar.getTimeEnd()); +// preparedStatement.setInt(7,tsanaRadar.getTimeCount()); +// +// int i = preparedStatement.executeUpdate(); +// System.out.println("新增数据成功,新增数量: " + i); +// }catch (Exception e){ +// System.out.println("连接异常======" + e); +// }finally { +// // 关闭连接和statement +// if (preparedStatement != null) { +// try { +// preparedStatement.close(); +// } catch (SQLException e) { +// e.printStackTrace(); +// } +// } +// if (connection != null) { +// try { +// connection.close(); +// } catch (SQLException e) { +// e.printStackTrace(); +// } +// } +// } +// } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RadarRealTimeDataServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RadarRealTimeDataServiceImpl.java index 40e2ccd..0428702 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RadarRealTimeDataServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RadarRealTimeDataServiceImpl.java @@ -1,11 +1,13 @@ package com.ruoyi.system.service.impl; +import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.common.core.domain.entity.*; import com.ruoyi.common.utils.SocketModel; import com.ruoyi.common.utils.SocketUtil; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.common.utils.bean.ModbusResponse; import com.ruoyi.system.service.*; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.RandomUtils; import org.apache.commons.lang3.StringUtils; @@ -14,12 +16,12 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.net.Socket; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.PreparedStatement; -import java.sql.SQLException; +import java.sql.*; +import java.text.SimpleDateFormat; import java.util.*; +import java.util.Date; import java.util.concurrent.*; +import java.util.function.Function; import java.util.stream.Collectors; @Service @@ -39,17 +41,17 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I public static CopyOnWriteArrayList allRadar = new CopyOnWriteArrayList<>(); -// public static Integer count = 0 ; -// -// private Integer consecutiveZeros = 0; - private Map radarDelMap = new HashMap<>(); @Override public void afterPropertiesSet() { List radarList = service.selectRadarList(new SysRadar()); - +// List sysIdentifiers = identifierService.selectAllIdentifierList(); +// Map identifierHashMap = new HashMap<>(); +// if (CollectionUtils.isNotEmpty(sysIdentifiers)){ +// identifierHashMap = sysIdentifiers.stream().collect(Collectors.toMap(SysIdentifier::getIdentifierId, Function.identity())); +// } CompletableFuture.runAsync(() -> { radarWebSocket(radarList); }); @@ -64,12 +66,6 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I CompletableFuture.runAsync(() -> { task(radar, socket); - -// try { -// Thread.sleep(3000); -// } catch (InterruptedException e) { -// throw new RuntimeException(e); -// } }); } catch (Exception e) { e.printStackTrace(); @@ -80,143 +76,181 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I private void task(SysRadar radar, Socket socket) { long noDataStart = System.currentTimeMillis(); + long noDataEnd = noDataStart; long start = noDataStart; + int consecutiveZeros = 0; + int readCount = 1; Map> map = new HashMap<>(); while (StringUtils.equals("0", radarDelMap.get(radar.getId()))) { -// int count = 0; -// int consecutiveZeros = 0; - - List dataList = new ArrayList<>(); try { // socket连接成功返回数据 - DataResponse data = SocketUtil.getData(socket, radar.getRadarLocation(), radar.getRadarIp()); + DataResponse data = SocketUtil.getData(socket, radar.getRadarLocation(), radar.getRadarIp(), radar.getRadarId()); long current = System.currentTimeMillis(); + // 没数据返回data.data == null + if (Objects.isNull(data.getData())) { + // 连续2秒没读到数据,结束 + if (current - noDataStart >= 2000) { + long dataNullTime = System.currentTimeMillis(); + // todo:存数据 + if (CollectionUtils.isNotEmpty(map.get(getMapKey(radar)))) { - // 雷达数据返回封装类赋值 - ModbusResponse modbusResponse = getModbusResponse(data); - String tag = modbusResponse.getTagId(); - // 雷达原始数据对象 - PrimaryRadarData primaryRadarData = new PrimaryRadarData(); - // 标识器对象 - SysIdentifier sysIdentifier = new SysIdentifier(); - // 拷贝封装类属性到雷达原始数据对象 - BeanUtils.copyProperties(modbusResponse, primaryRadarData); - primaryRadarData.setRadarIp(radar.getRadarIp()); - primaryRadarData.setStationCode(radar.getStationCode()); - primaryRadarData.setRadarLocation(radar.getRadarLocation()); - //判断读取数据中是否携带标签 + if (readCount > 1) { + saveData(radar, map, readCount, noDataEnd, dataNullTime); - if (!"0".equals(modbusResponse.getTagId())) { - // 根据标签去数据库查询标签列表 - sysIdentifier = identifierService.selectIdentifierByTag(tag); - //判断数据库查询结果是否有数据 - if (sysIdentifier != null) { - // 有数据将查询到的标识器配置属性放进原始数据对象 - primaryRadarData.setLadleNumber(sysIdentifier.getLadleNumber()); - primaryRadarData.setRadarIp(radar.getRadarIp()); - primaryRadarData.setType(sysIdentifier.getType().toString()); - for (int i = 0; i < 20; i++) { - dataList.add(primaryRadarData); - } - int count = 0; - while (true){ - map.put(getMapKey(radar), dataList); - if (count == 20){ - Date date = new Date(); - long milliseconds = date.getTime(); // 获取当前日期的毫秒数 - long newMilliseconds = milliseconds + (count * 200); // 加上次数乘以200毫秒 - Date newDate = new Date(newMilliseconds); // 转换成新的 Date 类型 - - - resolveDiscern(radar, primaryRadarData, map ,count,newDate ,date); + readCount = 1; } - count++; } - // 给雷达识别报表赋值 - // TsanaRadar tsanaRadar = new TsanaRadar(); - // tsanaRadar.setRadarCode(null); - // tsanaRadar.setLabelCode(null); - // tsanaRadar.setLocationIp(sysDiscern.getStationCode().toString()); - // tsanaRadar.setLabelNum(sysDiscern.getTagId()); - // tsanaRadar.setTimeBegin((java.sql.Date) sysDiscern.getCreateTime()); - // tsanaRadar.setTimeEnd((java.sql.Date) sysDiscern.getUpdateTime()); - // tsanaRadar.setTimeCount(count); - // - // oracleInsert(tsanaRadar); - - // 没数据返回data.data == null -// if (Objects.isNull(data.getData())) { -// // 连续5秒没读到数据,结束 -// if (current - noDataStart >= 5000) { -// // todo:存数据 -// List primaryRadarDataList = map.get(getMapKey(radar)); -//// primaryRadarDataList.stream().filter() -// noDataStart = current; -// continue; -// } -// } -// // 有数据返回数据 -// // 有id,且时间>=20000 -// if (data.getData().get(3) != 0 && current - start >= 20000) { -// // todo:存数据 -// -// start = current; -// continue; -// } + map.get(getMapKey(radar)).clear(); + noDataStart = current; } - - } else { - //连续10次读取标签号为0 - - // 没有配置过将铁包号置空 - primaryRadarData.setLadleNumber(null); - primaryRadarData.setRadarIp(radar.getRadarIp()); + continue; + } + SysRadar sysRadar = service.selectRadarByRadarId(radar.getRadarId(), radar.getRadarIp()); + if (sysRadar != null) { // 雷达数据返回封装类赋值 + ModbusResponse modbusResponse = getModbusResponse(data); + String tag = modbusResponse.getTagId(); + // 雷达原始数据对象 + PrimaryRadarData primaryRadarData = new PrimaryRadarData(); + // 拷贝封装类属性到雷达原始数据对象 + BeanUtils.copyProperties(modbusResponse, primaryRadarData); + primaryRadarData.setRadarIp(radar.getRadarIp()); +// if (primaryRadarData.getNumber()==(Integer.parseInt(radar.getRadarNum()))) { + primaryRadarData.setStationCode(radar.getStationCode()); +// }else if (Objects.equals(radar.getRadarId(), data.getData().get(0))){ +// primaryRadarData.setStationCode(radar.getStationCode()); +// } + primaryRadarData.setRadarId(data.getData().get(0)); + primaryRadarData.setRadarLocation(radar.getRadarLocation()); + List dataList = map.get(getMapKey(radar)); + //判断读取数据中是否携带标签 + if (!"0".equals(modbusResponse.getTagId())) { + // 根据标签去数据库查询标签列表 + SysIdentifier sysIdentifier = identifierService.selectIdentifierByTag(tag); + //判断数据库查询结果是否有数据 + if (sysIdentifier != null) { + // 有数据将查询到的标识器配置属性放进原始数据对象 + primaryRadarData.setLadleNumber(sysIdentifier.getLadleNumber()); + primaryRadarData.setRadarIp(radar.getRadarIp()); + primaryRadarData.setType(sysIdentifier.getType().toString()); + if (CollectionUtils.isEmpty(dataList)) { + dataList = new ArrayList<>(); + dataList.add(primaryRadarData); + map.put(getMapKey(radar), dataList); + } + if (StringUtils.equals(modbusResponse.getTagId(), dataList.get(dataList.size() - 1).getTagId()) && Objects.equals(primaryRadarData.getRadarId(), dataList.get(dataList.size() - 1).getRadarId()) && Objects.equals(primaryRadarData.getRadarIp(), dataList.get(dataList.size() - 1).getRadarIp())) { + if (current - start >= 20000) { + // todo:存数据 + + if (readCount > 100) { + saveData(radar, map, readCount, start, current); + readCount = 1; + } + start = System.currentTimeMillis(); + + } + dataList.clear(); + dataList.add(primaryRadarData); + } + if (!StringUtils.equals(modbusResponse.getTagId(), dataList.get(dataList.size() - 1).getTagId()) && !StringUtils.equals("0", dataList.get(dataList.size() - 1).getTagId()) && Objects.equals(primaryRadarData.getRadarId(), dataList.get(dataList.size() - 1).getRadarId()) && Objects.equals(primaryRadarData.getRadarIp(), dataList.get(dataList.size() - 1).getRadarIp())) { + // todo:存数据 + long currentTimeMillis = System.currentTimeMillis(); + saveData(radar, map, readCount, start, currentTimeMillis); + dataList.clear(); + dataList.add(primaryRadarData); + readCount = 1; + } + readCount++; + List readTime = map.get(getMapKey(radar)) + .stream().map(PrimaryRadarData::getCreateTime).collect(Collectors.toList()); + if (readTime.get(0) != null) { + readTime.set(0, new Date(System.currentTimeMillis())); + } + + if (!Objects.equals(data.getData().get(0), dataList.get(dataList.size() - 1).getRadarId())) { + long end = System.currentTimeMillis(); + saveData(radar, map, readCount, start, end); + dataList.clear(); + dataList.add(primaryRadarData); + readCount = 1; + } + + } + consecutiveZeros = 0; + } else { + //连续10次读取标签号为0 + consecutiveZeros++; + if (10 == consecutiveZeros) { + // todo:存数据 + long nullTime = System.currentTimeMillis(); + saveData(radar, map, readCount, start, noDataStart); + readCount = 1; + map.get(getMapKey(radar)).clear(); + dataList.clear(); + consecutiveZeros = 0; + start = System.currentTimeMillis(); + } + + // 没有配置过将铁包号置空 + primaryRadarData.setLadleNumber(null); + primaryRadarData.setRadarIp(radar.getRadarIp()); + } + CompletableFuture.runAsync(() -> { + primaryRadarDataService.insertPrimaryRadarData(primaryRadarData); + }); + noDataStart = current; } - CompletableFuture.runAsync(() -> { -// primaryRadarDataService.insertPrimaryRadarData(primaryRadarData); - }); - noDataStart = current; } catch (Exception e) { } } } - private static String getMapKey(SysRadar radar) { - return radar.getRadarIp() + "-" + radar.getRadarNum(); + private void saveData(SysRadar radar, Map> map, int count, long noStartTime, long endTime) { + Date start = new Date(noStartTime); + Date end = new Date(endTime); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String sqlStart = sdf.format(start); + String sqlEnd = sdf.format(end); + try { + + List primaryRadarDataList = map.get(getMapKey(radar)); + if (CollectionUtils.isNotEmpty(primaryRadarDataList)) { + PrimaryRadarData maxData = primaryRadarDataList.stream().max(Comparator.comparingInt(PrimaryRadarData::getValue4)).get(); + + SysDiscern sysDiscern = new SysDiscern(); + sysDiscern.setStationCode(maxData.getStationCode()); + sysDiscern.setCount(count); + sysDiscern.setType(Integer.parseInt(maxData.getType())); + sysDiscern.setNumber(maxData.getNumber()); + sysDiscern.setCreateTime(start); + sysDiscern.setUpdateTime(end); + sysDiscern.setTagId(maxData.getTagId()); + sysDiscern.setValue4(maxData.getValue4()); + sysDiscern.setRadarLocation(maxData.getRadarLocation()); + sysDiscern.setLadleNumber(maxData.getLadleNumber()); + discernService.insertDiscern(sysDiscern); + + TsanaRadar tsanaRadar = new TsanaRadar(); + tsanaRadar.setRadarCode(""); + tsanaRadar.setLabelCode(""); + tsanaRadar.setLocationIp(maxData.getStationCode().toString()); + tsanaRadar.setLabelNum(maxData.getTagId()); + tsanaRadar.setTimeBegin(sqlStart); + tsanaRadar.setTimeEnd(sqlEnd); + tsanaRadar.setTimeCount(count); + oracleInsert(tsanaRadar); + } + } catch (Exception e) { + e.printStackTrace(); + } } - private void resolveDiscern(SysRadar radar, PrimaryRadarData primaryRadarData, Map> map , int count,Date newDate ,Date date) { - List primaryRadarDataList1 = map.get(getMapKey(radar)); - List primaryRadarDataList = new ArrayList<>(); - primaryRadarDataList.add(primaryRadarData); - map.put(getMapKey(radar), primaryRadarDataList); - List numberList = convertStringToList(radar.getRadarNum()); - SysDiscern sysDiscern = copyDataToDiscern(primaryRadarData); - // 给雷达识别报表赋值 - sysDiscern.setType(Integer.parseInt(primaryRadarData.getType())); - sysDiscern.setRadarLocation(radar.getRadarLocation()); - sysDiscern.setLadleNumber(primaryRadarData.getLadleNumber()); - sysDiscern.setCreateTime(date ); - sysDiscern.setTagId(primaryRadarData.getTagId()); - sysDiscern.setCount(count); - sysDiscern.setUpdateTime(newDate); - sysDiscern.setStationCode(radar.getStationCode()); - discernService.insertDiscern(sysDiscern); -// TsanaRadar tsanaRadar = new TsanaRadar(); -// tsanaRadar.setRadarCode(null); -// tsanaRadar.setLabelCode(null); -// tsanaRadar.setLocationIp(sysDiscern.getStationCode().toString()); -// tsanaRadar.setLabelNum(sysDiscern.getTagId()); -// tsanaRadar.setTimeBegin((java.sql.Date) sysDiscern.getCreateTime()); -// tsanaRadar.setTimeEnd((java.sql.Date) sysDiscern.getUpdateTime()); -// tsanaRadar.setTimeCount(count); -// -// oracleInsert(tsanaRadar); + private static String getMapKey(SysRadar radar) { + return radar.getRadarIp() + "-" + radar.getRadarNum() + "-" + radar.getId(); } @Override @@ -230,18 +264,6 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I radarDelMap.put(id, "1"); } - - public static List convertStringToList(String input) { - List list = new ArrayList<>(); - if (input.contains(",")) { - String[] array = input.split(","); - list.addAll(Arrays.asList(array)); - } else { - list.add(input); - } - return list; - } - /** * 雷达识别报表赋值 * @@ -287,26 +309,40 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I String url = "jdbc:oracle:thin:@172.16.18.195:1523:xccb"; String user = "radartest"; String password = "radartest"; - connection = DriverManager.getConnection(url,user,password); + connection = DriverManager.getConnection(url, user, password); System.out.println(" ============= 连接数据库成功 =========="); // ====================================================雷达编号, 标签编号, 工位代号, 标签号, 开始时间, 结束时间, 读取次数 - String insertStatement = "INSERT INTO xccb.TS_ANARADAR (RADARCODE, LABELCODE, LOCATIONIP , LABELNUM , TIMEBEGIN , TIMEEND , TIMECOUNT) VALUES (?, ?, ?, ?, ?, ?, ?)"; + String insertStatement = "INSERT INTO xccb.TS_ANARADAR (RADARCODE, LABELCODE, LOCATIONIP , LABELNUM , TIMEBEGIN , TIMEEND , TIMECOUNT) VALUES (?, ?, ?, ?, to_date(?,'yyyy-mm-dd hh24:mi:ss'), to_date(?,'yyyy-mm-dd hh24:mi:ss'), ?)"; + + System.out.println("insertStatement = " + insertStatement); preparedStatement = connection.prepareStatement(insertStatement); - - preparedStatement.setString(1,null); - preparedStatement.setString(2,null); - preparedStatement.setString(3,tsanaRadar.getLocationIp()); - preparedStatement.setString(4,tsanaRadar.getLabelNum()); - preparedStatement.setDate(5,tsanaRadar.getTimeBegin()); - preparedStatement.setDate(6,tsanaRadar.getTimeEnd()); - preparedStatement.setInt(7,tsanaRadar.getTimeCount()); - + System.out.println("SQL语句初始化完成"); + preparedStatement.setString(1, tsanaRadar.getRadarCode()); + System.out.println("=======RadarCode初始化完成=======" + tsanaRadar.getRadarCode()); + preparedStatement.setString(2, tsanaRadar.getLabelCode()); + System.out.println("=======LabelCode初始化完成=======" + tsanaRadar.getLabelCode()); + preparedStatement.setString(3, tsanaRadar.getLocationIp()); + System.out.println("=======LocationIp初始化完成=======" + tsanaRadar.getLocationIp()); + preparedStatement.setString(4, tsanaRadar.getLabelNum()); + System.out.println("=======LabelNum语句初始化完成=======" + tsanaRadar.getLabelNum()); + preparedStatement.setString(5, tsanaRadar.getTimeBegin()); + System.out.println("=======TimeBegin语句初始化完成=======" + tsanaRadar.getTimeBegin()); + preparedStatement.setString(6, tsanaRadar.getTimeEnd()); + System.out.println("=======TimeEnd语句初始化完成=======" + tsanaRadar.getTimeEnd()); + preparedStatement.setInt(7, tsanaRadar.getTimeCount()); + System.out.println("=======TimeCount初始化完成=======" + tsanaRadar.getTimeCount()); + System.out.println("准备执行新增操作........."); int i = preparedStatement.executeUpdate(); - System.out.println("新增数据成功,新增数量: " + i); - }catch (Exception e){ - System.out.println("连接异常======" + e); - }finally { + if (i == 0) { + System.out.println("新增数据成功,新增数量: = " + i); + } else { + System.out.println("新增数据,新增数量: " + i); + } + } catch (Exception e) { + System.out.println("新增失败。。。。。。"); + e.printStackTrace(); + } finally { // 关闭连接和statement if (preparedStatement != null) { try { diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysIdentifierServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysIdentifierServiceImpl.java index 6509b35..1737110 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysIdentifierServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysIdentifierServiceImpl.java @@ -226,6 +226,12 @@ public class SysIdentifierServiceImpl implements ISysIdentifierService return successMsg.toString(); } + @Override + public List selectAllIdentifierList() { + + return identifierMapper.selectAllIdentifierList(); + } + @Override public SysIdentifier selectIdentifierById(Long id) { diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRadarServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRadarServiceImpl.java index 81ea4f8..373bc32 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRadarServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRadarServiceImpl.java @@ -1,35 +1,20 @@ package com.ruoyi.system.service.impl; -import com.ruoyi.common.annotation.DataScope; -import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.domain.entity.RadarExcel; import com.ruoyi.common.core.domain.entity.SysRadar; -import com.ruoyi.common.core.domain.entity.SysRole; -import com.ruoyi.common.core.domain.entity.SysUser; -import com.ruoyi.common.core.text.Convert; import com.ruoyi.common.exception.ServiceException; -import com.ruoyi.common.utils.ShiroUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.common.utils.bean.BeanValidators; -import com.ruoyi.common.utils.security.Md5Utils; -import com.ruoyi.common.utils.spring.SpringUtils; -import com.ruoyi.system.domain.SysPost; -import com.ruoyi.system.domain.SysUserPost; -import com.ruoyi.system.domain.SysUserRole; import com.ruoyi.system.mapper.*; import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysRadarService; -import com.ruoyi.system.service.ISysUserService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.CollectionUtils; import javax.validation.Validator; -import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -173,6 +158,16 @@ public class SysRadarServiceImpl implements ISysRadarService return successMsg.toString(); } + @Override + public SysRadar selectRadarByNumber(Integer number, String radarIp, Integer radarId) { + + return radarMapper.selectRadarByNumber(number,radarIp,radarId); + } + + @Override + public SysRadar selectRadarByRadarId(Integer radarId, String radarIp) { + return radarMapper.selectRadarByRadarId(radarId,radarIp); + } } diff --git a/ruoyi-system/src/main/resources/mapper/system/SysDiscernMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysDiscernMapper.xml index 36d270a..093b220 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysDiscernMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysDiscernMapper.xml @@ -80,7 +80,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" SELECT d.id,d.tag_id,d.ladle_number,d.radar_location,d.count,d.type,d.value4,d.number,d.create_time,d.update_time FROM sys_discern d - where + where 1=1 AND tag_id like concat('%',#{tagId}, '%') diff --git a/ruoyi-system/src/main/resources/mapper/system/SysIdentifierMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysIdentifierMapper.xml index 398eba2..390f71b 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysIdentifierMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysIdentifierMapper.xml @@ -132,8 +132,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where id = #{id} + select r.id,r.radar_ip,r.radar_location,r.station_code,r.alarm_value1,r.alarm_value2,r.alarm_value3,r.alarm_value4,r.radar_id,r.radar_num,r.status,r.sort,r.create_by,r.create_time,r.update_by,r.update_time,r.remark from sys_radar r + where r.radar_num = #{number} and r.radar_ip = #{radarIp} and r.radar_id = #{radarId} + - - - \ No newline at end of file + + \ No newline at end of file