|
|
|
|
@ -8,6 +8,7 @@ import com.zhehekeji.web.entity.*;
|
|
|
|
|
import com.zhehekeji.web.lib.*;
|
|
|
|
|
import com.zhehekeji.web.mapper.*;
|
|
|
|
|
import com.zhehekeji.web.pojo.OrderVO;
|
|
|
|
|
import com.zhehekeji.web.service.sick.SickSocket;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
@ -51,6 +52,8 @@ public class PlcService {
|
|
|
|
|
private CameraService cameraService;
|
|
|
|
|
|
|
|
|
|
private CameraControlModule cameraControlModule;
|
|
|
|
|
@Resource
|
|
|
|
|
private SensorService sensorService;
|
|
|
|
|
|
|
|
|
|
private static JNIDemo barCodeScan = new JNIDemo();
|
|
|
|
|
|
|
|
|
|
@ -439,21 +442,21 @@ public class PlcService {
|
|
|
|
|
|
|
|
|
|
public void kescTest6(PlcCmdInfo plcCmdInfo,String code,String wmsCode){
|
|
|
|
|
long startTime = System.currentTimeMillis();
|
|
|
|
|
log.info("test startTime",startTime);
|
|
|
|
|
check(plcCmdInfo,"C2-L",wmsCode);
|
|
|
|
|
plcCmdInfo.setColumn1(plcCmdInfo.getColumn1()+1);
|
|
|
|
|
check(plcCmdInfo,"C3-L",wmsCode);
|
|
|
|
|
plcCmdInfo.setColumn1(plcCmdInfo.getColumn1()+1);
|
|
|
|
|
check(plcCmdInfo,"C4-L",wmsCode);
|
|
|
|
|
plcCmdInfo.setColumn1(plcCmdInfo.getColumn1()+1);
|
|
|
|
|
check(plcCmdInfo,"C5",wmsCode);
|
|
|
|
|
plcCmdInfo.setColumn1(plcCmdInfo.getColumn1()+1);
|
|
|
|
|
check(plcCmdInfo,"E1",wmsCode);
|
|
|
|
|
long endTime = System.currentTimeMillis();
|
|
|
|
|
log.info("test endTime,time:{}millisecond",endTime,(endTime - startTime));
|
|
|
|
|
// log.info("test startTime",startTime);
|
|
|
|
|
// check(plcCmdInfo,"C2-L",wmsCode);
|
|
|
|
|
// plcCmdInfo.setColumn1(plcCmdInfo.getColumn1()+1);
|
|
|
|
|
// check(plcCmdInfo,"C3-L",wmsCode);
|
|
|
|
|
// plcCmdInfo.setColumn1(plcCmdInfo.getColumn1()+1);
|
|
|
|
|
// check(plcCmdInfo,"C4-L",wmsCode);
|
|
|
|
|
// plcCmdInfo.setColumn1(plcCmdInfo.getColumn1()+1);
|
|
|
|
|
// check(plcCmdInfo,"C5",wmsCode);
|
|
|
|
|
// plcCmdInfo.setColumn1(plcCmdInfo.getColumn1()+1);
|
|
|
|
|
// check(plcCmdInfo,"E1",wmsCode);
|
|
|
|
|
// long endTime = System.currentTimeMillis();
|
|
|
|
|
//log.info("test endTime:{},time:{}millisecond",endTime,(endTime - startTime));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void check(PlcCmdInfo plcCmdInfo,String cmdCode,String wmsCode){
|
|
|
|
|
public void check(PlcCmdInfo plcCmdInfo,String cmdCode,String wmsCode,String wmsTrayCode){
|
|
|
|
|
|
|
|
|
|
long startTime = System.currentTimeMillis();
|
|
|
|
|
Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId());
|
|
|
|
|
@ -468,15 +471,50 @@ public class PlcService {
|
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
String scanCode = barCodeScan.detectBestBarCode(configProperties.getSavePath().getMediaPath()+path);
|
|
|
|
|
if(StringUtils.isEmpty(scanCode) || scanCode.equals("Empty")){
|
|
|
|
|
scanCode = "识别异常";
|
|
|
|
|
log.warn("detectBestBarCode:{}",scanCode);
|
|
|
|
|
String scanCode = null;
|
|
|
|
|
String trayCode = null;
|
|
|
|
|
Boolean codeCheck = Boolean.TRUE;
|
|
|
|
|
//货物使用球机扫码
|
|
|
|
|
if(configProperties.getScanCodeMode().getGoods() == 1){
|
|
|
|
|
scanCode = barCodeScan.detectBestBarCode(configProperties.getSavePath().getMediaPath()+path);
|
|
|
|
|
if(StringUtils.isEmpty(scanCode) || scanCode.equals("Empty")){
|
|
|
|
|
scanCode = "识别异常";
|
|
|
|
|
codeCheck = Boolean.FALSE;
|
|
|
|
|
log.warn("detectBestBarCode:{}",scanCode);
|
|
|
|
|
}else {
|
|
|
|
|
codeCheck = wmsCode.equals(scanCode);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Boolean trayCheck = Boolean.TRUE;
|
|
|
|
|
if(configProperties.getScanCodeMode().getTray() == 2){
|
|
|
|
|
//托盘使用sick扫码枪
|
|
|
|
|
if(configProperties.getSensor().getType() == 1){
|
|
|
|
|
//todo 找到扫码枪地址
|
|
|
|
|
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());
|
|
|
|
|
if(StringUtils.isEmpty(trayCode) || trayCode.equals("NoRead")){
|
|
|
|
|
trayCode = "识别异常";
|
|
|
|
|
trayCheck = Boolean.FALSE;
|
|
|
|
|
log.warn("sick ocr error:{}",trayCode);
|
|
|
|
|
}else {
|
|
|
|
|
trayCheck = wmsTrayCode.equals(trayCode);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
log.info("code:{}",scanCode);
|
|
|
|
|
//核对正确
|
|
|
|
|
Integer status = 2;
|
|
|
|
|
if(!wmsCode.equals(scanCode)){
|
|
|
|
|
//托盘和货物都正确
|
|
|
|
|
if(!trayCheck || !codeCheck){
|
|
|
|
|
status = 1;
|
|
|
|
|
}
|
|
|
|
|
if(stock == null){
|
|
|
|
|
@ -488,6 +526,8 @@ public class PlcService {
|
|
|
|
|
stock.setColumn(orderInfo.getColumn());
|
|
|
|
|
stock.setExportTime(LocalDateTime.now());
|
|
|
|
|
stock.setCheckPic(path);
|
|
|
|
|
stock.setTrayCode(trayCode);
|
|
|
|
|
stock.setWmsTrayCode(wmsTrayCode);
|
|
|
|
|
stock.setCode(scanCode);
|
|
|
|
|
stock.setWmsCode(wmsCode);
|
|
|
|
|
stockMapper.insert(stock);
|
|
|
|
|
@ -496,6 +536,8 @@ public class PlcService {
|
|
|
|
|
stock.setExportTime(LocalDateTime.now());
|
|
|
|
|
stock.setCheckPic(path);
|
|
|
|
|
stock.setCheckNum(plcCmdInfo.getOrderNum());
|
|
|
|
|
stock.setTrayCode(trayCode);
|
|
|
|
|
stock.setWmsTrayCode(wmsTrayCode);
|
|
|
|
|
stock.setCode(scanCode);
|
|
|
|
|
stock.setWmsCode(wmsCode);
|
|
|
|
|
stockMapper.updateById(stock);
|
|
|
|
|
@ -516,8 +558,13 @@ public class PlcService {
|
|
|
|
|
checkLog.setPic(stock.getCheckPic());
|
|
|
|
|
checkLog.setShelveId(stock.getShelveId());
|
|
|
|
|
checkLog.setCode(stock.getCode());
|
|
|
|
|
checkLog.setWmsCode(stock.getWmsCode());
|
|
|
|
|
checkLog.setStatus(stock.getStatus());
|
|
|
|
|
checkLog.setRow(stock.getRow());
|
|
|
|
|
checkLog.setColumn(stock.getColumn());
|
|
|
|
|
checkLog.setCreateTime(LocalDateTime.now());
|
|
|
|
|
checkLog.setTrayCode(stock.getTrayCode());
|
|
|
|
|
checkLog.setWmsTrayCode(stock.getWmsTrayCode());
|
|
|
|
|
checkLogMapper.insert(checkLog);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|