liantong.go 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328
  1. package main
  2. import (
  3. "fmt"
  4. "github.com/olivere/elastic/v7"
  5. "github.com/xuri/excelize/v2"
  6. util "jygit.jydev.jianyu360.cn/data_processing/common_utils"
  7. "jygit.jydev.jianyu360.cn/data_processing/common_utils/mongodb"
  8. "log"
  9. "strings"
  10. "time"
  11. )
  12. // lianTongData1 判断联通单一数据,后续是否有中标、成交
  13. func lianTongData1() {
  14. f, err := excelize.OpenFile("./2024.9.1-2024.12.1单一来源.xlsx")
  15. if err != nil {
  16. fmt.Println(err)
  17. return
  18. }
  19. defer func() {
  20. f.Save()
  21. if err := f.Close(); err != nil {
  22. fmt.Println(err)
  23. }
  24. }()
  25. //
  26. rows, err := f.GetRows("详细数据")
  27. if err != nil {
  28. fmt.Println(err)
  29. return
  30. }
  31. //85 项目数据
  32. MgoP := &mongodb.MongodbSim{
  33. MongodbAddr: "127.0.0.1:27080",
  34. //MongodbAddr: "172.17.4.85:27080",
  35. DbName: "qfw",
  36. Size: 10,
  37. Direct: true,
  38. }
  39. MgoP.InitPool()
  40. //
  41. se := util.SimpleEncrypt{Key: "topJYBX2019"}
  42. for i := 1; i < len(rows); i++ {
  43. if i%100 == 0 {
  44. log.Println("current:iiiiiiiiiiii", i)
  45. }
  46. //id := rows[i][19]
  47. id := se.DecodeString(strings.TrimSpace(rows[i][19]))
  48. where := map[string]interface{}{
  49. "ids": id,
  50. }
  51. p, _ := MgoP.FindOne("projectset_20230904", where)
  52. project := *p
  53. if list, ok := project["list"].([]interface{}); ok {
  54. for _, v := range list {
  55. if listData, ok := v.(map[string]interface{}); ok {
  56. if util.ObjToString(listData["subtype"]) == "中标" {
  57. f.SetCellValue("详细数据", fmt.Sprintf("%s%d", "U", i+1), "是")
  58. }
  59. if util.ObjToString(listData["subtype"]) == "成交" {
  60. f.SetCellValue("详细数据", fmt.Sprintf("%s%d", "V", i+1), "是")
  61. }
  62. }
  63. }
  64. }
  65. //if util.ObjToString(project["bidstatus"]) == "中标" {
  66. // f.SetCellValue("详细数据", fmt.Sprintf("%s%d", "U", i+1), "是")
  67. //}
  68. //if util.ObjToString(project["bidstatus"]) == "成交" {
  69. // f.SetCellValue("详细数据", fmt.Sprintf("%s%d", "V", i+1), "是")
  70. //}
  71. //if util.ObjToString(project["bidstatus"]) == "合同" {
  72. // f.SetCellValue("详细数据", fmt.Sprintf("%s%d", "W", i+1), "是")
  73. //}
  74. }
  75. log.Println("数据处理完毕")
  76. }
  77. // lianTongShouLu1 判断联通数据是否收录,是否推送
  78. func lianTongShouLu1() {
  79. //2024-12-23,赵慧磊 联通需求
  80. f, err := excelize.OpenFile("./省分新增标讯数据复核_研发.xlsx")
  81. if err != nil {
  82. fmt.Println(err)
  83. return
  84. }
  85. defer func() {
  86. f.Save()
  87. if err := f.Close(); err != nil {
  88. fmt.Println(err)
  89. }
  90. }()
  91. //2.专项债详情
  92. //rows, err := f.GetRows("基础数据")
  93. rows, err := f.GetRows("Sheet2")
  94. if err != nil {
  95. fmt.Println(err)
  96. return
  97. }
  98. //
  99. //url := "http://172.17.4.184:19908"
  100. url := "http://127.0.0.1:19908"
  101. username := "jybid"
  102. password := "Top2023_JEB01i@31"
  103. //index := "bidding" //索引名称
  104. // 创建 Elasticsearch 客户端
  105. client, err := elastic.NewClient(
  106. elastic.SetURL(url),
  107. elastic.SetBasicAuth(username, password),
  108. elastic.SetSniff(false),
  109. )
  110. if err != nil {
  111. log.Fatalf("创建 Elasticsearch 客户端失败:%s", err)
  112. }
  113. // 86 mongo
  114. Mgo := &mongodb.MongodbSim{
  115. //MongodbAddr: "172.17.4.86:27080",
  116. MongodbAddr: "127.0.0.1:27082",
  117. Size: 10,
  118. DbName: "jyqyfw",
  119. //UserName: "SJZY_RWbid_ES",
  120. //Password: "SJZY@B4i4D5e6S",
  121. Direct: true,
  122. }
  123. Mgo.InitPool()
  124. for i := 1; i < len(rows); i++ {
  125. projectName := strings.TrimSpace(rows[i][5])
  126. buyer := strings.TrimSpace(rows[i][4])
  127. winner := strings.TrimSpace(rows[i][2])
  128. money := strings.TrimSpace(rows[i][9])
  129. projectCode := util.ObjToString(rows[i][6])
  130. title := strings.TrimSpace(rows[i][7])
  131. publishTime := strings.TrimSpace(rows[i][10])
  132. layout := "2006-01-02"
  133. t, err := time.Parse(layout, publishTime)
  134. if err != nil {
  135. fmt.Println(err)
  136. return
  137. }
  138. timestamp := t.Unix()
  139. rangeQuery := elastic.NewRangeQuery("publishtime").Gte(timestamp).Lt(timestamp + 24*3600)
  140. if i%10 == 0 {
  141. log.Println("iiiiii", i, projectName)
  142. f.Save()
  143. }
  144. //判断1;标题+发布时间
  145. query1 := elastic.NewBoolQuery().
  146. Must(elastic.NewTermQuery("title.mtitle", title)).
  147. Must(rangeQuery)
  148. query3 := elastic.NewBoolQuery().
  149. Must(elastic.NewTermQuery("projectcode", projectCode)).
  150. Must(rangeQuery)
  151. //1.1 判断es 是否存在
  152. ex1, err, doc1 := checkBiddingData(client, query1)
  153. if err != nil {
  154. log.Println("checkBiddingData error", err)
  155. }
  156. //存在,已收录,判断是否推送
  157. if ex1 {
  158. f.SetCellValue("Sheet2", fmt.Sprintf("%s%d", "AA", i+1), "是")
  159. f.SetCellValue("Sheet2", fmt.Sprintf("%s%d", "V", i+1), "是")
  160. id := util.ObjToString(doc1["id"])
  161. f.SetCellValue("Sheet2", fmt.Sprintf("%s%d", "X", i+1), id)
  162. where2 := map[string]interface{}{
  163. "id": id,
  164. "appid": "jyGQ1XQQsEAwNeSENOFR9D",
  165. }
  166. datas, _ := Mgo.Find("usermail", where2, nil, nil, false, -1, -1)
  167. isTui := false
  168. for _, dd := range *datas {
  169. if util.IntAll(dd["isOptimization"]) == 1 && util.IntAll(dd["earliestDay"]) == 0 {
  170. isTui = true
  171. }
  172. }
  173. //确实推送了
  174. if isTui {
  175. f.SetCellValue("Sheet2", fmt.Sprintf("%s%d", "Z", i+1), "是")
  176. }
  177. }
  178. //3.1 判断es 是否存在
  179. ex3, err, doc3 := checkBiddingData(client, query3)
  180. if err != nil {
  181. log.Println("checkBiddingData error", err)
  182. }
  183. //存在,已收录,判断是否推送
  184. if ex3 {
  185. f.SetCellValue("Sheet2", fmt.Sprintf("%s%d", "AB", i+1), "是")
  186. f.SetCellValue("Sheet2", fmt.Sprintf("%s%d", "V", i+1), "是")
  187. id := util.ObjToString(doc3["id"])
  188. f.SetCellValue("Sheet2", fmt.Sprintf("%s%d", "X", i+1), id)
  189. where3 := map[string]interface{}{
  190. "id": id,
  191. "appid": "jyGQ1XQQsEAwNeSENOFR9D",
  192. }
  193. datas, _ := Mgo.Find("usermail", where3, nil, nil, false, -1, -1)
  194. isTui := false
  195. for _, dd := range *datas {
  196. if util.IntAll(dd["isOptimization"]) == 1 && util.IntAll(dd["earliestDay"]) == 0 {
  197. isTui = true
  198. }
  199. }
  200. //确实推送了
  201. if isTui {
  202. f.SetCellValue("Sheet2", fmt.Sprintf("%s%d", "Z", i+1), "是")
  203. }
  204. }
  205. //判断2;projectname+s_winner+bidamount+buyer
  206. query2 := elastic.NewBoolQuery().
  207. Must(elastic.NewTermQuery("projectname", projectName)).
  208. Must(elastic.NewTermQuery("s_winner", winner)).
  209. Must(elastic.NewTermQuery("bidamount", money)).
  210. Must(elastic.NewTermQuery("buyer", buyer))
  211. //判断es 是否存在
  212. ex, err, doc := checkBiddingData(client, query2)
  213. if err != nil {
  214. log.Println("checkBiddingData error", err)
  215. }
  216. //存在,已收录,判断是否推送
  217. if ex {
  218. f.SetCellValue("Sheet2", fmt.Sprintf("%s%d", "V", i+1), "是")
  219. id := util.ObjToString(doc["id"])
  220. f.SetCellValue("Sheet2", fmt.Sprintf("%s%d", "X", i+1), id)
  221. where2 := map[string]interface{}{
  222. "id": id,
  223. "appid": "jyGQ1XQQsEAwNeSENOFR9D",
  224. }
  225. datas, _ := Mgo.Find("usermail", where2, nil, nil, false, -1, -1)
  226. isTui := false
  227. for _, dd := range *datas {
  228. if util.IntAll(dd["isOptimization"]) == 1 && util.IntAll(dd["earliestDay"]) == 0 {
  229. isTui = true
  230. }
  231. }
  232. //确实推送了
  233. if isTui {
  234. f.SetCellValue("Sheet2", fmt.Sprintf("%s%d", "Z", i+1), "是")
  235. }
  236. }
  237. }
  238. }
  239. // lianTongShouLu2 判断联通是否推送
  240. func lianTongShouLu2() {
  241. //2024-12-23,赵慧磊 联通需求
  242. f, err := excelize.OpenFile("./副本省分新增标讯数据复核_研发.xlsx")
  243. if err != nil {
  244. fmt.Println(err)
  245. return
  246. }
  247. defer func() {
  248. f.Save()
  249. if err := f.Close(); err != nil {
  250. fmt.Println(err)
  251. }
  252. }()
  253. //2.专项债详情
  254. //rows, err := f.GetRows("基础数据")
  255. rows, err := f.GetRows("Sheet3")
  256. if err != nil {
  257. fmt.Println(err)
  258. return
  259. }
  260. //
  261. // 86 mongo
  262. Mgo := &mongodb.MongodbSim{
  263. //MongodbAddr: "172.17.4.86:27080",
  264. MongodbAddr: "127.0.0.1:27082",
  265. Size: 10,
  266. DbName: "jyqyfw",
  267. //UserName: "SJZY_RWbid_ES",
  268. //Password: "SJZY@B4i4D5e6S",
  269. Direct: true,
  270. }
  271. Mgo.InitPool()
  272. for i := 1; i < len(rows); i++ {
  273. projectName := strings.TrimSpace(rows[i][5])
  274. id := util.ObjToString(rows[i][28])
  275. if err != nil {
  276. fmt.Println(err)
  277. return
  278. }
  279. if i%10 == 0 {
  280. log.Println("iiiiii", i, projectName)
  281. f.Save()
  282. }
  283. where2 := map[string]interface{}{
  284. "id": id,
  285. "appid": "jyGQ1XQQsEAwNeSENOFR9D",
  286. }
  287. datas, _ := Mgo.Find("usermail", where2, nil, nil, false, -1, -1)
  288. isTui := false
  289. for _, dd := range *datas {
  290. if util.IntAll(dd["isOptimization"]) == 1 && util.IntAll(dd["earliestDay"]) == 0 {
  291. isTui = true
  292. }
  293. }
  294. //确实推送了
  295. if isTui {
  296. f.SetCellValue("Sheet2", fmt.Sprintf("%s%d", "Z", i+1), "是")
  297. }
  298. }
  299. }