merge_select.go 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431
  1. package main
  2. // 根据字符特征打分
  3. // 3为最高分,pj为评级 A AD A AA AA AB
  4. func Select(compareStr string, info *Info, compareInfo *Project) (res, pj int) {
  5. //没有可对比的项目名称、或项目编号 //评级
  6. if compareNoPass[compareStr] {
  7. } else {
  8. switch compareStr {
  9. case "AAA":
  10. res = 3
  11. pj = 3
  12. case "AAB":
  13. res = 3
  14. pj = 3
  15. case "ABA":
  16. res = 3
  17. pj = 3
  18. case "ABB":
  19. if info.LenPN > 10 {
  20. res = 3
  21. } else {
  22. res = 2
  23. }
  24. pj = 3
  25. case "BAA":
  26. if info.LenPC > 8 || info.LenPTC > 8 {
  27. res = 3
  28. } else {
  29. res = 2
  30. }
  31. pj = 3
  32. case "BAB":
  33. if info.LenPTC > 8 {
  34. res = 3
  35. } else {
  36. res = 2
  37. }
  38. pj = 3
  39. case "BBA":
  40. if info.LenPC > 8 {
  41. res = 3
  42. } else {
  43. res = 2
  44. }
  45. pj = 3
  46. case "BBB":
  47. res = 2
  48. pj = 2
  49. case "AAD":
  50. if info.LenPC > 8 || info.LenPN > 12 {
  51. res = 3
  52. } else {
  53. res = 2
  54. }
  55. pj = 3
  56. case "ABD":
  57. if info.LenPN > 10 {
  58. res = 3
  59. pj = 2
  60. } else if info.LenPN > 10 {
  61. res = 2
  62. pj = 3
  63. } else {
  64. res = 1
  65. pj = 3
  66. }
  67. case "BAD":
  68. if info.LenPC > 13 || info.LenPC > 8 {
  69. res = 3
  70. pj = 3
  71. } else if info.LenPC > 8 {
  72. res = 2
  73. pj = 3
  74. } else {
  75. res = 1
  76. pj = 3
  77. }
  78. case "BBD":
  79. res = 1
  80. pj = 3
  81. case "ADA":
  82. if info.LenPN > 12 || info.LenPTC > 8 {
  83. res = 3
  84. } else {
  85. res = 2
  86. }
  87. pj = 2
  88. case "ADB":
  89. if info.LenPN > 10 {
  90. res = 3
  91. pj = 2
  92. } else if info.LenPN > 10 {
  93. res = 2
  94. pj = 3
  95. } else {
  96. res = 1
  97. pj = 3
  98. }
  99. case "BDA":
  100. if info.LenPTC > 8 {
  101. res = 3
  102. pj = 2
  103. } else if info.LenPTC > 8 {
  104. res = 2
  105. pj = 3
  106. } else {
  107. res = 1
  108. pj = 3
  109. }
  110. case "BDB":
  111. res = 1
  112. pj = 2
  113. case "ADD":
  114. if info.LenPN > 18 {
  115. res = 3
  116. pj = 2
  117. } else if info.LenPN > 10 {
  118. res = 2
  119. pj = 2
  120. } else {
  121. res = 1
  122. pj = 2
  123. }
  124. case "BDD":
  125. if CheckContain(info.ProjectName, compareInfo.ProjectName) != 3 {
  126. res = 1
  127. pj = 1
  128. }
  129. case "DAA":
  130. if info.LenPTC > 8 || info.LenPC > 8 {
  131. res = 3
  132. pj = 2
  133. } else {
  134. res = 2
  135. pj = 3
  136. }
  137. case "DAB":
  138. res = 1
  139. pj = 3
  140. case "DAD":
  141. if info.LenPC > 14 && !StrOrNum2.MatchString(info.ProjectCode) {
  142. res = 3
  143. pj = 2
  144. } else if info.LenPC > 8 {
  145. res = 2
  146. pj = 2
  147. } else {
  148. res = 1
  149. pj = 2
  150. }
  151. case "DBA":
  152. if info.LenPC > 8 {
  153. res = 2
  154. pj = 2
  155. } else {
  156. res = 1
  157. pj = 3
  158. }
  159. case "DBB":
  160. if !StrOrNum2.MatchString(info.ProjectCode) {
  161. res = 3
  162. pj = 1
  163. } else {
  164. res = 1
  165. pj = 3
  166. }
  167. case "DBD":
  168. if !StrOrNum2.MatchString(info.ProjectCode) {
  169. res = 2
  170. pj = 1
  171. } else {
  172. res = 1
  173. pj = 1
  174. }
  175. case "DDA":
  176. if info.LenPTC > 14 {
  177. res = 3
  178. pj = 1
  179. } else if info.LenPTC > 8 {
  180. res = 2
  181. pj = 1
  182. } else {
  183. res = 1
  184. pj = 2
  185. }
  186. case "DDB":
  187. res = 1
  188. pj = 1
  189. case "ACA":
  190. if info.LenPN > 10 && info.LenPTC > 8 && info.LenPC != len([]rune(compareInfo.ProjectCode)) {
  191. res = 3
  192. pj = 2
  193. } else if info.LenPN > 10 || info.LenPTC > 8 {
  194. res = 2
  195. pj = 2
  196. } else {
  197. res = 1
  198. pj = 3
  199. }
  200. case "ACB":
  201. if info.LenPN > 10 && info.LenPC != len([]rune(compareInfo.ProjectCode)) {
  202. res = 3
  203. pj = 2
  204. } else if info.LenPN > 10 {
  205. res = 2
  206. pj = 2
  207. } else {
  208. res = 1
  209. pj = 3
  210. }
  211. case "BCA":
  212. if info.LenPTC > 8 || info.LenPTC > 12 && info.LenPC != len([]rune(compareInfo.ProjectCode)) {
  213. res = 3
  214. pj = 2
  215. } else if info.LenPTC > 8 {
  216. res = 2
  217. pj = 2
  218. } else {
  219. res = 1
  220. pj = 3
  221. }
  222. case "BCB":
  223. if info.LenPC != len([]rune(compareInfo.ProjectCode)) {
  224. res = 3
  225. pj = 1
  226. } else {
  227. res = 1
  228. pj = 2
  229. }
  230. case "AAC":
  231. if (info.LenPN > 10 && info.LenPC > 8) || info.LenPN > 14 || (info.LenPC > 10 && !StrOrNum2.MatchString(info.ProjectCode)) {
  232. res = 3
  233. pj = 3
  234. } else {
  235. res = 2
  236. pj = 3
  237. }
  238. case "ABC":
  239. if info.LenPN > 14 && !StrOrNum2.MatchString(info.ProjectCode) {
  240. res = 3
  241. pj = 2
  242. } else if info.LenPN > 10 {
  243. res = 2
  244. pj = 3
  245. } else {
  246. res = 1
  247. pj = 3
  248. }
  249. case "BAC":
  250. if info.LenPC > 8 && !StrOrNum2.MatchString(info.ProjectCode) {
  251. res = 3
  252. pj = 2
  253. } else if info.LenPC > 8 {
  254. res = 2
  255. pj = 3
  256. } else {
  257. res = 1
  258. pj = 3
  259. }
  260. case "BBC":
  261. if !StrOrNum2.MatchString(info.ProjectCode) {
  262. res = 3
  263. pj = 1
  264. } else {
  265. res = 1
  266. pj = 2
  267. }
  268. case "ACC":
  269. if info.LenPC != len([]rune(compareInfo.ProjectCode)) {
  270. if info.LenPN > 16 {
  271. res = 2
  272. pj = 1
  273. } else {
  274. res = 1
  275. pj = 2
  276. }
  277. }
  278. case "ACD":
  279. //项目编号不一致
  280. if info.LenPC != len([]rune(compareInfo.ProjectCode)) {
  281. if info.LenPN > 16 {
  282. res = 2
  283. } else {
  284. res = 1
  285. }
  286. pj = 1
  287. }
  288. case "ADC":
  289. if info.LenPN > 16 {
  290. res = 2
  291. } else {
  292. res = 1
  293. }
  294. pj = 1
  295. case "BCC":
  296. //项目编号不一致
  297. if info.LenPC != len([]rune(compareInfo.ProjectCode)) {
  298. res = 1
  299. pj = 1
  300. }
  301. case "BCD":
  302. //项目编号不一致
  303. if info.LenPC != len([]rune(compareInfo.ProjectCode)) {
  304. res = 1
  305. pj = 1
  306. }
  307. case "BDC":
  308. res = 1
  309. pj = 1
  310. case "CAA":
  311. if info.LenPC > 12 || info.LenPTC > 12 {
  312. res = 3
  313. pj = 2
  314. } else if info.LenPC > 8 || info.LenPTC > 8 {
  315. res = 2
  316. pj = 3
  317. } else {
  318. res = 1
  319. pj = 3
  320. }
  321. case "CAB":
  322. if info.LenPC > 12 {
  323. res = 3
  324. pj = 2
  325. } else if info.LenPC > 12 {
  326. res = 2
  327. pj = 3
  328. } else {
  329. res = 1
  330. pj = 3
  331. }
  332. case "CAC":
  333. if info.LenPC > 9 && !StrOrNum2.MatchString(info.ProjectCode) {
  334. res = 2
  335. pj = 2
  336. } else {
  337. res = 1
  338. pj = 1
  339. }
  340. case "CAD":
  341. if info.LenPC > 9 && !StrOrNum2.MatchString(info.ProjectCode) {
  342. res = 2
  343. } else {
  344. res = 1
  345. }
  346. pj = 1
  347. case "CBA":
  348. if info.LenPTC > 14 {
  349. res = 3
  350. pj = 2
  351. } else if info.LenPTC > 12 {
  352. res = 2
  353. pj = 2
  354. } else {
  355. res = 1
  356. pj = 2
  357. }
  358. case "CBB":
  359. res = 1
  360. pj = 2
  361. case "CBC":
  362. if !StrOrNum2.MatchString(info.ProjectCode) {
  363. res = 2
  364. } else {
  365. res = 1
  366. }
  367. pj = 1
  368. case "CBD":
  369. if !StrOrNum2.MatchString(info.ProjectCode) {
  370. res = 2
  371. } else {
  372. res = 1
  373. }
  374. pj = 1
  375. case "CCA":
  376. if info.LenPC != len([]rune(compareInfo.ProjectCode)) {
  377. if info.LenPTC > 12 {
  378. res = 2
  379. } else if info.LenPTC > 5 {
  380. res = 1
  381. }
  382. pj = 1
  383. }
  384. case "CCB":
  385. if info.LenPC != len([]rune(compareInfo.ProjectCode)) {
  386. res = 1
  387. pj = 1
  388. }
  389. case "CDA":
  390. if info.LenPTC > 12 {
  391. res = 2
  392. } else {
  393. res = 1
  394. }
  395. pj = 1
  396. case "CDB":
  397. case "DAC":
  398. if info.LenPC > 13 && !StrOrNum2.MatchString(info.ProjectCode) {
  399. res = 3
  400. } else if info.LenPC > 8 {
  401. res = 2
  402. } else {
  403. res = 1
  404. }
  405. pj = 1
  406. case "DBC":
  407. pj = 1
  408. case "DCA":
  409. if info.LenPC != len([]rune(compareInfo.ProjectCode)) {
  410. if info.LenPTC > 10 {
  411. res = 2
  412. } else {
  413. res = 1
  414. }
  415. pj = 1
  416. }
  417. case "DCB":
  418. if info.LenPC != len([]rune(compareInfo.ProjectCode)) {
  419. pj = 1
  420. }
  421. }
  422. }
  423. return
  424. }