123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470 |
- //fmt.Println("-------------------", len(compareABCD))
- //四个元素一致 [AB][AB][AB][AB]
- vm = []string{"A", "B"}
- for i := 0; i < 2; i++ {
- for j := 0; j < 2; j++ {
- for k := 0; k < 2; k++ {
- for m := 0; m < 2; m++ {
- key := vm[i] + vm[j] + vm[k] + vm[m]
- compareAB[key] = true
- //fmt.Println(key)
- }
- }
- }
- }
- fmt.Println("-------------------", len(compareAB))
- //---至少两个一致,其他可能不存在
- //[AB][ABD][AB][ABD]
- //[AB][ABD][ABD][AB]
- //[ABD][AB][ABD][AB]
- //[ABD][AB][AB][ABD]
- vm = []string{"A", "B"}
- vm2 := []string{"A", "B", "D"}
- for i := 0; i < 2; i++ {
- for j := 0; j < 3; j++ {
- for k := 0; k < 2; k++ {
- for m := 0; m < 3; m++ {
- key := vm[i] + vm2[j] + vm[k] + vm2[m]
- if !compareAB[key] {
- compareAB2D[key] = true
- //fmt.Println(key)
- }
- }
- }
- }
- }
- for i := 0; i < 2; i++ {
- for j := 0; j < 3; j++ {
- for k := 0; k < 3; k++ {
- for m := 0; m < 2; m++ {
- key := vm[i] + vm2[j] + vm2[k] + vm[m]
- if !compareAB[key] {
- compareAB2D[key] = true
- //fmt.Println(key)
- }
- }
- }
- }
- }
- for i := 0; i < 3; i++ {
- for j := 0; j < 2; j++ {
- for k := 0; k < 3; k++ {
- for m := 0; m < 2; m++ {
- key := vm2[i] + vm[j] + vm2[k] + vm[m]
- if !compareAB[key] {
- compareAB2D[key] = true
- //fmt.Println(key)
- }
- }
- }
- }
- }
- for i := 0; i < 3; i++ {
- for j := 0; j < 2; j++ {
- for k := 0; k < 2; k++ {
- for m := 0; m < 3; m++ {
- key := vm2[i] + vm[j] + vm[k] + vm2[m]
- if !compareAB[key] {
- compareAB2D[key] = true
- //fmt.Println(key)
- }
- }
- }
- }
- }
- //fmt.Println("-------------------", len(compareAB2D))
- //---至少一个一致,其他可能不存在
- //[ABD][ABD][ABD][ABD] //已经删除DDDD
- vm = []string{"A", "B", "D"}
- for i := 0; i < 3; i++ {
- for j := 0; j < 3; j++ {
- for k := 0; k < 3; k++ {
- for m := 0; m < 3; m++ {
- key := vm[i] + vm[j] + vm[k] + vm[m]
- if !compareAB[key] && !compareAB2D[key] && !compareNoPass[key] {
- compareABD[key] = true
- //fmt.Println(key)
- }
- }
- }
- }
- }
- //fmt.Println("-------------------", len(compareABD))
- //[AB][ABCD][AB][ABCD]
- //[AB][ABCD][ABCD][AB]
- //[ABCD][AB][ABCD][AB]
- //[ABCD][AB][AB][ABCD]
- vm = []string{"A", "B"}
- vm2 = []string{"A", "B", "C", "D"}
- for i := 0; i < 2; i++ {
- for j := 0; j < 4; j++ {
- for k := 0; k < 2; k++ {
- for m := 0; m < 4; m++ {
- key := vm[i] + vm2[j] + vm[k] + vm2[m]
- if !compareAB[key] && !compareAB2D[key] && !compareNoPass[key] && !compareABD[key] {
- compareAB2CD[key] = true
- //fmt.Println(key)
- }
- }
- }
- }
- }
- for i := 0; i < 2; i++ {
- for j := 0; j < 4; j++ {
- for k := 0; k < 4; k++ {
- for m := 0; m < 2; m++ {
- key := vm[i] + vm2[j] + vm2[k] + vm[m]
- if !compareAB[key] && !compareAB2D[key] && !compareNoPass[key] && !compareABD[key] {
- compareAB2CD[key] = true
- //fmt.Println(key)
- }
- }
- }
- }
- }
- for i := 0; i < 4; i++ {
- for j := 0; j < 2; j++ {
- for k := 0; k < 4; k++ {
- for m := 0; m < 2; m++ {
- key := vm2[i] + vm[j] + vm2[k] + vm[m]
- if !compareAB[key] && !compareAB2D[key] && !compareNoPass[key] && !compareABD[key] {
- compareAB2CD[key] = true
- //fmt.Println(key)
- }
- }
- }
- }
- }
- for i := 0; i < 4; i++ {
- for j := 0; j < 2; j++ {
- for k := 0; k < 2; k++ {
- for m := 0; m < 4; m++ {
- key := vm2[i] + vm[j] + vm[k] + vm2[m]
- if !compareAB[key] && !compareAB2D[key] && !compareNoPass[key] && !compareABD[key] {
- compareAB2CD[key] = true
- //fmt.Println(key)
- }
- }
- }
- }
- }
- //fmt.Println("-------------------", len(compareAB2CD))
- //[ABCD][ABCD][ABCD][ABCD] //已经删除[CD][CD][CD][CD] //这个要重点讨论
- vm = []string{"A", "B", "C", "D"}
- for i := 0; i < 4; i++ {
- for j := 0; j < 4; j++ {
- for k := 0; k < 4; k++ {
- for m := 0; m < 4; m++ {
- key := vm[i] + vm[j] + vm[k] + vm[m]
- if !compareAB[key] && !compareAB2D[key] && !compareABD[key] && !compareNoPass[key] && !compareAB2CD[key] {
- compareABCD[key] = true
- //fmt.Println(key)
- }
- }
- }
- }
- }
- //fmt.Println("-------------------", len(compareABCD))
-
-
-
- /*
- if compareNoPass[compareStr] {
- //[CD][CD][CD]
- //没有通过
- } else {
- compareProject.score = score
- compareProject.pos = k
- if compareAB[compareStr] || compareAB2D[compareStr] || compareAB2CD[compareStr] { //项目名称、项目编号相等 四个相等
- if compareBuyer != "C" { //采购单位相等或不存在
- if compareBuyer == "D" { //不存在
- if "AA" == compareCity && compareAgency != "C" && compareTime != "D" {
- if info.LenPN > 19 || info.LenPC > 12 || info.LenPTC > 12 {
- comRes1 = append(comRes1, compareProject)
- BFind = true
- } else {
- comRes2 = append(comRes2, compareProject)
- BFind = true
- }
- } else {
- if info.LenPN > 19 || info.LenPC > 12 || info.LenPTC > 12 {
- comRes2 = append(comRes2, compareProject)
- BFind = true
- } else if compareCity[1:1] != "C" && compareAgency != "C" && compareTime != "D" {
- comRes3 = append(comRes3, compareProject)
- BFind = true
- }
- }
- } else { //相等或包含
- comRes1 = append(comRes1, compareProject)
- BFind = true
- }
- } else { //采购单位不相等
- //省市 时间 代理机构
- if "AA" == compareCity && compareAgency != "D" && compareTime != "D" {
- if info.LenPN > 19 || info.LenPC > 12 || info.LenPTC > 12 {
- comRes1 = append(comRes1, compareProject)
- BFind = true
- } else {
- comRes2 = append(comRes2, compareProject)
- BFind = true
- }
- } else {
- if (compareCity[1:1] != "C" && compareAgency != "C" && compareTime != "D") && (info.LenPN > 19 || info.LenPC > 12 || info.LenPTC > 12) {
- comRes2 = append(comRes2, compareProject)
- BFind = true
- }
- }
- }
- //} else if compareAB2D[compareStr] { //至少有两个[AB]*[AB]*相等
- } else if compareABD[compareStr] { //至少有一个[ABD]相等
- if compareBuyer != "C" { //采购单位相等或不存在
- if compareBuyer == "D" { //不存在
- if "AA" == compareCity && compareAgency != "C" && compareTime != "D" {
- if (info.LenPN > 19) && (info.LenPC > 12 || info.LenPTC > 12) {
- comRes2 = append(comRes2, compareProject)
- BFind = true
- } else if info.LenPN > 19 || info.LenPC > 12 || info.LenPTC > 12 {
- comRes3 = append(comRes3, compareProject)
- BFind = true
- }
- } else {
- if (compareCity[1:1] != "C" && compareAgency != "C" && compareTime != "D") && (info.LenPN > 19 || info.LenPC > 12 || info.LenPTC > 12) {
- comRes3 = append(comRes3, compareProject)
- BFind = true
- }
- }
- } else { //相等或包含
- if (info.LenPN > 19) && (info.LenPC > 12 || info.LenPTC > 12) {
- comRes1 = append(comRes1, compareProject)
- BFind = true
- } else {
- comRes2 = append(comRes2, compareProject)
- BFind = true
- }
- }
- } else { //采购单位不相等
- //省市 时间 代理机构
- if "AA" == compareCity && compareAgency != "D" && compareTime != "D" {
- if (info.LenPN > 19) && (info.LenPC > 12 || info.LenPTC > 12) {
- comRes2 = append(comRes2, compareProject)
- BFind = true
- } else if info.LenPN > 19 || info.LenPC > 12 || info.LenPTC > 12 {
- comRes3 = append(comRes3, compareProject)
- BFind = true
- }
- } else {
- if (compareCity[1:1] != "C" && compareAgency != "C" && compareTime != "D") && (info.LenPN > 19) && (info.LenPC > 12 || info.LenPTC > 12) {
- comRes3 = append(comRes3, compareProject)
- BFind = true
- }
- }
- }
- } else if compareABCD[compareStr] { //有不相等的
- if compareBuyer != "C" { //采购单位相等或不存在
- if compareBuyer == "D" { //不存在
- if "AA" == compareCity && compareAgency != "C" && compareTime != "D" {
- if (info.LenPN > 21) && (info.LenPC > 14 || info.LenPTC > 14) {
- comRes2 = append(comRes2, compareProject)
- BFind = true
- } else if info.LenPN > 21 || info.LenPC > 14 || info.LenPTC > 14 {
- comRes3 = append(comRes3, compareProject)
- BFind = true
- }
- } else {
- if (compareCity[1:1] != "C" && compareAgency != "C" && compareTime != "D") && (info.LenPN > 21 || info.LenPC > 14 || info.LenPTC > 14) {
- comRes3 = append(comRes3, compareProject)
- BFind = true
- }
- }
- } else { //相等或包含
- if (info.LenPN > 21) && (info.LenPC > 14 || info.LenPTC > 14) {
- comRes1 = append(comRes1, compareProject)
- BFind = true
- } else {
- comRes2 = append(comRes2, compareProject)
- BFind = true
- }
- }
- } else { //采购单位不相等
- //省市 时间 代理机构
- if "AA" == compareCity && compareAgency != "D" && compareTime != "D" {
- if (info.LenPN > 24) && (info.LenPC > 16 || info.LenPTC > 16) {
- comRes2 = append(comRes2, compareProject)
- BFind = true
- } else if info.LenPN > 24 || info.LenPC > 16 || info.LenPTC > 16 {
- comRes3 = append(comRes3, compareProject)
- BFind = true
- }
- } else {
- if (compareCity[1:1] != "C" && compareAgency != "C" && compareTime != "D") && (info.LenPN > 24) && (info.LenPC > 16 || info.LenPTC > 16) {
- comRes3 = append(comRes3, compareProject)
- BFind = true
- }
- }
- }
- }
- }
- */
- // if !BFind {
- // //解锁
- // IDArr[k].Lock.Unlock()
- //
-
-
-
- /*
- if info.PTN != "" {
- if info.PTN == compareProject.PTN || info.PTN == compareProject.ProjectName {
- compareStr += "A"
- score += 4
- if len([]rune(info.PTN)) > 19 {
- score += 2
- }
- } else if compareProject.PTN != "" {
- if strings.Contains(info.PTN, compareProject.PTN) || strings.Contains(compareProject.PTN, info.PTN) {
- compareStr += "B"
- score += 3
- if len([]rune(info.PTN)) > 19 {
- score += 2
- }
- } else {
- compareStr += "C"
- }
- } else if compareProject.ProjectName != "" {
- if strings.Contains(info.PTN, compareProject.ProjectName) || strings.Contains(compareProject.ProjectName, info.PTN) {
- compareStr += "B"
- score += 3
- if len([]rune(info.PTN)) > 19 {
- score += 2
- }
- } else {
- compareStr += "C"
- }
- } else {
- compareStr += "D"
- }
- } else {
- compareStr += "D"
- }
- */
-
-
- if info.ProjectCode != "" {
- if info.ProjectCode == compareProject.ProjectCode {
- compareStr += "A"
- score += 4
- if len([]rune(info.ProjectCode)) > 12 {
- score += 2
- }
- } else if compareProject.ProjectCode != "" {
- if strings.Contains(info.ProjectCode, compareProject.ProjectCode) || strings.Contains(compareProject.ProjectCode, info.ProjectCode) {
- compareStr += "B"
- score += 3
- if len([]rune(info.ProjectCode)) > 12 {
- score += 2
- }
- } else {
- compareStr += "C"
- }
- } else {
- compareStr += "D"
- }
- } else {
- compareStr += "D"
- }
- if info.PTC != "" {
- if info.PTC == "" { //compareProject.PTC || info.PTC == compareProject.ProjectCode {
- compareStr += "A"
- score += 4
- if len([]rune(info.PTC)) > 12 {
- score += 2
- }
- } else if "" != "" {
- if strings.Contains(info.PTC, "") || strings.Contains("", info.PTC) {
- compareStr += "B"
- score += 3
- if len([]rune(info.PTC)) > 12 {
- score += 2
- }
- } else {
- compareStr += "C"
- }
- } else if compareProject.ProjectCode != "" {
- if strings.Contains(info.PTC, compareProject.ProjectCode) || strings.Contains(compareProject.ProjectCode, info.PTC) {
- compareStr += "B"
- score += 3
- if len([]rune(info.PTC)) > 12 {
- score += 2
- }
- } else {
- compareStr += "C"
- }
- } else {
- compareStr += "D"
- }
- } else {
- compareStr += "D"
- }
- 、
-
-
-
- if len(comRes1) > 0 {
- if len(comRes1) > 1 {
- sort.Slice(comRes1, func(i, j int) bool {
- return comRes1[i].score > comRes1[j].score
- })
- }
- UpdateProject(tmp, info, comRes1[0], 1, comStr)
- } else if len(comRes2) > 0 {
- if len(comRes2) > 1 {
- sort.Slice(comRes2, func(i, j int) bool {
- return comRes2[i].score > comRes2[j].score
- })
- }
- UpdateProject(tmp, info, comRes2[0], 2, comStr)
- } else if len(comRes3) > 0 {
- if len(comRes3) > 1 {
- sort.Slice(comRes3, func(i, j int) bool {
- return comRes3[i].score > comRes3[j].score
- })
- }
- UpdateProject(tmp, info, comRes3[0], 3, comStr)
- } else {
- //没有找到
- id := NewProject(tmp, info)
- t, _ := strconv.ParseInt(id[0:8], 16, 64)
- AllMapLock.Lock()
- AllIdsMap[int(t)%idsMapSize][id] = &ID{Id: id, lastTime: info.Publishtime}
- AllMapLock.Unlock()
- for _, m := range idsMap {
- m.Key.Arr = append(m.Key.Arr, id)
- }
- }
-
-
- for k, v := range str {
- if v != "" && repeat[v] == nil {
- index := len(v) % size
- m := AllMap[index]
- m.Lock.Lock()
- ids := m.Map[v]
- if ids == nil {
- ids = &Key{Arr: []string{}}
- m.Map[v] = ids
- }
- //所有键一样的对象加锁
- ids.Lock.Lock()
- m.Lock.Unlock()
- repeat[v] = &IdsMapAndIndex{ids, k}
- }
- }
|