清空盘点

日志详情
盘点异常
rfid扫描
盘点管理
rfid扫描多零删除
扫码枪3s未扫描到,日志记录sick响应超时
changchun-医药
LAPTOP-S9HJSOEB\昊天 2 years ago
parent 03c4443c03
commit 47e6dd3f4b

@ -108,6 +108,20 @@ public class StockController {
EasyExcel.write(os, StockExportExcel.class).sheet().doWrite(excels);
}
@ApiOperation(value = "全部盘点")
@RequestMapping(value = "/allStockCheck", method = RequestMethod.POST)
public Result allStockCheck() {
stockService.allStockCheck();
return Result.success();
}
@ApiOperation(value = "清空盘点")
@RequestMapping(value = "/allStockClear", method = RequestMethod.POST)
public Result allStockClear() {
stockService.allStockClear();
return Result.success();
}
@ApiOperation(value = "复核页面的核对信息")
@RequestMapping(value = "/info", method = RequestMethod.POST)
public Result<Stock> stockInfo(@RequestBody StockCheck stockCheck) {

@ -43,8 +43,8 @@ public class VideoccController {
list.addAll(videocc.getDetails().get(detail));
}
}
log.info("rfid推送信息:"+list);
plcService.wmsTrayCodeMapByTask.put(orderNum,list);
log.info("库存请求orderNum{},tag:{}",orderNum,list);
PlcService.wmsTrayCodeMapByTask.put(orderNum,list);
VideoccResponse videoccResponse = new VideoccResponse();
videoccResponse.setMsg("成功");
videoccResponse.setIsSuccess(1);

@ -27,4 +27,5 @@ public class StockCheck {
@ApiModelProperty("列")
private Integer column;
private Integer ok;
}

@ -694,7 +694,8 @@ public class PlcService {
trayCheck = Boolean.FALSE;
log.warn("sick ocr error:{}", trayCode);
} else {
trayCheck = wmsTrayCode.equals(trayCode);
//扫到就认为正常
trayCheck = Boolean.TRUE;
}
}
}
@ -718,15 +719,16 @@ public class PlcService {
if (wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum()) !=null
&& tags.containsAll(wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum()))) {
trayRFIDCheck = Boolean.TRUE;
} else {
if(trayCheck){
trayCode = "RFID扫描失败";
}else
trayCode += ";RFID扫描失败";
wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum()).removeAll(tags);
if (wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum())!= null) {
wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum()).removeAll(tags);
log.info("未扫到数据为:{}",wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum()));
}
trayRFIDCheck = Boolean.FALSE;
}
wmsTrayCodeMapByTask.remove(plcCmdInfo.getOrderNum());

