盘点测试

merge-requests/5/merge
qiushui 4 years ago
parent 866c753932
commit 46928100de

@ -1,33 +1,55 @@
package com.aijiao.test; package codeDetector;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import java.lang.reflect.Field; import java.lang.reflect.Field;
@Slf4j @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; String code = null;
long startTime = System.currentTimeMillis(); long startTime = System.currentTimeMillis();
System.out.println("start:");
System.out.println(startTime);
//只要code为空或者图片为Empty就继续查直到5s为止 //只要code为空或者图片为Empty就继续查直到5s为止
while ((code == null || "Empty".equals(code)) && (System.currentTimeMillis() - startTime < 5000)){ while ((code == null || "ImageEmpty".equals(code)) && (System.currentTimeMillis() - startTime < 5000)){
try { try {
Thread.sleep(200); Thread.sleep(200);
} catch (InterruptedException e) { } catch (InterruptedException e) {
e.printStackTrace(); e.printStackTrace();
} }
code = JNIDemo.detectBestBarCode(filePath); code = BarcodeDetector.detectBestBarCode(filePath,codeTypes);
} }
System.out.println(System.currentTimeMillis());
return code; return code;
} }
static static
{ {
try{ try{
@ -44,7 +66,7 @@ public class JNIDemo {
System.loadLibrary("libnlopt-0"); System.loadLibrary("libnlopt-0");
System.loadLibrary("lpv"); System.loadLibrary("lpv");
System.loadLibrary("libCyclops"); System.loadLibrary("libCyclops");
System.loadLibrary("TestJNI"); System.loadLibrary("BarcodeDetectorJNI");
}catch(Exception e) }catch(Exception e)
{ {
log.error("detectBestBarCode:"+e); log.error("detectBestBarCode:"+e);
@ -55,7 +77,8 @@ public class JNIDemo {
public static void main(String[] args) { public static void main(String[] args) {
//String code = barCodeScan.detectBestBarCode("d:\\data\\media\\2022\\01\\12\\10\\camera25\\1324-hfhaegaaag.jpg"); //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); System.out.println(code);
} }
} }

@ -1,21 +0,0 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* 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

@ -51,8 +51,6 @@ public class ConfigProperties {
private Long delayCaptureTime; private Long delayCaptureTime;
private Long delayScanTime;
} }
@Data @Data
@ -88,5 +86,7 @@ public class ConfigProperties {
public static class ScanCodeMode{ public static class ScanCodeMode{
private Integer tray; private Integer tray;
private Integer goods; private Integer goods;
private int [] goodsCodeTypes;
private int [] trayCodeTypes;
} }
} }

@ -1,19 +1,9 @@
package com.zhehekeji.web.controller; 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.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 com.zhehekeji.web.service.TestService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -29,9 +19,9 @@ public class TestController {
@ApiOperation("新增") @ApiOperation("新增")
@GetMapping("/check/{id}") @GetMapping("/check/{id}/{leftRight}")
public Result save(@PathVariable Integer id){ public Result test(@PathVariable Integer id,@PathVariable Integer leftRight){
testService.CheckTest(id); testService.CheckTest(id,leftRight);
return Result.success(); return Result.success();
} }

@ -6,12 +6,16 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@Data @Data
@TableName("`stock`") @TableName("`stock`")
@NoArgsConstructor
@AllArgsConstructor
public class Stock { public class Stock {
@TableId(type = IdType.AUTO) @TableId(type = IdType.AUTO)

@ -9,7 +9,7 @@ import java.util.List;
public interface StockMapper extends BaseMapper<Stock> { public interface StockMapper extends BaseMapper<Stock> {
void batchInsert(List<Stock> stocks); void batchInsert(@Param("stocks") List<Stock> stocks);
void insertOrUpdate(@Param("req") Stock stock); void insertOrUpdate(@Param("req") Stock stock);

@ -1,6 +1,5 @@
package com.zhehekeji.web.service; package com.zhehekeji.web.service;
import com.aijiao.test.JNIDemo;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.zhehekeji.common.util.PathUtil; import com.zhehekeji.common.util.PathUtil;
import com.zhehekeji.web.config.ConfigProperties; import com.zhehekeji.web.config.ConfigProperties;
@ -17,6 +16,10 @@ import org.springframework.util.StringUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; 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 * @Description plc
@ -54,8 +57,10 @@ public class PlcService {
private CameraControlModule cameraControlModule; private CameraControlModule cameraControlModule;
@Resource @Resource
private SensorService sensorService; 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){ public void setCameraControlModule(CameraControlModule cameraControlModule){
this.cameraControlModule = cameraControlModule; this.cameraControlModule = cameraControlModule;
@ -465,26 +470,10 @@ public class PlcService {
e.printStackTrace(); e.printStackTrace();
} }
String path = cameraCapture(cameraId,false,null); 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; 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; Boolean trayCheck = Boolean.TRUE;
//如果是用扫码枪 扫 托盘码,就直接扫
if(configProperties.getScanCodeMode().getTray() == 2){ if(configProperties.getScanCodeMode().getTray() == 2){
//托盘使用sick扫码枪 //托盘使用sick扫码枪
if(configProperties.getSensor().getType() == 1){ if(configProperties.getSensor().getType() == 1){
@ -504,68 +493,13 @@ public class PlcService {
trayCheck = wmsTrayCode.equals(trayCode); trayCheck = wmsTrayCode.equals(trayCode);
} }
} }
} }
}
log.info("code:{}",scanCode);
//核对异常
Integer status = 1;
//托盘和货物都正确
if(trayCheck && codeCheck){
status = 2;
} }
if(stock == null){ StockCheckRunnable stockCheckRunnable = new StockCheckRunnable(street,plcCmdInfo,cmdCode,stockMapper,path,checkLogMapper,configProperties.getScanCodeMode().getGoods(),wmsCode,wmsTrayCode,trayCode,trayCheck,configProperties);
stock = new Stock(); threadPoolExecutor.execute(stockCheckRunnable);
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);
long end = System.currentTimeMillis(); long end = System.currentTimeMillis();
long s = end - startTime; long s = end - startTime;
log.info("time:{}millisecond",s); 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);
}
} }

@ -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);
}
}

