Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 7efbc373
由
zshaohui
编写于
2023-08-11 10:43:09 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
PCB,MCL,Line Prep出库
1 个父辈
33e5cc0f
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
14 个修改的文件
包含
231 行增加
和
43 行删除
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrder.java
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrderItem.java
src/main/java/com/neotel/smfcore/core/system/service/po/DataLog.java
src/main/java/com/neotel/smfcore/custom/micron1053/api/MicronApi.java
src/main/java/com/neotel/smfcore/custom/micron1053/api/MicronConfig.java
src/main/java/com/neotel/smfcore/custom/micron1053/api/bean/DispatchId.java
src/main/java/com/neotel/smfcore/custom/micron1053/api/bean/Material.java
src/main/java/com/neotel/smfcore/custom/micron1053/api/bean/TrackStatus.java
src/main/java/com/neotel/smfcore/custom/micron1053/task/MicronPreTaskController.java
src/main/java/com/neotel/smfcore/custom/micron1053/task/bean/PreTask.java
src/main/java/com/neotel/smfcore/custom/micron1053/task/bean/dto/TaskDto.java
src/main/java/com/neotel/smfcore/custom/micron1053/task/enums/OrderItemStatus.java
src/main/resources/config/application-prod.yml
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
7efbc37
...
...
@@ -25,11 +25,16 @@ import com.neotel.smfcore.core.storage.enums.CHECKOUT_TYPE;
import
com.neotel.smfcore.core.storage.service.manager.IStoragePosManager
;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.system.service.manager.IDataLogManager
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.core.system.util.DevicesStatusUtil
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.custom.micron1053.api.MicronApi
;
import
com.neotel.smfcore.custom.micron1053.task.enums.OrderItemStatus
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.stereotype.Service
;
import
java.util.*
;
...
...
@@ -59,6 +64,9 @@ public class LiteOrderCache {
@Autowired
private
SmfApi
smfApi
;
@Autowired
private
IDataLogManager
dataLogManager
;
/**
* 正在执行的liteOrderMap, key 为orderNo,value 为order
*/
...
...
@@ -256,10 +264,20 @@ public class LiteOrderCache {
//任务是取消的,需要将总待出库数量-1
if
(
task
.
isCancel
())
{
order
.
setTaskReelCount
(
order
.
getTaskReelCount
()
-
1
);
order
.
setTotalTaskReelCount
(
order
.
getTotalTaskReelCount
()
-
1
);
order
.
setTotalTaskReelCount
(
order
.
getTotalTaskReelCount
()
-
1
);
log
.
info
(
"工单["
+
orderNo
+
"]的任务"
+
task
.
getPartNumber
()
+
"["
+
task
.
getBarcode
()
+
"]已取消,任务数-1="
+
order
.
getFinishedReelCount
()
+
"/"
+
order
.
getTaskReelCount
());
checkoutAgain
(
task
,
order
);
List
<
LiteOrderItem
>
items
=
new
ArrayList
<>();
for
(
LiteOrderItem
orderItem
:
order
.
getOrderItems
())
{
if
(
orderItem
.
getId
().
equals
(
task
.
getSubSourceId
()))
{
orderItem
.
setStatus
(
OrderItemStatus
.
cancel
);
}
items
.
add
(
orderItem
);
}
order
.
setOrderItems
(
items
);
liteOrderManager
.
save
(
order
);
liteOrderMap
.
put
(
orderNo
,
order
);
checkoutAgain
(
task
,
order
);
}
else
if
(
task
.
isFinished
())
{
order
.
setFinishedReelCount
(
order
.
getFinishedReelCount
()
+
1
);
...
...
@@ -274,6 +292,15 @@ public class LiteOrderCache {
liteOrderItem
.
setOutReelCount
(
liteOrderItem
.
getOutReelCount
()
+
1
);
liteOrderItem
.
setTotalOutNum
(
liteOrderItem
.
getTotalOutNum
()+
task
.
getNum
());
liteOrderItem
.
setTotalOutReelCount
(
liteOrderItem
.
getTotalOutReelCount
()+
1
);
liteOrderItem
.
setStatus
(
task
.
getStatus
());
liteOrderItem
.
setLocInfo
(
task
.
getLocInfo
());
liteOrderItem
.
setStatus
(
OrderItemStatus
.
finish
);
//通知micron
/*boolean isSuccess = MicronApi.Api007(order.getOrderNo(), task.getId(), Arrays.asList(task));
if (!isSuccess){
liteOrderItem.setNotifySuccess(false);
}*/
liteOrderItem
=
liteOrderItemManager
.
save
(
liteOrderItem
);
// Barcode barcode = barcodeManager.findByBarcode(task.getBarcode());
// if (barcode != null) {
...
...
@@ -294,6 +321,35 @@ public class LiteOrderCache {
items
.
add
(
liteOrderItem
);
}
order
.
setOrderItems
(
items
);
//判断位置信息是否以"-"开头,如果是,则获取相同位置的orderItemId,进行通知
if
(
StringUtils
.
isNotBlank
(
task
.
getLocInfo
())
&&
task
.
getLocInfo
().
startsWith
(
"-"
))
{
String
locInfo
=
task
.
getLocInfo
();
List
<
String
>
itemIdList
=
new
ArrayList
<>();
for
(
LiteOrderItem
item
:
items
)
{
if
(
locInfo
.
contains
(
item
.
getLocInfo
()))
{
itemIdList
.
add
(
item
.
getId
());
}
}
List
<
DataLog
>
dataLogList
=
dataLogManager
.
findByQuery
(
new
Query
(
Criteria
.
where
(
"subSourceId"
).
in
(
itemIdList
)));
if
(
dataLogList
!=
null
&&
!
dataLogList
.
isEmpty
())
{
boolean
isSuccess
=
MicronApi
.
Api007
(
order
.
getOrderNo
(),
order
.
getId
(),
dataLogList
);
for
(
LiteOrderItem
item
:
items
)
{
if
(
itemIdList
.
contains
(
item
.
getId
()))
{
if
(
isSuccess
)
{
item
.
setStatus
(
OrderItemStatus
.
notify_success
);
}
else
{
item
.
setStatus
(
OrderItemStatus
.
notify_fail
);
}
}
liteOrderItemManager
.
save
(
item
);
}
order
.
setOrderItems
(
items
);
}
}
if
(!
order
.
isClosed
())
{
//工单未关闭的话,检查状态,全部都出完进行关闭
boolean
closed
=
true
;
...
...
@@ -737,4 +793,8 @@ public class LiteOrderCache {
return
count
;
}
public
Collection
<
LiteOrder
>
getAllLiteOrder
()
{
return
liteOrderMap
.
values
();
}
}
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrder.java
查看文件 @
7efbc37
...
...
@@ -99,6 +99,9 @@ public class LiteOrder extends BasePo implements Serializable {
*/
private
Date
sdate
=
new
Date
();
private
String
mode
;
public
void
setClosed
(
boolean
value
){
this
.
closed
=
value
;
if
(
value
){
...
...
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrderItem.java
查看文件 @
7efbc37
...
...
@@ -91,6 +91,20 @@ public class LiteOrderItem extends BasePo implements Serializable ,Comparable<Li
*/
private
String
mpn
=
""
;
/**
* 工单明细出库状态
*/
private
String
status
;
/**
* 位置信息
*/
private
String
locInfo
=
""
;
/**
* 类型
*/
private
String
mode
=
""
;
/**
* 自定义的附加字段,key=字段名,value=值
...
...
src/main/java/com/neotel/smfcore/core/system/service/po/DataLog.java
查看文件 @
7efbc37
...
...
@@ -243,6 +243,9 @@ public class DataLog extends BasePo implements Serializable ,Comparable<DataLog>
*/
private
Boolean
emptyOperate
;
private
String
operationId
;
public
String
getBarcode
()
{
if
(
barcode
==
null
){
return
""
;
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/api/MicronApi.java
查看文件 @
7efbc37
package
com
.
neotel
.
smfcore
.
custom
.
micron1053
.
api
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.alibaba.fastjson.JSONObject
;
import
com.neotel.smfcore.common.exception.ApiException
;
import
com.neotel.smfcore.common.utils.HttpHelper
;
import
com.neotel.smfcore.common.utils.JsonUtil
;
import
com.neotel.smfcore.core.api.listener.BaseSmfApiListener
;
import
com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.custom.micron1053.api.bean.DispatchId
;
import
com.neotel.smfcore.custom.micron1053.api.bean.Material
;
import
com.neotel.smfcore.custom.micron1053.api.bean.TrackStatus
;
import
com.neotel.smfcore.custom.micron1053.bean.MaterialInfo
;
import
com.neotel.smfcore.custom.micron1053.bean.MicronResult
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -38,6 +44,13 @@ public class MicronApi extends BaseSmfApiListener {
MicronApi
.
dataCache
=
cache
;
}
public
static
IBarcodeManager
barcodeManager
;
@Autowired
public
void
setBarcodeManager
(
IBarcodeManager
manager
){
MicronApi
.
barcodeManager
=
manager
;
}
@Override
public
boolean
isForThisApi
(
String
apiName
)
{
...
...
@@ -127,32 +140,36 @@ public class MicronApi extends BaseSmfApiListener {
}
public
static
boolean
Api004
(
String
operationId
)
{
public
static
List
<
DispatchId
>
Api004
(
String
operationId
)
{
String
url
=
config
.
getUrl
(
config
.
api_name_004
);
url
=
MessageFormat
.
format
(
url
,
operationId
);
url
=
MessageFormat
.
format
(
url
,
operationId
);
try
{
log
.
info
(
"调用MES接口 API004: url=["
+
url
+
"]"
);
MicronResult
result
=
HttpHelper
.
getMicronJson
(
url
);
}
catch
(
Exception
e
){
return
result
.
getResult
(
"dispatchIds"
);
}
catch
(
Exception
e
)
{
log
.
error
(
url
+
"出错"
,
e
);
}
return
false
;
return
null
;
}
public
static
boolean
Api005
(
String
linePrepOrderId
)
{
public
static
List
<
Material
>
Api005
(
String
operationId
,
String
linePrepOrderId
)
{
String
url
=
config
.
getUrl
(
config
.
api_name_005
);
url
=
MessageFormat
.
format
(
url
,
linePrepOrderId
);
url
=
MessageFormat
.
format
(
url
,
operationId
,
linePrepOrderId
);
List
<
Material
>
materialList
=
new
ArrayList
<>();
try
{
log
.
info
(
"调用MES接口 API005: url=["
+
url
+
"]"
);
MicronResult
result
=
HttpHelper
.
getMicronJson
(
url
);
materialList
=
result
.
getResult
(
"materials"
);
}
catch
(
Exception
e
)
{
log
.
error
(
url
+
"出错"
,
e
);
}
return
false
;
return
materialList
;
}
public
static
boolean
Api006
(
String
operationId
,
List
<
String
>
pretasks
)
{
public
static
List
<
Material
>
Api006
(
String
operationId
,
List
<
String
>
pretasks
)
{
/**
* {
* "operationId": <operationId>
...
...
@@ -164,24 +181,30 @@ public class MicronApi extends BaseSmfApiListener {
* ]
* }
*/
List
<
Material
>
materialList
=
new
ArrayList
<>();
String
url
=
config
.
getUrl
(
config
.
api_name_006
);
try
{
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
paramMap
.
put
(
"operationId"
,
operationId
);
paramMap
.
put
(
"pretasks"
,
pretasks
);
paramMap
.
put
(
"operationId"
,
operationId
);
paramMap
.
put
(
"pretasks"
,
pretasks
);
String
paramStr
=
JsonUtil
.
toJsonStr
(
paramMap
);
log
.
info
(
"调用MES接口 API006: url=["
+
url
+
"],body=["
+
paramStr
+
"]"
);
MicronResult
micronResult
=
HttpHelper
.
postMicronJson
(
url
,
paramMap
);
}
catch
(
Exception
e
){
String
responseData
=
micronResult
.
getResponseData
();
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
responseData
);
String
materials
=
jsonObject
.
getString
(
"materials"
);
materialList
=
JSONObject
.
parseArray
(
materials
,
Material
.
class
);
}
catch
(
Exception
e
)
{
log
.
error
(
url
+
"出错"
,
e
);
}
return
false
;
return
materialList
;
}
public
static
boolean
Api007
(
String
operationId
,
String
jobId
,
List
<
StoragePos
>
storagePos
List
)
{
public
static
boolean
Api007
(
String
operationId
,
String
jobId
,
List
<
DataLog
>
dataLog
List
)
{
String
url
=
config
.
getUrl
(
config
.
api_name_007
);
try
{
...
...
@@ -190,12 +213,16 @@ public class MicronApi extends BaseSmfApiListener {
paramMap
.
put
(
"operationId"
,
operationId
);
List
<
Map
<
String
,
Object
>>
materialList
=
new
ArrayList
<>();
for
(
StoragePos
storagePos
:
storagePos
List
)
{
for
(
DataLog
dataLog
:
dataLog
List
)
{
Map
<
String
,
Object
>
materialsMap
=
new
HashMap
<>();
materialsMap
.
put
(
"location"
,
storagePos
.
getPosName
());
materialsMap
.
put
(
"towerId"
,
storagePos
.
getStorageId
());
materialsMap
.
put
(
"location"
,
dataLog
.
getPosName
());
materialsMap
.
put
(
"towerId"
,
dataLog
.
getStorageId
());
materialsMap
.
put
(
"materialStatus"
,
"Available"
);
materialsMap
.
put
(
"material"
,
AMaterialBean
.
toBean
(
storagePos
.
getBarcode
()).
toMap
());
Barcode
barcode
=
barcodeManager
.
findByBarcode
(
dataLog
.
getBarcode
());
if
(
barcode
!=
null
)
{
materialsMap
.
put
(
"material"
,
AMaterialBean
.
toBean
(
barcode
).
toMap
());
}
materialList
.
add
(
materialsMap
);
}
...
...
@@ -205,7 +232,7 @@ public class MicronApi extends BaseSmfApiListener {
log
.
info
(
"调用MES接口 API007: url=["
+
url
+
"],body=["
+
paramStr
+
"]"
);
MicronResult
micronResult
=
HttpHelper
.
postMicronJson
(
url
,
paramMap
);
return
true
;
return
micronResult
.
getStatus
().
equals
(
"Success"
)
;
}
catch
(
ApiException
e
)
{
log
.
error
(
url
+
"出错"
,
e
);
}
...
...
@@ -261,31 +288,28 @@ public class MicronApi extends BaseSmfApiListener {
}
public
static
boolean
Api010
(
String
operationId
,
List
<
Barcode
>
barcodeList
)
{
public
static
List
<
TrackStatus
>
Api010
(
String
operationId
,
List
<
Material
>
materialList
)
{
List
<
TrackStatus
>
statusList
=
new
ArrayList
<>();
String
url
=
config
.
getUrl
(
config
.
api_name_010
);
try
{
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
paramMap
.
put
(
"operationId"
,
operationId
);
List
<
Map
<
String
,
Object
>>
materialList
=
new
ArrayList
<>();
for
(
Barcode
barcode
:
barcodeList
)
{
Map
<
String
,
Object
>
materialMap
=
new
HashMap
<>();
materialMap
.
put
(
"serialNum"
,
barcode
.
getBarcode
());
materialMap
.
put
(
"partNumber"
,
barcode
.
getPartNumber
());
materialList
.
add
(
materialMap
);
}
paramMap
.
put
(
"materials"
,
materialList
);
String
paramStr
=
JsonUtil
.
toJsonStr
(
paramMap
);
log
.
info
(
"调用MES接口 API010: url=["
+
url
+
"],body=["
+
paramStr
+
"]"
);
MicronResult
micronResult
=
HttpHelper
.
postMicronJson
(
url
,
paramMap
);
return
true
;
}
catch
(
ApiException
e
)
{
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
micronResult
.
getResponseData
());
String
trackStatus
=
jsonObject
.
getString
(
"trackStatus"
);
statusList
=
JSONObject
.
parseArray
(
trackStatus
,
TrackStatus
.
class
);
//statusList = micronResult.getResult("trackStatus");
}
catch
(
Exception
e
)
{
log
.
error
(
url
+
"出错"
,
e
);
}
return
false
;
return
statusList
;
}
...
...
@@ -555,9 +579,4 @@ public class MicronApi extends BaseSmfApiListener {
return
null
;
}
}
src/main/java/com/neotel/smfcore/custom/micron1053/api/MicronConfig.java
查看文件 @
7efbc37
...
...
@@ -30,7 +30,7 @@ public class MicronConfig {
* 根据API011返回的 operationId,从MES获取出库的Pretask/linePrepOrder
*Get ready Pretask/linePrepOrder list from Auto Kitting System
*/
public
String
api_name_004
=
"operation/dispatchIds?operationId={
operationId
}"
;
public
String
api_name_004
=
"operation/dispatchIds?operationId={
0
}"
;
/**
* 出库勾选一个ID(API004返回的ID)后,从MES获取出库的RI
*Get dispatch Material list from Autokitting system to fullfil the LinePrepOrder
...
...
@@ -64,7 +64,7 @@ public class MicronConfig {
/**
* 获取OperationID ,Get operationId for Loading or Dispatching of material
*/
public
String
api_name_011
=
"operation?mode={
Mode}&username={Username}&source={Source
}"
;
public
String
api_name_011
=
"operation?mode={
0}&username={1}&source={2
}"
;
/**
* Validate if MBR (From Warehouse ) is valid
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/api/bean/DispatchId.java
0 → 100644
查看文件 @
7efbc37
package
com
.
neotel
.
smfcore
.
custom
.
micron1053
.
api
.
bean
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
DispatchId
{
private
String
lineId
;
private
List
<
Id
>
ids
;
@Data
static
class
Id
{
private
String
Id
;
private
List
<
Object
>
Attribute
;
}
}
src/main/java/com/neotel/smfcore/custom/micron1053/api/bean/Material.java
0 → 100644
查看文件 @
7efbc37
package
com
.
neotel
.
smfcore
.
custom
.
micron1053
.
api
.
bean
;
import
lombok.Data
;
@Data
public
class
Material
{
private
String
serialNum
;
private
String
partNumber
;
}
src/main/java/com/neotel/smfcore/custom/micron1053/api/bean/TrackStatus.java
0 → 100644
查看文件 @
7efbc37
package
com
.
neotel
.
smfcore
.
custom
.
micron1053
.
api
.
bean
;
import
lombok.Data
;
@Data
public
class
TrackStatus
{
private
String
serialNum
;
private
String
partNumber
;
private
String
materialStatus
;
private
String
Success
;
private
String
description
;
}
src/main/java/com/neotel/smfcore/custom/micron1053/task/MicronPreTaskController.java
0 → 100644
查看文件 @
7efbc37
此文件的差异被折叠,
点击展开。
src/main/java/com/neotel/smfcore/custom/micron1053/task/bean/PreTask.java
0 → 100644
查看文件 @
7efbc37
package
com
.
neotel
.
smfcore
.
custom
.
micron1053
.
task
.
bean
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
PreTask
{
private
String
mode
;
private
String
operationId
;
private
List
<
String
>
pretasks
;
}
src/main/java/com/neotel/smfcore/custom/micron1053/task/bean/dto/TaskDto.java
0 → 100644
查看文件 @
7efbc37
package
com
.
neotel
.
smfcore
.
custom
.
micron1053
.
task
.
bean
.
dto
;
import
com.neotel.smfcore.core.order.service.po.LiteOrderItem
;
import
com.neotel.smfcore.custom.micron1053.api.bean.DispatchId
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
TaskDto
{
private
int
type
;
private
String
operationId
;
private
List
<
LiteOrderItem
>
itemList
;
private
List
<
DispatchId
>
dispatchIdList
;
}
src/main/java/com/neotel/smfcore/custom/micron1053/task/enums/OrderItemStatus.java
0 → 100644
查看文件 @
7efbc37
package
com
.
neotel
.
smfcore
.
custom
.
micron1053
.
task
.
enums
;
public
class
OrderItemStatus
{
//缺料
public
static
final
String
shortage
=
"1"
;
//正在执行
public
static
final
String
executing
=
"2"
;
//通知成功
public
static
final
String
notify_success
=
"3"
;
//通知失败
public
static
final
String
notify_fail
=
"4"
;
public
static
final
String
finish
=
"5"
;
public
static
final
String
cancel
=
"6"
;
}
src/main/resources/config/application-prod.yml
查看文件 @
7efbc37
...
...
@@ -2,14 +2,14 @@ micron:
apiAddr
:
https://testapigtwy.micron.com/t/app.mfg/mmsil/v1/DEVL/SINGAPORE/
api_name_001
:
material/validation/label
api_name_002
:
material/transfer-in
api_name_004
:
operation/dispatchIds?operationId={
operationId
}
api_name_004
:
operation/dispatchIds?operationId={
0
}
api_name_005
:
material/lineprep/{LinePrepOrderId}
api_name_006
:
material/pretasks
api_name_007
:
material/transfer-out
api_name_008
:
material/xray/{serialNum}/{qty}
api_name_009
:
material/status
api_name_010
:
material/track-out
api_name_011
:
operation?mode={
Mode}&username={Username}&source={Source
}
api_name_011
:
operation?mode={
0}&username={1}&source={2
}
api_name_101
:
operation/validation/mbr?id={Id}&operationId={operationId}&skipSap={SkipSap}
api_name_102
:
operation/validation/req?id={Id}&operationId={operationId}
api_name_103
:
operation/validation/gr?purchaseOrder={PurchaseOrder}&packagingSlip={PackagingSlip}&operationId={operationId}&skipSap={SkipSap}
...
...
@@ -27,7 +27,7 @@ spring:
auto-index-creation
:
true
# 默认为false,即不会自动创建索引
host
:
localhost
# 主机地址
port
:
27017
# 端口
database
:
sm
f
# 数据库
database
:
5
f
# 数据库
#备份数据库配置
backup-mongodb
:
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论