获取盘点信息取消拼接方式来查询

增加pics来查看照片
将sc改为e盘点
使用锁方式来实现同时进入时的分发问题
视觉发送加50毫秒的延时
盘点照片修改预置标识
just-camera
LAPTOP-S9HJSOEB\昊天 2 years ago
parent ffd117c9ac
commit 5189b2ec84

@ -46,6 +46,7 @@ public class ConfigProperties {
* TCP
*/
private Integer serverPort;
private Long queueSpanTime = 5000L;
@Data

@ -122,9 +122,7 @@ public class StockController {
@ApiOperation(value = "获取盘点信息")
@RequestMapping(value = "/checkInfo", method = RequestMethod.POST)
public Result<Stock> checkInfo(@RequestBody StockCheckSearch stockCheck) {
int a = Integer.valueOf(stockCheck.getSRMNumber());
String ss = String.format("%03d", a);
stockCheck.setSRMNumber(ss);
validatorUtil.validate(stockCheck);
log.info("stockCheck:{}",stockCheck);
Stock stock = stockService.stock(stockCheck);

@ -91,6 +91,9 @@ public class Stock {
@TableField(exist=false)
private String topPic1;
@TableField(exist=false)
private String[] checkPics;
@TableField(exist=false)
private String topPic2;

@ -32,6 +32,8 @@ import java.util.*;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import java.util.stream.Collectors;
@ -122,6 +124,7 @@ public class PlcService {
public void orderStopByWarn(String orderNum) {
}
public void verticalAdjustment(Integer cameraId) {
log.info("球机" + cameraId + "重置垂直方向开始");
Double origin = null;
@ -165,9 +168,6 @@ public class PlcService {
}
public String cameraVideo(Integer cameraId, LocalDateTime startTime, LocalDateTime endTime) {
String path = PathUtil.createFileName("mp4", cameraId);
Thread thread = new Thread(new Runnable() {
@ -497,6 +497,7 @@ public class PlcService {
checkLogMapper.insert(checkLog);
log.info("checkLogMapper insert");
}
public void truncateStock() {
stockMapper.truncate();
}
@ -530,6 +531,7 @@ public class PlcService {
}
return tags;
}
public ConfigProperties getConfigProperties() {
return configProperties;
}
@ -537,6 +539,7 @@ public class PlcService {
/**
*
* C1
*
* @param SRMNumber
* @return
*/
@ -573,10 +576,9 @@ public class PlcService {
}
/**
*
*
* @param SRMNumber
* @return
*/
@ -614,11 +616,12 @@ public class PlcService {
return configProperties.getIP() + ":9007/api/pic/" + path;
}
Lock lock = new ReentrantLock();
public void check(PlcCmdInfo plcCmdInfo, KsecDataInfo dataInfo) {
Street street = streetService.getStreetByPlcId(dataInfo.getSRMNumber());
//开始盘点具体货位
if(dataInfo.getCmdName().equals("SC01")){
CheckLog checkLog = new CheckLog();
checkLog.setStreetId(street.getId());
checkLog.setLotnum(dataInfo.getLotnum());
@ -656,26 +659,25 @@ public class PlcService {
} else stockMapper.updateById(stock);
TransmissionPojo transmissionPojo = new TransmissionPojo(checkLog, street);
ClientChanel.get(dataInfo.getSRMNumber()).writeAndFlush(transmissionPojo.toString(TransmissionType.ST));
}
//取货完成进行拍照
else if(dataInfo.getCmdName().equals("SC02")){
CheckLog checkLog = checkLogMapper.selectOne(new QueryWrapper<CheckLog>()
.eq("direction",dataInfo.getFromDirection())
.eq("street_id",street.getId())
.orderByDesc("id").last("limit 1"));
TransmissionPojo transmissionPojo = new TransmissionPojo( checkLog,street );
if(GetPhotoDelayExecutor.cameraDelayTasks.size()==0){
try {
if (lock.tryLock()) {
//队列中没有任务,发送取图指令
ClientChanel.get(dataInfo.getSRMNumber()).writeAndFlush(transmissionPojo.toString(TransmissionType.GPS));
}
Thread.sleep(50L);
} else {
//将取图指令放入队列等待上条取图结束,或队列超时调用
GetPhotoDelayExecutor.addCameraDelayTask(street.getPlcId(),transmissionPojo.toString(TransmissionType.GPS),2000L);
GetPhotoDelayExecutor.addCameraDelayTask(street.getPlcId(), transmissionPojo.toString(TransmissionType.GPS), configProperties.getQueueSpanTime());
}
} catch (InterruptedException e) {
log.error("取图命令 error", e);
} finally {
lock.unlock();
}
// ClientChanel.get(dataInfo.getSRMNumber()).writeAndFlush();
}
}
public void visualCalculationResults(TransmissionPojo transmissionPojo) {
@ -688,11 +690,13 @@ public class PlcService {
} else {
checkLog.setStatus(StockStatus.ERROR.getStatus());
stock.setStatus(StockStatus.ERROR.getStatus());
stock.setCount(transmissionPojo.getCount());
stock.setCategory(transmissionPojo.getCategory());
}
if (transmissionPojo.getPicsPath() != null && transmissionPojo.getPicsPath().length > 0) {
String pics = Arrays.stream(transmissionPojo.getPicsPath()).map(v -> {
return street.getPlcIp() + ":8007" + v;
return "http://" + street.getPlcIp() + ":8007" + v;
}).collect(Collectors.joining(";"));
checkLog.setPic(pics);
stock.setCheckPic(pics);

@ -335,14 +335,10 @@ public class StockService {
// Assert.notNull(shelveId,"无该货架信息");
Street street = streetService.getStreetByPlcId(stockCheckSearch.getSRMNumber());
Stock stock = stockMapper.getByStreetAndDirectionAndSideAndRowColumn(street.getId(),stockCheckSearch.getDirection(),stockCheckSearch.getSeparation(),stockCheckSearch.getRow(),stockCheckSearch.getColumn());
if(stock != null){
String ip ="http://"+ street.getPlcIp()+":9009/pic/"+stock.getCode()+"/"+stock.getLotnum()+"/"+stock.getLotnum()+"/";
stock.setSidePic1(String.format("%s1.png",ip));
stock.setSidePic2(String.format("%s2.png",ip));
stock.setSidePic3(String.format("%s3.png",ip));
stock.setSidePic4(String.format("%s4.png",ip));
stock.setTopPic1(String.format("%s5.png",ip));
stock.setTopPic2(String.format("%s6.png",ip));
if(stock.getCheckPic()!=null){
stock.setCheckPics(stock.getCheckPic().split(";"));
}
return stock;
}

@ -100,6 +100,12 @@ public class Decoder extends DelimiterBasedFrameDecoder {
else if(GET_PHOTO_END.equals(transmissionPojo.getHeader())){
ClientChanel.get(transmissionPojo.getStreetNumber()).writeAndFlush(transmissionPojo.toString(TransmissionType.RTS));
try {
Thread.sleep(50L);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//发送给上位机
KsecInfo ksecInfo = plcService.getKsecDataInfo(transmissionPojo,"SC03");
KsecNettyClient.write(ksecInfo);
@ -119,6 +125,7 @@ public class Decoder extends DelimiterBasedFrameDecoder {
ksecInfo.getData().setTypeNum(transmissionPojo.getCategory());
ksecInfo.getData().setQuantity(transmissionPojo.getCount());
ksecInfo.getData().setCheckRlt(transmissionPojo.getResult());
KsecNettyClient.write(ksecInfo);

@ -174,7 +174,7 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder {
// }else {
// log.info("other D code :{}",code);
// }
} else if (Cmd.SC.name().equals(ksecInfo.getType())) {
} else if (Cmd.E.name().equals(ksecInfo.getType())) {
//智能盘点
plcService.check(plcCmdInfo, dataInfo);

@ -69,6 +69,8 @@ ksec:
IP: 127.0.0.1
# 服务端TCP端口
serverPort: 3001
# 服务端队列时间间隔(单位ms)
queueSpanTime: 10000
# ------------ 实时视频流 全部页面的格式 行列数量
videoStyleConfig:
videoStyleRow: 4

Loading…
Cancel
Save