采用rfid和扫码枪一起扫

changchun-医药
LAPTOP-S9HJSOEB\昊天 2 years ago
parent 404655c7c6
commit 1335eed45a

@ -389,10 +389,10 @@ public class PlcService {
Integer ptzId = cameraService.getPtzIdByCodeAndCameraId(code, cameraId); Integer ptzId = cameraService.getPtzIdByCodeAndCameraId(code, cameraId);
if (ptzId != null && ptzId >= 0) { if (ptzId != null && ptzId >= 0) {
log.info("gyrate camera by code, code{},cameraId:{},ptId:{}", code, cameraId, ptzId); log.info("gyrate camera by code, code{},cameraId:{},ptId:{}", code, cameraId, ptzId);
try{ try {
cameraControlModule.toPtz(ptzId, cameraId); cameraControlModule.toPtz(ptzId, cameraId);
}catch (Exception e){ } catch (Exception e) {
log.info("摄像头没有读取到 , code{},cameraId:{},ptId:{}", code, cameraId, ptzId); log.info("摄像头没有读取到 , code{},cameraId:{},ptId:{}", code, cameraId, ptzId);
} }
} else { } else {
@ -400,10 +400,11 @@ public class PlcService {
log.error("ptz not found ,code{},cameraId:{}", code, cameraId); log.error("ptz not found ,code{},cameraId:{}", code, cameraId);
} }
} }
public void gyrateCameraByCode(Integer cameraId, String code,String taskId) {
public void gyrateCameraByCode(Integer cameraId, String code, String taskId) {
Integer ptzId = cameraService.getPtzIdByCodeAndCameraId(code, cameraId); Integer ptzId = cameraService.getPtzIdByCodeAndCameraId(code, cameraId);
if (ptzId != null && ptzId >= 0) { if (ptzId != null && ptzId >= 0) {
log.info("gyrate camera by code, code{},cameraId:{},ptId:{},taskId:{}", code, cameraId, ptzId,taskId); log.info("gyrate camera by code, code{},cameraId:{},ptId:{},taskId:{}", code, cameraId, ptzId, taskId);
cameraControlModule.toPtz(ptzId, cameraId); cameraControlModule.toPtz(ptzId, cameraId);
} else { } else {
log.error("ptz not found ,code{},cameraId:{}", code, cameraId); log.error("ptz not found ,code{},cameraId:{}", code, cameraId);
@ -601,6 +602,7 @@ public class PlcService {
} }
} }
} }
public Integer getCameraByPlcCmdE(PlcCmdInfo plcCmdInfo, Integer leftRight) { public Integer getCameraByPlcCmdE(PlcCmdInfo plcCmdInfo, Integer leftRight) {
Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId()); Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId());
Integer type; Integer type;
@ -611,6 +613,7 @@ public class PlcService {
return street.getCamera2Id(); return street.getCamera2Id();
} }
} }
@Resource @Resource
private LightSourceMapper lightSourceMapper; private LightSourceMapper lightSourceMapper;
@ -634,7 +637,7 @@ public class PlcService {
lightSources.forEach(lightSource -> { lightSources.forEach(lightSource -> {
HikControlSocket.openLight(lightSource.getIp(), lightSource.getPort(), configProperties.getLightSource().getIndex(), 1); HikControlSocket.openLight(lightSource.getIp(), lightSource.getPort(), configProperties.getLightSource().getIndex(), 1);
}); });
log.info("盘点摄像头变化参数:"+plcCmdInfo.toString()); log.info("盘点摄像头变化参数:" + plcCmdInfo.toString());
Integer cameraId = getCameraByPlcCmdE(plcCmdInfo, plcCmdInfo.getLeftRight1()); Integer cameraId = getCameraByPlcCmdE(plcCmdInfo, plcCmdInfo.getLeftRight1());
if (plcCmdInfo.getSeparation1() == 1 && configProperties.getScanCodeMode().getTray() == 2) { if (plcCmdInfo.getSeparation1() == 1 && configProperties.getScanCodeMode().getTray() == 2) {
@ -656,123 +659,93 @@ public class PlcService {
try { try {
cameraCapture(cameraId, false, null, path); cameraCapture(cameraId, false, null, path);
}catch (NullPointerException e){ } catch (NullPointerException e) {
log.error("相机{}未连接无法拍照",cameraId); log.error("相机{}未连接无法拍照", cameraId);
} }
//托盘码 //托盘码
String trayCode = null; String trayCode = null;
Boolean trayCheck = Boolean.TRUE; Boolean trayCheck = Boolean.TRUE;
//如果是用扫码枪 扫 托盘码,就直接扫 //如果是用扫码枪 扫 托盘码,就直接扫
//if(configProperties.getScanCodeMode().getTray() == 2){ //if(configProperties.getScanCodeMode().getTray() == 2){
log.info("扫码类型:"+configProperties.getScanCodeMode().getTray()); log.info("扫码类型:" + configProperties.getScanCodeMode().getTray());
if (plcCmdInfo.getSeparation1() == 1 && configProperties.getScanCodeMode().getTray() == 2) { //托盘使用sick扫码枪
//托盘使用sick扫码枪 SensorGun sensorGun = sensorService.getSensorByPlc(street.getId(), plcCmdInfo.getLeftRight1());
SensorGun sensorGun = sensorService.getSensorByPlc(street.getId(), plcCmdInfo.getLeftRight1()); if (sensorGun == null) {
if (sensorGun == null) { trayCode = "扫码枪识别异常";
trayCode = "识别异常"; trayCheck = Boolean.FALSE;
trayCheck = Boolean.FALSE; log.error("no sensor gun config in database ,street id:{},direction:{}", street.getId(), plcCmdInfo.getLeftRight1());
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 { } else {
trayCode = SickSocket.readOCR(sensorGun.getIp(), sensorGun.getPort()); if (StringUtils.isEmpty(trayCode) || trayCode.equals("NoRead")) {
log.info("sensor tray code:{}", trayCode); trayCode = "扫码枪识别异常";
if ("".equals(wmsTrayCode)) { trayCheck = Boolean.FALSE;
//托盘码为空,无货物 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 = wmsTrayCode.equals(trayCode);
trayCode = "识别异常";
trayCheck = Boolean.FALSE;
log.warn("sick ocr error:{}", trayCode);
} else {
trayCheck = wmsTrayCode.equals(trayCode);
}
} }
} }
}
// RFID
// RFID rfid = rfidService.getRFIDByPlc(street.getId(),plcCmdInfo.getLeftRight1());
} else if (configProperties.getScanCodeMode().getTray() == 3 ) {
// //RFID
// RFID rfid = rfidService.getRFIDByPlc(street.getId(),plcCmdInfo.getLeftRight1());
trayCode = "识别异常"; Boolean trayRFIDCheck = Boolean.FALSE;
trayCheck = 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(tags.containsAll(wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum()))) { 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 (tags.containsAll(wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum()))) {
trayCode = "盘点正常";
trayCheck = Boolean.TRUE;
}else {
trayCode = "盘点失败"; trayRFIDCheck = Boolean.TRUE;
trayCheck = Boolean.FALSE; } else {
} if(trayCheck){
wmsTrayCodeMapByTask.remove(plcCmdInfo.getOrderNum()); trayCode = "RFID扫描失败";
RFID rfid = rfidMapper.selectOne(new QueryWrapper<RFID>().eq("street_id", street.getId())); }else
if(! rfidLiveService.getRfidLive(plcCmdInfo,street,wmsTrayCode)){ trayCode += ";RFID扫描失败";
rfidLiveService.rfidRemoveLive(plcCmdInfo,street,rfid); trayRFIDCheck = Boolean.FALSE;
}
rfidLiveService.rfidSave(plcCmdInfo, String.join(",", tags),street,rfid);
} }
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);
} }
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;
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); log.info("code:{}", scanCode);
//核对异常 //核对异常
Integer status = 1; Integer status = 1;
//托盘和货物都正确 //托盘和货物都正确
if (trayCheck && codeCheck) { if (trayCheck && trayRFIDCheck ) {
status = 2; status = 2;
} }
if (stock == null) { if (stock == null) {
@ -818,7 +791,7 @@ public class PlcService {
.type("InventoryPush") .type("InventoryPush")
.build(); .build();
try { try {
WebSocketServer.sendInfo(JSONObject.toJSONString(webSocketVo),""); WebSocketServer.sendInfo(JSONObject.toJSONString(webSocketVo), "");
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
@ -826,7 +799,6 @@ public class PlcService {
} }
public void checkLog(Stock stock) { public void checkLog(Stock stock) {
CheckLog checkLog = new CheckLog(); CheckLog checkLog = new CheckLog();
checkLog.setCheckNum(stock.getCheckNum()); checkLog.setCheckNum(stock.getCheckNum());
@ -852,8 +824,9 @@ public class PlcService {
/** /**
* rfid * rfid
*
* @param plcCmdInfo * @param plcCmdInfo
* @param fromOrTo * @param fromOrTo
*/ */
public void RFIDCheck(PlcCmdInfo plcCmdInfo, boolean fromOrTo) { public void RFIDCheck(PlcCmdInfo plcCmdInfo, boolean fromOrTo) {
log.info("开启rfid"); log.info("开启rfid");
@ -864,7 +837,7 @@ public class PlcService {
if (rfid != null) { if (rfid != null) {
if (fromOrTo) { if (fromOrTo) {
RFIDStart(rfid.getIp(), rfid.getPort(), street.getId(), plcCmdInfo.getFromDirection()); RFIDStart(rfid.getIp(), rfid.getPort(), street.getId(), plcCmdInfo.getFromDirection());
}else } else
RFIDStart(rfid.getIp(), rfid.getPort(), street.getId(), plcCmdInfo.getToDirection()); RFIDStart(rfid.getIp(), rfid.getPort(), street.getId(), plcCmdInfo.getToDirection());
} }
} }
@ -872,8 +845,8 @@ public class PlcService {
public void RFIDStart(String ip, Integer port, Integer streetId, Integer direction) { public void RFIDStart(String ip, Integer port, Integer streetId, Integer direction) {
RFIDSocket rfidSocket = new RFIDSocket(ip, port); RFIDSocket rfidSocket = new RFIDSocket(ip, port);
log.info("rfid调用ip"+ip+";port:"+port); log.info("rfid调用ip" + ip + ";port:" + port);
rfidSocket.startCheck(direction,true); rfidSocket.startCheck(direction, true);
RFIDMap.put(streetId, rfidSocket); RFIDMap.put(streetId, rfidSocket);
} }

@ -71,7 +71,6 @@ public class RfidLiveServiceImpl extends ServiceImpl<RfidLiveMapper, RfidLive> i
public void rfidRemoveLive(PlcCmdInfo plcCmdInfo, Street street, RFID rfid) { public void rfidRemoveLive(PlcCmdInfo plcCmdInfo, Street street, RFID rfid) {
RfidLog rfidLog = new RfidLog();
remove(new QueryWrapper<RfidLive>() remove(new QueryWrapper<RfidLive>()
.eq("street_Id", street.getId()) .eq("street_Id", street.getId())
.eq("direction", plcCmdInfo.getFromDirection()) .eq("direction", plcCmdInfo.getFromDirection())

Loading…
Cancel
Save