后端修改,保证可用性

杭州-烟草
LAPTOP-S9HJSOEB\昊天 11 months ago
parent bcacad75e2
commit 7bdee2dc48

@ -36,9 +36,9 @@ public class SteeringEngine {
plcCmdInfo.setSeparation1(1);
}
if(steeringEngine.getDloc()!=null && steeringEngine.getDloc().endsWith("000")){
plcCmdInfo.setLeftRight2(Integer.valueOf(steeringEngine.getSloc().substring(3,4)));
plcCmdInfo.setColumn2(Integer.valueOf(steeringEngine.getSloc().substring(4,6)));
plcCmdInfo.setRow2(Integer.valueOf(steeringEngine.getSloc().substring(6,8)));
plcCmdInfo.setLeftRight2(Integer.valueOf(steeringEngine.getDloc().substring(3,4)));
plcCmdInfo.setColumn2(Integer.valueOf(steeringEngine.getDloc().substring(4,6)));
plcCmdInfo.setRow2(Integer.valueOf(steeringEngine.getDloc().substring(6,8)));
plcCmdInfo.setSeparation2(1);
}else {
plcCmdInfo.setLeftRight2(0);

@ -85,47 +85,49 @@ public class InitService implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
//球机登录
TaskDelayExecutor.runMp4DownloadExecutor();
List<Camera> cameras = cameraMapper.selectByMap(new HashMap<>(0));
cameras.forEach(camera -> {
LoginThread loginThread = new LoginThread(camera);
loginThread.start();
});
TaskDelayExecutor.runMp4DownloadExecutor();
LPLicense.createLicKeyIfNotExist();
// LPLicense.createLicKeyIfNotExist();
//plc连接
if(configProperties.getServerMode() == 0){
log.info("PLC TCP MODE");
//plc 连接状态初始化
List<Street> streets = streetMapper.selectByMap(new HashMap<>(0));
streets.forEach(street -> {
StreetConn.init(street.getId(),street.getPlcId());
try {
nettyClient.createClient(street);
}catch (Exception e){
log.error("streetId:{}初始plc连接失败,url:{},port:{}",street.getId(),street.getPlcIp(),street.getPlcPort());
}
});
}else
if(configProperties.getServerMode() == 1){
Thread thread = new Thread(()->{
log.info("KESC JSON MODE");
// 昆船协议
ConfigProperties.KSEC ksec = configProperties.getKsec();
if(ksec != null){
StreetConn.init(1,"ksec");
try {
ksecNettyClient.createClient(ksec);
}catch (Exception e){
ksecNettyClient.reconnect(1);
log.error("kesc connect error,url:{},port:{}",ksec.getIp(),ksec.getPort());
}
}else {
log.error("ksec no config");
}
});
thread.start();
// if(configProperties.getServerMode() == 0){
// log.info("PLC TCP MODE");
// //plc 连接状态初始化
// List<Street> streets = streetMapper.selectByMap(new HashMap<>(0));
//
// streets.forEach(street -> {
// StreetConn.init(street.getId(),street.getPlcId());
// try {
// nettyClient.createClient(street);
// }catch (Exception e){
// log.error("streetId:{}初始plc连接失败,url:{},port:{}",street.getId(),street.getPlcIp(),street.getPlcPort());
// }
// });
// }else
// if(configProperties.getServerMode() == 1) {
// Thread thread = new Thread(() -> {
// log.info("KESC JSON MODE");
// // 昆船协议
// ConfigProperties.KSEC ksec = configProperties.getKsec();
// if (ksec != null) {
// StreetConn.init(1, "ksec");
// try {
// ksecNettyClient.createClient(ksec);
// } catch (Exception e) {
// ksecNettyClient.reconnect(1);
// log.error("kesc connect error,url:{},port:{}", ksec.getIp(), ksec.getPort());
// }
// } else {
// log.error("ksec no config");
// }
// });
// thread.start();
// }
// Thread thread1 = new Thread(()->{
//
@ -146,7 +148,7 @@ public class InitService implements ApplicationRunner {
// thread1.start();
}
}
class LoginThread extends Thread{

@ -124,6 +124,11 @@ public class PlcService {
order.setLeftRight1(plcCmdInfo.getLeftRight1());
order.setColumn1(plcCmdInfo.getColumn1());
order.setRow1(plcCmdInfo.getRow1());
order.setInOut2(plcCmdInfo.getSide2());
order.setLeftRight2(plcCmdInfo.getLeftRight2());
order.setColumn2(plcCmdInfo.getColumn2());
order.setRow2(plcCmdInfo.getRow2());
//todo 昆船的项目 ,取货 放货是独立的
//取货是是不知道放货的位置的所以订单开始的时候只写1位置
//订单结束写2位置
@ -154,10 +159,6 @@ public class PlcService {
OrderRealtime.stopOrder(street.getId());
Order update = new Order();
update.setId(order.getId());
update.setInOut2(plcCmdInfo.getSide2());
update.setLeftRight2(plcCmdInfo.getLeftRight2());
update.setColumn2(plcCmdInfo.getColumn2());
update.setRow2(plcCmdInfo.getRow2());
//将最后一次的拍照算在工单时间
LocalDateTime endDownLoadTime = endTime.plusNanos(configProperties.getCameraConfig().getC4DelayCaptureTime()*1000000);
update.setEndTime(endTime);

@ -13,6 +13,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import java.util.stream.Collectors;
@ -27,30 +28,61 @@ public class SteeringEngineService extends ServiceImpl<SteeringEngineMapper,Stee
void check(){
List<SteeringEngine> list = list();
Map<String,SteeringEngine> newMap = list.stream().collect(Collectors.toMap(SteeringEngine::getWorkunitdesc, v->v));
for (String streetId : newMap.keySet()){
//如果为空或状态不同,则进入随行记录
if(steeringEngineMap.get(streetId) ==null){
//记录
steeringEngineMap.put(streetId,newMap.get(streetId));
}else if(!steeringEngineMap.get(streetId).getWorkunitstatus().equals("0") && !steeringEngineMap.get(streetId).getWorkunitstatus().equals(newMap.get(streetId).getWorkunitstatus())){
//在跑随行
if(!newMap.get(streetId).getJobnum().equals("0")){
Map<String, SteeringEngine> newMap = list.stream()
.collect(Collectors.toMap(SteeringEngine::getWorkunitdesc, v -> v));
for (String streetId : newMap.keySet()) {
SteeringEngine newEngine = newMap.get(streetId);
SteeringEngine oldEngine = steeringEngineMap.get(streetId);
// 如果为空或状态不同,则进入随行记录
if (oldEngine == null) {
// 记录
steeringEngineMap.put(streetId, newEngine);
oldEngine= newEngine;
}
if (!Objects.equals(oldEngine.getJobnum(), newEngine.getJobnum())) {
// 在跑随行
if (!newEngine.getJobnum().equals("0")) {
log.info("随行开始");
plcService.orderStart(SteeringEngine.getPlcCmdInfo(newMap.get(streetId)));
plcService.orderStart(SteeringEngine.getPlcCmdInfo(newEngine));
}
//随行结束
// 随行结束
else {
log.info("随行结束");
PlcCmdInfo plcCmdInfo = SteeringEngine.getPlcCmdInfo(newMap.get(streetId));
plcCmdInfo.setOrderNum(steeringEngineMap.get(streetId).getPltnum());
plcService.orderStop(SteeringEngine.getPlcCmdInfo(newMap.get(streetId)));
PlcCmdInfo plcCmdInfo = SteeringEngine.getPlcCmdInfo(newEngine);
plcCmdInfo.setOrderNum(oldEngine.getPltnum());
plcService.orderStop(plcCmdInfo);
}
// 记录
steeringEngineMap.put(streetId, newEngine);
}
}
}
private void checkSteeringEngines() {
List<SteeringEngine> steeringEngines = list();
for (SteeringEngine steeringEngine : steeringEngines) {
String streetId = steeringEngine.getWorkunitdesc();
String jobNum = steeringEngine.getJobnum();
//记录
steeringEngineMap.put(streetId,newMap.get(streetId));
if (jobNum != null && !jobNum.equals("0")) {
// 随行开始
if (!steeringEngineMap.containsKey(streetId) || steeringEngineMap.get(streetId).getJobnum().equals("0")) {
log.info("随行开始, streetId: {}", streetId);
plcService.orderStart(SteeringEngine.getPlcCmdInfo(steeringEngine));
steeringEngineMap.put(streetId, steeringEngine);
}
} else {
// 随行结束
if (steeringEngineMap.containsKey(streetId) && !steeringEngineMap.get(streetId).getJobnum().equals("0")) {
log.info("随行结束, streetId: {}", streetId);
PlcCmdInfo plcCmdInfo = SteeringEngine.getPlcCmdInfo(steeringEngine);
plcCmdInfo.setOrderNum(steeringEngineMap.get(streetId).getPltnum());
plcService.orderStop(plcCmdInfo);
steeringEngineMap.remove(streetId);
}
}
}
}

Loading…
Cancel
Save