Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit c14cd7dc
由
zshaohui
编写于
2025-01-13 09:56:14 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
盘点功能更新
1 个父辈
6325b4fa
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
211 行增加
和
187 行删除
src/main/java/com/neotel/smfcore/common/init/DataInitManager.java
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/virtual/controller/VirInventoryController.java
src/main/java/com/neotel/smfcore/custom/luxsan/factory_c/rawstor/controller/manual/ManualGrPutInController.java
src/main/java/com/neotel/smfcore/custom/luxsan/factory_c/third/ManualLineController.java
src/main/java/com/neotel/smfcore/common/init/DataInitManager.java
查看文件 @
c14cd7d
...
@@ -252,7 +252,11 @@ public class DataInitManager {
...
@@ -252,7 +252,11 @@ public class DataInitManager {
//料串绑定
//料串绑定
addNewFunctionMenu
(
7
,
raw
,
"manualBindStacker"
,
"料串绑定"
,
"manualBindStacker"
,
"manualBindStacker/index"
,
"docOut"
,
functionMenuMap
);
addNewFunctionMenu
(
7
,
raw
,
"manualBindStacker"
,
"料串绑定"
,
"manualBindStacker"
,
"manualBindStacker/index"
,
"docOut"
,
functionMenuMap
);
//盘点
Menu
pandian
=
Menu
.
CreatePMenu
(
"盘点"
,
999
,
"pandian"
,
3
,
"mIDList"
,
raw
);
addNewFunctionMenu
(
1
,
pandian
,
"sysInventory"
,
"盘点出库"
,
"sysInventory"
,
"system/sysInventory/index"
,
"mIDList"
,
functionMenuMap
);
addNewFunctionMenu
(
2
,
pandian
,
"staWorkSurface/s1"
,
"盘点作业"
,
"staWorkSurface/s1"
,
"outers/staWorkSurface/index"
,
"index"
,
functionMenuMap
);
addNewFunctionMenu
(
3
,
pandian
,
"sysInReport"
,
"盘点报表"
,
"sysInReport"
,
"neolight/sysInReport/index"
,
"mIDList"
,
functionMenuMap
);
//addNewFunctionMenu(132,null,"outPage","线外入库","outPage","outers/outPage/index","index",functionMenuMap);
//addNewFunctionMenu(132,null,"outPage","线外入库","outPage","outers/outPage/index","index",functionMenuMap);
...
@@ -324,7 +328,7 @@ public class DataInitManager {
...
@@ -324,7 +328,7 @@ public class DataInitManager {
addNewFunctionMenu
(
80
,
pMenuReport
,
"inventoryReport"
,
"库存"
,
"inventoryReport"
,
"neolight/inventoryReport/index"
,
"BOM"
,
functionMenuMap
);
addNewFunctionMenu
(
80
,
pMenuReport
,
"inventoryReport"
,
"库存"
,
"inventoryReport"
,
"neolight/inventoryReport/index"
,
"BOM"
,
functionMenuMap
);
addNewFunctionMenu
(
81
,
pMenuReport
,
"materialShortageReport"
,
"缺料"
,
"materialShortageReport"
,
"neolight/materialShortageReport/index"
,
"mShortageReport"
,
functionMenuMap
);
addNewFunctionMenu
(
81
,
pMenuReport
,
"materialShortageReport"
,
"缺料"
,
"materialShortageReport"
,
"neolight/materialShortageReport/index"
,
"mShortageReport"
,
functionMenuMap
);
addNewFunctionMenu
(
82
,
pMenuReport
,
"pkSearch"
,
"PK查询"
,
"pkSearch"
,
"neolight/pkSearch/index"
,
"findOut"
,
functionMenuMap
);
addNewFunctionMenu
(
82
,
pMenuReport
,
"pkSearch"
,
"PK查询"
,
"pkSearch"
,
"neolight/pkSearch/index"
,
"findOut"
,
functionMenuMap
);
addNewFunctionMenu
(
83
,
pMenuReport
,
"sysInReport"
,
"盘点"
,
"sysInReport"
,
"neolight/sysInReport/index"
,
"mIDList"
,
functionMenuMap
);
//
addNewFunctionMenu(83,pMenuReport,"sysInReport","盘点","sysInReport","neolight/sysInReport/index","mIDList",functionMenuMap);
addNewFunctionMenu
(
84
,
pMenuReport
,
"materialTrack"
,
"物料追溯"
,
"materialTrack"
,
"report/materialTrack/index"
,
"mTrack"
,
functionMenuMap
);
addNewFunctionMenu
(
84
,
pMenuReport
,
"materialTrack"
,
"物料追溯"
,
"materialTrack"
,
"report/materialTrack/index"
,
"mTrack"
,
functionMenuMap
);
...
@@ -379,7 +383,7 @@ public class DataInitManager {
...
@@ -379,7 +383,7 @@ public class DataInitManager {
Menu
s1
=
Menu
.
CreatePMenu
(
"工位1"
,
13
,
"/s1"
,
2
,
"index"
,
null
);
Menu
s1
=
Menu
.
CreatePMenu
(
"工位1"
,
13
,
"/s1"
,
2
,
"index"
,
null
);
addNewFunctionMenu
(
123
,
s1
,
"outerWarehouse/s1"
,
"入库扫码装箱"
,
"outerWarehouse/s1"
,
"outers/outerWarehouse/index"
,
"index"
,
functionMenuMap
);
addNewFunctionMenu
(
123
,
s1
,
"outerWarehouse/s1"
,
"入库扫码装箱"
,
"outerWarehouse/s1"
,
"outers/outerWarehouse/index"
,
"index"
,
functionMenuMap
);
addNewFunctionMenu
(
124
,
s1
,
"outOperation/s1"
,
"出库作业"
,
"outOperation/s1"
,
"outers/outOperation/index"
,
"index"
,
functionMenuMap
);
addNewFunctionMenu
(
124
,
s1
,
"outOperation/s1"
,
"出库作业"
,
"outOperation/s1"
,
"outers/outOperation/index"
,
"index"
,
functionMenuMap
);
addNewFunctionMenu
(
125
,
s1
,
"staWorkSurface/s1"
,
"盘点作业"
,
"staWorkSurface/s1"
,
"outers/staWorkSurface/index"
,
"index"
,
functionMenuMap
);
//
addNewFunctionMenu(125, s1, "staWorkSurface/s1", "盘点作业","staWorkSurface/s1", "outers/staWorkSurface/index","index",functionMenuMap);
Menu
s2
=
Menu
.
CreatePMenu
(
"工位2"
,
14
,
"/s2"
,
2
,
"index"
,
null
);
Menu
s2
=
Menu
.
CreatePMenu
(
"工位2"
,
14
,
"/s2"
,
2
,
"index"
,
null
);
addNewFunctionMenu
(
124
,
s2
,
"outerWarehouse/s2"
,
"入库扫码装箱"
,
"outerWarehouse/s2"
,
"outers/outerWarehouse/index"
,
"index"
,
functionMenuMap
);
addNewFunctionMenu
(
124
,
s2
,
"outerWarehouse/s2"
,
"入库扫码装箱"
,
"outerWarehouse/s2"
,
"outers/outerWarehouse/index"
,
"index"
,
functionMenuMap
);
...
@@ -413,7 +417,7 @@ public class DataInitManager {
...
@@ -413,7 +417,7 @@ public class DataInitManager {
//内外仓电子看板
//内外仓电子看板
//addNewFunctionMenu(1,null,"elecKanban", "电子看板","elecKanban", "elecKanban/index","kanban",functionMenuMap);
//addNewFunctionMenu(1,null,"elecKanban", "电子看板","elecKanban", "elecKanban/index","kanban",functionMenuMap);
addNewFunctionMenu
(
135
,
null
,
"sysInventory"
,
"盘点出库"
,
"sysInventory"
,
"system/sysInventory/index"
,
"mIDList"
,
functionMenuMap
);
//
addNewFunctionMenu(135,null,"sysInventory", "盘点出库","sysInventory", "system/sysInventory/index","mIDList",functionMenuMap);
//汇总报表
//汇总报表
Menu
meMenuReport
=
Menu
.
CreatePMenu
(
"汇总报表"
,
17
,
"meReport"
,
3
,
"inOutData"
,
null
);
Menu
meMenuReport
=
Menu
.
CreatePMenu
(
"汇总报表"
,
17
,
"meReport"
,
3
,
"inOutData"
,
null
);
...
...
src/main/java/com/neotel/smfcore/custom/lizhen/agvBox/rest/InventoryController.java
查看文件 @
c14cd7d
...
@@ -7,6 +7,8 @@ import com.neotel.smfcore.common.bean.ReelLockPosInfo;
...
@@ -7,6 +7,8 @@ import com.neotel.smfcore.common.bean.ReelLockPosInfo;
import
com.neotel.smfcore.common.bean.ResultBean
;
import
com.neotel.smfcore.common.bean.ResultBean
;
import
com.neotel.smfcore.common.utils.*
;
import
com.neotel.smfcore.common.utils.*
;
import
com.neotel.smfcore.core.barcode.bean.CodeBean
;
import
com.neotel.smfcore.core.barcode.bean.CodeBean
;
import
com.neotel.smfcore.core.barcode.enums.BARCODE_STATUS
;
import
com.neotel.smfcore.core.barcode.rest.bean.dto.BarcodeDto
;
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.barcode.utils.CodeResolve
;
import
com.neotel.smfcore.core.barcode.utils.CodeResolve
;
...
@@ -31,6 +33,8 @@ import com.neotel.smfcore.custom.lizhen.agvBox.service.manager.InventoryDataMana
...
@@ -31,6 +33,8 @@ import com.neotel.smfcore.custom.lizhen.agvBox.service.manager.InventoryDataMana
import
com.neotel.smfcore.custom.lizhen.agvBox.util.BoxUtil
;
import
com.neotel.smfcore.custom.lizhen.agvBox.util.BoxUtil
;
import
com.neotel.smfcore.custom.lizhen.agvBox.util.StationCacheUtil
;
import
com.neotel.smfcore.custom.lizhen.agvBox.util.StationCacheUtil
;
import
com.neotel.smfcore.custom.lizhen.innerBox.enums.ExtendType
;
import
com.neotel.smfcore.custom.lizhen.innerBox.enums.ExtendType
;
import
com.neotel.smfcore.custom.luxsan.factory_c.rawstor.enums.TaskCurrentLoc
;
import
com.neotel.smfcore.custom.luxsan.factory_c.rawstor.util.BoxHandleUtil
;
import
com.neotel.smfcore.security.annotation.AnonymousAccess
;
import
com.neotel.smfcore.security.annotation.AnonymousAccess
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
@@ -123,7 +127,7 @@ public class InventoryController {
...
@@ -123,7 +127,7 @@ public class InventoryController {
if
(
dataList
!=
null
&&
!
dataList
.
isEmpty
())
{
if
(
dataList
!=
null
&&
!
dataList
.
isEmpty
())
{
List
<
String
>
posNameList
=
new
ArrayList
<>();
List
<
String
>
posNameList
=
new
ArrayList
<>();
for
(
InventoryData
data
:
dataList
)
{
for
(
InventoryData
data
:
dataList
)
{
boolean
isFinished
=
isInventoryDataFinshed
(
data
.
getPosName
(),
dataList
);
boolean
isFinished
=
isInventoryDataFinshed
(
data
.
getPosName
(),
dataList
);
if
(
isFinished
)
{
if
(
isFinished
)
{
if
(
posNameList
.
isEmpty
())
{
if
(
posNameList
.
isEmpty
())
{
posNameList
.
add
(
data
.
getPosName
());
posNameList
.
add
(
data
.
getPosName
());
...
@@ -136,7 +140,7 @@ public class InventoryController {
...
@@ -136,7 +140,7 @@ public class InventoryController {
}
}
inventoryCount
=
posNameList
.
size
();
inventoryCount
=
posNameList
.
size
();
}
}
finishInventory
=
getFinishInventoryPosName
(
inventoryBatch
,
dataList
);
finishInventory
=
getFinishInventoryPosName
(
inventoryBatch
,
dataList
);
}
}
resultMap
.
put
(
"inventoryCount"
,
inventoryCount
);
resultMap
.
put
(
"inventoryCount"
,
inventoryCount
);
resultMap
.
put
(
"count"
,
count
);
resultMap
.
put
(
"count"
,
count
);
...
@@ -201,14 +205,6 @@ public class InventoryController {
...
@@ -201,14 +205,6 @@ public class InventoryController {
data
.
setStatus
(
InventoryStatus
.
FINISHED
.
name
());
data
.
setStatus
(
InventoryStatus
.
FINISHED
.
name
());
inventoryDataManager
.
save
(
data
);
inventoryDataManager
.
save
(
data
);
}
}
String
box
=
data
.
getBox
();
Barcode
barcode
=
barcodeManager
.
findByBarcode
(
box
);
if
(
barcode
!=
null
)
{
if
(
barcode
.
isInventory
())
{
barcode
.
setInventory
(
false
);
barcodeManager
.
save
(
barcode
);
}
}
}
}
}
else
{
}
else
{
...
@@ -243,27 +239,36 @@ public class InventoryController {
...
@@ -243,27 +239,36 @@ public class InventoryController {
//获取所有库位信息
//获取所有库位信息
for
(
Storage
storage
:
storageList
)
{
for
(
Storage
storage
:
storageList
)
{
List
<
StoragePos
>
storagePosList
=
storagePosManager
.
findByQuery
(
inventoryQuery
(
posName
,
storage
.
getId
(),
null
));
List
<
StoragePos
>
storagePosList
=
storagePosManager
.
findByQuery
(
inventoryQuery
(
posName
,
storage
.
getId
(),
null
));
List
<
StoragePosDto
>
resultList
=
new
ArrayList
<>();
List
<
StoragePosDto
>
storagePosDtos
=
storagePosMapper
.
toDto
(
storagePosList
);
List
<
StoragePosDto
>
storagePosDtos
=
storagePosMapper
.
toDto
(
storagePosList
);
if
(
inventoryBatch
!=
null
)
{
if
(
inventoryBatch
!=
null
)
{
for
(
StoragePosDto
pos
:
storagePosDtos
)
{
for
(
StoragePosDto
pos
:
storagePosDtos
)
{
List
<
InventoryData
>
dataList
=
inventoryDataManager
.
findByQuery
(
new
Query
(
Criteria
.
where
(
"inventoryBatch"
).
is
(
inventoryBatch
).
and
(
"posName"
).
is
(
pos
.
getPosName
())));
BarcodeDto
barcode
=
pos
.
getBarcode
();
if
(
dataList
!=
null
&&
!
dataList
.
isEmpty
())
{
if
(
barcode
!=
null
)
{
List
<
String
>
statusList
=
new
ArrayList
<>();
if
(
barcode
.
getStatus
()
!=
BARCODE_STATUS
.
IN_STORE
)
{
for
(
InventoryData
data
:
dataList
)
{
pos
.
setBarcode
(
null
);
statusList
.
add
(
data
.
getStatus
());
}
else
{
}
List
<
InventoryData
>
dataList
=
inventoryDataManager
.
findByQuery
(
new
Query
(
Criteria
.
where
(
"inventoryBatch"
).
is
(
inventoryBatch
).
and
(
"box"
).
is
(
barcode
.
getBarcode
())));
if
(
statusList
.
contains
(
InventoryStatus
.
NEW
.
name
()))
{
if
(
dataList
!=
null
&&
!
dataList
.
isEmpty
())
{
pos
.
setInventoryStatus
(
InventoryStatus
.
NEW
.
name
());
List
<
String
>
statusList
=
new
ArrayList
<>();
}
else
if
(!
statusList
.
contains
(
InventoryStatus
.
NEW
.
name
())
&&
statusList
.
contains
(
InventoryStatus
.
EXECUTING
.
name
()))
{
for
(
InventoryData
data
:
dataList
)
{
pos
.
setInventoryStatus
(
InventoryStatus
.
EXECUTING
.
name
());
statusList
.
add
(
data
.
getStatus
());
}
else
if
(!
statusList
.
contains
(
InventoryStatus
.
NEW
.
name
())
&&
!
statusList
.
contains
(
InventoryStatus
.
EXECUTING
.
name
()))
{
}
pos
.
setInventoryStatus
(
InventoryStatus
.
FINISHED
.
name
());
if
(
statusList
.
contains
(
InventoryStatus
.
NEW
.
name
()))
{
pos
.
setInventoryStatus
(
InventoryStatus
.
NEW
.
name
());
}
else
if
(!
statusList
.
contains
(
InventoryStatus
.
NEW
.
name
())
&&
statusList
.
contains
(
InventoryStatus
.
EXECUTING
.
name
()))
{
pos
.
setInventoryStatus
(
InventoryStatus
.
EXECUTING
.
name
());
}
else
if
(!
statusList
.
contains
(
InventoryStatus
.
NEW
.
name
())
&&
!
statusList
.
contains
(
InventoryStatus
.
EXECUTING
.
name
()))
{
pos
.
setInventoryStatus
(
InventoryStatus
.
FINISHED
.
name
());
}
}
}
}
}
}
resultList
.
add
(
pos
);
}
}
}
}
storagePosDtos
=
storagePosDtos
.
stream
().
sorted
(
Comparator
.
comparing
(
StoragePosDto
::
getPosName
).
reversed
()).
collect
(
Collectors
.
toList
());
resultList
=
resultList
.
stream
().
sorted
(
Comparator
.
comparing
(
StoragePosDto:
:
getPosName
).
reversed
()).
collect
(
Collectors
.
toList
());
return
storagePosDtos
;
return
resultList
;
}
}
return
new
ArrayList
<>();
return
new
ArrayList
<>();
}
}
...
@@ -277,7 +282,7 @@ public class InventoryController {
...
@@ -277,7 +282,7 @@ public class InventoryController {
*/
*/
@RequestMapping
(
"/inventoryOut"
)
@RequestMapping
(
"/inventoryOut"
)
//@AnonymousAccess
//@AnonymousAccess
public
synchronized
ResultBean
inventoryOut
(
@RequestBody
List
<
String
>
storagePosIdList
)
{
public
synchronized
ResultBean
inventoryOut
(
@RequestBody
List
<
String
>
storagePosIdList
)
{
String
msg
=
""
;
String
msg
=
""
;
String
inventoryBatch
=
dataCache
.
getCache
(
INVENTORY_DATA
)
+
""
;
String
inventoryBatch
=
dataCache
.
getCache
(
INVENTORY_DATA
)
+
""
;
if
(
StringUtils
.
isBlank
(
inventoryBatch
)
||
"-1"
.
equals
(
inventoryBatch
))
{
if
(
StringUtils
.
isBlank
(
inventoryBatch
)
||
"-1"
.
equals
(
inventoryBatch
))
{
...
@@ -291,33 +296,62 @@ public class InventoryController {
...
@@ -291,33 +296,62 @@ 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
)));
List
<
String
>
barcodeList
=
new
ArrayList
<>();
for
(
StoragePos
pos
:
storagePosList
)
{
Barcode
barcode
=
pos
.
getBarcode
();
if
(
barcode
!=
null
)
{
if
(
barcode
.
getStatus
()
!=
BARCODE_STATUS
.
IN_STORE
)
{
log
.
info
(
barcode
.
getBarcode
()
+
"料箱不在库,跳过"
);
}
else
{
barcodeList
.
add
(
barcode
.
getBarcode
());
}
}
}
//判断是否已经生成盘点记录
List
<
InventoryData
>
dataList
=
inventoryDataManager
.
findByQuery
(
new
Query
(
Criteria
.
where
(
"inventoryBatch"
).
is
(
inventoryBatch
).
and
(
"box"
).
in
(
barcodeList
)));
if
(
dataList
!=
null
&&
!
dataList
.
isEmpty
())
{
if
(
dataList
!=
null
&&
!
dataList
.
isEmpty
())
{
List
<
String
>
dataPosNameList
=
dataList
.
stream
().
map
(
InventoryData:
:
getPosName
).
collect
(
Collectors
.
toList
());
List
<
String
>
boxList
=
dataList
.
stream
().
map
(
InventoryData:
:
getBox
).
collect
(
Collectors
.
toList
());
dataPosNameList
=
dataPosNameList
.
stream
().
distinct
().
collect
(
Collectors
.
toList
());
boxList
=
boxList
.
stream
().
distinct
().
collect
(
Collectors
.
toList
());
return
ResultBean
.
newErrorResult
(-
1
,
""
,
JsonUtil
.
toJsonStr
(
dataPosNameList
)
+
"已经进行过盘点出库,请核实"
);
return
ResultBean
.
newErrorResult
(-
1
,
""
,
JsonUtil
.
toJsonStr
(
boxList
)
+
"已经进行过盘点出库,请核实"
);
}
//判断是否有未完成的任务
List
<
DataLog
>
allTasks
=
taskService
.
getAllTasks
();
for
(
String
barcodeStr
:
barcodeList
)
{
for
(
DataLog
dataLog
:
allTasks
)
{
if
(!
dataLog
.
isFinished
()
&&
!
dataLog
.
isCancel
())
{
if
(
barcodeStr
.
equals
(
dataLog
.
getBarcode
()))
{
log
.
info
(
barcodeStr
+
"有未完成的任务"
);
return
ResultBean
.
newErrorResult
(-
1
,
""
,
barcodeStr
+
"有未完成的任务,请确认"
);
}
}
}
}
}
for
(
StoragePos
pos
:
storagePosList
)
{
for
(
StoragePos
pos
:
storagePosList
)
{
log
.
info
(
"盘点出库的库位为:"
+
pos
.
getPosName
());
log
.
info
(
"盘点出库的库位为:"
+
pos
.
getPosName
());
Barcode
barcode
=
pos
.
getBarcode
();
Barcode
barcode
=
pos
.
getBarcode
();
if
(
barcode
!=
null
)
{
if
(
barcode
!=
null
)
{
if
(
barcode
.
getStatus
()
!=
BARCODE_STATUS
.
IN_STORE
)
{
continue
;
}
log
.
info
(
"盘点出库的物料为:"
+
barcode
.
getBarcode
());
log
.
info
(
"盘点出库的物料为:"
+
barcode
.
getBarcode
());
Storage
storage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
Storage
storage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
barcode
.
setInventory
(
true
);
barcode
=
barcodeManager
.
save
(
barcode
);
//生成出库任务
//生成出库任务
DataLog
dataLog
=
new
DataLog
(
storage
,
barcode
,
pos
);
DataLog
dataLog
=
new
DataLog
(
storage
,
barcode
,
pos
);
dataLog
.
setType
(
OP
.
CHECKOUT
);
dataLog
.
setType
(
OP
.
CHECKOUT
);
dataLog
.
setCreator
(
SecurityUtils
.
get
Current
Username
());
dataLog
.
setCreator
(
SecurityUtils
.
get
Login
Username
());
dataLog
.
setExtendType
(
ExtendType
.
INVENTORY_CHECKOUT
);
//盘点出库
dataLog
.
setExtendType
(
ExtendType
.
INVENTORY_CHECKOUT
);
//盘点出库
dataLog
.
setInventoryBatch
(
dataCache
.
getCache
(
INVENTORY_DATA
));
dataLog
.
setInventoryBatch
(
dataCache
.
getCache
(
INVENTORY_DATA
));
dataLog
.
setLoc
(
TaskCurrentLoc
.
Manual_FeedingInlet
);
dataLog
.
setSourceName
(
"盘点出库"
);
try
{
try
{
taskService
.
addTaskToExecute
(
dataLog
);
taskService
.
addTaskToExecute
(
dataLog
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
"盘点出库失败:"
+
e
.
getMessage
()
);
log
.
error
(
"盘点出库失败:"
,
e
);
msg
=
StringUtils
.
isBlank
(
msg
)
?
dataLog
.
getBarcode
()
:
msg
+
","
+
dataLog
.
getBarcode
();
msg
=
StringUtils
.
isBlank
(
msg
)
?
dataLog
.
getBarcode
()
:
msg
+
","
+
dataLog
.
getBarcode
();
continue
;
continue
;
}
}
...
@@ -326,9 +360,9 @@ public class InventoryController {
...
@@ -326,9 +360,9 @@ public class InventoryController {
generateInventoryData
(
barcode
,
pos
);
generateInventoryData
(
barcode
,
pos
);
}
}
}
}
if
(
StringUtils
.
isNotBlank
(
msg
)){
if
(
StringUtils
.
isNotBlank
(
msg
))
{
msg
=
msg
+
"已经有出入库任务请核实"
;
msg
=
msg
+
"已经有出入库任务请核实"
;
return
ResultBean
.
newOkResult
(
""
,
""
,
msg
);
return
ResultBean
.
newOkResult
(
""
,
""
,
msg
);
}
}
return
ResultBean
.
newOkResult
(
""
);
return
ResultBean
.
newOkResult
(
""
);
}
}
...
@@ -352,32 +386,28 @@ public class InventoryController {
...
@@ -352,32 +386,28 @@ public class InventoryController {
/**
/**
* 料箱信息
* 料箱信息
*
*
* @param
name
* @param
boxStr
* @return
* @return
*/
*/
@RequestMapping
(
"/inventoryBoxInfo"
)
@RequestMapping
(
"/inventoryBoxInfo"
)
//@AnonymousAccess
//@AnonymousAccess
public
ResultBean
inventoryBoxInfo
(
String
name
)
{
public
ResultBean
inventoryBoxInfo
(
String
boxStr
)
{
//根据名称获取当前工位上的箱子
if
(
StringUtils
.
isEmpty
(
boxStr
))
{
Station
station
=
StationCacheUtil
.
getStation
(
name
);
return
ResultBean
.
newErrorResult
(-
1
,
""
,
"料箱信息不能为空"
);
if
(
station
==
null
)
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
name
+
"工位信息未上传成功,请重试"
,
new
String
[]{});
}
//当前料箱的信息
String
currentRfid
=
station
.
getCurrentRfid
();
if
(
StringUtils
.
isBlank
(
currentRfid
))
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
name
+
"当前工位料箱信息未上传成功,请重试"
,
new
String
[]{});
}
}
//获取料箱信息
//获取料箱信息
String
boxStr
=
BoxUtil
.
getBoxStr
(
currentRfid
);
String
newBoxStr
=
BoxUtil
.
getBoxStr
(
boxStr
);
//查找barcode
//查找barcode
Barcode
barcode
=
barcodeManager
.
findByBarcode
(
boxStr
);
Barcode
barcode
=
barcodeManager
.
findByBarcode
(
newBoxStr
);
List
<
PartitionInfo
>
partitionInfoList
=
BoxUtil
.
getPartitionInfo
(
currentRfid
,
barcode
);
if
(
barcode
==
null
){
return
ResultBean
.
newErrorResult
(-
1
,
""
,
boxStr
+
"对应的料箱信息不存在"
);
}
List
<
PartitionInfo
>
partitionInfoList
=
BoxUtil
.
getPartitionInfo
(
boxStr
,
barcode
);
//盘点批次
//盘点批次
String
inventoryBatch
=
dataCache
.
getCache
(
INVENTORY_DATA
)
+
""
;
String
inventoryBatch
=
dataCache
.
getCache
(
INVENTORY_DATA
)
+
""
;
if
(
StringUtils
.
isNotBlank
(
inventoryBatch
)
&&
!
"-1"
.
equals
(
inventoryBatch
))
{
if
(
StringUtils
.
isNotBlank
(
inventoryBatch
)
&&
!
"-1"
.
equals
(
inventoryBatch
))
{
//获取需要盘点的信息
//获取需要盘点的信息
List
<
InventoryData
>
dataList
=
inventoryDataManager
.
findByQuery
(
new
Query
(
Criteria
.
where
(
"inventoryBatch"
).
is
(
inventoryBatch
).
and
(
"box"
).
is
(
b
oxStr
).
and
(
"needInventory"
).
is
(
true
)));
List
<
InventoryData
>
dataList
=
inventoryDataManager
.
findByQuery
(
new
Query
(
Criteria
.
where
(
"inventoryBatch"
).
is
(
inventoryBatch
).
and
(
"box"
).
is
(
newB
oxStr
).
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
)
{
...
@@ -411,19 +441,10 @@ public class InventoryController {
...
@@ -411,19 +441,10 @@ public class InventoryController {
@RequestMapping
(
"/inventoryReel"
)
@RequestMapping
(
"/inventoryReel"
)
//@AnonymousAccess
//@AnonymousAccess
public
synchronized
ResultBean
inventoryReel
(
@RequestBody
Map
<
String
,
String
>
paramMap
)
{
public
synchronized
ResultBean
inventoryReel
(
@RequestBody
Map
<
String
,
String
>
paramMap
)
{
String
name
=
paramMap
.
get
(
"name
"
);
String
boxStr
=
paramMap
.
get
(
"boxStr
"
);
String
bacodeStr
=
paramMap
.
get
(
"bacodeStr"
);
String
bacodeStr
=
paramMap
.
get
(
"bacodeStr"
);
log
.
info
(
"盘点人:"
+
SecurityUtils
.
getCurrentUsername
()
+
",工位为:"
+
name
+
",物料编码为:"
+
bacodeStr
);
log
.
info
(
"盘点人:"
+
SecurityUtils
.
getCurrentUsername
()
+
",料箱位:"
+
boxStr
+
",物料编码为:"
+
bacodeStr
);
Station
station
=
StationCacheUtil
.
getStation
(
name
);
String
errorMsg
=
inventoryReel
(
boxStr
,
bacodeStr
);
if
(
station
==
null
)
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
name
+
"工位信息未上传成功,请重试"
);
}
//判断当前工位是否有料箱
String
currentRfid
=
station
.
getCurrentRfid
();
if
(
StringUtils
.
isBlank
(
currentRfid
))
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
name
+
"当前工位料箱信息未上传成功,请重试"
,
new
String
[]{});
}
String
errorMsg
=
inventoryReel
(
currentRfid
,
bacodeStr
);
if
(
StringUtils
.
isNotBlank
(
errorMsg
))
{
if
(
StringUtils
.
isNotBlank
(
errorMsg
))
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
"盘点失败:"
+
errorMsg
);
return
ResultBean
.
newErrorResult
(-
1
,
""
,
"盘点失败:"
+
errorMsg
);
}
}
...
@@ -433,6 +454,7 @@ public class InventoryController {
...
@@ -433,6 +454,7 @@ public class InventoryController {
/**
/**
* 盘点完成并入库
* 盘点完成并入库
*
* @param paramMap
* @param paramMap
* @return
* @return
*/
*/
...
@@ -440,93 +462,37 @@ public class InventoryController {
...
@@ -440,93 +462,37 @@ public class InventoryController {
//@AnonymousAccess
//@AnonymousAccess
public
ResultBean
inventoryFinished
(
@RequestBody
Map
<
String
,
String
>
paramMap
)
{
public
ResultBean
inventoryFinished
(
@RequestBody
Map
<
String
,
String
>
paramMap
)
{
String
code
=
paramMap
.
get
(
"barcode"
);
//料箱条码
String
code
=
paramMap
.
get
(
"barcode"
);
//料箱条码
String
name
=
paramMap
.
get
(
"name"
);
//工位名称
if
(
StringUtils
.
isEmpty
(
code
))
{
List
<
Storage
>
storageList
=
new
ArrayList
<>();
return
ResultBean
.
newErrorResult
(-
1
,
""
,
"料箱条码不能为空"
);
List
<
String
>
cidList
=
Lists
.
newArrayList
();
for
(
Storage
storage
:
dataCache
.
getAllStorage
().
values
())
{
if
(
storage
.
isType
(
new
DeviceType
[]{
DeviceType
.
AGV_BOX
}))
{
storageList
.
add
(
storage
);
cidList
.
add
(
storage
.
getCid
());
break
;
}
}
log
.
info
(
"盘点完成并入库,条码为:{},工位为:{}"
,
code
,
name
);
Station
station
=
StationCacheUtil
.
getStation
(
name
);
if
(
station
==
null
)
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
name
+
"工位信息未上传成功,请重试"
);
}
//先找可用料仓
if
(
storageList
==
null
||
storageList
.
isEmpty
())
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
"没有可以入库的料仓"
);
}
}
//得到箱子号
String
boxStr
=
BoxUtil
.
getBoxStr
(
code
);
String
boxStr
=
BoxUtil
.
getBoxStr
(
code
);
//校验rfid是否一致
//判断料箱信息是否存在
String
currentRfid
=
station
.
getCurrentRfid
();
Barcode
boxBarcode
=
barcodeManager
.
findByBarcode
(
boxStr
);
if
(
StringUtils
.
isBlank
(
currentRfid
))
{
if
(
boxBarcode
==
null
)
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
name
+
"当前工位料箱信息未上传成功,请重试"
,
new
String
[]{});
return
ResultBean
.
newErrorResult
(-
1
,
""
,
boxStr
+
"对应的料箱信息不存在"
);
}
else
if
(!
currentRfid
.
startsWith
(
boxStr
))
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
"当前工位料箱"
+
currentRfid
+
"与"
+
"要入库的料箱:"
+
boxStr
+
"不一致"
,
new
String
[]{});
}
}
//判断是否盘点完成
//判断是否盘点完成
boolean
finished
=
BoxUtil
.
isInventoryFinished
(
boxStr
);
boolean
finished
=
BoxUtil
.
isInventoryFinished
(
boxStr
);
if
(!
finished
)
{
if
(!
finished
)
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
boxStr
+
"盘点未完成,请继续盘点"
);
return
ResultBean
.
newErrorResult
(-
1
,
""
,
boxStr
+
"盘点未完成,请继续盘点"
);
}
}
//判断是否
正在进行出入
库任务
//判断是否
有出
库任务
for
(
DataLog
dataLog
:
taskService
.
getAllTasks
())
{
for
(
DataLog
dataLog
:
taskService
.
getAllTasks
())
{
if
(
dataLog
.
getBarcode
().
equals
(
boxStr
))
{
if
(!
dataLog
.
isCancel
()
&&
!
dataLog
.
isFinished
()
&&
dataLog
.
getBarcode
().
equals
(
boxBarcode
.
getBarcode
()))
{
if
(!
dataLog
.
isFinished
())
{
if
(
dataLog
.
isPutInTask
())
{
if
(
dataLog
.
isPutInTask
())
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
boxStr
+
"有正在执行的入库任务,请确认"
);
//已有入库任务
}
else
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
"物料["
+
dataLog
.
getBarcode
()
+
"]已有入库任务,需继续执行入库动作"
,
new
String
[]{});
log
.
info
(
boxStr
+
"有正在执行的出库任务,服务器更改状态为完成"
);
}
else
if
(
dataLog
.
isCheckOutTask
())
{
if
(!
dataLog
.
isOutFromPos
())
{
//已有出库任务
taskService
.
moveTaskToFinished
(
dataLog
);
return
ResultBean
.
newErrorResult
(-
1
,
""
,
"物料["
+
dataLog
.
getBarcode
()
+
"]已有出库任务,需继续执行出库动作"
,
new
String
[]{});
BoxHandleUtil
.
outFromPos
(
dataLog
);
dataLog
.
setOutFromPos
(
true
);
}
}
dataLog
.
setStatus
(
OP_STATUS
.
FINISHED
.
name
());
taskService
.
updateFinishedTask
(
dataLog
);
}
}
}
}
}
}
//开始查找空库位
Barcode
boxBarcode
=
barcodeManager
.
findByBarcode
(
boxStr
);
//如果盘点批次为空的话,则查找新的库位,否则用原来的库位
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
))
.
with
(
Sort
.
by
(
Sort
.
Direction
.
DESC
,
"createDate"
)));
String
posName
=
data
.
getPosName
();
pos
=
storagePosManager
.
getByPosName
(
posName
);
}
if
(
pos
==
null
)
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
boxStr
+
"未找到可用库位"
);
}
if
(
pos
!=
null
)
{
Storage
theStorage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
ReelLockPosInfo
oldLockInfo
=
ReelLockPosUtil
.
getLockPosInfoByCode
(
boxBarcode
.
getBarcode
());
if
(
oldLockInfo
!=
null
)
{
if
(!
oldLockInfo
.
getBarcode
().
equals
(
boxBarcode
.
getBarcode
()))
{
ReelLockPosUtil
.
removeReelLockPosInfo
(
oldLockInfo
.
getBarcode
());
log
.
info
(
"清理锁定库位:库位号["
+
oldLockInfo
.
getLockPosName
()
+
"]上物料["
+
oldLockInfo
.
getBarcode
()
+
"]锁定的库位"
);
}
}
ReelLockPosInfo
reelLocInfo
=
new
ReelLockPosInfo
();
reelLocInfo
.
setBarcode
(
boxBarcode
.
getBarcode
());
reelLocInfo
.
setCid
(
theStorage
.
getCid
());
reelLocInfo
.
setLockPosName
(
pos
.
getPosName
());
reelLocInfo
.
setLockPosId
(
pos
.
getId
());
reelLocInfo
=
ReelLockPosUtil
.
addReelLockPosInfo
(
reelLocInfo
,
cidList
);
if
(
reelLocInfo
==
null
)
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
"["
+
boxBarcode
.
getBarcode
()
+
"]库位["
+
reelLocInfo
.
getLockPosName
()
+
"]已被锁定,暂停入库"
,
new
String
[]{});
}
//生成入库任务
boxBarcode
.
setInventory
(
false
);
barcodeManager
.
save
(
boxBarcode
);
generateTask
(
dataCache
.
getStorageById
(
pos
.
getStorageId
()),
boxBarcode
,
pos
,
OP
.
PUT_IN
,
OP_STATUS
.
WAIT
.
name
(),
ExtendType
.
INVENTORY_PUTIN
);
}
return
ResultBean
.
newOkResult
(
""
);
return
ResultBean
.
newOkResult
(
""
);
}
}
...
@@ -611,7 +577,7 @@ public class InventoryController {
...
@@ -611,7 +577,7 @@ public class InventoryController {
String
boxStr
=
BoxUtil
.
getBoxStr
(
currentRfid
);
String
boxStr
=
BoxUtil
.
getBoxStr
(
currentRfid
);
//判断当前料箱是否为要盘点的料箱
//判断当前料箱是否为要盘点的料箱
Barcode
boxBarcode
=
barcodeManager
.
findByBarcode
(
boxStr
);
Barcode
boxBarcode
=
barcodeManager
.
findByBarcode
(
boxStr
);
if
(
boxBarcode
==
null
||
!
boxBarcode
.
isInventory
(
))
{
if
(
boxBarcode
==
null
||
BoxUtil
.
isInventoryFinished
(
boxStr
))
{
return
boxStr
+
"不是要盘点的料箱"
;
return
boxStr
+
"不是要盘点的料箱"
;
}
}
Barcode
barcode
=
codeBean
.
getBarcode
();
Barcode
barcode
=
codeBean
.
getBarcode
();
...
@@ -625,10 +591,10 @@ public class InventoryController {
...
@@ -625,10 +591,10 @@ public class InventoryController {
return
barcode
.
getBarcode
()
+
"存在料箱中:"
+
barcode
.
getPosName
()
+
"与当前工位上的料箱:"
+
boxStr
+
"不一致"
;
return
barcode
.
getBarcode
()
+
"存在料箱中:"
+
barcode
.
getPosName
()
+
"与当前工位上的料箱:"
+
boxStr
+
"不一致"
;
}
}
//判断料号是否正确
//判断料号是否正确
Map
<
String
,
Object
>
barandMap
=
lizhenApi
.
brandQty
(
barcode
.
getPartNumber
(),
barcode
.
getProvider
());
/*
Map<String, Object> barandMap = lizhenApi.brandQty(barcode.getPartNumber(), barcode.getProvider());
if (barandMap.get("qty") == null) {
if (barandMap.get("qty") == null) {
return barcode.getPartNumber() + "MES未返回料卷数量,未找到对应的料卷数量";
return barcode.getPartNumber() + "MES未返回料卷数量,未找到对应的料卷数量";
}
}
*/
log
.
info
(
barcode
.
getBarcode
()
+
"隔口信息:"
+
barcode
.
getPosName
());
log
.
info
(
barcode
.
getBarcode
()
+
"隔口信息:"
+
barcode
.
getPosName
());
//开始查询盘点数据
//开始查询盘点数据
//盘点批次
//盘点批次
...
@@ -683,14 +649,14 @@ public class InventoryController {
...
@@ -683,14 +649,14 @@ public class InventoryController {
data
.
setNeedInventory
(
true
);
data
.
setNeedInventory
(
true
);
}
}
//设置创建人为当前盘点人
//设置创建人为当前盘点人
data
.
setCreator
(
SecurityUtils
.
get
Current
Username
());
data
.
setCreator
(
SecurityUtils
.
get
Login
Username
());
inventoryDataManager
.
save
(
data
);
inventoryDataManager
.
save
(
data
);
//同时,把当前料箱的盘点人,都改成当前登录人
//同时,把当前料箱的盘点人,都改成当前登录人
List
<
InventoryData
>
inventoryDataList
=
inventoryDataManager
.
findByQuery
(
new
Query
(
Criteria
.
where
(
"inventoryBatch"
).
is
(
inventoryBatch
).
and
(
"box"
).
is
(
boxStr
).
and
(
"oriPosName"
).
is
(
data
.
getOriPosName
())));
List
<
InventoryData
>
inventoryDataList
=
inventoryDataManager
.
findByQuery
(
new
Query
(
Criteria
.
where
(
"inventoryBatch"
).
is
(
inventoryBatch
).
and
(
"box"
).
is
(
boxStr
).
and
(
"oriPosName"
).
is
(
data
.
getOriPosName
())));
if
(
inventoryDataList
!=
null
&&
!
inventoryDataList
.
isEmpty
()){
if
(
inventoryDataList
!=
null
&&
!
inventoryDataList
.
isEmpty
())
{
for
(
InventoryData
inventoryData
:
inventoryDataList
)
{
for
(
InventoryData
inventoryData
:
inventoryDataList
)
{
inventoryData
.
setCreator
(
SecurityUtils
.
get
Current
Username
());
inventoryData
.
setCreator
(
SecurityUtils
.
get
Login
Username
());
inventoryDataManager
.
save
(
inventoryData
);
inventoryDataManager
.
save
(
inventoryData
);
}
}
}
}
...
@@ -709,7 +675,7 @@ public class InventoryController {
...
@@ -709,7 +675,7 @@ public class InventoryController {
String
inventoryBatch
=
dataCache
.
getCache
(
INVENTORY_DATA
);
String
inventoryBatch
=
dataCache
.
getCache
(
INVENTORY_DATA
);
//获取原始库位
//获取原始库位
String
posName
=
pos
.
getPosName
();
String
posName
=
pos
.
getPosName
();
String
oriPosName
=
posName
.
substring
(
0
,
posName
.
lastIndexOf
(
"-"
));
//
String oriPosName = posName.substring(0, posName.lastIndexOf("-"));
//开始处理数据
//开始处理数据
if
(
barcode
==
null
)
{
if
(
barcode
==
null
)
{
InventoryData
data
=
new
InventoryData
();
InventoryData
data
=
new
InventoryData
();
...
@@ -718,16 +684,16 @@ public class InventoryController {
...
@@ -718,16 +684,16 @@ public class InventoryController {
data
.
setNeedInventory
(
false
);
data
.
setNeedInventory
(
false
);
data
.
setCreator
(
SecurityUtils
.
getCurrentUsername
());
data
.
setCreator
(
SecurityUtils
.
getCurrentUsername
());
data
.
setInventoryBatch
(
inventoryBatch
);
data
.
setInventoryBatch
(
inventoryBatch
);
data
.
setOriPosName
(
oriP
osName
);
data
.
setOriPosName
(
p
osName
);
data
.
setPosName
(
pos
.
getPosName
());
data
.
setPosName
(
pos
.
getPosName
());
inventoryDataManager
.
save
(
data
);
inventoryDataManager
.
save
(
data
);
}
else
{
}
else
{
List
<
Barcode
>
subCodeList
=
barcode
.
getSubCodeList
();
List
<
Barcode
>
subCodeList
=
barcode
.
getSubCodeList
();
String
partition
=
getInventoryPartition
(
subCodeList
);
String
partition
=
getInventoryPartition
(
subCodeList
);
String
boxStr
=
barcode
.
getBarcode
();
String
boxStr
=
barcode
.
getBarcode
();
int
count
=
boxStr
.
startsWith
(
"C
S"
)
||
boxStr
.
startsWith
(
"CB"
)
?
8
:
2
;
//CS开头的8个隔口,其他是2
个
int
count
=
boxStr
.
startsWith
(
"C
07"
)
?
6
:
3
;
//C07开头的6个隔口,其他是3
个
for
(
int
i
=
1
;
i
<=
count
;
i
++)
{
for
(
int
i
=
1
;
i
<=
count
;
i
++)
{
String
priPartition
=
boxStr
+
"-"
+
i
;
String
priPartition
=
boxStr
+
"-
0
"
+
i
;
InventoryData
data
=
new
InventoryData
();
InventoryData
data
=
new
InventoryData
();
data
.
setBox
(
boxStr
);
data
.
setBox
(
boxStr
);
data
.
setBoxPartition
(
priPartition
);
data
.
setBoxPartition
(
priPartition
);
...
@@ -745,8 +711,8 @@ public class InventoryController {
...
@@ -745,8 +711,8 @@ public class InventoryController {
int
partitionNum
=
BoxUtil
.
getPartitionNum
(
priPartition
,
subCodeList
);
int
partitionNum
=
BoxUtil
.
getPartitionNum
(
priPartition
,
subCodeList
);
data
.
setAmout
(
partitionNum
);
data
.
setAmout
(
partitionNum
);
data
.
setInventoryBatch
(
inventoryBatch
);
data
.
setInventoryBatch
(
inventoryBatch
);
data
.
setOriPosName
(
oriP
osName
);
data
.
setOriPosName
(
p
osName
);
if
(
partition
.
equals
(
boxStr
+
"-"
+
i
))
{
if
(
partition
.
equals
(
boxStr
+
"-
0
"
+
i
))
{
data
.
setNeedInventory
(
true
);
data
.
setNeedInventory
(
true
);
}
else
{
}
else
{
data
.
setNeedInventory
(
false
);
data
.
setNeedInventory
(
false
);
...
@@ -778,16 +744,20 @@ public class InventoryController {
...
@@ -778,16 +744,20 @@ public class InventoryController {
private
Query
inventoryQuery
(
String
posName
,
String
storageId
,
List
<
String
>
storagePosIdList
)
{
private
Query
inventoryQuery
(
String
posName
,
String
storageId
,
List
<
String
>
storagePosIdList
)
{
Query
query
=
new
Query
();
Query
query
=
new
Query
();
//Criteria criteria = Criteria.where("barcode.status").is(BARCODE_STATUS.IN_STORE);
Criteria
criteria
=
new
Criteria
();
if
(
storagePosIdList
!=
null
&&
!
storagePosIdList
.
isEmpty
())
{
if
(
storagePosIdList
!=
null
&&
!
storagePosIdList
.
isEmpty
())
{
query
.
addCriteria
(
Criteria
.
where
(
"id"
).
in
(
storagePosIdList
)
);
criteria
.
and
(
"id"
).
in
(
storagePosIdList
);
}
}
if
(
StringUtils
.
isNotBlank
(
storageId
))
{
if
(
StringUtils
.
isNotBlank
(
storageId
))
{
query
.
addCriteria
(
Criteria
.
where
(
"storageId"
).
is
(
storageId
)
/*.and("used").is(true)*/
);
criteria
.
and
(
"storageId"
).
is
(
storageId
);
}
}
if
(
StringUtils
.
isNotBlank
(
posName
))
{
if
(
StringUtils
.
isNotBlank
(
posName
))
{
Pattern
pattern
=
Pattern
.
compile
(
QueryHelp
.
escapeExprSpecialWord
(
posName
),
Pattern
.
CASE_INSENSITIVE
);
Pattern
pattern
=
Pattern
.
compile
(
QueryHelp
.
escapeExprSpecialWord
(
posName
),
Pattern
.
CASE_INSENSITIVE
);
query
.
addCriteria
(
Criteria
.
where
(
"posName"
).
regex
(
pattern
)
);
criteria
.
and
(
"posName"
).
regex
(
pattern
);
}
}
//获取到在库的库存信息
query
.
addCriteria
(
criteria
);
//query.fields().include("barcode", "updateDate", "storageId","posName");
//query.fields().include("barcode", "updateDate", "storageId","posName");
return
query
;
return
query
;
}
}
...
...
src/main/java/com/neotel/smfcore/custom/lizhen/agvBox/util/BoxUtil.java
查看文件 @
c14cd7d
...
@@ -124,7 +124,7 @@ public class BoxUtil {
...
@@ -124,7 +124,7 @@ public class BoxUtil {
Map
<
String
,
PartitionInfo
>
infoMap
=
new
HashMap
<>();
Map
<
String
,
PartitionInfo
>
infoMap
=
new
HashMap
<>();
String
boxStr
=
getBoxStr
(
boxSideStr
);
String
boxStr
=
getBoxStr
(
boxSideStr
);
for
(
int
i
=
1
;
i
<
9
;
i
++)
{
for
(
int
i
=
1
;
i
<
9
;
i
++)
{
String
partition
=
boxStr
+
"-"
+
i
;
String
partition
=
boxStr
+
"-
0
"
+
i
;
PartitionInfo
info
=
new
PartitionInfo
();
PartitionInfo
info
=
new
PartitionInfo
();
info
.
setPartition
(
partition
);
info
.
setPartition
(
partition
);
info
.
setReelCount
(
getPartitionCount
(
partition
,
subCodeList
));
info
.
setReelCount
(
getPartitionCount
(
partition
,
subCodeList
));
...
@@ -132,37 +132,39 @@ public class BoxUtil {
...
@@ -132,37 +132,39 @@ public class BoxUtil {
info
.
setNum
(
getPartitionNum
(
partition
,
subCodeList
));
info
.
setNum
(
getPartitionNum
(
partition
,
subCodeList
));
infoMap
.
put
(
partition
,
info
);
infoMap
.
put
(
partition
,
info
);
}
}
String
par01
=
boxStr
+
"-01"
;
String
par02
=
boxStr
+
"-02"
;
String
par03
=
boxStr
+
"-03"
;
String
par04
=
boxStr
+
"-04"
;
String
par05
=
boxStr
+
"-05"
;
String
par06
=
boxStr
+
"-06"
;
if
(
boxSideStr
.
endsWith
(
"A"
))
{
if
(
boxSideStr
.
endsWith
(
"A"
))
{
if
(
boxSideStr
.
startsWith
(
"CS"
)
||
boxSideStr
.
startsWith
(
"CB"
))
{
if
(
boxSideStr
.
startsWith
(
"C07"
))
{
for
(
int
i
=
8
;
i
>
4
;
i
--)
{
infoList
.
add
(
infoMap
.
get
(
par02
));
String
partition
=
boxStr
+
"-"
+
i
;
infoList
.
add
(
infoMap
.
get
(
par04
));
infoList
.
add
(
infoMap
.
get
(
partition
));
infoList
.
add
(
infoMap
.
get
(
par05
));
}
infoList
.
add
(
infoMap
.
get
(
par01
));
for
(
int
i
=
1
;
i
<
5
;
i
++)
{
infoList
.
add
(
infoMap
.
get
(
par03
));
String
partition
=
boxStr
+
"-"
+
i
;
infoList
.
add
(
infoMap
.
get
(
par05
));
infoList
.
add
(
infoMap
.
get
(
partition
));
}
}
else
{
}
else
{
for
(
int
i
=
2
;
i
>
0
;
i
--)
{
infoList
.
add
(
infoMap
.
get
(
par01
));
String
partition
=
boxStr
+
"-"
+
i
;
infoList
.
add
(
infoMap
.
get
(
par02
));
infoList
.
add
(
infoMap
.
get
(
partition
));
infoList
.
add
(
infoMap
.
get
(
par03
));
}
}
}
}
else
if
(
boxSideStr
.
endsWith
(
"B"
))
{
}
else
if
(
boxSideStr
.
endsWith
(
"B"
))
{
if
(
boxSideStr
.
startsWith
(
"CS"
)
||
boxSideStr
.
startsWith
(
"CB"
))
{
if
(
boxSideStr
.
startsWith
(
"C07"
))
{
for
(
int
i
=
4
;
i
>
0
;
i
--)
{
infoList
.
add
(
infoMap
.
get
(
par05
));
String
partition
=
boxStr
+
"-"
+
i
;
infoList
.
add
(
infoMap
.
get
(
par03
));
infoList
.
add
(
infoMap
.
get
(
partition
));
infoList
.
add
(
infoMap
.
get
(
par01
));
}
infoList
.
add
(
infoMap
.
get
(
par06
));
for
(
int
i
=
5
;
i
<
9
;
i
++)
{
infoList
.
add
(
infoMap
.
get
(
par04
));
String
partition
=
boxStr
+
"-"
+
i
;
infoList
.
add
(
infoMap
.
get
(
par02
));
infoList
.
add
(
infoMap
.
get
(
partition
));
}
}
else
{
}
else
{
for
(
int
i
=
1
;
i
<
3
;
i
++)
{
infoList
.
add
(
infoMap
.
get
(
par03
));
String
partition
=
boxStr
+
"-"
+
i
;
infoList
.
add
(
infoMap
.
get
(
par02
));
infoList
.
add
(
infoMap
.
get
(
partition
));
infoList
.
add
(
infoMap
.
get
(
par01
));
}
}
}
}
}
}
}
...
...
src/main/java/com/neotel/smfcore/custom/lizhen/virtual/controller/VirInventoryController.java
查看文件 @
c14cd7d
...
@@ -34,6 +34,7 @@ import java.util.ArrayList;
...
@@ -34,6 +34,7 @@ import java.util.ArrayList;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
@Api
(
tags
=
"虚拟仓盘点"
)
@Api
(
tags
=
"虚拟仓盘点"
)
@RequestMapping
(
"/virInventory"
)
@RequestMapping
(
"/virInventory"
)
...
@@ -190,4 +191,34 @@ public class VirInventoryController {
...
@@ -190,4 +191,34 @@ public class VirInventoryController {
return
ResultBean
.
newOkResult
(
cache
.
toString
());
return
ResultBean
.
newOkResult
(
cache
.
toString
());
}
}
}
}
@ApiOperation
(
"获取所有库位"
)
@RequestMapping
(
"/getAllPosName"
)
@AnonymousAccess
public
void
getAllPosName
()
{
List
<
String
>
posNameList
=
new
ArrayList
<>();
Query
query
=
new
Query
();
query
.
fields
().
include
(
"posName"
,
"storageId"
);
List
<
StoragePos
>
storagePosList
=
storagePosManager
.
findByQuery
(
query
);
for
(
StoragePos
pos
:
storagePosList
)
{
Storage
storage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
if
(
storage
.
isVirtual
()){
continue
;
}
String
posName
=
pos
.
getPosName
();
posName
=
posName
.
substring
(
13
,
posName
.
length
());
posNameList
.
add
(
posName
);
}
posNameList
=
posNameList
.
stream
().
distinct
().
collect
(
Collectors
.
toList
());
posNameList
=
posNameList
.
stream
().
collect
(
Collectors
.
toList
());
for
(
String
s
:
posNameList
)
{
log
.
info
(
s
);
}
}
}
}
src/main/java/com/neotel/smfcore/custom/luxsan/factory_c/rawstor/controller/manual/ManualGrPutInController.java
查看文件 @
c14cd7d
...
@@ -364,6 +364,12 @@ public class ManualGrPutInController {
...
@@ -364,6 +364,12 @@ public class ManualGrPutInController {
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.error.barcode.invalid"
,
"条码无效"
);
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.error.barcode.invalid"
,
"条码无效"
);
}
}
//判断盘点是否完成
boolean
finished
=
BoxUtil
.
isInventoryFinished
(
boxStr
);
if
(!
finished
)
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
boxStr
+
"盘点未完成,请继续盘点"
);
}
//1.清理要出库的数据
//1.清理要出库的数据
List
<
Barcode
>
newSubCodeList
=
new
ArrayList
<>();
List
<
Barcode
>
newSubCodeList
=
new
ArrayList
<>();
...
@@ -378,9 +384,7 @@ public class ManualGrPutInController {
...
@@ -378,9 +384,7 @@ public class ManualGrPutInController {
barcode
.
setOrderItemId
(
""
);
barcode
.
setOrderItemId
(
""
);
barcode
.
setOut
(
false
);
barcode
.
setOut
(
false
);
barcode
=
barcodeManager
.
save
(
barcode
);
barcode
=
barcodeManager
.
save
(
barcode
);
BoxHandleUtil
.
manualGenerateTask
(
barcode
,
OP_STATUS
.
CANCEL
.
name
(),
barcode
.
getAmount
(),
OP
.
CHECKOUT
,
orderItemId
,
""
);
BoxHandleUtil
.
manualGenerateTask
(
barcode
,
OP_STATUS
.
CANCEL
.
name
(),
barcode
.
getAmount
(),
OP
.
CHECKOUT
,
orderItemId
,
""
);
}
}
newSubCodeList
.
add
(
barcode
);
newSubCodeList
.
add
(
barcode
);
}
}
...
@@ -389,6 +393,13 @@ public class ManualGrPutInController {
...
@@ -389,6 +393,13 @@ public class ManualGrPutInController {
boxBarcode
.
setSubCodeList
(
newSubCodeList
);
boxBarcode
.
setSubCodeList
(
newSubCodeList
);
boxBarcode
=
barcodeManager
.
save
(
boxBarcode
);
boxBarcode
=
barcodeManager
.
save
(
boxBarcode
);
//同时更新pos表
StoragePos
storagePos
=
BoxHandleUtil
.
locOnePos
(
boxBarcode
);
if
(
storagePos
!=
null
){
storagePos
.
setBarcode
(
boxBarcode
);
storagePosManager
.
save
(
storagePos
);
}
//1.判断是否有正在入库的任务
//1.判断是否有正在入库的任务
for
(
DataLog
dataLog
:
taskService
.
getAllTasks
())
{
for
(
DataLog
dataLog
:
taskService
.
getAllTasks
())
{
...
...
src/main/java/com/neotel/smfcore/custom/luxsan/factory_c/third/ManualLineController.java
查看文件 @
c14cd7d
...
@@ -14,6 +14,7 @@ import com.neotel.smfcore.core.storage.service.po.Storage;
...
@@ -14,6 +14,7 @@ import com.neotel.smfcore.core.storage.service.po.Storage;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.custom.lizhen.agvBox.util.BoxUtil
;
import
com.neotel.smfcore.custom.luxsan.factory_c.common.util.CacheNameUtil
;
import
com.neotel.smfcore.custom.luxsan.factory_c.common.util.CacheNameUtil
;
import
com.neotel.smfcore.custom.luxsan.factory_c.rawstor.kafka.service.KafkaService
;
import
com.neotel.smfcore.custom.luxsan.factory_c.rawstor.kafka.service.KafkaService
;
import
com.neotel.smfcore.custom.luxsan.factory_c.rawstor.util.BoxHandleUtil
;
import
com.neotel.smfcore.custom.luxsan.factory_c.rawstor.util.BoxHandleUtil
;
...
@@ -135,6 +136,11 @@ public class ManualLineController {
...
@@ -135,6 +136,11 @@ public class ManualLineController {
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.error.barcode.invalid"
,
"条码无效"
);
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.error.barcode.invalid"
,
"条码无效"
);
}
}
boolean
finished
=
BoxUtil
.
isInventoryFinished
(
boxBarcode
.
getBarcode
());
if
(!
finished
)
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
boxStr
+
"盘点未完成,请继续盘点"
);
}
//1.清理要出库的数据
//1.清理要出库的数据
List
<
Barcode
>
newSubCodeList
=
new
ArrayList
<>();
List
<
Barcode
>
newSubCodeList
=
new
ArrayList
<>();
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论