main.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. package main
  2. import (
  3. "flag"
  4. "fmt"
  5. "github.com/tealeg/xlsx"
  6. "go.mongodb.org/mongo-driver/bson"
  7. mgo "mongodb"
  8. qu "qfw/util"
  9. "util"
  10. )
  11. var (
  12. path string
  13. Mgo *mgo.MongodbSim
  14. )
  15. func init() {
  16. Mgo = &mgo.MongodbSim{
  17. MongodbAddr: "192.168.3.166:27082", // 127.0.0.1:27084
  18. Size: 5,
  19. DbName: "jyqykhfw",
  20. }
  21. Mgo.InitPool()
  22. }
  23. func main() {
  24. flag.StringVar(&path, "f", "", "文件路径")
  25. flag.Parse()
  26. if path != "" {
  27. file, err := xlsx.OpenFile(path)
  28. if err != nil {
  29. panic(err)
  30. }
  31. sheet := file.Sheets[0]
  32. cellFieldName := map[int]string{}
  33. for rn, row := range sheet.Rows {
  34. if rn == 0 {
  35. for index, cell := range row.Cells {
  36. //if cell.Value == "招标人" || cell.Value == "中标人" || cell.Value == "中标金额" {
  37. // qu.Debug(cell.Value, index)
  38. //}
  39. if v := FieldsMap[cell.Value]; v != "" {
  40. cellFieldName[index] = v
  41. }
  42. }
  43. } else {
  44. q := bson.M{}
  45. for i, f := range cellFieldName {
  46. if val := row.Cells[i].Value; val != "" && (f == "s_winner" || f == "buyer") {
  47. q[f] = val
  48. }
  49. if val := row.Cells[i].Value; val != "" && f == "bidamount" {
  50. if qu.Float64All(val) != 0 {
  51. q[f] = qu.Float64All(val)
  52. }
  53. }
  54. }
  55. info, _ := Mgo.FindOne("zglt_history", q)
  56. if len(*info) > 0 {
  57. row.Cells[12].SetValue(-1)
  58. } else {
  59. row.Cells[12].SetValue(1)
  60. }
  61. }
  62. }
  63. err = file.Save(path)
  64. } else {
  65. flag.PrintDefaults()
  66. }
  67. }
  68. var FieldsMap = map[string]string{
  69. "是否优选": "is_push",
  70. "运营商中标标签": "tagname",
  71. "主体公司": "tagname2",
  72. "中标人": "s_winner",
  73. "招标人": "buyer",
  74. "中标金额": "bidamount",
  75. }
  76. func main1() {
  77. flag.StringVar(&path, "f", "", "文件路径")
  78. flag.Parse()
  79. if path != "" {
  80. file, err := xlsx.OpenFile(path)
  81. if err != nil {
  82. panic(err)
  83. }
  84. sheet := file.Sheets[0]
  85. idcolnum := -1
  86. cellFieldName := map[int]string{}
  87. update := make(map[string]interface{})
  88. for rn, row := range sheet.Rows {
  89. if rn == 0 {
  90. for index, cell := range row.Cells {
  91. if cell.Value == "唯一标识" || cell.Value == "标讯编码(infoID)" { //id所在列
  92. idcolnum = index
  93. }
  94. if v := FieldsMap[cell.Value]; v != "" {
  95. cellFieldName[index] = v
  96. }
  97. }
  98. if idcolnum == -1 {
  99. break
  100. }
  101. continue
  102. } else {
  103. id := row.Cells[idcolnum].String()
  104. id = util.SE.DecodeString(id)
  105. for i, f := range cellFieldName {
  106. if val := row.Cells[i].Value; val != "" {
  107. if f == "is_push" {
  108. update[f] = qu.IntAll(val)
  109. } else {
  110. update[fmt.Sprintf("v_baseinfo.%s", f)] = val
  111. }
  112. }
  113. }
  114. qu.Debug(id, update)
  115. Mgo.UpdateById("f_sourceinfo_chinaunicom_zb_data", id, bson.M{"$set": update})
  116. }
  117. }
  118. err = file.Save(path)
  119. } else {
  120. flag.PrintDefaults()
  121. }
  122. }