project_test.go 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. package main
  2. import (
  3. "fmt"
  4. "github.com/olivere/elastic/v7"
  5. "github.com/xuri/excelize/v2"
  6. "go.uber.org/zap"
  7. util "jygit.jydev.jianyu360.cn/data_processing/common_utils"
  8. "jygit.jydev.jianyu360.cn/data_processing/common_utils/log"
  9. "jygit.jydev.jianyu360.cn/data_processing/common_utils/mongodb"
  10. "strconv"
  11. "strings"
  12. "testing"
  13. "time"
  14. )
  15. func TestBiddng(t *testing.T) {
  16. f, err := excelize.OpenFile("./6月份未匹配到剑鱼的项目清单.xlsx")
  17. if err != nil {
  18. fmt.Println(err)
  19. return
  20. }
  21. defer func() {
  22. f.Save()
  23. if err := f.Close(); err != nil {
  24. fmt.Println(err)
  25. }
  26. }()
  27. rows, err := f.GetRows("Sheet1")
  28. if err != nil {
  29. fmt.Println(err)
  30. return
  31. }
  32. //url := "http://172.17.4.184:19908"
  33. url := "http://127.0.0.1:19908"
  34. username := "jybid"
  35. password := "Top2023_JEB01i@31"
  36. //index := "bidding" //索引名称
  37. // 创建 Elasticsearch 客户端
  38. client, err := elastic.NewClient(
  39. elastic.SetURL(url),
  40. elastic.SetBasicAuth(username, password),
  41. elastic.SetSniff(false),
  42. )
  43. if err != nil {
  44. fmt.Printf("创建 Elasticsearch 客户端失败:%s", err)
  45. }
  46. for i := 1; i < len(rows); i++ {
  47. projectName := rows[i][1]
  48. res, err := searchES23(client, projectName, "", 60, 20)
  49. if err != nil {
  50. fmt.Println(projectName)
  51. log.Info("TestBiddng", zap.Error(err))
  52. }
  53. if len(res) > 0 {
  54. f.SetCellValue("Sheet1", fmt.Sprintf("F%v", i+1), 1)
  55. }
  56. fmt.Printf("%s 总数是:%d\n", projectName, len(res))
  57. }
  58. }
  59. func TestSearchES23(t *testing.T) {
  60. url := "http://127.0.0.1:19908"
  61. username := "jybid"
  62. password := "Top2023_JEB01i@31"
  63. client, err := elastic.NewClient(
  64. elastic.SetURL(url),
  65. elastic.SetBasicAuth(username, password),
  66. elastic.SetSniff(false),
  67. )
  68. if err != nil {
  69. log.Fatal("创建 Elasticsearch 客户端失败", zap.Error(err))
  70. }
  71. MgoQY = &mongodb.MongodbSim{
  72. //MongodbAddr: "172.31.31.202:27081,172.20.45.128:27080",
  73. MongodbAddr: "127.0.0.1:27083",
  74. Size: 10,
  75. DbName: "mixdata",
  76. UserName: "SJZY_RWbid_ES",
  77. Password: "SJZY@B4i4D5e6S",
  78. Direct: true,
  79. }
  80. MgoQY.InitPool()
  81. projectName := "东台市国家盐碱地综合利用试点项目条子泥片区"
  82. //projectName := "太和县乡镇政府驻地污水处理建设PPP工程监理项目"
  83. results, err := getSearch(client, projectName, "", 0)
  84. //results, err := searchByTokenOther(client, projectName, "", "", 0)
  85. if err != nil {
  86. log.Info("TestSearchES23", zap.Error(err))
  87. }
  88. log.Info("aaa", zap.Any("results", results))
  89. }
  90. func TestSearchProjectFullScoring(t *testing.T) {
  91. url := "http://127.0.0.1:19908"
  92. username := "jybid"
  93. password := "Top2023_JEB01i@31"
  94. client, err := elastic.NewClient(
  95. elastic.SetURL(url),
  96. elastic.SetBasicAuth(username, password),
  97. elastic.SetSniff(false),
  98. )
  99. if err != nil {
  100. log.Fatal("创建 Elasticsearch 客户端失败", zap.Error(err))
  101. }
  102. MgoQY = &mongodb.MongodbSim{
  103. //MongodbAddr: "172.31.31.202:27081,172.20.45.128:27080",
  104. MongodbAddr: "127.0.0.1:27083",
  105. Size: 10,
  106. DbName: "mixdata",
  107. UserName: "SJZY_RWbid_ES",
  108. Password: "SJZY@B4i4D5e6S",
  109. Direct: true,
  110. }
  111. MgoQY.InitPool()
  112. f, err := excelize.OpenFile("./项目信息.xlsx")
  113. if err != nil {
  114. fmt.Println(err)
  115. return
  116. }
  117. defer func() {
  118. f.Save()
  119. if err := f.Close(); err != nil {
  120. fmt.Println(err)
  121. }
  122. }()
  123. rows, err := f.GetRows("Sheet1")
  124. if err != nil {
  125. fmt.Println(err)
  126. return
  127. }
  128. for i, row := range rows {
  129. if i == 0 {
  130. continue
  131. }
  132. if len(row) < 6 { // Ensure row has enough columns
  133. continue
  134. }
  135. investment, _ := strconv.ParseFloat(row[4], 64)
  136. dateStr := strings.TrimPrefix(row[5], "Y")
  137. baseDate, _ := time.Parse("200601", dateStr)
  138. target := InputData{
  139. ProjectCode: row[0],
  140. ProjectName: row[1],
  141. AreaCode: row[2],
  142. ConstructionUnit: row[3],
  143. PlannedInvestment: investment,
  144. BaseDate: baseDate,
  145. }
  146. //targets = append(targets, target)
  147. projectName := rows[i][1]
  148. areacode := rows[i][2]
  149. publish := rows[i][5]
  150. fmt.Println(i, projectName)
  151. res, err := SearchProjectFullScoring(client, target, projectName, areacode, publish, 0)
  152. if err != nil {
  153. fmt.Println(err)
  154. }
  155. dds := make([]string, 0)
  156. for k, v := range res {
  157. if k > 2 {
  158. break
  159. }
  160. id := util.ObjToString(v["id"])
  161. jyurl := GetJyURLByID(id)
  162. socre := v["score"]
  163. pname := v["projectname"]
  164. dd := fmt.Sprintf("%v,%v,%v", pname, socre, jyurl)
  165. dds = append(dds, dd)
  166. }
  167. ddda := strings.Join(dds, "\n")
  168. f.SetCellValue("Sheet1", fmt.Sprintf("%s%d", "K", i+1), ddda)
  169. }
  170. }
  171. func TestSearchProjectFullScoring2(t *testing.T) {
  172. url := "http://127.0.0.1:19908"
  173. username := "jybid"
  174. password := "Top2023_JEB01i@31"
  175. client, err := elastic.NewClient(
  176. elastic.SetURL(url),
  177. elastic.SetBasicAuth(username, password),
  178. elastic.SetSniff(false),
  179. )
  180. if err != nil {
  181. log.Fatal("创建 Elasticsearch 客户端失败", zap.Error(err))
  182. }
  183. MgoQY = &mongodb.MongodbSim{
  184. //MongodbAddr: "172.31.31.202:27081,172.20.45.128:27080",
  185. MongodbAddr: "127.0.0.1:27083",
  186. Size: 10,
  187. DbName: "mixdata",
  188. UserName: "SJZY_RWbid_ES",
  189. Password: "SJZY@B4i4D5e6S",
  190. Direct: true,
  191. }
  192. MgoQY.InitPool()
  193. f, err := excelize.OpenFile("./剑鱼匹配疑似问题7月.xlsx")
  194. if err != nil {
  195. fmt.Println(err)
  196. return
  197. }
  198. defer func() {
  199. f.Save()
  200. if err := f.Close(); err != nil {
  201. fmt.Println(err)
  202. }
  203. }()
  204. rows, err := f.GetRows("Sheet1")
  205. if err != nil {
  206. fmt.Println(err)
  207. return
  208. }
  209. for i, row := range rows {
  210. if i == 0 {
  211. continue
  212. }
  213. target := InputData{
  214. ProjectName: row[0],
  215. }
  216. projectName := rows[i][0]
  217. if projectName == "" {
  218. continue
  219. }
  220. areacode := ""
  221. publish := ""
  222. fmt.Println(i, projectName)
  223. res, err := SearchProjectFullScoring(client, target, projectName, areacode, publish, 80)
  224. if err != nil {
  225. fmt.Println(err)
  226. }
  227. dds := make([]string, 0)
  228. for k, v := range res {
  229. if k > 2 {
  230. break
  231. }
  232. id := util.ObjToString(v["id"])
  233. jyurl := GetJyURLByID(id)
  234. socre := v["score"]
  235. pname := v["projectname"]
  236. dd := fmt.Sprintf("%v,%v,%v", pname, socre, jyurl)
  237. dds = append(dds, dd)
  238. }
  239. ddda := strings.Join(dds, "\n")
  240. f.SetCellValue("Sheet1", fmt.Sprintf("%s%d", "J", i+1), ddda)
  241. }
  242. }