diff --git a/web/src/main/java/com/zhehekeji/web/service/MyProtocolDecoder.java b/web/src/main/java/com/zhehekeji/web/service/MyProtocolDecoder.java index a40b3d2..137bbba 100644 --- a/web/src/main/java/com/zhehekeji/web/service/MyProtocolDecoder.java +++ b/web/src/main/java/com/zhehekeji/web/service/MyProtocolDecoder.java @@ -76,6 +76,11 @@ public class MyProtocolDecoder extends FixedLengthFrameDecoder { byte b8 = in.readByte(); byte[] bytes = new byte[]{b1, b2, b3, b4, b5, b6, b7, b8}; String signal = "pl43"+plcId+type+String.valueOf(taskId)+short1+short2+short3+short4+short5+short6+short7+short8+":"+code+b1+b2+b3+b4+b5+b6+b7+b8; + byte[] bytesBarNumSys = {b5, b6, b7, b8}; + int boxNumAlgo = b3; + int boxNumSys = b4; + //String barCodeSys = String.valueOf(b5)+b6+b7+b8; + String barCodeSys = new String(bytesBarNumSys, "UTF-8"); if(!type.equals(HEART)){ log.info("plcId:{},原始信号:{}", plcId, signal); } @@ -85,9 +90,23 @@ public class MyProtocolDecoder extends FixedLengthFrameDecoder { } else if (type.equals(ORDER)) { if ("B1".equals(code)) { log.info("order start ,plcId:{},orderInfo:{}", plcId, plcOrderInfo.toString()); + //根据后四位是否有条码信息来判断随行模式还是盘点模式 + if(b5 == 0 && b6 == 0 && b7 ==0 && b8 ==0) { + log.info("随行模式"); + } else { + log.info("盘点模式"); + log.info("Verification mode. Code:{}, box number(system):{}, box number(algorithm):{}", barCodeSys, boxNumSys, boxNumAlgo); + } plcService.orderStart(plcOrderInfo, plcId); } else if ("B2".equals(code)) { log.info("order end, plcId:{},orderInfo:{}", plcId, plcOrderInfo.toString()); + if(b5 == 0 && b6 == 0 && b7 ==0 && b8 ==0) { + log.info("随行模式"); + } else { + log.info("盘点模式"); + log.info("Verification mode. Code:{}, box number(system):{}, box number(algorithm):{}", barCodeSys, boxNumSys, boxNumAlgo); + plcService.recordStock(plcOrderInfo,plcId,barCodeSys,boxNumSys,boxNumAlgo); + } plcService.orderStop(plcId, plcOrderInfo.getOrderNum()); } } else if (type.equals(ACTION)) { 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 0d4b93f..9da5c45 100644 --- a/web/src/main/java/com/zhehekeji/web/service/PlcService.java +++ b/web/src/main/java/com/zhehekeji/web/service/PlcService.java @@ -6,6 +6,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.pojo.stock.CheckByMan; import com.zhehekeji.web.pojo.stock.StockStatus; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; @@ -47,6 +48,8 @@ public class PlcService { private StreetService streetService; @Resource private CameraIOMapper ioMapper; + @Resource + private StockService stockService; /** * 原点位 @@ -330,4 +333,49 @@ public class PlcService { ZWPtzControlModule.turn360C8(street.getCamera2Id(),ptzId); } } + + + public void recordStock(PlcOrderInfo plcOrderInfo, String plcId, String barCodeSys, int boxNumSys, int boxNumAlgo) + { + Street street = streetService.getStreetByPlcId(plcId); + if(street == null){ + return; + } + //拍照,转动 需要知道是哪个货架 + //1 判断是左右货架 1:左货架 2:右货架 + //判断左右 行列号 + Integer leftRight = plcOrderInfo.getLeftRight2(); + + String shelveId; + if(leftRight == 1){ + shelveId = street.getLeftShelveId(); + }else { + shelveId = street.getRightShelveId(); + } + Stock stock = stockMapper.getByShelveIdAndRowColumn(shelveId,plcOrderInfo.getRow2(),plcOrderInfo.getColumn2()); + if(stock != null) + { + stock.setCategory(barCodeSys); + stock.setCount(boxNumSys); + if(boxNumSys == boxNumAlgo) + { + stock.setStatus(StockStatus.SUCCESS.getStatus()); + log.info("核对正确"); + stockMapper.updateById(stock); + } + else + { + log.info("核对失败"); + stock.setStatus(StockStatus.ERROR.getStatus()); + stockMapper.updateById(stock); + CheckByMan checkByMan = new CheckByMan(); + checkByMan.setShelveId(shelveId); + checkByMan.setRow(plcOrderInfo.getRow2()); + checkByMan.setColumn(plcOrderInfo.getColumn2()); + checkByMan.setCategory(barCodeSys); + checkByMan.setCount(boxNumAlgo); + stockService.checkByMan(checkByMan); + } + } + } }