|
|
|
@ -1,7 +1,9 @@
|
|
|
|
package com.zhehekeji.web.service;
|
|
|
|
package com.zhehekeji.web.service;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import com.aijiao.test.JNIDemo;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
import com.zhehekeji.common.util.PathUtil;
|
|
|
|
import com.zhehekeji.common.util.PathUtil;
|
|
|
|
|
|
|
|
import com.zhehekeji.core.util.Assert;
|
|
|
|
import com.zhehekeji.web.config.ConfigProperties;
|
|
|
|
import com.zhehekeji.web.config.ConfigProperties;
|
|
|
|
import com.zhehekeji.web.entity.*;
|
|
|
|
import com.zhehekeji.web.entity.*;
|
|
|
|
import com.zhehekeji.web.lib.*;
|
|
|
|
import com.zhehekeji.web.lib.*;
|
|
|
|
@ -54,6 +56,8 @@ public class PlcService {
|
|
|
|
|
|
|
|
|
|
|
|
private CameraControlModule cameraControlModule;
|
|
|
|
private CameraControlModule cameraControlModule;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static JNIDemo barCodeScan = new JNIDemo();
|
|
|
|
|
|
|
|
|
|
|
|
public void setCameraControlModule(CameraControlModule cameraControlModule){
|
|
|
|
public void setCameraControlModule(CameraControlModule cameraControlModule){
|
|
|
|
this.cameraControlModule = cameraControlModule;
|
|
|
|
this.cameraControlModule = cameraControlModule;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -80,7 +84,19 @@ public class PlcService {
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public void orderStart(PlcCmdInfo plcCmdInfo) {
|
|
|
|
public void orderStart(PlcCmdInfo plcCmdInfo) {
|
|
|
|
Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId());
|
|
|
|
Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId());
|
|
|
|
|
|
|
|
|
|
|
|
if (street != null) {
|
|
|
|
if (street != null) {
|
|
|
|
|
|
|
|
if(plcCmdInfo.getLeftRight1() == 1){
|
|
|
|
|
|
|
|
if(plcCmdInfo.getRow1()>street.getLeftRow() && plcCmdInfo.getColumn1() > street.getLeftColumn()){
|
|
|
|
|
|
|
|
log.error("row:{},column:{},error in streetId:{} left",plcCmdInfo.getRow1(),plcCmdInfo.getColumn1(),street.getId());
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}else {
|
|
|
|
|
|
|
|
if(plcCmdInfo.getRow1()>street.getRightRow() && plcCmdInfo.getColumn1() > street.getRightColumn()){
|
|
|
|
|
|
|
|
log.error("row:{},column:{},error in streetId:{} right",plcCmdInfo.getRow1(),plcCmdInfo.getColumn1(),street.getId());
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
Order order = new Order();
|
|
|
|
Order order = new Order();
|
|
|
|
order.setOrderNum(plcCmdInfo.getOrderNum());
|
|
|
|
order.setOrderNum(plcCmdInfo.getOrderNum());
|
|
|
|
order.setStatus(0);
|
|
|
|
order.setStatus(0);
|
|
|
|
@ -186,21 +202,8 @@ public class PlcService {
|
|
|
|
* 右侧转camera2
|
|
|
|
* 右侧转camera2
|
|
|
|
* 没有就不管了
|
|
|
|
* 没有就不管了
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
if (street.getCamera1Id() != null && street.getCamera2Id() != null && street.getCamera1Id() != 0 && street.getCamera2Id() != 0) {
|
|
|
|
Integer cameraId = getCameraByPlcCmd(plcCmdInfo,orderInfo.getLeftRight());
|
|
|
|
if (orderInfo.getLeftRight() == 1) {
|
|
|
|
gyrateCameraByCode(cameraId,code);
|
|
|
|
gyrateCameraByCode(street.getCamera1Id(), code);
|
|
|
|
|
|
|
|
if (needCapture) {
|
|
|
|
|
|
|
|
if(code.startsWith("C1") || code.startsWith("C3")){
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
Thread.sleep(1200);
|
|
|
|
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
path = cameraCapture(street.getCamera1Id());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
gyrateCameraByCode(street.getCamera2Id(), code);
|
|
|
|
|
|
|
|
if(needCapture){
|
|
|
|
if(needCapture){
|
|
|
|
if(code.startsWith("C1") || code.startsWith("C3")){
|
|
|
|
if(code.startsWith("C1") || code.startsWith("C3")){
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
@ -209,22 +212,13 @@ public class PlcService {
|
|
|
|
e.printStackTrace();
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
path = cameraCapture(street.getCamera2Id());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
Integer cameraId = street.getCamera1Id() != null && street.getCamera1Id() != 0 ? street.getCamera1Id() : street.getCamera2Id();
|
|
|
|
|
|
|
|
if (cameraId != null && cameraId != 0) {
|
|
|
|
|
|
|
|
gyrateCameraByCode(cameraId, code);
|
|
|
|
|
|
|
|
if (needCapture) {
|
|
|
|
|
|
|
|
path = cameraCapture(cameraId);
|
|
|
|
path = cameraCapture(cameraId);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//update order info after capture
|
|
|
|
//update order info after capture
|
|
|
|
if (path != null && needCapture) {
|
|
|
|
if (path != null && needCapture) {
|
|
|
|
captureUpdateOrderAndStock(orderInfo, path);
|
|
|
|
captureUpdateOrderAndStock(orderInfo, path);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//转向原点位
|
|
|
|
if(times == 2){
|
|
|
|
if(times == 2){
|
|
|
|
if(street.getCamera2Id() != null){
|
|
|
|
if(street.getCamera2Id() != null){
|
|
|
|
gyrateCameraByCode(street.getCamera2Id(),"C5");
|
|
|
|
gyrateCameraByCode(street.getCamera2Id(),"C5");
|
|
|
|
@ -232,7 +226,6 @@ public class PlcService {
|
|
|
|
if(street.getCamera1Id() != null){
|
|
|
|
if(street.getCamera1Id() != null){
|
|
|
|
gyrateCameraByCode(street.getCamera1Id(),"C5");
|
|
|
|
gyrateCameraByCode(street.getCamera1Id(),"C5");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -432,78 +425,73 @@ public class PlcService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public Integer getCameraByPlcCmd(PlcCmdInfo plcCmdInfo,Integer leftRight){
|
|
|
|
// /**
|
|
|
|
|
|
|
|
// * 执行动作 旋转360,然后执行C8动作
|
|
|
|
|
|
|
|
// *
|
|
|
|
|
|
|
|
// * @param plcId
|
|
|
|
|
|
|
|
// * @Param ptzId 旋转360之后,再转到这个预置点
|
|
|
|
|
|
|
|
// */
|
|
|
|
|
|
|
|
// public void turn360AndC8(String plcId) {
|
|
|
|
|
|
|
|
// Street street = streetMapper.getStreetByPlcId(plcId);
|
|
|
|
|
|
|
|
// if (street == null) {
|
|
|
|
|
|
|
|
// return;
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// if (street.getCamera1Id() != null) {
|
|
|
|
|
|
|
|
// List<CameraIO> ioConfigs = ioMapper.selectList(new QueryWrapper<CameraIO>().eq("code", "C8").eq("camera_id", street.getCamera1Id()));
|
|
|
|
|
|
|
|
// Integer ptzId = null;
|
|
|
|
|
|
|
|
// if (ioConfigs.size() > 0) {
|
|
|
|
|
|
|
|
// ptzId = ioConfigs.get(0).getPtzId();
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// JoywarePtzControlModule.turn360C8(street.getCamera1Id(), ptzId);
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// if (street.getCamera2Id() != null) {
|
|
|
|
|
|
|
|
// List<CameraIO> ioConfigs = ioMapper.selectList(new QueryWrapper<CameraIO>().eq("code", "C8").eq("camera_id", street.getCamera2Id()));
|
|
|
|
|
|
|
|
// Integer ptzId = null;
|
|
|
|
|
|
|
|
// if (ioConfigs.size() > 0) {
|
|
|
|
|
|
|
|
// ptzId = ioConfigs.get(0).getPtzId();
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// JoywarePtzControlModule.turn360C8(street.getCamera2Id(), ptzId);
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 从货架 行列找到 前后前后两个照片
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param plcCmdInfo
|
|
|
|
|
|
|
|
* @param barCodeSys
|
|
|
|
|
|
|
|
* @param boxNumSys
|
|
|
|
|
|
|
|
* @param boxNumAlgo
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public void recordStock(PlcCmdInfo plcCmdInfo, String barCodeSys, int boxNumSys, int boxNumAlgo) {
|
|
|
|
|
|
|
|
Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId());
|
|
|
|
Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId());
|
|
|
|
if (street == null) {
|
|
|
|
if (street.getCamera1Id() != null && street.getCamera2Id() != null && street.getCamera1Id() != 0 && street.getCamera2Id() != 0) {
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//判断左右 行列号
|
|
|
|
|
|
|
|
Integer leftRight = plcCmdInfo.getLeftRight2();
|
|
|
|
|
|
|
|
String shelveId;
|
|
|
|
|
|
|
|
if (leftRight == 1) {
|
|
|
|
if (leftRight == 1) {
|
|
|
|
shelveId = street.getLeftShelveId();
|
|
|
|
return street.getCamera1Id();
|
|
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
shelveId = street.getRightShelveId();
|
|
|
|
return street.getCamera2Id();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
Stock stock = stockMapper.getByShelveIdAndRowColumn(shelveId, plcCmdInfo.getRow2(), plcCmdInfo.getColumn2());
|
|
|
|
|
|
|
|
if (stock != null) {
|
|
|
|
|
|
|
|
stock.setCategory(barCodeSys);
|
|
|
|
|
|
|
|
stock.setCount(boxNumSys);
|
|
|
|
|
|
|
|
String prevFile = configProperties.getSavePath().getMediaPath() + stock.getPreoperationPic();
|
|
|
|
|
|
|
|
String overFile = configProperties.getSavePath().getMediaPath() + stock.getOveroperationPic();
|
|
|
|
|
|
|
|
String code = BarCodeScan.detectBestBarCode(overFile);
|
|
|
|
|
|
|
|
if (boxNumSys == boxNumAlgo && code.equals(barCodeSys)) {
|
|
|
|
|
|
|
|
stock.setStatus(StockStatus.SUCCESS.getStatus());
|
|
|
|
|
|
|
|
log.info("核对正确");
|
|
|
|
|
|
|
|
stockMapper.updateById(stock);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
log.info("核对失败");
|
|
|
|
Integer cameraId = street.getCamera1Id() != null && street.getCamera1Id() != 0 ? street.getCamera1Id() : street.getCamera2Id();
|
|
|
|
stock.setStatus(StockStatus.ERROR.getStatus());
|
|
|
|
return cameraId;
|
|
|
|
stockMapper.updateById(stock);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//核对记录 todo
|
|
|
|
|
|
|
|
// StockLog stockLog = new StockLog();
|
|
|
|
|
|
|
|
// stockLog.set
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void check(PlcCmdInfo plcCmdInfo,String cmdCode,String wmsCode){
|
|
|
|
|
|
|
|
Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId());
|
|
|
|
|
|
|
|
Integer cameraId = getCameraByPlcCmd(plcCmdInfo,1);
|
|
|
|
|
|
|
|
gyrateCameraByCode(cameraId, cmdCode);
|
|
|
|
|
|
|
|
//暂停2500ms再抓图
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
Thread.sleep(2000);
|
|
|
|
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
String path = cameraCapture(cameraId);
|
|
|
|
|
|
|
|
OrderInfo orderInfo = new OrderInfo(street,plcCmdInfo,1,cmdCode);
|
|
|
|
|
|
|
|
Stock stock = stockMapper.getByShelveIdAndRowColumn(orderInfo.getShelveId(),orderInfo.getRow(),orderInfo.getColumn());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
System.out.println(configProperties.getSavePath().getMediaPath()+path);
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
Thread.sleep(800);
|
|
|
|
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
String scanCode = barCodeScan.detectBestBarCode(configProperties.getSavePath().getMediaPath()+path);
|
|
|
|
|
|
|
|
if(StringUtils.isEmpty(scanCode)){
|
|
|
|
|
|
|
|
scanCode = "识别异常";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
System.out.println(scanCode);
|
|
|
|
|
|
|
|
//核对正确
|
|
|
|
|
|
|
|
Integer status = 2;
|
|
|
|
|
|
|
|
if(!wmsCode.equals(scanCode)){
|
|
|
|
|
|
|
|
status = 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if(stock == null){
|
|
|
|
|
|
|
|
stock = new Stock();
|
|
|
|
|
|
|
|
stock.setStatus(status);
|
|
|
|
|
|
|
|
stock.setCheckNum(plcCmdInfo.getOrderNum());
|
|
|
|
|
|
|
|
stock.setShelveId(orderInfo.getShelveId());
|
|
|
|
|
|
|
|
stock.setRow(orderInfo.getRow());
|
|
|
|
|
|
|
|
stock.setColumn(orderInfo.getColumn());
|
|
|
|
|
|
|
|
stock.setExportTime(LocalDateTime.now());
|
|
|
|
|
|
|
|
stock.setCheckPic(path);
|
|
|
|
|
|
|
|
stock.setCode(scanCode);
|
|
|
|
|
|
|
|
stock.setWmsCode(wmsCode);
|
|
|
|
|
|
|
|
stockMapper.insert(stock);
|
|
|
|
|
|
|
|
}else {
|
|
|
|
|
|
|
|
stock.setStatus(status);
|
|
|
|
|
|
|
|
stock.setExportTime(LocalDateTime.now());
|
|
|
|
|
|
|
|
stock.setCheckPic(path);
|
|
|
|
|
|
|
|
stock.setCheckNum(plcCmdInfo.getOrderNum());
|
|
|
|
|
|
|
|
stock.setCode(scanCode);
|
|
|
|
|
|
|
|
stock.setWmsCode(wmsCode);
|
|
|
|
|
|
|
|
stockMapper.updateById(stock);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|