Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 8fe89ed5
由
zshaohui
编写于
2023-03-10 11:09:16 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
盘点优化
1 个父辈
6a0d9ce8
显示空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
83 行增加
和
17 行删除
src/main/java/com/neotel/smfcore/custom/lizhen/agvBox/rest/InventoryController.java
src/main/java/com/neotel/smfcore/custom/lizhen/agvBox/util/BoxUtil.java
src/main/java/com/neotel/smfcore/custom/lizhen/report/outer/OuterReportController.java
src/main/java/com/neotel/smfcore/custom/lizhen/agvBox/rest/InventoryController.java
查看文件 @
8fe89ed
...
@@ -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
=
-
1
l
;
}
//获取需要盘点的信息
//获取需要盘点的信息
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
=
-
1
l
;
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
);
}
}
}
}
...
...
src/main/java/com/neotel/smfcore/custom/lizhen/agvBox/util/BoxUtil.java
查看文件 @
8fe89ed
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
)));
...
...
src/main/java/com/neotel/smfcore/custom/lizhen/report/outer/OuterReportController.java
查看文件 @
8fe89ed
...
@@ -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!
Cancel
请
注册
或
登录
后发表评论