package main import ( "kingdee-dbapi/report" "kingdee-dbapi/webserver" "os" "strings" "kingdee-dbapi/cache" "kingdee-dbapi/config" "kingdee-dbapi/gui" "kingdee-dbapi/kingdee" "kingdee-dbapi/logger" "kingdee-dbapi/models" "kingdee-dbapi/nsqclient" "github.com/flopp/go-findfont" ) func main() { logger.InitLog("log/kingdee-dbapi.log", "debug", 15, false) logger.Info("kingdee-dbapi start!") config.Load() // sqlite3数据库 models.Init() // 初始化缓存, 记录了已经上报的订单号 cache.InitCache() // 初始化nsq nsqclient.InitNsqProducer() // 设置中文字体 setFont() defer os.Unsetenv("FYNE_FONT") defer kingdee.CloseDB() // 创建窗口并运行 dbConnectedChan := make(chan bool) window := gui.NewDisplay(dbConnectedChan) // 数据库连接成功后启动其他服务 go onSqlServerConnected(dbConnectedChan) window.ShowMainWindow() } func onSqlServerConnected(dbConnectedChan chan bool) { <-dbConnectedChan logger.Debug("数据库已连接, 启动接口服务") report.Start() // 开启订阅SQL查询 go nsqclient.InitNsqConsumer(config.Options.SqlQueryTopic, "sensor01", kingdee.SqlQueryHandle) go nsqclient.InitNsqConsumer(config.Options.CSTQueryTopic, "sensor01", kingdee.CSTQueryHandle) go nsqclient.InitNsqConsumer(config.Options.BomQueryTopic, "sensor01", report.HandleBomQuery) go webserver.Serve(config.Options.WebPort) } func setFont() { fontPaths := findfont.List() for _, path := range fontPaths { // 微软雅黑-常规 if strings.Contains(path, "msyh.ttf") { os.Setenv("FYNE_FONT", path) break } // 黑体-常规 if strings.Contains(path, "simhei.ttf") { os.Setenv("FYNE_FONT", path) break } } }