diff --git a/libs/code_scan/BarcodeDetectorJNI.dll b/libs/code_scan/BarcodeDetectorJNI.dll new file mode 100644 index 0000000..24507ff Binary files /dev/null and b/libs/code_scan/BarcodeDetectorJNI.dll differ diff --git a/web/src/main/java/com/aijiao/test/JNIDemo.java b/web/src/main/java/codeDetector/BarcodeDetector.java similarity index 54% rename from web/src/main/java/com/aijiao/test/JNIDemo.java rename to web/src/main/java/codeDetector/BarcodeDetector.java index 65f00f5..b840350 100644 --- a/web/src/main/java/com/aijiao/test/JNIDemo.java +++ b/web/src/main/java/codeDetector/BarcodeDetector.java @@ -1,33 +1,55 @@ -package com.aijiao.test; +package codeDetector; import lombok.extern.slf4j.Slf4j; import java.lang.reflect.Field; @Slf4j -public class JNIDemo { +public class BarcodeDetector{ - public static native String detectBestBarCode(String filePath); + //Unrecognized :未识别 + //ImageEmpty: 未加载到图片 + /** + * codeType + * const int codeTypes[] = + * { + * 0x00003fff, //"All 1D Code" ->0 + * 0x0000001, //"EAN-8" ->1 + * 0x00000002, //"UPC-E" + * 0x00000004, //"ISBN-10", + * 0x00000008, //"UPC-A" + * 0x00000010, //"EAN-13" + * 0x00000020, //"ISBN-13" + * 0x00000040, //"EAN/UPC" + * 0x00000080, //"Interleaved 2 of 5" + * 0x00000100, //DataBar" + * 0x00000200, //"DataBar Expanded" + * 0x00000400, //"CodaBar" + * 0x00000800, //"Code 39" + * 0x00001000, //"Code 93" + * 0x00002000 //"Code 128" ->14 + * }; + */ - public static String detectBestCodeUntilOK(String filePath){ + public static native String detectBestBarCode(String filePath,int[]codeTypes); + + + public static String detectBestCodeUntilOK(String filePath,int[]codeTypes){ String code = null; long startTime = System.currentTimeMillis(); - System.out.println("start:"); - System.out.println(startTime); //只要code为空或者图片为Empty,就继续查,直到5s为止 - while ((code == null || "Empty".equals(code)) && (System.currentTimeMillis() - startTime < 5000)){ + while ((code == null || "ImageEmpty".equals(code)) && (System.currentTimeMillis() - startTime < 5000)){ try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } - code = JNIDemo.detectBestBarCode(filePath); - + code = BarcodeDetector.detectBestBarCode(filePath,codeTypes); } - System.out.println(System.currentTimeMillis()); return code; } + static { try{ @@ -44,7 +66,7 @@ public class JNIDemo { System.loadLibrary("libnlopt-0"); System.loadLibrary("lpv"); System.loadLibrary("libCyclops"); - System.loadLibrary("TestJNI"); + System.loadLibrary("BarcodeDetectorJNI"); }catch(Exception e) { log.error("detectBestBarCode:"+e); @@ -55,7 +77,8 @@ public class JNIDemo { public static void main(String[] args) { //String code = barCodeScan.detectBestBarCode("d:\\data\\media\\2022\\01\\12\\10\\camera25\\1324-hfhaegaaag.jpg"); - String code = JNIDemo.detectBestCodeUntilOK("C:\\Users\\user\\Desktop\\abc\\552-iajgcbfhfd.jpg"); + int[]codeTypes = new int[]{14}; + String code = BarcodeDetector.detectBestCodeUntilOK("C:\\Users\\user\\Desktop\\aaa\\0913-efifgfafbd.jpg",codeTypes); System.out.println(code); } } diff --git a/web/src/main/java/com/aijiao/test/com_aijiao_test_JNIDemo.h b/web/src/main/java/com/aijiao/test/com_aijiao_test_JNIDemo.h deleted file mode 100644 index 34c551e..0000000 --- a/web/src/main/java/com/aijiao/test/com_aijiao_test_JNIDemo.h +++ /dev/null @@ -1,21 +0,0 @@ -/* DO NOT EDIT THIS FILE - it is machine generated */ -#include -/* Header for class com_aijiao_test_JNIDemo */ - -#ifndef _Included_com_aijiao_test_JNIDemo -#define _Included_com_aijiao_test_JNIDemo -#ifdef __cplusplus -extern "C" { -#endif -/* - * Class: com_aijiao_test_JNIDemo - * Method: detectBestBarCode - * Signature: (Ljava/lang/String;)Ljava/lang/String; - */ -JNIEXPORT jstring JNICALL Java_com_aijiao_test_JNIDemo_detectBestBarCode - (JNIEnv *, jobject, jstring); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/web/src/main/java/com/zhehekeji/web/config/ConfigProperties.java b/web/src/main/java/com/zhehekeji/web/config/ConfigProperties.java index 8c1efb5..809be34 100644 --- a/web/src/main/java/com/zhehekeji/web/config/ConfigProperties.java +++ b/web/src/main/java/com/zhehekeji/web/config/ConfigProperties.java @@ -51,8 +51,6 @@ public class ConfigProperties { private Long delayCaptureTime; - private Long delayScanTime; - } @Data @@ -88,5 +86,7 @@ public class ConfigProperties { public static class ScanCodeMode{ private Integer tray; private Integer goods; + private int [] goodsCodeTypes; + private int [] trayCodeTypes; } } diff --git a/web/src/main/java/com/zhehekeji/web/controller/TestController.java b/web/src/main/java/com/zhehekeji/web/controller/TestController.java index 2a3824f..d2e7469 100644 --- a/web/src/main/java/com/zhehekeji/web/controller/TestController.java +++ b/web/src/main/java/com/zhehekeji/web/controller/TestController.java @@ -1,19 +1,9 @@ package com.zhehekeji.web.controller; -import com.github.pagehelper.PageInfo; -import com.zhehekeji.common.util.ValidatorUtil; import com.zhehekeji.core.pojo.Result; -import com.zhehekeji.web.pojo.OrderSaveReq; -import com.zhehekeji.web.pojo.OrderSearch; -import com.zhehekeji.web.pojo.OrderVO; -import com.zhehekeji.web.service.OrderService; -import com.zhehekeji.web.service.PlcCmdInfo; -import com.zhehekeji.web.service.PlcService; import com.zhehekeji.web.service.TestService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiParam; -import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -29,9 +19,9 @@ public class TestController { @ApiOperation("新增") - @GetMapping("/check/{id}") - public Result save(@PathVariable Integer id){ - testService.CheckTest(id); + @GetMapping("/check/{id}/{leftRight}") + public Result test(@PathVariable Integer id,@PathVariable Integer leftRight){ + testService.CheckTest(id,leftRight); return Result.success(); } diff --git a/web/src/main/java/com/zhehekeji/web/entity/Stock.java b/web/src/main/java/com/zhehekeji/web/entity/Stock.java index 79f4582..2de7bc0 100644 --- a/web/src/main/java/com/zhehekeji/web/entity/Stock.java +++ b/web/src/main/java/com/zhehekeji/web/entity/Stock.java @@ -6,12 +6,16 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; import java.time.LocalDateTime; @Data @TableName("`stock`") +@NoArgsConstructor +@AllArgsConstructor public class Stock { @TableId(type = IdType.AUTO) diff --git a/web/src/main/java/com/zhehekeji/web/mapper/StockMapper.java b/web/src/main/java/com/zhehekeji/web/mapper/StockMapper.java index 222a738..c5b5320 100644 --- a/web/src/main/java/com/zhehekeji/web/mapper/StockMapper.java +++ b/web/src/main/java/com/zhehekeji/web/mapper/StockMapper.java @@ -9,7 +9,7 @@ import java.util.List; public interface StockMapper extends BaseMapper { - void batchInsert(List stocks); + void batchInsert(@Param("stocks") List stocks); void insertOrUpdate(@Param("req") Stock stock); 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 8c8ff59..ffd66ea 100644 --- a/web/src/main/java/com/zhehekeji/web/service/PlcService.java +++ b/web/src/main/java/com/zhehekeji/web/service/PlcService.java @@ -1,6 +1,5 @@ package com.zhehekeji.web.service; -import com.aijiao.test.JNIDemo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.zhehekeji.common.util.PathUtil; import com.zhehekeji.web.config.ConfigProperties; @@ -17,6 +16,10 @@ import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.List; +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.BlockingDeque; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; /** * @Description plc信号指令处理类 @@ -54,8 +57,10 @@ public class PlcService { private CameraControlModule cameraControlModule; @Resource private SensorService sensorService; + @Resource + private CheckLogMapper checkLogMapper; - private static JNIDemo barCodeScan = new JNIDemo(); + private static ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1,8,200,TimeUnit.MINUTES,new ArrayBlockingQueue<>(100000)); public void setCameraControlModule(CameraControlModule cameraControlModule){ this.cameraControlModule = cameraControlModule; @@ -465,26 +470,10 @@ public class PlcService { e.printStackTrace(); } String path = cameraCapture(cameraId,false,null); - OrderInfo orderInfo = new OrderInfo(street,plcCmdInfo,1,cmdCode); - Stock stock = stockMapper.getByShelveIdAndRowColumn(orderInfo.getShelveId(),orderInfo.getRow(),orderInfo.getColumn()); - log.info("pic path:{}",configProperties.getSavePath().getMediaPath()+path); - - String scanCode = null; + //托盘码 String trayCode = null; - Boolean codeCheck = Boolean.TRUE; - //货物使用球机扫码 - if(configProperties.getScanCodeMode().getGoods() == 1){ - scanCode = JNIDemo.detectBestCodeUntilOK(configProperties.getSavePath().getMediaPath()+path); - if(StringUtils.isEmpty(scanCode)){ - log.error("row:{},cloumn:{}",plcCmdInfo.getRow1(),plcCmdInfo.getColumn1()); - log.error("detectBestBarCode:{}",scanCode); - scanCode = "识别异常"; - codeCheck = Boolean.FALSE; - }else { - codeCheck = wmsCode.equals(scanCode); - } - } Boolean trayCheck = Boolean.TRUE; + //如果是用扫码枪 扫 托盘码,就直接扫 if(configProperties.getScanCodeMode().getTray() == 2){ //托盘使用sick扫码枪 if(configProperties.getSensor().getType() == 1){ @@ -504,68 +493,13 @@ public class PlcService { trayCheck = wmsTrayCode.equals(trayCode); } } - } - - } - - log.info("code:{}",scanCode); - //核对异常 - Integer status = 1; - //托盘和货物都正确 - if(trayCheck && codeCheck){ - status = 2; } - if(stock == null){ - stock = new Stock(); - stock.setStatus(status); - stock.setCheckNum(plcCmdInfo.getOrderNum()); - stock.setShelveId(orderInfo.getShelveId()); - stock.setRow(orderInfo.getRow()); - stock.setColumn(orderInfo.getColumn()); - stock.setExportTime(LocalDateTime.now()); - stock.setCheckPic(path); - stock.setTrayCode(trayCode); - stock.setWmsTrayCode(wmsTrayCode); - stock.setCode(scanCode); - stock.setWmsCode(wmsCode); - stockMapper.insert(stock); - }else { - stock.setStatus(status); - stock.setExportTime(LocalDateTime.now()); - stock.setCheckPic(path); - stock.setCheckNum(plcCmdInfo.getOrderNum()); - stock.setTrayCode(trayCode); - stock.setWmsTrayCode(wmsTrayCode); - stock.setCode(scanCode); - stock.setWmsCode(wmsCode); - stockMapper.updateById(stock); - } - checkLog(stock); + StockCheckRunnable stockCheckRunnable = new StockCheckRunnable(street,plcCmdInfo,cmdCode,stockMapper,path,checkLogMapper,configProperties.getScanCodeMode().getGoods(),wmsCode,wmsTrayCode,trayCode,trayCheck,configProperties); + threadPoolExecutor.execute(stockCheckRunnable); long end = System.currentTimeMillis(); long s = end - startTime; log.info("time:{}millisecond",s); - } - @Resource - private CheckLogMapper checkLogMapper; - - public void checkLog(Stock stock){ - CheckLog checkLog = new CheckLog(); - checkLog.setCheckNum(stock.getCheckNum()); - checkLog.setPic(stock.getCheckPic()); - checkLog.setShelveId(stock.getShelveId()); - checkLog.setCode(stock.getCode()); - checkLog.setWmsCode(stock.getWmsCode()); - checkLog.setStatus(stock.getStatus()); - checkLog.setRow(stock.getRow()); - checkLog.setColumn(stock.getColumn()); - checkLog.setCreateTime(LocalDateTime.now()); - checkLog.setTrayCode(stock.getTrayCode()); - checkLog.setWmsTrayCode(stock.getWmsTrayCode()); - checkLogMapper.insert(checkLog); - } - - } diff --git a/web/src/main/java/com/zhehekeji/web/service/StockCheckRunnable.java b/web/src/main/java/com/zhehekeji/web/service/StockCheckRunnable.java new file mode 100644 index 0000000..ea868b8 --- /dev/null +++ b/web/src/main/java/com/zhehekeji/web/service/StockCheckRunnable.java @@ -0,0 +1,112 @@ +package com.zhehekeji.web.service; + +import codeDetector.BarcodeDetector; +import com.zhehekeji.web.config.ConfigProperties; +import com.zhehekeji.web.entity.CheckLog; +import com.zhehekeji.web.entity.Stock; +import com.zhehekeji.web.entity.Street; +import com.zhehekeji.web.lib.OrderInfo; +import com.zhehekeji.web.mapper.CheckLogMapper; +import com.zhehekeji.web.mapper.StockMapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.util.StringUtils; + +import java.time.LocalDateTime; + +@Slf4j +public class StockCheckRunnable implements Runnable { + + private Street street; + + private PlcCmdInfo plcCmdInfo; + + private String cmdCode; + private StockMapper stockMapper; + private String path; + private CheckLogMapper checkLogMapper; + + private Integer goodsScanCodeMode; + private String wmsCode; + private String wmsTrayCode; + private String trayCode; + private Boolean trayCheck; + + private ConfigProperties configProperties; + + + public StockCheckRunnable(Street street, PlcCmdInfo plcCmdInfo, String cmdCode, StockMapper stockMapper,String path,CheckLogMapper checkLogMapper,Integer goodsActionTimes,String wmsCode,String wmsTrayCode,String trayCode,Boolean trayCheck,ConfigProperties configProperties){ + this.street = street; + this.plcCmdInfo = plcCmdInfo; + this.cmdCode = cmdCode; + this.stockMapper = stockMapper; + this.path = path; + this.checkLogMapper = checkLogMapper; + this.goodsScanCodeMode = goodsActionTimes; + this.wmsCode = wmsCode; + this.wmsTrayCode = wmsTrayCode; + this.trayCode = trayCode; + this.trayCheck = trayCheck; + this.configProperties = configProperties; + + } + + @Override + public void run() { + OrderInfo orderInfo = new OrderInfo(street,plcCmdInfo,1,cmdCode); + Stock stock = stockMapper.getByShelveIdAndRowColumn(orderInfo.getShelveId(),orderInfo.getRow(),orderInfo.getColumn()); + String scanCode = null; + Boolean codeCheck = Boolean.TRUE; + //货物使用球机扫码 + if(goodsScanCodeMode == 1){ + scanCode = BarcodeDetector.detectBestCodeUntilOK(configProperties.getSavePath().getMediaPath()+path,configProperties.getScanCodeMode().getGoodsCodeTypes()); + if(StringUtils.isEmpty(scanCode)){ + log.error("row:{},cloumn:{}",plcCmdInfo.getRow1(),plcCmdInfo.getColumn1()); + log.error("detectBestBarCode:{}",scanCode); + scanCode = "识别异常"; + codeCheck = Boolean.FALSE; + }else { + codeCheck = wmsCode.equals(scanCode); + } + } + + + log.info("code:{}",scanCode); + //核对异常 + Integer status = 1; + //托盘和货物都正确 + if(trayCheck && codeCheck){ + status = 2; + } + if(stock == null){ + stock = new Stock(null,null,plcCmdInfo.getOrderNum(),scanCode,null,null,wmsCode,null,null,wmsTrayCode,trayCode,orderInfo.getShelveId(),orderInfo.getRow(),orderInfo.getColumn(),status,null,null,path, LocalDateTime.now()); + stockMapper.insert(stock); + }else { + stock.setStatus(status); + stock.setExportTime(LocalDateTime.now()); + stock.setCheckPic(path); + stock.setCheckNum(plcCmdInfo.getOrderNum()); + stock.setTrayCode(trayCode); + stock.setWmsTrayCode(wmsTrayCode); + stock.setCode(scanCode); + stock.setWmsCode(wmsCode); + stockMapper.updateById(stock); + } + checkLog(stock); + } + + public void checkLog(Stock stock){ + CheckLog checkLog = new CheckLog(); + checkLog.setCheckNum(stock.getCheckNum()); + checkLog.setPic(stock.getCheckPic()); + checkLog.setShelveId(stock.getShelveId()); + checkLog.setCode(stock.getCode()); + checkLog.setWmsCode(stock.getWmsCode()); + checkLog.setStatus(stock.getStatus()); + checkLog.setRow(stock.getRow()); + checkLog.setColumn(stock.getColumn()); + checkLog.setCreateTime(LocalDateTime.now()); + checkLog.setTrayCode(stock.getTrayCode()); + checkLog.setWmsTrayCode(stock.getWmsTrayCode()); + checkLogMapper.insert(checkLog); + } +} 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 12275fc..68abdda 100644 --- a/web/src/main/java/com/zhehekeji/web/service/StockService.java +++ b/web/src/main/java/com/zhehekeji/web/service/StockService.java @@ -13,6 +13,7 @@ import com.zhehekeji.web.mapper.CheckLogMapper; import com.zhehekeji.web.mapper.StockMapper; import com.zhehekeji.web.pojo.category.PageSearch; import com.zhehekeji.web.pojo.stock.*; +import io.swagger.models.auth.In; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -97,13 +98,14 @@ public class StockService { ListstockList = new ArrayList<>(); + //默认全部盘点正确 Map rowTabStatus = new LinkedHashMap<>(); for(String rowTab: rowColumnStatus.getRowTabs()){ - rowTabStatus.put(rowTab,0); + rowTabStatus.put(rowTab,2); } Map columnTabStatus = new LinkedHashMap<>(); for(String column:rowColumnStatus.getColumnTabs()){ - columnTabStatus.put(column,0); + columnTabStatus.put(column,2); } List stocks = stockMapper.selectList(new QueryWrapper().select("status","`row`","`column`","`shelve_id`").eq("`shelve_id`",rowColumnStatus.getShelveId())); if(CollectionUtils.isEmpty(stocks)){ @@ -174,40 +176,6 @@ public class StockService { } - public static void main(String[] args) { - List readyList = new ArrayList<>(); - Stock stock = new Stock(); - stock.setRow(1); - stock.setColumn(1); - - readyList.add(stock); - Stock stock2 = new Stock(); - stock2.setRow(2); - stock2.setColumn(4); - - readyList.add(stock2); - Map> map = new HashMap<>(); - Map rowMap = new HashMap<>(); - readyList.forEach(stockw -> { - if(map.get(stockw.getRow()) == null){ - Map columnMap = new HashMap<>(); - columnMap.put(stockw.getColumn(),true); - map.put(stockw.getRow(),columnMap); - }else { - Map columnMap = map.get(stockw.getRow()); - if(columnMap.get(stockw.getColumn()) == null){ - columnMap.put(stockw.getColumn(),true); - } - map.put(stockw.getRow(),columnMap); - } - - }); - System.out.println(map); - - } - - - //0 : 未盘点 1:盘点异常 2:盘点正确 private void tabStatus(Stock stock,Map tabStatus,String tab){ @@ -215,13 +183,11 @@ public class StockService { tabStatus.put(tab,stock.getStatus()); }else { Integer status = tabStatus.get(tab); - if(status == 1 || stock.getStatus() == 1){ + if(stock.getStatus() == 1){ //盘点异常为最高 tabStatus.put(tab,1); - }else if(status == 0 || stock.getStatus() == 0) { + }else if(stock.getStatus() == 0 && status != 1) { tabStatus.put(tab, 0); - }else if(status == 2 || stock.getStatus() == 2){ - tabStatus.put(tab,2); } } } @@ -340,6 +306,24 @@ public class StockService { } + public void init(String shelveId, Integer row, Integer column){ + Map map = new HashMap<>(); + map.put("shelve_id",shelveId); + stockMapper.deleteByMap(map); + for(int i = 1;i<=row;i++){ + List stocks = new ArrayList<>(column); + for(int j = 1;j<=column;j++){ + Stock stock = new Stock(); + stock.setShelveId(shelveId); + stock.setRow(i); + stock.setColumn(j); + stock.setStatus(0); + stocks.add(stock); + } + stockMapper.batchInsert(stocks); + } + } + } diff --git a/web/src/main/java/com/zhehekeji/web/service/StreetService.java b/web/src/main/java/com/zhehekeji/web/service/StreetService.java index 1662a23..54d43b5 100644 --- a/web/src/main/java/com/zhehekeji/web/service/StreetService.java +++ b/web/src/main/java/com/zhehekeji/web/service/StreetService.java @@ -39,6 +39,8 @@ public class StreetService { private NettyClient nettyClient; @Resource private LightSourceMapper lightSourceMapper; + @Resource + private StockService stockService; @Transactional(rollbackFor = Exception.class) @@ -93,9 +95,29 @@ public class StreetService { lightSourceMapper.insert(lightSource); } streetVO.setId(street.getId()); + Thread thread2 = new Thread(new Runnable() { + @Override + public void run() { + if (StreetType.SINGLE.getType().equals(street.getLeftType())) { + stockService.init(street.getLeftShelveId(),street.getLeftRow(),street.getLeftColumn()); + }else if(StreetType.DOUBLE.getType().equals(street.getLeftType())){ + stockService.init(street.getLeftInsideShelveId(),street.getLeftRow(),street.getLeftColumn()); + stockService.init(street.getLeftOutsideShelveId(),street.getLeftRow(),street.getLeftColumn()); + } + if (StreetType.SINGLE.getType().equals(street.getRightType())) { + stockService.init(street.getRightShelveId(),street.getRightRow(),street.getRightColumn()); + }else if (StreetType.DOUBLE.getType().equals(street.getRightType())) { + stockService.init(street.getRightInsideShelveId(),street.getRightRow(),street.getRightColumn()); + stockService.init(street.getRightOutsideShelveId(),street.getRightRow(),street.getRightColumn()); + } + } + }); + thread2.start(); return street; } + + @Cacheable(value = "streetByPlcId",key = "#plcId") public Street getStreetByPlcId(String plcId) { Street street = streetMapper.getStreetByPlcId(plcId); diff --git a/web/src/main/java/com/zhehekeji/web/service/TestService.java b/web/src/main/java/com/zhehekeji/web/service/TestService.java index ddffb9c..0a943f5 100644 --- a/web/src/main/java/com/zhehekeji/web/service/TestService.java +++ b/web/src/main/java/com/zhehekeji/web/service/TestService.java @@ -22,18 +22,24 @@ public class TestService { - public void CheckTest(Integer StreetId){ + public void CheckTest(Integer StreetId,Integer leftRight){ if(!isRunning){ isRunning = Boolean.TRUE; Street street = streetService.streetById(StreetId); Integer row = street.getLeftRow(); Integer column = street.getLeftColumn(); + if(leftRight == 2){ + row = street.getRightRow(); + column = street.getRightColumn(); + } + for(int i = 1;i<=row;i++){ for(int j = 0; j<= column;j++){ String code = "3224112150069"; String taskId = i +"-"+ j+"-"+LocalDateTime.now().format(DateTimeFormatter.ofPattern("hhmmss")); - PlcCmdInfo plcCmdInfo = new PlcCmdInfo(street.getPlcId(),taskId,1,1,j,i,1,1,1,1,1,1); - plcService.check(plcCmdInfo,"E1",code,"21234-trayCode"); + PlcCmdInfo plcCmdInfo = new PlcCmdInfo(street.getPlcId(),taskId,1,leftRight,j,i,1,1,1,1,1,1); + int co = j%4 + 1; + plcService.check(plcCmdInfo,"E"+co,code,"21234-trayCode"); try { Thread.sleep(1000); } catch (InterruptedException e) { diff --git a/web/src/main/resources/application-dev.yml b/web/src/main/resources/application-dev.yml index e4b5db4..be3d2c6 100644 --- a/web/src/main/resources/application-dev.yml +++ b/web/src/main/resources/application-dev.yml @@ -67,4 +67,7 @@ sensor: scanCodeMode: tray: 2 goods: 1 - + goodsCodeTypes: + - 14 + trayCodeTypes: + - 14 diff --git a/web/src/main/resources/application-prod.yml b/web/src/main/resources/application-prod.yml index acbb72d..10965a8 100644 --- a/web/src/main/resources/application-prod.yml +++ b/web/src/main/resources/application-prod.yml @@ -33,9 +33,7 @@ cameraConfig: cameraPort: 37777 videoServer: 127.0.0.1:8083 #相机抓图延迟 毫秒,这个延迟是等待球机球机转动到位,然后拍照的 - delayCaptureTime: 2200 - #OCR识别延迟 毫秒 - delayScanTime: 1500 + delayCaptureTime: 2500 # ------------ # -----图片 mp4下载地址 savePath: @@ -65,4 +63,8 @@ sensor: # 扫码模式 1:球机扫码 2:扫码枪 scanCodeMode: tray: 0 - goods: 1 \ No newline at end of file + goods: 1 + goodsCodeTypes: + - 14 + trayCodeTypes: + - 14 \ No newline at end of file diff --git a/web/src/main/resources/application-test.yml b/web/src/main/resources/application-test.yml index 7a6ef6d..4c6df38 100644 --- a/web/src/main/resources/application-test.yml +++ b/web/src/main/resources/application-test.yml @@ -65,4 +65,8 @@ sensor: # 扫码模式 1:球机扫码 2:扫码枪 scanCodeMode: tray: 2 - goods: 1 \ No newline at end of file + goods: 1 + goodsCodeTypes: + - 14 + trayCodeTypes: + - 14 \ No newline at end of file diff --git a/web/src/main/resources/mapper/StockMapper.xml b/web/src/main/resources/mapper/StockMapper.xml index 6b5baef..d930c32 100644 --- a/web/src/main/resources/mapper/StockMapper.xml +++ b/web/src/main/resources/mapper/StockMapper.xml @@ -4,10 +4,10 @@ insert into stock( - category,count,shelve_id,row,column,status,export_time + `shelve_id`,`row`,`column`,`status` ) values - (#{item.category},#{item.count},#{item.shelveId},#{item.row},#{item.column},#{item.status},#{item.exportTime}) + (#{item.shelveId},#{item.row},#{item.column},#{item.status})