From 0004020a9192b090afd213fef4fe39b2fd11b3bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LAPTOP-S9HJSOEB=5C=E6=98=8A=E5=A4=A9?= Date: Mon, 23 Jun 2025 15:49:19 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=87=E7=94=A8=E6=89=8B=E5=8A=A8=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E7=BB=93=E6=9D=9F=E5=92=8C=E5=BC=80=E5=A7=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lightsource/LightSourceController.java | 2 +- .../admin/street/StreetController.java | 2 +- .../admin/street/vo/StreetSaveReqVO.java | 3 +- .../dal/dataobject/street/LightSourceDO.java | 9 +- .../dal/mysql/street/LightSourceMapper.java | 8 +- .../camera/framework/light/LightFactory.java | 57 +++++++----- .../framework/netty/ksec/KescFilter.java | 1 + .../framework/netty/ksec/KsecDecoder.java | 29 ++++-- .../CheckIntellBlinkDecoder.java | 1 + .../executor/AlgorithmDelayTask.java | 1 + .../lightsource/LightSourceService.java | 9 +- .../lightsource/LightSourceServiceImpl.java | 15 ++-- .../camera/service/plc/PLCServiceImpl.java | 88 ++++++++----------- .../service/postConstruct/LightConstruct.java | 27 ++++++ .../service/scan/ScanGunScanServiceImpl.java | 8 +- .../camera/service/street/StreetService.java | 2 +- .../service/street/StreetServiceImpl.java | 4 +- 17 files changed, 155 insertions(+), 111 deletions(-) create mode 100644 yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/service/postConstruct/LightConstruct.java diff --git a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/controller/admin/lightsource/LightSourceController.java b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/controller/admin/lightsource/LightSourceController.java index fec2867..279fae7 100644 --- a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/controller/admin/lightsource/LightSourceController.java +++ b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/controller/admin/lightsource/LightSourceController.java @@ -9,7 +9,7 @@ import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.module.camera.controller.admin.lightsource.vo.LightSourcePageReqVO; import cn.iocoder.yudao.module.camera.controller.admin.lightsource.vo.LightSourceRespVO; import cn.iocoder.yudao.module.camera.controller.admin.lightsource.vo.LightSourceSaveReqVO; -import cn.iocoder.yudao.module.camera.dal.dataobject.lightsource.LightSourceDO; +import cn.iocoder.yudao.module.camera.dal.dataobject.street.LightSourceDO; import cn.iocoder.yudao.module.camera.service.lightsource.LightSourceService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; diff --git a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/controller/admin/street/StreetController.java b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/controller/admin/street/StreetController.java index 05f6845..ef80773 100644 --- a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/controller/admin/street/StreetController.java +++ b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/controller/admin/street/StreetController.java @@ -9,9 +9,9 @@ import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.module.camera.controller.admin.street.vo.StreetPageReqVO; import cn.iocoder.yudao.module.camera.controller.admin.street.vo.StreetRespVO; import cn.iocoder.yudao.module.camera.controller.admin.street.vo.StreetSaveReqVO; -import cn.iocoder.yudao.module.camera.dal.dataobject.lightsource.LightSourceDO; import cn.iocoder.yudao.module.camera.dal.dataobject.rfid.RfidDO; import cn.iocoder.yudao.module.camera.dal.dataobject.sensorgun.SensorGunDO; +import cn.iocoder.yudao.module.camera.dal.dataobject.street.LightSourceDO; import cn.iocoder.yudao.module.camera.dal.dataobject.street.StreetDO; import cn.iocoder.yudao.module.camera.framework.light.LightFactory; import cn.iocoder.yudao.module.camera.service.lightsource.LightSourceService; diff --git a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/controller/admin/street/vo/StreetSaveReqVO.java b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/controller/admin/street/vo/StreetSaveReqVO.java index 97a1008..314aeb5 100644 --- a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/controller/admin/street/vo/StreetSaveReqVO.java +++ b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/controller/admin/street/vo/StreetSaveReqVO.java @@ -1,8 +1,9 @@ package cn.iocoder.yudao.module.camera.controller.admin.street.vo; -import cn.iocoder.yudao.module.camera.dal.dataobject.lightsource.LightSourceDO; + import cn.iocoder.yudao.module.camera.dal.dataobject.rfid.RfidDO; import cn.iocoder.yudao.module.camera.dal.dataobject.sensorgun.SensorGunDO; +import cn.iocoder.yudao.module.camera.dal.dataobject.street.LightSourceDO; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; import lombok.Data; diff --git a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/dal/dataobject/street/LightSourceDO.java b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/dal/dataobject/street/LightSourceDO.java index 5e395b8..9b34a03 100644 --- a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/dal/dataobject/street/LightSourceDO.java +++ b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/dal/dataobject/street/LightSourceDO.java @@ -1,8 +1,11 @@ -package cn.iocoder.yudao.module.camera.dal.dataobject.lightsource; +package cn.iocoder.yudao.module.camera.dal.dataobject.street; -import lombok.*; -import com.baomidou.mybatisplus.annotation.*; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; +import org.glassfish.jaxb.core.v2.TODO; /** * 光源 DO diff --git a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/dal/mysql/street/LightSourceMapper.java b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/dal/mysql/street/LightSourceMapper.java index 1ee91d4..5cdaad8 100644 --- a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/dal/mysql/street/LightSourceMapper.java +++ b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/dal/mysql/street/LightSourceMapper.java @@ -1,11 +1,11 @@ -package cn.iocoder.yudao.module.camera.dal.mysql.lightsource; - -import java.util.*; +package cn.iocoder.yudao.module.camera.dal.mysql.street; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.module.camera.dal.dataobject.lightsource.LightSourceDO; +import cn.iocoder.yudao.module.camera.dal.dataobject.street.LightSourceDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 光源 Mapper * diff --git a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/framework/light/LightFactory.java b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/framework/light/LightFactory.java index 2afbb7b..967546f 100644 --- a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/framework/light/LightFactory.java +++ b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/framework/light/LightFactory.java @@ -1,10 +1,9 @@ package cn.iocoder.yudao.module.camera.framework.light; -import cn.iocoder.yudao.module.camera.dal.dataobject.lightsource.LightSourceDO; -import cn.iocoder.yudao.module.camera.framework.light.damLightSource.JYDAMEquip; -import cn.iocoder.yudao.module.camera.framework.light.damLightSource.JYDamHelper; -import cn.iocoder.yudao.module.camera.framework.light.hikLightSource.HikControlSocket; + +import cn.iocoder.yudao.module.camera.dal.dataobject.street.LightSourceDO; import lombok.extern.slf4j.Slf4j; +import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -21,29 +20,43 @@ public class LightFactory { */ public static void LightController(LightSourceDO lightSourceRespVO, int type){ if(type == 0) { - if (lightSourceRespVO.getType() == 1) { - - JYDAMEquip equip = JYDamHelper.Connect(lightSourceRespVO.getIp(),Integer.parseInt( lightSourceRespVO.getPort())); - JYDamHelper.closeDO(equip, 1); - } else if (lightSourceRespVO.getType() == 2) { - HikControlSocket.openLight(lightSourceRespVO.getIp(), Integer.parseInt( lightSourceRespVO.getPort()),1, 0); - } else if (lightSourceRespVO.getType() == 3) { - lightController(lightSourceRespVO.getIp(),Integer.parseInt( lightSourceRespVO.getPort()), 0); - } + + relay(lightSourceRespVO.getIp(), Integer.parseInt( lightSourceRespVO.getPort()), 0); }else { - if (lightSourceRespVO.getType() == 1) { - - JYDAMEquip equip = JYDamHelper.Connect(lightSourceRespVO.getIp(),Integer.parseInt( lightSourceRespVO.getPort())); - JYDamHelper.openDO(equip, 1); - } else if (lightSourceRespVO.getType() == 2) { - HikControlSocket.openLight(lightSourceRespVO.getIp(), Integer.parseInt( lightSourceRespVO.getPort()),1, 1); - } else if (lightSourceRespVO.getType() == 3) { - lightController(lightSourceRespVO.getIp(),Integer.parseInt( lightSourceRespVO.getPort()), 1); - } + relay(lightSourceRespVO.getIp(), Integer.parseInt( lightSourceRespVO.getPort()), 1); } } + public static void relay(String host, int port, int status) { + byte[] data; + byte[] data1; + if (status == 1) { + data = new byte[]{0x01, 0x05, 0x00, 0x01, (byte) 0xFF, 0x00, (byte) 0xDD, (byte) 0xFA}; + data1 = new byte[]{0x01, 0x05, 0x00, 0x00, (byte) 0xFF, 0x00, (byte) 0x8C, (byte) 0x3A}; + } else { + data = new byte[]{0x01, 0x05, 0x00, 0x01, (byte) 0x00, 0x00, (byte) 0x9C, (byte) 0x0A}; + data1 = new byte[]{0x01, 0x05, 0x00, 0x00, (byte) 0x00, 0x00, (byte) 0xcd, (byte) 0xca}; + } + + + try (Socket socket = new Socket(host, port); + DataOutputStream outputStream = new DataOutputStream(socket.getOutputStream())) { + socket.setSoTimeout(1000); + // 发送数据 + outputStream.write(data); + outputStream.flush(); + outputStream.write(data1); + outputStream.flush(); + + System.out.println("Data sent successfully."); + + } catch (IOException e) { + System.err.println("Error sending data: " + e.getMessage()); + e.printStackTrace(); + } + } + public static void lightController(String ip ,Integer port,Integer stat){ Socket socket = new Socket(); OutputStream os = null; diff --git a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/framework/netty/ksec/KescFilter.java b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/framework/netty/ksec/KescFilter.java index 0e71968..7eaa31a 100644 --- a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/framework/netty/ksec/KescFilter.java +++ b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/framework/netty/ksec/KescFilter.java @@ -35,6 +35,7 @@ public class KescFilter extends ChannelInitializer { ph.addLast(new IdleStateHandler(0, 4, 0, TimeUnit.SECONDS)); ByteBuf byteBuf = Unpooled.copiedBuffer(">".getBytes()); ph.addLast(new KsecDecoder(10000,byteBuf,date)); + ph.addLast(new KsecDecoder(10000,byteBuf,date)); ph.addLast(new KescEncoder(tcpClientLogService)); ph.addLast(new KescNettyHandler( date)); } diff --git a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/framework/netty/ksec/KsecDecoder.java b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/framework/netty/ksec/KsecDecoder.java index 72fb01c..ec12e90 100644 --- a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/framework/netty/ksec/KsecDecoder.java +++ b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/framework/netty/ksec/KsecDecoder.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.camera.framework.netty.ksec; +import cn.iocoder.yudao.module.camera.controller.admin.tcpclientlog.vo.TcpClientLogSaveReqVO; import cn.iocoder.yudao.module.camera.framework.netty.NettyFilterDate; import cn.iocoder.yudao.module.camera.service.plc.PLCService; import com.alibaba.fastjson.JSONObject; @@ -10,6 +11,7 @@ import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.net.InetSocketAddress; import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; @@ -76,6 +78,17 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder { String body = in.toString(StandardCharsets.UTF_8); tcpLogger.info("接收数据:"+body); log.info("接收数据:"+body); + InetSocketAddress remoteAddress = (InetSocketAddress) ctx.channel().remoteAddress(); + String remoteIp = remoteAddress.getAddress().getHostAddress(); + int remotePort = remoteAddress.getPort(); + + TcpClientLogSaveReqVO tcpClientLogDO = new TcpClientLogSaveReqVO(); + tcpClientLogDO.setTcpType("camera"); + tcpClientLogDO.setPort(remotePort); + tcpClientLogDO.setIp(remoteIp); + tcpClientLogDO.setType(1); + tcpClientLogDO.setInfo(body); + nettyFilterDate.getTcpClientLogService().createTcpClientLog(tcpClientLogDO); if (body.startsWith("<")){ // 去掉首尾标识符 body = body.substring(1, body.length()); @@ -89,21 +102,21 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder { }else if (Cmd.B.name().equals(ksecInfo.getType())) { //心跳 // 玉溪只有c4和b2采用直接c4结束 -// if (dataInfo.getCmdName().equals("B1")){ + if (dataInfo.getCmdName().equals("B1")){ // plcService.orderStart(dataInfo); -// }else if(dataInfo.getCmdName().equals("B2")){ -// -// plcService.orderStop(dataInfo); -// } -// log.debug("receieve heart "); + }else if(dataInfo.getCmdName().equals("B2")){ + +// plcService.orderStop(ksecInfo); + } + log.debug("receieve heart "); }else if (Cmd.C.name().equals(ksecInfo.getType())) { //动作 String code = dataInfo.getCmdName(); log.info("action code,{},orderInfo:{}", code, dataInfo.toString()); // 玉溪只有c4和b2采用直接c4结束 -// plcService.action(dataInfo); - plcService.orderStop(ksecInfo); + plcService.action(dataInfo); +// plcService.orderStop(ksecInfo); } else if (Cmd.D.name().equals(ksecInfo.getType())) { diff --git a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/framework/netty/streetAlgorithm/CheckIntellBlinkDecoder.java b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/framework/netty/streetAlgorithm/CheckIntellBlinkDecoder.java index 9efe86a..74b6046 100644 --- a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/framework/netty/streetAlgorithm/CheckIntellBlinkDecoder.java +++ b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/framework/netty/streetAlgorithm/CheckIntellBlinkDecoder.java @@ -158,6 +158,7 @@ public class CheckIntellBlinkDecoder extends DelimiterBasedFrameDecoder { log.info("Status Code: " + response.getStatusCode()); log.info("Response Body: " + response.getBody()); + System.out.println("request json: " + jsonString+" response"+response.getBody()); // 创建 ObjectMapper 实例 ObjectMapper mapper = new ObjectMapper(); diff --git a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/framework/netty/streetAlgorithm/executor/AlgorithmDelayTask.java b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/framework/netty/streetAlgorithm/executor/AlgorithmDelayTask.java index 08029c8..0fc34be 100644 --- a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/framework/netty/streetAlgorithm/executor/AlgorithmDelayTask.java +++ b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/framework/netty/streetAlgorithm/executor/AlgorithmDelayTask.java @@ -19,6 +19,7 @@ public class AlgorithmDelayTask implements Delayed { private String cmdName; private String trayCode = "NULL"; private String storageCode = "NULL"; + private String path; private long executeTime; diff --git a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/service/lightsource/LightSourceService.java b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/service/lightsource/LightSourceService.java index 4c251bd..fd71318 100644 --- a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/service/lightsource/LightSourceService.java +++ b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/service/lightsource/LightSourceService.java @@ -1,10 +1,11 @@ package cn.iocoder.yudao.module.camera.service.lightsource; -import com.baomidou.mybatisplus.extension.service.IService; -import jakarta.validation.*; -import cn.iocoder.yudao.module.camera.controller.admin.lightsource.vo.*; -import cn.iocoder.yudao.module.camera.dal.dataobject.lightsource.LightSourceDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.camera.controller.admin.lightsource.vo.LightSourcePageReqVO; +import cn.iocoder.yudao.module.camera.controller.admin.lightsource.vo.LightSourceSaveReqVO; +import cn.iocoder.yudao.module.camera.dal.dataobject.street.LightSourceDO; +import com.baomidou.mybatisplus.extension.service.IService; +import jakarta.validation.Valid; /** * 光源 Service 接口 diff --git a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/service/lightsource/LightSourceServiceImpl.java b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/service/lightsource/LightSourceServiceImpl.java index d296fb2..efe7011 100644 --- a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/service/lightsource/LightSourceServiceImpl.java +++ b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/service/lightsource/LightSourceServiceImpl.java @@ -1,17 +1,16 @@ package cn.iocoder.yudao.module.camera.service.lightsource; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.camera.controller.admin.lightsource.vo.LightSourcePageReqVO; +import cn.iocoder.yudao.module.camera.controller.admin.lightsource.vo.LightSourceSaveReqVO; +import cn.iocoder.yudao.module.camera.dal.dataobject.street.LightSourceDO; +import cn.iocoder.yudao.module.camera.dal.mysql.street.LightSourceMapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; -import cn.iocoder.yudao.module.camera.controller.admin.lightsource.vo.*; -import cn.iocoder.yudao.module.camera.dal.dataobject.lightsource.LightSourceDO; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; - -import cn.iocoder.yudao.module.camera.dal.mysql.lightsource.LightSourceMapper; - import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.LIGHT_SOURCE_NOT_EXISTS; diff --git a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/service/plc/PLCServiceImpl.java b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/service/plc/PLCServiceImpl.java index cdae7e2..d48f7bd 100644 --- a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/service/plc/PLCServiceImpl.java +++ b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/service/plc/PLCServiceImpl.java @@ -9,7 +9,6 @@ import cn.iocoder.yudao.module.camera.dal.dataobject.sensorgun.SensorGunDO; import cn.iocoder.yudao.module.camera.dal.dataobject.stock.StockDO; import cn.iocoder.yudao.module.camera.dal.dataobject.stocklog.StockLogDO; import cn.iocoder.yudao.module.camera.dal.dataobject.street.StreetDO; -import cn.iocoder.yudao.module.camera.dal.entity.KescEntity; import cn.iocoder.yudao.module.camera.dal.entity.ScanData; import cn.iocoder.yudao.module.camera.dal.mysql.checklog.CheckLogMapper; import cn.iocoder.yudao.module.camera.dal.mysql.order.OrderMapper; @@ -23,7 +22,9 @@ import cn.iocoder.yudao.module.camera.service.camera.CameraService; import cn.iocoder.yudao.module.camera.service.cameraio.CameraIoService; import cn.iocoder.yudao.module.camera.service.checklog.CheckLogService; import cn.iocoder.yudao.module.camera.service.resources.URLResourcesService; +import cn.iocoder.yudao.module.camera.service.scan.ScanGunScanServiceImpl; import cn.iocoder.yudao.module.camera.service.scan.ScanServiceFactory; +import cn.iocoder.yudao.module.camera.service.sensorgun.SensorGunService; import cn.iocoder.yudao.module.camera.service.stock.StockService; import cn.iocoder.yudao.module.camera.service.street.StreetService; import cn.iocoder.yudao.module.camera.service.threeInOneCode.ScanningGun; @@ -33,7 +34,6 @@ import cn.iocoder.yudao.module.system.service.dict.DictDataService; import cn.iocoder.yudao.module.system.service.sse.SseClient; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import de.danielbechler.util.Strings; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -163,52 +163,17 @@ public class PLCServiceImpl implements PLCService { @Override public void action(KsecDataInfo dataInfo) { - OrderDO order = orderMapper.selectOne(new LambdaQueryWrapper() - .eq(OrderDO::getTaskId, dataInfo.getTaskId()) - .orderByDesc(OrderDO::getCreateTime) - .last("limit 1")); - StreetDO street = streetService.getStreetByPlcId(dataInfo.getSRMNumber()); - if (street == null) { - log.error("street not found ,plcId :{}", dataInfo.getSRMNumber()); - return; - } - //OrderInfo orderInfo = new OrderInfo(street, plcCmdInfo, times, code); - //判断是否拍照 - boolean needCapture = false; - String picCmd = dataInfo.getCmdName().substring(0, 2); - Integer direction = dataInfo.getFromDirection(); - if (picCmd.equals("C4") || picCmd.equals("C3")) { - needCapture = true; - direction = dataInfo.getToDirection(); - } else if (picCmd.equals("C1") || picCmd.equals("C2")) { - needCapture = true; - - } else { - return; - - } - KescEntity kescEntity = new KescEntity(); - kescEntity.setData(dataInfo); -// 判断巷道有几个相机 如果只有一个,则调用一个,如果是两个,先判断是否有对拍设置决定那个相机拍摄 - CameraDO camera = getCameraByLeftRight(street, direction); -// 调用预置点位 - gyrateCameraByCode(camera, picCmd); - int time = Integer.parseInt(dictDataService.parseDictData("camera_conf", "delay_preset_time").getValue()); - try { - Thread.sleep(time); - } catch (InterruptedException e) { - e.printStackTrace(); + if (dataInfo.getCmdName().equals(dictDataService.parseDictData("base_conf", "order_start").getValue() )){ + KsecInfo kescEntity = new KsecInfo(); + kescEntity.setData(dataInfo); + orderStart(dataInfo); } - if (needCapture) { - String pathSrc = PathUtil.createFileName(dataInfo, street, picCmd, ".jpg"); - pathSrc = cameraCapture(camera, false, pathSrc, dictDataService.getDictDataList("camera_conf")); - - order.setPics(Strings.hasText(order.getPics()) ? order.getPics() + ";" + pathSrc : pathSrc); - orderMapper.updateById(order); + if (dataInfo.getCmdName().equals(dictDataService.parseDictData("base_conf", "order_stop").getValue() )){ + KsecInfo kescEntity = new KsecInfo(); + kescEntity.setData(dataInfo); + orderStop(kescEntity); } - //转向原点位 - gyrateCameraByCode(camera, "C5"); } @Resource @@ -478,11 +443,11 @@ public void checkYx(KsecDataInfo dataInfo){ String picPath = algorithmDelayTask.getSRMNumber() + "-" + algorithmDelayTask.getCmdName() + "-" + algorithmDelayTask.getDirection() + "-" + "up"; - String pathSrc = street.getPlcIp() + ":9007/pic/" + dataInfo.getTaskId() + "_" + picPath + ".JPEG"; + String pathSrc = "http://"+ dictDataService.parseDictData("base_conf", "local_path").getValue() + ":9007/pic"+street.getPlcId()+"/" + dataInfo.getTaskId() + "_" + picPath + ".JPEG"; urlResourcesService.save(URLResourcesDo.builder().url(pathSrc).uuid(uuid).type("1").little("拍照").build()); + algorithmDelayTask.setPath(pathSrc); getPhotoDelayExecutor.communicationFactory(algorithmDelayTask); } - public static String capitalize(String str) { if (str == null || str.isEmpty()) { return str; @@ -543,7 +508,7 @@ public void checkYx(KsecDataInfo dataInfo){ .row(ksecDataInfo.getFromRow()) .column(ksecDataInfo.getFromColumn()) .status("0") - .checkPic("http://" + streetDO.getPlcIp() + ":9007/pic/" + ksecDataInfo.getTaskId() + "_" + cameraType + ".JPEG;") + .checkPic("http://" + streetDO.getPlcIp() + ":9007/pic"+streetDO.getPlcId()+"/" + ksecDataInfo.getTaskId() + "_" + cameraType + ".JPEG;") .exportTime(LocalDateTime.now()).build(); stockService.save(stockDO); } else { @@ -579,14 +544,14 @@ public void checkYx(KsecDataInfo dataInfo){ @Override public void stockSave(AlgorithmDelayTask algorithmDelayTask) { - StockDO stockDO = stockService.getOne(new QueryWrapper().eq("task_Wms_Id", algorithmDelayTask.getTaskId())); + StockDO stockDO = stockService.getOne(new QueryWrapper().eq("task_Wms_Id", algorithmDelayTask.getTaskId()).last("limit 1")); if (stockDO != null) { stockDO.setCode(algorithmDelayTask.getStorageCode()); stockDO.setWmsCode(algorithmDelayTask.getStorageCode()); stockDO.setTrayCode(algorithmDelayTask.getTrayCode()); stockService.updateById(stockDO); } - CheckLogDO checkLogDO = checkLogService.getOne(new QueryWrapper().eq("task_Id", algorithmDelayTask.getTaskId())); + CheckLogDO checkLogDO = checkLogService.getOne(new QueryWrapper().eq("task_Id", algorithmDelayTask.getTaskId()).last("limit 1")); if (checkLogDO != null) { checkLogDO.setTrayCode(algorithmDelayTask.getTrayCode()); @@ -679,15 +644,19 @@ public void checkYx(KsecDataInfo dataInfo){ * * @param */ + @Resource + SensorGunService sensorService; public void orderStop(KsecInfo kescEntity) { + + String uuid = UUID.randomUUID().toString(); LocalDateTime endTime = LocalDateTime.now(); StreetDO street = streetService.getStreetByPlcId(kescEntity.getData().getSRMNumber()); if (street == null) { return; } - OrderDO order = orderMapper.selectOne(new QueryWrapper().eq("task_id", kescEntity.getData().getTaskId())); + OrderDO order = orderMapper.selectOne(new QueryWrapper().eq("task_id", kescEntity.getData().getTaskId()).last(" limit 1")); if (order == null) { log.error("订单结束信号,订单不存在,orderNum:{}", kescEntity.getData().getTaskId()); return; @@ -711,7 +680,17 @@ public void checkYx(KsecDataInfo dataInfo){ sensorGunCode = ScanningGun.readOCR(sensorGunDO.getIp(), sensorGunDO.getPort(), "start", time); } } - + ScanData scanData = new ScanData(); + SensorGunDO sensorGun = sensorService.getOne(new QueryWrapper() + .eq("street_id", street.getId()) + .eq("direction", kescEntity.getData().getToDirection())); + String trayCode = ""; + if (sensorGun == null) { + log.error("no sensor gun config in database ,street id:{},direction:{}", street.getId(), kescEntity.getData().getToDirection()); + } else { + trayCode = ScanGunScanServiceImpl.readOCR(sensorGun.getIp(), sensorGun.getPort()); + } + scanData.setCode(trayCode); //拍照i //CheckIntellBlinkChanel.pictures(street.getPlcId(), kescEntity.getData().getTaskId(),cameraType,dictDataService.parseDictData("camera_position", cameraType).getValue()); @@ -721,10 +700,13 @@ public void checkYx(KsecDataInfo dataInfo){ String picPath = algorithmDelayTask.getSRMNumber() + "-" + algorithmDelayTask.getCmdName() + "-" + algorithmDelayTask.getDirection() + "-" + "up"; KsecDataInfo ksecDataInfo = KsecDataInfo.toFrom(kescEntity.getData()); stockSave(ksecDataInfo, street, sensorGunCode); + String path = "http://" + dictDataService.parseDictData("base_conf", "local_path").getValue() + ":9007/pic"+street.getPlcId()+"/"+ kescEntity.getData().getTaskId() + "_" + picPath + ".JPEG"; + algorithmDelayTask.setPath(path); getPhotoDelayExecutor.communicationFactory(algorithmDelayTask); + urlResourcesService.save(URLResourcesDo.builder().url(path).uuid(uuid).type("1").little("球机拍照").build()); - order.setPics(order.getPics() == null ? "" : order.getPics() + "http://" + street.getPlcIp() + ":9007/pic/" + kescEntity.getData().getTaskId() + "_" + picPath + ".JPEG;"); + order.setPics(order.getPics() == null ? path : order.getPics() + path+ ";"); orderMapper.updateById(order); } diff --git a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/service/postConstruct/LightConstruct.java b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/service/postConstruct/LightConstruct.java new file mode 100644 index 0000000..531327b --- /dev/null +++ b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/service/postConstruct/LightConstruct.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.camera.service.postConstruct; + +import cn.iocoder.yudao.module.camera.dal.dataobject.street.LightSourceDO; +import cn.iocoder.yudao.module.camera.framework.light.LightFactory; +import cn.iocoder.yudao.module.camera.service.lightsource.LightSourceService; +import jakarta.annotation.PostConstruct; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@Slf4j +public class LightConstruct { + + @Resource + LightSourceService lightSourceService; + @PostConstruct + public void nettyClientInit(){ + List list = lightSourceService.list(); + for(LightSourceDO lightSourceDO : list){ + LightFactory.LightController(lightSourceDO,1); + } + + } +} diff --git a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/service/scan/ScanGunScanServiceImpl.java b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/service/scan/ScanGunScanServiceImpl.java index 1acd0d8..4c7d246 100644 --- a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/service/scan/ScanGunScanServiceImpl.java +++ b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/service/scan/ScanGunScanServiceImpl.java @@ -24,15 +24,17 @@ public class ScanGunScanServiceImpl implements ScanService{ public static String readOCR(String ip,int port){ Socket socket = new Socket(); - String code = "NoRead"; + String code = "NULL"; OutputStream os = null; InputStream is = null; try { - socket.connect(new InetSocketAddress(ip,port),3000); + socket.connect(new InetSocketAddress(ip,port),10000); + socket.setSoTimeout(10000); os = socket.getOutputStream(); is = socket.getInputStream(); int i = 0; - while ("NoRead".equals(code) && i <= 4){ + long startTime = System.currentTimeMillis(); + while ("NULL".equals(code) && startTime + 5* 1000L >= System.currentTimeMillis()){ writeCmd(os); code = read(is); log.info("count:{},ip:{},code:{}",i,ip,code); diff --git a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/service/street/StreetService.java b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/service/street/StreetService.java index 5dc21a7..91e45b3 100644 --- a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/service/street/StreetService.java +++ b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/service/street/StreetService.java @@ -4,9 +4,9 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.camera.controller.admin.street.vo.StreetPageReqVO; import cn.iocoder.yudao.module.camera.controller.admin.street.vo.StreetRespVO; import cn.iocoder.yudao.module.camera.controller.admin.street.vo.StreetSaveReqVO; -import cn.iocoder.yudao.module.camera.dal.dataobject.lightsource.LightSourceDO; import cn.iocoder.yudao.module.camera.dal.dataobject.rfid.RfidDO; import cn.iocoder.yudao.module.camera.dal.dataobject.sensorgun.SensorGunDO; +import cn.iocoder.yudao.module.camera.dal.dataobject.street.LightSourceDO; import cn.iocoder.yudao.module.camera.dal.dataobject.street.StreetDO; import com.baomidou.mybatisplus.extension.service.IService; import jakarta.validation.Valid; diff --git a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/service/street/StreetServiceImpl.java b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/service/street/StreetServiceImpl.java index 9bdcc67..944377d 100644 --- a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/service/street/StreetServiceImpl.java +++ b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/service/street/StreetServiceImpl.java @@ -6,13 +6,13 @@ import cn.iocoder.yudao.module.camera.controller.admin.street.vo.StreetPageReqVO import cn.iocoder.yudao.module.camera.controller.admin.street.vo.StreetRespVO; import cn.iocoder.yudao.module.camera.controller.admin.street.vo.StreetSaveReqVO; import cn.iocoder.yudao.module.camera.dal.dataobject.camera.CameraDO; -import cn.iocoder.yudao.module.camera.dal.dataobject.lightsource.LightSourceDO; import cn.iocoder.yudao.module.camera.dal.dataobject.rfid.RfidDO; import cn.iocoder.yudao.module.camera.dal.dataobject.sensorgun.SensorGunDO; +import cn.iocoder.yudao.module.camera.dal.dataobject.street.LightSourceDO; import cn.iocoder.yudao.module.camera.dal.dataobject.street.StreetDO; -import cn.iocoder.yudao.module.camera.dal.mysql.lightsource.LightSourceMapper; import cn.iocoder.yudao.module.camera.dal.mysql.rfid.RfidMapper; import cn.iocoder.yudao.module.camera.dal.mysql.sensorgun.SensorGunMapper; +import cn.iocoder.yudao.module.camera.dal.mysql.street.LightSourceMapper; import cn.iocoder.yudao.module.camera.dal.mysql.street.StreetMapper; import cn.iocoder.yudao.module.camera.service.camera.CameraService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;