gigibox
2023-06-20 4983adc4d20798a980025be4cd45c77558c74265
完成查询接口
2 文件已重命名
10个文件已修改
168 ■■■■ 已修改文件
.gitignore 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
config.json 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
config/config.go 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
go.mod 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
go.sum 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
gui/gui.go 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
kingdee/db.go 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
kingdee/query.go 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main.go 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
nsqclient/client.go 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
report/loop.go 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
report/tasks.go 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
.gitignore
@@ -1,5 +1,4 @@
.idea
.vscode
kingdee-dbapi.exe
*.tmp
kingdee-api.db
kingdee-*
*.tmp
config.json
@@ -1,14 +1,15 @@
{
    "web_port": "10210",
    "sql_addr": "10.6.201.7",
    "sql_addr": "os.smartai.com",
    "sql_db_name": "LZGS",
    "sql_username": "webapi",
    "sql_password": "api2023",
    "sql_username": "sa",
    "sql_password": "basic@2023",
    "nsq_server": "fai365.com:4150",
    "nsq_webapi": "http://121.31.232.83:9080/api/nsq/pub?topic=your_topic",
    "order_topic": "aps.wangpengfei.erp.seorder",
    "inventory_topic": "aps.wangpengfei.erp.inventory",
    "query_topic": "aps.wangpengfei.erp.k3resource",
    "reply_topic": "aps.wangpengfei.erp.k3repley",
    "interval": 60,
    "debug": false
}
config/config.go
@@ -19,6 +19,7 @@
    OrderTopic     string `json:"order_topic"`     // 订单上报的topic
    InventoryTopic string `json:"inventory_topic"` // 库存上报的topic
    QueryTopic     string `json:"query_topic"`     // 金蝶查询接口的topic
    ReplyTopic     string `json:"reply_topic"`     // 金蝶响应查询接口的topic
    SyncInterval   int    `json:"interval"`        // 同步的时间间隔, 单位/秒
    Debug          bool   `json:"debug"`           // 本地调试, 取本地数据
}
@@ -38,6 +39,7 @@
    Options.OrderTopic = "aps.factory.erp.seorder"
    Options.InventoryTopic = "aps.factory.erp.inventory"
    Options.QueryTopic = "aps.factory.erp.k3resource"
    Options.ReplyTopic = "aps.factory.erp.k3reply"
    Options.SyncInterval = 60
    Options.Debug = false
}
go.mod
@@ -3,11 +3,11 @@
go 1.14
require (
    fyne.io/fyne v1.4.3 // indirect
    fyne.io/fyne v1.4.3
    fyne.io/fyne/v2 v2.3.4
    github.com/fatedier/beego v1.7.2 // indirect
    github.com/flopp/go-findfont v0.1.0 // indirect
    github.com/gin-gonic/gin v1.7.0 // indirect
    github.com/jinzhu/gorm v1.9.16 // indirect
    github.com/nsqio/go-nsq v1.1.0 // indirect
    github.com/fatedier/beego v1.7.2
    github.com/flopp/go-findfont v0.1.0
    github.com/gin-gonic/gin v1.7.0
    github.com/jinzhu/gorm v1.9.16
    github.com/nsqio/go-nsq v1.1.0
)
go.sum
@@ -46,11 +46,9 @@
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/Kodeworks/golang-image-ico v0.0.0-20141118225523-73f0f4cfade9 h1:1ltqoej5GtaWF8jaiA49HwsZD459jqm9YFz9ZtMFpQA=
github.com/Kodeworks/golang-image-ico v0.0.0-20141118225523-73f0f4cfade9/go.mod h1:7uhhqiBaR4CpN0k9rMjOtjpcfGd6DG2m04zQxKnWQ0I=
github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
github.com/akavel/rsrc v0.8.0/go.mod h1:uLoCtb9J+EyAqh+26kdrTgmzRBFPGOolLWKpdxkKq+c=
github.com/akavel/rsrc v0.10.2 h1:Zxm8V5eI1hW4gGaYsJQUhxpjkENuG91ki8B4zCrvEsw=
github.com/akavel/rsrc v0.10.2/go.mod h1:uLoCtb9J+EyAqh+26kdrTgmzRBFPGOolLWKpdxkKq+c=
github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
@@ -83,6 +81,7 @@
github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5 h1:Yzb9+7DPaBjB8zlTR87/ElzFsnQfuHnVUVqpZZIcV5Y=
github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0=
github.com/fatedier/beego v1.7.2 h1:kVw3oKiXccInqG+Z/7l8zyRQXrsCQEfcUxgzfGK+R8g=
github.com/fatedier/beego v1.7.2/go.mod h1:wx3gB6dbIfBRcucp94PI9Bt3I0F2c/MyNEWuhzpWiwk=
@@ -118,6 +117,7 @@
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20221017161538-93cebf72946b h1:GgabKamyOYguHqHjSkDACcgoPIz3w0Dis/zJ1wyHHHU=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20221017161538-93cebf72946b/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A=
github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q=
github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
@@ -125,6 +125,7 @@
github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE=
github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs=
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/go-text/typesetting v0.0.0-20230405155246-bf9c697c6e16 h1:DvHeDNqK8cxdZ7C6y88pt3uE7euZH7/LluzyfnUfH/Q=
github.com/go-text/typesetting v0.0.0-20230405155246-bf9c697c6e16/go.mod h1:zvWM81wAVW6QfVDI6yxfbCuoLnobSYTuMsrXU/u11y8=
@@ -185,6 +186,7 @@
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
@@ -235,16 +237,15 @@
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
github.com/jackmordaunt/icns v0.0.0-20181231085925-4f16af745526 h1:NfuKjkj/Xc2z1xZIj+EmNCm5p1nKJPyw3F4E20usXvg=
github.com/jackmordaunt/icns v0.0.0-20181231085925-4f16af745526/go.mod h1:UQkeMHVoNcyXYq9otUupF7/h/2tmHlhrS2zw7ZVvUqc=
github.com/jackmordaunt/icns/v2 v2.2.1/go.mod h1:6aYIB9eSzyfHHMKqDf17Xrs1zetQPReAkiUSHzdw4cI=
github.com/jinzhu/gorm v1.9.16 h1:+IyIjPEABKRpsu/F8OvDPy9fyQlgsg2luMV2ZIH5i5o=
github.com/jinzhu/gorm v1.9.16/go.mod h1:G3LB3wezTOWM2ITLzPxEXgSkOXAntiLHS7UdBefADcs=
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
github.com/jinzhu/now v1.0.1 h1:HjfetcXq097iXP0uoPCdnM4Efp5/9MsM0/M+XOTeR3M=
github.com/jinzhu/now v1.0.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/josephspurrier/goversioninfo v0.0.0-20200309025242-14b0ab84c6ca/go.mod h1:eJTEwMjXb7kZ633hO3Ln9mBUCOjX2+FlTljvpl9SYdE=
github.com/josephspurrier/goversioninfo v1.4.0 h1:Puhl12NSHUSALHSuzYwPYQkqa2E1+7SrtAPJorKK0C8=
github.com/josephspurrier/goversioninfo v1.4.0/go.mod h1:JWzv5rKQr+MmW+LvM412ToT/IkYDZjaclF2pKDss8IY=
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ=
@@ -263,9 +264,9 @@
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y=
github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
github.com/lib/pq v1.1.1 h1:sJZmqHoEaY7f+NPP8pgLB/WxulyR3fewgCM2qaSlBb4=
github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/lucor/goinfo v0.0.0-20200401173949-526b5363a13a/go.mod h1:ORP3/rB5IsulLEBwQZCJyyV6niqmI7P4EWSmkug+1Ng=
github.com/lucor/goinfo v0.0.0-20210802170112-c078a2b0f08b h1:tLSDWcFhT0WRlnsFszh4iaFTexWF8mmccGTk88Siq7Q=
github.com/lucor/goinfo v0.0.0-20210802170112-c078a2b0f08b/go.mod h1:PRq09yoB+Q2OJReAmwzKivcYyremnibWGbK7WfftHzc=
github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
@@ -291,7 +292,6 @@
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo=
github.com/neelance/sourcemap v0.0.0-20200213170602-2833bce08e4c/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM=
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6Oo2LfFZAehjjQMERAvZLEDnQ=
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
@@ -301,7 +301,6 @@
github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
@@ -429,7 +428,6 @@
golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -620,11 +618,11 @@
golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.8-0.20211022200916-316ba0b74098/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo=
golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
gui/gui.go
@@ -2,6 +2,7 @@
import (
    "kingdee-dbapi/logger"
    "kingdee-dbapi/nsqclient"
    "strings"
    "kingdee-dbapi/config"
@@ -91,6 +92,9 @@
        report.StartReport()
        // 开启订阅
        go nsqclient.InitNsqConsumer(config.Options.QueryTopic, "sensor01", kingdee.QueryMsgHandle)
        go webserver.Serve(serverPort.Text)
    })
