Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit fe95fc30
由
sunke
编写于
2022-08-03 18:22:08 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
PN出库页面搜索
1 个父辈
0bb56f79
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
29 行增加
和
107 行删除
src/main/java/com/neotel/smfcore/core/device/handler/impl/MimoBoxHandler.java
src/main/java/com/neotel/smfcore/core/device/util/DataCache.java
src/main/java/com/neotel/smfcore/core/storage/rest/MaterialController.java
src/main/java/com/neotel/smfcore/core/storage/rest/MaterialStockController.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/MimoBoxHandler.java
查看文件 @
fe95fc3
...
@@ -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
.
get
StorageInventory
(
storageId
,
blurry
);
Map
<
String
,
InventoryItem
>
inventoryItemMap
=
dataCache
.
get
AllInventory
(
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
());
}
}
...
...
src/main/java/com/neotel/smfcore/core/device/util/DataCache.java
查看文件 @
fe95fc3
...
@@ -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
;
}
/**
/**
* 获取某些料仓的库存信息
* 获取某些料仓的库存信息
*/
*/
p
ublic
Map
<
String
,
InventoryItem
>
getInventory
(
Collection
<
Storage
>
storageList
){
p
rivate
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
());
...
...
src/main/java/com/neotel/smfcore/core/storage/rest/MaterialController.java
查看文件 @
fe95fc3
...
@@ -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
(
InventoryItem
Dto
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
);
}
}
...
...
src/main/java/com/neotel/smfcore/core/storage/rest/MaterialStockController.java
查看文件 @
fe95fc3
...
@@ -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
.
get
Blurry
());
Map
<
String
,
InventoryItem
>
inventoryItemMap
=
dataCache
.
getAllInventory
(
criteria
.
getStorageIdList
(),
criteria
.
get
PartNumber
());
List
<
SafetyInventoryDto
>
results
=
new
ArrayList
<>();
List
<
SafetyInventoryDto
>
results
=
new
ArrayList
<>();
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论