init.go 6.2 KB

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