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 8f43b06..13ef37e 100644 --- a/web/src/main/java/com/zhehekeji/web/service/PlcService.java +++ b/web/src/main/java/com/zhehekeji/web/service/PlcService.java @@ -676,7 +676,7 @@ public class PlcService { e.printStackTrace(); } cameraCapture(cameraIdTop,false,null,path); - //成都蜜雪冰城 只拍照人工核对 + // String e2 = "E2-" + plcCmdInfo.getLeftRightStr(1) + "-IN"; log.info("camera ptz"+e2); gyrateCameraByCode(cameraId, e2); @@ -686,54 +686,109 @@ public class PlcService { e.printStackTrace(); } cameraCapture(cameraId,false,null,path+".jpg"); + + //托盘码 + String trayCode = null; + Boolean trayCheck = Boolean.TRUE; + //如果是用扫码枪 扫 托盘码,就直接扫 + //if(configProperties.getScanCodeMode().getTray() == 2){ + SensorGun sensorGun = sensorService.getSensorByPlc(street.getId(),plcCmdInfo.getLeftRight1()); + if(plcCmdInfo.getSeparation1() == 1 && configProperties.getScanCodeMode().getTray() == 2){ + //托盘使用sick扫码枪 + + 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); + } + }else { + if(StringUtils.isEmpty(trayCode) || trayCode.equals("NoRead")){ + trayCode = "识别异常"; + trayCheck = Boolean.FALSE; + log.warn("sick ocr error:{}",trayCode); + }else { + trayCheck = wmsTrayCode.equals(trayCode); + } + } + + } + + }else if(configProperties.getScanCodeMode().getTray() == 3){ + //RFID + RFID rfid = rfidService.getRFIDByPlc(street.getId()); + } OrderInfo orderInfo = new OrderInfo(street,plcCmdInfo,1,cmdCode); - Stock stock = stockMapper.getByStreetAndDirectionAndSideAndRowColumn(orderInfo.getStreetId(),orderInfo.getLeftRight(),orderInfo.getSeparation(),orderInfo.getRow(),orderInfo.getColumn()); + Stock stock = stockMapper.getByStreetAndDirectionAndSideAndRowColumn(orderInfo.getStreetId(),orderInfo.getLeftRight(),orderInfo.getRow(),orderInfo.getColumn()); + String scanCode = null; + Boolean codeCheck = Boolean.TRUE; + Boolean trayCodeCheck = Boolean.TRUE; + //货物使用球机扫码 + + if(configProperties.getScanCodeMode().getTray() == 2 && plcCmdInfo.getSeparation1() == 2){ + //托盘使用球机扫码 + if("".equals(wmsTrayCode)){ + //空货物的处理 + //如果系统货物为空,则只要扫码识别未出结果,就认为无货物 + trayCode = BarcodeDetector.detectBestCodeUntilOK(configProperties.getSavePath().getMediaPath()+path,configProperties.getScanCodeMode().getTrayCodeTypes()); + log.info("tray code:{},sys trayCode:{}",trayCode,wmsTrayCode); + if(StringUtils.isEmpty(trayCode)|| trayCode.equals("Unrecognized")){ + trayCheck = Boolean.TRUE; + trayCode = ""; + }else { + trayCheck = wmsTrayCode.equals(trayCode); + } + }else { + trayCode = BarcodeDetector.detectBestCodeUntilOK(configProperties.getSavePath().getMediaPath()+path,configProperties.getScanCodeMode().getTrayCodeTypes()); + if(StringUtils.isEmpty(trayCode)){ + log.error("row:{},cloumn:{}",plcCmdInfo.getRow1(),plcCmdInfo.getColumn1()); + log.error("detectBestBarCode:{}",trayCode); + trayCode = "识别异常"; + trayCheck = Boolean.FALSE; + }else { + trayCheck = wmsTrayCode.equals(trayCode); + } + } + + } + log.info("code:{}",scanCode); //核对异常 + Integer status = 1; + //托盘和货物都正确 + if(trayCheck && codeCheck){ + status = 2; + } if(stock == null){ - /* stock = new Stock(null,null,plcCmdInfo.getOrderNum(),plcCmdInfo.getLotnum() - ,"", null,null,wmsCode,wmsCatagary,null, - wmsTrayCode,"",orderInfo.getStreetId(), - orderInfo.getLeftRight(),orderInfo.getSeparation(), - orderInfo.getRow(),orderInfo.getColumn(),0,null,null, - path, LocalDateTime.now(),null);*/ - stock = Stock.builder() - .checkNum(plcCmdInfo.getOrderNum()) - .lotnum(plcCmdInfo.getLotnum()) - .code("") - .wmsCode(wmsCode) - .wmsCategory(wmsCatagary) - .wmsTrayCode(wmsTrayCode) - .trayCode("") - .streetId(orderInfo.getStreetId()) - .direction(orderInfo.getLeftRight()) - .side(orderInfo.getSeparation()) - .row(orderInfo.getRow()) - .column(orderInfo.getColumn()) - .status(0) - .checkPic(path) - .exportTime(LocalDateTime.now()) - .build(); + stock = new Stock(null,null,plcCmdInfo.getOrderNum(),plcCmdInfo.getLotnum(),scanCode, null,null,wmsCode,null,null,wmsTrayCode,trayCode,orderInfo.getShelveId(),orderInfo.getRow(),orderInfo.getColumn(),status,null,null,path, LocalDateTime.now()); stockMapper.insert(stock); - log.info("stockmapper insert new stock info."); }else { - stock.setStatus(0); + stock.setStatus(status); stock.setLotnum(plcCmdInfo.getLotnum()); stock.setExportTime(LocalDateTime.now()); stock.setCheckPic(path); stock.setCheckNum(plcCmdInfo.getOrderNum()); - //stock.setTrayCode(trayCode); + stock.setTrayCode(trayCode); stock.setWmsTrayCode(wmsTrayCode); - stock.setWmsCategory(wmsCatagary); - stock.setCategory(wmsCatagary); - stock.setCode(wmsTrayCode); - //stock.setCode(scanCode); + stock.setCode(scanCode); stock.setWmsCode(wmsCode); stockMapper.updateById(stock); - log.info("stockmapper update stock info."); } checkLog(stock); // StockCheckRunnable stockCheckRunnable = new StockCheckRunnable(street,plcCmdInfo,cmdCode,stockMapper,path,checkLogMapper,configProperties.getScanCodeMode().getGoods(),wmsCode,wmsTrayCode,trayCode,trayCheck,configProperties,sensorGun); // threadPoolExecutor.execute(stockCheckRunnable); + long end = System.currentTimeMillis(); long s = end - startTime; log.info("time:{}millisecond",s);