Commit 8fe89ed5 zshaohui

盘点优化

1 个父辈 6a0d9ce8
...@@ -104,6 +104,7 @@ public class InventoryController { ...@@ -104,6 +104,7 @@ public class InventoryController {
public ResultBean getInventoryInfo() { public ResultBean getInventoryInfo() {
Map<String, Object> resultMap = new HashMap<>(); Map<String, Object> resultMap = new HashMap<>();
int inventoryCount = 0; int inventoryCount = 0;
List<String> finishInventory = new ArrayList<>();
String storageId = ""; String storageId = "";
for (Storage storage : dataCache.getAllStorage().values()) { for (Storage storage : dataCache.getAllStorage().values()) {
if (!storage.isVirtual()) { if (!storage.isVirtual()) {
...@@ -111,19 +112,55 @@ public class InventoryController { ...@@ -111,19 +112,55 @@ public class InventoryController {
break; break;
} }
} }
int count = storagePosManager.countByQuery(new Query(Criteria.where("storageId").is(storageId))); int count = storagePosManager.countByQuery(new Query(Criteria.where("storageId").is(storageId)));
String inventoryBatch = dataCache.getCache(INVENTORY_DATA) + ""; String inventoryBatch = dataCache.getCache(INVENTORY_DATA) + "";
if (inventoryBatch != null) { if (StringUtils.isNotBlank(inventoryBatch) && !"-1".equals(inventoryBatch)) {
inventoryCount = inventoryDataManager.countByQuery(new Query(Criteria.where("inventoryBatch").is(inventoryBatch).and("status").is(InventoryStatus.FINISHED.name()))); List<InventoryData> dataList = inventoryDataManager.findByQuery(new Query(Criteria.where("inventoryBatch").is(inventoryBatch).and("status").is(InventoryStatus.FINISHED.name())));
if (dataList != null && !dataList.isEmpty()) {
List<String> posNameList = new ArrayList<>();
for (InventoryData data : dataList) {
if (posNameList.isEmpty()) {
posNameList.add(data.getPosName());
} else {
if (!posNameList.contains(data.getPosName())) {
posNameList.add(data.getPosName());
}
}
}
inventoryCount = posNameList.size();
}
finishInventory = getFinishInventoryPosName(inventoryBatch);
} }
resultMap.put("inventoryCount", inventoryCount); resultMap.put("inventoryCount", inventoryCount);
resultMap.put("count", count); resultMap.put("count", count);
resultMap.put("inventoryBatch", StringUtils.isBlank(inventoryBatch) || "-1".equals(inventoryBatch) ? "" : inventoryBatch); resultMap.put("inventoryBatch", StringUtils.isBlank(inventoryBatch) || "-1".equals(inventoryBatch) ? "" : inventoryBatch);
resultMap.put("finishInventory", finishInventory);
return ResultBean.newOkResult(resultMap); return ResultBean.newOkResult(resultMap);
} }
private List<String> getFinishInventoryPosName(String inventoryBatch) {
List<String> finishPosName = new ArrayList<>();
List<InventoryData> dataList = inventoryDataManager.findByQuery(new Query(Criteria.where("inventoryBatch").is(inventoryBatch)));
//获取原始库位
List<String> oriPosNameList = dataList.stream().map(InventoryData::getOriPosName).collect(Collectors.toList());
oriPosNameList = oriPosNameList.stream().distinct().collect(Collectors.toList());
for (String oriPosName : oriPosNameList) {
boolean isFinished = true;
for (InventoryData data : dataList) {
if (data.getOriPosName().equals(oriPosName)){
if (!data.getStatus().equals(InventoryStatus.FINISHED.name())){
isFinished = false;
break;
}
}
}
if (isFinished) {
finishPosName.add(oriPosName);
}
}
return finishPosName;
}
/** /**
* 开始盘点 * 开始盘点
...@@ -254,6 +291,15 @@ public class InventoryController { ...@@ -254,6 +291,15 @@ public class InventoryController {
if (storagePosList == null || storagePosList.isEmpty()) { if (storagePosList == null || storagePosList.isEmpty()) {
return ResultBean.newErrorResult(-1, "smfcore.label.noReel", "未找到可出库的物料"); return ResultBean.newErrorResult(-1, "smfcore.label.noReel", "未找到可出库的物料");
} }
//核验是否已经盘点出库
List<String> posNameList = storagePosList.stream().map(StoragePos::getPosName).collect(Collectors.toList());
List<InventoryData> dataList = inventoryDataManager.findByQuery(new Query(Criteria.where("inventoryBatch").is(inventoryBatch).and("posName").in(posNameList)));
if (dataList != null && !dataList.isEmpty()) {
List<String> dataPosNameList = dataList.stream().map(InventoryData::getPosName).collect(Collectors.toList());
dataPosNameList = dataPosNameList.stream().distinct().collect(Collectors.toList());
return ResultBean.newErrorResult(-1,"",JsonUtil.toJsonStr(dataPosNameList)+"已经进行过盘点出库,请核实");
}
for (StoragePos pos : storagePosList) { for (StoragePos pos : storagePosList) {
Barcode barcode = pos.getBarcode(); Barcode barcode = pos.getBarcode();
if (barcode != null) { if (barcode != null) {
...@@ -305,19 +351,17 @@ public class InventoryController { ...@@ -305,19 +351,17 @@ public class InventoryController {
Barcode barcode = barcodeManager.findByBarcode(boxStr); Barcode barcode = barcodeManager.findByBarcode(boxStr);
List<PartitionInfo> partitionInfoList = BoxUtil.getPartitionInfo(currentRfid, barcode); List<PartitionInfo> partitionInfoList = BoxUtil.getPartitionInfo(currentRfid, barcode);
//盘点批次 //盘点批次
Long inventoryBatch = dataCache.getCache(INVENTORY_DATA); String inventoryBatch = dataCache.getCache(INVENTORY_DATA) + "";
if(inventoryBatch == null) { if (StringUtils.isNotBlank(inventoryBatch) && !"-1".equals(inventoryBatch)) {
inventoryBatch = -1l;
}
//获取需要盘点的信息 //获取需要盘点的信息
List<InventoryData> dataList = inventoryDataManager.findByQuery(new Query(Criteria.where("inventoryBatch").is(inventoryBatch).and("box").is(boxStr))); List<InventoryData> dataList = inventoryDataManager.findByQuery(new Query(Criteria.where("inventoryBatch").is(inventoryBatch).and("box").is(boxStr).and("needInventory").is(true)));
if (dataList != null && !dataList.isEmpty()) { if (dataList != null && !dataList.isEmpty()) {
if (partitionInfoList != null && !partitionInfoList.isEmpty()) { if (partitionInfoList != null && !partitionInfoList.isEmpty()) {
for (InventoryData inventoryData : dataList) { for (InventoryData inventoryData : dataList) {
partitionInfoList = partitionInfoList.stream().map(item -> { partitionInfoList = partitionInfoList.stream().map(item -> {
if (inventoryData.getBoxPartition().equals(item.getPartition())) { if (inventoryData.getBoxPartition().equals(item.getPartition())) {
//判断是否展示 //判断是否展示
if (inventoryData.getInventoryReelCount() < inventoryData.getReelCount()){ if (inventoryData.getInventoryReelCount() < inventoryData.getReelCount()) {
item.setStatus(1); item.setStatus(1);
} }
item.setInventory(true); item.setInventory(true);
...@@ -330,6 +374,7 @@ public class InventoryController { ...@@ -330,6 +374,7 @@ public class InventoryController {
} }
} }
} }
}
return ResultBean.newOkResult(partitionInfoList); return ResultBean.newOkResult(partitionInfoList);
} }
...@@ -420,7 +465,16 @@ public class InventoryController { ...@@ -420,7 +465,16 @@ public class InventoryController {
} }
//开始查找空库位 //开始查找空库位
Barcode boxBarcode = barcodeManager.findByBarcode(boxStr); Barcode boxBarcode = barcodeManager.findByBarcode(boxStr);
StoragePos pos = taskService.findEmptyPosForPutIn(storageList, boxBarcode, "", ""); //如果盘点批次为空的话,则查找新的库位,否则用原来的库位
String inventoryBatch = dataCache.getCache(INVENTORY_DATA);
StoragePos pos = null;
if (StringUtils.isBlank(inventoryBatch) || "-1".equals(inventoryBatch)) {
pos = taskService.findEmptyPosForPutIn(storageList, boxBarcode, "", "");
} else {
InventoryData data = inventoryDataManager.findOne(new Query(Criteria.where("inventoryBatch").is(inventoryBatch).and("box").is(boxStr)));
String posName = data.getPosName();
pos = storagePosManager.getByPosName(posName);
}
if (pos == null) { if (pos == null) {
return ResultBean.newErrorResult(-1, "", boxStr + "未找到可用库位"); return ResultBean.newErrorResult(-1, "", boxStr + "未找到可用库位");
} }
...@@ -488,9 +542,9 @@ public class InventoryController { ...@@ -488,9 +542,9 @@ public class InventoryController {
} }
//开始查询盘点数据 //开始查询盘点数据
//盘点批次 //盘点批次
Long inventoryBatch = dataCache.getCache(INVENTORY_DATA); String inventoryBatch = dataCache.getCache(INVENTORY_DATA) + "";
if (inventoryBatch == null) { if (StringUtils.isBlank(inventoryBatch) || "-1".equals(inventoryBatch)) {
inventoryBatch = -1l; return "当前没有要盘点的批次";
} }
InventoryData data = inventoryDataManager.findOne(new Query(Criteria.where("inventoryBatch").is(inventoryBatch).and("boxPartition").is(posName))); InventoryData data = inventoryDataManager.findOne(new Query(Criteria.where("inventoryBatch").is(inventoryBatch).and("boxPartition").is(posName)));
if (data != null) { if (data != null) {
...@@ -519,7 +573,7 @@ public class InventoryController { ...@@ -519,7 +573,7 @@ public class InventoryController {
} }
data.setReelCount(BoxUtil.getPartitionCount(posName, boxBarcode.getSubCodeList())); data.setReelCount(BoxUtil.getPartitionCount(posName, boxBarcode.getSubCodeList()));
data.setAmout(BoxUtil.getPartitionNum(posName, boxBarcode.getSubCodeList())); data.setAmout(BoxUtil.getPartitionNum(posName, boxBarcode.getSubCodeList()));
data.setInventoryBatch(inventoryBatch+""); data.setInventoryBatch(inventoryBatch + "");
data.setCreator(SecurityUtils.getCurrentUsername()); data.setCreator(SecurityUtils.getCurrentUsername());
} }
data.setInventoryReelCount(data.getInventoryReelCount() + 1); data.setInventoryReelCount(data.getInventoryReelCount() + 1);
...@@ -532,6 +586,10 @@ public class InventoryController { ...@@ -532,6 +586,10 @@ public class InventoryController {
} else { } else {
data.setStatus(InventoryStatus.EXECUTING.name()); data.setStatus(InventoryStatus.EXECUTING.name());
} }
//判断data是否需要盘点,如果不是,则改成需要盘点
if (!data.isNeedInventory()){
data.setNeedInventory(true);
}
inventoryDataManager.save(data); inventoryDataManager.save(data);
return errorMsg; return errorMsg;
} }
...@@ -568,6 +626,7 @@ public class InventoryController { ...@@ -568,6 +626,7 @@ public class InventoryController {
for (int i = 1; i <= count; i++) { for (int i = 1; i <= count; i++) {
String priPartition = boxStr + "-" + i; String priPartition = boxStr + "-" + i;
InventoryData data = new InventoryData(); InventoryData data = new InventoryData();
data.setBox(boxStr);
data.setBoxPartition(priPartition); data.setBoxPartition(priPartition);
//料号 //料号
String partNumber = BoxUtil.getPartitionPartNumber(priPartition, subCodeList); String partNumber = BoxUtil.getPartitionPartNumber(priPartition, subCodeList);
...@@ -591,6 +650,9 @@ public class InventoryController { ...@@ -591,6 +650,9 @@ public class InventoryController {
data.setNeedInventory(false); data.setNeedInventory(false);
data.setStatus(InventoryStatus.FINISHED.name()); data.setStatus(InventoryStatus.FINISHED.name());
} }
if(subCodeList == null || subCodeList.isEmpty()){
data.setMatch(true);
}
inventoryDataManager.save(data); inventoryDataManager.save(data);
} }
} }
......
package com.neotel.smfcore.custom.lizhen.agvBox.util; package com.neotel.smfcore.custom.lizhen.agvBox.util;
import com.neotel.smfcore.common.utils.StringUtils;
import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager; import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager;
import com.neotel.smfcore.core.barcode.service.po.Barcode; import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.device.util.DataCache; import com.neotel.smfcore.core.device.util.DataCache;
...@@ -172,8 +173,8 @@ public class BoxUtil { ...@@ -172,8 +173,8 @@ public class BoxUtil {
* @return * @return
*/ */
public static boolean isInventoryFinished(String boxStr) { public static boolean isInventoryFinished(String boxStr) {
Long inventoryBatch = dataCache.getCache(INVENTORY_DATA); String inventoryBatch = dataCache.getCache(INVENTORY_DATA) +"";
if (inventoryBatch == null) { if (StringUtils.isBlank(inventoryBatch) || "-1".equals(inventoryBatch)) {
return true; return true;
} }
List<InventoryData> dataList = inventoryDataManager.findByQuery(new Query(Criteria.where("inventoryBatch").is(inventoryBatch).and("box").is(boxStr))); List<InventoryData> dataList = inventoryDataManager.findByQuery(new Query(Criteria.where("inventoryBatch").is(inventoryBatch).and("box").is(boxStr)));
......
...@@ -741,6 +741,7 @@ public class OuterReportController { ...@@ -741,6 +741,7 @@ public class OuterReportController {
map.put("隔口", data.getBoxPartition()); map.put("隔口", data.getBoxPartition());
map.put("料号", data.getPartNumber()); map.put("料号", data.getPartNumber());
map.put("描述", ""); map.put("描述", "");
//map.put("原储位",data.getOriPosName());
map.put("储位", data.getPosName()); map.put("储位", data.getPosName());
map.put("卷数", data.getReelCount()); map.put("卷数", data.getReelCount());
map.put("数量", data.getAmout()); map.put("数量", data.getAmout());
...@@ -750,6 +751,8 @@ public class OuterReportController { ...@@ -750,6 +751,8 @@ public class OuterReportController {
map.put("盘点人", data.getCreator()); map.put("盘点人", data.getCreator());
map.put("盘点状态", InventoryStatus.getValue(data.getStatus())); map.put("盘点状态", InventoryStatus.getValue(data.getStatus()));
map.put("盘点批次", data.getInventoryBatch()); map.put("盘点批次", data.getInventoryBatch());
map.put("人工是否确认", data.isNeedInventory() ? "是" : "否");
map.put("创建时间",data.getCreateDate());
results.add(map); results.add(map);
} }
try { try {
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!