kingdee/db.go
@@ -2,8 +2,13 @@
import (
    "fmt"
    "github.com/jinzhu/gorm"
    "kingdee-dbapi/logger"
    //"gorm.io/driver/sqlserver"
    //"gorm.io/gorm"
    "github.com/jinzhu/gorm"
    _ "github.com/jinzhu/gorm/dialects/mssql"
)
@@ -17,8 +22,11 @@
    sqlServer := fmt.Sprintf("sqlserver://%s:%s@%s:1433?database=%s;encrypt=disable;",
        username, password, addr, dbName)
    logger.Debug("sqlServer地址:%s", sqlServer)
    // 打开数据库连接
    db, err = gorm.Open("mssql", sqlServer)
    // gorm 2.0
    //db, err = gorm.Open(sqlserver.Open(sqlServer), &gorm.Config{})
    if err != nil {
        return err
    }
@@ -30,9 +38,16 @@
    return db
}
// CloseDB .
// 2.0 CloseDB .
//func CloseDB() {
//    sqlDB, err := db.DB()
//    if err != nil {
//        return
//    }
//
//    sqlDB.Close()
//}
func CloseDB() {
    if db != nil {
        db.Close()
    }
    db.Close()
}
kingdee/query.go
@@ -1,8 +1,68 @@
package kingdee
import "fmt"
import (
    "encoding/json"
    "kingdee-dbapi/config"
    "kingdee-dbapi/logger"
    "kingdee-dbapi/nsqclient"
)
func QueryMsgHandle(data []byte) error {
    fmt.Println("recv msg ", string(data))
    var result []interface{}
    var sql = string(data)
    logger.Debug("接收到查询请求,%s", sql)
    if db == nil {
        logger.Debug("数据库未连接")
        return nil
    }
    rows, err := db.Raw(`select * from users`).Rows()
    if err != nil {
        result = append(result, err.Error())
        return err
    }
    var colums []string
    for rows.Next() {
        //先获取所有的column
        if colums == nil {
            colums, _ = rows.Columns()
        }
        //建立俩个interface数组,columnPointers中存在columns的地址
        columns := make([]interface{}, len(colums))
        columnPointers := make([]interface{}, len(colums))
        for i, _ := range columns {
            //赋值地址
            columnPointers[i] = &columns[i]
        }
        //扫描结果
        rows.Scan(columnPointers...)
        m := make(map[string]interface{})
        for i, colName := range colums {
            val := columnPointers[i].(*interface{})
            m[colName] = *val
        }
        result = append(result, m)
        //result = append(result, row)
    }
    logger.Debug("数据库返回数据%+v", result)
    b, _ := json.Marshal(result)
    ok := nsqclient.Produce(config.Options.ReplyTopic, b)
    if !ok {
        logger.Warn("应答查询请求失败.")
    } else {
        logger.Debug("应答查询请求成功. 数据:%s", string(b))
    }
    return nil
}
main.go
@@ -16,8 +16,10 @@
)
func main() {
    logger.InitLog("kdingdee-dbapi.log", "debug", 15, false)
    logger.Info("playletServer start!")
    logger.InitLog("kingdee-dbapi.log", "debug", 15, false)
    logger.Info("kdingdee-dbapi start!")
    os.Setenv("GODEBUG", "tls10default=1")
    config.Load()
@@ -29,9 +31,6 @@
    // 初始化nsq
    nsqclient.InitNsqProducer()
    // 开启订阅
    go nsqclient.InitNsqConsumer(config.Options.QueryTopic, "sensor01", kingdee.QueryMsgHandle)
    // 设置中文字体
    setFont()
nsqclient/client.go
@@ -2,7 +2,7 @@
import (
    "context"
    "fmt"
    "kingdee-dbapi/logger"
    "kingdee-dbapi/config"
)
@@ -14,7 +14,7 @@
    var err error
    producerCli, err = NewProducer(config.Options.NsqServer)
    if err != nil {
        fmt.Println(err.Error())
        logger.Error("创建nsq生产客户端失败, %s", err.Error())
    }
    return err
@@ -24,14 +24,14 @@
    if producerCli == nil {
        err := InitNsqProducer()
        if err != nil {
            fmt.Println("Init Nsq Client error:" + err.Error())
            logger.Error("创建nsq生产客户端失败, %s", err.Error())
            return false
        }
    }
    err := producerCli.Publish(topic, msg)
    if err != nil {
        fmt.Println("Publish error:" + err.Error())
        logger.Error("nsp发布消息失败,主题:%s, %s", topic, err.Error())
    }
    return err == nil
@@ -39,12 +39,12 @@
func InitNsqConsumer(topic, channel string, handle func(data []byte) error) {
    if c, err := NewNsqConsumer(context.Background(), topic, channel); err != nil {
        fmt.Println("NewNsqConsumer failed", err)
        logger.Error("创建nsq消费客户端失败, %s", err.Error())
        return
    } else {
        c.AddHandler(handle)
        if err := c.Run(config.Options.NsqServer, 1); err != nil {
            fmt.Println("run consumer failed", err)
            logger.Error("运行nsq消费客户端失败, %s", err.Error())
        }
    }
report/loop.go
File was renamed from report/report.go
@@ -3,9 +3,6 @@
import (
    "context"
    "kingdee-dbapi/logger"
    "time"
    "kingdee-dbapi/config"
)
var ctx context.Context
@@ -36,7 +33,12 @@
            // 上报即时库存
            SendInventory()
            time.Sleep(time.Duration(config.Options.SyncInterval) * time.Second)
            // 测试查询请求
            //sql := []byte("select * from t_icitem where FItemID=3316")
            //ok := nsqclient.Produce(config.Options.QueryTopic, sql)
            //logger.Debug("测试请求接口, %v", ok)
            //
            //time.Sleep(time.Duration(config.Options.SyncInterval) * time.Second)
        }
    }
}
report/tasks.go
File was renamed from report/task.go
@@ -120,7 +120,7 @@
        if !ok {
            logger.Warn("库存数据上报失败")
        } else {
            successCnt += end
            successCnt = end
        }
    }
    logger.Debug("已上报%d条库存数据", successCnt)