@ -13,6 +13,7 @@ import com.zhehekeji.web.mapper.CheckLogMapper;
import com.zhehekeji.web.mapper.StockMapper; import com.zhehekeji.web.mapper.StockMapper;
import com.zhehekeji.web.pojo.category.PageSearch; import com.zhehekeji.web.pojo.category.PageSearch;
import com.zhehekeji.web.pojo.stock.*; import com.zhehekeji.web.pojo.stock.*;
import io.swagger.models.auth.In;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -97,13 +98,14 @@ public class StockService {
List<Stock>stockList = new ArrayList<>(); List<Stock>stockList = new ArrayList<>();
//默认全部盘点正确
Map<String,Integer> rowTabStatus = new LinkedHashMap<>(); Map<String,Integer> rowTabStatus = new LinkedHashMap<>();
for(String rowTab: rowColumnStatus.getRowTabs()){ for(String rowTab: rowColumnStatus.getRowTabs()){
rowTabStatus.put(rowTab,0); rowTabStatus.put(rowTab,2);
} }
Map<String,Integer> columnTabStatus = new LinkedHashMap<>(); Map<String,Integer> columnTabStatus = new LinkedHashMap<>();
for(String column:rowColumnStatus.getColumnTabs()){ for(String column:rowColumnStatus.getColumnTabs()){
columnTabStatus.put(column,0); columnTabStatus.put(column,2);
} }
List<Stock> stocks = stockMapper.selectList(new QueryWrapper<Stock>().select("status","`row`","`column`","`shelve_id`").eq("`shelve_id`",rowColumnStatus.getShelveId())); List<Stock> stocks = stockMapper.selectList(new QueryWrapper<Stock>().select("status","`row`","`column`","`shelve_id`").eq("`shelve_id`",rowColumnStatus.getShelveId()));
if(CollectionUtils.isEmpty(stocks)){ if(CollectionUtils.isEmpty(stocks)){
@ -174,40 +176,6 @@ public class StockService {
} }
public static void main(String[] args) {
List<Stock> 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<Integer,Map<Integer,Boolean>> map = new HashMap<>();
Map<Integer,Boolean> rowMap = new HashMap<>();
readyList.forEach(stockw -> {
if(map.get(stockw.getRow()) == null){
Map<Integer,Boolean> columnMap = new HashMap<>();
columnMap.put(stockw.getColumn(),true);
map.put(stockw.getRow(),columnMap);
}else {
Map<Integer,Boolean> 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盘点正确 //0 : 未盘点 1盘点异常 2盘点正确
private void tabStatus(Stock stock,Map<String,Integer> tabStatus,String tab){ private void tabStatus(Stock stock,Map<String,Integer> tabStatus,String tab){
@ -215,13 +183,11 @@ public class StockService {
tabStatus.put(tab,stock.getStatus()); tabStatus.put(tab,stock.getStatus());
}else { }else {
Integer status = tabStatus.get(tab); Integer status = tabStatus.get(tab);
if(status == 1 || stock.getStatus() == 1){ if(stock.getStatus() == 1){
//盘点异常为最高 //盘点异常为最高
tabStatus.put(tab,1); tabStatus.put(tab,1);
}else if(status == 0 || stock.getStatus() == 0) { }else if(stock.getStatus() == 0 && status != 1) {
tabStatus.put(tab, 0); 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<String,Object> map = new HashMap<>();
map.put("shelve_id",shelveId);
stockMapper.deleteByMap(map);
for(int i = 1;i<=row;i++){
List<Stock> 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);
}
}
} }

@ -39,6 +39,8 @@ public class StreetService {
private NettyClient nettyClient; private NettyClient nettyClient;
@Resource @Resource
private LightSourceMapper lightSourceMapper; private LightSourceMapper lightSourceMapper;
@Resource
private StockService stockService;
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@ -93,9 +95,29 @@ public class StreetService {
lightSourceMapper.insert(lightSource); lightSourceMapper.insert(lightSource);
} }
streetVO.setId(street.getId()); 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; return street;
} }
@Cacheable(value = "streetByPlcId",key = "#plcId") @Cacheable(value = "streetByPlcId",key = "#plcId")
public Street getStreetByPlcId(String plcId) { public Street getStreetByPlcId(String plcId) {
Street street = streetMapper.getStreetByPlcId(plcId); Street street = streetMapper.getStreetByPlcId(plcId);

@ -22,18 +22,24 @@ public class TestService {
public void CheckTest(Integer StreetId){ public void CheckTest(Integer StreetId,Integer leftRight){
if(!isRunning){ if(!isRunning){
isRunning = Boolean.TRUE; isRunning = Boolean.TRUE;
Street street = streetService.streetById(StreetId); Street street = streetService.streetById(StreetId);
Integer row = street.getLeftRow(); Integer row = street.getLeftRow();
Integer column = street.getLeftColumn(); Integer column = street.getLeftColumn();
if(leftRight == 2){
row = street.getRightRow();
column = street.getRightColumn();
}
for(int i = 1;i<=row;i++){ for(int i = 1;i<=row;i++){
for(int j = 0; j<= column;j++){ for(int j = 0; j<= column;j++){
String code = "3224112150069"; String code = "3224112150069";
String taskId = i +"-"+ j+"-"+LocalDateTime.now().format(DateTimeFormatter.ofPattern("hhmmss")); 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); PlcCmdInfo plcCmdInfo = new PlcCmdInfo(street.getPlcId(),taskId,1,leftRight,j,i,1,1,1,1,1,1);
plcService.check(plcCmdInfo,"E1",code,"21234-trayCode"); int co = j%4 + 1;
plcService.check(plcCmdInfo,"E"+co,code,"21234-trayCode");
try { try {
Thread.sleep(1000); Thread.sleep(1000);
} catch (InterruptedException e) { } catch (InterruptedException e) {

@ -67,4 +67,7 @@ sensor:
scanCodeMode: scanCodeMode:
tray: 2 tray: 2
goods: 1 goods: 1
goodsCodeTypes:
- 14
trayCodeTypes:
- 14

@ -33,9 +33,7 @@ cameraConfig:
cameraPort: 37777 cameraPort: 37777
videoServer: 127.0.0.1:8083 videoServer: 127.0.0.1:8083
#相机抓图延迟 毫秒,这个延迟是等待球机球机转动到位,然后拍照的 #相机抓图延迟 毫秒,这个延迟是等待球机球机转动到位,然后拍照的
delayCaptureTime: 2200 delayCaptureTime: 2500
#OCR识别延迟 毫秒
delayScanTime: 1500
# ------------ # ------------
# -----图片 mp4下载地址 # -----图片 mp4下载地址
savePath: savePath:
@ -65,4 +63,8 @@ sensor:
# 扫码模式 1球机扫码 2扫码枪 # 扫码模式 1球机扫码 2扫码枪
scanCodeMode: scanCodeMode:
tray: 0 tray: 0
goods: 1 goods: 1
goodsCodeTypes:
- 14
trayCodeTypes:
- 14

@ -65,4 +65,8 @@ sensor:
# 扫码模式 1球机扫码 2扫码枪 # 扫码模式 1球机扫码 2扫码枪
scanCodeMode: scanCodeMode:
tray: 2 tray: 2
goods: 1 goods: 1
goodsCodeTypes:
- 14
trayCodeTypes:
- 14

@ -4,10 +4,10 @@
<insert id="batchInsert" parameterType="java.util.List"> <insert id="batchInsert" parameterType="java.util.List">
insert into stock( insert into stock(
category,count,shelve_id,row,column,status,export_time `shelve_id`,`row`,`column`,`status`
) values ) values
<foreach collection="stocks" item="item" separator=","> <foreach collection="stocks" item="item" separator=",">
(#{item.category},#{item.count},#{item.shelveId},#{item.row},#{item.column},#{item.status},#{item.exportTime}) (#{item.shelveId},#{item.row},#{item.column},#{item.status})
</foreach> </foreach>
</insert> </insert>

Loading…
Cancel
Save