Merge branch 'master' into 'liuzhou-yancao'

Master

See merge request duoji/backend-duoji-monitor!5
merge-requests/6/head
wang.yiming 4 years ago
commit 4600d46906

@ -27,6 +27,8 @@ public class ConfigProperties {
private Integer serverMode; private Integer serverMode;
private Integer deleteFileDays;
private String userUrl; private String userUrl;
private KSEC ksec; private KSEC ksec;

@ -28,6 +28,8 @@ public class CameraDelayTask implements Delayed {
private long delayTime; private long delayTime;
private Integer ptzId;
public CameraDelayTask(Integer cameraId, LocalDateTime startTime, LocalDateTime endTime, String path, Integer type, long delayTime) { public CameraDelayTask(Integer cameraId, LocalDateTime startTime, LocalDateTime endTime, String path, Integer type, long delayTime) {
this.cameraId = cameraId; this.cameraId = cameraId;
this.startTime = startTime; this.startTime = startTime;

@ -23,6 +23,12 @@ public class TaskDelayExecutor {
queue.add(cameraDelayTask); queue.add(cameraDelayTask);
} }
public static void addGyrateCameraTask(Integer cameraId, Long delayTime,Integer ptzId){
CameraDelayTask cameraDelayTask = new CameraDelayTask(cameraId, null, null,null, 2,delayTime);
cameraDelayTask.setPtzId(ptzId);
queue.add(cameraDelayTask);
}
public static void runMp4DownloadExecutor(){ public static void runMp4DownloadExecutor(){
exec.execute(new Consumer()); exec.execute(new Consumer());
} }
@ -42,6 +48,8 @@ public class TaskDelayExecutor {
cameraControlModule.downloadMp4(cameraDelayTask.getCameraId(), cameraDelayTask.getPath(), cameraDelayTask.getStartTime(), cameraDelayTask.getEndTime()); cameraControlModule.downloadMp4(cameraDelayTask.getCameraId(), cameraDelayTask.getPath(), cameraDelayTask.getStartTime(), cameraDelayTask.getEndTime());
}else if(cameraDelayTask.getType() == 1){ }else if(cameraDelayTask.getType() == 1){
cameraControlModule.pic(cameraDelayTask.getCameraId(),0, cameraDelayTask.getPath()); cameraControlModule.pic(cameraDelayTask.getCameraId(),0, cameraDelayTask.getPath());
}else if(cameraDelayTask.getType() == 2){
cameraControlModule.toPtz(cameraDelayTask.getPtzId(),cameraDelayTask.getCameraId());
} }
} }

@ -0,0 +1,71 @@
package com.zhehekeji.web.service;
import com.zhehekeji.web.config.ConfigProperties;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.attribute.BasicFileAttributes;
import java.time.*;
@Component
@EnableScheduling
@Slf4j
public class CronTab {
@Resource
private ConfigProperties configProperties;
private static LocalDateTime now;
@Scheduled(cron = "0 0 0 * * ?")
//@Scheduled(cron = "0 0/1 * * * *")
public void file() {
log.info(" corn delete file");
now = LocalDateTime.now();
File dir = new File(configProperties.getSavePath().getMediaPath());
checkFileTime(dir,configProperties.getDeleteFileDays());
File dir2 = new File(configProperties.getSavePath().getMp4Path());
checkFileTime(dir2,configProperties.getDeleteFileDays());
}
public static void checkFileTime(File dir,int days) {
if(!dir.exists()){
return;
}
if (dir.isDirectory()) {
String[] children = dir.list();
if(children.length == 0){
log.info("delete path:{}",dir.getPath());
dir.delete();
}
for (int i = 0; i < children.length; i++) {
checkFileTime(new File(dir, children[i]),days);
}
}else {
//判斷時間
BasicFileAttributes attr = null;
try {
Path path = dir.toPath();
attr = Files.readAttributes(path, BasicFileAttributes.class);
} catch (IOException e) {
e.printStackTrace();
}
// 创建时间
Instant instant = attr.creationTime().toInstant();
LocalDateTime createTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
Duration duration = Duration.between(createTime,now);
if(days<=duration.toDays()){
log.info("delete path:{}",dir.getPath());
dir.delete();
}
}
}
}

