台湾盘点

taiwan-lingli-new
yiming 4 years ago
parent 6e5c8fb47e
commit bb56c8e89f

@ -26,14 +26,14 @@ public class PathUtil {
public static String createFileName(String fileType,Integer cameraId) {
LocalDateTime now = LocalDateTime.now();
String time = now.format(DateTimeFormatter.ofPattern("yyyy/MM/dd")) + "/"+cameraId;
return time + "/" + now.format(DateTimeFormatter.ofPattern("HHmmss-"))+getRandomString(10) + "."+fileType;
String time = now.format(DateTimeFormatter.ofPattern("yyyy\\MM\\dd")) + "\\"+cameraId;
return time + "\\" + now.format(DateTimeFormatter.ofPattern("HHmmss-"))+getRandomString(10) + "."+fileType;
}
public static String createFileNameByRowColumn(String fileType,Integer cameraId,Integer row,Integer column){
LocalDateTime now = LocalDateTime.now();
String date = now.format(DateTimeFormatter.ofPattern("yyyyMMdd"));
return cameraId+"/"+row+"-"+column+"/"+date + "/" +now.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss-"))+row+"-"+column + "."+fileType;
return cameraId+"\\"+row+"-"+column+"\\"+date + "\\" +now.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss-"))+row+"-"+column + "."+fileType;
}
/**

@ -80,5 +80,15 @@ public class Stock {
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private LocalDateTime exportTime;
/**
*
*/
@TableField(exist = false)
private String checkPathTaiWan;
@TableField(exist = false)
private String checkPicTaiWan;
}

