采用单个扫码

changchun-医药
LAPTOP-S9HJSOEB\昊天 2 years ago
parent 47e6dd3f4b
commit 52a534a502

@ -607,7 +607,7 @@ public class PlcService {
Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId()); Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId());
Integer type; Integer type;
//只进行相机方向判断左边 //只进行相机方向判断左边
if (plcCmdInfo.getFromDirection() == 1) { if (!(plcCmdInfo.getFromDirection() == 1)){
return street.getCamera1Id(); return street.getCamera1Id();
} else { } else {
return street.getCamera2Id(); return street.getCamera2Id();
@ -665,80 +665,87 @@ public class PlcService {
//托盘码 //托盘码
String trayCode = null; String trayCode = null;
Boolean trayCheck = Boolean.TRUE; Boolean trayCheck = Boolean.TRUE;
Boolean trayRFIDCheck = Boolean.TRUE;
//如果是用扫码枪 扫 托盘码,就直接扫 //如果是用扫码枪 扫 托盘码,就直接扫
//if(configProperties.getScanCodeMode().getTray() == 2){ //if(configProperties.getScanCodeMode().getTray() == 2){
log.info("扫码类型:" + configProperties.getScanCodeMode().getTray()); log.info("扫码类型:" + configProperties.getScanCodeMode().getTray());
//托盘使用sick扫码枪
SensorGun sensorGun = sensorService.getSensorByPlc(street.getId(), plcCmdInfo.getLeftRight1()); if (plcCmdInfo.getSeparation1() == 1 && configProperties.getScanCodeMode().getTray() == 2) {
if (sensorGun == null) { //托盘使用sick扫码枪
trayCode = "扫码枪识别异常"; SensorGun sensorGun = sensorService.getSensorByPlc(street.getId(), plcCmdInfo.getLeftRight1());
trayCheck = Boolean.FALSE; if (sensorGun == null) {
log.error("no sensor gun config in database ,street id:{},direction:{}", street.getId(), plcCmdInfo.getLeftRight1()); trayCode = "扫码枪识别异常";
} else { trayCheck = Boolean.FALSE;
trayCode = SickSocket.readOCR(sensorGun.getIp(), sensorGun.getPort()); log.error("no sensor gun config in database ,street id:{},direction:{}", street.getId(), plcCmdInfo.getLeftRight1());
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 { } else {
if (StringUtils.isEmpty(trayCode) || trayCode.equals("NoRead")) { trayCode = SickSocket.readOCR(sensorGun.getIp(), sensorGun.getPort());
trayCode = "扫码枪识别异常"; log.info("sensor tray code:{}", trayCode);
trayCheck = Boolean.FALSE; if ("".equals(wmsTrayCode)) {
log.warn("sick ocr error:{}", trayCode); //托盘码为空,无货物
//只要扫码枪未识别出条码,即认为盘点正确
if (StringUtils.isEmpty(trayCode) || trayCode.equals("NoRead")) {
trayCode = "";
trayCheck = Boolean.TRUE;
} else {
trayCode = "扫码枪识别异常";
trayCheck = Boolean.FALSE;
log.warn("sick ocr error:{}", trayCode);
}
} else { } else {
//扫到就认为正常 if (StringUtils.isEmpty(trayCode) || trayCode.equals("NoRead")) {
trayCheck = Boolean.TRUE; trayCode = "扫码枪识别异常";
trayCheck = Boolean.FALSE;
log.warn("sick ocr error:{}", trayCode);
} else {
//扫到就认为正常
trayCheck = Boolean.TRUE;
}
} }
} }
}
} else if (configProperties.getScanCodeMode().getTray() == 3) {
// RFID // RFID
// RFID rfid = rfidService.getRFIDByPlc(street.getId(),plcCmdInfo.getLeftRight1()); // RFID rfid = rfidService.getRFIDByPlc(street.getId(),plcCmdInfo.getLeftRight1());
Boolean trayRFIDCheck = Boolean.FALSE; trayRFIDCheck = Boolean.FALSE;
Set<String> tags = new HashSet<>(); Set<String> tags = new HashSet<>();
try { try {
RFIDCheck(plcCmdInfo, true); RFIDCheck(plcCmdInfo, true);
Thread.sleep(1000 * configProperties.getRfid().getScanTime()); Thread.sleep(1000 * configProperties.getRfid().getScanTime());
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} finally { } finally {
tags = RFIDStop(plcCmdInfo); tags = RFIDStop(plcCmdInfo);
log.info("盘点rfid扫描结果" + tags); 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;
} }
wmsTrayCodeMapByTask.remove(plcCmdInfo.getOrderNum()); if (tags != null && tags.size() > 0) {
RFID rfid = rfidMapper.selectOne(new QueryWrapper<RFID>().eq("street_id", street.getId()));
if (!rfidLiveService.getRfidLive(plcCmdInfo, street, wmsTrayCode)) { if (wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum()) != null
rfidLiveService.rfidRemoveLive(plcCmdInfo, street, rfid); && 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); OrderInfo orderInfo = new OrderInfo(street, plcCmdInfo, 1, cmdCode);
Stock stock = stockMapper.getByStreetAndDirectionAndSideAndRowColumn(orderInfo.getStreetId(), plcCmdInfo.getFromDirection(), orderInfo.getSeparation(), orderInfo.getRow(), orderInfo.getColumn()); Stock stock = stockMapper.getByStreetAndDirectionAndSideAndRowColumn(orderInfo.getStreetId(), plcCmdInfo.getFromDirection(), orderInfo.getSeparation(), orderInfo.getRow(), orderInfo.getColumn());
String scanCode = null; String scanCode = null;
@ -749,7 +756,7 @@ public class PlcService {
//核对异常 //核对异常
Integer status = 1; Integer status = 1;
//托盘和货物都正确 //托盘和货物都正确
if (trayCheck && trayRFIDCheck ) { if (trayCheck && trayRFIDCheck) {
status = 2; status = 2;
} }
if (stock == null) { if (stock == null) {

@ -197,7 +197,6 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder {
// log.info("other D code :{}",code); // log.info("other D code :{}",code);
// } // }
} else if (Cmd.E.name().equals(ksecInfo.getType()) ) { } else if (Cmd.E.name().equals(ksecInfo.getType()) ) {
//rfid的逻辑 //rfid的逻辑
String code = dataInfo.getCmdName(); String code = dataInfo.getCmdName();
log.info("盘点指令:{}", ksecInfo); log.info("盘点指令:{}", ksecInfo);

Loading…
Cancel
Save