win代码上传

detached
zouyiqing 2024-01-24 00:41:54 +08:00
parent 1ecdd74611
commit cb9476cade
2 changed files with 89 additions and 67 deletions

View File

@ -26,6 +26,7 @@ import lombok.Data;
import org.apache.commons.compress.utils.Lists;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
@ -41,6 +42,7 @@ import java.sql.ResultSet;
import java.sql.Statement;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CopyOnWriteArrayList;
/**
*
@ -49,7 +51,7 @@ import java.util.concurrent.CompletableFuture;
*/
@Controller
@RequestMapping("/system/radarstatus")
public class RadarStatusController {
public class RadarStatusController implements InitializingBean {
private static final Logger log = LoggerFactory.getLogger(RadarStatusController.class);
@Autowired
@ -61,6 +63,10 @@ public class RadarStatusController {
@Autowired
private ISysIdentifierService identifierService;
private Timer timer = new Timer();
public static CopyOnWriteArrayList<SocketModel> allRadar = new CopyOnWriteArrayList<>();
private String prefix = "system/radarstatus";
@ -80,68 +86,6 @@ public class RadarStatusController {
TableDataInfo rspData = new TableDataInfo();
List<SysRadar> radarList = service.selectRadarList(sysRadar);
List<SocketModel> socketModels = Lists.newArrayList();
for (SysRadar radar : radarList) {
try {
Socket socket = new Socket(radar.getRadarIp(), 23);
SocketModel socketModel = new SocketModel();
socketModel.setRadarLocation(radar.getRadarLocation());
socketModel.setSocket(socket);
socketModel.setRadarIp(radar.getRadarIp());
socketModels.add(socketModel);
} catch (Exception e) {
e.printStackTrace();
}
}
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
socketModels.forEach(socketModel -> {
try {
DataResponse data = SocketUtil.getData(socketModel);
System.out.println(socketModel.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);
primaryRadarData.setLadleNumber(sysIdentifier.getLadleNumber());
primaryRadarData.setRadarLocation(socketModel.getRadarLocation());
primaryRadarData.setRadarIp(socketModel.getRadarIp());
} else {
primaryRadarData.setLadleNumber(null);
primaryRadarData.setRadarLocation(null);
primaryRadarData.setRadarIp(socketModel.getRadarIp());
}
String ip = Inet4Address.getLocalHost().getHostAddress();
if (modbusResponse.getValue4() != null && !"0".equals(modbusResponse.getValue4())) {
primaryRadarDataService.insertPrimaryRadarData(primaryRadarData);
} else {
}
RadarStatusWebSocket.sendToAll(JSON.toJSONString(data));
} catch (Exception e) {
// if (e.equals("java.net.SocketTimeoutException: connect timed out")) {
// System.err.println("从串口读取失败:" + "连接超时");
// }
// DataResponse dataResponse = new DataResponse();
// dataResponse.setRadarIp(radar.getRadarIp());
// dataResponse.setRadarLocation(radar.getRadarLocation());
// dataResponse.setStatus(0);
// RadarStatusWebSocket.sendToAll(JSON.toJSONString(dataResponse));
// e.printStackTrace();
}
});
}
};
timer.scheduleAtFixedRate(task, 1, 1000);
// 异步连接硬件
// CompletableFuture<List<ModbusResponse>> listCompletableFuture = CompletableFuture.supplyAsync(() -> {
// List<ModbusResponse> responses = new ArrayList<>();
@ -215,6 +159,71 @@ public class RadarStatusController {
return rspData;
}
private void asyncWebSocket(List<SysRadar> radarList) {
CompletableFuture.runAsync(()->{
buildAllRadar(radarList);
TimerTask task = new TimerTask() {
@Override
public void run() {
int count = 0;
allRadar.forEach(socketModel -> {
asyncReadRadar(socketModel);
});
}
};
timer.scheduleAtFixedRate(task, 1, 100);
});
}
public static void buildAllRadar(List<SysRadar> radarList) {
for (SysRadar radar : radarList) {
try {
Socket socket = new Socket(radar.getRadarIp(), 23);
SocketModel socketModel = new SocketModel();
socketModel.setRadarLocation(radar.getRadarLocation());
socketModel.setSocket(socket);
socketModel.setRadarIp(radar.getRadarIp());
allRadar.add(socketModel);
} catch (Exception e) {
e.printStackTrace();
}
}
}
private void asyncReadRadar(SocketModel socketModel) {
CompletableFuture.runAsync(()->{
try {
DataResponse data = SocketUtil.getData(socketModel);
System.out.println(socketModel.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);
primaryRadarData.setLadleNumber(sysIdentifier.getLadleNumber());
primaryRadarData.setRadarLocation(socketModel.getRadarLocation());
primaryRadarData.setRadarIp(socketModel.getRadarIp());
} else {
primaryRadarData.setLadleNumber(null);
primaryRadarData.setRadarLocation(null);
primaryRadarData.setRadarIp(socketModel.getRadarIp());
}
if (modbusResponse.getValue4() != null && !"0".equals(modbusResponse.getValue4())) {
primaryRadarDataService.insertPrimaryRadarData(primaryRadarData);
} else {
}
RadarStatusWebSocket.sendToAll(JSON.toJSONString(data));
} catch (Exception e) {
}
});
}
private static ModbusResponse getModbusResponse(DataResponse data) {
ModbusResponse modbusResponse = new ModbusResponse();
modbusResponse.setRadarNum(data.getData().get(0).toString());
@ -230,6 +239,13 @@ public class RadarStatusController {
return modbusResponse;
}
@Override
public void afterPropertiesSet() throws Exception {
List<SysRadar> radarList = service.selectRadarList(new SysRadar());
asyncWebSocket(radarList);
}
class ConnectionStatus {
boolean connected = false;

View File

@ -72,7 +72,9 @@ public class SysRadarController extends BaseController {
@ResponseBody
public AjaxResult addSave(@Validated SysRadar radar) {
radar.setCreateBy(getLoginName());
return toAjax(radarService.insertRadar(radar));
int result = radarService.insertRadar(radar);
RadarStatusController.buildAllRadar(radarService.selectRadarList(new SysRadar()));
return toAjax(result);
}
/**
@ -95,14 +97,17 @@ public class SysRadarController extends BaseController {
public AjaxResult editSave(@Validated SysRadar radar) {
radar.setUpdateBy(getLoginName());
return toAjax(radarService.updateUser(radar));
int result = radarService.updateUser(radar);
RadarStatusController.buildAllRadar(radarService.selectRadarList(new SysRadar()));
return toAjax(result);
}
@PostMapping("/remove")
@ResponseBody
public AjaxResult remove(String ids) {
return toAjax(radarService.deleteRadarByIds(ids));
int result = radarService.deleteRadarByIds(ids);
RadarStatusController.buildAllRadar(radarService.selectRadarList(new SysRadar()));
return toAjax(result);
}
@ -135,6 +140,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()));
return AjaxResult.success(message);
}