mac上传线程
parent
6fb4b8d885
commit
3a69a89d34
|
|
@ -56,6 +56,11 @@ public class RadarStatusController implements InitializingBean {
|
|||
|
||||
public static Integer count = 0 ;
|
||||
|
||||
private Integer consecutiveZeros = 0;
|
||||
|
||||
private Map<String, List<Integer>> pulse4Number = new HashMap<>();
|
||||
|
||||
|
||||
private String prefix = "system/radarstatus";
|
||||
|
||||
/**
|
||||
|
|
@ -156,22 +161,113 @@ public class RadarStatusController implements InitializingBean {
|
|||
});
|
||||
}
|
||||
|
||||
public static void buildAllRadar(List<SysRadar> radarList) {
|
||||
public void buildAllRadar(List<SysRadar> radarList) {
|
||||
for (SysRadar radar : radarList) {
|
||||
try {
|
||||
Socket socket = new Socket(radar.getRadarIp(), 23);
|
||||
SocketModel socketModel = new SocketModel();
|
||||
socketModel.setId(radar.getId());
|
||||
socketModel.setRadarLocation(radar.getRadarLocation());
|
||||
socketModel.setSocket(socket);
|
||||
socketModel.setRadarIp(radar.getRadarIp());
|
||||
allRadar.add(socketModel);
|
||||
|
||||
TimerTask timerTask = new TimerTask() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
while (true) {
|
||||
task(radar, socket);
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
// timer.schedule(timerTask,0);
|
||||
timerTask.run();
|
||||
} catch (Exception e) {
|
||||
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void task(SysRadar radar, Socket socket) {
|
||||
try {
|
||||
List<SysDiscern> discernList = new ArrayList<>();
|
||||
// socket连接成功返回数据
|
||||
DataResponse data = SocketUtil.getData(socket, radar.getRadarLocation(), radar.getRadarIp());
|
||||
// 天线号字符串转集合
|
||||
List<String> numberList = convertStringToList(radar.getRadarNum());
|
||||
for (String number : numberList) {
|
||||
if (!pulse4Number.containsKey(number)) {
|
||||
pulse4Number.put(number, new ArrayList<>());
|
||||
}
|
||||
List<Integer> pulse4Values = pulse4Number.get(number);
|
||||
if (data.getData().get(7) == 0){
|
||||
consecutiveZeros ++;
|
||||
if (consecutiveZeros >= 10) {
|
||||
// 10个0连续,说明该天线没有数据 从pulse4Number中删除该天线
|
||||
pulse4Number.remove(number);
|
||||
// 从radarList中删除该天线
|
||||
|
||||
// 数据记录结束,计算最大pulse4值
|
||||
double maxPulse4 = pulse4Values.stream().mapToDouble(Integer::doubleValue).max().orElse(0);
|
||||
System.out.println("天线 " + number + " 的最大pulse4值为: " + maxPulse4);
|
||||
// 为下一次数据记录重置
|
||||
pulse4Values.clear();
|
||||
consecutiveZeros = 0;
|
||||
}
|
||||
}else {
|
||||
count ++;
|
||||
pulse4Values.add(data.getData().get(7));
|
||||
}
|
||||
}
|
||||
|
||||
SysDiscern sysDiscern = copyDataToDiscern(data);
|
||||
|
||||
System.out.println(radar.getRadarIp() + ": " + data);
|
||||
// 雷达数据返回封装类赋值
|
||||
ModbusResponse modbusResponse = getModbusResponse(data);
|
||||
|
||||
|
||||
|
||||
String tag = modbusResponse.getTagId();
|
||||
// 雷达原始数据对象
|
||||
PrimaryRadarData primaryRadarData = new PrimaryRadarData();
|
||||
// 标识器对象
|
||||
SysIdentifier sysIdentifier = new SysIdentifier();
|
||||
// 拷贝封装类属性到雷达原始数据对象
|
||||
BeanUtils.copyProperties(modbusResponse, primaryRadarData);
|
||||
|
||||
//判断读取数据中是否携带标签
|
||||
if (!"0".equals(modbusResponse.getTagId())) {
|
||||
// 根据标签去数据库查询标签列表
|
||||
sysIdentifier = identifierService.selectIdentifierByTag(tag);
|
||||
//判断数据库查询结果是否有数据
|
||||
if (sysIdentifier != null) {
|
||||
// 有数据将查询到的标识器配置属性放进原始数据对象
|
||||
primaryRadarData.setLadleNumber(sysIdentifier.getLadleNumber());
|
||||
primaryRadarData.setRadarLocation(radar.getRadarLocation());
|
||||
primaryRadarData.setRadarIp(radar.getRadarIp());
|
||||
|
||||
if (modbusResponse.getValue4() != 0){
|
||||
// 给雷达识别报表赋值
|
||||
sysDiscern.setType(sysIdentifier.getType());
|
||||
sysDiscern.setRadarLocation(radar.getRadarLocation());
|
||||
sysDiscern.setLadleNumber(sysIdentifier.getLadleNumber());
|
||||
sysDiscern.setCreateTime(new Date());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// 没有配置过将铁包号置空
|
||||
primaryRadarData.setLadleNumber(null);
|
||||
primaryRadarData.setRadarLocation(null);
|
||||
primaryRadarData.setRadarIp(radar.getRadarIp());
|
||||
}
|
||||
if (modbusResponse.getValue4() != null && modbusResponse.getValue4() != 0) {
|
||||
// primaryRadarDataService.insertPrimaryRadarData(primaryRadarData);
|
||||
} else {
|
||||
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
}
|
||||
}
|
||||
|
||||
public static void addRadar(List<SysRadar> radarList) {
|
||||
List<Long> idList = allRadar.stream().map(SocketModel::getId).collect(Collectors.toList());
|
||||
List<SysRadar> filterList = radarList.stream().filter(item -> !idList.contains(item.getId())).collect(Collectors.toList());
|
||||
|
|
@ -189,11 +285,42 @@ public class RadarStatusController implements InitializingBean {
|
|||
List<SysDiscern> discernList = new ArrayList<>();
|
||||
// socket连接成功返回数据
|
||||
DataResponse data = SocketUtil.getData(socketModel);
|
||||
// 天线号字符串转集合
|
||||
List<String> numberList = convertStringToList(socketModel.getNumber());
|
||||
for (String number : numberList) {
|
||||
if (!pulse4Number.containsKey(number)) {
|
||||
pulse4Number.put(number, new ArrayList<>());
|
||||
}
|
||||
List<Integer> pulse4Values = pulse4Number.get(number);
|
||||
if (data.getData().get(7) == 0){
|
||||
consecutiveZeros ++;
|
||||
if (consecutiveZeros >= 10) {
|
||||
// 10个0连续,说明该天线没有数据 从pulse4Number中删除该天线
|
||||
pulse4Number.remove(number);
|
||||
// 从radarList中删除该天线
|
||||
allRadar.remove(socketModel);
|
||||
|
||||
// 数据记录结束,计算最大pulse4值
|
||||
double maxPulse4 = pulse4Values.stream().mapToDouble(Integer::doubleValue).max().orElse(0);
|
||||
System.out.println("天线 " + number + " 的最大pulse4值为: " + maxPulse4);
|
||||
// 为下一次数据记录重置
|
||||
pulse4Values.clear();
|
||||
consecutiveZeros = 0;
|
||||
}
|
||||
}else {
|
||||
count ++;
|
||||
pulse4Values.add(data.getData().get(7));
|
||||
}
|
||||
}
|
||||
|
||||
SysDiscern sysDiscern = copyDataToDiscern(data);
|
||||
|
||||
System.out.println(socketModel.getRadarIp() + ": " + data);
|
||||
// 雷达数据返回封装类赋值
|
||||
ModbusResponse modbusResponse = getModbusResponse(data);
|
||||
|
||||
|
||||
|
||||
String tag = modbusResponse.getTagId();
|
||||
// 雷达原始数据对象
|
||||
PrimaryRadarData primaryRadarData = new PrimaryRadarData();
|
||||
|
|
@ -219,9 +346,7 @@ public class RadarStatusController implements InitializingBean {
|
|||
sysDiscern.setRadarLocation(socketModel.getRadarLocation());
|
||||
sysDiscern.setLadleNumber(sysIdentifier.getLadleNumber());
|
||||
sysDiscern.setCreateTime(new Date());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
} else {
|
||||
// 没有配置过将铁包号置空
|
||||
|
|
@ -263,7 +388,7 @@ public class RadarStatusController implements InitializingBean {
|
|||
* @param data
|
||||
* @return ModbusResponse
|
||||
*/
|
||||
private static ModbusResponse getModbusResponse(DataResponse data) {
|
||||
public static ModbusResponse getModbusResponse(DataResponse data) {
|
||||
ModbusResponse modbusResponse = new ModbusResponse();
|
||||
modbusResponse.setRadarNum(data.getData().get(0).toString());
|
||||
modbusResponse.setTagId(data.getData().get(3).toString());
|
||||
|
|
@ -286,6 +411,19 @@ public class RadarStatusController implements InitializingBean {
|
|||
}
|
||||
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
class ConnectionStatus {
|
||||
boolean connected = false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ public class SysRadarController extends BaseController {
|
|||
|
||||
radar.setUpdateBy(getLoginName());
|
||||
int result = radarService.updateUser(radar);
|
||||
RadarStatusController.buildAllRadar(radarService.selectRadarList(new SysRadar()));
|
||||
// RadarStatusController.buildAllRadar(radarService.selectRadarList(new SysRadar()));
|
||||
return toAjax(result);
|
||||
}
|
||||
|
||||
|
|
@ -141,7 +141,7 @@ public class SysRadarController extends BaseController {
|
|||
ExcelUtil<RadarExcel> util = new ExcelUtil<RadarExcel>(RadarExcel.class);
|
||||
List<RadarExcel> radarList = util.importExcel(file.getInputStream());
|
||||
String message = radarService.importData(radarList, updateSupport);
|
||||
RadarStatusController.buildAllRadar(radarService.selectRadarList(new SysRadar()));
|
||||
// RadarStatusController.buildAllRadar(radarService.selectRadarList(new SysRadar()));
|
||||
return AjaxResult.success(message);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -12,9 +12,9 @@
|
|||
<ul>
|
||||
<li class="select-time">
|
||||
<label>TIME: </label>
|
||||
<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createTime"/>
|
||||
<input type="text" class="time-input" id="startTime" value-format="yyyy-MM-dd HH:mm:ss" placeholder="开始时间" name="createTime"/>
|
||||
<span>-</span>
|
||||
<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="updateTime"/>
|
||||
<input type="text" class="time-input" id="endTime" value-format="yyyy-MM-dd HH:mm:ss" placeholder="结束时间" name="updateTime"/>
|
||||
</li>
|
||||
<li>
|
||||
雷达位置:<input type="text" name="radarLocation" placeholder="雷达位置"/>
|
||||
|
|
|
|||
|
|
@ -20,6 +20,9 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="vm1" style="padding: 24px">
|
||||
<div style="display: flex;justify-content: flex-start;flex-wrap: wrap;background: white"></div>
|
||||
</div>
|
||||
<div th:include="include :: footer"></div>
|
||||
|
||||
<script th:inline="javascript">
|
||||
|
|
|
|||
|
|
@ -17,5 +17,7 @@ public class SocketModel {
|
|||
|
||||
private int readCount;
|
||||
|
||||
private String number;
|
||||
|
||||
private Date updateTime;
|
||||
}
|
||||
|
|
@ -14,11 +14,8 @@ import java.util.List;
|
|||
|
||||
public class SocketUtil {
|
||||
|
||||
public static DataResponse getData(SocketModel socketModel) {
|
||||
public static DataResponse getData(Socket socket , String radarLocation , String radarIp) {
|
||||
DataResponse dataResponse = new DataResponse();
|
||||
Socket socket = socketModel.getSocket();
|
||||
String radarLocation = socketModel.getRadarLocation();
|
||||
String radarIp = socketModel.getRadarIp();
|
||||
dataResponse.setRadarIp(radarIp);
|
||||
dataResponse.setRadarLocation(radarLocation);
|
||||
try {
|
||||
|
|
|
|||
Loading…
Reference in New Issue