Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 4455fe9a
由
zshaohui
编写于
2025-07-11 15:07:47 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1.增加运达反馈和出库通知到mes
1 个父辈
800ad6a4
显示空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
134 行增加
和
19 行删除
src/main/java/com/neotel/smfcore/common/utils/HttpHelper.java
src/main/java/com/neotel/smfcore/common/utils/ReelLockPosUtil.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/core/system/service/po/DataLog.java
src/main/java/com/neotel/smfcore/custom/gree20242/api/GreeApi.java
src/main/resources/config/application.yml
src/main/java/com/neotel/smfcore/common/utils/HttpHelper.java
查看文件 @
4455fe9
...
...
@@ -17,16 +17,24 @@ import org.apache.http.client.methods.CloseableHttpResponse;
import
org.apache.http.client.methods.HttpGet
;
import
org.apache.http.client.methods.HttpPost
;
import
org.apache.http.client.utils.URIBuilder
;
import
org.apache.http.config.RegistryBuilder
;
import
org.apache.http.conn.socket.ConnectionSocketFactory
;
import
org.apache.http.conn.socket.PlainConnectionSocketFactory
;
import
org.apache.http.conn.ssl.NoopHostnameVerifier
;
import
org.apache.http.conn.ssl.SSLConnectionSocketFactory
;
import
org.apache.http.entity.StringEntity
;
import
org.apache.http.impl.client.CloseableHttpClient
;
import
org.apache.http.impl.client.HttpClientBuilder
;
import
org.apache.http.impl.client.HttpClients
;
import
org.apache.http.impl.conn.PoolingHttpClientConnectionManager
;
import
org.apache.http.message.BasicNameValuePair
;
import
org.apache.http.protocol.HTTP
;
import
org.apache.http.ssl.SSLContextBuilder
;
import
org.apache.http.util.EntityUtils
;
import
org.apache.logging.log4j.util.Strings
;
import
org.springframework.util.CollectionUtils
;
import
javax.net.ssl.SSLContext
;
import
java.io.*
;
import
java.net.URI
;
import
java.net.URL
;
...
...
@@ -166,7 +174,23 @@ public class HttpHelper {
}
}
try
{
CloseableHttpClient
httpClient
=
HttpClients
.
createDefault
();
SSLContext
sslContext
=
new
SSLContextBuilder
()
.
loadTrustMaterial
(
null
,
(
x509CertChain
,
authType
)
->
true
)
.
build
();
CloseableHttpClient
httpClient
=
HttpClientBuilder
.
create
()
.
setSslcontext
(
sslContext
)
.
setConnectionManager
(
new
PoolingHttpClientConnectionManager
(
RegistryBuilder
.<
ConnectionSocketFactory
>
create
()
.
register
(
"http"
,
PlainConnectionSocketFactory
.
INSTANCE
)
.
register
(
"https"
,
new
SSLConnectionSocketFactory
(
sslContext
,
NoopHostnameVerifier
.
INSTANCE
))
.
build
()
))
.
build
();
//CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpResponse
response
=
httpClient
.
execute
(
httpPost
);
HttpEntity
entity
=
response
.
getEntity
();
String
responseContent
=
EntityUtils
.
toString
(
entity
,
CONTENT_CHARSET
);
...
...
src/main/java/com/neotel/smfcore/common/utils/ReelLockPosUtil.java
查看文件 @
4455fe9
package
com
.
neotel
.
smfcore
.
common
.
utils
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Maps
;
import
com.neotel.smfcore.core.device.util.DataCache
;
...
...
@@ -44,8 +45,9 @@ public class ReelLockPosUtil {
* @param reelLockPosInfo
*/
public
static
synchronized
ReelLockPosInfo
addReelLockPosInfo
(
ReelLockPosInfo
reelLockPosInfo
,
List
<
String
>
cidList
)
{
log
.
info
(
"为["
+
reelLockPosInfo
.
getBarcode
()
+
"]锁定库位["
+
reelLockPosInfo
.
getLockPosName
()
+
"]"
);
ReelLockPosInfo
oldLocInfo
=
reelLocKPosMap
.
get
(
reelLockPosInfo
.
getBarcode
());
String
key
=
processBarcode
(
reelLockPosInfo
.
getBarcode
());
log
.
info
(
"为["
+
reelLockPosInfo
.
getBarcode
()
+
"]锁定库位["
+
reelLockPosInfo
.
getLockPosName
()
+
"],key=["
+
key
+
"]"
);
ReelLockPosInfo
oldLocInfo
=
reelLocKPosMap
.
get
(
key
);
if
(
oldLocInfo
!=
null
&&
oldLocInfo
.
getLockPosName
()
!=
null
)
{
if
(
cidList
.
contains
(
oldLocInfo
.
getCid
())){
log
.
info
(
"["
+
oldLocInfo
.
getBarcode
()
+
"]已有锁定库位["
+
oldLocInfo
.
getLockPosName
()
+
"],返回之前锁定的库位"
);
...
...
@@ -53,7 +55,7 @@ public class ReelLockPosUtil {
}
else
{
//锁定库位不在cid列表中
log
.
info
(
"["
+
oldLocInfo
.
getBarcode
()
+
"]已有锁定库位["
+
oldLocInfo
.
getLockPosName
()
+
"],Cid["
+
oldLocInfo
.
getCid
()+
"]不在["
+
String
.
join
(
","
,
cidList
)+
"]中,清理原有锁定库位"
);
reelLocKPosMap
.
remove
(
reelLockPosInfo
.
getBarcode
()
);
reelLocKPosMap
.
remove
(
key
);
}
}
for
(
ReelLockPosInfo
locInfo
:
reelLocKPosMap
.
values
())
{
...
...
@@ -62,7 +64,7 @@ public class ReelLockPosUtil {
return
null
;
}
}
reelLocKPosMap
.
put
(
reelLockPosInfo
.
getBarcode
()
,
reelLockPosInfo
);
reelLocKPosMap
.
put
(
key
,
reelLockPosInfo
);
dataCache
.
updateCache
(
REEL_LOCK_POS_MAP_KEY
,
reelLocKPosMap
);
return
reelLockPosInfo
;
}
...
...
@@ -74,7 +76,7 @@ public class ReelLockPosUtil {
String
lockBarcode
=
reelLockPosInfo
.
getBarcode
();
if
(
org
.
apache
.
logging
.
log4j
.
util
.
Strings
.
isNotBlank
(
lockBarcode
))
{
if
(
lockBarcode
.
equals
(
barcode
))
{
if
(
lockBarcode
.
equals
(
processBarcode
(
barcode
)
))
{
return
reelLockPosInfo
;
}
}
...
...
@@ -89,7 +91,7 @@ public class ReelLockPosUtil {
* 清理条码锁定库位信息
*/
public
static
void
removeReelLockPosInfo
(
String
barcode
)
{
reelLocKPosMap
.
remove
(
barcode
);
reelLocKPosMap
.
remove
(
processBarcode
(
barcode
)
);
dataCache
.
updateCache
(
REEL_LOCK_POS_MAP_KEY
,
reelLocKPosMap
);
}
...
...
@@ -100,7 +102,7 @@ public class ReelLockPosUtil {
* @return
*/
public
static
String
getReelLockPosId
(
String
barcode
)
{
ReelLockPosInfo
lockPosInfo
=
reelLocKPosMap
.
get
(
barcode
);
ReelLockPosInfo
lockPosInfo
=
reelLocKPosMap
.
get
(
processBarcode
(
barcode
)
);
if
(
lockPosInfo
!=
null
)
{
return
lockPosInfo
.
getLockPosId
();
}
...
...
@@ -117,4 +119,16 @@ public class ReelLockPosUtil {
}
return
lockPosIds
;
}
private
static
String
processBarcode
(
String
str
)
{
if
(
ObjectUtil
.
isEmpty
(
str
))
{
return
str
;
}
if
(
str
.
contains
(
"."
))
{
String
res
=
str
.
replace
(
"."
,
"__"
);
return
res
;
}
else
{
return
str
;
}
}
}
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
4455fe9
...
...
@@ -562,6 +562,8 @@ public class LiteOrderCache {
task
.
setLightColor
(
nextColor
.
getRgb
());
task
.
setStatus
(
OP_STATUS
.
WAIT
.
name
());
task
.
setSingleOut
(
singleOut
);
task
.
setLine
(
cacheOrder
.
getLine
());
task
.
setSo
(
cacheOrder
.
getSo
());
// task = dataLogDao.save(task);
taskService
.
addTaskToExecute
(
task
);
...
...
src/main/java/com/neotel/smfcore/core/system/service/po/DataLog.java
查看文件 @
4455fe9
...
...
@@ -237,6 +237,17 @@ public class DataLog extends BasePo implements Serializable ,Comparable<DataLog>
* 供应商编号
*/
private
String
providerNumber
;
/**
* 线体
*/
private
String
line
;
/**
* 工单号
*/
private
String
so
;
/**
* MSD附加信息
*/
...
...
src/main/java/com/neotel/smfcore/custom/gree20242/api/GreeApi.java
查看文件 @
4455fe9
package
com
.
neotel
.
smfcore
.
custom
.
gree20242
.
api
;
import
com.alibaba.fastjson.JSON
;
import
com.neotel.smfcore.common.exception.ApiException
;
import
com.neotel.smfcore.common.kafka.KafkaMsgUtil
;
import
com.neotel.smfcore.common.utils.HttpHelper
;
import
com.neotel.smfcore.common.utils.JsonUtil
;
import
com.neotel.smfcore.common.utils.StringUtils
;
import
com.neotel.smfcore.core.api.listener.BaseSmfApiListener
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.order.service.po.LiteOrder
;
import
com.neotel.smfcore.core.shelf.bean.ShelfInfo
;
import
com.neotel.smfcore.core.shelf.bean.ShelfLoc
;
import
com.neotel.smfcore.core.shelf.util.TaskShelfUtil
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.custom.gree20242.bean.GreeRequestMsg
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -11,7 +19,9 @@ import org.apache.kafka.clients.producer.Callback;
import
org.apache.kafka.clients.producer.RecordMetadata
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
@Slf4j
...
...
@@ -54,19 +64,72 @@ public class GreeApi extends BaseSmfApiListener {
}
@Override
public
void
shelfArriveLine
(
String
arriveLineUrl
,
LiteOrder
liteOrder
,
String
shelfId
)
{
Map
<
String
,
String
>
params
=
new
HashMap
<>();
param
s
.
put
(
"shelfId"
,
shelfId
);
param
s
.
put
(
"hSerial"
,
liteOrder
.
getOrderNo
());
param
s
.
put
(
"s
o"
,
liteOrder
.
getSo
());
param
s
.
put
(
"line"
,
liteOrder
.
getLine
()
);
public
void
shelfArriveLine
(
String
arriveLineUrl
,
LiteOrder
liteOrder
,
String
shelfId
)
{
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
param
Map
.
put
(
"hSerial"
,
liteOrder
.
getOrderNo
()
);
param
Map
.
put
(
"workCenterCode"
,
liteOrder
.
getLine
());
param
Map
.
put
(
"orderN
o"
,
liteOrder
.
getSo
());
param
Map
.
put
(
"shelfId"
,
shelfId
);
GreeRequestMsg
msg
=
GreeRequestMsg
.
newMsg
(
arriveLineUrl
,
params
);
boolean
result
=
SendMsg
(
arriveLineUrl
,
msg
);
List
<
Map
<
String
,
Object
>>
reelList
=
new
ArrayList
<>();
ShelfInfo
shelfInfo
=
TaskShelfUtil
.
findShelfByRealRfid
(
shelfId
);
if
(
shelfInfo
!=
null
)
{
List
<
ShelfLoc
>
locList
=
shelfInfo
.
getLocList
();
if
(
locList
!=
null
&&
!
locList
.
isEmpty
())
{
for
(
ShelfLoc
shelfLoc
:
locList
)
{
String
barcodeStr
=
shelfLoc
.
getBarcode
();
if
(
StringUtils
.
isNotEmpty
(
barcodeStr
))
{
Barcode
barcode
=
barcodeManager
.
findByBarcode
(
barcodeStr
);
if
(
barcode
!=
null
)
{
Map
<
String
,
Object
>
reelMap
=
new
HashMap
<>();
reelMap
.
put
(
"barcode"
,
barcode
.
getBarcode
());
reelMap
.
put
(
"qty"
,
barcode
.
getAmount
());
reelMap
.
put
(
"partNum"
,
barcode
.
getPartNumber
());
reelList
.
add
(
reelMap
);
}
}
}
}
}
paramMap
.
put
(
"reels"
,
reelList
);
log
.
info
(
liteOrder
.
getOrderNo
()
+
",到达产线,通知mes信息为:"
+
JSON
.
toJSONString
(
paramMap
)
+
",地址为:"
+
arriveLineUrl
);
try
{
String
resultStr
=
HttpHelper
.
postJson
(
arriveLineUrl
,
paramMap
);
log
.
info
(
liteOrder
.
getOrderNo
()
+
",到达产线,通知mes返回信息为:"
+
resultStr
);
}
catch
(
ApiException
e
)
{
e
.
printStackTrace
();
log
.
error
(
liteOrder
.
getOrderNo
()
+
",到达产线,通知mes报错:"
,
e
);
}
}
@Override
public
void
outTaskStatusChange
(
String
outNotifyUrl
,
DataLog
task
)
{
if
(
task
.
isFinished
())
{
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
paramMap
.
put
(
"barcode"
,
task
.
getBarcode
());
paramMap
.
put
(
"partNum"
,
task
.
getPartNumber
());
paramMap
.
put
(
"qty"
,
task
.
getNum
());
paramMap
.
put
(
"orderNo"
,
task
.
getSourceName
());
paramMap
.
put
(
"workCenterCode"
,
task
.
getLine
());
paramMap
.
put
(
"so"
,
task
.
getSourceId
());
paramMap
.
put
(
"shelfId"
,
task
.
getRealRfid
());
log
.
info
(
task
.
getBarcode
()
+
",放到料架上,通知mes信息为:"
+
JSON
.
toJSONString
(
paramMap
)
+
",地址为:"
+
outNotifyUrl
);
try
{
String
resultStr
=
HttpHelper
.
postJson
(
outNotifyUrl
,
paramMap
);
log
.
info
(
task
.
getBarcode
()
+
",放到料架上,通知mes返回信息为:"
+
resultStr
);
}
catch
(
ApiException
e
)
{
e
.
printStackTrace
();
log
.
error
(
task
.
getBarcode
()
+
",放到料架上,通知mes报错:"
,
e
);
}
}
}
public
boolean
SendMsg
(
String
url
,
GreeRequestMsg
msgBean
)
{
public
boolean
SendMsg
(
String
url
,
GreeRequestMsg
msgBean
)
{
//url地址配置为发送主题
String
msg
=
JsonUtil
.
toJsonStr
(
msgBean
);
...
...
src/main/resources/config/application.yml
查看文件 @
4455fe9
...
...
@@ -2,10 +2,11 @@ server:
port
:
8800
api
:
name
:
name
:
20242
inCheckUrl
:
outNotifyUrl
:
outNotifyUrl
:
https://gaolan-gateway.gree.com/gaolan-service-mes-kzq-work/MaterialRequisition/issueNotification
inNotifyUrl
:
arriveLineUrl
:
https://gaolan-gateway.gree.com/gaolan-service-mes-kzq-work/MaterialRequisition/yundaFeedback
#mqtt配置
com
:
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论