package main

import (
	"flag"
	"mtp20_assisted/core"
	"mtp20_assisted/global"
	"mtp20_assisted/service"

	"go.uber.org/zap"
)

func main() {
	// 初始化Viper
	global.M2A_VP = core.Viper()

	// 初始化zap日志库
	global.M2A_LOG = core.Zap()
	zap.ReplaceGlobals(global.M2A_LOG)

	// xorm连接数据库
	global.M2A_DB = core.XormOracle()
	if global.M2A_DB != nil {
		// 程序结束前关闭数据库链接
		defer global.M2A_DB.DB().Close()
	} else {
		return
	}

	// 连接RabbitMQ
	global.M2A_RABBITMQ = core.RabbitMQ()
	if global.M2A_RABBITMQ != nil {
		defer global.M2A_RABBITMQ.Connection.Close()
	} else {
		return
	}
	// 构建总线信息处理器
	service.InitRabbitMQMsgPreccesser()
	// 开始向总线创建和绑定队列
	service.StartRabbitMQSubscribe()
	// 开始接收总线消息
	service.StartRabbitMQReceive()

	// 连接FTP
	if global.M2A_CONFIG.FTP.Enable {
		// 在这里连接FTP可能会在使用时已经断开
		// var err error
		// if global.M2A_FTP, err = core.FTP(); err == nil {
		// 	defer global.M2A_FTP.Quit()
		// }
		// 开始FTP Timer任务
		service.InitTimer()
	}

	// 判断输入参数
	var ftp bool
	flag.BoolVar(&ftp, "ftp", false, "是否立即执行FTP导入工作")
	flag.Parse()
	if ftp {
		service.ImportWMSReckon()
	}
	// service.ImportWMSReckon()

	global.M2A_DONE = make(chan bool)
	<-global.M2A_DONE
}
