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

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

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

@ -122,9 +122,7 @@ public class StockController {
@ApiOperation(value = "获取盘点信息") @ApiOperation(value = "获取盘点信息")
@RequestMapping(value = "/checkInfo", method = RequestMethod.POST) @RequestMapping(value = "/checkInfo", method = RequestMethod.POST)
public Result<Stock> checkInfo(@RequestBody StockCheckSearch stockCheck) { 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); validatorUtil.validate(stockCheck);
log.info("stockCheck:{}",stockCheck); log.info("stockCheck:{}",stockCheck);
Stock stock = stockService.stock(stockCheck); Stock stock = stockService.stock(stockCheck);

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

@ -32,6 +32,8 @@ import java.util.*;
import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -122,6 +124,7 @@ public class PlcService {
public void orderStopByWarn(String orderNum) { public void orderStopByWarn(String orderNum) {
} }
public void verticalAdjustment(Integer cameraId) { public void verticalAdjustment(Integer cameraId) {
log.info("球机" + cameraId + "重置垂直方向开始"); log.info("球机" + cameraId + "重置垂直方向开始");
Double origin = null; Double origin = null;
@ -165,9 +168,6 @@ public class PlcService {
} }
public String cameraVideo(Integer cameraId, LocalDateTime startTime, LocalDateTime endTime) { 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() { Thread thread = new Thread(new Runnable() {
@ -497,6 +497,7 @@ public class PlcService {
checkLogMapper.insert(checkLog); checkLogMapper.insert(checkLog);
log.info("checkLogMapper insert"); log.info("checkLogMapper insert");
} }
public void truncateStock() { public void truncateStock() {
stockMapper.truncate(); stockMapper.truncate();
} }
@ -530,6 +531,7 @@ public class PlcService {
} }
return tags; return tags;
} }
public ConfigProperties getConfigProperties() { public ConfigProperties getConfigProperties() {
return configProperties; return configProperties;
} }
@ -537,6 +539,7 @@ public class PlcService {
/** /**
* *
* C1 * C1
*
* @param SRMNumber * @param SRMNumber
* @return * @return
*/ */
@ -573,10 +576,9 @@ public class PlcService {
} }
/** /**
* *
*
* @param SRMNumber * @param SRMNumber
* @return * @return
*/ */
@ -614,11 +616,12 @@ public class PlcService {
return configProperties.getIP() + ":9007/api/pic/" + path; return configProperties.getIP() + ":9007/api/pic/" + path;
} }
Lock lock = new ReentrantLock();
public void check(PlcCmdInfo plcCmdInfo, KsecDataInfo dataInfo) { public void check(PlcCmdInfo plcCmdInfo, KsecDataInfo dataInfo) {
Street street = streetService.getStreetByPlcId(dataInfo.getSRMNumber()); Street street = streetService.getStreetByPlcId(dataInfo.getSRMNumber());
//开始盘点具体货位 //开始盘点具体货位
if(dataInfo.getCmdName().equals("SC01")){
CheckLog checkLog = new CheckLog(); CheckLog checkLog = new CheckLog();
checkLog.setStreetId(street.getId()); checkLog.setStreetId(street.getId());
checkLog.setLotnum(dataInfo.getLotnum()); checkLog.setLotnum(dataInfo.getLotnum());
@ -656,26 +659,25 @@ public class PlcService {
} else stockMapper.updateById(stock); } else stockMapper.updateById(stock);
TransmissionPojo transmissionPojo = new TransmissionPojo(checkLog, street); TransmissionPojo transmissionPojo = new TransmissionPojo(checkLog, street);
ClientChanel.get(dataInfo.getSRMNumber()).writeAndFlush(transmissionPojo.toString(TransmissionType.ST)); ClientChanel.get(dataInfo.getSRMNumber()).writeAndFlush(transmissionPojo.toString(TransmissionType.ST));
}
//取货完成进行拍照 //取货完成进行拍照
else if(dataInfo.getCmdName().equals("SC02")){ try {
CheckLog checkLog = checkLogMapper.selectOne(new QueryWrapper<CheckLog>() if (lock.tryLock()) {
.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){
//队列中没有任务,发送取图指令 //队列中没有任务,发送取图指令
ClientChanel.get(dataInfo.getSRMNumber()).writeAndFlush(transmissionPojo.toString(TransmissionType.GPS)); 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(); // ClientChanel.get(dataInfo.getSRMNumber()).writeAndFlush();
}
} }
public void visualCalculationResults(TransmissionPojo transmissionPojo) { public void visualCalculationResults(TransmissionPojo transmissionPojo) {
@ -688,11 +690,13 @@ public class PlcService {
} else { } else {
checkLog.setStatus(StockStatus.ERROR.getStatus()); checkLog.setStatus(StockStatus.ERROR.getStatus());
stock.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) { if (transmissionPojo.getPicsPath() != null && transmissionPojo.getPicsPath().length > 0) {
String pics = Arrays.stream(transmissionPojo.getPicsPath()).map(v -> { String pics = Arrays.stream(transmissionPojo.getPicsPath()).map(v -> {
return street.getPlcIp() + ":8007" + v; return "http://" + street.getPlcIp() + ":8007" + v;
}).collect(Collectors.joining(";")); }).collect(Collectors.joining(";"));
checkLog.setPic(pics); checkLog.setPic(pics);
stock.setCheckPic(pics); stock.setCheckPic(pics);

@ -335,14 +335,10 @@ public class StockService {
// Assert.notNull(shelveId,"无该货架信息"); // Assert.notNull(shelveId,"无该货架信息");
Street street = streetService.getStreetByPlcId(stockCheckSearch.getSRMNumber()); Street street = streetService.getStreetByPlcId(stockCheckSearch.getSRMNumber());
Stock stock = stockMapper.getByStreetAndDirectionAndSideAndRowColumn(street.getId(),stockCheckSearch.getDirection(),stockCheckSearch.getSeparation(),stockCheckSearch.getRow(),stockCheckSearch.getColumn()); Stock stock = stockMapper.getByStreetAndDirectionAndSideAndRowColumn(street.getId(),stockCheckSearch.getDirection(),stockCheckSearch.getSeparation(),stockCheckSearch.getRow(),stockCheckSearch.getColumn());
if(stock != null){ if(stock.getCheckPic()!=null){
String ip ="http://"+ street.getPlcIp()+":9009/pic/"+stock.getCode()+"/"+stock.getLotnum()+"/"+stock.getLotnum()+"/";
stock.setSidePic1(String.format("%s1.png",ip)); stock.setCheckPics(stock.getCheckPic().split(";"));
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));
} }
return stock; return stock;
} }

@ -100,6 +100,12 @@ public class Decoder extends DelimiterBasedFrameDecoder {
else if(GET_PHOTO_END.equals(transmissionPojo.getHeader())){ else if(GET_PHOTO_END.equals(transmissionPojo.getHeader())){
ClientChanel.get(transmissionPojo.getStreetNumber()).writeAndFlush(transmissionPojo.toString(TransmissionType.RTS)); 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"); KsecInfo ksecInfo = plcService.getKsecDataInfo(transmissionPojo,"SC03");
KsecNettyClient.write(ksecInfo); KsecNettyClient.write(ksecInfo);
@ -119,6 +125,7 @@ public class Decoder extends DelimiterBasedFrameDecoder {
ksecInfo.getData().setTypeNum(transmissionPojo.getCategory()); ksecInfo.getData().setTypeNum(transmissionPojo.getCategory());
ksecInfo.getData().setQuantity(transmissionPojo.getCount()); ksecInfo.getData().setQuantity(transmissionPojo.getCount());
ksecInfo.getData().setCheckRlt(transmissionPojo.getResult()); ksecInfo.getData().setCheckRlt(transmissionPojo.getResult());
KsecNettyClient.write(ksecInfo); KsecNettyClient.write(ksecInfo);

@ -174,7 +174,7 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder {
// }else { // }else {
// log.info("other D code :{}",code); // 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); plcService.check(plcCmdInfo, dataInfo);

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

Loading…
Cancel
Save