win代码上传
parent
0821deef01
commit
6fc4de5e43
|
|
@ -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<PrimaryRadarData> list = primaryRadarDataService.selectRadarTable(primaryRadarData);
|
||||
list.stream().forEach(primaryRadarData1 -> {
|
||||
if (StringUtils.isNotEmpty(primaryRadarData1.getType())){
|
||||
if (("0").equals(primaryRadarData1.getType())){
|
||||
List<SysDiscern> 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);
|
||||
|
|
|
|||
|
|
@ -16,8 +16,8 @@
|
|||
<li>
|
||||
识别类型:<select type="select" name="type">
|
||||
<option value="" selected>所有</option>
|
||||
<option value="铁">铁包</option>
|
||||
<option value="车">车架</option>
|
||||
<option value="0">铁包</option>
|
||||
<option value="1">车架</option>
|
||||
</select>
|
||||
</li>
|
||||
<li>
|
||||
|
|
@ -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: '读取次数'
|
||||
},
|
||||
{
|
||||
|
|
|
|||
|
|
@ -113,12 +113,13 @@
|
|||
},
|
||||
{
|
||||
field: 'id',
|
||||
title: '序号'
|
||||
title: '序号',
|
||||
sortable: true,
|
||||
},
|
||||
{
|
||||
field: 'identifierId',
|
||||
title: '高温标识器ID1',
|
||||
sortable: true,
|
||||
|
||||
},
|
||||
{
|
||||
field: 'identifierTwo',
|
||||
|
|
|
|||
|
|
@ -90,12 +90,12 @@
|
|||
},
|
||||
{
|
||||
field: 'id',
|
||||
title: '序号'
|
||||
title: '序号',
|
||||
sortable: true,
|
||||
},
|
||||
{
|
||||
field: 'identifierId',
|
||||
title: '常温温标识器ID1',
|
||||
sortable: true,
|
||||
},
|
||||
{
|
||||
field: 'identifierTwo',
|
||||
|
|
|
|||
|
|
@ -131,12 +131,13 @@
|
|||
},
|
||||
{
|
||||
field: 'id',
|
||||
title: '表格序号'
|
||||
title: '表格序号',
|
||||
sortable: true
|
||||
|
||||
},
|
||||
{
|
||||
field: 'radarIp',
|
||||
title: '雷达IP',
|
||||
sortable: true,
|
||||
},
|
||||
{
|
||||
field: 'radarLocation',
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
/**
|
||||
* 开始时间
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,4 +35,7 @@ public interface ISysIdentifierService
|
|||
String importNormalData(List<NormalExcel> normalList, boolean isUpdateSupport);
|
||||
|
||||
String importData(List<IdentifierExcel> identifierList, boolean isUpdateSupport);
|
||||
|
||||
List<SysIdentifier> selectAllIdentifierList();
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<RadarExcel> radarList, boolean isUpdateSupport);
|
||||
|
||||
SysRadar selectRadarByNumber(Integer number, String radarIp, Integer radarId);
|
||||
|
||||
SysRadar selectRadarByRadarId(Integer radarId, String radarIp);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<String> allRadar = new CopyOnWriteArrayList<>();
|
||||
|
||||
// public static Integer count = 0 ;
|
||||
//
|
||||
// private Integer consecutiveZeros = 0;
|
||||
|
||||
|
||||
private Map<Long, String> radarDelMap = new HashMap<>();
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
List<SysRadar> radarList = service.selectRadarList(new SysRadar());
|
||||
|
||||
// List<SysIdentifier> sysIdentifiers = identifierService.selectAllIdentifierList();
|
||||
// Map<String, SysIdentifier> 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<String, List<PrimaryRadarData>> map = new HashMap<>();
|
||||
|
||||
while (StringUtils.equals("0", radarDelMap.get(radar.getId()))) {
|
||||
// int count = 0;
|
||||
// int consecutiveZeros = 0;
|
||||
|
||||
|
||||
List<PrimaryRadarData> 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<PrimaryRadarData> 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<PrimaryRadarData> 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<Date> 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<String, List<PrimaryRadarData>> 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<PrimaryRadarData> 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<String, List<PrimaryRadarData>> map , int count,Date newDate ,Date date) {
|
||||
List<PrimaryRadarData> primaryRadarDataList1 = map.get(getMapKey(radar));
|
||||
|
||||
List<PrimaryRadarData> primaryRadarDataList = new ArrayList<>();
|
||||
primaryRadarDataList.add(primaryRadarData);
|
||||
map.put(getMapKey(radar), primaryRadarDataList);
|
||||
List<String> 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<String> convertStringToList(String input) {
|
||||
List<String> 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 {
|
||||
|
|
|
|||
|
|
@ -226,6 +226,12 @@ public class SysIdentifierServiceImpl implements ISysIdentifierService
|
|||
return successMsg.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SysIdentifier> selectAllIdentifierList() {
|
||||
|
||||
return identifierMapper.selectAllIdentifierList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public SysIdentifier selectIdentifierById(Long id) {
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
<if test="tagId != null and tagId != ''">
|
||||
AND tag_id like concat('%',#{tagId}, '%')
|
||||
</if>
|
||||
|
|
|
|||
|
|
@ -132,8 +132,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
where id = #{id}
|
||||
</update>
|
||||
<select id="selectAllIdentifierList" resultMap="SysIdentifierResult">
|
||||
select i.id,i.identifier_id,i.identifier_two,i.ladle_number,i.create_by,i.create_time,i.update_by,i.update_time,i.remark,i.del_flag from sys_identifier i
|
||||
where i.del_flag = '0' and i.type = 0
|
||||
select i.id,i.identifier_id,i.identifier_two,i.identifier_three,i.identifier_four,i.type,i.ladle_number,i.create_by,i.create_time,i.update_by,i.update_time,i.remark,i.del_flag from sys_identifier i
|
||||
where i.del_flag = '0'
|
||||
</select>
|
||||
|
||||
<select id="selectIdentifierByTag" resultMap="SysIdentifierResult">
|
||||
|
|
|
|||
|
|
@ -121,7 +121,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
update sys_radar set del_flag = 1 where id in (#{ids})
|
||||
</update>
|
||||
|
||||
<select id="selectRadarByNumber" resultMap="SysRadarResult">
|
||||
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}
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
</mapper>
|
||||
<select id="selectRadarByRadarId" resultMap="SysRadarResult">
|
||||
select r.id,r.radar_ip,r.radar_location,r.station_code,r.sort,r.alarm_value1,r.alarm_value2,r.alarm_value3,r.alarm_value4,r.status,r.radar_id,r.radar_num,r.create_by,r.create_time,r.update_by,r.update_time,r.remark from sys_radar r
|
||||
where r.del_flag = '0' and r.radar_id = #{radarId} and r.radar_ip = #{radarIp}
|
||||
</select>
|
||||
</mapper>
|
||||
Loading…
Reference in New Issue