main.go 1.9 KB

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