package main import ( "math" "regexp" ) func Select(compareStr string, info *Info, compareInfo *ProjectInfo) (res int) { //没有可对比的项目名称、或项目编号 if compareNoPass[compareStr] { } else { switch compareStr { case "AAA": res = 3 case "AAB": res = 3 case "ABA": res = 3 case "ABB": if info.LenPTC > 6 || info.LenPC > 6 { res = 3 } else { res = 2 } case "BAA": if info.LenPN > 10 { res = 3 } else { res = 2 } case "BAB": if info.LenPN > 10 || info.LenPTC > 6 { res = 3 } else { res = 2 } case "BBA": if info.LenPN > 10 || info.LenPC > 6 { res = 3 } else { res = 2 } case "BBB": v := 0 if info.LenPN > 10 { v++ } if info.LenPC > 6 { v++ } if info.LenPTC > 6 { v++ } if v > 1 { res = 3 } else if v == 1 { res = 2 } else { res = 1 } case "AAD": res = 3 case "ABD": if info.LenPC > 12 || info.LenPN > 16 { res = 3 } else { res = 2 } case "BAD": if info.LenPC > 12 || info.LenPN > 16 { res = 3 } else { res = 2 } case "BBD": if info.LenPC > 12 && info.LenPN > 16 { res = 3 } else { res = 2 } case "ADA": res = 3 case "ADB": if info.LenPTC > 12 || info.LenPN > 16 { res = 3 } else { res = 2 } case "BDA": if info.LenPTC > 12 || info.LenPN > 16 { res = 3 } else { res = 2 } case "BDB": if info.LenPTC > 12 && info.LenPN > 16 { res = 3 } else { res = 2 } case "ADD": // if info.LenPN > 18 { // res = 3 // } else if info.LenPN > 14 { res = 2 } else { res = 1 } case "BDD": if info.LenPN > 18 { res = 2 } else { res = 1 } case "DAA": if info.LenPTC > 12 || info.LenPC > 12 { res = 2 } else { res = 1 } case "DAB": if info.LenPTC > 12 { res = 2 } else { res = 1 } case "DAD": if info.LenPTC > 14 { res = 2 } else { res = 1 } case "DBA": if info.LenPC > 12 { res = 2 } else { res = 1 } case "DBB": if info.LenPTC > 12 && info.LenPC > 12 { res = 2 } else { res = 1 } case "DBD": if info.LenPC > 8 { res = 1 } case "DDA": if info.LenPTC > 12 { res = 2 } else { res = 1 } case "DDB": if info.LenPC > 8 { res = 1 } case "ACA": if info.LenPN > 12 || info.LenPTC > 9 { res = 2 } else { res = 1 } case "ACB": if info.LenPN > 14 && info.LenPTC > 10 { res = 2 } else { res = 1 } case "BCA": if info.LenPN > 12 && info.LenPTC > 9 { res = 2 } else { res = 1 } case "BCB": if info.LenPN > 12 && info.LenPTC > 9 { res = 2 } else if info.LenPN > 16 || info.LenPTC > 12 { res = 1 } case "AAC": if info.LenPN > 12 || info.LenPC > 9 { res = 3 } else { res = 2 } case "ABC": if info.LenPN > 14 || info.LenPC > 12 { res = 2 } else { res = 1 } case "BAC": if info.LenPN > 14 || info.LenPC > 12 { res = 2 } else { res = 1 } case "BBC": // if info.LenPN > 12 && info.LenPTC > 9 { // res = 1 // } else { // res = 1 // } res = 1 case "ACC": // if info.LenPC > 4 && len(compareInfo.ProjectCode) > 4 && CheckHanAndNum(info.ProjectCode) && CheckHanAndNum(compareInfo.ProjectCode) { // //未考虑MPC // } else if info.LenPN > 16 { // res = 1 // } // case "ACD": //项目编号不一致 if math.Abs(float64(info.LenPC-len([]rune(compareInfo.ProjectCode)))) > 3 && info.LenPN > 12 { res = 1 } case "ADC": if info.LenPN > 16 { res = 1 } case "BCC": //项目编号不一致 case "BCD": //项目编号不一致 if info.LenPC > 4 && len(compareInfo.ProjectCode) > 4 && (!_numreg1.MatchString(info.ProjectCode) && !_numreg1.MatchString(compareInfo.ProjectCode)) { //未考虑MPC } else if info.LenPN > 18 && info.LenPC-len([]rune(compareInfo.ProjectCode)) != 0 { res = 1 } case "BDC": if info.LenPN > 18 && info.LenPTC-len([]rune(compareInfo.ProjectCode)) != 0 { res = 1 } case "CAA": if info.LenPC > 10 || info.LenPTC > 10 { res = 2 } else { res = 1 } case "CAB": if info.LenPC > 10 && info.LenPTC > 10 { res = 2 } else { res = 1 } case "CAC": if info.LenPC > 14 && math.Abs(float64(info.LenPN-len([]rune(compareInfo.ProjectName)))) > 4 { res = 1 } case "CAD": if info.LenPC > 14 && math.Abs(float64(info.LenPN-len([]rune(compareInfo.ProjectName)))) > 4 { res = 1 } case "CBA": if info.LenPC > 10 && info.LenPTC > 10 { res = 1 } case "CBB": if info.LenPC > 10 && info.LenPTC > 10 { res = 1 } case "CBC": if info.LenPC > 14 || (info.LenPC > 9 && !numCheckPc.MatchString(info.ProjectCode)) { res = 1 } case "CBD": if info.LenPC > 14 || (info.LenPC > 10 && !numCheckPc.MatchString(info.ProjectCode)) { res = 1 } case "CCA": if (info.LenPTC > 12 && !numCheckPc.MatchString(info.PTC)) || CheckHanAndNum(info.PTC) { res = 1 } case "CCB": // case "CDA": if info.LenPTC > 10 || (info.LenPTC > 8 && !numCheckPc.MatchString(info.PTC)) || CheckHanAndNum(info.PTC) { res = 1 } case "CDB": if info.LenPTC > 15 || (info.LenPTC > 12 && !numCheckPc.MatchString(info.PTC)) { res = 1 } case "DAC": if info.LenPC > 12 || (info.LenPC > 10 && !numCheckPc.MatchString(info.ProjectCode)) || CheckHanAndNum(info.ProjectCode) { res = 1 } case "DBC": if info.LenPC > 15 || (info.LenPC > 12 && !numCheckPc.MatchString(info.ProjectCode)) { res = 1 } case "DCA": if info.LenPTC > 14 || (info.LenPTC > 10 && !numCheckPc.MatchString(info.PTC)) || CheckHanAndNum(info.PTC) { res = 1 } case "DCB": // if !CheckHanAndNum(info.PTC) && !numCheckPc.MatchString(info.PTC) && info.LenPTC > 10 { res = 1 } } } return } var nreg1 = regexp.MustCompile("[0-9]{2,}") var zreg1 = regexp.MustCompile("[a-zA-Z]{1,}") var hreg1 = regexp.MustCompile(`[\p{Han}]+`) func CheckHanAndNum(str string) (b bool) { return nreg1.MatchString(str) && hreg1.MatchString(str) } func CheckZimuAndNum(str string) (b bool) { return zreg1.MatchString(str) && nreg1.MatchString(str) }