Commit fe95fc30 sunke

PN出库页面搜索

1 个父辈 0bb56f79
......@@ -2,6 +2,7 @@ package com.neotel.smfcore.core.device.handler.impl;
import cn.hutool.core.util.ObjectUtil;
import com.google.common.base.Strings;
import com.google.common.collect.Lists;
import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.Constants;
......@@ -147,10 +148,9 @@ public class MimoBoxHandler extends BaseDeviceHandler {
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<>();
for (InventoryItem item :
inventoryItemMap.values()) {
for (InventoryItem item : inventoryItemMap.values()) {
if(item.getStockCount()>0){
list.add(item.getPartNumber());
}
......
......@@ -457,117 +457,29 @@ public class DataCache {
public Map<String,InventoryItem> getAllInventory(List<String> storageIds,String blurry) {
Map<String, Storage> allStorages = getAllStorage();
List<Storage> storages = Lists.newArrayList();
for (Storage storage :
allStorages.values()) {
for (Storage storage : allStorages.values()) {
if (storageIds == null || storageIds.contains(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(),item.getStorageName()};
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 {
blurryOk = true;
}
if (blurryOk) {
if(item.getPartNumber().contains(blurry)){
resultMap.put(item.getPartNumber(), item);
}
}
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();
for (Storage storage : storageList) {
Map<String, InventoryItem> storageInventory = getStorageInventory(storage.getCid());
......
......@@ -79,10 +79,8 @@ public class MaterialController {
@ApiOperation("导出库存列表")
@GetMapping(value = "/inventory/download")
@PreAuthorize("@el.check('tacticsOuput')")
public void inventoryDownload(HttpServletResponse response, InventoryQueryCriteria criteria,Locale locale)throws IOException {
Map<String, InventoryItem> inventoryItemMap = dataCache.getAllInventory(criteria.getStorageIdList(),criteria.getBlurry());
List<InventoryItem> list = Lists.newArrayList(inventoryItemMap.values());
public void inventoryDownload(HttpServletResponse response, InventoryQueryCriteria criteria,Pageable pageable, Locale locale)throws IOException {
List<InventoryItemDto> list = getInventory(criteria,pageable);
String partNumberStr= MessageUtils.getText("smfcore.inventory.partNumber",locale,"物料编号");
String countStr= MessageUtils.getText("smfcore.inventory.count",locale,"数量");
......@@ -91,7 +89,7 @@ public class MaterialController {
String storageNameStr= MessageUtils.getText("smfcore.inventory.storageName",locale,"设备");
List<Map<String, Object>> maps = new ArrayList<>();
for (InventoryItem item : list) {
for (InventoryItemDto item : list) {
Map<String, Object> map = new LinkedHashMap<>();
map.put(partNumberStr, item.getPartNumber());
map.put(countStr, item.getStockCount());
......@@ -103,14 +101,18 @@ public class MaterialController {
FileUtil.downloadExcel(maps, response);
}
@ApiOperation("策略出库获取库存列表")
@GetMapping(value = "/inventory")
@PreAuthorize("@el.check('tacticsOuput')")
public ResponseEntity<List<InventoryItemDto>> inventory(InventoryQueryCriteria criteria,Pageable pageable, HttpServletRequest request) {
private List<InventoryItemDto> getInventory(InventoryQueryCriteria criteria,Pageable pageable){
Map<String, InventoryItem> inventoryItemMap = dataCache.getAllInventory(criteria.getStorageIdList(),criteria.getBlurry());
List<InventoryItem> list = Lists.newArrayList(inventoryItemMap.values());
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);
Sort.Order lockReelOrder = pageable.getSort().getOrderFor("lockReel");
if(lockReelOrder != null){
......@@ -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);
}
......
......@@ -149,7 +149,7 @@ public class MaterialStockController {
Query query = QueryHelp.getQuery(criteria);
query.addCriteria(Criteria.where("safetyStoreNum").gt(0));
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<>();
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!