Commit fe95fc30 sunke

PN出库页面搜索

1 个父辈 0bb56f79
...@@ -2,6 +2,7 @@ package com.neotel.smfcore.core.device.handler.impl; ...@@ -2,6 +2,7 @@ package com.neotel.smfcore.core.device.handler.impl;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import com.google.common.collect.Lists;
import com.neotel.smfcore.common.bean.ResultBean; import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.exception.ValidateException; import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.Constants; import com.neotel.smfcore.common.utils.Constants;
...@@ -147,10 +148,9 @@ public class MimoBoxHandler extends BaseDeviceHandler { ...@@ -147,10 +148,9 @@ public class MimoBoxHandler extends BaseDeviceHandler {
throw new ValidateException("smfcore.storage.error.notExist", "未找到料仓{0}", new String[]{storageId}); throw new ValidateException("smfcore.storage.error.notExist", "未找到料仓{0}", new String[]{storageId});
} }
Map<String, InventoryItem> inventoryItemMap = dataCache.getStorageInventory(storageId, blurry); Map<String, InventoryItem> inventoryItemMap = dataCache.getAllInventory(Lists.newArrayList(storageId), blurry);
List<String> list = new ArrayList<>(); List<String> list = new ArrayList<>();
for (InventoryItem item : for (InventoryItem item : inventoryItemMap.values()) {
inventoryItemMap.values()) {
if(item.getStockCount()>0){ if(item.getStockCount()>0){
list.add(item.getPartNumber()); list.add(item.getPartNumber());
} }
......
...@@ -457,117 +457,29 @@ public class DataCache { ...@@ -457,117 +457,29 @@ public class DataCache {
public Map<String,InventoryItem> getAllInventory(List<String> storageIds,String blurry) { public Map<String,InventoryItem> getAllInventory(List<String> storageIds,String blurry) {
Map<String, Storage> allStorages = getAllStorage(); Map<String, Storage> allStorages = getAllStorage();
List<Storage> storages = Lists.newArrayList(); List<Storage> storages = Lists.newArrayList();
for (Storage storage : for (Storage storage : allStorages.values()) {
allStorages.values()) {
if (storageIds == null || storageIds.contains(storage.getId())) { if (storageIds == null || storageIds.contains(storage.getId())) {
storages.add(storage); storages.add(storage);
} }
} }
Map<String, InventoryItem> map = getInventory(storages); Map<String, InventoryItem> map = getInventory(storages);
if(ObjectUtil.isEmpty(blurry)){
return map;
}
Map<String, InventoryItem> resultMap = new HashMap<>(); Map<String, InventoryItem> resultMap = new HashMap<>();
for (InventoryItem item : map.values()) { for (InventoryItem item : map.values()) {
boolean blurryOk = false;
if (ObjectUtil.isNotEmpty(blurry)) { if (ObjectUtil.isNotEmpty(blurry)) {
String[] blurrys = blurry.split(","); if(item.getPartNumber().contains(blurry)){
String[] valueArray = new String[]{item.getPartNumber(),item.getStorageName()}; resultMap.put(item.getPartNumber(), item);
for (String s : blurrys) {
if (ObjectUtil.isNotEmpty(s)) {
for (String v : valueArray) {
if(ObjectUtil.isEmpty(v)){
continue;
}
try {
Pattern pattern = Pattern.compile(QueryHelp.escapeExprSpecialWord(s), Pattern.CASE_INSENSITIVE);
Matcher m = pattern.matcher(v);
while (m.find()) {
blurryOk = true;
break;
}
if (blurryOk) break;
} catch (Exception ex) {
log.error(ex.toString());
}
}
if (blurryOk) break;
} else {
blurryOk = true;
}
} }
} else { } else {
blurryOk = true;
}
if (blurryOk) {
resultMap.put(item.getPartNumber(), item); resultMap.put(item.getPartNumber(), item);
} }
} }
return resultMap; return resultMap;
} }
/**
* 获取库存信息,key 为 PN
*/
public Map<String,InventoryItem> getStorageInventory(String storageId, String blurry) {
Map<String, Storage> allStorages = getAllStorage();
List<Storage> storages = Lists.newArrayList();
for (Storage storage :
allStorages.values()) {
if (ObjectUtil.isNotEmpty(storageId) && storageId.equals(storage.getId())) {
storages.add(storage);
}
}
Map<String, InventoryItem> map = getInventory(storages);
if (ObjectUtil.isEmpty(blurry)) {
return map;
}
Map<String, InventoryItem> resultMap = new HashMap<>();
for (InventoryItem item :
map.values()) {
boolean blurryOk = false;
if (ObjectUtil.isNotEmpty(blurry)) {
String[] blurrys = blurry.split(",");
String[] valueArray = new String[]{item.getPartNumber()};
for (String s : blurrys) {
if (ObjectUtil.isNotEmpty(s)) {
String v = item.getPartNumber();
if (ObjectUtil.isEmpty(v)) {
continue;
}
try {
Pattern pattern = Pattern.compile(QueryHelp.escapeExprSpecialWord(s), Pattern.CASE_INSENSITIVE);
Matcher m = pattern.matcher(v);
while (m.find()) {
blurryOk = true;
break;
}
if (blurryOk) break;
} catch (Exception ex) {
log.error(ex.toString());
}
if (blurryOk) break;
} else {
blurryOk = true;
}
}
} else {
blurryOk = true;
}
if (blurryOk) {
resultMap.put(item.getPartNumber(), item);
}
}
return resultMap;
}
/** /**
* 获取某些料仓的库存信息 * 获取某些料仓的库存信息
*/ */
public Map<String,InventoryItem> getInventory(Collection<Storage> storageList){ private Map<String,InventoryItem> getInventory(Collection<Storage> storageList){
Map<String,InventoryItem> resultMap = Maps.newHashMap(); Map<String,InventoryItem> resultMap = Maps.newHashMap();
for (Storage storage : storageList) { for (Storage storage : storageList) {
Map<String, InventoryItem> storageInventory = getStorageInventory(storage.getCid()); Map<String, InventoryItem> storageInventory = getStorageInventory(storage.getCid());
......
...@@ -79,10 +79,8 @@ public class MaterialController { ...@@ -79,10 +79,8 @@ public class MaterialController {
@ApiOperation("导出库存列表") @ApiOperation("导出库存列表")
@GetMapping(value = "/inventory/download") @GetMapping(value = "/inventory/download")
@PreAuthorize("@el.check('tacticsOuput')") @PreAuthorize("@el.check('tacticsOuput')")
public void inventoryDownload(HttpServletResponse response, InventoryQueryCriteria criteria,Locale locale)throws IOException { public void inventoryDownload(HttpServletResponse response, InventoryQueryCriteria criteria,Pageable pageable, Locale locale)throws IOException {
List<InventoryItemDto> list = getInventory(criteria,pageable);
Map<String, InventoryItem> inventoryItemMap = dataCache.getAllInventory(criteria.getStorageIdList(),criteria.getBlurry());
List<InventoryItem> list = Lists.newArrayList(inventoryItemMap.values());
String partNumberStr= MessageUtils.getText("smfcore.inventory.partNumber",locale,"物料编号"); String partNumberStr= MessageUtils.getText("smfcore.inventory.partNumber",locale,"物料编号");
String countStr= MessageUtils.getText("smfcore.inventory.count",locale,"数量"); String countStr= MessageUtils.getText("smfcore.inventory.count",locale,"数量");
...@@ -91,7 +89,7 @@ public class MaterialController { ...@@ -91,7 +89,7 @@ public class MaterialController {
String storageNameStr= MessageUtils.getText("smfcore.inventory.storageName",locale,"设备"); String storageNameStr= MessageUtils.getText("smfcore.inventory.storageName",locale,"设备");
List<Map<String, Object>> maps = new ArrayList<>(); List<Map<String, Object>> maps = new ArrayList<>();
for (InventoryItem item : list) { for (InventoryItemDto item : list) {
Map<String, Object> map = new LinkedHashMap<>(); Map<String, Object> map = new LinkedHashMap<>();
map.put(partNumberStr, item.getPartNumber()); map.put(partNumberStr, item.getPartNumber());
map.put(countStr, item.getStockCount()); map.put(countStr, item.getStockCount());
...@@ -103,14 +101,18 @@ public class MaterialController { ...@@ -103,14 +101,18 @@ public class MaterialController {
FileUtil.downloadExcel(maps, response); FileUtil.downloadExcel(maps, response);
} }
private List<InventoryItemDto> getInventory(InventoryQueryCriteria criteria,Pageable pageable){
@ApiOperation("策略出库获取库存列表")
@GetMapping(value = "/inventory")
@PreAuthorize("@el.check('tacticsOuput')")
public ResponseEntity<List<InventoryItemDto>> inventory(InventoryQueryCriteria criteria,Pageable pageable, HttpServletRequest request) {
Map<String, InventoryItem> inventoryItemMap = dataCache.getAllInventory(criteria.getStorageIdList(),criteria.getBlurry()); Map<String, InventoryItem> inventoryItemMap = dataCache.getAllInventory(criteria.getStorageIdList(),criteria.getBlurry());
List<InventoryItem> list = Lists.newArrayList(inventoryItemMap.values()); List<InventoryItem> list = Lists.newArrayList(inventoryItemMap.values());
List<InventoryItemDto> dtoList = inventoryItemMapper.toDto(list); List<InventoryItemDto> dtoList = inventoryItemMapper.toDto(list);
List<InventoryItemDto> resultList = new ArrayList<>();
//过滤掉没有库存的
for (InventoryItemDto inventoryItemDto : dtoList) {
if(inventoryItemDto.getStockReel() > 0){
resultList.add(inventoryItemDto);
}
}
Comparator<InventoryItemDto> comparator = Comparator.comparing(InventoryItemDto::getPartNumber); Comparator<InventoryItemDto> comparator = Comparator.comparing(InventoryItemDto::getPartNumber);
Sort.Order lockReelOrder = pageable.getSort().getOrderFor("lockReel"); Sort.Order lockReelOrder = pageable.getSort().getOrderFor("lockReel");
if(lockReelOrder != null){ if(lockReelOrder != null){
...@@ -135,7 +137,15 @@ public class MaterialController { ...@@ -135,7 +137,15 @@ public class MaterialController {
} }
} }
dtoList = dtoList.stream().sorted(comparator).collect(Collectors.toList()); resultList = resultList.stream().sorted(comparator).collect(Collectors.toList());
return resultList;
}
@ApiOperation("策略出库获取库存列表")
@GetMapping(value = "/inventory")
@PreAuthorize("@el.check('tacticsOuput')")
public ResponseEntity<List<InventoryItemDto>> inventory(InventoryQueryCriteria criteria,Pageable pageable, HttpServletRequest request) {
List<InventoryItemDto> dtoList = getInventory(criteria,pageable);
return new ResponseEntity<>(dtoList, HttpStatus.OK); return new ResponseEntity<>(dtoList, HttpStatus.OK);
} }
......
...@@ -149,7 +149,7 @@ public class MaterialStockController { ...@@ -149,7 +149,7 @@ public class MaterialStockController {
Query query = QueryHelp.getQuery(criteria); Query query = QueryHelp.getQuery(criteria);
query.addCriteria(Criteria.where("safetyStoreNum").gt(0)); query.addCriteria(Criteria.where("safetyStoreNum").gt(0));
List<Component> componentList = componentManager.findByQuery(query); List<Component> componentList = componentManager.findByQuery(query);
Map<String, InventoryItem> inventoryItemMap = dataCache.getAllInventory(criteria.getStorageIdList(), criteria.getBlurry()); Map<String, InventoryItem> inventoryItemMap = dataCache.getAllInventory(criteria.getStorageIdList(), criteria.getPartNumber());
List<SafetyInventoryDto> results = new ArrayList<>(); List<SafetyInventoryDto> results = new ArrayList<>();
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!