From c2845fe6c7ea3e8bec5db025ed380c133ee312df Mon Sep 17 00:00:00 2001 From: QuShuailong Date: Thu, 30 Mar 2023 15:57:54 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E8=9C=9C=E9=9B=AA=E5=86=B0=E5=9F=8E?= =?UTF-8?q?=E6=8B=8D=E6=91=84=E8=B4=A7=E7=89=A9=E9=A1=B6=E9=83=A8=E6=97=B6?= =?UTF-8?q?=E7=94=A8=E5=90=8C=E4=BE=A7=E7=90=83=E6=9C=BA=202=E3=80=81?= =?UTF-8?q?=E6=8E=A5=E6=94=B6=E7=9A=84=E6=8C=87=E4=BB=A4=E9=87=8Clotnum?= =?UTF-8?q?=E9=87=8C=E9=9D=A2=E4=B8=AD=E6=96=87=E4=B9=B1=E7=A0=81=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E7=94=A8=E5=9B=BA=E5=AE=9A=E6=B1=89=E5=AD=97=E5=8E=BB?= =?UTF-8?q?=E6=9B=BF=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zhehekeji/web/service/PlcService.java | 14 +++- .../web/service/ksec/KescEncoder.java | 7 ++ .../web/service/ksec/KsecDecoder.java | 12 ++-- .../web/service/ksec/LotnumConvert.java | 66 +++++++++++++++++++ 4 files changed, 92 insertions(+), 7 deletions(-) create mode 100644 web/src/main/java/com/zhehekeji/web/service/ksec/LotnumConvert.java diff --git a/web/src/main/java/com/zhehekeji/web/service/PlcService.java b/web/src/main/java/com/zhehekeji/web/service/PlcService.java index 2b7996e..67a26b2 100644 --- a/web/src/main/java/com/zhehekeji/web/service/PlcService.java +++ b/web/src/main/java/com/zhehekeji/web/service/PlcService.java @@ -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(); diff --git a/web/src/main/java/com/zhehekeji/web/service/ksec/KescEncoder.java b/web/src/main/java/com/zhehekeji/web/service/ksec/KescEncoder.java index 44d121d..1cb5d1f 100644 --- a/web/src/main/java/com/zhehekeji/web/service/ksec/KescEncoder.java +++ b/web/src/main/java/com/zhehekeji/web/service/ksec/KescEncoder.java @@ -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 { + 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); + } } } diff --git a/web/src/main/java/com/zhehekeji/web/service/ksec/KsecDecoder.java b/web/src/main/java/com/zhehekeji/web/service/ksec/KsecDecoder.java index 7e562e2..f8df4b9 100644 --- a/web/src/main/java/com/zhehekeji/web/service/ksec/KsecDecoder.java +++ b/web/src/main/java/com/zhehekeji/web/service/ksec/KsecDecoder.java @@ -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); diff --git a/web/src/main/java/com/zhehekeji/web/service/ksec/LotnumConvert.java b/web/src/main/java/com/zhehekeji/web/service/ksec/LotnumConvert.java new file mode 100644 index 0000000..10a31ed --- /dev/null +++ b/web/src/main/java/com/zhehekeji/web/service/ksec/LotnumConvert.java @@ -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(); + } +}