@ -246,11 +246,12 @@ public class PlcService {
} }
//转向原点位 //转向原点位
if(times == 2){ if(times == 2){
if(street.getCamera2Id() != null){ if(street.getCamera2Id() != null){
gyrateCameraByCode(street.getCamera2Id(),"C5"); gyrateCameraByCodeTimeLater(street.getCamera2Id(),"C5",configProperties.getCameraConfig().getDelayCaptureTime()+100);
} }
if(street.getCamera1Id() != null){ if(street.getCamera1Id() != null){
gyrateCameraByCode(street.getCamera1Id(),"C5"); gyrateCameraByCodeTimeLater(street.getCamera1Id(),"C5",configProperties.getCameraConfig().getDelayCaptureTime()+100);
} }
} }
} }
@ -324,6 +325,17 @@ public class PlcService {
} }
} }
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);
//cameraControlModule.toPtz(ptzId,cameraId);
} else {
log.error("ptz not found ,code{},cameraId:{}", code, cameraId);
}
}
/** /**
* *
@ -479,10 +491,10 @@ public class PlcService {
//单伸 //单伸
if (street.getCamera1Id() != null && street.getCamera2Id() != null && street.getCamera1Id() != 0 && street.getCamera2Id() != 0) { if (street.getCamera1Id() != null && street.getCamera2Id() != null && street.getCamera1Id() != 0 && street.getCamera2Id() != 0) {
if (leftRight == 1) { if (leftRight == 1) {
return street.getCamera1Id(); return street.getCamera2Id();
} else { } else {
return street.getCamera2Id(); return street.getCamera1Id();
} }
} else { } else {
Integer cameraId = street.getCamera1Id() != null && street.getCamera1Id() != 0 ? street.getCamera1Id() : street.getCamera2Id(); Integer cameraId = street.getCamera1Id() != null && street.getCamera1Id() != 0 ? street.getCamera1Id() : street.getCamera2Id();
@ -501,7 +513,7 @@ public class PlcService {
return street.getCamera2Id(); return street.getCamera2Id();
}else { }else {
//左侧 外货架 camera1 //左侧 外货架 camera1
return street.getCamera1Id(); return street.getCamera2Id();
} }
}else { }else {
if(plcCmdInfo.getSeparation1() == 1){ if(plcCmdInfo.getSeparation1() == 1){
@ -509,7 +521,7 @@ public class PlcService {
return street.getCamera1Id(); return street.getCamera1Id();
}else { }else {
//右侧 外货架 camera2 //右侧 外货架 camera2
return street.getCamera2Id(); return street.getCamera1Id();
} }
} }
}else { }else {
@ -521,7 +533,7 @@ public class PlcService {
return street.getCamera2Id(); return street.getCamera2Id();
}else { }else {
//左侧 外货架 camera1 //左侧 外货架 camera1
return street.getCamera1Id(); return street.getCamera2Id();
} }
}else { }else {
if(plcCmdInfo.getSeparation2() == 1){ if(plcCmdInfo.getSeparation2() == 1){
@ -529,7 +541,7 @@ public class PlcService {
return street.getCamera1Id(); return street.getCamera1Id();
}else { }else {
//右侧 外货架 camera2 //右侧 外货架 camera2
return street.getCamera2Id(); return street.getCamera1Id();
} }
} }
} }
@ -559,7 +571,9 @@ public class PlcService {
String trayCode = null; String trayCode = null;
Boolean trayCheck = Boolean.TRUE; Boolean trayCheck = Boolean.TRUE;
//如果是用扫码枪 扫 托盘码,就直接扫 //如果是用扫码枪 扫 托盘码,就直接扫
if(configProperties.getScanCodeMode().getTray() == 2){ //if(configProperties.getScanCodeMode().getTray() == 2){
if(plcCmdInfo.getSeparation1() == 1 && configProperties.getScanCodeMode().getTray() == 2){
//托盘使用sick扫码枪 //托盘使用sick扫码枪
SensorGun sensorGun = sensorService.getSensorByPlc(street.getId(),plcCmdInfo.getLeftRight1()); SensorGun sensorGun = sensorService.getSensorByPlc(street.getId(),plcCmdInfo.getLeftRight1());
if(sensorGun == null){ if(sensorGun == null){
@ -595,7 +609,6 @@ public class PlcService {
}else if(configProperties.getScanCodeMode().getTray() == 3){ }else if(configProperties.getScanCodeMode().getTray() == 3){
//RFID //RFID
RFID rfid = rfidService.getRFIDByPlc(street.getId()); RFID rfid = rfidService.getRFIDByPlc(street.getId());
} }
StockCheckRunnable stockCheckRunnable = new StockCheckRunnable(street,plcCmdInfo,cmdCode,stockMapper,path,checkLogMapper,configProperties.getScanCodeMode().getGoods(),wmsCode,wmsTrayCode,trayCode,trayCheck,configProperties); StockCheckRunnable stockCheckRunnable = new StockCheckRunnable(street,plcCmdInfo,cmdCode,stockMapper,path,checkLogMapper,configProperties.getScanCodeMode().getGoods(),wmsCode,wmsTrayCode,trayCode,trayCheck,configProperties);
threadPoolExecutor.execute(stockCheckRunnable); threadPoolExecutor.execute(stockCheckRunnable);

@ -58,7 +58,7 @@ public class StockCheckRunnable implements Runnable {
Boolean codeCheck = Boolean.TRUE; Boolean codeCheck = Boolean.TRUE;
Boolean trayCodeCheck = Boolean.TRUE; Boolean trayCodeCheck = Boolean.TRUE;
//货物使用球机扫码 //货物使用球机扫码
if(configProperties.getScanCodeMode().getGoods() == 1){ /*if(configProperties.getScanCodeMode().getGoods() == 1){
if("".equals(wmsCode)){ if("".equals(wmsCode)){
//空货物的处理 //空货物的处理
//如果系统货物为空,则只要扫码识别未出结果,就认为无货物 //如果系统货物为空,则只要扫码识别未出结果,就认为无货物
@ -80,19 +80,19 @@ public class StockCheckRunnable implements Runnable {
codeCheck = wmsCode.equals(scanCode); codeCheck = wmsCode.equals(scanCode);
} }
} }
}*/
} if(configProperties.getScanCodeMode().getTray() == 2 && plcCmdInfo.getSeparation1() == 2){
if(configProperties.getScanCodeMode().getTray() == 1){
//托盘使用球机扫码 //托盘使用球机扫码
if("".equals(wmsCode)){ if("".equals(wmsTrayCode)){
//空货物的处理 //空货物的处理
//如果系统货物为空,则只要扫码识别未出结果,就认为无货物 //如果系统货物为空,则只要扫码识别未出结果,就认为无货物
trayCode = BarcodeDetector.detectBestCodeUntilOK(configProperties.getSavePath().getMediaPath()+path,configProperties.getScanCodeMode().getTrayCodeTypes()); trayCode = BarcodeDetector.detectBestCodeUntilOK(configProperties.getSavePath().getMediaPath()+path,configProperties.getScanCodeMode().getTrayCodeTypes());
log.info("tray code:{},sys trayCode:{}",trayCode,wmsTrayCode);
if(StringUtils.isEmpty(trayCode)|| trayCode.equals("Unrecognized")){ if(StringUtils.isEmpty(trayCode)|| trayCode.equals("Unrecognized")){
trayCheck = Boolean.TRUE; trayCheck = Boolean.TRUE;
trayCode = ""; trayCode = "";
}else { }else {
trayCheck = wmsCode.equals(trayCode); trayCheck = wmsTrayCode.equals(trayCode);
} }
}else { }else {
trayCode = BarcodeDetector.detectBestCodeUntilOK(configProperties.getSavePath().getMediaPath()+path,configProperties.getScanCodeMode().getTrayCodeTypes()); trayCode = BarcodeDetector.detectBestCodeUntilOK(configProperties.getSavePath().getMediaPath()+path,configProperties.getScanCodeMode().getTrayCodeTypes());

@ -66,9 +66,16 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder {
tcpLogger.info("info:{}",body); tcpLogger.info("info:{}",body);
//任务 //任务
if (Cmd.B1.name().equals(cmdName)) { if (Cmd.B1.name().equals(cmdName)) {
//昆船盘点模式下也会发B1 ,但是不会发送B2
//这里判断下,是否存在盘点批次号 若存在既是盘点的B1,无需处理若不存在lotnum则是随行的B1
if(StringUtils.isEmpty(dataInfo.getLotnum())){
//任务开始 旋转到原点位 //任务开始 旋转到原点位
plcService.gyrateCamera(plcCmdInfo,Cmd.C5.name()); plcService.gyrateCamera(plcCmdInfo,Cmd.C5.name());
plcService.orderStart(plcCmdInfo); plcService.orderStart(plcCmdInfo);
}else {
log.info("check move");
}
} else if (Cmd.B2.name().equals(cmdName)) { } else if (Cmd.B2.name().equals(cmdName)) {
plcService.gyrateCamera(plcCmdInfo,Cmd.C5.name()); plcService.gyrateCamera(plcCmdInfo,Cmd.C5.name());
plcService.orderStop(plcCmdInfo); plcService.orderStop(plcCmdInfo);
@ -118,6 +125,7 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder {
plcService.truncateStock(); plcService.truncateStock();
lastLotnum = lotnum; lastLotnum = lotnum;
} }
plcCmdInfo.setTimes(1);
Boolean ok = plcService.check(plcCmdInfo,ksecInfo.getData().getCmdName(), dataInfo.getCode(), dataInfo.getTrayCode()); Boolean ok = plcService.check(plcCmdInfo,ksecInfo.getData().getCmdName(), dataInfo.getCode(), dataInfo.getTrayCode());
if(ok){ if(ok){
ksecInfo.getData().setAckStatus(1); ksecInfo.getData().setAckStatus(1);

@ -70,3 +70,5 @@ scanCodeMode:
- 14 - 14
trayCodeTypes: trayCodeTypes:
- 14 - 14
# 照片 視頻保存多久
deleteFileDays: 365

@ -70,3 +70,5 @@ scanCodeMode:
- 14 - 14
trayCodeTypes: trayCodeTypes:
- 14 - 14
# 照片 視頻保存多久
deleteFileDays: 365

@ -70,3 +70,5 @@ scanCodeMode:
- 14 - 14
trayCodeTypes: trayCodeTypes:
- 14 - 14
# 照片 視頻保存多久
deleteFileDays: 365
Loading…
Cancel
Save