init.go 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. package main
  2. import (
  3. "app.yhyue.com/data_processing/common_utils/log"
  4. "app.yhyue.com/data_processing/common_utils/mongodb"
  5. "app.yhyue.com/data_processing/common_utils/mysqldb"
  6. "fmt"
  7. "os"
  8. "proposed_project/config"
  9. "sync"
  10. )
  11. var (
  12. MgoBid, MgoPro *mongodb.MongodbSim //mongodb连接
  13. MysqlTool, MysqlTool1 *mysqldb.Mysql
  14. saveSize int
  15. LastId string //增量拟建数据最后id
  16. TaskSingle bool
  17. pici int64 // 拟建增量数据pici时间
  18. updatePool chan []map[string]interface{}
  19. updateSp chan bool
  20. savePool chan map[string]interface{}
  21. saveSp chan bool
  22. AllPidMap map[string]*ID
  23. AllPidMapLock sync.Mutex
  24. AllPnMap map[string]*Pname
  25. AllPnMapLock sync.Mutex
  26. AllCodeMap map[string]string
  27. AllCodeMapLock sync.Mutex
  28. )
  29. func init() {
  30. config.Init("./common.toml")
  31. InitLog()
  32. InitMgo()
  33. TaskSingle = true
  34. saveSize = 200
  35. AllPidMap = make(map[string]*ID, 20000)
  36. AllPnMap = make(map[string]*Pname, 20000)
  37. AllCodeMap = make(map[string]string, 50000)
  38. updatePool = make(chan []map[string]interface{}, 5000)
  39. updateSp = make(chan bool, 1)
  40. savePool = make(chan map[string]interface{}, 5000)
  41. saveSp = make(chan bool, 2)
  42. }
  43. func InitLog() {
  44. logcfg := config.Conf.Log
  45. err := log.InitLog(
  46. log.Path(logcfg.LogPath),
  47. log.Level(logcfg.LogLevel),
  48. log.Compress(logcfg.Compress),
  49. log.MaxSize(logcfg.MaxSize),
  50. log.MaxBackups(logcfg.MaxBackups),
  51. log.MaxAge(logcfg.MaxAge),
  52. log.Format(logcfg.Format),
  53. )
  54. if err != nil {
  55. fmt.Printf("InitLog failed: %v\n", err)
  56. os.Exit(1)
  57. }
  58. }
  59. func InitMgo() {
  60. MgoBid = &mongodb.MongodbSim{
  61. MongodbAddr: config.Conf.DB.MongoB.Addr,
  62. DbName: config.Conf.DB.MongoB.Dbname,
  63. Size: config.Conf.DB.MongoB.Size,
  64. UserName: config.Conf.DB.MongoB.User,
  65. Password: config.Conf.DB.MongoB.Password,
  66. }
  67. MgoBid.InitPool()
  68. MgoPro = &mongodb.MongodbSim{
  69. MongodbAddr: config.Conf.DB.MongoP.Addr,
  70. DbName: config.Conf.DB.MongoP.Dbname,
  71. Size: config.Conf.DB.MongoP.Size,
  72. UserName: config.Conf.DB.MongoP.User,
  73. Password: config.Conf.DB.MongoP.Password,
  74. }
  75. MgoPro.InitPool()
  76. }
  77. func InitMysql() {
  78. dbcfg := config.Conf.DB.Mysql
  79. MysqlTool = &mysqldb.Mysql{
  80. Address: dbcfg.Addr,
  81. DBName: dbcfg.DbnameMedical,
  82. UserName: dbcfg.User,
  83. PassWord: dbcfg.Password,
  84. }
  85. MysqlTool.Init()
  86. MysqlTool1 = &mysqldb.Mysql{
  87. Address: dbcfg.Addr,
  88. DBName: dbcfg.DbnameBasic,
  89. UserName: dbcfg.User,
  90. PassWord: dbcfg.Password,
  91. }
  92. MysqlTool1.Init()
  93. }
  94. type Pname struct {
  95. Id map[string]string
  96. Lock sync.Mutex
  97. }
  98. type Key struct {
  99. Id string
  100. Lock sync.Mutex
  101. }
  102. type ID struct {
  103. Lock sync.Mutex
  104. P *Project
  105. }
  106. // Project 内存 项目信息
  107. type Project struct {
  108. Id string `json:"_id"`
  109. Ids []string `json:"ids,omitempty"`
  110. FirstTime int64 `json:"firsttime,omitempty"` //项目的最早时间
  111. LastTime int64 `json:"lasttime,omitempty"` //项目的最后时间
  112. ProjectName string `json:"projectname,omitempty"` //项目名称
  113. Owner string `json:"owner"`
  114. ApproveCode string `json:"approvecode"` // 审批代码
  115. ApproveNumber string `json:"approvenumber"`
  116. TotalInvestment string `json:"total_investment"`
  117. ProjectAddr string `json:"projectaddr"`
  118. Funds string `json:"funds"`
  119. ProjectPeriod string `json:"projectperiod"`
  120. ProjectScale string `json:"project_scale"`
  121. ProjectStartDate int64 `json:"project_startdate"`
  122. ProjectCompleteDate int64 `json:"project_completedate"`
  123. ConstructionArea string `json:"construction_area"`
  124. FollowNum int `json:"follow_num"`
  125. FloorArea string `json:"floor_area"`
  126. ProjectPhone string `json:"project_phone"`
  127. ProjectPerson string `json:"project_person"`
  128. Area string `json:"area"` //地区
  129. City string `json:"city"` //地市
  130. District string `json:"district"` //区县
  131. Site string `json:"site"`
  132. }
  133. // Info 拟在建数据信息
  134. type Info struct {
  135. Id string `json:"_id"`
  136. Href string `json:"href"`
  137. Publishtime int64 `json:"publishtime"`
  138. Title string `json:"title"`
  139. ProjectName string `json:"projectname"`
  140. Area string `json:"area"`
  141. City string `json:"city"`
  142. District string `json:"district"`
  143. Infoformat int `json:"infoformat"`
  144. Site string `json:"site"`
  145. Topscopeclass []string `json:"topscopeclass"`
  146. Subscopeclass []string `json:"subscopeclass"`
  147. Buyerclass string `json:"buyerclass"`
  148. Owner string `json:"owner"`
  149. ApproveCode string `json:"approvecode"`
  150. ApproveDept string `json:"approvedept"`
  151. ApproveStatus string `json:"approvestatus"`
  152. ApproveTime string `json:"approvetime"`
  153. ApproveNumber string `json:"approvenumber"`
  154. ApproveContent string `json:"approvecontent"`
  155. ProjectType string `json:"projecttype"`
  156. ApproveCity string `json:"approvecity"`
  157. ProjectScale string `json:"project_scale"`
  158. TotalInvestment string `json:"total_investment"`
  159. ProjectAddr string `json:"projectaddr"`
  160. ProjectPeriod string `json:"projectperiod"`
  161. Funds string `json:"funds"`
  162. ProjectStartDate int64 `json:"project_startdate"`
  163. ProjectCompleteDate int64 `json:"project_completedate"`
  164. ConstructionArea string `json:"construction_area"`
  165. FloorArea string `json:"floor_area"`
  166. ProjectPhone string `json:"project_phone"`
  167. ProjectPerson string `json:"project_person"`
  168. }