Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit aae33481
由
zshaohui
编写于
2024-09-05 14:30:07 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1.Fuji对接功能提交
1 个父辈
fbf272dd
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
23 个修改的文件
包含
274 行增加
和
442 行删除
src/main/java/com/neotel/smfcore/common/utils/HttpHelper.java
src/main/java/com/neotel/smfcore/custom/fuji/FujiApi.java
src/main/java/com/neotel/smfcore/custom/nexim/bean/Notify.java → src/main/java/com/neotel/smfcore/custom/fuji/bean/Notify.java
src/main/java/com/neotel/smfcore/custom/nexim/bean/OrderReq.java → src/main/java/com/neotel/smfcore/custom/fuji/bean/OrderReq.java
src/main/java/com/neotel/smfcore/custom/nexim/bean/OrderResp.java → src/main/java/com/neotel/smfcore/custom/fuji/bean/OrderResp.java
src/main/java/com/neotel/smfcore/custom/fuji/config/FileDirectoryConfig.java
src/main/java/com/neotel/smfcore/custom/fuji/config/FujiUrlConfig.java
src/main/java/com/neotel/smfcore/custom/nexim/enums/Action.java → src/main/java/com/neotel/smfcore/custom/fuji/enums/Action.java
src/main/java/com/neotel/smfcore/custom/nexim/enums/ErrorCode.java → src/main/java/com/neotel/smfcore/custom/fuji/enums/ErrorCode.java
src/main/java/com/neotel/smfcore/custom/nexim/enums/NexObject.java → src/main/java/com/neotel/smfcore/custom/fuji/enums/NexObject.java
src/main/java/com/neotel/smfcore/custom/nexim/enums/OrderType.java → src/main/java/com/neotel/smfcore/custom/fuji/enums/OrderType.java
src/main/java/com/neotel/smfcore/custom/nexim/order/OrderHandler.java → src/main/java/com/neotel/smfcore/custom/fuji/order/OrderHandler.java
src/main/java/com/neotel/smfcore/custom/nexim/util/NotifyUtil.java → src/main/java/com/neotel/smfcore/custom/fuji/util/NotifyUtil.java
src/main/java/com/neotel/smfcore/custom/nexim/util/OrderUtil.java → src/main/java/com/neotel/smfcore/custom/fuji/util/OrderUtil.java
src/main/java/com/neotel/smfcore/custom/fushi/FuShiApi.java
src/main/java/com/neotel/smfcore/custom/fushi/bean/FushiApiToken.java
src/main/java/com/neotel/smfcore/custom/fushi/bean/Inventory/Datas.java
src/main/java/com/neotel/smfcore/custom/fushi/bean/Inventory/MetaData.java
src/main/java/com/neotel/smfcore/custom/fushi/bean/InventoryDid.java
src/main/java/com/neotel/smfcore/custom/fushi/controller/ManuallyPutStorageController.java
src/main/java/com/neotel/smfcore/custom/nexim/NeximApi.java
src/main/java/com/neotel/smfcore/custom/nexim/config/FileDirectoryConfig.java
src/main/java/com/neotel/smfcore/custom/nexim/order/OrderCheckOutService.java
src/main/java/com/neotel/smfcore/common/utils/HttpHelper.java
查看文件 @
aae3348
...
@@ -591,6 +591,45 @@ public class HttpHelper {
...
@@ -591,6 +591,45 @@ public class HttpHelper {
}
}
}
}
public
static
String
getParam
(
String
url
,
Map
<
String
,
String
>
headerMap
,
Map
<
String
,
Object
>
paramMap
)
throws
ApiException
{
CloseableHttpClient
httpClient
=
null
;
CloseableHttpResponse
response
=
null
;
try
{
List
<
NameValuePair
>
params
=
toNameValuePair
(
paramMap
);
URI
uri
=
new
URIBuilder
(
url
).
setParameters
(
params
).
build
();
log
.
info
(
"getParam请求,地址为:"
+
uri
);
HttpGet
httpGet
=
new
HttpGet
(
uri
);
RequestConfig
requestConfig
=
RequestConfig
.
custom
().
setConnectTimeout
(
CONNECTION_TIMEOUT
).
build
();
httpGet
.
setConfig
(
requestConfig
);
if
(
headerMap
!=
null
&&
!
headerMap
.
isEmpty
())
{
for
(
Entry
<
String
,
String
>
entry
:
headerMap
.
entrySet
())
{
httpGet
.
addHeader
(
entry
.
getKey
(),
entry
.
getValue
());
}
}
httpClient
=
HttpClients
.
createDefault
();
response
=
httpClient
.
execute
(
httpGet
);
HttpEntity
entity
=
response
.
getEntity
();
String
responseContent
=
EntityUtils
.
toString
(
entity
,
CONTENT_CHARSET
);
return
responseContent
;
}
catch
(
Exception
e
)
{
throw
new
ApiException
(
"Request to ["
+
url
+
"] failed:"
+
e
.
getMessage
());
}
finally
{
try
{
if
(
response
!=
null
)
{
response
.
close
();
}
if
(
httpClient
!=
null
)
{
httpClient
.
close
();
}
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
}
private
static
String
appendString
(
String
url
,
String
paramStr
)
{
private
static
String
appendString
(
String
url
,
String
paramStr
)
{
StringBuffer
stringBuffer
=
new
StringBuffer
();
StringBuffer
stringBuffer
=
new
StringBuffer
();
stringBuffer
.
append
(
url
);
stringBuffer
.
append
(
url
);
...
...
src/main/java/com/neotel/smfcore/custom/fuji/FujiApi.java
0 → 100644
查看文件 @
aae3348
package
com
.
neotel
.
smfcore
.
custom
.
fuji
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.neotel.smfcore.common.exception.ApiException
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.utils.HttpHelper
;
import
com.neotel.smfcore.common.utils.StringUtils
;
import
com.neotel.smfcore.core.api.bean.CodeValidateParam
;
import
com.neotel.smfcore.core.api.listener.BaseSmfApiListener
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.custom.fuji.config.FileDirectoryConfig
;
import
com.neotel.smfcore.custom.fuji.config.FujiUrlConfig
;
import
com.neotel.smfcore.custom.fuji.util.NotifyUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
java.util.Arrays
;
import
java.util.HashMap
;
import
java.util.Map
;
@Service
@Slf4j
public
class
FujiApi
extends
BaseSmfApiListener
{
@Override
public
boolean
isForThisApi
(
String
apiName
)
{
return
apiName
!=
null
&&
apiName
.
equalsIgnoreCase
(
"fuji"
);
}
@Override
public
Barcode
canPutInAfterResolve
(
String
inCheckUrl
,
CodeValidateParam
params
,
Barcode
barcode
)
throws
ValidateException
{
String
accessToken
=
getAccessToken
();
//log.info(barcode.getBarcode()+"获取token的结果为:"+accessToken);
boolean
hasDid
=
inventoryHasDid
(
barcode
.
getBarcode
(),
accessToken
);
if
(
hasDid
){
log
.
info
(
barcode
.
getBarcode
()+
"在Fuji中已经存在,直接返回"
);
return
barcode
;
}
else
{
boolean
register
=
registerNewDid
(
barcode
,
accessToken
);
if
(
register
){
log
.
info
(
barcode
.
getBarcode
()+
"在Fuji中注册成功,直接返回"
);
return
barcode
;
}
else
{
throw
new
ValidateException
(
"smfcore.registerdid.false"
,
barcode
.
getBarcode
()+
"注册失败"
);
}
}
}
@Override
public
void
inTaskStatusChange
(
String
inNotifyUrl
,
DataLog
task
)
{
if
(
task
.
isFinished
())
{
NotifyUtil
.
createLoadEtn
(
task
.
getBarcode
(),
task
.
getPosName
(),
task
.
getNum
(),
""
,
task
.
getW
(),
task
.
getH
(),
task
.
getPartNumber
(),
task
.
getStorageName
(),
FileDirectoryConfig
.
NOTIFY
);
}
}
@Override
public
void
outTaskStatusChange
(
String
outNotifyUrl
,
DataLog
task
)
{
if
(
task
.
isFinished
())
{
NotifyUtil
.
createLoadEtn
(
task
.
getBarcode
(),
task
.
getPosName
(),
task
.
getNum
(),
""
,
task
.
getW
(),
task
.
getH
(),
task
.
getPartNumber
(),
task
.
getStorageName
(),
FileDirectoryConfig
.
NOTIFY
);
NotifyUtil
.
createProvideEtn
(
task
.
getBarcode
(),
task
.
getPosName
(),
task
.
getNum
(),
""
,
task
.
getW
(),
task
.
getH
(),
task
.
getPartNumber
(),
task
.
getSourceName
(),
task
.
getLine
(),
task
.
getStorageName
(),
FileDirectoryConfig
.
NOTIFY
);
NotifyUtil
.
createDeleteEtn
(
task
.
getBarcode
(),
task
.
getW
(),
task
.
getH
(),
task
.
getPartNumber
(),
FileDirectoryConfig
.
NOTIFY
);
}
}
public
boolean
registerNewDid
(
Barcode
barcode
,
String
accessToken
)
{
Map
<
String
,
String
>
headerMap
=
new
HashMap
<>();
headerMap
.
put
(
"fujiAccessToken"
,
accessToken
);
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
params
.
put
(
"did"
,
barcode
.
getBarcode
());
params
.
put
(
"partBarcode"
,
barcode
.
getFullCode
());
params
.
put
(
"quantity"
,
barcode
.
getAmount
());
params
.
put
(
"packageType"
,
"paper"
);
//默认是paper,
params
.
put
(
"partsoutWarning"
,
0
);
params
.
put
(
"splicingWarning"
,
0
);
params
.
put
(
"partNumber"
,
barcode
.
getPartNumber
());
params
.
put
(
"vendorName"
,
barcode
.
getProvider
());
params
.
put
(
"lotName"
,
barcode
.
getBatch
());
params
.
put
(
"dateCode"
,
barcode
.
getProduceDate
());
params
.
put
(
"location"
,
""
);
params
.
put
(
"memo"
,
""
);
params
.
put
(
"note1"
,
""
);
params
.
put
(
"note2"
,
""
);
params
.
put
(
"note3"
,
""
);
params
.
put
(
"note4"
,
""
);
params
.
put
(
"useSplicing"
,
true
);
params
.
put
(
"useTrayPackage"
,
true
);
params
.
put
(
"trayStackCount"
,
1
);
params
.
put
(
"trayPickupPositionX"
,
1
);
params
.
put
(
"trayPickupPositionY"
,
1
);
params
.
put
(
"traySizeX"
,
0
);
params
.
put
(
"traySizeY"
,
0
);
log
.
info
(
"注册Fuji的did参数为:"
+
JSON
.
toJSONString
(
params
));
try
{
String
result
=
HttpHelper
.
postJsonWithAuth
(
FujiUrlConfig
.
inventoryDids
(),
Arrays
.
asList
(
params
),
""
,
headerMap
);
log
.
info
(
"注册Fuji的did结果为:"
+
result
);
JSONObject
resultObj
=
JSONObject
.
parseObject
(
result
);
Integer
addedCount
=
resultObj
.
getInteger
(
"addedCount"
);
if
(
addedCount
!=
null
&&
addedCount
>
0
){
return
true
;
}
else
{
String
details
=
resultObj
.
getString
(
"details"
);
throw
new
ValidateException
(
"smfcore.registerdid.false"
,
barcode
.
getBarcode
()+
"注册失败:"
+
details
);
}
}
catch
(
ApiException
e
)
{
log
.
info
(
"注册Fuji的did失败:"
,
e
);
}
return
false
;
}
public
boolean
inventoryHasDid
(
String
barcode
,
String
accessToken
)
{
Map
<
String
,
String
>
headerMap
=
new
HashMap
<>();
headerMap
.
put
(
"fujiAccessToken"
,
accessToken
);
String
search
=
"did == \""
+
barcode
+
"\""
;
String
orderBy
=
"did asc"
;
int
pageToken
=
0
;
int
pageSize
=
200
;
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
paramMap
.
put
(
"pageToken"
,
pageToken
);
paramMap
.
put
(
"pageSize"
,
pageSize
);
paramMap
.
put
(
"search"
,
search
);
paramMap
.
put
(
"orderBy"
,
orderBy
);
try
{
String
result
=
HttpHelper
.
getParam
(
FujiUrlConfig
.
inventoryDids
(),
headerMap
,
paramMap
);
log
.
info
(
barcode
+
"获取Fuji的inventory/dids结果为:"
+
result
);
JSONObject
resultObj
=
JSONObject
.
parseObject
(
result
);
JSONArray
dataArray
=
resultObj
.
getJSONArray
(
"datas"
);
if
(
dataArray
!=
null
&&
!
dataArray
.
isEmpty
()){
for
(
int
i
=
0
;
i
<
dataArray
.
size
();
i
++)
{
JSONObject
data
=
dataArray
.
getJSONObject
(
i
);
if
(
barcode
.
equals
(
data
.
getString
(
"did"
))){
return
true
;
}
}
}
}
catch
(
ApiException
e
)
{
log
.
info
(
barcode
+
"获取Fuji的inventory/dids失败:"
,
e
.
getMessage
());
}
return
false
;
}
/**
* 获取登录的token
* @return
*/
private
String
getAccessToken
()
{
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
paramMap
.
put
(
"userName"
,
FujiUrlConfig
.
userName
);
paramMap
.
put
(
"password"
,
FujiUrlConfig
.
password
);
log
.
info
(
"获取Fuji的token参数为:"
+
JSON
.
toJSONString
(
paramMap
));
String
accessToken
=
""
;
try
{
String
result
=
HttpHelper
.
postJson
(
FujiUrlConfig
.
getAuthLogin
(),
paramMap
);
log
.
info
(
"获取Fuji的token结果为:"
+
result
);
JSONObject
resultObj
=
JSONObject
.
parseObject
(
result
);
accessToken
=
resultObj
.
getString
(
"accessToken"
);
}
catch
(
ApiException
e
)
{
log
.
info
(
"获取Fuji的token异常:"
,
e
);
accessToken
=
""
;
}
if
(
StringUtils
.
isEmpty
(
accessToken
))
{
throw
new
ValidateException
(
"smfcore.accessToken.ng"
,
"获取AccessToken失败"
);
}
return
accessToken
;
}
}
src/main/java/com/neotel/smfcore/custom/
nexim
/bean/Notify.java
→
src/main/java/com/neotel/smfcore/custom/
fuji
/bean/Notify.java
查看文件 @
aae3348
package
com
.
neotel
.
smfcore
.
custom
.
nexim
.
bean
;
package
com
.
neotel
.
smfcore
.
custom
.
fuji
.
bean
;
import
lombok.Data
;
import
lombok.Data
;
...
...
src/main/java/com/neotel/smfcore/custom/
nexim
/bean/OrderReq.java
→
src/main/java/com/neotel/smfcore/custom/
fuji
/bean/OrderReq.java
查看文件 @
aae3348
package
com
.
neotel
.
smfcore
.
custom
.
nexim
.
bean
;
package
com
.
neotel
.
smfcore
.
custom
.
fuji
.
bean
;
import
lombok.Data
;
import
lombok.Data
;
...
...
src/main/java/com/neotel/smfcore/custom/
nexim
/bean/OrderResp.java
→
src/main/java/com/neotel/smfcore/custom/
fuji
/bean/OrderResp.java
查看文件 @
aae3348
package
com
.
neotel
.
smfcore
.
custom
.
nexim
.
bean
;
package
com
.
neotel
.
smfcore
.
custom
.
fuji
.
bean
;
import
lombok.Data
;
import
lombok.Data
;
...
...
src/main/java/com/neotel/smfcore/custom/fuji/config/FileDirectoryConfig.java
0 → 100644
查看文件 @
aae3348
package
com
.
neotel
.
smfcore
.
custom
.
fuji
.
config
;
public
class
FileDirectoryConfig
{
public
static
final
String
NOTIFY
=
"\\\\175.41.238.212\\remoteorder\\notify\\"
;
}
src/main/java/com/neotel/smfcore/custom/fuji/config/FujiUrlConfig.java
0 → 100644
查看文件 @
aae3348
package
com
.
neotel
.
smfcore
.
custom
.
fuji
.
config
;
import
lombok.Data
;
@Data
public
class
FujiUrlConfig
{
private
static
final
String
baseUrl
=
"http://175.41.238.212/fujiopenwebapi/api/v1"
;
public
static
final
String
userName
=
"Neotel"
;
public
static
final
String
password
=
"Neotel"
;
private
static
final
String
authLogin
=
"/auth/login"
;
private
static
final
String
inventoryDids
=
"/inventory/dids"
;
public
static
String
getAuthLogin
()
{
return
baseUrl
+
authLogin
;
}
public
static
String
inventoryDids
()
{
return
baseUrl
+
inventoryDids
;
}
}
src/main/java/com/neotel/smfcore/custom/
nexim
/enums/Action.java
→
src/main/java/com/neotel/smfcore/custom/
fuji
/enums/Action.java
查看文件 @
aae3348
package
com
.
neotel
.
smfcore
.
custom
.
nexim
.
enums
;
package
com
.
neotel
.
smfcore
.
custom
.
fuji
.
enums
;
/**
/**
* Action 类型
* Action 类型
...
...
src/main/java/com/neotel/smfcore/custom/
nexim
/enums/ErrorCode.java
→
src/main/java/com/neotel/smfcore/custom/
fuji
/enums/ErrorCode.java
查看文件 @
aae3348
package
com
.
neotel
.
smfcore
.
custom
.
nexim
.
enums
;
package
com
.
neotel
.
smfcore
.
custom
.
fuji
.
enums
;
public
class
ErrorCode
{
public
class
ErrorCode
{
public
static
final
int
ok
=
0
;
public
static
final
int
ok
=
0
;
...
...
src/main/java/com/neotel/smfcore/custom/
nexim
/enums/NexObject.java
→
src/main/java/com/neotel/smfcore/custom/
fuji
/enums/NexObject.java
查看文件 @
aae3348
package
com
.
neotel
.
smfcore
.
custom
.
nexim
.
enums
;
package
com
.
neotel
.
smfcore
.
custom
.
fuji
.
enums
;
public
enum
NexObject
{
public
enum
NexObject
{
...
...
src/main/java/com/neotel/smfcore/custom/
nexim
/enums/OrderType.java
→
src/main/java/com/neotel/smfcore/custom/
fuji
/enums/OrderType.java
查看文件 @
aae3348
package
com
.
neotel
.
smfcore
.
custom
.
nexim
.
enums
;
package
com
.
neotel
.
smfcore
.
custom
.
fuji
.
enums
;
public
class
OrderType
{
public
class
OrderType
{
public
static
final
String
order
=
"[Order]"
;
public
static
final
String
order
=
"[Order]"
;
...
...
src/main/java/com/neotel/smfcore/custom/
nexim
/order/OrderHandler.java
→
src/main/java/com/neotel/smfcore/custom/
fuji
/order/OrderHandler.java
查看文件 @
aae3348
package
com
.
neotel
.
smfcore
.
custom
.
nexim
.
order
;
package
com
.
neotel
.
smfcore
.
custom
.
fuji
.
order
;
import
cn.hutool.core.date.DateUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.neotel.smfcore.common.utils.*
;
import
com.neotel.smfcore.core.api.SmfApi
;
import
com.neotel.smfcore.core.api.SmfApi
;
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.util.DataCache
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.order.LiteOrderCache
;
import
com.neotel.smfcore.core.order.LiteOrderCache
;
import
com.neotel.smfcore.core.order.service.manager.ILiteOrderManager
;
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.storage.enums.CHECKOUT_TYPE
;
import
com.neotel.smfcore.custom.fuji.util.NotifyUtil
;
import
com.neotel.smfcore.core.storage.service.manager.IStoragePosManager
;
import
com.neotel.smfcore.custom.fuji.util.OrderUtil
;
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.po.DataLog
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.custom.nexim.NeximApi
;
import
com.neotel.smfcore.custom.nexim.bean.OrderReq
;
import
com.neotel.smfcore.custom.nexim.bean.OrderResp
;
import
com.neotel.smfcore.custom.nexim.enums.Action
;
import
com.neotel.smfcore.custom.nexim.enums.ErrorCode
;
import
com.neotel.smfcore.custom.nexim.enums.NexObject
;
import
com.neotel.smfcore.custom.nexim.enums.OrderType
;
import
com.neotel.smfcore.custom.nexim.util.NotifyUtil
;
import
com.neotel.smfcore.custom.nexim.util.OrderUtil
;
import
com.neotel.smfcore.security.annotation.AnonymousAccess
;
import
jcifs.smb.SmbFile
;
import
lombok.SneakyThrows
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.logging.log4j.util.Strings
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
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.Component
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
javax.annotation.PostConstruct
;
import
javax.annotation.PostConstruct
;
import
java.io.File
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.io.InputStreamReader
;
import
java.nio.charset.Charset
;
import
java.nio.charset.StandardCharsets
;
import
java.nio.charset.StandardCharsets
;
import
java.nio.file.Files
;
import
java.nio.file.Path
;
import
java.nio.file.Paths
;
import
java.util.*
;
import
java.util.*
;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.ScheduledExecutorService
;
import
java.util.concurrent.ScheduledExecutorService
;
import
java.util.concurrent.TimeUnit
;
import
java.util.concurrent.TimeUnit
;
import
java.util.regex.Pattern
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
@Slf4j
@Slf4j
@Component
@Component
public
class
OrderHandler
{
public
class
OrderHandler
{
private
static
IStoragePosManager
storagePosManager
;
@Autowired
public
void
setStoragePosManager
(
IStoragePosManager
manager
)
{
storagePosManager
=
manager
;
}
private
static
IBarcodeManager
barcodeManager
;
@Autowired
public
void
setBarcodeManager
(
IBarcodeManager
manager
)
{
barcodeManager
=
manager
;
}
private
static
DataCache
dataCache
;
private
static
DataCache
dataCache
;
@Autowired
@Autowired
...
@@ -82,13 +34,6 @@ public class OrderHandler {
...
@@ -82,13 +34,6 @@ public class OrderHandler {
dataCache
=
cache
;
dataCache
=
cache
;
}
}
private
static
TaskService
taskService
;
@Autowired
public
void
setTaskService
(
TaskService
service
)
{
taskService
=
service
;
}
private
static
ILiteOrderManager
liteOrderManager
;
private
static
ILiteOrderManager
liteOrderManager
;
@Autowired
@Autowired
...
@@ -103,12 +48,6 @@ public class OrderHandler {
...
@@ -103,12 +48,6 @@ public class OrderHandler {
liteOrderCache
=
cache
;
liteOrderCache
=
cache
;
}
}
private
static
OrderCheckOutService
checkOutService
;
@Autowired
public
void
setOrderCheckOutService
(
OrderCheckOutService
service
)
{
checkOutService
=
service
;
}
public
static
SmfApi
smfApi
;
public
static
SmfApi
smfApi
;
...
@@ -122,16 +61,15 @@ public class OrderHandler {
...
@@ -122,16 +61,15 @@ public class OrderHandler {
@PostConstruct
@PostConstruct
public
void
init
()
{
public
void
init
()
{
scheduledThreadPool
.
scheduleAtFixedRate
(()
->
{
if
(
"nexim"
.
equals
(
smfApi
.
getApiName
()))
{
try
{
scheduledThreadPool
.
scheduleAtFixedRate
(()
->
{
if
(
"nexim"
.
equals
(
smfApi
.
getApiName
()))
{
try
{
handler
();
handler
();
}
catch
(
Exception
e
)
{
log
.
info
(
"执行fuji工单失败:"
,
e
);
}
}
}
catch
(
IOException
e
)
{
},
60
,
10
,
TimeUnit
.
SECONDS
);
e
.
printStackTrace
();
}
log
.
error
(
e
.
getMessage
());
}
},
60
,
10
,
TimeUnit
.
SECONDS
);
}
}
public
static
void
handler
()
throws
IOException
{
public
static
void
handler
()
throws
IOException
{
...
...
src/main/java/com/neotel/smfcore/custom/
nexim
/util/NotifyUtil.java
→
src/main/java/com/neotel/smfcore/custom/
fuji
/util/NotifyUtil.java
查看文件 @
aae3348
package
com
.
neotel
.
smfcore
.
custom
.
nexim
.
util
;
package
com
.
neotel
.
smfcore
.
custom
.
fuji
.
util
;
import
cn.hutool.core.date.DateUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.custom.nexim.bean.Notify
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
java.io.File
;
import
java.io.File
;
import
java.io.FileOutputStream
;
import
java.io.FileOutputStream
;
...
...
src/main/java/com/neotel/smfcore/custom/
nexim
/util/OrderUtil.java
→
src/main/java/com/neotel/smfcore/custom/
fuji
/util/OrderUtil.java
查看文件 @
aae3348
package
com
.
neotel
.
smfcore
.
custom
.
nexim
.
util
;
package
com
.
neotel
.
smfcore
.
custom
.
fuji
.
util
;
import
com.alibaba.fastjson.JSON
;
import
com.neotel.smfcore.common.utils.FileUtil
;
import
com.neotel.smfcore.common.utils.SmbUtil
;
import
com.neotel.smfcore.common.utils.SmbUtil
;
import
com.neotel.smfcore.common.utils.StringUtils
;
import
com.neotel.smfcore.common.utils.StringUtils
;
import
com.neotel.smfcore.custom.nexim.bean.Notify
;
import
com.neotel.smfcore.custom.fuji.bean.OrderResp
;
import
com.neotel.smfcore.custom.nexim.bean.OrderReq
;
import
com.neotel.smfcore.custom.nexim.bean.OrderResp
;
import
com.neotel.smfcore.custom.nexim.enums.OrderType
;
import
jcifs.smb.SmbFile
;
import
jcifs.smb.SmbFile
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
...
@@ -20,7 +15,6 @@ import java.nio.charset.StandardCharsets;
...
@@ -20,7 +15,6 @@ import java.nio.charset.StandardCharsets;
import
java.nio.file.Files
;
import
java.nio.file.Files
;
import
java.nio.file.Path
;
import
java.nio.file.Path
;
import
java.nio.file.Paths
;
import
java.nio.file.Paths
;
import
java.util.ArrayList
;
import
java.util.Comparator
;
import
java.util.Comparator
;
import
java.util.List
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
...
src/main/java/com/neotel/smfcore/custom/fushi/FuShiApi.java
deleted
100644 → 0
查看文件 @
fbf272d
package
com
.
neotel
.
smfcore
.
custom
.
fushi
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.neotel.smfcore.common.utils.HttpHelper
;
import
com.neotel.smfcore.core.api.listener.DefaultSmfApiListener
;
import
com.neotel.smfcore.custom.fushi.bean.FushiApiToken
;
import
com.neotel.smfcore.custom.fushi.bean.InventoryDid
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
@Service
@Slf4j
public
class
FuShiApi
extends
DefaultSmfApiListener
{
@Value
(
"${smd.userName}"
)
private
String
userName
;
@Value
(
"${smd.password}"
)
private
String
password
;
@Value
(
"${smd.url}"
)
private
String
fuShiUrl
;
public
static
final
String
tokenUrl
=
"auth/login"
;
public
static
final
String
inventoryUrl
=
"inventory/dids"
;
private
String
accessToken
;
public
String
getAccessToken
()
{
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
paramMap
.
put
(
"userName"
,
userName
);
paramMap
.
put
(
"password"
,
password
);
log
.
info
(
"getAccessToken调用参数为:"
+
JSON
.
toJSONString
(
paramMap
));
String
result
=
""
;
try
{
String
url
=
fuShiUrl
+
tokenUrl
;
result
=
HttpHelper
.
postJson
(
url
,
paramMap
);
// result = "{\n" +
// " \"accessToken\": \"accessToken1234\",\n" +
// " \"refreshToken\": \"refreshToken12345\"\n" +
// "}";
log
.
info
(
"getAccessToken接口返回为:"
+
result
);
FushiApiToken
fushiApiToken
=
JSONObject
.
parseObject
(
result
,
FushiApiToken
.
class
);
result
=
fushiApiToken
.
getAccess_token
();
accessToken
=
fushiApiToken
.
getAccess_token
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
log
.
info
(
"getAccessToken接口错误信息为:"
+
e
.
getMessage
());
}
return
result
;
}
public
List
<
String
>
getInventoryList
(
int
pageSize
,
int
pageToken
)
{
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
paramMap
.
put
(
"pageSize"
,
pageSize
);
paramMap
.
put
(
"pageToken"
,
pageToken
);
log
.
info
(
"getInventoryList调用参数为:"
+
JSON
.
toJSONString
(
paramMap
));
List
<
String
>
inventoryDids
=
new
ArrayList
<>();
String
result
=
""
;
try
{
String
url
=
fuShiUrl
+
inventoryUrl
;
HashMap
<
String
,
String
>
headerMap
=
new
HashMap
<>();
headerMap
.
put
(
"fujiAccessToken"
,
accessToken
);
result
=
HttpHelper
.
getJson
(
url
,
headerMap
,
paramMap
);
// result = "{\n" +
// " \"datas\": [\n" +
// " {\n" +
// " \"did\": \"121\",\n" +
// " \"partNumber\": \"M21000012\",\n" +
// " \"quantity\": 21234\n" +
// " },\n" +
// " {\n" +
// " \"did\": \"12345\",\n" +
// " \"partNumber\": \"M21230012\",\n" +
// " \"quantity\": 16394\n" +
// " },\n" +
// " {\n" +
// " \"did\": \"1223\",\n" +
// " \"partNumber\": \"M21000232\",\n" +
// " \"quantity\": 16734\n" +
// " }\n" +
// " ],\n" +
// " \"metadata\": {\n" +
// " \"totalCount\": 14,\n" +
// " \"pageSize\": 0\n" +
// " }\n" +
// "}";
log
.
info
(
"getInventoryList接口返回为:"
+
result
);
InventoryDid
inventory
=
JSONObject
.
parseObject
(
result
,
InventoryDid
.
class
);
if
(
inventory
!=
null
)
{
if
(
inventory
.
getDatas
()
!=
null
&&
!
inventory
.
getDatas
().
isEmpty
())
{
for
(
int
i
=
0
;
i
<
inventory
.
getDatas
().
size
();
i
++)
{
String
did
=
inventory
.
getDatas
().
get
(
i
).
getDid
();
inventoryDids
.
add
(
did
);
}
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
log
.
info
(
"getInventoryList接口错误信息为:"
+
e
.
getMessage
());
}
return
inventoryDids
;
}
public
String
getInventoryAdd
(
String
partBarcode
,
Integer
quantity
,
String
partNumber
)
{
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
paramMap
.
put
(
"partBarcode"
,
partBarcode
);
paramMap
.
put
(
"quantity"
,
quantity
);
paramMap
.
put
(
"partNumber"
,
partNumber
);
log
.
info
(
"getInventoryAdd调用参数为:"
+
JSON
.
toJSONString
(
paramMap
));
String
result
=
""
;
try
{
String
url
=
fuShiUrl
+
inventoryUrl
;
HashMap
<
String
,
String
>
headerMap
=
new
HashMap
<>();
headerMap
.
put
(
"fujiAccessToken"
,
accessToken
);
result
=
HttpHelper
.
postJson
(
url
,
paramMap
,
headerMap
);
// result = "{\n" +
// " \"addedCount\": 100\n" +
// "}";
log
.
info
(
"getInventoryAdd接口返回为:"
+
result
);
InventoryDid
ResultData
=
JSONObject
.
parseObject
(
result
,
InventoryDid
.
class
);
Integer
addedCount
=
ResultData
.
getAddedCount
();
result
=
addedCount
+
""
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
log
.
info
(
"getInventoryAdd接口错误信息为:"
+
e
.
getMessage
());
}
return
result
;
}
}
src/main/java/com/neotel/smfcore/custom/fushi/bean/FushiApiToken.java
deleted
100644 → 0
查看文件 @
fbf272d
package
com
.
neotel
.
smfcore
.
custom
.
fushi
.
bean
;
import
lombok.Data
;
@Data
public
class
FushiApiToken
{
private
String
access_token
;
private
String
refresh_token
;
}
src/main/java/com/neotel/smfcore/custom/fushi/bean/Inventory/Datas.java
deleted
100644 → 0
查看文件 @
fbf272d
package
com
.
neotel
.
smfcore
.
custom
.
fushi
.
bean
.
Inventory
;
import
lombok.Data
;
@Data
public
class
Datas
{
private
String
did
;
private
String
partNumber
;
private
String
partBarcode
;
private
String
originalPartBarcode
;
private
Integer
quantity
;
private
String
packageType
;
private
Integer
partsoutWarning
;
private
Integer
splicingWarning
;
private
String
vendorName
;
private
String
lotName
;
private
String
dateCode
;
private
String
area
;
private
String
location
;
private
String
machine
;
private
Integer
module
;
private
Integer
stageNo
;
private
Integer
slotNo
;
private
String
createdUser
;
private
String
createDate
;
private
String
updatedUser
;
private
String
updatedDate
;
private
String
dryStatus
;
private
String
boxLife
;
private
String
floorLife
;
private
String
memo
;
private
String
lightingClass
;
private
Integer
lightingLimit
;
private
String
note1
;
private
String
note2
;
private
String
note3
;
private
String
note4
;
private
boolean
useSplicing
;
private
boolean
useTrayPackage
;
private
Integer
trayStackCount
;
private
Integer
trayPickupPositionX
;
private
Integer
trayPickupPositionY
;
private
Integer
traySizeX
;
private
Integer
traySizeY
;
}
src/main/java/com/neotel/smfcore/custom/fushi/bean/Inventory/MetaData.java
deleted
100644 → 0
查看文件 @
fbf272d
package
com
.
neotel
.
smfcore
.
custom
.
fushi
.
bean
.
Inventory
;
import
lombok.Data
;
@Data
public
class
MetaData
{
private
Integer
totalCount
;
private
Integer
pageSize
;
private
Integer
pageToken
;
private
String
nextPageToken
;
}
src/main/java/com/neotel/smfcore/custom/fushi/bean/InventoryDid.java
deleted
100644 → 0
查看文件 @
fbf272d
package
com
.
neotel
.
smfcore
.
custom
.
fushi
.
bean
;
import
com.neotel.smfcore.custom.fushi.bean.Inventory.Datas
;
import
com.neotel.smfcore.custom.fushi.bean.Inventory.MetaData
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
InventoryDid
{
private
List
<
Datas
>
datas
;
private
MetaData
metadata
;
private
Integer
addedCount
;
}
src/main/java/com/neotel/smfcore/custom/fushi/controller/ManuallyPutStorageController.java
deleted
100644 → 0
查看文件 @
fbf272d
package
com
.
neotel
.
smfcore
.
custom
.
fushi
.
controller
;
import
com.neotel.smfcore.common.bean.ResultBean
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.custom.fushi.FuShiApi
;
import
com.neotel.smfcore.custom.fushi.bean.InventoryDid
;
import
io.swagger.annotations.Api
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.http.client.methods.HttpPost
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.List
;
@Api
(
tags
=
"fuShi接口"
)
@Slf4j
@RestController
@RequestMapping
(
"/manuallyPutStorage"
)
public
class
ManuallyPutStorageController
{
@Autowired
private
FuShiApi
fuShiApi
;
/***
*
* @param barcode
* @param did
*/
@RequestMapping
(
"/PutInStorage"
)
public
ResultBean
PutInStorage
(
@RequestBody
Barcode
barcode
,
@RequestParam
String
did
)
{
log
.
info
(
"调用接口PutInStorage用到的参数:"
+
barcode
+
" DiD为"
+
did
);
String
accessToken
=
fuShiApi
.
getAccessToken
();
if
(
accessToken
.
isEmpty
())
{
log
.
error
(
"调用接口getAccessToken异常"
);
return
ResultBean
.
newErrorResult
(-
1
,
""
,
"调用接口getAccessToken信息错误,数据为空"
);
}
Integer
pageSize
=
12
;
Integer
pageToken
=
0
;
List
<
String
>
inventoryList
=
fuShiApi
.
getInventoryList
(
pageSize
,
pageToken
);
if
(
inventoryList
==
null
||
inventoryList
.
size
()
==
0
)
{
log
.
error
(
"调用接口getInventoryList异常"
);
return
ResultBean
.
newErrorResult
(-
1
,
""
,
"调用接口getInventoryList信息错误,数据为空"
);
}
boolean
inFlag
=
true
;
for
(
int
i
=
0
;
i
<
inventoryList
.
size
();
i
++)
{
String
inDid
=
inventoryList
.
get
(
i
);
if
(
did
.
equals
(
inDid
))
{
inFlag
=
false
;
break
;
}
}
if
(
inFlag
)
{
String
partBarcode
=
barcode
.
getBarcode
();
Integer
quantity
=
barcode
.
getAmount
();
String
partNumber
=
barcode
.
getPartNumber
();
String
inventoryAdd
=
fuShiApi
.
getInventoryAdd
(
partBarcode
,
quantity
,
partNumber
);
if
(
""
.
equals
(
inventoryAdd
))
{
log
.
error
(
"调用接口getInventoryAdd异常"
);
return
ResultBean
.
newErrorResult
(-
1
,
""
,
"调用getInventoryAdd接口信息错误,数据为空"
);
}
}
return
ResultBean
.
newOkResult
(
"OK"
);
}
}
src/main/java/com/neotel/smfcore/custom/nexim/NeximApi.java
deleted
100644 → 0
查看文件 @
fbf272d
package
com
.
neotel
.
smfcore
.
custom
.
nexim
;
import
com.neotel.smfcore.common.utils.FileUtil
;
import
com.neotel.smfcore.common.utils.SmbUtil
;
import
com.neotel.smfcore.core.api.listener.BaseSmfApiListener
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.custom.nexim.bean.Notify
;
import
com.neotel.smfcore.custom.nexim.config.FileDirectoryConfig
;
import
com.neotel.smfcore.custom.nexim.enums.Action
;
import
com.neotel.smfcore.custom.nexim.enums.NexObject
;
import
com.neotel.smfcore.custom.nexim.util.NotifyUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
java.io.File
;
@Service
@Slf4j
public
class
NeximApi
extends
BaseSmfApiListener
{
@Override
public
boolean
isForThisApi
(
String
apiName
)
{
return
apiName
!=
null
&&
apiName
.
equalsIgnoreCase
(
"nexim"
);
}
@Override
public
void
inTaskStatusChange
(
String
inNotifyUrl
,
DataLog
task
)
{
if
(
task
.
isFinished
())
{
NotifyUtil
.
createLoadEtn
(
task
.
getBarcode
(),
task
.
getPosName
(),
task
.
getNum
(),
""
,
task
.
getW
(),
task
.
getH
(),
task
.
getPartNumber
(),
task
.
getStorageName
(),
FileDirectoryConfig
.
NOTIFY
);
}
}
@Override
public
void
outTaskStatusChange
(
String
outNotifyUrl
,
DataLog
task
)
{
if
(
task
.
isFinished
())
{
NotifyUtil
.
createLoadEtn
(
task
.
getBarcode
(),
task
.
getPosName
(),
task
.
getNum
(),
""
,
task
.
getW
(),
task
.
getH
(),
task
.
getPartNumber
(),
task
.
getStorageName
(),
FileDirectoryConfig
.
NOTIFY
);
NotifyUtil
.
createProvideEtn
(
task
.
getBarcode
(),
task
.
getPosName
(),
task
.
getNum
(),
""
,
task
.
getW
(),
task
.
getH
(),
task
.
getPartNumber
(),
task
.
getSourceName
(),
task
.
getLine
(),
task
.
getStorageName
(),
FileDirectoryConfig
.
NOTIFY
);
NotifyUtil
.
createDeleteEtn
(
task
.
getBarcode
(),
task
.
getW
(),
task
.
getH
(),
task
.
getPartNumber
(),
FileDirectoryConfig
.
NOTIFY
);
}
}
}
src/main/java/com/neotel/smfcore/custom/nexim/config/FileDirectoryConfig.java
deleted
100644 → 0
查看文件 @
fbf272d
package
com
.
neotel
.
smfcore
.
custom
.
nexim
.
config
;
public
class
FileDirectoryConfig
{
//public static final String NOTIFY = "Remoteorder\\notify\\";
public
static
final
String
NOTIFY
=
"F:\\FUJI\\remoteorder\\notify\\"
;
//public static final String INPUT = "Remoteorder\\input\\";
public
static
final
String
INPUT
=
"F:\\FUJI\\remoteorder\\line\\"
;
public
static
final
String
OUTPUT
=
"Remoteorder\\output\\"
;
}
src/main/java/com/neotel/smfcore/custom/nexim/order/OrderCheckOutService.java
deleted
100644 → 0
查看文件 @
fbf272d
此文件的差异被折叠,
点击展开。
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论