后端修改,保证可用性

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

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

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

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

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