采用手动配置结束和开始

玉溪
LAPTOP-S9HJSOEB\昊天 9 months ago
parent d568c360a6
commit 0004020a91

@ -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.LightSourcePageReqVO;
import cn.iocoder.yudao.module.camera.controller.admin.lightsource.vo.LightSourceRespVO; 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.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 cn.iocoder.yudao.module.camera.service.lightsource.LightSourceService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;

@ -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.StreetPageReqVO;
import cn.iocoder.yudao.module.camera.controller.admin.street.vo.StreetRespVO; 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.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.rfid.RfidDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.sensorgun.SensorGunDO; 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.dataobject.street.StreetDO;
import cn.iocoder.yudao.module.camera.framework.light.LightFactory; import cn.iocoder.yudao.module.camera.framework.light.LightFactory;
import cn.iocoder.yudao.module.camera.service.lightsource.LightSourceService; import cn.iocoder.yudao.module.camera.service.lightsource.LightSourceService;

@ -1,8 +1,9 @@
package cn.iocoder.yudao.module.camera.controller.admin.street.vo; 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.rfid.RfidDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.sensorgun.SensorGunDO; 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 io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;

@ -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 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 * DO

@ -1,11 +1,11 @@
package cn.iocoder.yudao.module.camera.dal.mysql.lightsource; package cn.iocoder.yudao.module.camera.dal.mysql.street;
import java.util.*;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; 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 org.apache.ibatis.annotations.Mapper;
import java.util.List;
/** /**
* Mapper * Mapper
* *

@ -1,10 +1,9 @@
package cn.iocoder.yudao.module.camera.framework.light; 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.dal.dataobject.street.LightSourceDO;
import cn.iocoder.yudao.module.camera.framework.light.damLightSource.JYDamHelper;
import cn.iocoder.yudao.module.camera.framework.light.hikLightSource.HikControlSocket;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import java.io.DataOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
@ -21,27 +20,41 @@ public class LightFactory {
*/ */
public static void LightController(LightSourceDO lightSourceRespVO, int type){ public static void LightController(LightSourceDO lightSourceRespVO, int type){
if(type == 0) { if(type == 0) {
if (lightSourceRespVO.getType() == 1) {
relay(lightSourceRespVO.getIp(), Integer.parseInt( lightSourceRespVO.getPort()), 0);
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);
}
}else { }else {
if (lightSourceRespVO.getType() == 1) { relay(lightSourceRespVO.getIp(), Integer.parseInt( lightSourceRespVO.getPort()), 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);
} }
}
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){ public static void lightController(String ip ,Integer port,Integer stat){

@ -35,6 +35,7 @@ public class KescFilter extends ChannelInitializer<SocketChannel> {
ph.addLast(new IdleStateHandler(0, 4, 0, TimeUnit.SECONDS)); ph.addLast(new IdleStateHandler(0, 4, 0, TimeUnit.SECONDS));
ByteBuf byteBuf = Unpooled.copiedBuffer(">".getBytes()); ByteBuf byteBuf = Unpooled.copiedBuffer(">".getBytes());
ph.addLast(new KsecDecoder(10000,byteBuf,date)); ph.addLast(new KsecDecoder(10000,byteBuf,date));
ph.addLast(new KsecDecoder(10000,byteBuf,date));
ph.addLast(new KescEncoder(tcpClientLogService)); ph.addLast(new KescEncoder(tcpClientLogService));
ph.addLast(new KescNettyHandler( date)); ph.addLast(new KescNettyHandler( date));
} }

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.camera.framework.netty.ksec; 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.framework.netty.NettyFilterDate;
import cn.iocoder.yudao.module.camera.service.plc.PLCService; import cn.iocoder.yudao.module.camera.service.plc.PLCService;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
@ -10,6 +11,7 @@ import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.net.InetSocketAddress;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@ -76,6 +78,17 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder {
String body = in.toString(StandardCharsets.UTF_8); String body = in.toString(StandardCharsets.UTF_8);
tcpLogger.info("接收数据:"+body); tcpLogger.info("接收数据:"+body);
log.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("<")){ if (body.startsWith("<")){
// 去掉首尾标识符 // 去掉首尾标识符
body = body.substring(1, body.length()); body = body.substring(1, body.length());
@ -89,21 +102,21 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder {
}else if (Cmd.B.name().equals(ksecInfo.getType())) { }else if (Cmd.B.name().equals(ksecInfo.getType())) {
//心跳 //心跳
// 玉溪只有c4和b2采用直接c4结束 // 玉溪只有c4和b2采用直接c4结束
// if (dataInfo.getCmdName().equals("B1")){ if (dataInfo.getCmdName().equals("B1")){
// plcService.orderStart(dataInfo); // plcService.orderStart(dataInfo);
// }else if(dataInfo.getCmdName().equals("B2")){ }else if(dataInfo.getCmdName().equals("B2")){
//
// plcService.orderStop(dataInfo); // plcService.orderStop(ksecInfo);
// } }
// log.debug("receieve heart "); log.debug("receieve heart ");
}else if (Cmd.C.name().equals(ksecInfo.getType())) { }else if (Cmd.C.name().equals(ksecInfo.getType())) {
//动作 //动作
String code = dataInfo.getCmdName(); String code = dataInfo.getCmdName();
log.info("action code,{},orderInfo:{}", code, dataInfo.toString()); log.info("action code,{},orderInfo:{}", code, dataInfo.toString());
// 玉溪只有c4和b2采用直接c4结束 // 玉溪只有c4和b2采用直接c4结束
// plcService.action(dataInfo); plcService.action(dataInfo);
plcService.orderStop(ksecInfo); // plcService.orderStop(ksecInfo);
} else if (Cmd.D.name().equals(ksecInfo.getType())) { } else if (Cmd.D.name().equals(ksecInfo.getType())) {

@ -158,6 +158,7 @@ public class CheckIntellBlinkDecoder extends DelimiterBasedFrameDecoder {
log.info("Status Code: " + response.getStatusCode()); log.info("Status Code: " + response.getStatusCode());
log.info("Response Body: " + response.getBody()); log.info("Response Body: " + response.getBody());
System.out.println("request json: " + jsonString+" response"+response.getBody());
// 创建 ObjectMapper 实例 // 创建 ObjectMapper 实例
ObjectMapper mapper = new ObjectMapper(); ObjectMapper mapper = new ObjectMapper();

@ -19,6 +19,7 @@ public class AlgorithmDelayTask implements Delayed {
private String cmdName; private String cmdName;
private String trayCode = "NULL"; private String trayCode = "NULL";
private String storageCode = "NULL"; private String storageCode = "NULL";
private String path;
private long executeTime; private long executeTime;

@ -1,10 +1,11 @@
package cn.iocoder.yudao.module.camera.service.lightsource; 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.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 * Service

@ -1,17 +1,16 @@
package cn.iocoder.yudao.module.camera.service.lightsource; 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 com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated; 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.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.LIGHT_SOURCE_NOT_EXISTS; import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.LIGHT_SOURCE_NOT_EXISTS;

@ -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.stock.StockDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.stocklog.StockLogDO; 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.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.entity.ScanData;
import cn.iocoder.yudao.module.camera.dal.mysql.checklog.CheckLogMapper; import cn.iocoder.yudao.module.camera.dal.mysql.checklog.CheckLogMapper;
import cn.iocoder.yudao.module.camera.dal.mysql.order.OrderMapper; 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.cameraio.CameraIoService;
import cn.iocoder.yudao.module.camera.service.checklog.CheckLogService; 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.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.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.stock.StockService;
import cn.iocoder.yudao.module.camera.service.street.StreetService; import cn.iocoder.yudao.module.camera.service.street.StreetService;
import cn.iocoder.yudao.module.camera.service.threeInOneCode.ScanningGun; 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 cn.iocoder.yudao.module.system.service.sse.SseClient;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import de.danielbechler.util.Strings;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -163,52 +163,17 @@ public class PLCServiceImpl implements PLCService {
@Override @Override
public void action(KsecDataInfo dataInfo) { public void action(KsecDataInfo dataInfo) {
OrderDO order = orderMapper.selectOne(new LambdaQueryWrapper<OrderDO>()
.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 { if (dataInfo.getCmdName().equals(dictDataService.parseDictData("base_conf", "order_start").getValue() )){
return; KsecInfo kescEntity = new KsecInfo();
}
KescEntity kescEntity = new KescEntity();
kescEntity.setData(dataInfo); kescEntity.setData(dataInfo);
// 判断巷道有几个相机 如果只有一个,则调用一个,如果是两个,先判断是否有对拍设置决定那个相机拍摄 orderStart(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 (needCapture) { if (dataInfo.getCmdName().equals(dictDataService.parseDictData("base_conf", "order_stop").getValue() )){
String pathSrc = PathUtil.createFileName(dataInfo, street, picCmd, ".jpg"); KsecInfo kescEntity = new KsecInfo();
pathSrc = cameraCapture(camera, false, pathSrc, dictDataService.getDictDataList("camera_conf")); kescEntity.setData(dataInfo);
orderStop(kescEntity);
order.setPics(Strings.hasText(order.getPics()) ? order.getPics() + ";" + pathSrc : pathSrc);
orderMapper.updateById(order);
} }
//转向原点位
gyrateCameraByCode(camera, "C5");
} }
@Resource @Resource
@ -478,11 +443,11 @@ public void checkYx(KsecDataInfo dataInfo){
String picPath = algorithmDelayTask.getSRMNumber() + "-" + algorithmDelayTask.getCmdName() + "-" + algorithmDelayTask.getDirection() + "-" + "up"; 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()); urlResourcesService.save(URLResourcesDo.builder().url(pathSrc).uuid(uuid).type("1").little("拍照").build());
algorithmDelayTask.setPath(pathSrc);
getPhotoDelayExecutor.communicationFactory(algorithmDelayTask); getPhotoDelayExecutor.communicationFactory(algorithmDelayTask);
} }
public static String capitalize(String str) { public static String capitalize(String str) {
if (str == null || str.isEmpty()) { if (str == null || str.isEmpty()) {
return str; return str;
@ -543,7 +508,7 @@ public void checkYx(KsecDataInfo dataInfo){
.row(ksecDataInfo.getFromRow()) .row(ksecDataInfo.getFromRow())
.column(ksecDataInfo.getFromColumn()) .column(ksecDataInfo.getFromColumn())
.status("0") .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(); .exportTime(LocalDateTime.now()).build();
stockService.save(stockDO); stockService.save(stockDO);
} else { } else {
@ -579,14 +544,14 @@ public void checkYx(KsecDataInfo dataInfo){
@Override @Override
public void stockSave(AlgorithmDelayTask algorithmDelayTask) { public void stockSave(AlgorithmDelayTask algorithmDelayTask) {
StockDO stockDO = stockService.getOne(new QueryWrapper<StockDO>().eq("task_Wms_Id", algorithmDelayTask.getTaskId())); StockDO stockDO = stockService.getOne(new QueryWrapper<StockDO>().eq("task_Wms_Id", algorithmDelayTask.getTaskId()).last("limit 1"));
if (stockDO != null) { if (stockDO != null) {
stockDO.setCode(algorithmDelayTask.getStorageCode()); stockDO.setCode(algorithmDelayTask.getStorageCode());
stockDO.setWmsCode(algorithmDelayTask.getStorageCode()); stockDO.setWmsCode(algorithmDelayTask.getStorageCode());
stockDO.setTrayCode(algorithmDelayTask.getTrayCode()); stockDO.setTrayCode(algorithmDelayTask.getTrayCode());
stockService.updateById(stockDO); stockService.updateById(stockDO);
} }
CheckLogDO checkLogDO = checkLogService.getOne(new QueryWrapper<CheckLogDO>().eq("task_Id", algorithmDelayTask.getTaskId())); CheckLogDO checkLogDO = checkLogService.getOne(new QueryWrapper<CheckLogDO>().eq("task_Id", algorithmDelayTask.getTaskId()).last("limit 1"));
if (checkLogDO != null) { if (checkLogDO != null) {
checkLogDO.setTrayCode(algorithmDelayTask.getTrayCode()); checkLogDO.setTrayCode(algorithmDelayTask.getTrayCode());
@ -679,15 +644,19 @@ public void checkYx(KsecDataInfo dataInfo){
* *
* @param * @param
*/ */
@Resource
SensorGunService sensorService;
public void orderStop(KsecInfo kescEntity) { public void orderStop(KsecInfo kescEntity) {
String uuid = UUID.randomUUID().toString();
LocalDateTime endTime = LocalDateTime.now(); LocalDateTime endTime = LocalDateTime.now();
StreetDO street = streetService.getStreetByPlcId(kescEntity.getData().getSRMNumber()); StreetDO street = streetService.getStreetByPlcId(kescEntity.getData().getSRMNumber());
if (street == null) { if (street == null) {
return; return;
} }
OrderDO order = orderMapper.selectOne(new QueryWrapper<OrderDO>().eq("task_id", kescEntity.getData().getTaskId())); OrderDO order = orderMapper.selectOne(new QueryWrapper<OrderDO>().eq("task_id", kescEntity.getData().getTaskId()).last(" limit 1"));
if (order == null) { if (order == null) {
log.error("订单结束信号订单不存在orderNum:{}", kescEntity.getData().getTaskId()); log.error("订单结束信号订单不存在orderNum:{}", kescEntity.getData().getTaskId());
return; return;
@ -711,7 +680,17 @@ public void checkYx(KsecDataInfo dataInfo){
sensorGunCode = ScanningGun.readOCR(sensorGunDO.getIp(), sensorGunDO.getPort(), "start", time); sensorGunCode = ScanningGun.readOCR(sensorGunDO.getIp(), sensorGunDO.getPort(), "start", time);
} }
} }
ScanData scanData = new ScanData();
SensorGunDO sensorGun = sensorService.getOne(new QueryWrapper<SensorGunDO>()
.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 //拍照i
//CheckIntellBlinkChanel.pictures(street.getPlcId(), kescEntity.getData().getTaskId(),cameraType,dictDataService.parseDictData("camera_position", cameraType).getValue()); //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"; String picPath = algorithmDelayTask.getSRMNumber() + "-" + algorithmDelayTask.getCmdName() + "-" + algorithmDelayTask.getDirection() + "-" + "up";
KsecDataInfo ksecDataInfo = KsecDataInfo.toFrom(kescEntity.getData()); KsecDataInfo ksecDataInfo = KsecDataInfo.toFrom(kescEntity.getData());
stockSave(ksecDataInfo, street, sensorGunCode); 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); 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); orderMapper.updateById(order);
} }

@ -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<LightSourceDO> list = lightSourceService.list();
for(LightSourceDO lightSourceDO : list){
LightFactory.LightController(lightSourceDO,1);
}
}
}

@ -24,15 +24,17 @@ public class ScanGunScanServiceImpl implements ScanService{
public static String readOCR(String ip,int port){ public static String readOCR(String ip,int port){
Socket socket = new Socket(); Socket socket = new Socket();
String code = "NoRead"; String code = "NULL";
OutputStream os = null; OutputStream os = null;
InputStream is = null; InputStream is = null;
try { try {
socket.connect(new InetSocketAddress(ip,port),3000); socket.connect(new InetSocketAddress(ip,port),10000);
socket.setSoTimeout(10000);
os = socket.getOutputStream(); os = socket.getOutputStream();
is = socket.getInputStream(); is = socket.getInputStream();
int i = 0; int i = 0;
while ("NoRead".equals(code) && i <= 4){ long startTime = System.currentTimeMillis();
while ("NULL".equals(code) && startTime + 5* 1000L >= System.currentTimeMillis()){
writeCmd(os); writeCmd(os);
code = read(is); code = read(is);
log.info("count:{},ip:{},code:{}",i,ip,code); log.info("count:{},ip:{},code:{}",i,ip,code);

@ -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.StreetPageReqVO;
import cn.iocoder.yudao.module.camera.controller.admin.street.vo.StreetRespVO; 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.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.rfid.RfidDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.sensorgun.SensorGunDO; 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.dataobject.street.StreetDO;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import jakarta.validation.Valid; import jakarta.validation.Valid;

@ -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.StreetRespVO;
import cn.iocoder.yudao.module.camera.controller.admin.street.vo.StreetSaveReqVO; 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.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.rfid.RfidDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.sensorgun.SensorGunDO; 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.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.rfid.RfidMapper;
import cn.iocoder.yudao.module.camera.dal.mysql.sensorgun.SensorGunMapper; 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.dal.mysql.street.StreetMapper;
import cn.iocoder.yudao.module.camera.service.camera.CameraService; import cn.iocoder.yudao.module.camera.service.camera.CameraService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;

Loading…
Cancel
Save