SJA APS后端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

143 lines
3.4 KiB

3 years ago
3 years ago
  1. // Copyright (c) Shenyang Leading Edge Intelligent Technology Co., Ltd. All rights reserved.
  2. package main
  3. import (
  4. "flag"
  5. "fmt"
  6. "github.com/kardianos/service"
  7. "leit.com/leit_seat_aps/common"
  8. "leit.com/leit_seat_aps/config"
  9. "leit.com/leit_seat_aps/db"
  10. "leit.com/leit_seat_aps/glog"
  11. "leit.com/leit_seat_aps/mes"
  12. "log"
  13. "os"
  14. "path/filepath"
  15. )
  16. //基于windows系统服务器,安装成服务
  17. type program struct{}
  18. func (p *program) Start(s service.Service) error {
  19. // Start should not block. Do the actual work async.
  20. go p.run()
  21. return nil
  22. }
  23. func (p *program) run() {
  24. imain()
  25. }
  26. func (p *program) Stop(s service.Service) error {
  27. return nil
  28. }
  29. func main() {
  30. svcConfig := &service.Config{
  31. Name: "mes",
  32. DisplayName: "mes",
  33. Description: "this is mes",
  34. }
  35. prg := &program{}
  36. s, err := service.New(prg, svcConfig)
  37. if err != nil {
  38. log.Fatal(err)
  39. }
  40. if len(os.Args) > 1 {
  41. verb := os.Args[1]
  42. switch verb {
  43. case "install":
  44. s.Install()
  45. log.Println("服务安装成功")
  46. return
  47. case "remove":
  48. s.Uninstall()
  49. log.Println("服务卸载成功")
  50. return
  51. case "start":
  52. s.Start()
  53. log.Println("服务启动")
  54. return
  55. case "stop":
  56. s.Stop()
  57. log.Println("服务暂停")
  58. return
  59. }
  60. }
  61. err = s.Run()
  62. if err != nil {
  63. log.Println(err)
  64. }
  65. }
  66. /******************************************************************************
  67. *
  68. * @Function Name :系统入口函数
  69. *-----------------------------------------------------------------------------
  70. *
  71. * @Description :
  72. *
  73. * @Function Parameters:
  74. *
  75. * @Return Value :
  76. *
  77. * @Author : Lou Wenzhi
  78. *
  79. * @Date : 2021/3/5 13:05
  80. *
  81. ******************************************************************************/
  82. func imain() {
  83. //初始化日志
  84. baseDir := ""
  85. flag.StringVar(&baseDir, "dir", "log", "running in a directory")
  86. flag.Parse()
  87. defer glog.Flush()
  88. pathLogDir := filepath.Join(baseDir, "glog")
  89. //备注,因为是打包成windows服务,路径需要转义
  90. pathLogDir = common.EnsureDir(pathLogDir)
  91. glog.DefaultInit(true, pathLogDir)
  92. glog.Infoln("启动日志", "InitDB return success")
  93. //加载配置
  94. path := common.EnsureDir("config/config.yaml")
  95. fmt.Println(path)
  96. conf, err := config.ReadYamlConfig(path)
  97. if err != nil {
  98. log.Printf("failed to read yaml config due to: %v", err)
  99. return
  100. }
  101. ////加载配置
  102. //err = config.InitConfig()
  103. //if err != nil {
  104. // log.Printf("failed to read yaml config due to: %v", err)
  105. // return
  106. //}
  107. //初始化数据库
  108. connstring := fmt.Sprintf("server=%s;user id=%s;password=%s;database=%s;port=%d;encrypt=disable",
  109. conf.Server, conf.User, conf.Password, conf.DbName, conf.Port)
  110. if err := db.InitMssqlDb(connstring); err != nil {
  111. glog.Infoln("初始化数据库", "InitMssqlDb return fail")
  112. return
  113. }
  114. // 创建etcd监听连接
  115. //if err = etcd.InitEtcdClient(); err != nil {
  116. // glog.Infoln("初始化EtCD连接", "InitJobLock return fail")
  117. // return
  118. //}
  119. //
  120. //// register app service to etcd
  121. //if config.AppConfig.UseETCD {
  122. // CheckServiceDao := etcd.NewETCDServiceImplement(etcd.AppEtcdClient, config.AppConfig.App.LocalAddr)
  123. // defer CheckServiceDao.RevokeLease()
  124. // err = CheckServiceDao.RegisterService(config.AppConfig.App.Name)
  125. // if err != nil {
  126. // log.Fatal("register service to etcd failed, error:", err)
  127. // }
  128. //}
  129. // 基于派工下达计划生成生产包装
  130. mes.GenProductionPack()
  131. }