盘点概况开发

不同批次号清表修改
读取文件utf-8
just-order
LAPTOP-S9HJSOEB\昊天 2 years ago
parent de8ddbdc32
commit 7644a4a25c

@ -159,4 +159,11 @@ public class StockController {
return Result.success(stockService.checkByMan(checkByMan));
}
@ApiOperation(value = "盘点概况")
@RequestMapping(value = "/overview", method = RequestMethod.POST)
public Result<Map<String,Object>> overview() {
return Result.success(stockService.overview());
}
}

@ -676,6 +676,7 @@ public class PlcService {
checkLog.setSide(dataInfo.getFromSide());
checkLog.setRow(dataInfo.getFromRow());
checkLog.setColumn(dataInfo.getFromColumn());
checkLog.setColumn(dataInfo.getFromColumn());
checkLog.setTaskId((dataInfo.getTaskId()));
//默认未盘点
checkLog.setStatus(StockStatus.PENDING.getStatus());
@ -686,7 +687,7 @@ public class PlcService {
checkLogMapper.insert(checkLog);
//如果存在则清空表
if (stockMapper.selectCount(new QueryWrapper<Stock>().eq("lotnum", checkLog.getLotnum())) == 0) {
stockMapper.truncate();
stockMapper.delete(new QueryWrapper<Stock>().ne("lotnum", checkLog.getLotnum()));
}
Stock stock = stockMapper.getByStreetAndDirectionAndSideAndRowColumn(street.getId(), dataInfo.getFromDirection(), dataInfo.getFromSide(), dataInfo.getFromRow(), dataInfo.getFromColumn());

@ -318,7 +318,10 @@ public class StockService {
* @return
*/
public Stock stockInfo(StockCheck stockCheck) {
Map<String,String> map = getCategoryList();
Street street = streetService.streetById(stockCheck.getStreetId());
Stock stock = stockMapper.getByStreetAndDirectionAndSideAndRowColumn(stockCheck.getStreetId(),stockCheck.getDirection(),stockCheck.getSide(), stockCheck.getRow(), stockCheck.getColumn());
if(stock == null){
stock = new Stock();
@ -328,8 +331,9 @@ public class StockService {
stock.setStatus(0);
}else {
stock.setWmsCategoryName(map.get(stock.getWmsCategory()));
stock.setOveroperationPic("http://" + street.getPlcIp() + ":8007" + "/storeData/" + street.getPlcId() + "/" + stock.getRow() + "/" + stock.getColumn() + "/" + (stock.getDirection() + 2) + ".PNG");
stock.setPreoperationPic("http://" + street.getPlcIp() + ":8007" + "/storeData/" + street.getPlcId() + "/" + stock.getRow() + "/" + stock.getColumn() + "/" + (stock.getDirection() ) + ".PNG");
}
return stock;
@ -341,7 +345,6 @@ public class StockService {
Street street = streetService.getStreetByPlcId(stockCheckSearch.getSRMNumber());
Stock stock = stockMapper.getByStreetAndDirectionAndSideAndRowColumn(street.getId(),stockCheckSearch.getDirection(),stockCheckSearch.getSeparation(),stockCheckSearch.getRow(),stockCheckSearch.getColumn());
if(stock != null && stock.getCheckPic()!=null){
stock.setCheckPics(stock.getCheckPic().split(";"));
}
return stock;
@ -464,4 +467,34 @@ public class StockService {
}
public Map<String,Object> overview() {
List<Stock> list = stockMapper.selectList(new QueryWrapper<Stock>());
Map<String,Object> map = new HashMap<>();
if(list != null && list.size() > 0){
Map<String ,Long > statusMap = list.stream()
.filter(s -> s.getStatus()!=null)
.collect(Collectors.groupingBy(s -> "type"+s.getStatus().toString(),Collectors.counting()));
for(int i = 0 ; i<4 ; i++){
if(!statusMap.containsKey("type"+String.valueOf(i))){
statusMap.put("type"+String.valueOf(i),0L);
}
}
int sizeCategory = list.stream()
.filter(s -> s.getWmsCategory()!=null)
.filter(s -> s.getStatus()!=null)
.collect(Collectors.groupingBy(Stock::getWmsCategory))
.keySet()
.size();
map.put("sizeCategory",sizeCategory);
map.put("size",String.valueOf(list.size()));
map.put("lotnum",list.get(1).getLotnum());
map.putAll(statusMap);
//共盘点{}个货位,{}个品规,{}个其他货物,其中{}个盘点成功,{}个盘点异常,{}个人工盘点
return map;
}else return null;
}
}

@ -41,6 +41,8 @@ public class Decoder extends DelimiterBasedFrameDecoder {
private static String FOLLOW_GET_PHOTO_END = "SGPE";
private static String END_CHECK = "EN";
private static String HEART_BEAT = "HB";
private static String CONNECT_START = "CE";
@ -96,7 +98,7 @@ public class Decoder extends DelimiterBasedFrameDecoder {
tcpLogger.info("receive client:{}, data length:{}", body, body.length());
TransmissionPojo transmissionPojo = new TransmissionPojo(body);
//心跳进行连接
if(HEART_BEAT.equals(transmissionPojo.getHeader())){
if(HEART_BEAT.equals(transmissionPojo.getHeader()) || CONNECT_START.equals(transmissionPojo.getHeader())){
ClientChanel.connect(transmissionPojo.getStreetNumber(),ctx.channel());
}
//获取照片后发送进行计算逻辑,并在拍照队列中取出拍照发送

@ -29,28 +29,29 @@ public class GetPhotoDelayExecutor {
/**
*
*
* @param cameraPlcId PLC
* @param plcId PLC
* @param getPhotoCommand
* @param time
*/
public static void addCameraDelayTask(String cameraPlcId, String getPhotoCommand, long time,TransmissionPojo transmissionPojo) {
if(cameraDelayTaskMap.get(cameraPlcId)==null || cameraDelayTaskMap.get(cameraPlcId).size() == 0) {
if( ClientChanel.get(cameraPlcId) != null){
public static void addCameraDelayTask(String plcId, String getPhotoCommand, long time,TransmissionPojo transmissionPojo) {
// 如果队列为空,则直接发送命令
if(cameraDelayTaskMap.get(plcId)==null || cameraDelayTaskMap.get(plcId).size() == 0) {
if( ClientChanel.get(plcId) != null){
log.info("队列中无数据,输出"+getPhotoCommand);
ClientChanel.get(cameraPlcId).writeAndFlush(getPhotoCommand);
ClientChanel.get(plcId).writeAndFlush(getPhotoCommand);
}else {
log.info("队列中无数据,未找到通信"+cameraPlcId);
log.info("队列中无数据,未找到通信"+plcId);
}
}
CameraDelayTask cameraDelayTask = new CameraDelayTask(cameraPlcId, getPhotoCommand, time,transmissionPojo);
if(cameraDelayTaskMap.get(cameraPlcId)!=null){
// 创建一个CameraDelayTask对象并将其添加到队列中
CameraDelayTask cameraDelayTask = new CameraDelayTask(plcId, getPhotoCommand, time,transmissionPojo);
if(cameraDelayTaskMap.get(plcId)!=null){
cameraDelayTaskMap.get(cameraPlcId).add(cameraDelayTask);
cameraDelayTaskMap.get(plcId).add(cameraDelayTask);
}else {
cameraDelayTaskMap.put(cameraPlcId,new DelayQueue<>());
cameraDelayTaskMap.get(cameraPlcId).add(cameraDelayTask);
cameraDelayTaskMap.put(plcId,new DelayQueue<>());
cameraDelayTaskMap.get(plcId).add(cameraDelayTask);
}
delayTasks.add(cameraDelayTask);
}
@ -58,12 +59,12 @@ public class GetPhotoDelayExecutor {
/**
* PLC
*
* @param cameraPlcId
* @param plcId
*/
public static CameraDelayTask remove(String cameraPlcId, TransmissionPojo transmissionPojo) {
synchronized (cameraPlcId) {
public static CameraDelayTask remove(String plcId, TransmissionPojo transmissionPojo) {
synchronized (plcId) {
// 将延时队列中的任务转换为数组,便于遍历和移除
Object[] objects = cameraDelayTaskMap.get(cameraPlcId).toArray();
Object[] objects = cameraDelayTaskMap.get(plcId).toArray();
if(objects.length > 0) {
for(Object object : objects){
@ -72,7 +73,7 @@ public class GetPhotoDelayExecutor {
&& cameraDelayTask.getTransmissionPojo().getTaskId().equals(transmissionPojo.getTaskId())
&& cameraDelayTask.getTransmissionPojo().getCheckId().equals(transmissionPojo.getCheckId())
&& cameraDelayTask.getTransmissionPojo().getDirection().equals(transmissionPojo.getDirection())) {
cameraDelayTaskMap.get(cameraPlcId).remove(cameraDelayTask);
cameraDelayTaskMap.get(plcId).remove(cameraDelayTask);
return cameraDelayTask;
}
@ -83,8 +84,8 @@ public class GetPhotoDelayExecutor {
}
return null;
}
public static CameraDelayTask removeTask(String cameraPlcId, TransmissionPojo transmissionPojo) {
synchronized (cameraPlcId){
public static CameraDelayTask removeTask(String plcId, TransmissionPojo transmissionPojo) {
synchronized (plcId){
// 将延时队列中的任务转换为数组,便于遍历和移除
Object[] objects = delayTasks.toArray();
if(objects.length > 0) {
@ -107,11 +108,11 @@ public class GetPhotoDelayExecutor {
return null;
}
public static CameraDelayTask nextOne(String cameraPlcId, String getPhotoCommand) {
cameraPlcId = cameraPlcId.intern();
synchronized (cameraPlcId) {
public static CameraDelayTask nextOne(String plcId, String getPhotoCommand) {
plcId = plcId.intern();
synchronized (plcId) {
// 将延时队列中的任务转换为数组,便于遍历和移除
Object[] objects = cameraDelayTaskMap.get(cameraPlcId).toArray();
Object[] objects = cameraDelayTaskMap.get(plcId).toArray();
if(objects.length > 0) {
CameraDelayTask cameraDelayTask = (CameraDelayTask)objects[0];
if (cameraDelayTask != null) {

@ -2,9 +2,10 @@ package com.zhehekeji.web.util;
import lombok.extern.slf4j.Slf4j;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
@ -13,7 +14,8 @@ public class FileUtil {
public static List<String> readLinesToList(String path) {
List<String> lines = new ArrayList<>();
try (BufferedReader reader = new BufferedReader(new FileReader(path))) {
try (BufferedReader reader = new BufferedReader( new InputStreamReader(Files.newInputStream(Paths.get(path)), StandardCharsets.UTF_8))) {
//InputStreamReader isr = new InputStreamReader(reader,"UTF-8");//避免中文乱码
String line;
while ((line = reader.readLine()) != null) {
lines.add(line);

Loading…
Cancel
Save