From 52a534a502ae22d1a860b87c38a6adb263f1303e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LAPTOP-S9HJSOEB=5C=E6=98=8A=E5=A4=A9?= Date: Mon, 11 Dec 2023 11:37:18 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=87=E7=94=A8=E5=8D=95=E4=B8=AA=E6=89=AB?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zhehekeji/web/service/PlcService.java | 129 +++++++++--------- .../web/service/ksec/KsecDecoder.java | 1 - 2 files changed, 68 insertions(+), 62 deletions(-) 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 0656a9a..d28521e 100644 --- a/web/src/main/java/com/zhehekeji/web/service/PlcService.java +++ b/web/src/main/java/com/zhehekeji/web/service/PlcService.java @@ -607,7 +607,7 @@ public class PlcService { Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId()); Integer type; //只进行相机方向判断左边 - if (plcCmdInfo.getFromDirection() == 1) { + if (!(plcCmdInfo.getFromDirection() == 1)){ return street.getCamera1Id(); } else { return street.getCamera2Id(); @@ -665,80 +665,87 @@ public class PlcService { //托盘码 String trayCode = null; Boolean trayCheck = Boolean.TRUE; + + Boolean trayRFIDCheck = Boolean.TRUE; //如果是用扫码枪 扫 托盘码,就直接扫 //if(configProperties.getScanCodeMode().getTray() == 2){ log.info("扫码类型:" + configProperties.getScanCodeMode().getTray()); - //托盘使用sick扫码枪 - SensorGun sensorGun = sensorService.getSensorByPlc(street.getId(), plcCmdInfo.getLeftRight1()); - if (sensorGun == null) { - trayCode = "扫码枪识别异常"; - trayCheck = Boolean.FALSE; - log.error("no sensor gun config in database ,street id:{},direction:{}", street.getId(), plcCmdInfo.getLeftRight1()); - } else { - trayCode = SickSocket.readOCR(sensorGun.getIp(), sensorGun.getPort()); - log.info("sensor tray code:{}", trayCode); - if ("".equals(wmsTrayCode)) { - //托盘码为空,无货物 - //只要扫码枪未识别出条码,即认为盘点正确 - if (StringUtils.isEmpty(trayCode) || trayCode.equals("NoRead")) { - trayCode = ""; - trayCheck = Boolean.TRUE; - } else { - trayCode = "扫码枪识别异常"; - trayCheck = Boolean.FALSE; - log.warn("sick ocr error:{}", trayCode); - } + + if (plcCmdInfo.getSeparation1() == 1 && configProperties.getScanCodeMode().getTray() == 2) { + //托盘使用sick扫码枪 + SensorGun sensorGun = sensorService.getSensorByPlc(street.getId(), plcCmdInfo.getLeftRight1()); + if (sensorGun == null) { + trayCode = "扫码枪识别异常"; + trayCheck = Boolean.FALSE; + log.error("no sensor gun config in database ,street id:{},direction:{}", street.getId(), plcCmdInfo.getLeftRight1()); } else { - if (StringUtils.isEmpty(trayCode) || trayCode.equals("NoRead")) { - trayCode = "扫码枪识别异常"; - trayCheck = Boolean.FALSE; - log.warn("sick ocr error:{}", trayCode); + trayCode = SickSocket.readOCR(sensorGun.getIp(), sensorGun.getPort()); + log.info("sensor tray code:{}", trayCode); + if ("".equals(wmsTrayCode)) { + //托盘码为空,无货物 + //只要扫码枪未识别出条码,即认为盘点正确 + if (StringUtils.isEmpty(trayCode) || trayCode.equals("NoRead")) { + trayCode = ""; + trayCheck = Boolean.TRUE; + } else { + trayCode = "扫码枪识别异常"; + trayCheck = Boolean.FALSE; + log.warn("sick ocr error:{}", trayCode); + } } else { - //扫到就认为正常 - trayCheck = Boolean.TRUE; + if (StringUtils.isEmpty(trayCode) || trayCode.equals("NoRead")) { + trayCode = "扫码枪识别异常"; + trayCheck = Boolean.FALSE; + log.warn("sick ocr error:{}", trayCode); + } else { + //扫到就认为正常 + trayCheck = Boolean.TRUE; + } } } - } + + } else if (configProperties.getScanCodeMode().getTray() == 3) { // RFID // RFID rfid = rfidService.getRFIDByPlc(street.getId(),plcCmdInfo.getLeftRight1()); - Boolean trayRFIDCheck = Boolean.FALSE; + trayRFIDCheck = Boolean.FALSE; - Set tags = new HashSet<>(); - try { - RFIDCheck(plcCmdInfo, true); - Thread.sleep(1000 * configProperties.getRfid().getScanTime()); - } catch (Exception e) { - e.printStackTrace(); - } finally { - tags = RFIDStop(plcCmdInfo); - log.info("盘点rfid扫描结果:" + tags); - } - if (tags != null && tags.size() > 0) { - - if (wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum()) !=null - && tags.containsAll(wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum()))) { - trayRFIDCheck = Boolean.TRUE; - } else { - if(trayCheck){ - trayCode = "RFID扫描失败"; - }else - trayCode += ";RFID扫描失败"; - if (wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum())!= null) { - wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum()).removeAll(tags); - log.info("未扫到数据为:{}",wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum())); - } - trayRFIDCheck = Boolean.FALSE; + Set tags = new HashSet<>(); + try { + RFIDCheck(plcCmdInfo, true); + Thread.sleep(1000 * configProperties.getRfid().getScanTime()); + } catch (Exception e) { + e.printStackTrace(); + } finally { + tags = RFIDStop(plcCmdInfo); + log.info("盘点rfid扫描结果:" + tags); } - wmsTrayCodeMapByTask.remove(plcCmdInfo.getOrderNum()); - RFID rfid = rfidMapper.selectOne(new QueryWrapper().eq("street_id", street.getId())); - if (!rfidLiveService.getRfidLive(plcCmdInfo, street, wmsTrayCode)) { - rfidLiveService.rfidRemoveLive(plcCmdInfo, street, rfid); + if (tags != null && tags.size() > 0) { + + if (wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum()) != null + && tags.containsAll(wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum()))) { + trayRFIDCheck = Boolean.TRUE; + } else { + if (trayCheck) { + trayCode = "RFID扫描失败"; + } else + trayCode += ";RFID扫描失败"; + if (wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum()) != null) { + wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum()).removeAll(tags); + log.info("未扫到数据为:{}", wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum())); + } + trayRFIDCheck = Boolean.FALSE; + } + wmsTrayCodeMapByTask.remove(plcCmdInfo.getOrderNum()); + RFID rfid = rfidMapper.selectOne(new QueryWrapper().eq("street_id", street.getId())); + if (!rfidLiveService.getRfidLive(plcCmdInfo, street, wmsTrayCode)) { + rfidLiveService.rfidRemoveLive(plcCmdInfo, street, rfid); + } + rfidLiveService.rfidSave(plcCmdInfo, String.join(",", tags), street, rfid); } - rfidLiveService.rfidSave(plcCmdInfo, String.join(",", tags), street, rfid); - } + } OrderInfo orderInfo = new OrderInfo(street, plcCmdInfo, 1, cmdCode); Stock stock = stockMapper.getByStreetAndDirectionAndSideAndRowColumn(orderInfo.getStreetId(), plcCmdInfo.getFromDirection(), orderInfo.getSeparation(), orderInfo.getRow(), orderInfo.getColumn()); String scanCode = null; @@ -749,7 +756,7 @@ public class PlcService { //核对异常 Integer status = 1; //托盘和货物都正确 - if (trayCheck && trayRFIDCheck ) { + if (trayCheck && trayRFIDCheck) { status = 2; } if (stock == null) { diff --git a/web/src/main/java/com/zhehekeji/web/service/ksec/KsecDecoder.java b/web/src/main/java/com/zhehekeji/web/service/ksec/KsecDecoder.java index 98f532e..0f08c8f 100644 --- a/web/src/main/java/com/zhehekeji/web/service/ksec/KsecDecoder.java +++ b/web/src/main/java/com/zhehekeji/web/service/ksec/KsecDecoder.java @@ -197,7 +197,6 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder { // log.info("other D code :{}",code); // } } else if (Cmd.E.name().equals(ksecInfo.getType()) ) { - //rfid的逻辑 String code = dataInfo.getCmdName(); log.info("盘点指令:{}", ksecInfo);