diff --git a/libs/code_scan/TestJNI.dll b/libs/code_scan/TestJNI.dll new file mode 100644 index 0000000..ab9e6a6 Binary files /dev/null and b/libs/code_scan/TestJNI.dll differ diff --git a/libs/code_scan/libCyclops.dll b/libs/code_scan/libCyclops.dll new file mode 100644 index 0000000..a926266 Binary files /dev/null and b/libs/code_scan/libCyclops.dll differ diff --git a/libs/code_scan/libiconv.dll b/libs/code_scan/libiconv.dll new file mode 100644 index 0000000..a31664d Binary files /dev/null and b/libs/code_scan/libiconv.dll differ diff --git a/libs/code_scan/libnlopt-0.dll b/libs/code_scan/libnlopt-0.dll new file mode 100644 index 0000000..beaff3a Binary files /dev/null and b/libs/code_scan/libnlopt-0.dll differ diff --git a/libs/code_scan/lpv.dll b/libs/code_scan/lpv.dll new file mode 100644 index 0000000..197e755 Binary files /dev/null and b/libs/code_scan/lpv.dll differ diff --git a/libs/code_scan/opencv_world341.dll b/libs/code_scan/opencv_world341.dll new file mode 100644 index 0000000..c507654 Binary files /dev/null and b/libs/code_scan/opencv_world341.dll differ diff --git a/web/src/main/java/com/zhehekeji/web/entity/Street.java b/web/src/main/java/com/zhehekeji/web/entity/Street.java index 7fd37f9..2247a57 100644 --- a/web/src/main/java/com/zhehekeji/web/entity/Street.java +++ b/web/src/main/java/com/zhehekeji/web/entity/Street.java @@ -77,6 +77,8 @@ public class Street { @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") private LocalDateTime createTime; - @ApiModelProperty("样式 默认0 0:1个铺满 1:上下两个视频 2:2*2 3:3*3 4:4*4 5:5*5 6:6*6 8:8*8") - private Integer videoStyle; + @ApiModelProperty("样式 行列数量") + private Integer videoStyleRow; + + private Integer videoStyleColumn; } diff --git a/web/src/main/java/com/zhehekeji/web/lib/BarCodeScan.java b/web/src/main/java/com/zhehekeji/web/lib/BarCodeScan.java new file mode 100644 index 0000000..ff36f20 --- /dev/null +++ b/web/src/main/java/com/zhehekeji/web/lib/BarCodeScan.java @@ -0,0 +1,30 @@ +package com.zhehekeji.web.lib; + +import java.lang.reflect.Field; + +public class BarCodeScan { + + public static native String detectBestBarCode(String filePath); + + static + { + try{ + String path = System.getProperty("user.dir")+"\\libs\\code_scan"; + System.setProperty("java.library.path", path); + Field fieldSysPath = ClassLoader.class.getDeclaredField("sys_paths"); + fieldSysPath.setAccessible(true); + fieldSysPath.set(null, null); + + System.loadLibrary("opencv_world341"); + System.loadLibrary("libiconv"); + System.loadLibrary("libnlopt-0"); + System.loadLibrary("lpv"); + System.loadLibrary("libCyclops"); + System.loadLibrary("TestJNI"); + }catch(Exception e) + { + System.out.println(e); + } + + } +} diff --git a/web/src/main/java/com/zhehekeji/web/lib/CaptureRunnable.java b/web/src/main/java/com/zhehekeji/web/lib/CaptureRunnable.java index 29531fa..e3f9b43 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/CaptureRunnable.java +++ b/web/src/main/java/com/zhehekeji/web/lib/CaptureRunnable.java @@ -69,14 +69,21 @@ public class CaptureRunnable implements Runnable { stock.setColumn(column); stock.setRow(row); stock.setStatus(0); + if (orderInfo.getIsPre()) { + stock.setPreoperationPic(path); + } else { + stock.setOveroperationPic(path); + } + stock.setOrderNum(order.getOrderNum()); + stockMapper.insert(stock); + }else { + if (orderInfo.getIsPre()) { + stock.setPreoperationPic(path); + } else { + stock.setOveroperationPic(path); + } + stockMapper.updateById(stock); } - if (orderInfo.getIsPre()) { - stock.setOveroperationPic(path); - } else { - stock.setOveroperationPic(path); - } - stock.setOrderNum(order.getOrderNum()); - stockMapper.updateById(stock); String pics = order.getPicPaths(); if (StringUtils.isEmpty(pics)) { order.setPicPaths(path); @@ -88,6 +95,8 @@ public class CaptureRunnable implements Runnable { update.setPicPaths(order.getPicPaths()); log.info(" update order set pics:{},orderNum:{}", update.getPicPaths(), orderInfo.getOrderNum()); orderMapper.updateById(update); + // 盘点历史纪录 + } } diff --git a/web/src/main/java/com/zhehekeji/web/pojo/realTime/RealTime.java b/web/src/main/java/com/zhehekeji/web/pojo/realTime/RealTime.java index 1da6b40..6062b29 100644 --- a/web/src/main/java/com/zhehekeji/web/pojo/realTime/RealTime.java +++ b/web/src/main/java/com/zhehekeji/web/pojo/realTime/RealTime.java @@ -14,7 +14,8 @@ public class RealTime { private String streetName; @ApiModelProperty("样式 默认0 0:1个铺满 1:上下两个视频 2:2*2 3:3*3 4:4*4 5:5*5 6:6*6 8:8*8") - private Integer videoStyle; + private Integer videoStyleRow; + private Integer videoStyleColumn; private List cameras; } 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 137bbba..62990fc 100644 --- a/web/src/main/java/com/zhehekeji/web/service/MyProtocolDecoder.java +++ b/web/src/main/java/com/zhehekeji/web/service/MyProtocolDecoder.java @@ -100,14 +100,15 @@ public class MyProtocolDecoder extends FixedLengthFrameDecoder { 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) { + plcService.orderStop(plcId, plcOrderInfo.getOrderNum()); + 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)) { log.info("action code,{} plcId:{},orderInfo:{}", code, plcId, plcOrderInfo.toString()); @@ -172,11 +173,4 @@ public class MyProtocolDecoder extends FixedLengthFrameDecoder { return warn; } - public static void main(String[] args) { - byte tByte = 4; - String tString = Integer.toBinaryString((tByte & 0xFF) + 0x100).substring(1); - System.out.println(tString); - } - - } diff --git a/web/src/main/java/com/zhehekeji/web/service/OrderService.java b/web/src/main/java/com/zhehekeji/web/service/OrderService.java index 633ec57..682d2b6 100644 --- a/web/src/main/java/com/zhehekeji/web/service/OrderService.java +++ b/web/src/main/java/com/zhehekeji/web/service/OrderService.java @@ -64,10 +64,10 @@ public class OrderService { String[] pics = orderVO.getPicPaths().split(","); orderVO.setPics(pics); } - if(cameraType == 1 && StringUtils.isEmpty(orderVO.getVideoPath1())){ + if(cameraType == 1 && !StringUtils.isEmpty(orderVO.getVideoPath1())){ orderVO.setCmd1(" VSPlayer "+ orderVO.getVideoPath1()); } - if(cameraType == 1 && StringUtils.isEmpty(orderVO.getVideoPath2())){ + if(cameraType == 1 && !StringUtils.isEmpty(orderVO.getVideoPath2())){ orderVO.setCmd1(" VSPlayer "+ orderVO.getVideoPath2()); } orderVO.setGoodsLocation(location(orderVO,streetMap.get(orderVO.getStreetId()))); 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 739a185..258f684 100644 --- a/web/src/main/java/com/zhehekeji/web/service/PlcService.java +++ b/web/src/main/java/com/zhehekeji/web/service/PlcService.java @@ -44,6 +44,9 @@ public class PlcService { @Value("${mp4Path}") private String mp4Path; + @Value("${mediaPath}") + private String mediaPath; + @Resource private StreetService streetService; @Resource @@ -334,7 +337,14 @@ public class PlcService { } } - + /** + * 从货架 行列找到 前后前后两个照片 + * @param plcOrderInfo + * @param plcId + * @param barCodeSys + * @param boxNumSys + * @param boxNumAlgo + */ public void recordStock(PlcOrderInfo plcOrderInfo, String plcId, String barCodeSys, int boxNumSys, int boxNumAlgo) { Street street = streetService.getStreetByPlcId(plcId); @@ -353,6 +363,9 @@ public class PlcService { if(stock != null) { stock.setCategory(barCodeSys); stock.setCount(boxNumSys); + String prevFile = mediaPath+stock.getPreoperationPic(); + String overFile = mediaPath+stock.getOveroperationPic(); + String code = BarCodeScan.detectBestBarCode(overFile); if(boxNumSys == boxNumAlgo) { stock.setStatus(StockStatus.SUCCESS.getStatus()); log.info("核对正确"); @@ -361,14 +374,9 @@ public class PlcService { 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); } + //核对记录 + } } } diff --git a/web/src/main/java/com/zhehekeji/web/service/RealTimeService.java b/web/src/main/java/com/zhehekeji/web/service/RealTimeService.java index c5a20e5..d753e38 100644 --- a/web/src/main/java/com/zhehekeji/web/service/RealTimeService.java +++ b/web/src/main/java/com/zhehekeji/web/service/RealTimeService.java @@ -1,6 +1,5 @@ package com.zhehekeji.web.service; -import com.baomidou.mybatisplus.extension.api.R; import com.zhehekeji.web.entity.Camera; import com.zhehekeji.web.entity.Street; import com.zhehekeji.web.mapper.CameraMapper; @@ -23,8 +22,11 @@ public class RealTimeService { @Resource private CameraMapper cameraMapper; - @Value("${videoStyleAll}") - private Integer videoStyleAll; + @Value("${videoStyleRow}") + private Integer videoStyleRow; + + @Value("${videoStyleColumn}") + private Integer videoStyleColumn; public List realTimes(){ List streets = streetMapper.selectByMap(new HashMap<>(0)); @@ -38,7 +40,8 @@ public class RealTimeService { RealTime realTime = new RealTime(); realTime.setStreetId(street.getId()); realTime.setStreetName(street.getName()); - realTime.setVideoStyle(street.getVideoStyle()); + realTime.setVideoStyleColumn(street.getVideoStyleColumn()); + realTime.setVideoStyleRow(street.getVideoStyleRow()); List cameraList = new ArrayList<>(2); if(cameraMap.get(street.getCamera1Id()) != null){ cameraList.add(cameraMap.get(street.getCamera1Id())); @@ -53,7 +56,8 @@ public class RealTimeService { all.setStreetId(0); all.setStreetName("全部"); all.setCameras(cameras); - all.setVideoStyle(videoStyleAll); + all.setVideoStyleRow(videoStyleRow); + all.setVideoStyleColumn(videoStyleColumn); realTimes.add(all); return realTimes; 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 611c4f3..f23d4e9 100644 --- a/web/src/main/java/com/zhehekeji/web/service/StreetService.java +++ b/web/src/main/java/com/zhehekeji/web/service/StreetService.java @@ -32,7 +32,8 @@ public class StreetService { List shelves = check(street); street.setCreateTime(LocalDateTime.now()); street.setUpdateTime(LocalDateTime.now()); - street.setVideoStyle(0); + street.setVideoStyleRow(1); + street.setVideoStyleColumn(1); try { streetMapper.insert(street); } catch (DuplicateKeyException e) { diff --git a/web/src/main/java/com/zhehekeji/web/service/WarnService.java b/web/src/main/java/com/zhehekeji/web/service/WarnService.java index f837f94..83afcb4 100644 --- a/web/src/main/java/com/zhehekeji/web/service/WarnService.java +++ b/web/src/main/java/com/zhehekeji/web/service/WarnService.java @@ -34,10 +34,10 @@ public class WarnService { int remainingSeconds = seconds.intValue() % 60; String timeLength = String.format("%02d:%02d", minutes,remainingSeconds); warnVO.setTimeLength(timeLength); - if(cameraType == 1 && StringUtils.isEmpty(warnVO.getVideoPath1())){ + if(cameraType == 1 && !StringUtils.isEmpty(warnVO.getVideoPath1())){ warnVO.setCmd1(" VSPlayer "+ warnVO.getVideoPath1()); } - if(cameraType == 1 && StringUtils.isEmpty(warnVO.getVideoPath2())){ + if(cameraType == 1 && !StringUtils.isEmpty(warnVO.getVideoPath2())){ warnVO.setCmd1(" VSPlayer "+ warnVO.getVideoPath2()); } } diff --git a/web/src/main/resources/application-dev.yml b/web/src/main/resources/application-dev.yml index 162f6eb..e1244e0 100644 --- a/web/src/main/resources/application-dev.yml +++ b/web/src/main/resources/application-dev.yml @@ -48,6 +48,6 @@ mp4Path: d:\\data\mp4\ cameraType: 1 # ------------服务端类型 0:TCP 1:JSON serverMode: 1 -# ------------ 实时视频流 全部页面的格式 -# --------------默认0 0:1个铺满 1:上下两个视频 2:2*2 3:3*3 4:4*4 5:5*5 6:6*6 8:8*8 -videoStyleAll : 2 +# ------------ 实时视频流 全部页面的格式 行列数量 +videoStyleRow : 2 +videoStyleColumn : 2 diff --git a/web/src/main/resources/application-prod.yml b/web/src/main/resources/application-prod.yml index 0bfb371..c0e821a 100644 --- a/web/src/main/resources/application-prod.yml +++ b/web/src/main/resources/application-prod.yml @@ -12,15 +12,15 @@ spring: maxWait: 60000 minEvictableIdleTimeMillis: 300000 minIdle: 15 - password: lipoLiPo + password: Leaper@123 poolPreparedStatements: true testOnBorrow: true testOnReturn: false testWhileIdle: false timeBetweenEvictionRunsMillis: 60000 type: com.alibaba.druid.pool.DruidDataSource - url: jdbc:mysql://47.99.98.250:33306/lipo_duoji?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8 - username: lipo + url: jdbc:mysql://115.236.65.98:12004/lia_duoji?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8 + username: root validationQuery: SELECT 1 FROM DUAL zhehe: common: @@ -44,4 +44,10 @@ cameraPort: 37777 # -----图片 mp4下载地址 mediaPath: d:\\data\media\ mp4Path: d:\\data\mp4\ -# ------------ +# ------------球機選擇--- 0:中威 1:海康 +cameraType: 1 +# ------------服务端类型 0:TCP 1:JSON +serverMode: 1 +# ------------ 实时视频流 全部页面的格式 +# --------------默认0 0:1个铺满 1:上下两个视频 2:2*2 3:3*3 4:4*4 5:5*5 6:6*6 8:8*8 +videoStyleAll : 2 \ 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 62b2da6..c0e821a 100644 --- a/web/src/main/resources/application-test.yml +++ b/web/src/main/resources/application-test.yml @@ -12,15 +12,15 @@ spring: maxWait: 60000 minEvictableIdleTimeMillis: 300000 minIdle: 15 - password: lipoLiPo + password: Leaper@123 poolPreparedStatements: true testOnBorrow: true testOnReturn: false testWhileIdle: false timeBetweenEvictionRunsMillis: 60000 type: com.alibaba.druid.pool.DruidDataSource - url: jdbc:mysql://47.98.255.48:8008/lipo_duoji?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8 - username: lipo + url: jdbc:mysql://115.236.65.98:12004/lia_duoji?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8 + username: root validationQuery: SELECT 1 FROM DUAL zhehe: common: @@ -41,7 +41,13 @@ cameraPassword: admin123 cameraUser: admin cameraPort: 37777 # ------------ -# -----图片 mp4下载地址 谨慎修改 +# -----图片 mp4下载地址 mediaPath: d:\\data\media\ mp4Path: d:\\data\mp4\ -# ------------ +# ------------球機選擇--- 0:中威 1:海康 +cameraType: 1 +# ------------服务端类型 0:TCP 1:JSON +serverMode: 1 +# ------------ 实时视频流 全部页面的格式 +# --------------默认0 0:1个铺满 1:上下两个视频 2:2*2 3:3*3 4:4*4 5:5*5 6:6*6 8:8*8 +videoStyleAll : 2 \ No newline at end of file