|
|
|
|
@ -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<String> 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<String> 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<RFID>().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<RFID>().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) {
|
|
|
|
|
|