Tchn41.cs 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using CP.Cache;
  5. using CP.Common;
  6. using CP.Model;
  7. namespace CP.Business
  8. {
  9. /// <summary>
  10. /// 海南4+1
  11. /// </summary>
  12. public class Tchn41
  13. {
  14. /// <summary>
  15. /// 缓存
  16. /// </summary>
  17. static WMCache cache = WMCache.GetCacheService();
  18. #region 所有 海南4+1数据
  19. /// <summary>
  20. /// 所有 海南4+1数据
  21. /// </summary>
  22. /// <returns></returns>
  23. public static List<Tchn41Info> GetTchn41List()
  24. {
  25. string key = string.Format(CacheKeys.TCHN41_DATALIST);
  26. List<Tchn41Info> list = cache.GetObject<List<Tchn41Info>>(key) as List<Tchn41Info>;
  27. if (list == null)
  28. {
  29. list = Tchn41Data.GetTchn41List();
  30. cache.AddObject(key, list, (int)CacheTime.Data);
  31. }
  32. return list;
  33. }
  34. /// <summary>
  35. /// 数据筛选
  36. /// </summary>
  37. /// <param name="pagesize">最近n条</param>
  38. /// <param name="year">某年</param>
  39. /// <param name="sqi">开始期</param>
  40. /// <param name="eqi">结束期</param>
  41. /// <param name="week">星期n(最近120期)</param>
  42. /// <param name="ds">单双期.1=单;2=双(最近120期)</param>
  43. /// <returns></returns>
  44. public static List<Tchn41Info> GetTchn41List(ref List<Tchn41Info> list, int pagesize, int year, int sqi, int eqi, int week = 0, int ds = 0)
  45. {
  46. List<Tchn41Info> rlist = new List<Tchn41Info>();
  47. if (list == null || list.Count == 0)
  48. return rlist;
  49. int size = list.Count;
  50. if (pagesize > 0)
  51. {
  52. for (int i = (size - pagesize); i < size; i++)
  53. {
  54. rlist.Add(list[i]);
  55. }
  56. return rlist;
  57. }
  58. if (year > 0)
  59. {
  60. rlist.Clear();
  61. for (int i = 0; i < size; i++)
  62. {
  63. if (TypeConverter.StrToInt(list[i].qi.ToString().Substring(0, 4), 0) == year)
  64. rlist.Add(list[i]);
  65. }
  66. return rlist;
  67. }
  68. if (week > 0)
  69. {
  70. rlist.Clear();
  71. List<Tchn41Info> temp = new List<Tchn41Info>();
  72. for (int i = 0; i < size; i++)
  73. {
  74. if (list[i].week == week)
  75. temp.Add(list[i]);
  76. }
  77. for (int i = (temp.Count - 120); i < temp.Count; i++)
  78. {
  79. rlist.Add(temp[i]);
  80. }
  81. return rlist;
  82. }
  83. if (ds > 0)
  84. {
  85. rlist.Clear();
  86. List<Tchn41Info> temp = new List<Tchn41Info>();
  87. for (int i = 0; i < size; i++)
  88. {
  89. if (ds == 1)
  90. {
  91. if (list[i].qi % 2 != 0)
  92. temp.Add(list[i]);
  93. }
  94. else if (ds == 2)
  95. {
  96. if (list[i].qi % 2 == 0)
  97. temp.Add(list[i]);
  98. }
  99. }
  100. for (int i = (temp.Count - 120); i < temp.Count; i++)
  101. {
  102. rlist.Add(temp[i]);
  103. }
  104. return rlist;
  105. }
  106. if (sqi > 0 && eqi > 0)
  107. {
  108. rlist.Clear();
  109. int srank = GetTchn41Info(ref list, sqi).rank;
  110. int erank = GetTchn41Info(ref list, eqi).rank;
  111. if (erank != 0 && srank != 0 && erank > srank)
  112. {
  113. for (int i = srank - 1; i < erank && i < size; i++)
  114. {
  115. rlist.Add(list[i]);
  116. }
  117. }
  118. return rlist;
  119. }
  120. ///无参数条件时,返回所有数据
  121. if (pagesize == 0 && year == 0 && sqi == 0 && eqi == 0 && week == 0)
  122. return list;
  123. return rlist;
  124. }
  125. /// <summary>
  126. /// 根据当前出号和排名,查询出上一次出此号时的数据
  127. /// 主要用在算遗漏时
  128. /// </summary>
  129. /// <param name="val"></param>
  130. /// <param name="rank">当前排名</param>
  131. /// <param name="type">类型 0=百位号;1=十位号;2=个位号;3=组选</param>
  132. /// <returns></returns>
  133. public static Tchn41Info GetLastTchn41Info(ref List<Tchn41Info> list, int val, int rank, int type)
  134. {
  135. Tchn41Info info = new Tchn41Info();
  136. int size = list.Count;
  137. ///升序的情况
  138. ///未实现走势图倒序的情况..
  139. for (int i = rank - 2; i >= 0; i--)
  140. {
  141. if (type == 0)
  142. {
  143. if (list[i].n1 == val)
  144. {
  145. info = list[i];
  146. return info;
  147. }
  148. }
  149. if (type == 1)
  150. {
  151. if (list[i].n2 == val)
  152. {
  153. info = list[i];
  154. return info;
  155. }
  156. }
  157. if (type == 2)
  158. {
  159. if (list[i].n3 == val)
  160. {
  161. info = list[i];
  162. return info;
  163. }
  164. }
  165. if (type == 4)
  166. {
  167. if (list[i].n4 == val)
  168. {
  169. info = list[i];
  170. return info;
  171. }
  172. }
  173. if (type == 5)
  174. {
  175. if (list[i].n5 == val)
  176. {
  177. info = list[i];
  178. return info;
  179. }
  180. }
  181. if (type == 6)
  182. {
  183. int n = new List<int> { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 }.Max();
  184. if (n == val)
  185. {
  186. info = list[i];
  187. return info;
  188. }
  189. }
  190. if (type == 7)
  191. {
  192. int n = new List<int> { list[i].n1, list[i].n2, list[i].n3, list[i].n4, list[i].n5 }.Min();
  193. if (n == val)
  194. {
  195. info = list[i];
  196. return info;
  197. }
  198. }
  199. if (type == 3)
  200. {
  201. if (list[i].n1 == val || list[i].n2 == val || list[i].n3 == val)
  202. {
  203. info = list[i];
  204. return info;
  205. }
  206. }
  207. }
  208. return info;
  209. }
  210. /// <summary>
  211. /// 根据期数获取期一期的数据...
  212. /// </summary>
  213. /// <param name="qi"></param>
  214. /// <returns></returns>
  215. public static Tchn41Info GetTchn41Info(ref List<Tchn41Info> list, int qi)
  216. {
  217. Tchn41Info info = new Tchn41Info();
  218. int size = list.Count;
  219. for (int i = 0; i < size; i++)
  220. {
  221. if (list[i].qi == qi)
  222. {
  223. info = list[i];
  224. break;
  225. }
  226. }
  227. return info;
  228. }
  229. #endregion
  230. /// <summary>
  231. /// 上一次海南41和值=val的数据
  232. /// </summary>
  233. /// <param name="val"></param>
  234. /// <param name="rank"></param>
  235. /// <returns></returns>
  236. public static Tchn41Info GetLastHzTchn41Info(ref List<Tchn41Info> list, int val, int rank)
  237. {
  238. Tchn41Info info = new Tchn41Info();
  239. int size = list.Count;
  240. for (int i = rank - 2; i >= 0; i--)
  241. {
  242. if (val < 12 && list[i].hz < 12)
  243. {
  244. info = list[i];
  245. return info;
  246. }
  247. if (val > 33 && list[i].hz > 33)
  248. {
  249. info = list[i];
  250. return info;
  251. }
  252. if (list[i].hz == val)
  253. {
  254. info = list[i];
  255. return info;
  256. }
  257. }
  258. return info;
  259. }
  260. /// <summary>
  261. /// 上一次和尾=val的数据
  262. /// </summary>
  263. /// <param name="val"></param>
  264. /// <param name="rank"></param>
  265. /// <returns></returns>
  266. public static Tchn41Info GetLastHwTchn41Info(ref List<Tchn41Info> list, int val, int rank)
  267. {
  268. Tchn41Info info = new Tchn41Info();
  269. int size = list.Count;
  270. for (int i = rank - 2; i >= 0; i--)
  271. {
  272. if (ZstUtils.GetHw(list[i].hz) == val)
  273. {
  274. info = list[i];
  275. return info;
  276. }
  277. }
  278. return info;
  279. }
  280. /// <summary>
  281. /// 根据当前排名,取出上一个排名,即上一期的数据.
  282. /// </summary>
  283. /// <param name="rank"></param>
  284. /// <returns></returns>
  285. public static Tchn41Info GetLastQiTchn41Info(ref List<Tchn41Info> list, int rank)
  286. {
  287. Tchn41Info info = new Tchn41Info();
  288. int size = list.Count;
  289. for (int i = rank - 2; i >= 0; i--)
  290. {
  291. if (list[i].rank == rank - 1)
  292. {
  293. info = list[i];
  294. return info;
  295. }
  296. }
  297. return info;
  298. }
  299. /// <summary>
  300. /// 上一次和值奇偶
  301. /// </summary>
  302. /// <param name="xt"></param>
  303. /// <param name="rank"></param>
  304. /// <returns></returns>
  305. public static Tchn41Info GetLastHzJoTchn41Info(ref List<Tchn41Info> list, int xt, int rank)
  306. {
  307. Tchn41Info info = new Tchn41Info();
  308. int size = list.Count;
  309. for (int i = rank - 2; i >= 0; i--)
  310. {
  311. if (xt == 0)
  312. {
  313. if (list[i].hz % 2 == 0)
  314. {
  315. info = list[i];
  316. return info;
  317. }
  318. }
  319. if (xt == 1)
  320. {
  321. if (list[i].hz % 2 != 0)
  322. {
  323. info = list[i];
  324. return info;
  325. }
  326. }
  327. }
  328. return info;
  329. }
  330. /// <summary>
  331. /// 上一次和值大小
  332. /// </summary>
  333. /// <param name="xt"></param>
  334. /// <param name="rank"></param>
  335. /// <returns></returns>
  336. public static Tchn41Info GetLastHzDxTchn41Info(ref List<Tchn41Info> list, int xt, int rank)
  337. {
  338. Tchn41Info info = new Tchn41Info();
  339. int size = list.Count;
  340. for (int i = rank - 2; i >= 0; i--)
  341. {
  342. if (xt == 0)
  343. {
  344. if (list[i].hz < 23)
  345. {
  346. info = list[i];
  347. return info;
  348. }
  349. }
  350. if (xt == 1)
  351. {
  352. if (list[i].hz > 22)
  353. {
  354. info = list[i];
  355. return info;
  356. }
  357. }
  358. }
  359. return info;
  360. }
  361. /// <summary>
  362. /// 和值上次012情况
  363. /// </summary>
  364. /// <param name="xt"></param>
  365. /// <param name="rank"></param>
  366. /// <returns></returns>
  367. public static Tchn41Info GetLastHz012Tchn41Info(ref List<Tchn41Info> list, int xt, int rank)
  368. {
  369. Tchn41Info info = new Tchn41Info();
  370. int size = list.Count;
  371. for (int i = rank - 2; i >= 0; i--)
  372. {
  373. if (xt == 0)
  374. {
  375. if (list[i].hz % 3 == 0)
  376. {
  377. info = list[i];
  378. return info;
  379. }
  380. }
  381. if (xt == 1)
  382. {
  383. if (list[i].hz % 3 == 1)
  384. {
  385. info = list[i];
  386. return info;
  387. }
  388. }
  389. if (xt == 2)
  390. {
  391. if (list[i].hz % 3 == 2)
  392. {
  393. info = list[i];
  394. return info;
  395. }
  396. }
  397. }
  398. return info;
  399. }
  400. /// <summary>
  401. /// 上一次 hw奇偶
  402. /// </summary>
  403. /// <param name="xt"></param>
  404. /// <param name="rank"></param>
  405. /// <returns></returns>
  406. public static Tchn41Info GetLastHwJoTchn41Info(ref List<Tchn41Info> list, int xt, int rank)
  407. {
  408. Tchn41Info info = new Tchn41Info();
  409. int size = list.Count;
  410. for (int i = rank - 2; i >= 0; i--)
  411. {
  412. if (xt == 0)
  413. {
  414. if (ZstUtils.GetHw(list[i].hz) % 2 == 0)
  415. {
  416. info = list[i];
  417. return info;
  418. }
  419. }
  420. if (xt == 1)
  421. {
  422. if (ZstUtils.GetHw(list[i].hz) % 2 != 0)
  423. {
  424. info = list[i];
  425. return info;
  426. }
  427. }
  428. }
  429. return info;
  430. }
  431. /// <summary>
  432. /// 上一次hn4+1大小
  433. /// </summary>
  434. /// <param name="xt"></param>
  435. /// <param name="rank"></param>
  436. /// <returns></returns>
  437. public static Tchn41Info GetLastHwDxTchn41Info(ref List<Tchn41Info> list, int xt, int rank)
  438. {
  439. Tchn41Info info = new Tchn41Info();
  440. int size = list.Count;
  441. for (int i = rank - 2; i >= 0; i--)
  442. {
  443. if (xt == 0)
  444. {
  445. if (ZstUtils.GetHw(list[i].hz) < 5)
  446. {
  447. info = list[i];
  448. return info;
  449. }
  450. }
  451. if (xt == 1)
  452. {
  453. if (ZstUtils.GetHw(list[i].hz) > 4)
  454. {
  455. info = list[i];
  456. return info;
  457. }
  458. }
  459. }
  460. return info;
  461. }
  462. /// <summary>
  463. /// hn4+1 上次012
  464. /// </summary>
  465. /// <param name="xt"></param>
  466. /// <param name="rank"></param>
  467. /// <returns></returns>
  468. public static Tchn41Info GetLastHw012Tchn41Info(ref List<Tchn41Info> list, int xt, int rank)
  469. {
  470. Tchn41Info info = new Tchn41Info();
  471. int size = list.Count;
  472. for (int i = rank - 2; i >= 0; i--)
  473. {
  474. if (xt == 0)
  475. {
  476. if (ZstUtils.GetHw(list[i].hz) == 0)
  477. {
  478. info = list[i];
  479. return info;
  480. }
  481. }
  482. if (xt == 1)
  483. {
  484. if (ZstUtils.GetHw(list[i].hz) == 1)
  485. {
  486. info = list[i];
  487. return info;
  488. }
  489. }
  490. if (xt == 2)
  491. {
  492. if (ZstUtils.GetHw(list[i].hz) == 2)
  493. {
  494. info = list[i];
  495. return info;
  496. }
  497. }
  498. }
  499. return info;
  500. }
  501. }
  502. }