@ -53,8 +53,6 @@ public class RFIDSocket {
public void startCheck(Integer direction,boolean foreach) {
// Reader mReader = ReaderImpl.create(AntennaCount.SIXTEEN_CHANNELS);
// Reader mReader = ReaderImpl.create(AntennaCount.EIGHT_CHANNELS);
running = true;
Thread thread = new Thread(new Runnable() {
public void run() {
@ -82,6 +80,7 @@ public class RFIDSocket {
System.out.println("reader1 inventory tag :" + tag.getEpc());
String tagStr = tag.getEpc().replace(" ","");
System.out.println("tag: " + tag.getEpc());
tagStr = tagStr.replace("0000000000","");
tags.add(tagStr);
if (ToolUtil.isNotEmpty(tagsCount.get(tagStr))) {
tagsCount.put(tagStr, tagsCount.get(tagStr) + 1);
@ -144,6 +143,7 @@ public class RFIDSocket {
});
thread.start();
}
public void stopCheck() {

@ -3,6 +3,7 @@ package com.zhehekeji.web.service;
import com.alibaba.excel.EasyExcel;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zhehekeji.core.util.Assert;
@ -362,10 +363,15 @@ public class StockService {
Stock stock = stockInfo(stockCheck);
Assert.isTrue(stock != null && stock.getId() != null, "该货位暂时没有记录");
Integer oldStatus = stock.getStatus();
Assert.isTrue( StockStatus.PENDING.getStatus().equals(oldStatus) || StockStatus.ERROR.getStatus().equals(oldStatus), "无需核对");
//Assert.isTrue(StockStatus.ERROR.getStatus().equals(oldStatus), "无需核对");
log.info("check stock correct, street_id:{},direction:{},side:{},row:{},column:{}", stockCheck.getStreetId(), stockCheck.getDirection(), stockCheck.getSide(), stockCheck.getRow(), stockCheck.getColumn());
if (stockCheck.getOk() == 1) {
stock.setStatus(StockStatus.MANUAL.getStatus());
} else {
stock.setStatus(StockStatus.ERROR.getStatus());
}
log.info("check stock correct, street_id:{},direction:{},side:{},row:{},column:{}", stockCheck.getStreetId(),stockCheck.getDirection(),stockCheck.getSide(), stockCheck.getRow(), stockCheck.getColumn());
stock.setStatus(StockStatus.MANUAL.getStatus());
stockMapper.updateById(stock);
checkLog(stock);
return stock;
@ -374,19 +380,28 @@ public class StockService {
@Resource
private CheckLogMapper checkLogMapper;
private void checkLog(Stock stock){
private void checkLog(Stock stock) {
CheckLog checkLog = new CheckLog();
checkLog.setRow(stock.getRow());
checkLog.setColumn(stock.getColumn());
checkLog.setCheckNum(stock.getCheckNum());
checkLog.setPic(stock.getCheckPic());
checkLog.setDirection(stock.getDirection());
checkLog.setSide(stock.getSide());
checkLog.setStreetId(stock.getStreetId());
//checkLog.setShelveId(stock.getShelveId());
checkLog.setLotnum(stock.getLotnum());
checkLog.setStatus(stock.getStatus());
checkLog.setCode(stock.getCode());
checkLog.setCreateTime(LocalDateTime.now());
checkLogMapper.insert(checkLog);
//checkLog.setExportTime(stock.getExportTime());
checkLogMapper.update(checkLog,new UpdateWrapper<CheckLog>()
.eq("check_num",stock.getCheckNum())
.eq("`column`",stock.getColumn())
.eq("`row`",stock.getRow())
.eq("direction",stock.getDirection())
.eq("side",stock.getSide()));
}
/**
*
*
@ -412,7 +427,7 @@ public class StockService {
public Stock nextOne(Long id) {
QueryWrapper<Stock> stockQueryWrapper = new QueryWrapper<>();
stockQueryWrapper.eq("status","0")
stockQueryWrapper.eq("status","1")
.ne(ToolUtil.isNotEmpty(id),"id",id)
.orderByDesc("export_time").last("limit 1");
Stock stock =stockMapper.selectOne(stockQueryWrapper);
@ -441,6 +456,29 @@ public class StockService {
stockMapper.truncate();
}
public void allStockCheck() {
Stock stock = new Stock();
stock.setStatus(1);
List<Stock> stockList = stockMapper.selectList(new QueryWrapper<Stock>().eq("status", "0"));
stockMapper.update(stock, new QueryWrapper<Stock>().eq("status", "0"));
for (Stock s:stockList){
StockCheck stockCheck = new StockCheck();
stockCheck.setColumn(s.getColumn());
stockCheck.setStreetId(s.getStreetId());
stockCheck.setRow(s.getRow());
stockCheck.setDirection(s.getDirection());
stockCheck.setSide(s.getSide());
stockCheck.setOk(1);
checkCorrect(stockCheck);
}
}
public void allStockClear() {
stockMapper.truncate();
}
// public void init(String shelveId, Integer row, Integer column){
// Map<String,Object> map = new HashMap<>();
// map.put("shelve_id",shelveId);

@ -7,6 +7,7 @@ import org.slf4j.LoggerFactory;
import java.io.*;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketTimeoutException;
import java.nio.charset.StandardCharsets;
/**
@ -16,44 +17,69 @@ import java.nio.charset.StandardCharsets;
public class SickSocket {
private static final Logger tcpLogger = LoggerFactory.getLogger("sick");
public static void main(String[] args) {
String code = readOCR("192.168.8.236", 2002);
String code = readOCR("192.168.5.10", 2002);
System.out.println(code);
}
public static String readOCR(String ip,int port){
/**
* OCR
*
* @param ip IP
* @param port
* @return OCR
*/
public static String readOCR(String ip, int port) {
// 创建Socket对象
Socket socket = new Socket();
// 定义变量code并赋值为"NoRead"
String code = "NoRead";
// 创建OutputStream对象os并赋值为null
OutputStream os = null;
// 创建InputStream对象is并赋值为null
InputStream is = null;
try {
socket.connect(new InetSocketAddress(ip,port),3000);
// 连接服务器指定服务器的IP地址和端口号并设置连接超时时间为3000毫秒
socket.connect(new InetSocketAddress(ip, port), 3000);
socket.setSoTimeout(3000);
// 获取socket的输出流对象
os = socket.getOutputStream();
// 获取socket的输入流对象
is = socket.getInputStream();
// 定义变量i并赋值为0
int i = 0;
while ("NoRead".equals(code) && i <= 4){
// 当code等于"NoRead"且i小于等于4且socket未关闭时执行以下循环
while ("NoRead".equals(code) && i <= 4 && !socket.isClosed()) {
// 调用writeCmd方法将数据写入socket的输出流
writeCmd(os);
// 从socket的输入流中读取数据并赋值给code
code = read(is);
tcpLogger.info("count:{},ip:{},code:{}",i,ip,code);
if(code!= null){
code = code.replace("\\n","");
// 打印日志信息包括计数器i、服务器的IP地址和读取到的数据code
tcpLogger.info("count:{},ip:{},code:{}", i, ip, code);
// 如果code不为null则将code中的\n替换为空字符串
if (code != null) {
code = code.replace("\\n", "");
}
// i自增1
i++;
}
} catch (SocketTimeoutException socketTimeoutException) {
tcpLogger.error("sick响应超时,ip:{},info:{}", ip, socketTimeoutException);
log.error("sick响应超时,ip:{},info:{}", ip, socketTimeoutException);
} catch (IOException e) {
tcpLogger.error("sick time out,ip:{},info:{}",ip,e);
log.error("sick time out,ip:{},info:{}",ip,e);
}finally {
if(os != null){
tcpLogger.error("sick time out,ip:{},info:{}", ip, e);
log.error("sick time out,ip:{},info:{}", ip, e);
} finally {
if (os != null) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(is != null){
if (is != null) {
try {
is.close();
} catch (IOException e) {
@ -72,7 +98,7 @@ public class SickSocket {
private static void writeCmd(OutputStream os) throws IOException {
String startCmd = "start";
byte[]bytes = startCmd.getBytes(StandardCharsets.UTF_8);
byte[] bytes = startCmd.getBytes(StandardCharsets.UTF_8);
os.write(bytes);
}

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

Loading…
Cancel
Save