TransDataService.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using AutoMapper;
  5. using DataTransfersLibs.Models;
  6. using SysBaseLibs;
  7. using SysDataLibs.TableClass;
  8. namespace DataTransfersLibs.Service
  9. {
  10. public class TransDataService : Sys_Users_info
  11. {
  12. public TransDataService(DataRow poRow, DBConnSql poDbConn)
  13. : base(poRow)
  14. {
  15. if (poRow != null && poDbConn != null && poDbConn.IsOpened)
  16. {
  17. DbConn = poDbConn;
  18. if (IsMarketSys)
  19. {
  20. string lcSql = "select * from vwUserHasAllMarkets where UserId='" + UserID + "'";
  21. rsQuery loQuery = DbConn.OpenQuery(lcSql);
  22. if (loQuery != null && loQuery.IsOpened && loQuery.RecCount > 0)
  23. {
  24. loQuery.MoveFirst();
  25. MarketId = loQuery.GetString("MarketID");
  26. }
  27. }
  28. }
  29. }
  30. public DBConnSql DbConn { get; }
  31. public string MarketId { get; } = "";
  32. rsQuery _checkProTypes;
  33. private rsQuery CheckProTypes
  34. {
  35. get
  36. {
  37. if (_checkProTypes == null || !_checkProTypes.IsOpened)
  38. {
  39. string lcSql = " select * from CheckProjectType ";
  40. _checkProTypes = DbConn.OpenQuery(lcSql);
  41. }
  42. return _checkProTypes;
  43. }
  44. }
  45. rsQuery _checkItems;
  46. private rsQuery CheckItems
  47. {
  48. get
  49. {
  50. if (_checkItems == null || !_checkItems.IsOpened)
  51. {
  52. string lcSql = " select * from CheckItem";
  53. _checkItems = DbConn.OpenQuery(lcSql);
  54. }
  55. return _checkItems;
  56. }
  57. }
  58. rsQuery _checkMethods;
  59. private rsQuery CheckMethods
  60. {
  61. get
  62. {
  63. if (_checkMethods == null || !_checkMethods.IsOpened)
  64. {
  65. string lcSql = " select * from CheckMethod";
  66. _checkMethods = DbConn.OpenQuery(lcSql);
  67. }
  68. return _checkMethods;
  69. }
  70. }
  71. rsQuery _habitQuery;
  72. private rsQuery HabitQuery
  73. {
  74. get
  75. {
  76. if (_habitQuery == null || !_habitQuery.IsOpened)
  77. {
  78. string lcSql = "select " + Habitat_info.cHabitatID + "," + Habitat_info.cNames + " from " + Tn.Habitat;
  79. _habitQuery = DbConn.OpenQuery(lcSql);
  80. }
  81. return _habitQuery;
  82. }
  83. }
  84. //rsQuery _specialsQuery = null;
  85. //private rsQuery SpecialsQuery
  86. //{
  87. // get
  88. // {
  89. // if (_specialsQuery == null || !_specialsQuery.IsOpened)
  90. // {
  91. // string lcSql = "select * from " + Tn.Specials;
  92. // _specialsQuery = DbConn.OpenQuery(lcSql);
  93. // }
  94. // return _specialsQuery;
  95. // }
  96. //}
  97. rsQuery _varietyCategoryQuery;
  98. private rsQuery VarietyCategoryQuery
  99. {
  100. get
  101. {
  102. if (_varietyCategoryQuery == null || !_varietyCategoryQuery.IsOpened)
  103. {
  104. string lcSql = "select * from " + Tn.VarietyCategory;
  105. _varietyCategoryQuery = DbConn.OpenQuery(lcSql);
  106. }
  107. return _varietyCategoryQuery;
  108. }
  109. }
  110. public string GetCheckProTypeIdByItemAndMothed(string pcItemId, string pcMothedId, string pcValueField,
  111. string pcItem = null, string pcMothed = null)
  112. {
  113. string lcRetVal = "";
  114. pcItemId = string.IsNullOrEmpty(pcItemId)? TransCheckItem(pcItem): pcItemId;
  115. pcMothedId = string.IsNullOrEmpty(pcMothedId) ? TransCheckMothed(pcMothed): pcMothedId;
  116. if (CheckCach.CheckProjectCach.ContainsKey(pcItemId + "_" + pcMothedId))
  117. {
  118. lcRetVal = CheckCach.CheckProjectCach[pcItemId + "_" + pcMothedId];
  119. return lcRetVal;
  120. }
  121. if (pcItemId != null && pcMothedId != null && CheckProTypes != null && CheckProTypes.IsOpened)
  122. {
  123. if (CheckProTypes.GoToRecordByFieldsAndValues(CheckProjectType_info.cCheckItemId + "," + CheckProjectType_info.cCheckMethodId, pcItemId + "," + pcMothedId))
  124. {
  125. lcRetVal = CheckProTypes.GetString(pcValueField);
  126. }
  127. else if (CheckProTypes.GoToRecordByFieldsAndValues(CheckProjectType_info.cCheckItemId, pcItemId))
  128. {
  129. lcRetVal = CheckProTypes.GetString(pcValueField);
  130. }
  131. }
  132. if (!string.IsNullOrEmpty(lcRetVal))
  133. {
  134. CheckCach.CheckProjectCach.Add(pcItemId + "_" + pcMothedId, lcRetVal);
  135. }
  136. return lcRetVal;
  137. }
  138. public string GetHabitIdByHabitName(string pcHabitName)
  139. {
  140. string lcRetVal = "";
  141. if (HabitQuery != null && HabitQuery.IsOpened)
  142. {
  143. if (HabitQuery.GoToRecordByFieldsAndValues(Habitat_info.cNames, pcHabitName))
  144. {
  145. return CheckProTypes.GetString(Habitat_info.cHabitatID);
  146. }
  147. }
  148. return lcRetVal;
  149. }
  150. public string TransResult(string pcValue)
  151. {
  152. pcValue = UtilStr.UAndT(pcValue);
  153. if (pcValue == "1" || pcValue == "合格")
  154. {
  155. return "合格";
  156. }
  157. else
  158. {
  159. return "不合格";
  160. }
  161. }
  162. public string TransCheckMothed(string pcValue)
  163. {
  164. string lcRetVal = null;
  165. if (pcValue == "速测法" || pcValue == "检测卡")
  166. {
  167. pcValue = "速测灵";
  168. }
  169. if (pcValue == "检测仪")
  170. {
  171. pcValue = "速测仪";
  172. }
  173. if (CheckCach.CheckMethodCach.ContainsKey(pcValue))
  174. {
  175. lcRetVal = CheckCach.CheckMethodCach[pcValue];
  176. return lcRetVal;
  177. }
  178. if (CheckMethods.GoToRecordByFieldsAndValues(CheckMethod_info.cCheckMethodName, pcValue))
  179. {
  180. lcRetVal = CheckMethods.GetString(CheckMethod_info.cCheckMethodId);
  181. }
  182. if (!string.IsNullOrEmpty(lcRetVal))
  183. {
  184. CheckCach.CheckMethodCach.Add(pcValue, lcRetVal);
  185. }
  186. return lcRetVal;
  187. }
  188. public string TransCheckItem(string pcItem)
  189. {
  190. string lcRetVal = null;
  191. if (pcItem == "残留农药")
  192. {
  193. pcItem = "农药残留";
  194. }
  195. if (CheckCach.CheckItemCach.ContainsKey(pcItem))
  196. {
  197. lcRetVal = CheckCach.CheckItemCach[pcItem];
  198. return lcRetVal;
  199. }
  200. if (CheckItems.GoToRecordByFieldsAndValues(CheckItem_info.cCheckItemName, pcItem))
  201. {
  202. lcRetVal = CheckItems.GetString(CheckItem_info.cCheckItemId);
  203. }
  204. if (!string.IsNullOrEmpty(lcRetVal))
  205. {
  206. CheckCach.CheckItemCach.Add(pcItem, lcRetVal);
  207. }
  208. return lcRetVal;
  209. }
  210. public string GetSampleId(string pcSampleName)
  211. {
  212. string lcRetVal = "";
  213. //if (SpecialsQuery != null && SpecialsQuery.IsOpened)
  214. //{
  215. // if (SpecialsQuery.GoToRecordByFieldsAndValues(Specials_info.cName, pcSampleName))
  216. // {
  217. // lcRetVal = SpecialsQuery.GetString(Specials_info.cName);
  218. // }
  219. //}
  220. if (CheckCach.VarietyCategoryCache.ContainsKey(pcSampleName))
  221. {
  222. lcRetVal = CheckCach.VarietyCategoryCache[pcSampleName];
  223. return lcRetVal;
  224. }
  225. if (VarietyCategoryQuery.GoToRecordByFieldsAndValues(VarietyCategory_info.cVarietyCategoryName,
  226. pcSampleName))
  227. {
  228. lcRetVal = VarietyCategoryQuery.GetString(VarietyCategory_info.cVarietyCategoryNo);
  229. }
  230. if (!string.IsNullOrEmpty(lcRetVal))
  231. {
  232. CheckCach.VarietyCategoryCache.Add(pcSampleName, lcRetVal);
  233. }
  234. return lcRetVal;
  235. }
  236. //public string GetLittleKindName(string pcSampleName)
  237. //{
  238. // string lcRetVal = "";
  239. // if (SpecialsQuery != null && SpecialsQuery.IsOpened)
  240. // {
  241. // if (SpecialsQuery.GoToRecordByFieldsAndValues(Specials_info.cName, pcSampleName))
  242. // {
  243. // string lcLittleId = SpecialsQuery.GetString(Specials_info.cLittleKindID);
  244. // LittleKind_info loLittleKind = new LittleKind_info(lcLittleId, DBConn);
  245. // lcRetVal = loLittleKind.Name;
  246. // }
  247. // }
  248. // return lcRetVal;
  249. //}
  250. public CheckData GetCheckData(SingleCheckData poCheckData)
  251. {
  252. CheckData loCheckData = null;
  253. string lcSampleId = string.IsNullOrEmpty(poCheckData.SampleId)
  254. ? GetSampleId(poCheckData.SampleName)
  255. : poCheckData.SampleId;
  256. string lcCheckProTypeId = GetCheckProTypeIdByItemAndMothed(poCheckData.CheckItemNo, poCheckData.CheckMethodNo,
  257. CheckProjectType_info.cCheckProjectTypeID, poCheckData.CheckItem, poCheckData.CheckMethod);
  258. if (poCheckData.IsValid && lcCheckProTypeId != "")
  259. {
  260. loCheckData = new CheckData
  261. {
  262. BarCode = poCheckData.BarCode,
  263. CheckProjectTypeID = lcCheckProTypeId,
  264. CheckLimit = lcCheckProTypeId,
  265. CheckValue = poCheckData.Rate,
  266. CheckResult = TransResult(poCheckData.Result),
  267. CheckTime = poCheckData.CheckTime,
  268. CheckTotal = poCheckData.ChackTotal,
  269. CheckUnit = poCheckData.CheckOrg,
  270. CheckUser = poCheckData.Operator,
  271. ClientIndexID = poCheckData.SampleNo,
  272. CorpKind = poCheckData.CheckedOrgType,
  273. CorpName = poCheckData.CheckedOrg,
  274. GreatKindName = "",
  275. //【New】
  276. CardIndex = poCheckData.CheckedOrgCardIndex,
  277. LicenseNo = poCheckData.CheckedOrgLicenseNo,
  278. UnitName = poCheckData.CheckedOrgUnitName,
  279. IdCode = poCheckData.CheckedOrgIdCode,
  280. CorpNameName = poCheckData.CheckedOrgName,
  281. PositionNo = poCheckData.CheckedOrgStallNo,
  282. HabitatID = string.IsNullOrEmpty(poCheckData.CheckDistrictNo)? GetHabitIdByHabitName(poCheckData.CheckDistrict): poCheckData.CheckDistrictNo,
  283. //默认自检
  284. IsSelf = "1",
  285. MachineID = poCheckData.HardwareNo,
  286. MachineMaker = poCheckData.MachineMaker,
  287. MarketID = MarketId,
  288. Memo = poCheckData.Memo,
  289. ProduceDate = poCheckData.ProduceDate,
  290. ProduceUnit = poCheckData.ProduceOrg,
  291. SampleName = poCheckData.SampleName,
  292. SampleId = lcSampleId,
  293. SendDate = poCheckData.SendDate,
  294. UserID = UserID,
  295. UploadTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
  296. };
  297. }
  298. return loCheckData;
  299. }
  300. public CheckData_info GetCheckDataInfo(SingleCheckData poCheckData)
  301. {
  302. var loCheckData = GetCheckData(poCheckData);
  303. CheckData_info loCheckDataInfo = Mapper.Map<CheckData_info>(loCheckData);
  304. return loCheckDataInfo;
  305. }
  306. public bool InsertCheckData(SingleCheckData poCheckData)
  307. {
  308. bool lbRetVal = false;
  309. try
  310. {
  311. if (poCheckData != null)
  312. {
  313. CheckData_info loCheckData = GetCheckDataInfo(poCheckData);
  314. string lcSql = loCheckData.InsertSql() + ";\r\n";
  315. var lcSampleId = loCheckData.SampleId;
  316. if (!string.IsNullOrWhiteSpace(lcSampleId))
  317. {
  318. lcSql += " UPDATE VarietyCategory SET [CheckCount]=[CheckCount]+1 WHERE [VarietyCategoryNo]='" +
  319. lcSampleId + "'";
  320. }
  321. if (DbConn.ExcuteSqlTran(lcSql))
  322. lbRetVal = true;
  323. }
  324. }
  325. catch (Exception e)
  326. {
  327. this.LogError(e);
  328. }
  329. return lbRetVal;
  330. }
  331. }
  332. public static class CheckCach
  333. {
  334. public static Dictionary<string, string> CheckProjectCach = new Dictionary<string, string>();
  335. public static Dictionary<string, string> CheckItemCach = new Dictionary<string, string>();
  336. public static Dictionary<string, string> CheckMethodCach = new Dictionary<string, string>();
  337. public static Dictionary<string, string> VarietyCategoryCache = new Dictionary<string, string>();
  338. }
  339. }