main.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package main
  2. import (
  3. "encoding/json"
  4. "log"
  5. mu "mfw/util"
  6. "net"
  7. "qfw/util"
  8. "time"
  9. )
  10. var (
  11. udpclient mu.UdpClient //udp对象
  12. SingleThread = make(chan bool, 1)
  13. )
  14. func main() {
  15. //udp跑增量 id段 project
  16. //udp跑全量 ql
  17. //udp跑历史数据 信息id1,id2/或id段 ls
  18. //udp强制合并 信息id1,id2,id3 [项目id] 不存在时新建 qzhb
  19. //udp强制拆分 项目id,信息id1,id2 qzcf
  20. //udp重新合并 信息id1,id2,id3 cxhb
  21. if Sysconfig["loadStart"] != nil {
  22. loadStart := util.Int64All(Sysconfig["loadStart"])
  23. if loadStart > -1 {
  24. P_QL.loadData(loadStart)
  25. }
  26. }
  27. time.Sleep(99999 * time.Hour)
  28. }
  29. //udp调用信号
  30. func processUdpMsg(act byte, data []byte, ra *net.UDPAddr) {
  31. switch act {
  32. case mu.OP_TYPE_DATA: //上个节点的数据
  33. var mapInfo map[string]interface{}
  34. err := json.Unmarshal(data, &mapInfo)
  35. log.Println("err:", err, "mapInfo:", mapInfo)
  36. if err != nil {
  37. udpclient.WriteUdp([]byte("err:"+err.Error()), mu.OP_NOOP, ra)
  38. } else if mapInfo != nil {
  39. key, _ := mapInfo["key"].(string)
  40. if key == "" {
  41. key = "udpok"
  42. }
  43. go udpclient.WriteUdp([]byte(key), mu.OP_NOOP, ra)
  44. SingleThread <- true
  45. tasktype, _ := mapInfo["stype"].(string)
  46. log.Println("tasktype:", tasktype)
  47. switch tasktype {
  48. case "ql": //全量合并
  49. go func() {
  50. defer func() {
  51. <-SingleThread
  52. }()
  53. P_QL.currentType = tasktype
  54. P_QL.pici = time.Now().Unix()
  55. P_QL.taskQl(mapInfo)
  56. }()
  57. case "project": //增量合并,未抽取到项目名称或项目编号的不合并 bidding中mergestatus 1已合并 2字段问题不合并 3历史待合并
  58. //合同、验收公告在6个月内查询不到可扩展到两年
  59. go func() {
  60. defer func() {
  61. <-SingleThread
  62. }()
  63. P_QL.currentType = tasktype
  64. P_QL.pici = time.Now().Unix()
  65. P_QL.taskZl(mapInfo)
  66. }()
  67. case "history": //历史数据合并,暂时不写
  68. go func() {
  69. defer func() {
  70. <-SingleThread
  71. }()
  72. }()
  73. }
  74. }
  75. case mu.OP_NOOP: //下个节点回应
  76. ok := string(data)
  77. if ok != "" {
  78. log.Println("ok:", ok)
  79. }
  80. }
  81. }