焦作-mxbc-北起
LAPTOP-S9HJSOEB\昊天 2 years ago
parent 40b5232811
commit 2d10ca8ae3

@ -47,7 +47,7 @@ public class CameraControlController {
log.info("相机登录 cameraId:{}",cameraId);
Camera camera = cameraMapper.selectById(cameraId);
Assert.notNull(camera,"球机不存在");
NetSDKLib.LLong lLong = loginControlModule.login(camera.getIp(),camera.getPort(),camera.getUser(),camera.getPassword());
NetSDKLib.LLong lLong = loginControlModule.login(cameraId,camera.getIp(),camera.getPort(),camera.getUser(),camera.getPassword());
return lLong;
}
@ -335,6 +335,11 @@ public class CameraControlController {
private void checkLogin(Integer cameraId) {
if (CameraConnMap.getConnId(cameraId) != null) {
Camera camera = cameraMapper.selectById(cameraId);
if (CameraConnMap.getConnId(cameraId)!=null){
cameraService.cameraLogin(camera);
}
Boolean ok = false;
if (configProperties.getCameraConfig().getCameraType() == ConfigProperties.HIK_CAMERA) {
ok = HikLoginModuleImpl.connectStatus(CameraConnMap.getConnId(cameraId).intValue());
@ -344,7 +349,6 @@ public class CameraControlController {
if (!ok) {
{
CameraConnMap.disConn(cameraId);
Camera camera = cameraMapper.selectById(cameraId);
cameraService.cameraLogin(camera);
}
}

@ -46,6 +46,7 @@ public class CheckLog {
private Integer status;
private String subtag;;
private String taskId;
private String pic;

@ -8,5 +8,5 @@ public class UploadCheckResults {
private String wmsTaskId;
private String palno;
private String addre;
private Integer flag;
private String flag;
}

@ -1,5 +1,6 @@
package com.zhehekeji.web.lib;
import com.zhehekeji.web.entity.Camera;
import com.zhehekeji.web.lib.joyware.NetSDKLib;
import java.util.HashMap;
@ -15,6 +16,11 @@ public class CameraConnMap {
* value: loginId
*/
public static Map<Integer, NetSDKLib.LLong> cameraMap = new HashMap<>();
/**
* key :cameraId
* value: loginId
*/
public static Map<Integer, Camera> cameraByIdMap = new HashMap<>();
/**
* key:loginId
@ -23,10 +29,9 @@ public class CameraConnMap {
public static Map<NetSDKLib.LLong,Integer> loginMap = new HashMap<>();
public static void conn(Integer cameraId,NetSDKLib.LLong handlerId){
synchronized (cameraId.toString().intern()){
cameraMap.put(cameraId,handlerId);
loginMap.put(handlerId,cameraId);
}
}

@ -4,6 +4,6 @@ import com.zhehekeji.web.lib.joyware.NetSDKLib;
public interface CameraControlLoginModule {
NetSDKLib.LLong login(String ip, int port, String user, String password);
NetSDKLib.LLong login(Integer cameraId,String ip, int port, String user, String password);
}

@ -120,7 +120,7 @@ public interface CameraControlModule {
boolean pic(Integer cameraId, int channel, String realPath);
void downloadMp4(Integer cameraId, String path, LocalDateTime start, LocalDateTime end);
boolean downloadMp4(Integer cameraId, String path, LocalDateTime start, LocalDateTime end);
/**
*

@ -1,14 +1,19 @@
package com.zhehekeji.web.lib;
import com.zhehekeji.common.util.SpringContextUtil;
import com.zhehekeji.web.service.CameraService;
import java.time.LocalDateTime;
import java.util.concurrent.DelayQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import static com.zhehekeji.web.lib.CameraConnMap.cameraMap;
public class TaskDelayExecutor {
private static ExecutorService exec = Executors.newFixedThreadPool(1);
private static DelayQueue<CameraDelayTask> queue = new DelayQueue<>();
@ -28,8 +33,9 @@ public class TaskDelayExecutor {
cameraDelayTask.setPtzId(ptzId);
queue.add(cameraDelayTask);
}
private static CameraService cameraService = SpringContextUtil.getBean(CameraService.class);
public static void runMp4DownloadExecutor(){
exec.execute(new Consumer());
}
@ -44,10 +50,21 @@ public class TaskDelayExecutor {
if(cameraDelayTask != null){
if(cameraDelayTask.getType() == 0){
cameraControlModule.downloadMp4(cameraDelayTask.getCameraId(), cameraDelayTask.getPath(), cameraDelayTask.getStartTime(), cameraDelayTask.getEndTime());
for(int i = 0; i < 3; i++) {
if(cameraControlModule.downloadMp4(cameraDelayTask.getCameraId(), cameraDelayTask.getPath(), cameraDelayTask.getStartTime(), cameraDelayTask.getEndTime())){
break;
}else {
cameraService.cameraConnect( cameraDelayTask.getCameraId());
}
}
}else if(cameraDelayTask.getType() == 1){
cameraControlModule.pic(cameraDelayTask.getCameraId(),0, cameraDelayTask.getPath());
for(int i = 0; i < 10; i++) {
if(cameraControlModule.pic(cameraDelayTask.getCameraId(), 0, cameraDelayTask.getPath())){
break;
}else {
cameraService.cameraConnect( cameraDelayTask.getCameraId());
}
}
}else if(cameraDelayTask.getType() == 2){
cameraControlModule.toPtz(cameraDelayTask.getPtzId(),cameraDelayTask.getCameraId());
}

@ -306,7 +306,7 @@ public class HikCameraControlModuleImpl implements CameraControlModule {
return picResult;
}
public void downloadMp4(Integer cameraId, String path, LocalDateTime start, LocalDateTime end) {
public boolean downloadMp4(Integer cameraId, String path, LocalDateTime start, LocalDateTime end) {
PathUtil.checkDirc(path);
HCNetSDK.NET_DVR_TIME startTime = new HCNetSDK.NET_DVR_TIME();
@ -318,12 +318,15 @@ public class HikCameraControlModuleImpl implements CameraControlModule {
int lUserID = CameraConnMap.getConnId(cameraId).intValue();
int result = HikLoginModuleImpl.hcNetsdk.NET_DVR_GetFileByTime(lUserID, 1, startTime, endTime, path);
if (result == -1) {
log.error("downloadMp4 error code:{},cameraId:{},path:{}", HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError(),cameraId,path);
return false;
} else {
HikLoginModuleImpl.hcNetsdk.NET_DVR_PlayBackControl(result, HikLoginModuleImpl.hcNetsdk.NET_DVR_PLAYSTART,0,null);
Timer downloadtimer = new Timer();
downloadtimer.schedule(new DownloadTask(result,downloadtimer,path,cameraId), 0, 5000);
return true;
}
}

@ -1,6 +1,7 @@
package com.zhehekeji.web.lib.hik;
import com.sun.jna.Pointer;
import com.zhehekeji.web.lib.CameraConnMap;
import com.zhehekeji.web.lib.CameraControlLoginModule;
import com.zhehekeji.web.lib.joyware.NetSDKLib;
import lombok.extern.slf4j.Slf4j;
@ -69,7 +70,7 @@ public class HikLoginModuleImpl implements CameraControlLoginModule {
*
* \endif
*/
public NetSDKLib.LLong login(String m_strIp, int m_nPort, String m_strUser, String m_strPassword) {
public NetSDKLib.LLong login(Integer cameraId,String m_strIp, int m_nPort, String m_strUser, String m_strPassword) {
init();
HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();//设备登录信息
HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();//设备信息
@ -89,6 +90,17 @@ public class HikLoginModuleImpl implements CameraControlLoginModule {
m_strLoginInfo.write();
HCNetSDK.NET_DVR_DEVICEINFO_V30 m_strDeviceInfo30 = new HCNetSDK.NET_DVR_DEVICEINFO_V30();//设备信息
////先注销,在登录
if (CameraConnMap.getConnId(cameraId) !=null ) {
if(hcNetsdk.NET_DVR_Logout_V30(CameraConnMap.getConnId(cameraId).intValue())) {
log.error("hik logout error,ip:{},port:{},errorCode:{}", m_strIp, m_nPort, hcNetsdk.NET_DVR_GetLastError());
}else {
CameraConnMap.disConn(cameraId);
}
}
int m_lUserID = hcNetsdk.NET_DVR_Login_V40(m_strLoginInfo,m_strDeviceInfo);
int lChannel = 2;
//byStartDChan为IP通道起始通道号, 预览回放NVR的IP通道时需要根据起始通道号进行取值

@ -288,7 +288,7 @@ public class JoywareCameraControlModuleImpl implements CameraControlModule {
return ok;
}
public void downloadMp4(Integer cameraId, String path, LocalDateTime start, LocalDateTime end) {
public boolean downloadMp4(Integer cameraId, String path, LocalDateTime start, LocalDateTime end) {
PathUtil.checkDirc(path);
NetSDKLib.NET_TIME startTime = new NetSDKLib.NET_TIME();
@ -311,9 +311,11 @@ public class JoywareCameraControlModuleImpl implements CameraControlModule {
NetSDKLib.LLong l = JoywareLoginModuleImpl.netsdk.CLIENT_DownloadByDataType(CameraConnMap.getConnId(cameraId), download_by_data_type.getPointer(), net_out_download_by_data_type.getPointer(), 8000);
if(l.longValue() != 0){
log.info("start download mp4 path:{},startTime:{} ,endTime:{},now:{},status:{},cameraId:{}", path, start, end, LocalDateTime.now(),l.longValue(),cameraId);
}else {
return true;
}else {
log.error("download mp4 error:{},startTime:{} ,endTime:{},cameraId:{}",ToolKits.getErrorCodePrint(),start,end,cameraId);
return false;
}
}

@ -117,7 +117,7 @@ public class JoywareLoginModuleImpl implements CameraControlLoginModule {
*
* \endif
*/
public LLong login(String m_strIp, int m_nPort, String m_strUser, String m_strPassword) {
public LLong login(Integer cameraId,String m_strIp, int m_nPort, String m_strUser, String m_strPassword) {
//IntByReference nError = new IntByReference(0);
//入参
init(disConnectCallBack,haveReConnect);

@ -11,6 +11,7 @@ import java.time.LocalDateTime;
public class CheckLogSearch {
private String lotnum;
private String taskId;
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private LocalDateTime startTimestamp;

@ -14,6 +14,7 @@ public class StockCheck {
// private String shelveId;
private Integer streetId;
private Integer streetPlc;
private Integer direction;

@ -186,7 +186,7 @@ public class CameraService {
public List<Camera> allCameras3(){
Integer num = configProperties.getVideoStyleConfig().getVideoStyleRow() *configProperties.getVideoStyleConfig().getVideoStyleColumn();
List<Camera> cameras = cameraMapper.selectList(new QueryWrapper<Camera>().last("limit 2,4"));
List<Camera> cameras = cameraMapper.selectList(new QueryWrapper<Camera>().last("limit 4,4"));
return cameras;
}
@ -344,12 +344,23 @@ public class CameraService {
}
}
public void cameraConnect(Integer cameraId){
log.error("camera unconnected,cameraId:{}",cameraId);
Camera camera = cameraMapper.selectById(cameraId);
cameraLogin(camera);
}
public void cameraLogin(Camera camera){
NetSDKLib.LLong lLong = cameraControlLoginModule.login(camera.getIp(),camera.getPort(),camera.getUser(),camera.getPassword());
synchronized (camera.getId().toString().intern()){
NetSDKLib.LLong lLong = cameraControlLoginModule.login(camera.getId(),camera.getIp(),camera.getPort(),camera.getUser(),camera.getPassword());
if(lLong != null){
log.info("camera login success,cameraId:{},ip:{}",camera.getId(),camera.getIp());
CameraConnMap.conn(camera.getId(),lLong);
}
}
}

@ -52,6 +52,7 @@ public class CheckLogService {
if(search.getStreetId() != null && search.getStreetId() != 0){
wrapper.eq("`street_id`",search.getStreetId());
}
wrapper.like(search.getTaskId()!= null && !search.getTaskId().equals(""), "`task_id`",search.getTaskId());
wrapper.orderByDesc("create_Time");
List<CheckLog>stockChecks = checkLogMapper.selectList(wrapper);
stockChecks.forEach(l->{

@ -117,7 +117,10 @@ public class CronTab {
List<Camera> cameras = cameraMapper.selectList(new QueryWrapper<>());
for (Camera camera : cameras){
Boolean ok = false;
if(configProperties.getCameraConfig().getCameraType() == ConfigProperties.HIK_CAMERA){
if (CameraConnMap.getConnId(camera.getId()) !=null){
cameraService.cameraLogin(camera);
}
if(configProperties.getCameraConfig().getCameraType() == ConfigProperties.HIK_CAMERA ){
ok = HikLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId()).intValue());
}else {
ok = JoywareLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId()));

@ -25,6 +25,7 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
@ -84,6 +85,7 @@ public class InitService implements ApplicationRunner {
cameras.forEach(camera -> {
LoginThread loginThread = new LoginThread(camera);
loginThread.start();
CameraConnMap.cameraByIdMap.put(camera.getId(),camera);
});
LPLicense.createLicKeyIfNotExist();
//plc连接

@ -79,9 +79,9 @@ public class PlcService {
@Resource
private CheckLogMapper checkLogMapper;
private static ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1,8,200,TimeUnit.MINUTES,new ArrayBlockingQueue<>(100000));
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;
}
@ -92,7 +92,7 @@ public class PlcService {
public Integer plcStatus() {
Integer count = 1;
if(configProperties.getServerMode() == 0){
if (configProperties.getServerMode() == 0) {
count = streetMapper.selectCount(new QueryWrapper<>());
}
@ -109,14 +109,14 @@ public class PlcService {
Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId());
if (street != null) {
if(plcCmdInfo.getLeftRight1() == 1){
if(plcCmdInfo.getRow1()>street.getLeftRow() && plcCmdInfo.getColumn1() > street.getLeftColumn()){
log.error("row:{},column:{},error in streetId:{} left",plcCmdInfo.getRow1(),plcCmdInfo.getColumn1(),street.getId());
if (plcCmdInfo.getLeftRight1() == 1) {
if (plcCmdInfo.getRow1() > street.getLeftRow() && plcCmdInfo.getColumn1() > street.getLeftColumn()) {
log.error("row:{},column:{},error in streetId:{} left", plcCmdInfo.getRow1(), plcCmdInfo.getColumn1(), street.getId());
return;
}
}else {
if(plcCmdInfo.getRow1()>street.getRightRow() && plcCmdInfo.getColumn1() > street.getRightColumn()){
log.error("row:{},column:{},error in streetId:{} right",plcCmdInfo.getRow1(),plcCmdInfo.getColumn1(),street.getId());
} else {
if (plcCmdInfo.getRow1() > street.getRightRow() && plcCmdInfo.getColumn1() > street.getRightColumn()) {
log.error("row:{},column:{},error in streetId:{} right", plcCmdInfo.getRow1(), plcCmdInfo.getColumn1(), street.getId());
return;
}
}
@ -142,17 +142,18 @@ public class PlcService {
OrderRealtime.startOrder(street.getId(), plcCmdInfo.getOrderNum());
}
}
public boolean openStreetLightSource( Integer streetId){
public boolean openStreetLightSource(Integer streetId) {
List<LightSource> lightSources = lightSourceService.getLightSourceByStreetId(streetId);
lightSources.forEach(lightSource -> {
if(configProperties.getLightSource().getType() == 1){
JYDAMEquip equip = JYDamHelper.Connect(lightSource.getIp(),lightSource.getPort());
JYDamHelper.openDO(equip,configProperties.getLightSource().getIndex());
Integer status = JYDamHelper.ReadStatus(equip,configProperties.getLightSource().getNum(),configProperties.getLightSource().getIndex());
log.info("ip:{},status:{}",lightSource.getIp(),status);
if (configProperties.getLightSource().getType() == 1) {
JYDAMEquip equip = JYDamHelper.Connect(lightSource.getIp(), lightSource.getPort());
JYDamHelper.openDO(equip, configProperties.getLightSource().getIndex());
Integer status = JYDamHelper.ReadStatus(equip, configProperties.getLightSource().getNum(), configProperties.getLightSource().getIndex());
log.info("ip:{},status:{}", lightSource.getIp(), status);
equip.DisConnect();
}else if(configProperties.getLightSource().getType() == 2){
HikControlSocket.openLight(lightSource.getIp(),lightSource.getPort(),configProperties.getLightSource().getIndex(),1);
} else if (configProperties.getLightSource().getType() == 2) {
HikControlSocket.openLight(lightSource.getIp(), lightSource.getPort(), configProperties.getLightSource().getIndex(), 1);
}
});
@ -160,67 +161,61 @@ public class PlcService {
return true;
}
public void verticalAdjustmentByStreet(String SRMNumber){
public void verticalAdjustmentByStreet(String SRMNumber) {
Street street = streetService.getStreetByPlcId(SRMNumber);
try {
Thread.sleep(configProperties.getCameraConfig().getVerticalAdjustmentTime()*1000);
Thread.sleep(configProperties.getCameraConfig().getVerticalAdjustmentTime() * 1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
if(street.getCamera1Id()!=null){
if (street.getCamera1Id() != null) {
//重置垂直方向球机
verticalAdjustment(street.getCamera1Id());
}
if(street.getCamera2Id()!=null){
if (street.getCamera2Id() != null) {
//重置垂直方向球机
verticalAdjustment(street.getCamera2Id());
}
}
public void verticalAdjustment(Integer cameraId){
log.info("球机"+cameraId+"重置垂直方向开始");
public void verticalAdjustment(Integer cameraId) {
log.info("球机" + cameraId + "重置垂直方向开始");
Double origin = null;
int i = 10 ;
while (i >=0){
i-- ;
CameraPtzPojo cameraPtzPojo = cameraControlModule.ptzGetDVRConfig(cameraId);
if(cameraPtzPojo.isGetSuccess()) {
cameraControlModule.ptzControlDownStart(cameraId, 0, 0, 1);
log.info("球机控制向下");
System.out.println("获取的垂直位置"+cameraPtzPojo.getWTiltPos());
if (origin == null) {
origin = cameraPtzPojo.getWTiltPos();
} else if (cameraPtzPojo.getWTiltPos() <= origin) {
break;
}
}
try {
Thread.sleep(500);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
CameraPtzPojo cameraPtzPojo = cameraControlModule.ptzGetDVRConfig(cameraId);
if (cameraPtzPojo.isGetSuccess()) {
cameraControlModule.ptzControlDownStart(cameraId, 0, 0, 1);
log.info("球机控制向下");
System.out.println("获取的垂直位置" + cameraPtzPojo.getWTiltPos());
}
try {
//预设5秒回到原点位
Thread.sleep(5000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
log.info("球机"+cameraId+"重置垂直方向成功");
cameraControlModule.ptzControlDownEnd(cameraId,0);
gyrateCameraByCode(cameraId,"C1");
log.info("球机" + cameraId + "重置垂直方向成功");
cameraControlModule.ptzControlDownEnd(cameraId, 0);
gyrateCameraByCode(cameraId, "C1");
}
public boolean closeStreetLightSource( Integer streetId){
public boolean closeStreetLightSource(Integer streetId) {
List<LightSource> lightSources = lightSourceService.getLightSourceByStreetId(streetId);
lightSources.forEach(lightSource -> {
if(configProperties.getLightSource().getType() == 1){
JYDAMEquip equip = JYDamHelper.Connect(lightSource.getIp(),lightSource.getPort());
JYDamHelper.closeDO(equip,configProperties.getLightSource().getIndex());
Integer status = JYDamHelper.ReadStatus(equip,configProperties.getLightSource().getNum(),configProperties.getLightSource().getIndex());
log.info("ip:{},status:{}",lightSource.getIp(),status);
if (configProperties.getLightSource().getType() == 1) {
JYDAMEquip equip = JYDamHelper.Connect(lightSource.getIp(), lightSource.getPort());
JYDamHelper.closeDO(equip, configProperties.getLightSource().getIndex());
Integer status = JYDamHelper.ReadStatus(equip, configProperties.getLightSource().getNum(), configProperties.getLightSource().getIndex());
log.info("ip:{},status:{}", lightSource.getIp(), status);
equip.DisConnect();
}else if(configProperties.getLightSource().getType() == 2){
HikControlSocket.openLight(lightSource.getIp(),lightSource.getPort(),configProperties.getLightSource().getIndex(),0);
} else if (configProperties.getLightSource().getType() == 2) {
HikControlSocket.openLight(lightSource.getIp(), lightSource.getPort(), configProperties.getLightSource().getIndex(), 0);
}
});
return true;
}
/**
*
*
@ -249,17 +244,17 @@ public class PlcService {
update.setColumn2(plcCmdInfo.getColumn2());
update.setRow2(plcCmdInfo.getRow2());
LocalDateTime endDownLoadTime = endTime.plusSeconds(10);
Duration duration = Duration.between(order.getStartTime(),endDownLoadTime);
Duration duration = Duration.between(order.getStartTime(), endDownLoadTime);
if(duration.toMinutes() > 50){
if (duration.toMinutes() > 50) {
endDownLoadTime = order.getStartTime().plusMinutes(50);
}
if (street.getCamera1Id() != null) {
String path = cameraVideo(street.getCamera1Id(),order.getStartTime(),endDownLoadTime);
String path = cameraVideo(street.getCamera1Id(), order.getStartTime(), endDownLoadTime);
update.setVideoPath1(path);
}
if (street.getCamera2Id() != null) {
String path = cameraVideo(street.getCamera2Id(),order.getStartTime(),endDownLoadTime);
String path = cameraVideo(street.getCamera2Id(), order.getStartTime(), endDownLoadTime);
update.setVideoPath2(path);
}
orderMapper.updateById(update);
@ -281,12 +276,12 @@ public class PlcService {
}
public String cameraVideo(Integer cameraId, LocalDateTime startTime, LocalDateTime endTime) {
String path = PathUtil.createFileName("mp4",cameraId);
String path = PathUtil.createFileName("mp4", cameraId);
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
String realPath = configProperties.getSavePath().getMp4Path() + path;
TaskDelayExecutor.addMp4DelayTask(cameraId,realPath,startTime,endTime,configProperties.getCameraConfig().getDelayDownloadMp4());
TaskDelayExecutor.addMp4DelayTask(cameraId, realPath, startTime, endTime, configProperties.getCameraConfig().getDelayDownloadMp4());
}
});
thread.start();
@ -320,83 +315,83 @@ public class PlcService {
* camera2
*
*/
Integer cameraId = getCameraByPlcCmd(plcCmdInfo,orderInfo.getLeftRight());
gyrateCameraByCode(cameraId,orderInfo.getCmdCode());
if(needCapture){
Integer cameraId = getCameraByPlcCmd(plcCmdInfo, orderInfo.getLeftRight());
gyrateCameraByCode(cameraId, orderInfo.getCmdCode());
if (needCapture) {
Boolean delay = true;
Integer row = 0;
Integer column = 0;
Integer sep = 0;
if(times<=2){
if (times <= 2) {
row = plcCmdInfo.getRow1();
column = plcCmdInfo.getColumn1();
sep = plcCmdInfo.getSeparation1();
}else {
} else {
row = plcCmdInfo.getRow2();
column = plcCmdInfo.getColumn2();
sep = plcCmdInfo.getSeparation2();
}
long delayTime = 0;
if(code.startsWith("C1")){
if (code.startsWith("C1")) {
delayTime = configProperties.getCameraConfig().getC1DelayCaptureTime();
}else if(code.startsWith("C2")){
if(sep == 1){
} else if (code.startsWith("C2")) {
if (sep == 1) {
delayTime = configProperties.getCameraConfig().getC2DelayCaptureTime();
}else {
} else {
delayTime = configProperties.getCameraConfig().getC2OutDelayCaptureTime();
}
}else if(code.startsWith("C3")){
} else if (code.startsWith("C3")) {
delayTime = configProperties.getCameraConfig().getC3DelayCaptureTime();
}else if(code.startsWith("C4")){
if(sep == 1){
} else if (code.startsWith("C4")) {
if (sep == 1) {
delayTime = configProperties.getCameraConfig().getC4DelayCaptureTime();
}else {
} else {
delayTime = configProperties.getCameraConfig().getC4OutDelayCaptureTime();
}
}
path = PathUtil.createFileNameByRowColumn("jpg",cameraId,row,column);
path = cameraCapture(cameraId,delay,delayTime,path);
path = PathUtil.createFileNameByRowColumn("jpg", cameraId, row, column);
path = cameraCapture(cameraId, delay, delayTime, path);
}
//update order info after capture
if (path != null && needCapture) {
captureUpdateOrderAndStock(orderInfo, path);
}
//转向原点位
if(times == 2){
if (times == 2) {
if(street.getCamera2Id() != null){
gyrateCameraByCodeTimeLater(street.getCamera2Id(),"C5",configProperties.getCameraConfig().getC2OutDelayCaptureTime()+500);
if (street.getCamera2Id() != null) {
gyrateCameraByCodeTimeLater(street.getCamera2Id(), "C5", configProperties.getCameraConfig().getC2OutDelayCaptureTime() + 500);
}
if(street.getCamera1Id() != null){
gyrateCameraByCodeTimeLater(street.getCamera1Id(),"C5",configProperties.getCameraConfig().getC2OutDelayCaptureTime()+500);
if (street.getCamera1Id() != null) {
gyrateCameraByCodeTimeLater(street.getCamera1Id(), "C5", configProperties.getCameraConfig().getC2OutDelayCaptureTime() + 500);
}
}
}
public void gyrateCamera(PlcCmdInfo plcCmdInfo,String code){
public void gyrateCamera(PlcCmdInfo plcCmdInfo, String code) {
Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId());
if(street == null){
if (street == null) {
return;
}
if(street.getCamera1Id() != null){
gyrateCameraByCode(street.getCamera1Id(),code);
if (street.getCamera1Id() != null) {
gyrateCameraByCode(street.getCamera1Id(), code);
}
if(street.getCamera2Id() != null){
gyrateCameraByCode(street.getCamera2Id(),code);
if (street.getCamera2Id() != null) {
gyrateCameraByCode(street.getCamera2Id(), code);
}
}
public void warnAction(PlcCmdInfo plcCmdInfo,String warnCode){
public void warnAction(PlcCmdInfo plcCmdInfo, String warnCode) {
Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId());
if(street.getCamera1Id() != null){
gyrateCameraByCode(street.getCamera1Id(),warnCode);
if (street.getCamera1Id() != null) {
gyrateCameraByCode(street.getCamera1Id(), warnCode);
}
if(street.getCamera2Id() != null){
gyrateCameraByCode(street.getCamera2Id(),warnCode);
if (street.getCamera2Id() != null) {
gyrateCameraByCode(street.getCamera2Id(), warnCode);
}
}
@ -419,13 +414,13 @@ public class PlcService {
*
* @Return pic address
*/
public String cameraCapture(Integer cameraId,Boolean delay,Long delayTime,String path) {
public String cameraCapture(Integer cameraId, Boolean delay, Long delayTime, String path) {
//String path = PathUtil.createFileName("jpg",cameraId);
String realPath = configProperties.getSavePath().getMediaPath() + path;
if(delay){
TaskDelayExecutor.addPicDelayTask(cameraId,realPath,delayTime);
}else {
cameraControlModule.pic(cameraId,0,realPath);
if (delay) {
TaskDelayExecutor.addPicDelayTask(cameraId, realPath, delayTime);
} else {
cameraControlModule.pic(cameraId, 0, realPath);
log.info("cameraID: {} capture photo :{}", cameraId, path);
}
return path;
@ -441,17 +436,17 @@ public class PlcService {
Integer ptzId = cameraService.getPtzIdByCodeAndCameraId(code, cameraId);
if (ptzId != null && ptzId >= 0) {
log.info("gyrate camera by code, code{},cameraId:{},ptId:{}", code, cameraId, ptzId);
cameraControlModule.toPtz(ptzId,cameraId);
cameraControlModule.toPtz(ptzId, cameraId);
} else {
log.error("ptz not found ,code{},cameraId:{}", code, cameraId);
}
}
public void gyrateCameraByCodeTimeLater(Integer cameraId, String code,long times) {
public void gyrateCameraByCodeTimeLater(Integer cameraId, String code, long times) {
Integer ptzId = cameraService.getPtzIdByCodeAndCameraId(code, cameraId);
if (ptzId != null && ptzId >= 0) {
log.info("gyrate camera by code, code{},cameraId:{},ptId:{}", code, cameraId, ptzId);
TaskDelayExecutor.addGyrateCameraTask(cameraId,times,ptzId);
TaskDelayExecutor.addGyrateCameraTask(cameraId, times, ptzId);
//cameraControlModule.toPtz(ptzId,cameraId);
} else {
log.error("ptz not found ,code{},cameraId:{}", code, cameraId);
@ -489,7 +484,7 @@ public class PlcService {
Order order = orderMapper.getOneByOrderNum(orderNum);
if (order != null) {
//stop the order
log.debug("plcId:{},warn start and stop the order",plcId);
log.debug("plcId:{},warn start and stop the order", plcId);
orderStopByWarn(orderNum);
OrderVO orderVO = new OrderVO();
BeanUtils.copyProperties(order, orderVO);
@ -528,11 +523,11 @@ public class PlcService {
//结束该告警,并录像
warn.setEndTime(LocalDateTime.now());
if (street.getCamera1Id() != null) {
String path = cameraVideo(street.getCamera1Id(),warn.getStartTime(),LocalDateTime.now());
String path = cameraVideo(street.getCamera1Id(), warn.getStartTime(), LocalDateTime.now());
warn.setVideoPath1(path);
}
if (street.getCamera2Id() != null) {
String path = cameraVideo(street.getCamera2Id(),warn.getStartTime(),LocalDateTime.now());
String path = cameraVideo(street.getCamera2Id(), warn.getStartTime(), LocalDateTime.now());
warn.setVideoPath2(path);
}
warnMapper.updateById(warn);
@ -552,7 +547,7 @@ public class PlcService {
Order order = orderMapper.getOneByOrderNum(orderInfo.getOrderNum());
if (order != null) {
//update picPath in stock if code is C2/C4
if(orderInfo.getCode().startsWith("C2") || orderInfo.getCode().startsWith("C4")){
if (orderInfo.getCode().startsWith("C2") || orderInfo.getCode().startsWith("C4")) {
StockLog stockLog = new StockLog();
stockLog.setStreetId(orderInfo.getStreetId());
stockLog.setDirection(orderInfo.getLeftRight());
@ -560,7 +555,7 @@ public class PlcService {
stockLog.setRow(orderInfo.getRow());
stockLog.setColumn(orderInfo.getColumn());
stockLog.setPic(path);
String type = orderInfo.getCode().substring(1,2);
String type = orderInfo.getCode().substring(1, 2);
stockLog.setType(Integer.valueOf(type));
stockLog.setOrderNum(orderInfo.getOrderNum());
stockLog.setCreateTime(LocalDateTime.now());
@ -601,16 +596,16 @@ public class PlcService {
}
}
public Integer getCameraByPlcCmd(PlcCmdInfo plcCmdInfo,Integer leftRight){
public Integer getCameraByPlcCmd(PlcCmdInfo plcCmdInfo, Integer leftRight) {
Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId());
//判断单双伸 type=0 单伸 1为双伸
Integer type;
if(leftRight == 1){
if (leftRight == 1) {
type = street.getLeftType();
}else {
} else {
type = street.getRightType();
}
if(type == 0){
if (type == 0) {
//单伸
if (street.getCamera1Id() != null && street.getCamera2Id() != null && street.getCamera1Id() != 0 && street.getCamera2Id() != 0) {
if (leftRight == 1) {
@ -622,13 +617,13 @@ public class PlcService {
Integer cameraId = street.getCamera1Id() != null && street.getCamera1Id() != 0 ? street.getCamera1Id() : street.getCamera2Id();
return cameraId;
}
}else {
} else {
if (street.getCamera1Id() != null && street.getCamera2Id() != null && street.getCamera1Id() != 0 && street.getCamera2Id() != 0) {
//双伸 todo 这个因项目而异,看现场的情况
//默认是 左侧返回camera2 右侧返回camera1
if(plcCmdInfo.getLeftRight1() == 1){
if (plcCmdInfo.getLeftRight1() == 1) {
return street.getCamera2Id();
}else {
} else {
return street.getCamera1Id();
}
} else {
@ -643,28 +638,28 @@ public class PlcService {
@Resource
private LightSourceMapper lightSourceMapper;
public Boolean check(PlcCmdInfo plcCmdInfo,String cmdCode,String wmsCode,String wmsTrayCode,String wmsCatagary){
public Boolean check(PlcCmdInfo plcCmdInfo, String cmdCode, String wmsCode, String wmsTrayCode, String wmsCatagary) {
long startTime = System.currentTimeMillis();
Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId());
CronTab.putTime(street.getId());
List<LightSource> lightSources = lightSourceMapper.selectList(new QueryWrapper<LightSource>().eq("street_id",street.getId()));
List<LightSource> lightSources = lightSourceMapper.selectList(new QueryWrapper<LightSource>().eq("street_id", street.getId()));
lightSources.forEach(lightSource -> {
HikControlSocket.openLight(lightSource.getIp(),lightSource.getPort(),configProperties.getLightSource().getIndex(),1);
HikControlSocket.openLight(lightSource.getIp(), lightSource.getPort(), configProperties.getLightSource().getIndex(), 1);
});
Integer cameraId = getCameraByPlcCmd(plcCmdInfo,plcCmdInfo.getLeftRight1());
Integer cameraId = getCameraByPlcCmd(plcCmdInfo, plcCmdInfo.getLeftRight1());
//蜜雪冰城拍摄货物顶部时用同侧相机
Integer leftRightTop = plcCmdInfo.getLeftRight1() == 1 ? 2 : 1;
Integer cameraIdTop = getCameraByPlcCmd(plcCmdInfo, leftRightTop);
if(plcCmdInfo.getSeparation1() == 1 && configProperties.getScanCodeMode().getTray() == 2){
if (plcCmdInfo.getSeparation1() == 1 && configProperties.getScanCodeMode().getTray() == 2) {
//内测
String c = cmdCode + "-" + plcCmdInfo.getLeftRightStr(1) ;
log.info("camera ptz"+c);
String c = cmdCode + "-" + plcCmdInfo.getLeftRightStr(1);
log.info("camera ptz" + c);
gyrateCameraByCode(cameraIdTop, c);
}else {
String c = cmdCode + "-" + plcCmdInfo.getLeftRightStr(1) ;
log.info("camera ptz"+cmdCode);
} else {
String c = cmdCode + "-" + plcCmdInfo.getLeftRightStr(1);
log.info("camera ptz" + cmdCode);
gyrateCameraByCode(cameraIdTop, cmdCode);
try {
Thread.sleep(configProperties.getCameraConfig().getDelayCaptureTime());
@ -674,7 +669,7 @@ public class PlcService {
}
String path = PathUtil.createFileNameByRowColumn("jpg",cameraId,plcCmdInfo.getRow1(),plcCmdInfo.getColumn1());
String path = PathUtil.createFileNameByRowColumn("jpg", cameraId, plcCmdInfo.getRow1(), plcCmdInfo.getColumn1());
//拍照暂停1s再拍
try {
Thread.sleep(configProperties.getCameraConfig().getEDelayCaptureTime());
@ -685,8 +680,8 @@ public class PlcService {
cameraCapture(cameraIdTop, false, null, path);
//成都蜜雪冰城 只拍照人工核对
String e2 = "E2-" + plcCmdInfo.getLeftRightStr(1) + "-TOP";
log.info("camera ptz"+e2);
String e2 = "E2-" + plcCmdInfo.getLeftRightStr(1) + "-TOP";
log.info("camera ptz" + e2);
gyrateCameraByCode(cameraId, e2);
try {
@ -694,21 +689,21 @@ public class PlcService {
} catch (InterruptedException e) {
e.printStackTrace();
}
cameraCapture(cameraId,false,null,path+".jpg");
cameraCapture(cameraId, false, null, path + ".jpg");
try {
Thread.sleep(configProperties.getCameraConfig().getEDelayCaptureTime());
} catch (InterruptedException e) {
e.printStackTrace();
}
}catch (Exception e){
log.error("camera capture error:{}",e.getMessage());
} catch (Exception e) {
log.error("camera capture error:{}", e.getMessage());
}
OrderInfo orderInfo = new OrderInfo(street,plcCmdInfo,1,cmdCode);
Stock stock = stockMapper.getByStreetAndDirectionAndSideAndRowColumn(orderInfo.getStreetId(),orderInfo.getLeftRight(),orderInfo.getSeparation(),orderInfo.getRow(),orderInfo.getColumn());
OrderInfo orderInfo = new OrderInfo(street, plcCmdInfo, 1, cmdCode);
Stock stock = stockMapper.getByStreetAndDirectionAndSideAndRowColumn(orderInfo.getStreetId(), orderInfo.getLeftRight(), orderInfo.getSeparation(), orderInfo.getRow(), orderInfo.getColumn());
//核对异常
if(stock == null){
if (stock == null) {
/* stock = new Stock(null,null,plcCmdInfo.getOrderNum(),plcCmdInfo.getLotnum()
,"", null,null,wmsCode,wmsCatagary,null,
wmsTrayCode,"",orderInfo.getStreetId(),
@ -738,7 +733,7 @@ public class PlcService {
.build();
stockMapper.insert(stock);
log.info("stockmapper insert new stock info.");
}else {
} else {
stock.setStatus(0);
stock.setLotnum(plcCmdInfo.getLotnum());
stock.setExportTime(LocalDateTime.now());
@ -764,10 +759,11 @@ public class PlcService {
// threadPoolExecutor.execute(stockCheckRunnable);
long end = System.currentTimeMillis();
long s = end - startTime;
log.info("time:{}millisecond",s);
log.info("time:{}millisecond", s);
return true;
}
public void checkLog(Stock stock){
public void checkLog(Stock stock) {
CheckLog checkLog = new CheckLog();
checkLog.setCheckNum(stock.getCheckNum());
checkLog.setPic(stock.getCheckPic());
@ -776,6 +772,7 @@ public class PlcService {
checkLog.setSide(stock.getSide());
checkLog.setSubtag(stock.getSubtag());
checkLog.setCode(stock.getCode());
checkLog.setTaskId(stock.getTaskWMSId());
checkLog.setWmsCode(stock.getWmsCode());
checkLog.setStatus(stock.getStatus());
checkLog.setRow(stock.getRow());
@ -788,16 +785,17 @@ public class PlcService {
checkLogMapper.insert(checkLog);
log.info("checklogmapper insert new checklog info finished.");
}
public void truncateStock(){
public void truncateStock() {
stockMapper.truncate();
}
public void RFIDCheck(PlcCmdInfo plcCmdInfo){
public void RFIDCheck(PlcCmdInfo plcCmdInfo) {
Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId());
if(street != null){
if (street != null) {
RFID rfid = rfidService.getRFIDByPlc(street.getId());
if(rfid != null){
RFIDStart(rfid.getIp(),rfid.getPort(),street.getId(),1);
if (rfid != null) {
RFIDStart(rfid.getIp(), rfid.getPort(), street.getId(), 1);
}
}
}
@ -821,7 +819,8 @@ public class PlcService {
}
return tags;
}
public ConfigProperties getConfigProperties(){
public ConfigProperties getConfigProperties() {
return configProperties;
}

@ -1,6 +1,7 @@
package com.zhehekeji.web.service;
import com.alibaba.excel.EasyExcel;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@ -19,6 +20,9 @@ import io.swagger.models.auth.In;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@ -407,17 +411,25 @@ public class StockService {
*/
public Stock stockInfo(StockCheck stockCheck) {
Stock stock = stockMapper.getByStreetAndDirectionAndSideAndRowColumn(stockCheck.getStreetId(), stockCheck.getDirection(), stockCheck.getSide(), stockCheck.getRow(), stockCheck.getColumn());
Street street = streetMapper.selectOne(new QueryWrapper<Street>()
.eq(stockCheck.getStreetPlc()!=null,"plc_Id", stockCheck.getStreetPlc())
.eq(stockCheck.getStreetId()!=null,"id", stockCheck.getStreetId()));
Stock stock = stockMapper.selectOne(new QueryWrapper<Stock>().eq("`row`", stockCheck.getRow())
.eq("`column`", stockCheck.getColumn())
.eq("`direction`", stockCheck.getDirection())
.eq("`side`", stockCheck.getSide())
.eq(stockCheck.getStreetId()!=null,"`street_id`", stockCheck.getStreetId())
.eq(stockCheck.getStreetPlc()!=null,"`street_id`", stockCheck.getStreetPlc()));
if (stock == null) {
stock = new Stock();
stock.setColumn(stockCheck.getColumn());
stock.setRow(stockCheck.getRow());
//stock.setShelveId(stockCheck.getShelveId());
stock.setStatus(0);
Street street = streetMapper.selectById(stockCheck.getStreetId());
stock.setStreetName(street.getName());
} else {
Street street = streetMapper.selectById(stock.getStreetId());
stock.setStreetName(street.getName());
List<StockLog> stockLogs = stockLogMapper.selectList(new QueryWrapper<StockLog>().eq("`row`", stockCheck.getRow()).eq("`column`", stockCheck.getColumn()).eq("street_id", stockCheck.getStreetId()).eq("direction", stockCheck.getDirection()).eq("side", stockCheck.getSide()).orderByDesc("create_time").last(" limit 2"));
@ -495,6 +507,9 @@ public class StockService {
public void uploadResultsWMS(Stock stock, Integer stockStatus) {
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setContentType(MediaType.APPLICATION_JSON);
ResponseEntity<String> body = null;
RestTemplate restTemplate = new RestTemplate();
String url = configProperties.getUploadResultsApiUrl();
@ -507,14 +522,17 @@ public class StockService {
uploadCheckResults.setWcsTaskId(stock.getCheckNum().split("_")[1]);
uploadCheckResults.setWmsTaskId(stock.getTaskWMSId());
uploadCheckResults.setPalno(stock.getWmsCode());
uploadCheckResults.setFlag(stockStatus == 1 ? 1 : 0);
uploadCheckResults.setFlag(stockStatus == 1 ? "1" : "0");
uploadCheckResults.setAddre(stock.getAddre());
List<UploadCheckResults> list = new ArrayList<>();
list.add(uploadCheckResults);
HttpEntity<List<UploadCheckResults>> requestEntity = new HttpEntity<>(list, requestHeaders);
try {
// String jsonString = gson.toJson(algorithmPojo);
body = restTemplate.postForEntity(url, uploadCheckResults, String.class);
JSONObject.parseObject(body.getBody(), UploadCheckResults.class);
System.out.println("上传信息:"+ JSON.toJSONString(list));
body = restTemplate.postForEntity(url, list, String.class);
System.out.println(body);
} catch (RestClientException e) {
@ -523,6 +541,24 @@ public class StockService {
}
}
public static void main(String[] args) {
UploadCheckResults uploadCheckResults = new UploadCheckResults();
//String url = "http://127.0.0.1:8083"+"/visionCompute";
uploadCheckResults.setWcsTaskId("1111");
uploadCheckResults.setWmsTaskId("stock.getTaskWMSId()");
uploadCheckResults.setPalno("stock.getWmsCode()");
uploadCheckResults.setFlag(1 == 1 ? "1" : "0");
uploadCheckResults.setAddre("stock.getAddre()");
List<UploadCheckResults> list = new ArrayList<>();
list.add(uploadCheckResults);
System.out.println(JSON.toJSONString(list));
}
@Resource
private CheckLogMapper checkLogMapper;

@ -10,7 +10,7 @@ public class KsecDataInfo {
private String cmdName;
private String taskId;
private String taskWMSId;
private String taskWMSTaskId;
private Integer fromColumn;

@ -97,7 +97,7 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder {
plcCmdInfo = new PlcCmdInfo(dataInfo.getSRMNumber(), dataInfo.getTaskId(), dataInfo.getFromSide(), dataInfo.getFromDirection(), dataInfo.getFromColumn(), dataInfo.getFromRow(), dataInfo.getFromSeparation(), dataInfo.getToSide(), dataInfo.getToDirection(), dataInfo.getToColumn(), dataInfo.getToRow(), dataInfo.getToSeparation(), lotnum);
plcCmdInfo.setSubtag(dataInfo.getSubtag());
plcCmdInfo.setAddre(dataInfo.getAddre());
plcCmdInfo.setTaskWMSId(dataInfo.getTaskWMSId());
plcCmdInfo.setTaskWMSId(dataInfo.getTaskWMSTaskId());
plcCmdInfo.setAddre(dataInfo.getAddre());
plcCmdInfo.setWmsTrayCode(dataInfo.getTrayCode());
plcCmdInfo.setTrayCode(dataInfo.getCode());

@ -50,6 +50,10 @@ public class KsecNettyClient {
* @param upId
*/
public void reconnect(Integer upId) {
if(channel!=null){
channel.disconnect();
channel.close();
}
Boolean isConnected = false;
int num = 0;
ConfigProperties.KSEC ksec = configProperties.getKsec();

Loading…
Cancel
Save