1、蜜雪冰城拍摄货物顶部时用同侧球机

2、接收的指令里lotnum里面中文乱码时,用固定汉字去替换
chengdu-mxbc-qsl
QuShuailong 3 years ago
parent e1adc3a24b
commit c2845fe6c7

@ -334,6 +334,7 @@ public class PlcService {
TaskDelayExecutor.addPicDelayTask(cameraId,realPath,delayTime);
}else {
cameraControlModule.pic(cameraId,0,realPath);
log.info("cameraID: {} capture photo :{}", cameraId, path);
}
return path;
}
@ -561,13 +562,16 @@ public class PlcService {
});
Integer cameraId = getCameraByPlcCmd(plcCmdInfo,plcCmdInfo.getLeftRight1());
//蜜雪冰城拍摄货物顶部时用同侧相机
Integer leftRightTop = plcCmdInfo.getLeftRight1() == 1 ? 2 : 1;
Integer cameraIdTop = getCameraByPlcCmd(plcCmdInfo, leftRightTop);
if(plcCmdInfo.getSeparation1() == 1 && configProperties.getScanCodeMode().getTray() == 2){
//内测
String c = cmdCode + "-" + plcCmdInfo.getLeftRightStr(1) + "-IN";
log.info("camera ptz"+c);
gyrateCameraByCode(cameraId, c);
gyrateCameraByCode(cameraIdTop, c);
}else {
gyrateCameraByCode(cameraId, cmdCode);
gyrateCameraByCode(cameraIdTop, cmdCode);
try {
Thread.sleep(configProperties.getCameraConfig().getDelayCaptureTime());
} catch (InterruptedException e) {
@ -583,7 +587,7 @@ public class PlcService {
} catch (InterruptedException e) {
e.printStackTrace();
}
cameraCapture(cameraId,false,null,path);
cameraCapture(cameraIdTop,false,null,path);
//成都蜜雪冰城 只拍照人工核对
String e2 = "E2-" + plcCmdInfo.getLeftRightStr(1) + "-IN";
log.info("camera ptz"+e2);
@ -600,6 +604,7 @@ public class PlcService {
if(stock == null){
stock = new Stock(null,null,plcCmdInfo.getOrderNum(),plcCmdInfo.getLotnum(),"", null,null,wmsCode,wmsCatagary,null,wmsTrayCode,"",orderInfo.getStreetId(),orderInfo.getLeftRight(),orderInfo.getSeparation(),orderInfo.getRow(),orderInfo.getColumn(),0,null,null,path, LocalDateTime.now());
stockMapper.insert(stock);
log.info("stockmapper insert new stock info.");
}else {
//stock.setStatus(status);
//stock.setLotnum(plcCmdInfo.getLotnum());
@ -614,6 +619,7 @@ public class PlcService {
//stock.setCode(scanCode);
stock.setWmsCode(wmsCode);
stockMapper.updateById(stock);
log.info("stockmapper update stock info.");
}
checkLog(stock);
// StockCheckRunnable stockCheckRunnable = new StockCheckRunnable(street,plcCmdInfo,cmdCode,stockMapper,path,checkLogMapper,configProperties.getScanCodeMode().getGoods(),wmsCode,wmsTrayCode,trayCode,trayCheck,configProperties,sensorGun);
@ -639,7 +645,9 @@ public class PlcService {
checkLog.setTrayCode(stock.getTrayCode());
checkLog.setWmsTrayCode(stock.getWmsTrayCode());
checkLog.setLotnum(stock.getLotnum());
log.info("checklogmapper start insert new checklog info.");
checkLogMapper.insert(checkLog);
log.info("checklogmapper insert new checklog info finished.");
}
public void truncateStock(){
stockMapper.truncate();

@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSONObject;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.nio.charset.StandardCharsets;
@ -12,10 +14,15 @@ import java.nio.charset.StandardCharsets;
*/
public class KescEncoder extends MessageToByteEncoder<KsecInfo> {
private static final Logger tcpLogger = LoggerFactory.getLogger("tcp");
@Override
protected void encode(ChannelHandlerContext channelHandlerContext, KsecInfo ksecInfo, ByteBuf byteBuf) throws Exception {
String body = "<" + JSONObject.toJSONString(ksecInfo) + ">";
byteBuf.writeBytes(body.getBytes(StandardCharsets.UTF_8));
if(!ksecInfo.getType().equals('A'))
{
tcpLogger.info("发送数据:"+body);
}
}
}

@ -71,7 +71,7 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder {
@Override
public void run() {
String body = in.toString(Charset.forName("UTF-8"));
tcpLogger.info(body);
tcpLogger.info("接收数据:"+body);
if (body.startsWith("<")){
// 去掉首尾标识符
body = body.substring(1, body.length());
@ -81,7 +81,12 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder {
return ;
}
KsecDataInfo dataInfo = ksecInfo.getData();
String lotnum = dataInfo.getLotnum();
LotnumConvert lotnumConvert = new LotnumConvert(dataInfo.getLotnum());
String lotnum = lotnumConvert.getLotnum();
dataInfo.setLotnum(lotnum);
ksecInfo.setData(dataInfo);
String ksecInfoStr = "<" + JSONObject.toJSONString(ksecInfo) + ">";
tcpLogger.info("转换后数据: "+ksecInfoStr);
PlcCmdInfo plcCmdInfo = null;
String srmNumber = null;
String cmdName = null;
@ -183,14 +188,13 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder {
plcCmdInfo.setTimes(1);
//成都蜜雪冰城 将lotnum当成托盘条码描述
Boolean ok = plcService.check(plcCmdInfo,ksecInfo.getData().getCmdName(), dataInfo.getCode(), dataInfo.getTrayCode(), dataInfo.getLotnum());
// Boolean ok = true;
if(ok){
ksecInfo.getData().setAckStatus(1);
}else {
ksecInfo.getData().setAckStatus(0);
}
ctx.channel().writeAndFlush(ksecInfo);
}
//找到该货位的最后一张照片与现在的照片比照
//plcService.recordStock(plcCmdInfo, dataInfo.getCode(), 0, 0);

@ -0,0 +1,66 @@
package com.zhehekeji.web.service.ksec;
import lombok.Data;
/**
*
*/
@Data
public class LotnumConvert {
private static final String SPLIT1 = ",";
private static final String SPLIT2 = "-";
private static final String CATEGORY = "物料";
private static final String QUANTITY = "数量";
private static final String SUBTRAY = "子盘";
private static final String TRAY = "母盘";
private static final String DOP = "生产日期";
private String Category;
private String Quantity;
private String Tray;
private String Subtray;
private String Dop;
private String Lotnum = "";
public LotnumConvert(String lotnum)
{
String[] strings = lotnum.split(SPLIT1);
if(strings.length == 5)
{
Category = categoryConvert(CATEGORY, strings[0]);
Quantity = subConvert(QUANTITY, strings[1]);
Tray = subConvert(TRAY, strings[2]);
Subtray = subConvert(SUBTRAY, strings[3]);
Dop = subConvert(DOP, strings[4]);
StringBuffer sbf = new StringBuffer();
sbf.append(Category).append(SPLIT1).append(Quantity).append(SPLIT1).append(Tray).append(SPLIT1)
.append(Subtray).append(SPLIT1).append(Dop);
Lotnum = sbf.toString();
}
else
{
Lotnum = lotnum;
}
}
private String categoryConvert(String key, String string)
{
String[] strings = string.split(SPLIT2);
int index = strings[1].indexOf('(');
String value = strings[1].substring(0, index);
String category = key+SPLIT2+value;
return category;
}
private String subConvert(String key, String string)
{
String[] strings = string.split(SPLIT2);
StringBuffer subSBF = new StringBuffer();
subSBF.append(key);
for(int i = 1; i < strings.length; i++)
{
subSBF.append(SPLIT2).append(strings[i]);
}
return subSBF.toString();
}
}
Loading…
Cancel
Save