Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 032cf221
由
LN
编写于
2023-08-24 13:49:18 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1.页面显示修改:未显示物料类型。
2.麦康尼料仓入库时API002发送错误修改
1 个父辈
785cb4b7
显示空白字符变更
内嵌
并排
正在显示
14 个修改的文件
包含
308 行增加
和
118 行删除
src/main/java/com/neotel/smfcore/common/utils/HttpHelper.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/ThirdBoxHandler.java
src/main/java/com/neotel/smfcore/core/inList/service/po/InListItem.java
src/main/java/com/neotel/smfcore/core/language/util/LanguageMsgService.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/core/storage/service/manager/IStoragePosManager.java
src/main/java/com/neotel/smfcore/core/storage/service/manager/impl/StoragePosManagerImpl.java
src/main/java/com/neotel/smfcore/custom/micron1053/api/MicronApi.java
src/main/java/com/neotel/smfcore/custom/micron1053/loading/LoadingController.java
src/main/java/com/neotel/smfcore/custom/micron1053/loading/util/LoadingUtil.java
src/main/java/com/neotel/smfcore/custom/micron1053/task/MicronDispatchController.java
src/main/java/com/neotel/smfcore/custom/micron1053/task/MicronPreTaskController.java
src/main/java/com/neotel/smfcore/custom/micron1053/task/bean/dto/ItemDetialDto.java
修改记录.txt
src/main/java/com/neotel/smfcore/common/utils/HttpHelper.java
查看文件 @
032cf22
...
@@ -286,6 +286,8 @@ public class HttpHelper {
...
@@ -286,6 +286,8 @@ public class HttpHelper {
// }
// }
try
{
try
{
CloseableHttpClient
httpClient
=
HttpClients
.
createDefault
();
CloseableHttpClient
httpClient
=
HttpClients
.
createDefault
();
RequestConfig
requestConfig
=
RequestConfig
.
custom
().
setConnectTimeout
(
CONNECTION_TIMEOUT
).
setConnectionRequestTimeout
(
10000
).
setSocketTimeout
(
5000
).
build
();
httpGet
.
setConfig
(
requestConfig
);
CloseableHttpResponse
response
=
httpClient
.
execute
(
httpGet
);
CloseableHttpResponse
response
=
httpClient
.
execute
(
httpGet
);
int
code
=
response
.
getStatusLine
().
getStatusCode
();
int
code
=
response
.
getStatusLine
().
getStatusCode
();
...
@@ -328,6 +330,8 @@ public class HttpHelper {
...
@@ -328,6 +330,8 @@ public class HttpHelper {
}
}
try
{
try
{
CloseableHttpClient
httpClient
=
HttpClients
.
createDefault
();
CloseableHttpClient
httpClient
=
HttpClients
.
createDefault
();
RequestConfig
requestConfig
=
RequestConfig
.
custom
().
setConnectTimeout
(
CONNECTION_TIMEOUT
).
setConnectionRequestTimeout
(
10000
).
setSocketTimeout
(
5000
).
build
();
httpPost
.
setConfig
(
requestConfig
);
CloseableHttpResponse
response
=
httpClient
.
execute
(
httpPost
);
CloseableHttpResponse
response
=
httpClient
.
execute
(
httpPost
);
HttpEntity
entity
=
response
.
getEntity
();
HttpEntity
entity
=
response
.
getEntity
();
String
responseContent
=
EntityUtils
.
toString
(
entity
,
CONTENT_CHARSET
);
String
responseContent
=
EntityUtils
.
toString
(
entity
,
CONTENT_CHARSET
);
...
...
src/main/java/com/neotel/smfcore/core/device/handler/impl/ThirdBoxHandler.java
查看文件 @
032cf22
...
@@ -318,11 +318,14 @@ public class ThirdBoxHandler extends BaseDeviceHandler{
...
@@ -318,11 +318,14 @@ public class ThirdBoxHandler extends BaseDeviceHandler{
DataLog
task
=
taskService
.
findExecutingTask
(
cid
,
posName
,
barcode
);
DataLog
task
=
taskService
.
findExecutingTask
(
cid
,
posName
,
barcode
);
if
(
task
!=
null
&&
task
.
isPutInTask
())
{
if
(
task
!=
null
&&
task
.
isPutInTask
())
{
String
oldPosName
=
task
.
getPosName
();
String
oldPosId
=
task
.
getPosId
();
//对比容量,更新库位号
//对比容量,更新库位号
StoragePos
newPos
=
UsePosProcess
(
task
,
posCapMap
);
StoragePos
newPos
=
UsePosProcess
(
task
,
posCapMap
);
if
(
newPos
!=
null
){
if
(
newPos
!=
null
){
log
.
error
(
cid
+
"入仓位["
+
posName
+
"]ReelId["
+
barcode
+
"]
更改库位号为["
+
newPos
.
getPosName
()+
"]"
);
log
.
error
(
cid
+
"入仓位["
+
posName
+
"]ReelId["
+
barcode
+
"]
原来库位["
+
oldPosId
+
"]["
+
oldPosName
+
"], 更改库位号为["
+
newPos
.
getPosName
()+
"],posId=["
+
newPos
.
getId
()+
"]"
);
task
.
setPosName
(
newPos
.
getPosName
());
task
.
setPosName
(
newPos
.
getPosName
());
task
.
setPosId
(
newPos
.
getId
());
}
}
if
(
executeTime
>
0
)
{
if
(
executeTime
>
0
)
{
task
.
setExecuteTime
(
executeTime
);
task
.
setExecuteTime
(
executeTime
);
...
...
src/main/java/com/neotel/smfcore/core/inList/service/po/InListItem.java
查看文件 @
032cf22
...
@@ -26,7 +26,7 @@ public class InListItem extends BasePo implements Serializable {
...
@@ -26,7 +26,7 @@ public class InListItem extends BasePo implements Serializable {
item
.
setNum
(
num
);
item
.
setNum
(
num
);
return
item
;
return
item
;
}
}
public
static
InListItem
newMItem
(
String
name
,
Barcode
barcode
,
String
rfid
,
String
posName
,
int
s
){
public
static
InListItem
newMItem
(
String
name
,
Barcode
barcode
,
String
rfid
,
String
posName
,
int
s
,
String
mType
){
InListItem
item
=
new
InListItem
();
InListItem
item
=
new
InListItem
();
item
.
setName
(
name
);
item
.
setName
(
name
);
item
.
setPN
(
barcode
.
getPartNumber
());
item
.
setPN
(
barcode
.
getPartNumber
());
...
@@ -34,6 +34,7 @@ public class InListItem extends BasePo implements Serializable {
...
@@ -34,6 +34,7 @@ public class InListItem extends BasePo implements Serializable {
item
.
setRfid
(
rfid
);
item
.
setRfid
(
rfid
);
item
.
setPosName
(
posName
);
item
.
setPosName
(
posName
);
item
.
setState
(
s
);
item
.
setState
(
s
);
item
.
setMType
(
mType
);
return
item
;
return
item
;
}
}
/**
/**
...
...
src/main/java/com/neotel/smfcore/core/language/util/LanguageMsgService.java
查看文件 @
032cf22
...
@@ -331,8 +331,14 @@ public class LanguageMsgService {
...
@@ -331,8 +331,14 @@ public class LanguageMsgService {
newLanguageList
.
add
(
msg
);
newLanguageList
.
add
(
msg
);
}
else
{
}
else
{
boolean
isUpdate
=
false
;
boolean
isUpdate
=
false
;
boolean
needUpdate
=
false
;
if
(!
oldMsg
.
getEdited
()){
if
(!
oldMsg
.
getEdited
()){
isNeedUpdate
=
true
;
needUpdate
=
true
;
}
if
(
isNeedUpdate
){
needUpdate
=
true
;
}
}
//只新增不修改
//只新增不修改
List
<
String
>
allLanList
=
getAllLanList
();
List
<
String
>
allLanList
=
getAllLanList
();
...
@@ -340,7 +346,7 @@ public class LanguageMsgService {
...
@@ -340,7 +346,7 @@ public class LanguageMsgService {
String
oldValue
=
oldMsg
.
getContent
(
lanType
);
String
oldValue
=
oldMsg
.
getContent
(
lanType
);
String
newValue
=
msg
.
getContent
(
lanType
);
String
newValue
=
msg
.
getContent
(
lanType
);
if
(
ObjectUtil
.
isNotEmpty
(
newValue
))
{
if
(
ObjectUtil
.
isNotEmpty
(
newValue
))
{
if
(
ObjectUtil
.
isEmpty
(
oldValue
)||(
isN
eedUpdate
&&(!
newValue
.
equals
(
oldValue
)))
)
{
if
(
ObjectUtil
.
isEmpty
(
oldValue
)||(
n
eedUpdate
&&(!
newValue
.
equals
(
oldValue
)))
)
{
oldMsg
.
setContent
(
lanType
,
newValue
);
oldMsg
.
setContent
(
lanType
,
newValue
);
isUpdate
=
true
;
isUpdate
=
true
;
//内容默认更改为中文
//内容默认更改为中文
...
...
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
032cf22
...
@@ -30,7 +30,9 @@ import com.neotel.smfcore.core.system.service.po.DataLog;
...
@@ -30,7 +30,9 @@ import com.neotel.smfcore.core.system.service.po.DataLog;
import
com.neotel.smfcore.core.system.util.DevicesStatusUtil
;
import
com.neotel.smfcore.core.system.util.DevicesStatusUtil
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.custom.micron1053.api.MicronApi
;
import
com.neotel.smfcore.custom.micron1053.api.MicronApi
;
import
com.neotel.smfcore.custom.micron1053.api.bean.Material
;
import
com.neotel.smfcore.custom.micron1053.api.bean.MaterialStatus
;
import
com.neotel.smfcore.custom.micron1053.api.bean.MaterialStatus
;
import
com.neotel.smfcore.custom.micron1053.api.bean.TrackStatus
;
import
com.neotel.smfcore.custom.micron1053.task.enums.OrderItemStatus
;
import
com.neotel.smfcore.custom.micron1053.task.enums.OrderItemStatus
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
@@ -40,6 +42,7 @@ import org.springframework.stereotype.Service;
...
@@ -40,6 +42,7 @@ import org.springframework.stereotype.Service;
import
java.util.*
;
import
java.util.*
;
import
java.util.concurrent.ConcurrentHashMap
;
import
java.util.concurrent.ConcurrentHashMap
;
import
java.util.stream.Collectors
;
/**
/**
* Created by sunke on 2021/7/12.
* Created by sunke on 2021/7/12.
...
@@ -343,7 +346,7 @@ public class LiteOrderCache {
...
@@ -343,7 +346,7 @@ public class LiteOrderCache {
//先改为单盘上传
//先改为单盘上传
List
<
DataLog
>
dataLogList
=
dataLogManager
.
findByQuery
(
new
Query
(
Criteria
.
where
(
"subSourceId"
).
in
(
itemIdList
)));
List
<
DataLog
>
dataLogList
=
dataLogManager
.
findByQuery
(
new
Query
(
Criteria
.
where
(
"subSourceId"
).
in
(
itemIdList
)));
if
(
dataLogList
!=
null
&&
!
dataLogList
.
isEmpty
())
{
if
(
dataLogList
!=
null
&&
!
dataLogList
.
isEmpty
())
{
boolean
isSuccess
=
MicronApi
.
Api007
(
order
.
getOrderNo
(),
order
.
getId
(),
dataLogList
);
boolean
isSuccess
=
MicronApi
.
Api007
(
order
.
getOrderNo
(),
task
.
getLocInfo
(),
dataLogList
);
for
(
LiteOrderItem
item
:
items
)
{
for
(
LiteOrderItem
item
:
items
)
{
if
(
itemIdList
.
contains
(
item
.
getId
()))
{
if
(
itemIdList
.
contains
(
item
.
getId
()))
{
if
(
isSuccess
)
{
if
(
isSuccess
)
{
...
@@ -820,6 +823,83 @@ public class LiteOrderCache {
...
@@ -820,6 +823,83 @@ public class LiteOrderCache {
}
}
public
synchronized
void
preTaskCheckOut
(
LiteOrder
order
,
String
operationId
,
List
<
Material
>
materialList
)
{
order
.
setStatus
(
LITEORDER_STATUS
.
TAILS
);
order
.
setTaskReelCount
(
0
);
order
.
setFinishedReelCount
(
0
);
log
.
info
(
"preTaskCheckOut 出库单["
+
order
.
getOrderNo
()
+
"] operatetionId ["
+
order
.
getOperationId
()
+
"]开始出库"
);
int
taskReelCount
=
0
;
//提取barcode
List
<
String
>
barcodeList
=
materialList
.
stream
().
map
(
item
->
item
.
getSerialNum
()).
collect
(
Collectors
.
toList
());
List
<
StoragePos
>
storagePosList
=
storagePosManager
.
findByQuery
(
new
Query
(
Criteria
.
where
(
"barcode.barcode"
).
in
(
barcodeList
)));
if
(
storagePosList
!=
null
&&
!
storagePosList
.
isEmpty
())
{
materialList
=
storagePosList
.
stream
().
map
(
item
->
{
Material
material
=
new
Material
();
material
.
setSerialNum
(
item
.
getBarcode
().
getBarcode
());
material
.
setPartNumber
(
item
.
getBarcode
().
getPartNumber
());
return
material
;
}).
collect
(
Collectors
.
toList
());
//mes提前扣除,扣除成功的直接出库,失败的标记状态
List
<
TrackStatus
>
trackStatusList
=
MicronApi
.
Api010
(
operationId
,
materialList
);
if
(
trackStatusList
!=
null
&&
!
trackStatusList
.
isEmpty
())
{
for
(
LiteOrderItem
orderItem
:
order
.
getOrderItems
())
{
String
ri
=
orderItem
.
getRi
();
//判断是否缺料
StoragePos
storagePos
=
storagePosList
.
stream
().
filter
(
pos
->
pos
.
getBarcode
().
equals
(
ri
)).
findFirst
().
orElse
(
null
);
if
(
storagePos
==
null
)
{
//缺料
orderItem
.
setStatus
(
OrderItemStatus
.
shortage
);
}
else
{
TrackStatus
trackStatus
=
trackStatusList
.
stream
().
filter
(
item
->
ri
.
equals
(
item
.
getSerialNum
())).
findAny
().
orElse
(
null
);
if
(
trackStatus
!=
null
)
{
if
(
trackStatus
.
isSuccess
())
{
// StoragePos pos = storagePosManager.getByBarcode(ri);
/*if (pos == null) {
orderItem.setStatus(OrderItemStatus.shortage);
continue;
}*/
//生成任务
DataLog
dataLog
=
new
DataLog
(
dataCache
.
getStorageById
(
storagePos
.
getStorageId
()),
storagePos
.
getBarcode
(),
storagePos
);
dataLog
.
setType
(
OP
.
CHECKOUT
);
dataLog
.
setSourceId
(
order
.
getId
());
dataLog
.
setSourceName
(
order
.
getOrderNo
());
dataLog
.
setSubSourceId
(
orderItem
.
getId
());
dataLog
.
setStatus
(
OP_STATUS
.
WAIT
.
name
());
dataLog
.
setOperationId
(
operationId
);
taskService
.
addTaskToExecute
(
dataLog
);
taskReelCount
++;
//设置状态.正在出库
orderItem
.
setStatus
(
OrderItemStatus
.
executing
);
log
.
info
(
"preTaskCheckOut 出库单["
+
order
.
getOrderNo
()+
"] operatetionId ["
+
order
.
getOperationId
()+
"] ,pn["
+
orderItem
.
getPn
()+
"] ,RI["
+
ri
+
"] 验证成功,开始出库,累计出库盘数="
+
taskReelCount
);
}
else
{
//标记状态为mes扣除失败
orderItem
.
setStatus
(
OrderItemStatus
.
executFail
);
log
.
info
(
"preTaskCheckOut 出库单["
+
order
.
getOrderNo
()+
"] operatetionId ["
+
order
.
getOperationId
()+
"] ,pn["
+
orderItem
.
getPn
()+
"] ,RI["
+
ri
+
"] 验证失败,更改状态=executFail"
);
}
}
}
liteOrderItemManager
.
save
(
orderItem
);
}
}
}
log
.
info
(
"preTaskCheckOut 出库单["
+
order
.
getOrderNo
()+
"] operatetionId ["
+
order
.
getOperationId
()+
"] 出库完成,累计任务数="
+
taskReelCount
);
order
.
setTaskReelCount
(
taskReelCount
);
order
.
setTotalTaskReelCount
(
order
.
getTotalTaskReelCount
()
+
taskReelCount
);
if
(
taskReelCount
<=
0
)
{
if
(
order
.
isOutTails
())
{
order
.
setStatus
(
LITEORDER_STATUS
.
TAILS_FINISHED
);
}
//liteOrderCache.finishedOrderTasks(order);
}
liteOrderManager
.
save
(
order
);
addOrderToMap
(
order
);
}
/**
/**
* 工单挑料,OutSide Shelf Dispatch Controlled Dispatch
* 工单挑料,OutSide Shelf Dispatch Controlled Dispatch
...
@@ -968,22 +1048,31 @@ public class LiteOrderCache {
...
@@ -968,22 +1048,31 @@ public class LiteOrderCache {
for
(
LiteOrderItem
item
:
for
(
LiteOrderItem
item
:
newItems
)
{
newItems
)
{
item
.
setOutNum
(
0
);
item
.
setOutNum
(
0
);
item
.
setOutReelCount
(
0
);
int
outNum
=
0
;
int
outReelCount
=
0
;
for
(
LiteOrderItem
reelItem
:
for
(
LiteOrderItem
reelItem
:
item
.
getSelectItems
())
{
item
.
getSelectItems
())
{
MaterialStatus
s
=
apiResultMap
.
get
(
reelItem
.
getRi
());
MaterialStatus
s
=
apiResultMap
.
get
(
reelItem
.
getRi
());
if
(
s
.
getMaterialStatus
().
toUpperCase
().
equalsIgnoreCase
(
"SUCCESS"
))
{
if
(
s
.
getMaterialStatus
().
toUpperCase
().
equalsIgnoreCase
(
"SUCCESS"
))
{
reelItem
.
setStatus
(
OrderItemStatus
.
CheckOk
);
reelItem
.
setStatus
(
OrderItemStatus
.
CheckOk
);
StoragePos
pos
=
storagePosManager
.
getByBarcode
(
s
.
getSerialNum
());
StoragePos
pos
=
storagePosManager
.
getByBarcode
(
s
.
getSerialNum
());
log
.
info
(
"工单【"
+
orderNo
+
"】PN ["
+
item
.
getPn
()
+
"] RI ["
+
item
.
getRi
()
+
"] API009 验证成功,更改状态为 CheckOk ,锁定库位【"
+
pos
.
getPosName
()+
"】"
);
log
.
info
(
"工单【"
+
orderNo
+
"】PN ["
+
item
.
getPn
()
+
"] RI ["
+
item
.
getRi
()
+
"] API009 验证成功,更改状态为 CheckOk ,锁定库位【"
+
pos
.
getPosName
()
+
"】"
);
lockPos
.
add
(
pos
);
item
.
setOutNum
(
item
.
getOutNum
()+
pos
.
getBarcode
().
getAmount
());
pos
.
getBarcode
().
setLockId
(
cacheOrder
.
getOrderNo
());
pos
.
getBarcode
().
setLockName
(
item
.
getPn
());
storagePosManager
.
save
(
pos
);
outNum
+=
pos
.
getBarcode
().
getAmount
();
outReelCount
+=
1
;
}
else
{
}
else
{
reelItem
.
setStatus
(
OrderItemStatus
.
CheckFail
);
reelItem
.
setStatus
(
OrderItemStatus
.
CheckFail
);
log
.
info
(
"工单【"
+
orderNo
+
"】PN ["
+
item
.
getPn
()
+
"] RI ["
+
item
.
getRi
()
+
"] API009 验证失败,更改状态为 CheckFail"
);
log
.
info
(
"工单【"
+
orderNo
+
"】PN ["
+
item
.
getPn
()
+
"] RI ["
+
item
.
getRi
()
+
"] API009 验证失败,更改状态为 CheckFail"
);
}
}
}
}
item
.
setOutNum
(
outNum
);
item
.
setOutReelCount
(
outReelCount
);
liteOrderItemManager
.
save
(
item
);
liteOrderItemManager
.
save
(
item
);
}
}
...
@@ -1009,4 +1098,98 @@ public class LiteOrderCache {
...
@@ -1009,4 +1098,98 @@ public class LiteOrderCache {
}
}
return
""
;
return
""
;
}
}
public
synchronized
void
dispatchCheckOut
(
LiteOrder
order
)
{
order
.
setStatus
(
LITEORDER_STATUS
.
TAILS
);
order
.
setTaskReelCount
(
0
);
order
.
setFinishedReelCount
(
0
);
log
.
info
(
"dispatchCheckOut 出库单["
+
order
.
getOrderNo
()
+
"] operatetionId ["
+
order
.
getOperationId
()
+
"]开始出库"
);
int
taskReelCount
=
0
;
List
<
String
>
needOutBarcode
=
new
ArrayList
<>();
for
(
LiteOrderItem
item
:
order
.
getOrderItems
())
{
for
(
LiteOrderItem
selItem
:
item
.
getSelectItems
())
{
if
(
selItem
.
getStatus
().
equals
(
OrderItemStatus
.
CheckOk
))
{
//只出checkOK的
needOutBarcode
.
add
(
selItem
.
getRi
());
}
}
}
List
<
StoragePos
>
storagePosList
=
storagePosManager
.
findByQuery
(
new
Query
(
Criteria
.
where
(
"barcode.barcode"
).
in
(
needOutBarcode
)));
List
<
Material
>
materialList
=
new
ArrayList
<>();
if
(
storagePosList
!=
null
&&
!
storagePosList
.
isEmpty
())
{
materialList
=
storagePosList
.
stream
().
map
(
item
->
{
Material
material
=
new
Material
();
material
.
setSerialNum
(
item
.
getBarcode
().
getBarcode
());
material
.
setPartNumber
(
item
.
getBarcode
().
getPartNumber
());
return
material
;
}).
collect
(
Collectors
.
toList
());
//mes提前扣除,扣除成功的直接出库,失败的标记状态
List
<
TrackStatus
>
trackStatusList
=
MicronApi
.
Api010
(
order
.
getOperationId
(),
materialList
);
if
(
trackStatusList
!=
null
&&
!
trackStatusList
.
isEmpty
())
{
for
(
LiteOrderItem
orderItem
:
order
.
getOrderItems
())
{
int
outNum
=
0
;
int
outReelCount
=
0
;
List
<
LiteOrderItem
>
newSelItems
=
new
ArrayList
<>();
for
(
LiteOrderItem
selItem
:
orderItem
.
getSelectItems
())
{
String
ri
=
selItem
.
getRi
();
StoragePos
storagePos
=
storagePosList
.
stream
().
filter
(
pos
->
pos
.
getBarcode
().
equals
(
ri
)).
findFirst
().
orElse
(
null
);
TrackStatus
trackStatus
=
trackStatusList
.
stream
().
filter
(
item
->
ri
.
equals
(
item
.
getSerialNum
())).
findAny
().
orElse
(
null
);
boolean
sucess
=
false
;
if
(
trackStatus
!=
null
&&
trackStatus
.
isSuccess
())
{
sucess
=
true
;
DataLog
dataLog
=
new
DataLog
(
dataCache
.
getStorageById
(
storagePos
.
getStorageId
()),
storagePos
.
getBarcode
(),
storagePos
);
dataLog
.
setType
(
OP
.
CHECKOUT
);
dataLog
.
setSourceId
(
order
.
getId
());
dataLog
.
setSourceName
(
order
.
getOrderNo
());
dataLog
.
setSubSourceId
(
orderItem
.
getId
());
dataLog
.
setStatus
(
OP_STATUS
.
WAIT
.
name
());
dataLog
.
setOperationId
(
order
.
getOperationId
());
taskService
.
addTaskToExecute
(
dataLog
);
taskReelCount
++;
//设置状态.正在出库
selItem
.
setStatus
(
OrderItemStatus
.
executing
);
outNum
+=
storagePos
.
getBarcode
().
getAmount
();
outReelCount
+=
1
;
log
.
info
(
"dispatchCheckOut 出库单["
+
order
.
getOrderNo
()
+
"] operatetionId ["
+
order
.
getOperationId
()
+
"] ,pn["
+
orderItem
.
getPn
()
+
"] ,RI["
+
ri
+
"] 验证成功,开始出库,累计出库盘数="
+
taskReelCount
);
}
else
{
selItem
.
setStatus
(
OrderItemStatus
.
executFail
);
log
.
info
(
"dispatchCheckOut 出库单["
+
order
.
getOrderNo
()
+
"] operatetionId ["
+
order
.
getOperationId
()
+
"] ,pn["
+
orderItem
.
getPn
()
+
"] ,RI["
+
ri
+
"] 验证失败,更改状态=executFail"
);
}
newSelItems
.
add
(
selItem
);
}
orderItem
.
setSelectItems
(
newSelItems
);
orderItem
.
setOutNum
(
outNum
);
orderItem
.
setOutReelCount
(
outReelCount
);
liteOrderItemManager
.
save
(
orderItem
);
}
}
}
log
.
info
(
"dispatchCheckOut 出库单["
+
order
.
getOrderNo
()
+
"] operatetionId ["
+
order
.
getOperationId
()
+
"] 出库完成,累计任务数="
+
taskReelCount
);
order
.
setTaskReelCount
(
taskReelCount
);
order
.
setTotalTaskReelCount
(
order
.
getTotalTaskReelCount
()
+
taskReelCount
);
if
(
taskReelCount
<=
0
)
{
if
(
order
.
isOutTails
())
{
order
.
setStatus
(
LITEORDER_STATUS
.
TAILS_FINISHED
);
}
//liteOrderCache.finishedOrderTasks(order);
}
liteOrderManager
.
save
(
order
);
addOrderToMap
(
order
);
}
}
}
src/main/java/com/neotel/smfcore/core/storage/service/manager/IStoragePosManager.java
查看文件 @
032cf22
...
@@ -85,4 +85,7 @@ public interface IStoragePosManager extends IBaseManager<StoragePos> {
...
@@ -85,4 +85,7 @@ public interface IStoragePosManager extends IBaseManager<StoragePos> {
List
<
StoragePos
>
findExpiredOrSluggishBarcode
(
Date
date
,
int
type
);
List
<
StoragePos
>
findExpiredOrSluggishBarcode
(
Date
date
,
int
type
);
List
<
StoragePos
>
findExistPosList
(
String
id
,
List
<
String
>
list
);
List
<
StoragePos
>
findExistPosList
(
String
id
,
List
<
String
>
list
);
List
<
StoragePos
>
findInStoragesByPN
(
Collection
<
String
>
excludePosIds
,
String
pn
,
CHECKOUT_TYPE
checkOutType
);
}
}
src/main/java/com/neotel/smfcore/core/storage/service/manager/impl/StoragePosManagerImpl.java
查看文件 @
032cf22
...
@@ -814,4 +814,18 @@ public class StoragePosManagerImpl implements IStoragePosManager {
...
@@ -814,4 +814,18 @@ public class StoragePosManagerImpl implements IStoragePosManager {
Query
q
=
new
Query
(
c
);
Query
q
=
new
Query
(
c
);
return
storagePosDao
.
findByQuery
(
q
);
return
storagePosDao
.
findByQuery
(
q
);
}
}
@Override
public
List
<
StoragePos
>
findInStoragesByPN
(
Collection
<
String
>
excludePosIds
,
String
pn
,
CHECKOUT_TYPE
checkOutType
)
{
Criteria
c
=
Criteria
.
where
(
"barcode.partNumber"
).
is
(
pn
)
.
and
(
"id"
).
nin
(
excludePosIds
)
.
and
(
"enabled"
).
is
(
true
)
//可用
.
and
(
"barcode.lockId"
).
is
(
null
);
//没有被锁定的仓位;
Query
q
=
new
Query
(
c
);
Sort
sort
=
getSortByCheckOutType
(
checkOutType
);
q
.
with
(
sort
);
List
<
StoragePos
>
list
=
storagePosDao
.
findByQuery
(
q
);
return
list
;
}
}
}
src/main/java/com/neotel/smfcore/custom/micron1053/api/MicronApi.java
查看文件 @
032cf22
...
@@ -230,6 +230,7 @@ public class MicronApi {
...
@@ -230,6 +230,7 @@ public class MicronApi {
for
(
StoragePos
pos
:
for
(
StoragePos
pos
:
storagePos
)
{
storagePos
)
{
if
(
pos
.
getBarcode
()
==
null
)
{
if
(
pos
.
getBarcode
()
==
null
)
{
log
.
info
(
"API002 中,库位["
+
pos
.
getPosName
()+
"]barcode为空,不需要发送"
);
continue
;
continue
;
}
}
Map
<
String
,
Object
>
objMap
=
new
HashMap
<>();
Map
<
String
,
Object
>
objMap
=
new
HashMap
<>();
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/loading/LoadingController.java
查看文件 @
032cf22
...
@@ -79,9 +79,8 @@ public class LoadingController {
...
@@ -79,9 +79,8 @@ public class LoadingController {
dto
.
setFailure
(
dto
.
getFailure
()
+
1
);
dto
.
setFailure
(
dto
.
getFailure
()
+
1
);
}
else
if
(
item
.
isXray
())
{
}
else
if
(
item
.
isXray
())
{
dto
.
setXRay
(
dto
.
getXRay
()
+
1
);
dto
.
setXRay
(
dto
.
getXRay
()
+
1
);
dtoMap
.
put
(
dto
.
getMaterialType
(),
dto
);
}
}
dtoMap
.
put
(
dto
.
getMaterialType
(),
dto
);
}
}
List
<
MaterialLoadingDto
>
resultList
=
new
ArrayList
<
>();
List
<
MaterialLoadingDto
>
resultList
=
new
ArrayList
<
>();
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/loading/util/LoadingUtil.java
查看文件 @
032cf22
...
@@ -16,6 +16,7 @@ import com.neotel.smfcore.core.storage.service.po.StoragePos;
...
@@ -16,6 +16,7 @@ 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.custom.micron1053.api.MicronApi
;
import
com.neotel.smfcore.custom.micron1053.api.MicronApi
;
import
com.neotel.smfcore.custom.micron1053.loading.Bean.LoadingInfo
;
import
com.neotel.smfcore.custom.micron1053.loading.Bean.LoadingInfo
;
import
com.neotel.smfcore.custom.micron1053.util.MicronDataCache
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
@@ -66,9 +67,11 @@ public class LoadingUtil {
...
@@ -66,9 +67,11 @@ public class LoadingUtil {
inList
.
addRfid
(
rfid
);
inList
.
addRfid
(
rfid
);
inList
.
setStatus
(
INLIST_STATUS
.
ABNORMAL
);
inList
.
setStatus
(
INLIST_STATUS
.
ABNORMAL
);
log
.
info
(
"为入库单["
+
inList
.
getName
()+
"]增加一条入库信息:barcode["
+
barcode
.
getBarcode
()+
"],pn["
+
barcode
.
getPartNumber
()+
"],rfid["
+
rfid
+
"],posName["
+
posName
+
"],s["
+
s
+
"]"
);
String
mtype
=
MicronDataCache
.
GetReelType
(
barcode
.
getPlateSize
(),
barcode
.
getHeight
()
);
InListItem
item
=
InListItem
.
newMItem
(
inList
.
getName
(),
barcode
,
rfid
,
posName
,
s
);
log
.
info
(
"为入库单["
+
inList
.
getName
()+
"]增加一条入库信息:barcode["
+
barcode
.
getBarcode
()+
"],mtype["
+
mtype
+
"],pn["
+
barcode
.
getPartNumber
()+
"],rfid["
+
rfid
+
"],posName["
+
posName
+
"],s["
+
s
+
"]"
);
InListItem
item
=
InListItem
.
newMItem
(
inList
.
getName
(),
barcode
,
rfid
,
posName
,
s
,
mtype
);
if
(
inList
.
getEndRfidList
()!=
null
&&
inList
.
getEndRfidList
().
contains
(
rfid
)){
if
(
inList
.
getEndRfidList
()!=
null
&&
inList
.
getEndRfidList
().
contains
(
rfid
)){
item
.
setRfidEnd
(
true
);
item
.
setRfidEnd
(
true
);
}
}
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/task/MicronDispatchController.java
查看文件 @
032cf22
...
@@ -5,6 +5,7 @@ import com.neotel.smfcore.common.bean.ResultBean;
...
@@ -5,6 +5,7 @@ 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.FileUtil
;
import
com.neotel.smfcore.common.utils.FileUtil
;
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.inList.service.po.InListItem
;
import
com.neotel.smfcore.core.inList.service.po.InListItem
;
import
com.neotel.smfcore.core.order.LiteOrderCache
;
import
com.neotel.smfcore.core.order.LiteOrderCache
;
import
com.neotel.smfcore.core.order.enums.LITEORDER_STATUS
;
import
com.neotel.smfcore.core.order.enums.LITEORDER_STATUS
;
...
@@ -13,6 +14,7 @@ import com.neotel.smfcore.core.order.service.manager.ILiteOrderManager;
...
@@ -13,6 +14,7 @@ import com.neotel.smfcore.core.order.service.manager.ILiteOrderManager;
import
com.neotel.smfcore.core.order.service.po.LiteOrder
;
import
com.neotel.smfcore.core.order.service.po.LiteOrder
;
import
com.neotel.smfcore.core.order.service.po.LiteOrderItem
;
import
com.neotel.smfcore.core.order.service.po.LiteOrderItem
;
import
com.neotel.smfcore.core.order.util.OrderFileWatch
;
import
com.neotel.smfcore.core.order.util.OrderFileWatch
;
import
com.neotel.smfcore.core.storage.enums.CHECKOUT_TYPE
;
import
com.neotel.smfcore.core.storage.rest.dto.TacticsOutDto
;
import
com.neotel.smfcore.core.storage.rest.dto.TacticsOutDto
;
import
com.neotel.smfcore.core.storage.service.manager.IStoragePosManager
;
import
com.neotel.smfcore.core.storage.service.manager.IStoragePosManager
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
...
@@ -72,6 +74,8 @@ public class MicronDispatchController {
...
@@ -72,6 +74,8 @@ public class MicronDispatchController {
// }
// }
@Autowired
@Autowired
private
ILiteOrderManager
liteOrderManager
;
private
ILiteOrderManager
liteOrderManager
;
@Autowired
private
DataCache
dataCache
;
@Autowired
@Autowired
private
IDataLogManager
dataLogManager
;
private
IDataLogManager
dataLogManager
;
@Autowired
@Autowired
...
@@ -186,7 +190,7 @@ private IStoragePosManager storagePosManager;
...
@@ -186,7 +190,7 @@ private IStoragePosManager storagePosManager;
}
}
//生成工单
//生成工单
String
mode
=
"CTRLDISPATCH
"
;
String
mode
=
"CTRLDISPATCH"
;
//新增为一个工单
//新增为一个工单
String
orderName
=
""
;
String
orderName
=
""
;
...
@@ -241,11 +245,11 @@ private IStoragePosManager storagePosManager;
...
@@ -241,11 +245,11 @@ private IStoragePosManager storagePosManager;
@AnonymousAccess
@AnonymousAccess
public
ResultBean
itemDetial
(
@RequestBody
Map
<
String
,
Object
>
params
)
{
public
ResultBean
itemDetial
(
@RequestBody
Map
<
String
,
Object
>
params
)
{
String
mode
=
params
.
get
(
"mode"
).
toString
();
String
mode
=
params
.
get
(
"mode"
).
toString
();
String
itemId
=
params
.
get
(
"itemId"
).
toString
();
String
itemId
=
params
.
get
(
"itemId"
).
toString
();
log
.
info
(
" itemDetial :mode="
+
mode
+
", itemId="
+
itemId
);
log
.
info
(
" itemDetial :mode="
+
mode
+
", itemId="
+
itemId
);
//判断有没有生成任务
//判断有没有生成任务
LiteOrder
order
=
getOrderByMode
(
mode
);
LiteOrder
order
=
getOrderByMode
(
mode
);
if
(
order
==
null
)
{
if
(
order
==
null
)
{
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.micron.operationFailure"
,
"操作失败"
);
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.micron.operationFailure"
,
"操作失败"
);
}
}
...
@@ -254,18 +258,37 @@ private IStoragePosManager storagePosManager;
...
@@ -254,18 +258,37 @@ private IStoragePosManager storagePosManager;
.
filter
(
item
->
(
item
.
getId
().
equals
(
itemId
)))
.
filter
(
item
->
(
item
.
getId
().
equals
(
itemId
)))
.
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
toList
());
if
(
items
.
size
()<=
0
)
{
if
(
items
.
size
()
<=
0
)
{
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.micron.notFound"
,
"未找到数据"
);
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.micron.notFound"
,
"未找到数据"
);
}
}
Li
st
<
ItemDetialDto
>
detialDtos
=
new
ArrayList
<>(
);
Li
teOrderItem
selItem
=
items
.
get
(
0
);
for
(
LiteOrderItem
item
:
items
.
get
(
0
).
getSelectItems
()
List
<
ItemDetialDto
>
detialDtos
=
new
ArrayList
<>();
){
ItemDetialDto
dto
=
new
ItemDetialDto
(
item
.
getRi
(),
item
.
getNeedNum
(),
item
.
getStatus
());
for
(
LiteOrderItem
item
:
selItem
.
getSelectItems
()
)
{
ItemDetialDto
dto
=
new
ItemDetialDto
(
item
.
getRi
(),
item
.
getNeedNum
(),
item
.
getStatus
());
detialDtos
.
add
(
dto
);
detialDtos
.
add
(
dto
);
}
}
//判断是否需要勾选其他物料
if
(
selItem
.
getOutNum
()
<
selItem
.
getNeedNum
())
{
//需要勾选
CHECKOUT_TYPE
checkoutType
=
dataCache
.
getCheckOutType
();
List
<
String
>
availableStorageIds
=
dataCache
.
getAvailableStorageIds
();
Collection
<
String
>
excludePosIds
=
liteOrderCache
.
excludeOutPosIds
();
List
<
StoragePos
>
otherPosList
=
storagePosManager
.
findInStoragesByPN
(
excludePosIds
,
selItem
.
getPn
(),
checkoutType
);
for
(
StoragePos
pos
:
otherPosList
)
{
ItemDetialDto
dto
=
new
ItemDetialDto
(
pos
.
getBarcode
().
getBarcode
(),
pos
.
getBarcode
().
getAmount
(),
""
);
detialDtos
.
add
(
dto
);
}
}
//判断是否需要勾选
//判断是否需要勾选
return
ResultBean
.
newOkResult
(
detialDtos
);
return
ResultBean
.
newOkResult
(
detialDtos
);
...
@@ -297,14 +320,14 @@ private IStoragePosManager storagePosManager;
...
@@ -297,14 +320,14 @@ private IStoragePosManager storagePosManager;
}
}
for
(
LiteOrderItem
item
:
for
(
LiteOrderItem
item
:
items
)
{
items
)
{
if
(
item
.
getId
().
equals
(
itemId
)){
if
(
item
.
getId
().
equals
(
itemId
))
{
List
<
Barcode
>
allBarcodes
=
new
ArrayList
<>();
List
<
Barcode
>
allBarcodes
=
new
ArrayList
<>();
//查找到详情,循环RI,生成API009数据
//查找到详情,循环RI,生成API009数据
for
(
String
ri
:
for
(
String
ri
:
selectRiList
)
{
selectRiList
)
{
StoragePos
pos
=
storagePosManager
.
getByBarcode
(
ri
);
StoragePos
pos
=
storagePosManager
.
getByBarcode
(
ri
);
if
(
pos
!=
null
)
{
if
(
pos
!=
null
)
{
allBarcodes
.
add
(
pos
.
getBarcode
());
allBarcodes
.
add
(
pos
.
getBarcode
());
}
}
}
}
...
@@ -312,32 +335,46 @@ private IStoragePosManager storagePosManager;
...
@@ -312,32 +335,46 @@ private IStoragePosManager storagePosManager;
//调用API009
//调用API009
Map
<
String
,
MaterialStatus
>
apiResultMap
=
MicronApi
.
Api009
(
allBarcodes
);
Map
<
String
,
MaterialStatus
>
apiResultMap
=
MicronApi
.
Api009
(
allBarcodes
);
List
<
LiteOrderItem
>
selectReelItems
=
item
.
selectItems
;
List
<
StoragePos
>
lockPos
=
new
ArrayList
<>();
for
(
Barcode
barcode
:
for
(
Barcode
barcode
:
allBarcodes
)
{
allBarcodes
)
{
LiteOrderItem
reelItem
=
new
LiteOrderItem
()
;
LiteOrderItem
reelItem
=
new
LiteOrderItem
();
StoragePos
pos
=
storagePosManager
.
getByBarcode
(
barcode
.
getBarcode
());
reelItem
.
setRi
(
pos
.
getBarcode
().
getBarcode
());
reelItem
.
setNeedNum
(
pos
.
getBarcode
().
getAmount
());
MaterialStatus
s
=
apiResultMap
.
get
(
barcode
.
getBarcode
());
MaterialStatus
s
=
apiResultMap
.
get
(
barcode
.
getBarcode
());
if
(
s
.
getMaterialStatus
().
toUpperCase
().
equalsIgnoreCase
(
"SUCCESS"
))
{
if
(
s
.
getMaterialStatus
().
toUpperCase
().
equalsIgnoreCase
(
"SUCCESS"
))
{
reelItem
.
setStatus
(
OrderItemStatus
.
CheckOk
);
reelItem
.
setStatus
(
OrderItemStatus
.
CheckOk
);
StoragePos
pos
=
storagePosManager
.
getByBarcode
(
s
.
getSerialNum
());
log
.
info
(
"工单【"
+
order
.
getOrderNo
()
+
"】PN ["
+
item
.
getPn
()
+
"] RI ["
+
item
.
getRi
()
+
"] API009 验证成功,更改状态为 CheckOk ,锁定库位【"
+
pos
.
getPosName
()+
"】"
);
log
.
info
(
"工单【"
+
order
.
getOrderNo
()
+
"】PN ["
+
item
.
getPn
()
+
"] RI ["
+
item
.
getRi
()
+
"] API009 验证成功,更改状态为 CheckOk ,锁定库位【"
+
pos
.
getPosName
()
+
"】"
);
lockPos
.
add
(
pos
);
item
.
setOutNum
(
item
.
getOutNum
()+
pos
.
getBarcode
().
getAmount
());
//锁定物料
pos
.
getBarcode
().
setLockId
(
order
.
getOrderNo
());
pos
.
getBarcode
().
setLockName
(
item
.
getPn
());
storagePosManager
.
save
(
pos
);
item
.
setOutNum
(
item
.
getOutNum
()
+
pos
.
getBarcode
().
getAmount
());
item
.
setOutNum
(
item
.
getOutNum
()
+
pos
.
getBarcode
().
getAmount
());
}
else
{
}
else
{
reelItem
.
setStatus
(
OrderItemStatus
.
CheckFail
);
reelItem
.
setStatus
(
OrderItemStatus
.
CheckFail
);
log
.
info
(
"工单【"
+
order
.
getOrderNo
()
+
"】PN ["
+
item
.
getPn
()
+
"] RI ["
+
item
.
getRi
()
+
"] API009 验证失败,更改状态为 CheckFail"
);
log
.
info
(
"工单【"
+
order
.
getOrderNo
()
+
"】PN ["
+
item
.
getPn
()
+
"] RI ["
+
item
.
getRi
()
+
"] API009 验证失败,更改状态为 CheckFail"
);
}
}
selectReelItems
.
add
(
reelItem
);
}
}
item
.
setSelectItems
(
selectReelItems
);
liteOrderItemManager
.
save
(
item
);
liteOrderItemManager
.
save
(
item
);
}
}
}
}
//返回新增列表
//判断是否需要勾选
//判断是否需要勾选
return
ResultBean
.
newOkResult
(
""
);
return
ResultBean
.
newOkResult
(
""
);
}
}
...
@@ -349,18 +386,16 @@ private IStoragePosManager storagePosManager;
...
@@ -349,18 +386,16 @@ private IStoragePosManager storagePosManager;
@AnonymousAccess
@AnonymousAccess
public
ResultBean
checkOut
(
@RequestBody
Map
<
String
,
Object
>
params
)
{
public
ResultBean
checkOut
(
@RequestBody
Map
<
String
,
Object
>
params
)
{
String
mode
=
params
.
get
(
"mode"
).
toString
();
String
mode
=
params
.
get
(
"mode"
).
toString
();
//判断有没有生成任务
//判断有没有生成任务
LiteOrder
order
=
getOrderByMode
(
mode
);
LiteOrder
order
=
getOrderByMode
(
mode
);
if
(
order
==
null
)
{
if
(
order
==
null
)
{
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.micron.operationFailure"
,
"操作失败"
);
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.micron.operationFailure"
,
"操作失败"
);
}
}
//调用API010扣除库存,扣除成功的才可以出库
//调用API010扣除库存,扣除成功的才可以出库
liteOrderCache
.
dispatchCheckOut
(
order
);
//工单开始出库
//工单开始出库
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/task/MicronPreTaskController.java
查看文件 @
032cf22
...
@@ -200,7 +200,7 @@ public class MicronPreTaskController {
...
@@ -200,7 +200,7 @@ public class MicronPreTaskController {
liteOrderCache
.
addOrderToMap
(
liteOrder
);
liteOrderCache
.
addOrderToMap
(
liteOrder
);
log
.
info
(
"submit 勾选后,生成工单:["
+
operationId
+
"]["
+
mode
+
"]"
);
log
.
info
(
"submit 勾选后,生成工单:["
+
operationId
+
"]["
+
mode
+
"]"
);
//开始查询是否可以出库
//开始查询是否可以出库
c
heckOut
(
liteOrder
,
operationId
,
materialList
);
liteOrderCache
.
preTaskC
heckOut
(
liteOrder
,
operationId
,
materialList
);
}
}
return
ResultBean
.
newOkResult
(
""
);
return
ResultBean
.
newOkResult
(
""
);
}
}
...
@@ -347,79 +347,6 @@ public class MicronPreTaskController {
...
@@ -347,79 +347,6 @@ public class MicronPreTaskController {
dataCache
.
updateCache
(
key
,
""
);
dataCache
.
updateCache
(
key
,
""
);
}
}
public
synchronized
void
checkOut
(
LiteOrder
order
,
String
operationId
,
List
<
Material
>
materialList
)
{
order
.
setStatus
(
LITEORDER_STATUS
.
TAILS
);
order
.
setTaskReelCount
(
0
);
order
.
setFinishedReelCount
(
0
);
int
taskReelCount
=
0
;
//提取barcode
List
<
String
>
barcodeList
=
materialList
.
stream
().
map
(
item
->
item
.
getSerialNum
()).
collect
(
Collectors
.
toList
());
List
<
StoragePos
>
storagePosList
=
storagePosManager
.
findByQuery
(
new
Query
(
Criteria
.
where
(
"barcode.barcode"
).
in
(
barcodeList
)));
if
(
storagePosList
!=
null
&&
!
storagePosList
.
isEmpty
())
{
materialList
=
storagePosList
.
stream
().
map
(
item
->
{
Material
material
=
new
Material
();
material
.
setSerialNum
(
item
.
getBarcode
().
getBarcode
());
material
.
setPartNumber
(
item
.
getBarcode
().
getPartNumber
());
return
material
;
}).
collect
(
Collectors
.
toList
());
//mes提前扣除,扣除成功的直接出库,失败的标记状态
List
<
TrackStatus
>
trackStatusList
=
MicronApi
.
Api010
(
operationId
,
materialList
);
if
(
trackStatusList
!=
null
&&
!
trackStatusList
.
isEmpty
())
{
for
(
LiteOrderItem
orderItem
:
order
.
getOrderItems
())
{
String
ri
=
orderItem
.
getRi
();
//判断是否缺料
StoragePos
storagePos
=
storagePosList
.
stream
().
filter
(
pos
->
pos
.
getBarcode
().
equals
(
ri
)).
findFirst
().
orElse
(
null
);
if
(
storagePos
==
null
)
{
//缺料
orderItem
.
setStatus
(
OrderItemStatus
.
shortage
);
}
else
{
TrackStatus
trackStatus
=
trackStatusList
.
stream
().
filter
(
item
->
ri
.
equals
(
item
.
getSerialNum
())).
findAny
().
orElse
(
null
);
if
(
trackStatus
!=
null
)
{
if
(
trackStatus
.
isSuccess
())
{
// StoragePos pos = storagePosManager.getByBarcode(ri);
/*if (pos == null) {
orderItem.setStatus(OrderItemStatus.shortage);
continue;
}*/
//生成任务
DataLog
dataLog
=
new
DataLog
(
dataCache
.
getStorageById
(
storagePos
.
getStorageId
()),
storagePos
.
getBarcode
(),
storagePos
);
dataLog
.
setType
(
OP
.
CHECKOUT
);
dataLog
.
setSourceId
(
order
.
getId
());
dataLog
.
setSourceName
(
order
.
getOrderNo
());
dataLog
.
setSubSourceId
(
orderItem
.
getId
());
dataLog
.
setStatus
(
OP_STATUS
.
WAIT
.
name
());
dataLog
.
setOperationId
(
operationId
);
taskService
.
addTaskToExecute
(
dataLog
);
taskReelCount
++;
//设置状态.正在出库
orderItem
.
setStatus
(
OrderItemStatus
.
executing
);
}
else
{
//标记状态为mes扣除失败
orderItem
.
setStatus
(
OrderItemStatus
.
executFail
);
}
}
}
liteOrderItemManager
.
save
(
orderItem
);
}
}
}
order
.
setTaskReelCount
(
taskReelCount
);
order
.
setTotalTaskReelCount
(
order
.
getTotalTaskReelCount
()
+
taskReelCount
);
if
(
taskReelCount
<=
0
)
{
if
(
order
.
isOutTails
())
{
order
.
setStatus
(
LITEORDER_STATUS
.
TAILS_FINISHED
);
}
//liteOrderCache.finishedOrderTasks(order);
}
liteOrderManager
.
save
(
order
);
liteOrderCache
.
addOrderToMap
(
order
);
}
public
LiteOrder
getOrderByMode
(
String
mode
)
{
public
LiteOrder
getOrderByMode
(
String
mode
)
{
List
<
LiteOrderItem
>
itemList
=
new
ArrayList
<>();
List
<
LiteOrderItem
>
itemList
=
new
ArrayList
<>();
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/task/bean/dto/ItemDetialDto.java
查看文件 @
032cf22
...
@@ -16,10 +16,13 @@ public class ItemDetialDto implements Serializable {
...
@@ -16,10 +16,13 @@ public class ItemDetialDto implements Serializable {
@ApiModelProperty
(
"唯一码"
)
@ApiModelProperty
(
"唯一码"
)
private
String
ri
;
private
String
ri
;
@ApiModelProperty
(
"
需求
数量"
)
@ApiModelProperty
(
"数量"
)
private
int
needNum
=
0
;
private
int
needNum
=
0
;
/**
/**
* 工单明细出库状态
* 工单明细出库状态 ,
* 状态为空字符串时可以勾选,
* CheckOk 表示验证成功
* CheckFail 表示验证失败
*/
*/
private
String
status
;
private
String
status
=
""
;
}
}
修改记录.txt
查看文件 @
032cf22
...
@@ -55,3 +55,11 @@ POST
...
@@ -55,3 +55,11 @@ POST
/rest/micron/device/rfidPutInEnd
/rest/micron/device/rfidPutInEnd
RFID入库完成,参数:rfid
RFID入库完成,参数:rfid
RFID出库满离开时调用
POST
/rest/micron/device/rfidOutEnd
RFID入库完成,参数:rfid
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论