diff --git a/web/src/main/java/com/zhehekeji/web/controller/StockController.java b/web/src/main/java/com/zhehekeji/web/controller/StockController.java index 37e7584..cabd557 100644 --- a/web/src/main/java/com/zhehekeji/web/controller/StockController.java +++ b/web/src/main/java/com/zhehekeji/web/controller/StockController.java @@ -108,6 +108,20 @@ public class StockController { EasyExcel.write(os, StockExportExcel.class).sheet().doWrite(excels); } + @ApiOperation(value = "全部盘点") + @RequestMapping(value = "/allStockCheck", method = RequestMethod.POST) + public Result allStockCheck() { + stockService.allStockCheck(); + return Result.success(); + } + + @ApiOperation(value = "清空盘点") + @RequestMapping(value = "/allStockClear", method = RequestMethod.POST) + public Result allStockClear() { + stockService.allStockClear(); + return Result.success(); + } + @ApiOperation(value = "复核页面的核对信息") @RequestMapping(value = "/info", method = RequestMethod.POST) public Result stockInfo(@RequestBody StockCheck stockCheck) { diff --git a/web/src/main/java/com/zhehekeji/web/controller/VideoccController.java b/web/src/main/java/com/zhehekeji/web/controller/VideoccController.java index c1b2b2a..972feb8 100644 --- a/web/src/main/java/com/zhehekeji/web/controller/VideoccController.java +++ b/web/src/main/java/com/zhehekeji/web/controller/VideoccController.java @@ -43,8 +43,8 @@ public class VideoccController { list.addAll(videocc.getDetails().get(detail)); } } - log.info("rfid推送信息:"+list); - plcService.wmsTrayCodeMapByTask.put(orderNum,list); + log.info("库存请求orderNum{},tag:{}",orderNum,list); + PlcService.wmsTrayCodeMapByTask.put(orderNum,list); VideoccResponse videoccResponse = new VideoccResponse(); videoccResponse.setMsg("成功"); videoccResponse.setIsSuccess(1); diff --git a/web/src/main/java/com/zhehekeji/web/pojo/stock/StockCheck.java b/web/src/main/java/com/zhehekeji/web/pojo/stock/StockCheck.java index 3f6787c..5d59f0a 100644 --- a/web/src/main/java/com/zhehekeji/web/pojo/stock/StockCheck.java +++ b/web/src/main/java/com/zhehekeji/web/pojo/stock/StockCheck.java @@ -27,4 +27,5 @@ public class StockCheck { @ApiModelProperty("列") private Integer column; + private Integer ok; } 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 22f1ab4..0656a9a 100644 --- a/web/src/main/java/com/zhehekeji/web/service/PlcService.java +++ b/web/src/main/java/com/zhehekeji/web/service/PlcService.java @@ -694,7 +694,8 @@ public class PlcService { trayCheck = Boolean.FALSE; log.warn("sick ocr error:{}", trayCode); } else { - trayCheck = wmsTrayCode.equals(trayCode); + //扫到就认为正常 + trayCheck = Boolean.TRUE; } } } @@ -718,15 +719,16 @@ public class PlcService { if (wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum()) !=null && tags.containsAll(wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum()))) { - - trayRFIDCheck = Boolean.TRUE; } else { if(trayCheck){ trayCode = "RFID扫描失败"; }else trayCode += ";RFID扫描失败"; - wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum()).removeAll(tags); + if (wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum())!= null) { + wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum()).removeAll(tags); + log.info("未扫到数据为:{}",wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum())); + } trayRFIDCheck = Boolean.FALSE; } wmsTrayCodeMapByTask.remove(plcCmdInfo.getOrderNum()); diff --git a/web/src/main/java/com/zhehekeji/web/service/RFID/RFIDSocket.java b/web/src/main/java/com/zhehekeji/web/service/RFID/RFIDSocket.java index c3831c8..3e151a1 100644 --- a/web/src/main/java/com/zhehekeji/web/service/RFID/RFIDSocket.java +++ b/web/src/main/java/com/zhehekeji/web/service/RFID/RFIDSocket.java @@ -53,8 +53,6 @@ public class RFIDSocket { public void startCheck(Integer direction,boolean foreach) { // Reader mReader = ReaderImpl.create(AntennaCount.SIXTEEN_CHANNELS); // Reader mReader = ReaderImpl.create(AntennaCount.EIGHT_CHANNELS); - - running = true; Thread thread = new Thread(new Runnable() { public void run() { @@ -82,6 +80,7 @@ public class RFIDSocket { System.out.println("reader1 inventory tag :" + tag.getEpc()); String tagStr = tag.getEpc().replace(" ",""); System.out.println("tag: " + tag.getEpc()); + tagStr = tagStr.replace("0000000000",""); tags.add(tagStr); if (ToolUtil.isNotEmpty(tagsCount.get(tagStr))) { tagsCount.put(tagStr, tagsCount.get(tagStr) + 1); @@ -144,6 +143,7 @@ public class RFIDSocket { }); thread.start(); + } public void stopCheck() { diff --git a/web/src/main/java/com/zhehekeji/web/service/StockService.java b/web/src/main/java/com/zhehekeji/web/service/StockService.java index 7cb99ac..d83d9cf 100644 --- a/web/src/main/java/com/zhehekeji/web/service/StockService.java +++ b/web/src/main/java/com/zhehekeji/web/service/StockService.java @@ -3,6 +3,7 @@ package com.zhehekeji.web.service; import com.alibaba.excel.EasyExcel; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.zhehekeji.core.util.Assert; @@ -362,10 +363,15 @@ public class StockService { Stock stock = stockInfo(stockCheck); Assert.isTrue(stock != null && stock.getId() != null, "该货位暂时没有记录"); Integer oldStatus = stock.getStatus(); - Assert.isTrue( StockStatus.PENDING.getStatus().equals(oldStatus) || StockStatus.ERROR.getStatus().equals(oldStatus), "无需核对"); + //Assert.isTrue(StockStatus.ERROR.getStatus().equals(oldStatus), "无需核对"); + + log.info("check stock correct, street_id:{},direction:{},side:{},row:{},column:{}", stockCheck.getStreetId(), stockCheck.getDirection(), stockCheck.getSide(), stockCheck.getRow(), stockCheck.getColumn()); + if (stockCheck.getOk() == 1) { + stock.setStatus(StockStatus.MANUAL.getStatus()); + } else { + stock.setStatus(StockStatus.ERROR.getStatus()); + } - log.info("check stock correct, street_id:{},direction:{},side:{},row:{},column:{}", stockCheck.getStreetId(),stockCheck.getDirection(),stockCheck.getSide(), stockCheck.getRow(), stockCheck.getColumn()); - stock.setStatus(StockStatus.MANUAL.getStatus()); stockMapper.updateById(stock); checkLog(stock); return stock; @@ -374,19 +380,28 @@ public class StockService { @Resource private CheckLogMapper checkLogMapper; - private void checkLog(Stock stock){ + private void checkLog(Stock stock) { CheckLog checkLog = new CheckLog(); checkLog.setRow(stock.getRow()); checkLog.setColumn(stock.getColumn()); checkLog.setCheckNum(stock.getCheckNum()); checkLog.setPic(stock.getCheckPic()); + checkLog.setDirection(stock.getDirection()); + checkLog.setSide(stock.getSide()); + checkLog.setStreetId(stock.getStreetId()); //checkLog.setShelveId(stock.getShelveId()); + checkLog.setLotnum(stock.getLotnum()); checkLog.setStatus(stock.getStatus()); checkLog.setCode(stock.getCode()); checkLog.setCreateTime(LocalDateTime.now()); - checkLogMapper.insert(checkLog); + //checkLog.setExportTime(stock.getExportTime()); + checkLogMapper.update(checkLog,new UpdateWrapper() + .eq("check_num",stock.getCheckNum()) + .eq("`column`",stock.getColumn()) + .eq("`row`",stock.getRow()) + .eq("direction",stock.getDirection()) + .eq("side",stock.getSide())); } - /** * 人工核对 * @@ -412,7 +427,7 @@ public class StockService { public Stock nextOne(Long id) { QueryWrapper stockQueryWrapper = new QueryWrapper<>(); - stockQueryWrapper.eq("status","0") + stockQueryWrapper.eq("status","1") .ne(ToolUtil.isNotEmpty(id),"id",id) .orderByDesc("export_time").last("limit 1"); Stock stock =stockMapper.selectOne(stockQueryWrapper); @@ -441,6 +456,29 @@ public class StockService { stockMapper.truncate(); } + + public void allStockCheck() { + Stock stock = new Stock(); + stock.setStatus(1); + List stockList = stockMapper.selectList(new QueryWrapper().eq("status", "0")); + stockMapper.update(stock, new QueryWrapper().eq("status", "0")); + for (Stock s:stockList){ + StockCheck stockCheck = new StockCheck(); + stockCheck.setColumn(s.getColumn()); + stockCheck.setStreetId(s.getStreetId()); + stockCheck.setRow(s.getRow()); + stockCheck.setDirection(s.getDirection()); + stockCheck.setSide(s.getSide()); + stockCheck.setOk(1); + checkCorrect(stockCheck); + } + + } + + public void allStockClear() { + stockMapper.truncate(); + } + // public void init(String shelveId, Integer row, Integer column){ // Map map = new HashMap<>(); // map.put("shelve_id",shelveId); diff --git a/web/src/main/java/com/zhehekeji/web/service/sick/SickSocket.java b/web/src/main/java/com/zhehekeji/web/service/sick/SickSocket.java index 93d5cdb..04f63e6 100644 --- a/web/src/main/java/com/zhehekeji/web/service/sick/SickSocket.java +++ b/web/src/main/java/com/zhehekeji/web/service/sick/SickSocket.java @@ -7,6 +7,7 @@ import org.slf4j.LoggerFactory; import java.io.*; import java.net.InetSocketAddress; import java.net.Socket; +import java.net.SocketTimeoutException; import java.nio.charset.StandardCharsets; /** @@ -16,44 +17,69 @@ import java.nio.charset.StandardCharsets; public class SickSocket { private static final Logger tcpLogger = LoggerFactory.getLogger("sick"); + public static void main(String[] args) { - String code = readOCR("192.168.8.236", 2002); + String code = readOCR("192.168.5.10", 2002); System.out.println(code); } - public static String readOCR(String ip,int port){ + /** + * 读取OCR的结果 + * + * @param ip 目标服务器的IP地址 + * @param port 目标服务器的端口号 + * @return OCR的结果 + */ + public static String readOCR(String ip, int port) { + // 创建Socket对象 Socket socket = new Socket(); + // 定义变量code,并赋值为"NoRead" String code = "NoRead"; + // 创建OutputStream对象os,并赋值为null OutputStream os = null; + // 创建InputStream对象is,并赋值为null InputStream is = null; + try { - socket.connect(new InetSocketAddress(ip,port),3000); + // 连接服务器,指定服务器的IP地址和端口号,并设置连接超时时间为3000毫秒 + socket.connect(new InetSocketAddress(ip, port), 3000); + socket.setSoTimeout(3000); + // 获取socket的输出流对象 os = socket.getOutputStream(); + // 获取socket的输入流对象 is = socket.getInputStream(); + // 定义变量i,并赋值为0 int i = 0; - while ("NoRead".equals(code) && i <= 4){ + // 当code等于"NoRead"且i小于等于4且socket未关闭时,执行以下循环 + while ("NoRead".equals(code) && i <= 4 && !socket.isClosed()) { + // 调用writeCmd方法,将数据写入socket的输出流 writeCmd(os); + // 从socket的输入流中读取数据,并赋值给code code = read(is); - tcpLogger.info("count:{},ip:{},code:{}",i,ip,code); - if(code!= null){ - code = code.replace("\\n",""); + // 打印日志信息,包括计数器i、服务器的IP地址和读取到的数据code + tcpLogger.info("count:{},ip:{},code:{}", i, ip, code); + // 如果code不为null,则将code中的\n替换为空字符串 + if (code != null) { + code = code.replace("\\n", ""); } + // i自增1 i++; } - - + } catch (SocketTimeoutException socketTimeoutException) { + tcpLogger.error("sick响应超时,ip:{},info:{}", ip, socketTimeoutException); + log.error("sick响应超时,ip:{},info:{}", ip, socketTimeoutException); } catch (IOException e) { - tcpLogger.error("sick time out,ip:{},info:{}",ip,e); - log.error("sick time out,ip:{},info:{}",ip,e); - }finally { - if(os != null){ + tcpLogger.error("sick time out,ip:{},info:{}", ip, e); + log.error("sick time out,ip:{},info:{}", ip, e); + } finally { + if (os != null) { try { os.close(); } catch (IOException e) { e.printStackTrace(); } } - if(is != null){ + if (is != null) { try { is.close(); } catch (IOException e) { @@ -72,7 +98,7 @@ public class SickSocket { private static void writeCmd(OutputStream os) throws IOException { String startCmd = "start"; - byte[]bytes = startCmd.getBytes(StandardCharsets.UTF_8); + byte[] bytes = startCmd.getBytes(StandardCharsets.UTF_8); os.write(bytes); } diff --git a/web/src/main/resources/application-prod.yml b/web/src/main/resources/application-prod.yml index 1cc0f19..79f7fa5 100644 --- a/web/src/main/resources/application-prod.yml +++ b/web/src/main/resources/application-prod.yml @@ -27,7 +27,7 @@ userUrl: http://115.236.65.98:11001 # ----默认摄像头的连接信息 cameraConfig: # ------------球機選擇--- 0:利珀 1:海康 - cameraType: 0 + cameraType: 1 cameraPassword: a1234567 cameraUser: admin cameraPort: 37777