diff --git a/web/src/main/java/com/zhehekeji/web/entity/SteeringEngine.java b/web/src/main/java/com/zhehekeji/web/entity/SteeringEngine.java index c028366..80549b9 100644 --- a/web/src/main/java/com/zhehekeji/web/entity/SteeringEngine.java +++ b/web/src/main/java/com/zhehekeji/web/entity/SteeringEngine.java @@ -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); diff --git a/web/src/main/java/com/zhehekeji/web/service/InitService.java b/web/src/main/java/com/zhehekeji/web/service/InitService.java index 0c50235..62cf554 100644 --- a/web/src/main/java/com/zhehekeji/web/service/InitService.java +++ b/web/src/main/java/com/zhehekeji/web/service/InitService.java @@ -85,47 +85,49 @@ public class InitService implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { //球机登录 + + TaskDelayExecutor.runMp4DownloadExecutor(); List 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 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 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{ diff --git a/web/src/main/java/com/zhehekeji/web/service/PlcService.java b/web/src/main/java/com/zhehekeji/web/service/PlcService.java index 8685505..6ff634a 100644 --- a/web/src/main/java/com/zhehekeji/web/service/PlcService.java +++ b/web/src/main/java/com/zhehekeji/web/service/PlcService.java @@ -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); diff --git a/web/src/main/java/com/zhehekeji/web/service/SteeringEngineService.java b/web/src/main/java/com/zhehekeji/web/service/SteeringEngineService.java index b0c765e..d6deb83 100644 --- a/web/src/main/java/com/zhehekeji/web/service/SteeringEngineService.java +++ b/web/src/main/java/com/zhehekeji/web/service/SteeringEngineService.java @@ -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 list = list(); - Map 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 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 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); + } } } }