@ -16,6 +16,8 @@ import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.time.Duration;
import java.time.LocalDateTime;
import java.util.List;
@ -525,17 +527,16 @@ public class PlcService {
log.info("test endTime:{},time:{}millisecond",endTime,(endTime - startTime));
}
public Boolean check(PlcCmdInfo plcCmdInfo,String cmdCode,String wmsCode,String wmsTrayCode){
public Stock check(PlcCmdInfo plcCmdInfo,String cmdCode,String wmsCode,String wmsTrayCode){
long startTime = System.currentTimeMillis();
Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId());
Integer cameraId = getCameraByPlcCmd(plcCmdInfo,plcCmdInfo.getLeftRight1());
gyrateCameraByCode(cameraId, cmdCode);
try {
Thread.sleep(configProperties.getCameraConfig().getDelayCaptureTime());
} catch (InterruptedException e) {
e.printStackTrace();
if(street == null){
return new Stock();
}
Integer cameraId = getCameraByPlcCmd(plcCmdInfo,plcCmdInfo.getLeftRight1());
//台湾项目只有托盘码使用sick扫码枪,
//使用球机直接拍照并把图片返回给wcs
String path = PathUtil.createFileNameByRowColumn("jpg",cameraId,plcCmdInfo.getRow1(),plcCmdInfo.getColumn1());
cameraCapture(cameraId,false,null,path);
//托盘码
@ -546,7 +547,7 @@ public class PlcService {
//托盘使用sick扫码枪
SensorGun sensorGun = sensorService.getSensorByPlc(street.getId(),plcCmdInfo.getLeftRight1());
if(sensorGun == null){
trayCode = "识别异常";
trayCode = "識別異常";
trayCheck = Boolean.FALSE;
log.error("no sensor gun config in database ,street id:{},direction:{}",street.getId(),plcCmdInfo.getLeftRight1());
}else {
@ -559,13 +560,13 @@ public class PlcService {
trayCode = "";
trayCheck = Boolean.TRUE;
}else {
trayCode = "识别异常";
trayCode = "識別異常";
trayCheck = Boolean.FALSE;
log.warn("sick ocr error:{}",trayCode);
}
}else {
if(StringUtils.isEmpty(trayCode) || trayCode.equals("NoRead")){
trayCode = "识别异常";
trayCode = "識別異常";
trayCheck = Boolean.FALSE;
log.warn("sick ocr error:{}",trayCode);
}else {
@ -580,19 +581,77 @@ public class PlcService {
RFID rfid = rfidService.getRFIDByPlc(street.getId());
}
StockCheckRunnable stockCheckRunnable = new StockCheckRunnable(street,plcCmdInfo,cmdCode,stockMapper,path,checkLogMapper,configProperties.getScanCodeMode().getGoods(),wmsCode,wmsTrayCode,trayCode,trayCheck,configProperties);
threadPoolExecutor.execute(stockCheckRunnable);
OrderInfo orderInfo = new OrderInfo(street,plcCmdInfo,1,cmdCode);
Stock stock = stockMapper.getByShelveIdAndRowColumn(orderInfo.getShelveId(),orderInfo.getRow(),orderInfo.getColumn());
Integer status = 1;
//托盘
if(trayCheck ){
status = 2;
}
if(stock == null){
stock = new Stock();
stock.setStatus(status);
stock.setShelveId(orderInfo.getShelveId());
stock.setRow(orderInfo.getRow());
stock.setColumn(orderInfo.getColumn());
stock.setLotnum(plcCmdInfo.getLotnum());
stock.setExportTime(LocalDateTime.now());
stock.setCheckPic(path);
stock.setCheckNum(plcCmdInfo.getOrderNum());
stock.setTrayCode(trayCode);
stock.setWmsTrayCode(wmsTrayCode);
stockMapper.insert(stock);
}else {
stock.setStatus(status);
stock.setShelveId(orderInfo.getShelveId());
stock.setRow(orderInfo.getRow());
stock.setColumn(orderInfo.getColumn());
stock.setLotnum(plcCmdInfo.getLotnum());
stock.setExportTime(LocalDateTime.now());
stock.setCheckPic(path);
stock.setCheckNum(plcCmdInfo.getOrderNum());
stock.setTrayCode(trayCode);
stock.setWmsTrayCode(wmsTrayCode);
stockMapper.updateById(stock);
}
long end = System.currentTimeMillis();
long s = end - startTime;
log.info("time:{}millisecond",s);
return true;
log.debug("time:{}millisecond",s);
String ip = null;
try {
ip = InetAddress.getLocalHost().getHostAddress()+"\\"+configProperties.getSavePath().getMediaPath()+path;
} catch (UnknownHostException e) {
e.printStackTrace();
}
String p = path.substring(path.lastIndexOf("\\")+1,path.lastIndexOf("."));
stock.setCheckPicTaiWan(ip);
stock.setCheckPathTaiWan(p);
//判断照片是否存在,确认已保存再返回
//return checkPathExist(stock);
checkLog(stock);
return stock;
}
public void truncateStock(){
stockMapper.truncate();
}
public void checkLog(Stock stock){
CheckLog checkLog = new CheckLog();
checkLog.setLotnum(stock.getLotnum());
checkLog.setCheckNum(stock.getCheckNum());
checkLog.setPic(stock.getCheckPic());
checkLog.setShelveId(stock.getShelveId());
checkLog.setCode(stock.getCode());
checkLog.setWmsCode(stock.getWmsCode());
checkLog.setStatus(stock.getStatus());
checkLog.setRow(stock.getRow());
checkLog.setColumn(stock.getColumn());
checkLog.setCreateTime(LocalDateTime.now());
checkLog.setTrayCode(stock.getTrayCode());
checkLog.setWmsTrayCode(stock.getWmsTrayCode());
checkLog.setLotnum(stock.getLotnum());
checkLogMapper.insert(checkLog);
}
}

@ -116,7 +116,7 @@ public class StockCheckRunnable implements Runnable {
status = 2;
}
if(stock == null){
stock = new Stock(null,null,plcCmdInfo.getOrderNum(),plcCmdInfo.getLotnum(),scanCode, null,null,wmsCode,null,null,wmsTrayCode,trayCode,orderInfo.getShelveId(),orderInfo.getRow(),orderInfo.getColumn(),status,null,null,path, LocalDateTime.now());
stock = new Stock(null,null,plcCmdInfo.getOrderNum(),plcCmdInfo.getLotnum(),scanCode, null,null,wmsCode,null,null,wmsTrayCode,trayCode,orderInfo.getShelveId(),orderInfo.getRow(),orderInfo.getColumn(),status,null,null,path, LocalDateTime.now(),null,null);
stockMapper.insert(stock);
}else {
stock.setStatus(status);

@ -16,6 +16,22 @@ public class KescEncoder extends MessageToByteEncoder<KsecInfo> {
@Override
protected void encode(ChannelHandlerContext channelHandlerContext, KsecInfo ksecInfo, ByteBuf byteBuf) throws Exception {
String body = "<" + JSONObject.toJSONString(ksecInfo) + ">";
if(!ksecInfo.getType().equals("A")){
body = body.replaceAll("\\\\\\\\", "\\\\");
}
byteBuf.writeBytes(body.getBytes(StandardCharsets.UTF_8));
}
public static void main(String[] args) {
KsecInfo ksecInfo = KsecInfo.heart();
KsecDataInfo ksecDataInfo = new KsecDataInfo();
ksecDataInfo.setCheckPath("d:\\\\data\\media\\3\\3-7\\20220509\\20220509093154-3-7.jpeg");
ksecInfo.setData(ksecDataInfo);
String body = JSONObject.toJSONString(ksecInfo);
System.out.println(body);
String s = body.replaceAll("\\\\\\\\", "\\\\");
System.out.println(s);
}
}

@ -43,4 +43,8 @@ public class KsecDataInfo {
*
*/
private String lotnum;
private String checkPic;
private String checkPath;
}

@ -1,6 +1,7 @@
package com.zhehekeji.web.service.ksec;
import com.alibaba.fastjson.JSONObject;
import com.zhehekeji.web.entity.Stock;
import com.zhehekeji.web.pojo.Cmd;
import com.zhehekeji.web.service.GoodsActionTimes;
import com.zhehekeji.web.service.PlcCmdInfo;
@ -112,12 +113,19 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder {
plcService.truncateStock();
lastLotnum = lotnum;
}
Boolean ok = plcService.check(plcCmdInfo,ksecInfo.getData().getCmdName(), dataInfo.getCode(), dataInfo.getTrayCode());
if(ok){
Stock stock = plcService.check(plcCmdInfo,ksecInfo.getData().getCmdName(), dataInfo.getCode(), dataInfo.getTrayCode());
if(stock != null && stock.getStatus() == 2){
ksecInfo.getData().setAckStatus(1);
}else {
ksecInfo.getData().setAckStatus(0);
}
if(stock != null){
dataInfo.setCheckPath(stock.getCheckPathTaiWan());
dataInfo.setCheckPic(stock.getCheckPicTaiWan());
}
ksecInfo.setHeader("TL");
ksecInfo.setData(dataInfo);
ctx.channel().writeAndFlush(ksecInfo);
}
//找到该货位的最后一张照片与现在的照片比照
@ -126,17 +134,4 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder {
in.release();
return null;
}
public class StopThread extends Thread {
private PlcCmdInfo plcCmdInfo;
public StopThread(PlcCmdInfo plcCmdInfo){
this.plcCmdInfo = plcCmdInfo;
}
@Override
public void run() {
plcService.orderStop(plcCmdInfo);
}
}
}

@ -27,7 +27,7 @@ userUrl: http://115.236.65.98:11001
# ----默认摄像头的连接信息
cameraConfig:
# ------------球機選擇--- 0:利珀 1海康
cameraType: 1
cameraType: 0
cameraPassword: a1234567
cameraUser: admin
cameraPort: 37777

@ -13,7 +13,7 @@
left join camera c2 on t.camera2_id = c2.id
left join sensor_gun s1 on s1.street_id = t.id and s1.direction = 1
left join sensor_gun s2 on s2.street_id = t.id and s2.direction = 2
left join RFID rf on rf.street_id = t.id
left join rfid rf on rf.street_id = t.id
order by t.id desc
</select>

Loading…
Cancel
Save