改为只有rfid

赣州-jastRFID
LAPTOP-S9HJSOEB\昊天 1 year ago
parent 47ce47146b
commit 70b82fff55

@ -638,81 +638,14 @@ public class PlcService {
HikControlSocket.openLight(lightSource.getIp(), lightSource.getPort(), configProperties.getLightSource().getIndex(), 1);
});*/
log.info("盘点摄像头变化参数:" + plcCmdInfo.toString());
Integer cameraId = getCameraByPlcCmdE(plcCmdInfo, plcCmdInfo.getLeftRight1());
if (plcCmdInfo.getSeparation1() == 1 && configProperties.getScanCodeMode().getTray() == 2) {
//内测
String c = cmdCode + "-" + plcCmdInfo.getLeftRightStr(1) + "-IN";
log.info("camera ptz" + c);
gyrateCameraByCode(cameraId, c);
} else {
String c = cmdCode + "1";
gyrateCameraByCode(cameraId, c);
try {
Thread.sleep(configProperties.getCameraConfig().getDelayCaptureTime());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
String path = PathUtil.createFileNameByRowColumn("jpg", cameraId, plcCmdInfo.getRow1(), plcCmdInfo.getColumn1());
try {
cameraCapture(cameraId, false, null, path);
} catch (NullPointerException e) {
log.error("相机{}未连接无法拍照", cameraId);
}
//托盘码
String trayCode = null;
Boolean trayCheck = Boolean.FALSE;
//如果是用扫码枪 扫 托盘码,就直接扫
//if(configProperties.getScanCodeMode().getTray() == 2){
log.info("扫码类型:" + configProperties.getScanCodeMode().getTray());
//托盘使用sick扫码枪
// SensorGun sensorGun = sensorService.getSensorByPlc(street.getId(), plcCmdInfo.getLeftRight1());
SensorGun sensorGun = sensorService.getSensorByPlc(street.getId(), plcCmdInfo.getLeftRight1());
Future<String> sickFuture = executor.submit(() -> {
long startsickTime = System.currentTimeMillis();
String code = "";
if (sensorGun == null) {
code = "扫码枪未配置";
log.error("no sensor gun config in database ,street id:{},direction:{}", street.getId(), plcCmdInfo.getLeftRight1());
} else {
try {
code = SickSocket.readOCR(sensorGun.getIp(), sensorGun.getPort(), configProperties.getScanCodeMode().getSickScanTime());
} catch (Exception e) {
}
log.info("sensor tray code:{}", code);
if ("".equals(wmsTrayCode)) {
//托盘码为空,无货物
//只要扫码枪未识别出条码,即认为盘点正确
if (StringUtils.isEmpty(code) || code.equals("NoRead")) {
code = "";
} else {
code = "扫码枪识别异常";
log.warn("sick ocr error:{}", code);
}
} else {
if (StringUtils.isEmpty(code) || code.equals("NoRead")) {
code = "扫码枪识别异常";
log.warn("sick ocr error:{}", code);
} else {
log.info("sick ocr:{}", code);
//扫到就认为正常
code = "";
}
}
}
long endsickTime = System.currentTimeMillis();
log.info("sick time:{}millisecond", startsickTime - endsickTime);
return code;
});
// RFID
// RFID rfid = rfidService.getRFIDByPlc(street.getId(),plcCmdInfo.getLeftRight1());
@ -720,10 +653,10 @@ public class PlcService {
Boolean trayRFIDCheck = Boolean.FALSE;
Future<String> rfidFuture = executor.submit(() -> {
Future<Boolean> rfidFuture = executor.submit(() -> {
long startRfidTime = System.currentTimeMillis();
String code = "";
Boolean flag = Boolean.FALSE;;
Set<String> tags = new HashSet<>();
try {
@ -736,26 +669,14 @@ public class PlcService {
log.info("盘点rfid扫描结果" + tags);
}
if (tags != null && tags.size() > 0) {
if (wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum()) != null
&& tags.containsAll(wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum()))) {
if ( wmsTrayCode != null
&& tags.contains(wmsTrayCode)) {
log.info("扫描成功");
flag = Boolean.TRUE;
} else {
if (wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum()) != null) {
wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum()).removeAll(tags);
log.info("未扫到数据为:{}", wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum()));
for (String str : wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum())) {
if (str.length() == 14) {
code = "RFID扫描失败";
log.info("未扫描到箱体" + str);
}
}
if (wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum()).size() > configProperties.getRfid().getGraceNumber()) {
code = "RFID扫描失败";
}
}
flag = Boolean.FALSE;;
}
RFID rfid = rfidMapper.selectOne(new QueryWrapper<RFID>().eq("street_id", street.getId()));
if (!rfidLiveService.getRfidLive(plcCmdInfo, street, wmsTrayCode)) {
@ -767,29 +688,17 @@ public class PlcService {
long endRfidTime = System.currentTimeMillis();
log.info("rfid time:{}millisecond", startRfidTime - endRfidTime);
return code;
return flag;
});
try {
String sickCode = sickFuture.get(); // get()会阻塞直到结果可用
String rfid = rfidFuture.get(); // get()会阻塞直到结果可用
log.info("sickCode:{}", sickCode);
// String sickCode = sickFuture.get(); // get()会阻塞直到结果可用
Boolean rfid = rfidFuture.get(); // get()会阻塞直到结果可用
log.info("rfid:{}", rfid);
trayCode = sickCode;
if (sickCode != null && !"".equals(sickCode)) {
trayCode = trayCode + ";";
} else {
trayCheck = Boolean.TRUE;
}
trayRFIDCheck = rfid;
if (rfid == null || "".equals(rfid)) {
trayRFIDCheck = Boolean.TRUE;
}
trayCode += rfid;
if ("".equals(trayCode)) {
trayCode = "盘点正确";
}
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
@ -803,8 +712,11 @@ public class PlcService {
//核对异常
Integer status = 1;
//托盘和货物都正确
if (trayCheck && trayRFIDCheck) {
if ( trayRFIDCheck) {
status = 2;
trayCode=wmsTrayCode;
}else {
trayCode="盘点失败";
}
if (stock == null) {
stock = Stock.builder()
@ -820,14 +732,12 @@ public class PlcService {
.row(orderInfo.getRow())
.column(orderInfo.getColumn())
.status(status)
.checkPic(path)
.exportTime(LocalDateTime.now()).build();
stockMapper.insert(stock);
} else {
stock.setStatus(status);
stock.setLotnum(plcCmdInfo.getLotnum());
stock.setExportTime(LocalDateTime.now());
stock.setCheckPic(path);
stock.setCheckNum(plcCmdInfo.getOrderNum());
stock.setTrayCode(trayCode);
stock.setWmsTrayCode(wmsTrayCode);
@ -839,7 +749,6 @@ public class PlcService {
// StockCheckRunnable stockCheckRunnable = new StockCheckRunnable(street,plcCmdInfo,cmdCode,stockMapper,path,checkLogMapper,configProperties.getScanCodeMode().getGoods(),wmsCode,wmsTrayCode,trayCode,trayCheck,configProperties,sensorGun);
// threadPoolExecutor.execute(stockCheckRunnable);
//还原相机
gyrateCameraByCode(cameraId, "C5");
long end = System.currentTimeMillis();
long s = end - startTime;
log.info("time:{}millisecond", s);
@ -904,7 +813,7 @@ public class PlcService {
public void RFIDStart(String ip, Integer port, Integer streetId, Integer direction) {
RFIDSocket rfidSocket = new RFIDSocket(ip, port);
log.info("rfid调用ip" + ip + ";port:" + port);
rfidSocket.startCheck(direction, true);
rfidSocket.startCheck(direction, false);
RFIDMap.put(streetId, rfidSocket);
}

@ -57,6 +57,11 @@ public class RFIDSocket {
}
/**
*
* @param direction
* @param foreach 线
*/
public void startCheck(Integer direction,boolean foreach) {
// Reader mReader = ReaderImpl.create(AntennaCount.SIXTEEN_CHANNELS);
// Reader mReader = ReaderImpl.create(AntennaCount.EIGHT_CHANNELS);
@ -86,13 +91,7 @@ public class RFIDSocket {
public void accept(InventoryTag tag) throws Exception {
System.out.println("reader1 inventory tag :" + tag.getEpc());
String tagStr = tag.getEpc().replace(" ","");
System.out.println("tag: " + tag.getEpc());
// 去除头为0
tagStr = tagStr.replace("0000000000","");
//去除尾巴为0
if(tagStr.startsWith("363000") &&tagStr.endsWith("00")){
tagStr = tagStr.substring(0, tagStr.length() - 2);
}
tagStr = tagStr.substring(tagStr.length() - 8);
tags.add(tagStr);
if (ToolUtil.isNotEmpty(tagsCount.get(tagStr))) {
tagsCount.put(tagStr, tagsCount.get(tagStr) + 1);

@ -120,8 +120,8 @@ public class RFIDSocketOld {
((RFIDReaderHelper) mReaderHelper).setWorkAntenna((byte) 0xFF, (byte) 0x01);
}
//开始盘存180006B
//((RFIDReaderHelper) mReaderHelper).iso180006BInventory((byte) 0xFF);
((RFIDReaderHelper) mReaderHelper).inventory((byte) 0xFF, (byte) 0x0A);
((RFIDReaderHelper) mReaderHelper).iso180006BInventory((byte) 0xFF);
//((RFIDReaderHelper) mReaderHelper).inventory((byte) 0xFF, (byte) 0x0A);
// i++;
Thread.sleep(70);
}

Loading…
Cancel
Save