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 687bfc5..e3a8fb1 100644 --- a/web/src/main/java/com/zhehekeji/web/service/PlcService.java +++ b/web/src/main/java/com/zhehekeji/web/service/PlcService.java @@ -13,7 +13,10 @@ import com.zhehekeji.web.service.RFID.RFIDSocket; import com.zhehekeji.web.service.hikLightSource.HikControlSocket; import com.zhehekeji.web.service.ksec.KsecNettyClient; import com.zhehekeji.web.service.sick.SickSocket; +import lombok.AllArgsConstructor; +import lombok.Data; import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.formula.functions.T; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; @@ -546,6 +549,30 @@ public class PlcService { @Resource private LightSourceMapper lightSourceMapper; + public void updateStock(PlcCmdInfo plcCmdInfo,String wmsTrayCode){ + Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId()); + Stock stock = stockMapper.getByStreetAndDirectionAndSideAndRowColumn(street.getId(),plcCmdInfo.getLeftRight1(),plcCmdInfo.getSide1(),plcCmdInfo.getRow1(),plcCmdInfo.getColumn1()); + + if(stock == null){ + stock = new Stock(); + stock.setStreetId(street.getId()); + stock.setDirection(plcCmdInfo.getLeftRight1()); + stock.setSide(plcCmdInfo.getSide1()); + stock.setRow(plcCmdInfo.getRow1()); + stock.setColumn(plcCmdInfo.getColumn1()); + stock.setLotnum(plcCmdInfo.getLotnum()); + stock.setWmsTrayCode(wmsTrayCode); + stock.setExportTime(LocalDateTime.now()); + stockMapper.insert(stock); + return; + } + stock.setLotnum(plcCmdInfo.getLotnum()); + stock.setWmsTrayCode(wmsTrayCode); + stock.setExportTime(LocalDateTime.now()); + stockMapper.updateById(stock); + + } + public Boolean check(PlcCmdInfo plcCmdInfo,String cmdCode,String wmsCode,String wmsTrayCode){ long startTime = System.currentTimeMillis(); @@ -723,7 +750,7 @@ public class PlcService { RFIDMap.put(streetId,rfidSocket); } - public Set RFIDStop(PlcCmdInfo plcCmdInfo){ + public Set RFIDStop(PlcCmdInfo plcCmdInfo,Integer row){ Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId()); RFIDSocket rfidSocket = RFIDMap.get(street.getId()); Set tags = null; @@ -733,6 +760,8 @@ public class PlcService { rfidSocket.close(); RFIDMap.remove(street.getId()); } + Thread thread = new StockUpdater(street.getId(),plcCmdInfo.getPlcId(),row,stockMapper,tags); + thread.start(); return tags; } @@ -740,4 +769,7 @@ public class PlcService { return configProperties; } + + + } diff --git a/web/src/main/java/com/zhehekeji/web/service/StockUpdater.java b/web/src/main/java/com/zhehekeji/web/service/StockUpdater.java new file mode 100644 index 0000000..f5ab038 --- /dev/null +++ b/web/src/main/java/com/zhehekeji/web/service/StockUpdater.java @@ -0,0 +1,58 @@ +package com.zhehekeji.web.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.zhehekeji.web.entity.Stock; +import com.zhehekeji.web.mapper.StockMapper; +import com.zhehekeji.web.service.ksec.KsecDataInfo; +import com.zhehekeji.web.service.ksec.KsecInfo; +import com.zhehekeji.web.service.ksec.KsecNettyClient; +import lombok.AllArgsConstructor; +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Set; + +@AllArgsConstructor +@Data +public class StockUpdater extends Thread{ + + private Integer streetId; + + private String SRMNUmber; + + private Integer row; + + private StockMapper stockMapper; + + private Set tags; + + @Override + public void run() { + //查找该行所有的 + List stockList = stockMapper.selectList(new QueryWrapper().eq("street_id",streetId).eq("`row`",row)); + for(Stock stock: stockList){ + Stock update = new Stock(); + update.setId(stock.getId()); + update.setExportTime(LocalDateTime.now()); + if(tags.contains(stock.getWmsTrayCode())){ + update.setTrayCode(stock.getWmsTrayCode()); + update.setStatus(2); + }else { + update.setStatus(1); + } + stockMapper.updateById(update); + //回复给盘点系统 + KsecDataInfo ksecDataInfo = new KsecDataInfo(); + ksecDataInfo.setCmdName("E4"); + ksecDataInfo.setCheck(update.getStatus()); + ksecDataInfo.setFromDirection(stock.getDirection()); + ksecDataInfo.setFromRow(stock.getRow()); + ksecDataInfo.setFromSide(stock.getSide()); + ksecDataInfo.setLotnum(stock.getLotnum()); + ksecDataInfo.setSRMNumber(SRMNUmber); + KsecInfo ksecInfo = new KsecInfo("LP","E",ksecDataInfo); + KsecNettyClient.write(ksecInfo); + } + } +} diff --git a/web/src/main/java/com/zhehekeji/web/service/ksec/KsecDataInfo.java b/web/src/main/java/com/zhehekeji/web/service/ksec/KsecDataInfo.java index c9841a7..98cf023 100644 --- a/web/src/main/java/com/zhehekeji/web/service/ksec/KsecDataInfo.java +++ b/web/src/main/java/com/zhehekeji/web/service/ksec/KsecDataInfo.java @@ -34,13 +34,12 @@ public class KsecDataInfo { private Integer toSeparation; - private String code; - private String warnCode; - private Integer ackStatus; - private String trayCodes; + private String wmsTrayCode; + + private String trayCode; private Integer row; @@ -51,12 +50,4 @@ public class KsecDataInfo { */ private String lotnum; - public Set getAllTrayCodes(){ - String [] strings = trayCodes.split(","); - Set sets = new HashSet<>(); - for(int i = 0;i scanCodes = plcService.RFIDStop(plcCmdInfo); - if(scanCodes.containsAll(dataInfo.getAllTrayCodes())){ - dataInfo.setCheck(1); - }else { - dataInfo.setCheck(0); - } - dataInfo.setTrayCodes(null); - dataInfo.setCmdName("E3"); - ksecInfo.setHeader("LP"); - ksecInfo.setData(dataInfo); - ctx.channel().writeAndFlush(ksecInfo); + //E2是货架标签,保存之 + plcService.updateStock(plcCmdInfo, dataInfo.getWmsTrayCode()); +// Set scanCodes = plcService.RFIDStop(plcCmdInfo); +// if(scanCodes.containsAll(dataInfo.getAllTrayCodes())){ +// dataInfo.setCheck(1); +// }else { +// dataInfo.setCheck(0); +// } +// dataInfo.setTrayCodes(null); +// dataInfo.setCmdName("E3"); +// ksecInfo.setHeader("LP"); +// ksecInfo.setData(dataInfo); +// ctx.channel().writeAndFlush(ksecInfo); + }else if("E3".equals(code)){ + //跑位结束 + } }