|
|
|
|
@ -90,35 +90,7 @@ public class PlcService {
|
|
|
|
|
* @param plcCmdInfo
|
|
|
|
|
*/
|
|
|
|
|
public void orderStart(PlcCmdInfo plcCmdInfo) {
|
|
|
|
|
Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId());
|
|
|
|
|
|
|
|
|
|
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.setOrderNum(plcCmdInfo.getOrderNum());
|
|
|
|
|
order.setStatus(0);
|
|
|
|
|
order.setStartTime(LocalDateTime.now());
|
|
|
|
|
order.setStreetId(street.getId());
|
|
|
|
|
order.setInOut1(plcCmdInfo.getSide1());
|
|
|
|
|
order.setLeftRight1(plcCmdInfo.getLeftRight1());
|
|
|
|
|
order.setColumn1(plcCmdInfo.getColumn1());
|
|
|
|
|
order.setRow1(plcCmdInfo.getRow1());
|
|
|
|
|
//todo 昆船的项目 ,取货 放货是独立的
|
|
|
|
|
//取货是是不知道放货的位置的,所以订单开始的时候只写1位置
|
|
|
|
|
//订单结束写2位置
|
|
|
|
|
orderMapper.insert(order);
|
|
|
|
|
OrderRealtime.startOrder(street.getId(), plcCmdInfo.getOrderNum());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
@ -129,54 +101,11 @@ public class PlcService {
|
|
|
|
|
* @param plcCmdInfo
|
|
|
|
|
*/
|
|
|
|
|
public void orderStop(PlcCmdInfo plcCmdInfo) {
|
|
|
|
|
LocalDateTime endTime = LocalDateTime.now();
|
|
|
|
|
Street street = streetMapper.getStreetByPlcId(plcCmdInfo.getPlcId());
|
|
|
|
|
if (street == null) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
Order order = orderMapper.getOneByOrderNum(plcCmdInfo.getOrderNum());
|
|
|
|
|
if (order == null) {
|
|
|
|
|
log.error("订单结束信号,订单不存在,orderNum:{}", plcCmdInfo.getOrderNum());
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
OrderRealtime.stopOrder(street.getId());
|
|
|
|
|
Order update = new Order();
|
|
|
|
|
update.setId(order.getId());
|
|
|
|
|
update.setEndTime(endTime);
|
|
|
|
|
update.setInOut2(plcCmdInfo.getSide2());
|
|
|
|
|
update.setLeftRight2(plcCmdInfo.getLeftRight2());
|
|
|
|
|
update.setColumn2(plcCmdInfo.getColumn2());
|
|
|
|
|
update.setRow2(plcCmdInfo.getRow2());
|
|
|
|
|
LocalDateTime endDownLoadTime = endTime.plusSeconds(5);
|
|
|
|
|
Duration duration = Duration.between(order.getStartTime(),endDownLoadTime);
|
|
|
|
|
|
|
|
|
|
if(duration.toMinutes() > 50){
|
|
|
|
|
endDownLoadTime = order.getStartTime().plusMinutes(50);
|
|
|
|
|
}
|
|
|
|
|
if (street.getCamera1Id() != null) {
|
|
|
|
|
String path = cameraVideo(street.getCamera1Id(),order.getStartTime(),endDownLoadTime);
|
|
|
|
|
update.setVideoPath1(path);
|
|
|
|
|
}
|
|
|
|
|
if (street.getCamera2Id() != null) {
|
|
|
|
|
String path = cameraVideo(street.getCamera2Id(),order.getStartTime(),endDownLoadTime);
|
|
|
|
|
update.setVideoPath2(path);
|
|
|
|
|
}
|
|
|
|
|
orderMapper.updateById(update);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void orderStopByWarn(String orderNum) {
|
|
|
|
|
Order order = orderMapper.getOneByOrderNum(orderNum);
|
|
|
|
|
if (order == null) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
Order upd = new Order();
|
|
|
|
|
upd.setId(order.getId());
|
|
|
|
|
upd.setEndTime(LocalDateTime.now());
|
|
|
|
|
//warn flag
|
|
|
|
|
//default 0 : normal
|
|
|
|
|
upd.setStatus(1);
|
|
|
|
|
orderMapper.updateById(upd);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public String cameraVideo(Integer cameraId, LocalDateTime startTime, LocalDateTime endTime) {
|
|
|
|
|
@ -446,57 +375,7 @@ public class PlcService {
|
|
|
|
|
* @param path
|
|
|
|
|
*/
|
|
|
|
|
public void captureUpdateOrderAndStock(OrderInfo orderInfo, String path) {
|
|
|
|
|
synchronized (orderInfo.getOrderNum().intern()) {
|
|
|
|
|
Order order = orderMapper.getOneByOrderNum(orderInfo.getOrderNum());
|
|
|
|
|
if (order != null) {
|
|
|
|
|
//update picPath in stock if code is C2/C4
|
|
|
|
|
if(orderInfo.getCode().startsWith("C2") || orderInfo.getCode().startsWith("C4")){
|
|
|
|
|
StockLog stockLog = new StockLog();
|
|
|
|
|
stockLog.setStreetId(orderInfo.getStreetId());
|
|
|
|
|
stockLog.setDirection(orderInfo.getLeftRight());
|
|
|
|
|
stockLog.setSide(orderInfo.getSeparation());
|
|
|
|
|
stockLog.setRow(orderInfo.getRow());
|
|
|
|
|
stockLog.setColumn(orderInfo.getColumn());
|
|
|
|
|
stockLog.setPic(path);
|
|
|
|
|
String type = orderInfo.getCode().substring(1,2);
|
|
|
|
|
stockLog.setType(Integer.valueOf(type));
|
|
|
|
|
stockLog.setOrderNum(orderInfo.getOrderNum());
|
|
|
|
|
stockLog.setCreateTime(LocalDateTime.now());
|
|
|
|
|
stockLogMapper.insert(stockLog);
|
|
|
|
|
// Stock stock = stockMapper.getByShelveIdAndRowColumn(orderInfo.getShelveId(), orderInfo.getRow(), orderInfo.getColumn());
|
|
|
|
|
// if (stock == null) {
|
|
|
|
|
// stock = new Stock();
|
|
|
|
|
// stock.setShelveId(orderInfo.getShelveId());
|
|
|
|
|
// stock.setColumn(orderInfo.getColumn());
|
|
|
|
|
// stock.setRow(orderInfo.getRow());
|
|
|
|
|
// //stock.setStatus(0);
|
|
|
|
|
// //if the stock is null,take over path only
|
|
|
|
|
// stock.setOveroperationPic(path);
|
|
|
|
|
// stock.setOrderNum(order.getOrderNum());
|
|
|
|
|
// stockMapper.insert(stock);
|
|
|
|
|
// } else {
|
|
|
|
|
// //take the previous picture path to the lasted over picture path
|
|
|
|
|
// //take the lasted picture path to the new one
|
|
|
|
|
// stock.setPreoperationPic(stock.getOveroperationPic());
|
|
|
|
|
// stock.setOveroperationPic(path);
|
|
|
|
|
// stock.setOrderNum(order.getOrderNum());
|
|
|
|
|
// //stock.setStatus(0);
|
|
|
|
|
// stockMapper.updateById(stock);
|
|
|
|
|
// }
|
|
|
|
|
}
|
|
|
|
|
String pics = order.getPicPaths();
|
|
|
|
|
if (StringUtils.isEmpty(pics)) {
|
|
|
|
|
order.setPicPaths(path);
|
|
|
|
|
} else {
|
|
|
|
|
order.setPicPaths(pics + "," + path);
|
|
|
|
|
}
|
|
|
|
|
Order update = new Order();
|
|
|
|
|
update.setId(order.getId());
|
|
|
|
|
update.setPicPaths(order.getPicPaths());
|
|
|
|
|
log.debug(" update order set pics:{},orderNum:{}", update.getPicPaths(), orderInfo.getOrderNum());
|
|
|
|
|
orderMapper.updateById(update);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public Integer getCameraByPlcCmd(PlcCmdInfo plcCmdInfo,Integer leftRight){
|
|
|
|
|
@ -626,7 +505,7 @@ public class PlcService {
|
|
|
|
|
* @param PTZCode
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
public String IntoStock(String SRMNumber,String PTZCode,Integer row,Integer column){
|
|
|
|
|
public String IntoStock(String SRMNumber,String PTZCode,String taskId,String goodsLocation){
|
|
|
|
|
Street street = streetService.getStreetByPlcId(SRMNumber);
|
|
|
|
|
//南京烟草物流只有一个相机
|
|
|
|
|
Integer cameraId = street.getCamera1Id() == null ? street.getCamera2Id():street.getCamera1Id();
|
|
|
|
|
@ -638,7 +517,54 @@ public class PlcService {
|
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
Integer row = Integer.valueOf(goodsLocation.substring(3,7));
|
|
|
|
|
Integer column = Integer.valueOf(goodsLocation.substring(7));
|
|
|
|
|
Integer leftRight = goodsLocation.substring(0,1).equals("L")?1:2;
|
|
|
|
|
Integer inout = Integer.valueOf(goodsLocation.substring(1,3));
|
|
|
|
|
String path = PathUtil.createFileNameByRowColumn("jpg",cameraId,row,column);
|
|
|
|
|
Order order = new Order();
|
|
|
|
|
order.setStreetId(street.getId());
|
|
|
|
|
order.setOrderNum(taskId);
|
|
|
|
|
order.setLeftRight1(leftRight);
|
|
|
|
|
order.setInOut1(inout);
|
|
|
|
|
order.setIntoStockPic(path);
|
|
|
|
|
order.setIntoStockTime(LocalDateTime.now());
|
|
|
|
|
orderMapper.insert(order);
|
|
|
|
|
cameraCapture(cameraId,false,0l,path);
|
|
|
|
|
return configProperties.getIP()+":9007/"+path;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 相机转动,拍照,并返回图片地址
|
|
|
|
|
* @param SRMNumber
|
|
|
|
|
* @param PTZCode
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
public String IntoStockOver(String SRMNumber,String PTZCode,String taskId,String goodsLocation){
|
|
|
|
|
Street street = streetService.getStreetByPlcId(SRMNumber);
|
|
|
|
|
//南京烟草物流只有一个相机
|
|
|
|
|
Integer cameraId = street.getCamera1Id() == null ? street.getCamera2Id():street.getCamera1Id();
|
|
|
|
|
//转动拍照
|
|
|
|
|
gyrateCameraByCode(cameraId,PTZCode);
|
|
|
|
|
//等待2s再拍照
|
|
|
|
|
try {
|
|
|
|
|
Thread.sleep(2000l);
|
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
Integer row = Integer.valueOf(goodsLocation.substring(3,7));
|
|
|
|
|
Integer column = Integer.valueOf(goodsLocation.substring(7));
|
|
|
|
|
Integer leftRight = goodsLocation.substring(0,1).equals("L")?1:2;
|
|
|
|
|
Integer inout = Integer.valueOf(goodsLocation.substring(1,3));
|
|
|
|
|
String path = PathUtil.createFileNameByRowColumn("jpg",cameraId,row,column);
|
|
|
|
|
Order order = orderMapper.getOneByOrderNum(taskId);
|
|
|
|
|
if(order != null){
|
|
|
|
|
Order upd = new Order();
|
|
|
|
|
upd.setId(order.getId());
|
|
|
|
|
upd.setIntoStockOverPic(path);
|
|
|
|
|
upd.setIntoStockOverTime(LocalDateTime.now());
|
|
|
|
|
orderMapper.updateById(upd);
|
|
|
|
|
}
|
|
|
|
|
cameraCapture(cameraId,false,0l,path);
|
|
|
|
|
return configProperties.getIP()+":9007/"+path;
|
|
|
|
|
}
|
|
|
|
|
|