盘点概况开发

不同批次号清表修改
读取文件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)); 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.setSide(dataInfo.getFromSide());
checkLog.setRow(dataInfo.getFromRow()); checkLog.setRow(dataInfo.getFromRow());
checkLog.setColumn(dataInfo.getFromColumn()); checkLog.setColumn(dataInfo.getFromColumn());
checkLog.setColumn(dataInfo.getFromColumn());
checkLog.setTaskId((dataInfo.getTaskId())); checkLog.setTaskId((dataInfo.getTaskId()));
//默认未盘点 //默认未盘点
checkLog.setStatus(StockStatus.PENDING.getStatus()); checkLog.setStatus(StockStatus.PENDING.getStatus());
@ -686,7 +687,7 @@ public class PlcService {
checkLogMapper.insert(checkLog); checkLogMapper.insert(checkLog);
//如果存在则清空表 //如果存在则清空表
if (stockMapper.selectCount(new QueryWrapper<Stock>().eq("lotnum", checkLog.getLotnum())) == 0) { 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()); Stock stock = stockMapper.getByStreetAndDirectionAndSideAndRowColumn(street.getId(), dataInfo.getFromDirection(), dataInfo.getFromSide(), dataInfo.getFromRow(), dataInfo.getFromColumn());

@ -318,7 +318,10 @@ public class StockService {
* @return * @return
*/ */
public Stock stockInfo(StockCheck stockCheck) { public Stock stockInfo(StockCheck stockCheck) {
Map<String,String> map = getCategoryList();
Street street = streetService.streetById(stockCheck.getStreetId()); Street street = streetService.streetById(stockCheck.getStreetId());
Stock stock = stockMapper.getByStreetAndDirectionAndSideAndRowColumn(stockCheck.getStreetId(),stockCheck.getDirection(),stockCheck.getSide(), stockCheck.getRow(), stockCheck.getColumn()); Stock stock = stockMapper.getByStreetAndDirectionAndSideAndRowColumn(stockCheck.getStreetId(),stockCheck.getDirection(),stockCheck.getSide(), stockCheck.getRow(), stockCheck.getColumn());
if(stock == null){ if(stock == null){
stock = new Stock(); stock = new Stock();
@ -328,8 +331,9 @@ public class StockService {
stock.setStatus(0); stock.setStatus(0);
}else { }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.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; return stock;
@ -341,7 +345,6 @@ public class StockService {
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 && stock.getCheckPic()!=null){ if(stock != null && stock.getCheckPic()!=null){
stock.setCheckPics(stock.getCheckPic().split(";")); stock.setCheckPics(stock.getCheckPic().split(";"));
} }
return stock; 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 FOLLOW_GET_PHOTO_END = "SGPE";
private static String END_CHECK = "EN"; private static String END_CHECK = "EN";
private static String HEART_BEAT = "HB"; 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()); tcpLogger.info("receive client:{}, data length:{}", body, body.length());
TransmissionPojo transmissionPojo = new TransmissionPojo(body); 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()); ClientChanel.connect(transmissionPojo.getStreetNumber(),ctx.channel());
} }
//获取照片后发送进行计算逻辑,并在拍照队列中取出拍照发送 //获取照片后发送进行计算逻辑,并在拍照队列中取出拍照发送

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

@ -2,9 +2,10 @@ package com.zhehekeji.web.util;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import java.io.BufferedReader; import java.io.*;
import java.io.FileReader; import java.nio.charset.StandardCharsets;
import java.io.IOException; import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -13,7 +14,8 @@ public class FileUtil {
public static List<String> readLinesToList(String path) { public static List<String> readLinesToList(String path) {
List<String> lines = new ArrayList<>(); 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; String line;
while ((line = reader.readLine()) != null) { while ((line = reader.readLine()) != null) {
lines.add(line); lines.add(line);

Loading…
Cancel
Save