Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 63ec2006
由
张少辉
编写于
2026-03-05 13:19:17 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1.浩博料架出入库对接
1 个父辈
98add3e8
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
12 个修改的文件
包含
367 行增加
和
7 行删除
src/main/java/com/neotel/smfcore/core/device/handler/impl/BaseDeviceHandler.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/NLPHBShelfHandler.java
src/main/java/com/neotel/smfcore/core/device/util/DataCache.java
src/main/java/com/neotel/smfcore/core/kanban/rest/BoxKanbanController.java
src/main/java/com/neotel/smfcore/core/order/enums/ORDER_COLOR.java
src/main/java/com/neotel/smfcore/core/storage/service/po/Storage.java
src/main/java/com/neotel/smfcore/core/system/rest/SettingsController.java
src/main/java/com/neotel/smfcore/custom/haobo/HaoboApi.java
src/main/java/com/neotel/smfcore/custom/haobo/HaoboNlpController.java
src/main/java/com/neotel/smfcore/custom/haobo/bean/request/InStockCallbackRequest.java
src/main/java/com/neotel/smfcore/custom/haobo/bean/request/OutStockCallbackRequest.java
src/main/java/com/neotel/smfcore/custom/haobo/bean/response/HaoBoApiResponse.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/BaseDeviceHandler.java
查看文件 @
63ec200
...
@@ -823,6 +823,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
...
@@ -823,6 +823,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
//仓位状态
//仓位状态
barcodeDB
.
setCheckOutDate
(
new
Date
(),
task
.
getOperator
());
barcodeDB
.
setCheckOutDate
(
new
Date
(),
task
.
getOperator
());
barcodeDB
.
setPosName
(
""
);
barcodeDB
.
setPosName
(
""
);
barcodeDB
.
setOnlySingleOut
(
false
);
barcodeManager
.
save
(
barcodeDB
);
barcodeManager
.
save
(
barcodeDB
);
task
.
setBatchInfo
(
barcodeDB
.
getBatch
());
task
.
setBatchInfo
(
barcodeDB
.
getBatch
());
...
...
src/main/java/com/neotel/smfcore/core/device/handler/impl/NLPHBShelfHandler.java
0 → 100644
查看文件 @
63ec200
此文件的差异被折叠,
点击展开。
src/main/java/com/neotel/smfcore/core/device/util/DataCache.java
查看文件 @
63ec200
...
@@ -820,7 +820,7 @@ public class DataCache {
...
@@ -820,7 +820,7 @@ public class DataCache {
public
List
<
String
>
getAvailableStorageIds
()
{
public
List
<
String
>
getAvailableStorageIds
()
{
List
<
String
>
availableStorageIds
=
new
ArrayList
<>();
List
<
String
>
availableStorageIds
=
new
ArrayList
<>();
for
(
Storage
storage
:
getAllStorage
().
values
())
{
for
(
Storage
storage
:
getAllStorage
().
values
())
{
if
(!
storage
.
isVirtual
())
{
if
(!
storage
.
isVirtual
()
&&
!
storage
.
isNLPHBShelf
()
)
{
StatusBean
bean
=
DevicesStatusUtil
.
getStatusBean
(
storage
.
getCid
());
StatusBean
bean
=
DevicesStatusUtil
.
getStatusBean
(
storage
.
getCid
());
if
(
bean
==
null
||
bean
.
timeOut
()
||
!
bean
.
isAvailable
())
{
if
(
bean
==
null
||
bean
.
timeOut
()
||
!
bean
.
isAvailable
())
{
continue
;
continue
;
...
@@ -832,6 +832,7 @@ public class DataCache {
...
@@ -832,6 +832,7 @@ public class DataCache {
}
}
return
availableStorageIds
;
return
availableStorageIds
;
}
}
public
List
<
String
>
getAvailableStorageIds
(
List
<
String
>
cidList
)
{
public
List
<
String
>
getAvailableStorageIds
(
List
<
String
>
cidList
)
{
if
(
cidList
==
null
||
cidList
.
size
()
<=
0
)
{
if
(
cidList
==
null
||
cidList
.
size
()
<=
0
)
{
return
getAvailableStorageIds
();
return
getAvailableStorageIds
();
...
@@ -841,7 +842,7 @@ public class DataCache {
...
@@ -841,7 +842,7 @@ public class DataCache {
if
(!
cidList
.
contains
(
storage
.
getCid
()))
{
if
(!
cidList
.
contains
(
storage
.
getCid
()))
{
continue
;
continue
;
}
}
if
(!
storage
.
isVirtual
())
{
if
(!
storage
.
isVirtual
()
&&
!
storage
.
isNLPHBShelf
()
)
{
StatusBean
bean
=
DevicesStatusUtil
.
getStatusBean
(
storage
.
getCid
());
StatusBean
bean
=
DevicesStatusUtil
.
getStatusBean
(
storage
.
getCid
());
if
(
bean
==
null
||
bean
.
timeOut
()
||
!
bean
.
isAvailable
())
{
if
(
bean
==
null
||
bean
.
timeOut
()
||
!
bean
.
isAvailable
())
{
continue
;
continue
;
...
@@ -853,6 +854,7 @@ public class DataCache {
...
@@ -853,6 +854,7 @@ public class DataCache {
}
}
return
availableStorageIds
;
return
availableStorageIds
;
}
}
public
List
<
String
>
getAvailableStorageIds
(
DeviceType
deviceType
)
{
public
List
<
String
>
getAvailableStorageIds
(
DeviceType
deviceType
)
{
List
<
String
>
availableStorageIds
=
new
ArrayList
<>();
List
<
String
>
availableStorageIds
=
new
ArrayList
<>();
for
(
Storage
storage
:
getAllStorage
().
values
())
{
for
(
Storage
storage
:
getAllStorage
().
values
())
{
...
...
src/main/java/com/neotel/smfcore/core/kanban/rest/BoxKanbanController.java
查看文件 @
63ec200
...
@@ -455,7 +455,7 @@ public class BoxKanbanController {
...
@@ -455,7 +455,7 @@ public class BoxKanbanController {
boxDto
.
setOnLine
(
false
);
boxDto
.
setOnLine
(
false
);
//如果是虚拟仓,默认在线
//如果是虚拟仓,默认在线
if
(
storage
.
isVirtual
())
{
if
(
storage
.
isVirtual
()
||
storage
.
isNLPHBShelf
()
)
{
boxDto
.
setOnLine
(
true
);
boxDto
.
setOnLine
(
true
);
boxDto
.
setStatus
(
1
);
boxDto
.
setStatus
(
1
);
}
}
...
...
src/main/java/com/neotel/smfcore/core/order/enums/ORDER_COLOR.java
查看文件 @
63ec200
...
@@ -33,16 +33,16 @@ public enum ORDER_COLOR {
...
@@ -33,16 +33,16 @@ public enum ORDER_COLOR {
//MAGENTA("FF00FF"),
//MAGENTA("FF00FF"),
CYAN
(
"00FFFF"
),
CYAN
(
"00FFFF"
),
FIREBRICK
(
"B22222"
),
FIREBRICK
(
"B22222"
),
PURPLE
(
"A020F0"
),
//
PURPLE("A020F0"),
//SKYBLUE("6CA6CD"),
//SKYBLUE("6CA6CD"),
//PINK("FF1493"),
//PINK("FF1493"),
FORESTGREEN
(
"228B22"
),
FORESTGREEN
(
"228B22"
),
//LIGHTBLUE("8470FF"),
//LIGHTBLUE("8470FF"),
//INDIANRED("8B3A3A"),
//INDIANRED("8B3A3A"),
DARKGREEN
(
"556B2F"
),
//
DARKGREEN("556B2F"),
RED
(
"FF0000"
),
RED
(
"FF0000"
),
YELLOW
(
"FFFF00"
),
YELLOW
(
"FFFF00"
),
ORANGE
(
"FFA500"
),
//
ORANGE("FFA500"),
WHITE
(
"FFFFFF"
)
WHITE
(
"FFFFFF"
)
;
;
...
...
src/main/java/com/neotel/smfcore/core/storage/service/po/Storage.java
查看文件 @
63ec200
...
@@ -207,6 +207,10 @@ public class Storage extends BasePo implements Serializable {
...
@@ -207,6 +207,10 @@ public class Storage extends BasePo implements Serializable {
return
DeviceType
.
SMD_XLC
.
name
().
equals
(
type
);
return
DeviceType
.
SMD_XLC
.
name
().
equals
(
type
);
}
}
public
boolean
isNLPHBShelf
()
{
return
DeviceType
.
NLP_HB
.
name
().
equals
(
type
);
}
public
boolean
isType
(
DeviceType
[]
types
){
public
boolean
isType
(
DeviceType
[]
types
){
for
(
DeviceType
str
:
for
(
DeviceType
str
:
types
)
{
types
)
{
...
...
src/main/java/com/neotel/smfcore/core/system/rest/SettingsController.java
查看文件 @
63ec200
...
@@ -157,7 +157,7 @@ public class SettingsController {
...
@@ -157,7 +157,7 @@ public class SettingsController {
List
<
Storage
>
storages
=
new
ArrayList
<>(
dataCache
.
getAllStorage
().
values
());
List
<
Storage
>
storages
=
new
ArrayList
<>(
dataCache
.
getAllStorage
().
values
());
for
(
Storage
storage
:
storages
for
(
Storage
storage
:
storages
)
{
)
{
if
(
storage
.
isType
(
new
DeviceType
[]{
DeviceType
.
NLP
,
DeviceType
.
NL
,
DeviceType
.
NLS
}))
{
if
(
storage
.
isType
(
new
DeviceType
[]{
DeviceType
.
NLP
,
DeviceType
.
NL
,
DeviceType
.
NLS
,
DeviceType
.
NLP_HB
}))
{
orderSetting
.
setShowLightType
(
true
);
orderSetting
.
setShowLightType
(
true
);
break
;
break
;
}
}
...
...
src/main/java/com/neotel/smfcore/custom/haobo/HaoboApi.java
0 → 100644
查看文件 @
63ec200
package
com
.
neotel
.
smfcore
.
custom
.
haobo
;
import
com.alibaba.fastjson.JSON
;
import
com.neotel.smfcore.common.exception.ApiException
;
import
com.neotel.smfcore.common.utils.DateUtil
;
import
com.neotel.smfcore.common.utils.HttpHelper
;
import
com.neotel.smfcore.core.api.listener.BaseSmfApiListener
;
import
com.neotel.smfcore.core.order.enums.ORDER_COLOR
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
java.util.Arrays
;
import
java.util.HashMap
;
import
java.util.Map
;
@Slf4j
@Service
public
class
HaoboApi
extends
BaseSmfApiListener
{
@Override
public
boolean
isForThisApi
(
String
apiName
)
{
return
"haobo"
.
equalsIgnoreCase
(
apiName
);
}
@Override
public
void
inTaskStatusChange
(
String
inNotifyUrl
,
DataLog
task
)
{
if
(
task
.
isPutInTask
()
&&
task
.
isWait
()){
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
paramMap
.
put
(
"labelId"
,
task
.
getBarcode
());
paramMap
.
put
(
"shelfCode"
,
task
.
getCid
());
paramMap
.
put
(
"operationTime"
,
DateUtil
.
toDateString
(
task
.
getCreateDate
(),
"yyyy/MM/dd HH:mm:ss"
));
paramMap
.
put
(
"detailsJson"
,
""
);
log
.
info
(
task
.
getBarcode
()+
":入库通知,请求浩博料架,地址为:"
+
inNotifyUrl
+
",参数为:"
+
JSON
.
toJSONString
(
paramMap
));
try
{
String
result
=
HttpHelper
.
postJson
(
inNotifyUrl
,
paramMap
);
log
.
info
(
task
.
getBarcode
()+
":入库通知,浩博料架返回结果为:"
+
result
);
}
catch
(
ApiException
e
)
{
log
.
info
(
task
.
getBarcode
()+
":入库通知,浩博料架返回异常,异常信息为:"
+
e
.
getMessage
());
}
}
}
@Override
public
void
outTaskStatusChange
(
String
outNotifyUrl
,
DataLog
task
)
{
if
(
task
.
isCheckOutTask
()
&&
(
task
.
isExecuting
()
||
task
.
isCancel
()))
{
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
String
labelIdListJson
=
"["
+
"\'"
+
task
.
getBarcode
()
+
"\'"
+
"]"
;
paramMap
.
put
(
"labelIdListJson"
,
labelIdListJson
);
if
(
task
.
isExecuting
())
{
paramMap
.
put
(
"color"
,
getHBColor
(
task
.
getLightColor
()));
paramMap
.
put
(
"outStockType"
,
2
);
}
else
if
(
task
.
isCancel
())
{
paramMap
.
put
(
"color"
,
0
);
paramMap
.
put
(
"outStockType"
,
1
);
}
paramMap
.
put
(
"newShelfCode"
,
""
);
paramMap
.
put
(
"detailsJson"
,
""
);
log
.
info
(
task
.
getBarcode
()
+
":出库通知,请求浩博料架,地址为:"
+
outNotifyUrl
+
",参数为:"
+
JSON
.
toJSONString
(
paramMap
));
try
{
String
result
=
HttpHelper
.
postJson
(
outNotifyUrl
,
paramMap
);
log
.
info
(
task
.
getBarcode
()
+
":出库通知,浩博料架返回结果为:"
+
result
);
}
catch
(
ApiException
e
)
{
log
.
info
(
task
.
getBarcode
()
+
":出库通知,浩博料架返回异常,异常信息为:"
+
e
.
getMessage
());
}
}
}
private
int
getHBColor
(
String
rgb
)
{
ORDER_COLOR
color
=
ORDER_COLOR
.
fromRgb
(
rgb
);
if
(
color
==
null
)
{
color
=
ORDER_COLOR
.
BLUE
;
}
Map
<
String
,
Integer
>
hbColorMap
=
new
HashMap
<>();
hbColorMap
.
put
(
ORDER_COLOR
.
BLUE
.
name
(),
3
);
hbColorMap
.
put
(
ORDER_COLOR
.
CYAN
.
name
(),
6
);
hbColorMap
.
put
(
ORDER_COLOR
.
FIREBRICK
.
name
(),
5
);
hbColorMap
.
put
(
ORDER_COLOR
.
FIREBRICK
.
name
(),
2
);
hbColorMap
.
put
(
ORDER_COLOR
.
RED
.
name
(),
1
);
hbColorMap
.
put
(
ORDER_COLOR
.
YELLOW
.
name
(),
4
);
hbColorMap
.
put
(
ORDER_COLOR
.
WHITE
.
name
(),
7
);
/*hbColorMap.put(ORDER_COLOR.PURPLE.name(), );
hbColorMap.put(ORDER_COLOR.DARKGREEN.name(), );
hbColorMap.put(ORDER_COLOR.ORANGE.name(), );*/
return
hbColorMap
.
get
(
color
.
name
());
}
}
src/main/java/com/neotel/smfcore/custom/haobo/HaoboNlpController.java
0 → 100644
查看文件 @
63ec200
package
com
.
neotel
.
smfcore
.
custom
.
haobo
;
import
com.alibaba.fastjson.JSON
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.utils.StringUtils
;
import
com.neotel.smfcore.core.barcode.enums.SOLDER_STATUS
;
import
com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.device.enums.OP
;
import
com.neotel.smfcore.core.device.enums.OP_STATUS
;
import
com.neotel.smfcore.core.device.handler.impl.BaseDeviceHandler
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.order.enums.ORDER_COLOR
;
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.bean.OrderSetting
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.custom.haobo.bean.request.InStockCallbackRequest
;
import
com.neotel.smfcore.custom.haobo.bean.request.OutStockCallbackRequest
;
import
com.neotel.smfcore.custom.haobo.bean.response.HaoBoApiResponse
;
import
com.neotel.smfcore.security.annotation.AnonymousAccess
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.annotation.PostConstruct
;
import
java.util.*
;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.ScheduledExecutorService
;
import
java.util.concurrent.TimeUnit
;
@Slf4j
@RestController
@RequestMapping
(
"/hbNlp"
)
public
class
HaoboNlpController
{
@Autowired
private
TaskService
taskService
;
@Autowired
private
DataCache
dataCache
;
@Autowired
private
IStoragePosManager
storagePosManager
;
@Autowired
private
IBarcodeManager
barcodeManager
;
@ApiOperation
(
"入库完成回调"
)
@RequestMapping
(
"/inStockCallback"
)
@AnonymousAccess
public
HaoBoApiResponse
inStockCallback
(
@RequestBody
InStockCallbackRequest
request
)
{
log
.
info
(
"收到入库完成回调信息:"
+
JSON
.
toJSONString
(
request
));
DataLog
dataLog
=
null
;
Collection
<
DataLog
>
queueTasks
=
taskService
.
getQueueTasks
();
for
(
DataLog
queueTask
:
queueTasks
)
{
if
(
queueTask
.
getBarcode
().
equals
(
request
.
getLabelId
()))
{
if
(
queueTask
.
isPutInTask
()
&&
queueTask
.
isWait
())
{
dataLog
=
queueTask
;
break
;
}
}
}
if
(
dataLog
==
null
)
{
return
new
HaoBoApiResponse
(
false
,
"未找到对应的入库任务"
);
}
StoragePos
pos
=
storagePosManager
.
getByPosName
(
request
.
getLocation
());
if
(
pos
==
null
)
{
return
new
HaoBoApiResponse
(
false
,
"未找到对应的库位"
);
}
if
(
pos
.
getBarcode
()
!=
null
)
{
return
new
HaoBoApiResponse
(
false
,
"库位已被占用"
);
}
Storage
storage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
dataLog
.
setCid
(
storage
.
getCid
());
dataLog
.
setPosId
(
pos
.
getId
());
dataLog
.
setPosName
(
pos
.
getPosName
());
dataLog
.
setStorageId
(
storage
.
getId
());
dataLog
.
setStorageName
(
storage
.
getName
());
updatePutInData
(
dataLog
);
return
new
HaoBoApiResponse
(
true
,
"入库完成"
);
}
@ApiOperation
(
"出库完成回调"
)
@RequestMapping
(
"/outStockCallback"
)
@AnonymousAccess
public
HaoBoApiResponse
outStockCallback
(
@RequestBody
OutStockCallbackRequest
request
)
{
log
.
info
(
"收到出库完成回调信息:"
+
JSON
.
toJSONString
(
request
));
DataLog
dataLog
=
null
;
Collection
<
DataLog
>
queueTasks
=
taskService
.
getQueueTasks
();
for
(
DataLog
queueTask
:
queueTasks
)
{
if
(
queueTask
.
getBarcode
().
equals
(
request
.
getLabelId
()))
{
if
(
queueTask
.
isCheckOutTask
()
&&
(
queueTask
.
isWait
()
||
queueTask
.
isExecuting
()))
{
dataLog
=
queueTask
;
break
;
}
}
}
if
(
dataLog
!=
null
)
{
updateCheckoutData
(
dataLog
,
OP_STATUS
.
FINISHED
);
return
new
HaoBoApiResponse
(
true
,
"出库完成"
);
}
else
{
//判断在不在库位中,如果不在库位中,则忽略
StoragePos
pos
=
storagePosManager
.
getByBarcode
(
request
.
getLabelId
());
if
(
pos
==
null
)
{
pos
=
storagePosManager
.
getByPosName
(
request
.
getLocation
());
}
if
(
pos
==
null
||
pos
.
getBarcode
()
==
null
)
{
log
.
info
(
"根据库位名称和条码都未找到对应的库存信息,库位名称为:{},唯一码为:{}"
,
request
.
getLocation
(),
request
.
getLabelId
());
return
new
HaoBoApiResponse
(
true
,
"根据唯一码或者库位号都未找到对应的库存信息,默认已出库"
);
}
Storage
storage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
DataLog
createDataLog
=
new
DataLog
(
storage
,
pos
.
getBarcode
(),
pos
);
createDataLog
.
setType
(
OP
.
CHECKOUT
);
createDataLog
.
setOperator
(
"NLP"
);
createDataLog
=
taskService
.
updateQueueTask
(
createDataLog
);
updateCheckoutData
(
createDataLog
,
OP_STATUS
.
FINISHED
);
return
new
HaoBoApiResponse
(
true
,
"出库完成"
);
}
}
/**
* 入仓位完成
*/
protected
void
updatePutInData
(
DataLog
task
)
throws
ValidateException
{
//从队列里面移除操作
taskService
.
removeQueueTask
(
task
);
StoragePos
storagePos
=
storagePosManager
.
get
(
task
.
getPosId
());
//二维码状态
Barcode
barcode
=
barcodeManager
.
findByBarcode
(
task
.
getBarcode
());
if
(
barcode
!=
null
)
{
barcode
.
setUsedCount
(
barcode
.
getUsedCount
()
+
1
);
barcode
.
setPutInTime
(
System
.
currentTimeMillis
());
barcode
.
updateSluggishTime
(
dataCache
.
getPNsluggishDay
(
barcode
.
getPartNumber
()));
barcode
.
setInOpor
(
task
.
getOperator
());
barcode
.
setCheckOutDate
(
null
,
""
);
barcode
.
setPosName
(
task
.
getPosName
());
if
(
barcode
.
isSolder
())
{
if
(
storagePos
.
isWarmPos
())
{
//回温仓位
barcode
.
setSolderStatus
(
SOLDER_STATUS
.
RETREAT_STORAGE
.
name
());
}
else
{
barcode
.
setSolderStatus
(
SOLDER_STATUS
.
UNDER_REFRIGERATION
.
name
());
}
barcode
.
setNeedOutDate
(
null
);
}
barcodeManager
.
save
(
barcode
);
}
storagePos
.
setBarcode
(
barcode
);
storagePos
.
setUsed
(
true
);
storagePos
.
setCanCheckOutTime
(
System
.
currentTimeMillis
());
storagePosManager
.
save
(
storagePos
);
if
(
barcode
!=
null
)
{
dataCache
.
updateInventory
(
storagePos
,
barcode
);
//记录日志,完成 task
task
.
setBatchInfo
(
barcode
.
getBatch
());
task
.
setNum
(
barcode
.
getAmount
());
task
.
setProviderNumber
(
barcode
.
getProviderNumber
());
}
//更新缓存中的库存信息
task
.
setStatus
(
OP_STATUS
.
FINISHED
.
name
());
taskService
.
updateFinishedTask
(
task
);
}
/**
* 出仓位完成
*/
private
void
updateCheckoutData
(
DataLog
task
,
OP_STATUS
outBoxStatus
)
throws
ValidateException
{
//从队列里面移除操作
taskService
.
removeQueueTask
(
task
);
StoragePos
storagePos
=
storagePosManager
.
get
(
task
.
getPosId
());
Barcode
barcode
=
storagePos
.
getBarcode
();
if
(
barcode
==
null
)
{
log
.
warn
(
"任务:"
+
task
.
getId
()
+
" 仓位:"
+
task
.
getPosId
()
+
" 的 Barcode 为null, 之前可能处理过,结束任务后直接返回"
);
//记录日志
task
.
setStatus
(
outBoxStatus
.
name
());
taskService
.
updateFinishedTask
(
task
);
return
;
}
Barcode
barcodeDB
=
barcodeManager
.
get
(
barcode
.
getId
());
if
(
barcodeDB
!=
null
)
{
//二维码状态
barcodeDB
.
setUsed
(
true
);
barcodeDB
.
setUsedDate
(
new
Date
());
//仓位状态
barcodeDB
.
setCheckOutDate
(
new
Date
(),
task
.
getOperator
());
barcodeDB
.
setPosName
(
""
);
barcodeManager
.
save
(
barcodeDB
);
task
.
setBatchInfo
(
barcodeDB
.
getBatch
());
//记录在库时长
task
.
setInStoreTime
(
barcodeDB
.
getInStoreMiniute
());
}
storagePos
.
setBarcode
(
null
);
storagePos
.
setUsed
(
false
);
storagePosManager
.
save
(
storagePos
);
log
.
info
(
"出库完成,清空仓位: "
+
storagePos
.
getId
()
+
"["
+
storagePos
.
getPosName
()
+
"]"
);
//更新缓存中的库存信息
dataCache
.
updateInventory
(
storagePos
,
barcode
);
// 调用西门子接口
// SiemensApi.lotInOut(barcode.getBarcode(),2);
//记录日志
task
.
setStatus
(
outBoxStatus
.
name
());
taskService
.
updateFinishedTask
(
task
);
}
}
src/main/java/com/neotel/smfcore/custom/haobo/bean/request/InStockCallbackRequest.java
0 → 100644
查看文件 @
63ec200
package
com
.
neotel
.
smfcore
.
custom
.
haobo
.
bean
.
request
;
import
lombok.Data
;
@Data
public
class
InStockCallbackRequest
{
private
String
labelId
;
private
String
location
;
private
String
detailsJson
;
}
src/main/java/com/neotel/smfcore/custom/haobo/bean/request/OutStockCallbackRequest.java
0 → 100644
查看文件 @
63ec200
package
com
.
neotel
.
smfcore
.
custom
.
haobo
.
bean
.
request
;
import
lombok.Data
;
@Data
public
class
OutStockCallbackRequest
{
private
String
labelId
;
private
String
location
;
private
String
detailsJson
;
}
src/main/java/com/neotel/smfcore/custom/haobo/bean/response/HaoBoApiResponse.java
0 → 100644
查看文件 @
63ec200
package
com
.
neotel
.
smfcore
.
custom
.
haobo
.
bean
.
response
;
import
lombok.Data
;
@Data
public
class
HaoBoApiResponse
{
private
boolean
success
;
private
String
message
;
private
Object
data
;
public
HaoBoApiResponse
(
boolean
success
,
String
message
)
{
this
.
message
=
message
;
this
.
success
=
success
;
this
.
data
=
null
;
}
}
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论