| | |
| | | public void startOneOpcTask() throws Exception { |
| | | S7DataWL s7DataWLTwo = s7SerializerWLTwo.read(S7DataWL.class); |
| | | S7DataWL s7DataWLOne = s7SerializerWLOne.read(S7DataWL.class); |
| | | S7DataWLExtra s7DataWLExtraTwo = s7SerializerWLTwo.read(S7DataWLExtra.class); |
| | | log.info("一线卧理: {}", s7DataWLOne); |
| | | //获取第二条线路的卧式理片笼状态 |
| | | Boolean twoInkageEntity = s7DataWLTwo.getDeviceState(); |
| | | //默认只跑一台卧式理片,两条线路都可以走 |
| | | int cellFlag = 1; |
| | | //如果两条线都启动则只能跑一条线 |
| | | if (twoInkageEntity != null && !twoInkageEntity) { |
| | | if (!twoInkageEntity && !Const.OUT_DISABLE.equals(s7DataWLExtraTwo.getD06SlotState())) { |
| | | cellFlag = 2; |
| | | } |
| | | startOneOpcTaskChild(s7DataWLOne, 1, cellFlag); |
| | |
| | | public void startTwoOpcTask() throws Exception { |
| | | S7DataWL s7DataWLOne = s7SerializerWLOne.read(S7DataWL.class); |
| | | S7DataWL s7DataWLTwo = s7SerializerWLTwo.read(S7DataWL.class); |
| | | S7DataWLExtra s7DataWLExtraTwo = s7SerializerWLTwo.read(S7DataWLExtra.class); |
| | | log.info("二线卧理: {}", s7DataWLTwo); |
| | | Boolean oneInkageEntity = s7DataWLOne.getDeviceState(); |
| | | int cellFlag = 1; |
| | | if (oneInkageEntity != null && !oneInkageEntity) { |
| | | if (!oneInkageEntity && !Const.OUT_DISABLE.equals(s7DataWLExtraTwo.getD06SlotState())) { |
| | | cellFlag = 2; |
| | | } |
| | | startOneOpcTaskChild(s7DataWLTwo, 2, cellFlag); |
| | |
| | | //进片任务 |
| | | log.info("设备:{}状态:{}", device, request); |
| | | log.info("进片任务:进片玻璃id为:{}", task.getGlassIdIn()); |
| | | intoTask(task, "", device); |
| | | intoTask(task, device); |
| | | } else if (request == 2 && taskRunning == 0) { |
| | | //出片任务 |
| | | outTask(task, "", device, cellFlag); |
| | | outTask(task, device, cellFlag); |
| | | } else if (request == 3 && taskRunning == 0) { |
| | | //直通任务 |
| | | log.info("设备:{}状态:{}", device, request); |
| | | if (!outTask(task, "", device, cellFlag)) { |
| | | intoTask(task, "", device); |
| | | if (!outTask(task, device, cellFlag)) { |
| | | intoTask(task, device); |
| | | } |
| | | } else if (request == 4) { |
| | | log.info("设备:{}状态:{}", device, request); |
| | |
| | | } |
| | | |
| | | @Scheduled(fixedDelay = 1000) |
| | | public void edgTwoOpcTask() throws Exception { |
| | | public void edgTwoOpcTask() { |
| | | S7DataWL s7DataWLTwo = s7SerializerWLTwo.read(S7DataWL.class); |
| | | String glassId = s7DataWLTwo.getGlassId(); |
| | | log.info("2号线玻璃id{},历史id{}", glassId, glassIdTwo); |
| | |
| | | edgTaskChild(glassId, 2); |
| | | } |
| | | |
| | | private void edgTaskChild(String glassId, int cell) throws Exception { |
| | | private void edgTaskChild(String glassId, int cell) { |
| | | ratio = sysConfigService.queryConfigValue(ConstSysConfig.CACHE_RATIO); |
| | | GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId).last("limit 1")); |
| | | if (glassInfo == null) { |
| | |
| | | } |
| | | } |
| | | |
| | | private boolean intoTask(S7DataWL task, String tableName, int deviceId) { |
| | | private boolean intoTask(S7DataWL task, int deviceId) { |
| | | Date startDate = new Date(); |
| | | log.info("开始执行进片任务,任务信息为:{},表名为:{},设备id:{},开始时间:{}", task, tableName, deviceId, startDate); |
| | | log.info("开始执行进片任务,任务信息为:{},设备id:{},开始时间:{}", task, deviceId, startDate); |
| | | //获取玻璃的基本信息 |
| | | GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, task.getGlassIdIn())); |
| | | if (null == glassInfo) { |
| | |
| | | return Boolean.TRUE; |
| | | } |
| | | |
| | | private boolean outTask(S7DataWL task, String tableName, int deviceId, int cellFlag) throws Exception { |
| | | private boolean outTask(S7DataWL task, int deviceId, int cellFlag) { |
| | | Date startDate = new Date(); |
| | | //获取对应的设备状态信息 |
| | | S7DataWL s7DataWLOne = s7SerializerWLOne.read(S7DataWL.class); |
| | |
| | | // 3:二号线一对多的情况下,获取一号线磨边前片台C08的状态,C08非禁用时,一号线将按照D06片台状态觉得出片 |
| | | if (cellFlag == 2) { |
| | | if (deviceId == 1) { |
| | | |
| | | twoOutState = twoOutState & d06OutState; |
| | | } else { |
| | | oneOutState = oneOutState & d06OutState; |
| | | } |
| | | } |
| | | |
| | | log.info("开始执行出片/直通任务,任务信息为:{},表名为:{},设备id:{},开始时间:{},一号线状态:{},二号线状态:{}", |
| | | task, tableName, deviceId, startDate, oneOutState, twoOutState); |
| | | log.info("开始执行出片/直通任务,任务信息为:{},设备id:{},开始时间:{},一号线状态:{},二号线状态:{}", |
| | | task, deviceId, startDate, oneOutState, twoOutState); |
| | | //获取当前需要走那条线 |
| | | int cell = 0; |
| | | if (cellFlag == 1) { |
| | |
| | | cell = Const.TWO_OUT_TARGET_POSITION; |
| | | } |
| | | } |
| | | if (Const.OUT_FREE.equals(oneOutState) && Const.OUT_FREE.equals(twoOutState)) { |
| | | if (cellFlag == 2) { |
| | | if (!outChildTask(task, tableName, deviceId, cell, startDate)) { |
| | | cell = cell == Const.ONE_OUT_TARGET_POSITION ? Const.TWO_OUT_TARGET_POSITION : Const.ONE_OUT_TARGET_POSITION; |
| | | return outChildTask(task, tableName, deviceId, cell, startDate); |
| | | } |
| | | } else { |
| | | return outChildTask(task, tableName, deviceId, cell, startDate); |
| | | if (cellFlag == 2) { |
| | | if (!outChildTask(task, deviceId, cell, startDate)) { |
| | | cell = cell == Const.ONE_OUT_TARGET_POSITION ? Const.TWO_OUT_TARGET_POSITION : Const.ONE_OUT_TARGET_POSITION; |
| | | return outChildTask(task, deviceId, cell, startDate); |
| | | } |
| | | } else { |
| | | return outChildTask(task, tableName, deviceId, cell, startDate); |
| | | return outChildTask(task, deviceId, cell, startDate); |
| | | } |
| | | return Boolean.TRUE; |
| | | } |
| | | |
| | | private boolean outChildTask(S7DataWL task, String tableName, int deviceId, int cell, Date startDate) { |
| | | private boolean outChildTask(S7DataWL task, int deviceId, int cell, Date startDate) { |
| | | EdgStorageCageDetails edgStorageCageDetails = null; |
| | | |
| | | //笼内是版图相差是否超过阈值 |
| | |
| | | task.setStartCell(edgStorageCageDetails.getSlot()); |
| | | task.setTaskRunning(taskType); |
| | | task.setEndCell(cell); |
| | | // edgStorageDeviceTaskService.updateTaskMessage(tableName, task); |
| | | if (deviceId == 1) { |
| | | s7SerializerWLOne.write( |
| | | S7DataWL.builder() |