Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
杨树贤
/
liexin_scm_wms_sync
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
b8888b6d
authored
May 15, 2020
by
mushishixian
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
修复bug
parent
2e4514cf
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
71 additions
and
52 deletions
cmd/queue/sync_audit_status/main.go
cmd/queue/sync_audit_status/product/product_status_queue.go
cmd/queue/sync_out_store/product/product.go
cmd/queue/sync_status/main.go
internal/logic/sync_log.go
internal/service/dingding.go
main.go
cmd/queue/sync_audit_status/main.go
View file @
b8888b6d
...
@@ -50,7 +50,7 @@ func (t *RecvPro) Consumer(dataByte []byte) (err error) {
...
@@ -50,7 +50,7 @@ func (t *RecvPro) Consumer(dataByte []byte) (err error) {
goto
ERR
goto
ERR
}
}
if
message
.
SyncName
==
"in_store"
||
message
.
SyncName
==
"out_store"
{
if
message
.
SyncName
==
"in_store"
||
message
.
SyncName
==
"out_store"
{
//得到入库数据以后,去组装金蝶需要的数据
//得到入库数据以后,去组装金蝶需要的数据
storeErpData
=
map
[
string
]
interface
{}{
storeErpData
=
map
[
string
]
interface
{}{
"FSourceBillID"
:
message
.
Data
.
ErpStoreId
,
"FSourceBillID"
:
message
.
Data
.
ErpStoreId
,
...
@@ -67,9 +67,12 @@ func (t *RecvPro) Consumer(dataByte []byte) (err error) {
...
@@ -67,9 +67,12 @@ func (t *RecvPro) Consumer(dataByte []byte) (err error) {
})
})
}
}
storeErpData
[
"FEntrys"
]
=
inStoreErpGoods
storeErpData
[
"FEntrys"
]
=
inStoreErpGoods
fmt
.
Println
(
storeErpData
)
jsonByte
,
_
=
json
.
Marshal
(
storeErpData
)
jsonByte
,
_
=
json
.
Marshal
(
storeErpData
)
}
}
//出入库金蝶那边可能会延迟,所以要进行延迟推送
if
message
.
SyncName
==
"in_store"
||
message
.
SyncName
==
"out_store"
{
time
.
Sleep
(
5
*
time
.
Second
)
}
//得到message以后,去请求金蝶的接口
//得到message以后,去请求金蝶的接口
if
err
=
SyncErpAuditStatus
(
message
.
SyncName
,
message
.
Data
.
ErpStoreId
,
string
(
jsonByte
));
err
!=
nil
{
if
err
=
SyncErpAuditStatus
(
message
.
SyncName
,
message
.
Data
.
ErpStoreId
,
string
(
jsonByte
));
err
!=
nil
{
goto
ERR
goto
ERR
...
@@ -161,7 +164,7 @@ func CheckBillDataRequest(syncName, billId string, res *gosoap.Response) (err er
...
@@ -161,7 +164,7 @@ func CheckBillDataRequest(syncName, billId string, res *gosoap.Response) (err er
}
}
func
(
t
*
RecvPro
)
FailAction
(
dataByte
[]
byte
)
error
{
func
(
t
*
RecvPro
)
FailAction
(
dataByte
[]
byte
)
error
{
fmt
.
Println
(
"任务处理失败了,发送钉钉消息通知主人"
)
service
.
SendDingTalkRobotToApi
(
fmt
.
Sprintf
(
"存在尝试3次都同步失败的审核队列,队列信息为:%s"
,
string
(
dataByte
))
)
return
nil
return
nil
}
}
...
...
cmd/queue/sync_audit_status/product/product_status_queue.go
View file @
b8888b6d
...
@@ -9,6 +9,10 @@ import (
...
@@ -9,6 +9,10 @@ import (
func
main
()
()
{
func
main
()
()
{
message
:=
`{"SyncName":"in_store","Data":{"erp_store_id":"FGipxV9OSXGWVCgqefjkesBZJbY=","detail":[{"number":"10.0000","erp_entry_sn":"mJ4W+QdYQoWe0WCnzEOJou0oFFw=","country":""},{"number":"900.0000","erp_entry_sn":"z0ULke\/wRhC5cQFzZZT4WO0oFFw=","country":""}],"pallet_number":1,"pallet_weight":"0.0000","box_number":1,"box_weight":"0.0000"}}`
message
:=
`{"SyncName":"in_store","Data":{"erp_store_id":"FGipxV9OSXGWVCgqefjkesBZJbY=","detail":[{"number":"10.0000","erp_entry_sn":"mJ4W+QdYQoWe0WCnzEOJou0oFFw=","country":""},{"number":"900.0000","erp_entry_sn":"z0ULke\/wRhC5cQFzZZT4WO0oFFw=","country":""}],"pallet_number":1,"pallet_weight":"0.0000","box_number":1,"box_weight":"0.0000"}}`
message
=
`{"SyncName":"out_store","Data":{"erp_store_id":"Ncx3gMUSSEml7z2jL1\/p\/u+cpps=","box_number":1,"pallet_number":0,"detail":[{"erp_entry_sn":"123131","number":"25.0000","box_id":"39","pallet_id":0}]}}`
message
=
`{"SyncName":"out_store","Data":{"erp_store_id":"Ncx3gMUSSEml7z2jL1\/p\/u+cpps=","box_number":1,"pallet_number":0,"detail":[{"erp_entry_sn":"123131","number":"25.0000","box_id":"39","pallet_id":0}]}}`
message
=
`{"SyncName":"in_store","Data":{"erp_store_id":"ibn\/BoPESE+jP5olU7sjl8BZJbY=","detail":[{"number":"100.0000","erp_entry_sn":"Nn9vCo1nRNip2jzdHLDN0e0oFFw=","country":"127"}],"pallet_number":1,"pallet_weight":"0.0000","box_number":1,"box_weight":"0.0000"}}`
message
=
`{"SyncName":"in_store","Data":{"erp_store_id":"MYDb7OZMQeS6cSN7TO8r+sBZJbY=","detail":[{"number":"200.0000","erp_entry_sn":"RbAldie8SiGLuPFp5WvY9e0oFFw=","country":"107"}],"pallet_number":0,"pallet_weight":"0","box_number":1,"box_weight":"0.0000"}}`
message
=
`{"SyncName":"in_store","Data":{"erp_store_id":"aou1scjXStuIAw4aB7m1rMBZJbY=","detail":[{"number":"200.0000","erp_entry_sn":"qpnQLQvyRyKQBttqm9YmAO0oFFw=","country":"112"}],"pallet_number":0,"pallet_weight":"0","box_number":1,"box_weight":"0.0000"}}`
message
=
`{"SyncName":"in_store","Data":{"erp_store_id":"aou1scjXStuIAw4aB7m1rMBZJbY=","detail":[{"number":"200.0000","erp_entry_sn":"qpnQLQvyRyKQBttqm9YmAO0oFFw=","country":"112"}],"pallet_number":0,"pallet_weight":"0","box_number":1,"box_weight":"0.0000"}}`
fmt
.
Println
(
message
)
fmt
.
Println
(
message
)
queueExchange
:=
rabbitmq
.
QueueExchange
{
queueExchange
:=
rabbitmq
.
QueueExchange
{
"store_audit_status"
,
"store_audit_status"
,
...
...
cmd/queue/sync_out_store/product/product.go
View file @
b8888b6d
...
@@ -58,6 +58,7 @@ func main() {
...
@@ -58,6 +58,7 @@ func main() {
}
}
body
:=
string
(
data
)
body
:=
string
(
data
)
body
=
`{"type":"save","data":{"FEntrustBillNo":"B05438","FWarehouseNo":"002","FDeliveryTypeNo":"deliveryTerms0003","FPrincipalNo":"WT00683","FSourceBillID":"7aJKpxihRW+LqF7MXDosLO+cpps=","FEntrys":[{"FQty":20,"FSourceBillEntryID":"EYTqfK7nT46e1Ek63QR6dcLaWpc=","FMaterialID":"Hcew0urxRmKVS4bYh6rDQ0QJ5/A=","FUnit":"\u4E2A","FBrand":"BRAND","FOriginCountry":"115","CFIsInsp":false,"FPrice":3.0045,"FGoods":"\u7535\u78C1\u5E72\u6270\u6EE4\u6CE2\u5668","FModel":"sfg"}],"FIsCustoms":true,"FErpPostRequistionBillNo":"FKFH202005147729"}}`
body
=
`{"type":"save","data":{"FEntrustBillNo":"B05438","FWarehouseNo":"002","FDeliveryTypeNo":"deliveryTerms0003","FPrincipalNo":"WT00683","FSourceBillID":"7aJKpxihRW+LqF7MXDosLO+cpps=","FEntrys":[{"FQty":20,"FSourceBillEntryID":"EYTqfK7nT46e1Ek63QR6dcLaWpc=","FMaterialID":"Hcew0urxRmKVS4bYh6rDQ0QJ5/A=","FUnit":"\u4E2A","FBrand":"BRAND","FOriginCountry":"115","CFIsInsp":false,"FPrice":3.0045,"FGoods":"\u7535\u78C1\u5E72\u6270\u6EE4\u6CE2\u5668","FModel":"sfg"}],"FIsCustoms":true,"FErpPostRequistionBillNo":"FKFH202005147729"}}`
body
=
`{"Type":"save","Data":{"FWarehouseNo":"002","FErpPostRequistionBillNo":"FKFH202005147730","FIsCustoms":true,"FSourceBillID":"eRoPxET5QsGpiG/+k153z++cpps=","FRecPerson":"","FPrincipalNo":"WT00655","FDeliveryTypeNo":"deliveryTerms0001","FRecPersonContact":"","FRecPersonAddress":"","Remark":"","FEntrustBillNo":"B05448","FEntrys":[{"FQty":60,"FMaterialID":"LBQDhMUhQF2WFB20c54Qu0QJ5/A=","FBrand":"JST","FPrice":5.0077,"FSourceBillEntryID":"AJ6EYRbSSICvCxd/CZeciMLaWpc=","FModel":"04CPT-B1-2A","FGoods":"二极管","FUnit":"个","CFIsInsp":false,"Fremark":"","FOriginCountry":"137"}]}}`
queueExchange
:=
rabbitmq
.
QueueExchange
{
queueExchange
:=
rabbitmq
.
QueueExchange
{
"store_out"
,
"store_out"
,
"store_out"
,
"store_out"
,
...
...
cmd/queue/sync_status/main.go
View file @
b8888b6d
...
@@ -33,6 +33,11 @@ func (t *RecvPro) Consumer(dataByte []byte) error {
...
@@ -33,6 +33,11 @@ func (t *RecvPro) Consumer(dataByte []byte) error {
if
err
=
json
.
Unmarshal
(
dataByte
,
&
message
);
err
!=
nil
{
if
err
=
json
.
Unmarshal
(
dataByte
,
&
message
);
err
!=
nil
{
goto
ERR
goto
ERR
}
}
//出入库金蝶那边可能会延迟,所以要进行延迟推送
if
message
.
SyncName
==
"inStore"
||
message
.
SyncName
==
"outStore"
{
time
.
Sleep
(
5
*
time
.
Second
)
}
fmt
.
Println
(
message
.
SyncName
)
//得到message以后,去请求金蝶的接口
//得到message以后,去请求金蝶的接口
if
err
=
SyncErpDataStatus
(
message
.
SyncName
,
message
.
ErpId
);
err
!=
nil
{
if
err
=
SyncErpDataStatus
(
message
.
SyncName
,
message
.
ErpId
);
err
!=
nil
{
goto
ERR
goto
ERR
...
@@ -50,6 +55,10 @@ ERR:
...
@@ -50,6 +55,10 @@ ERR:
}
}
logic
.
LogError
(
syncStatusLog
.
SyncError
)
logic
.
LogError
(
syncStatusLog
.
SyncError
)
service
.
SendDingTalkRobotToApi
(
syncStatusLog
.
SyncError
)
service
.
SendDingTalkRobotToApi
(
syncStatusLog
.
SyncError
)
//出入库金蝶那边可能会延迟,所以要进行重试
if
message
.
SyncName
==
"inStore"
||
message
.
SyncName
==
"outStore"
{
return
errors
.
New
(
"重试错误"
)
}
return
nil
return
nil
}
}
...
@@ -183,7 +192,7 @@ func CheckBillDataRequest(syncName, uniqueId string, res *gosoap.Response) (err
...
@@ -183,7 +192,7 @@ func CheckBillDataRequest(syncName, uniqueId string, res *gosoap.Response) (err
}
}
func
(
t
*
RecvPro
)
FailAction
(
dataByte
[]
byte
)
error
{
func
(
t
*
RecvPro
)
FailAction
(
dataByte
[]
byte
)
error
{
fmt
.
Println
(
"任务处理失败了,发送钉钉消息通知主人"
)
service
.
SendDingTalkRobotToApi
(
fmt
.
Sprintf
(
"存在尝试3次都同步失败的审核队列,队列信息为:%s"
,
string
(
dataByte
))
)
return
nil
return
nil
}
}
...
...
internal/logic/sync_log.go
View file @
b8888b6d
...
@@ -11,7 +11,7 @@ import (
...
@@ -11,7 +11,7 @@ import (
)
)
func
init
()
{
func
init
()
{
logs
.
SetLogger
(
logs
.
AdapterFile
,
`{"filename":"logs/error.log","level":7,"maxlines":0,"maxsize":0,"daily":true,"maxdays":10,"color":true}`
)
logs
.
SetLogger
(
logs
.
AdapterFile
,
`{"filename":"logs/error.log","level":7,"maxlines":0,"maxsize":0,"daily":true,"maxdays":10,"color":true}`
)
logs
.
Async
()
logs
.
Async
()
}
}
...
@@ -29,24 +29,26 @@ func LogError(msg string) {
...
@@ -29,24 +29,26 @@ func LogError(msg string) {
}
}
func
DealSyncError
(
dataByte
[]
byte
,
uniqueId
,
syncName
string
,
err
error
)
error
{
func
DealSyncError
(
dataByte
[]
byte
,
uniqueId
,
syncName
string
,
err
error
)
error
{
//还要存到一个统一错误表
go
func
()
{
syncLog
:=
model
.
SyncLog
{
//还要存到一个统一错误表
AddTime
:
time
.
Now
()
.
Unix
(),
syncLog
:=
model
.
SyncLog
{
SyncTime
:
time
.
Now
()
.
Unix
(),
AddTime
:
time
.
Now
()
.
Unix
(),
QueueMessage
:
string
(
dataByte
),
SyncTime
:
time
.
Now
()
.
Unix
(),
UniqueId
:
uniqueId
,
QueueMessage
:
string
(
dataByte
),
SyncError
:
err
.
Error
(),
UniqueId
:
uniqueId
,
SyncName
:
syncName
,
SyncError
:
err
.
Error
(),
}
SyncName
:
syncName
,
if
err
=
InsertSyncLog
(
syncLog
);
err
!=
nil
{
}
service
.
SendDingTalkRobotToApi
(
err
.
Error
())
if
err
=
InsertSyncLog
(
syncLog
);
err
!=
nil
{
}
service
.
SendDingTalkRobotToApi
(
err
.
Error
())
}
//发送钉钉错误消息
msg
,
_
:=
json
.
Marshal
(
syncLog
)
//发送钉钉错误消息
service
.
SendDingTalkRobotToApi
(
string
(
msg
))
msg
,
_
:=
json
.
Marshal
(
syncLog
)
service
.
SendDingTalkRobotToApi
(
string
(
msg
))
//保存日志
logs
.
Error
(
fmt
.
Sprintf
(
"%s"
,
string
(
msg
)))
//保存日志
logs
.
Error
(
fmt
.
Sprintf
(
"%s"
,
string
(
msg
)))
}()
return
nil
return
nil
}
}
internal/service/dingding.go
View file @
b8888b6d
...
@@ -56,26 +56,24 @@ func SendDingTalkRobotToApi(content string) {
...
@@ -56,26 +56,24 @@ func SendDingTalkRobotToApi(content string) {
}
}
func
SendDingTalkRobotToApi1
(
content
string
)
{
func
SendDingTalkRobotToApi1
(
content
string
)
{
go
func
()
{
var
(
var
(
requestData
DingDingRequest
requestData
DingDingRequest
apiUrl
,
token
string
apiUrl
,
token
string
//resp *req.Resp
//resp *req.Resp
err
error
err
error
)
)
content
=
"仓储同步告警 : "
+
content
content
=
"仓储同步告警 : "
+
content
requestData
.
MsgType
=
"text"
requestData
.
MsgType
=
"text"
requestData
.
Text
=
map
[
string
]
string
{
requestData
.
Text
=
map
[
string
]
string
{
"content"
:
content
,
"content"
:
content
,
}
}
req
.
Debug
=
false
req
.
Debug
=
false
requestData
.
IsAtAll
=
false
requestData
.
IsAtAll
=
false
token
=
"3c048caba514a5252aa8bdbb3e10994def6409a2f0d5212e5626c1a071152ec3"
token
=
"3c048caba514a5252aa8bdbb3e10994def6409a2f0d5212e5626c1a071152ec3"
apiUrl
=
"https://api.ichunt.com/public/dingtalkrobot?access_token="
+
token
apiUrl
=
"https://api.ichunt.com/public/dingtalkrobot?access_token="
+
token
params
:=
req
.
BodyJSON
(
requestData
)
params
:=
req
.
BodyJSON
(
requestData
)
_
,
err
=
req
.
Post
(
apiUrl
,
params
)
_
,
err
=
req
.
Post
(
apiUrl
,
params
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
err
)
fmt
.
Println
(
err
)
}
}
}()
}
}
main.go
View file @
b8888b6d
...
@@ -20,7 +20,7 @@ type PayloadItem struct {
...
@@ -20,7 +20,7 @@ type PayloadItem struct {
Timestamp
int64
`json:"timestamp"`
Timestamp
int64
`json:"timestamp"`
Step
int
`json:"step"`
Step
int
`json:"step"`
Value
float64
`json:"value"`
Value
float64
`json:"value"`
CounterType
string
`json:"counter
_t
ype"`
CounterType
string
`json:"counter
T
ype"`
Tags
string
`json:"tags"`
Tags
string
`json:"tags"`
}
}
...
@@ -31,19 +31,21 @@ func pushAlive() {
...
@@ -31,19 +31,21 @@ func pushAlive() {
item
PayloadItem
item
PayloadItem
url
string
url
string
//resp *req.Resp
//resp *req.Resp
err
error
err
error
)
)
item
=
PayloadItem
{
item
=
PayloadItem
{
Endpoint
:
"
store_sync
"
,
Endpoint
:
"
wms-server
"
,
Metric
:
"
alive_check
"
,
Metric
:
"
scm_wms_server
"
,
Timestamp
:
time
.
Now
()
.
Unix
(),
Timestamp
:
time
.
Now
()
.
Unix
(),
Step
:
60
,
Step
:
60
,
CounterType
:
"GAUGE"
,
CounterType
:
"GAUGE"
,
Value
:
float64
(
time
.
Now
()
.
Unix
())
,
Value
:
1
,
Tags
:
"
service=store_
sync"
,
Tags
:
"
type=check_alive/
sync"
,
}
}
payload
=
append
(
payload
,
item
)
payload
=
append
(
payload
,
item
)
param
:=
req
.
BodyJSON
(
&
payload
)
param
:=
req
.
BodyJSON
(
&
payload
)
//temp,_:=json.Marshal(payload)
//fmt.Println(string(temp))
req
.
Debug
=
false
req
.
Debug
=
false
url
=
configs
.
OpenFalconPushUrl
url
=
configs
.
OpenFalconPushUrl
_
,
err
=
req
.
Post
(
url
,
param
)
_
,
err
=
req
.
Post
(
url
,
param
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment