BaseDbCls.cs 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356
  1. using CarMeterSystem.OptionCls;
  2. using Common;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Reflection;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using MeterPlugInLibrary;
  10. using System.IO;
  11. using com.hnshituo.core.webapp.vo;
  12. namespace CarMeterSystem
  13. {
  14. /// <summary>
  15. /// 基础数据获取
  16. /// </summary>
  17. public class BaseDbCls
  18. {
  19. Log lg = Log.GetInstance();
  20. private PbModelDbService<List<ComBaseInfo>> pb = new PbModelDbService<List<ComBaseInfo>>();
  21. private MeterBaseVideoinfoService mbvs = new MeterBaseVideoinfoService();
  22. private MeterBaseScaleRangeService rangeService = new MeterBaseScaleRangeService();
  23. private MeterWorkSceneRegisterService sceneRegisterService = new MeterWorkSceneRegisterService();
  24. private MeterBaseHisTareCountService service = new MeterBaseHisTareCountService();
  25. private MeterBaseTermTareCountService termTareCountService = new MeterBaseTermTareCountService();
  26. private MeterBaseLimitChemicalService limitService = new MeterBaseLimitChemicalService();
  27. private MeterBaseTimeSpaceService spaceService = new MeterBaseTimeSpaceService();
  28. private MeterBaseTermTareTimeService tareTime = new MeterBaseTermTareTimeService();
  29. private PbModelDbService<List<MeterBaseCalibraRelation>> pbRelation = new PbModelDbService<List<MeterBaseCalibraRelation>>();
  30. private MeterBaseCarHoldTimeService holdService = new MeterBaseCarHoldTimeService();
  31. private MeterBaseUnloadTimeService unloadTimeService = new MeterBaseUnloadTimeService();
  32. private MeterBaseCarCardService carCardService = new MeterBaseCarCardService();
  33. private PbModelDbService<List<MeterBaseCalibraNumRel>> pbNumRel = new PbModelDbService<List<MeterBaseCalibraNumRel>>();
  34. public bool getBaseDb()
  35. {
  36. PbCache.isEndHour = 9999;
  37. #region 获取计量类型
  38. //string sql = @"SELECT base_code baseCode,base_name baseName,memo FROM Com_Base_Info where p_base_code='001006' and valid_Flag='1'";
  39. //杨秀东修改为仅包含秤点信息的才让缓存出来
  40. //string sql = @"SELECT base_code baseCode,base_name baseName,memo FROM Com_Base_Info where p_base_code='001006' and valid_Flag='1' and instr(memo1,'"+ PbCache.sportInfo.baseSpotNo + "') > 0" +
  41. /**
  42. * BourneCao注释:酒钢不存在计量类型选择
  43. */
  44. string sql = @"SELECT base_code baseCode,base_name baseName,memo FROM Com_Base_Info where p_base_code='001006' and valid_Flag='1'" +
  45. "order by create_time desc, base_code desc";
  46. RESTfulResult<List<ComBaseInfo>> rmType = pb.executeSqlDataWf(sql);
  47. if (rmType.Succeed && rmType.Data != null && rmType.Data.Count > 0)
  48. {
  49. PbCache.businessType = rmType.Data;
  50. }
  51. else
  52. {
  53. lg.WriteLog(1, "未找到计量类型基础信息");
  54. return false;
  55. }
  56. //*/
  57. #endregion
  58. #region 获取一次计量数据过期时间
  59. sql = @"SELECT base_code baseCode,base_name baseName,memo FROM Com_Base_Info where p_base_code='001031' and valid_Flag='1'";
  60. RESTfulResult<List<ComBaseInfo>> rmType1 = pb.executeSqlDataWf(sql);
  61. if (rmType1.Succeed && rmType1.Data != null && rmType1.Data.Count > 0)
  62. {
  63. try
  64. {
  65. PbCache.isEndHour = Convert.ToDouble(rmType.Data[0].baseName);
  66. }
  67. catch
  68. {
  69. PbCache.isEndHour = 9999;
  70. }
  71. }
  72. #endregion
  73. #region 读取音频文件名称
  74. List<string> ls = new List<string>();
  75. DirectoryInfo folder = new DirectoryInfo(PbCache.path + "\\Sound");
  76. foreach (FileInfo file in folder.GetFiles("*.wav"))
  77. {
  78. ls.Add(file.Name.Replace(".wav", ""));
  79. }
  80. PbCache.voiceInfo = ls;
  81. #endregion
  82. #region 摄像头配置信息
  83. RESTfulResult<List<MeterBaseVideoinfo>> rm = mbvs.doQueryWf(new MeterBaseVideoinfo { pointid = PbCache.sportInfo.baseSpotNo }); //db.doOption<MeterBaseVideoinfo>("meterbasevideoinfos", "doQueryWf", new object[] { PbCache.sportInfo }, 0);
  84. if (rm.Succeed && rm.Data != null && rm.Data.Count > 0)
  85. {
  86. PbCache.videoInfo = rm.Data[0];
  87. List<MeterBaseVideoChild> videoChild = new List<MeterBaseVideoChild>();
  88. Type postType = PbCache.videoInfo.GetType(); //rm.Data.GetType();
  89. PropertyInfo[] postTypeInfos = postType.GetProperties(); //返回为当前 Type 的所有公共属性,PropertyInfo[] PropertyInfo 的所有公共属性的 Type 对象数组
  90. foreach (PropertyInfo p in postTypeInfos)
  91. {
  92. //if (p.Name.Contains("videoip")) //2021年3月16日 杨秀东:原来从摄像头截图使用position;现在从硬盘录像机截图,使用videoip
  93. if (p.Name.Contains("position")) //2022年8月4日 BourneCao:原来从硬盘录像机截图,使用videoip;现在从摄像头截图使用position
  94. {
  95. string str = (string)p.GetValue(PbCache.videoInfo, null);
  96. if (str != "" && str != null)
  97. {
  98. videoChild.Add(
  99. new MeterBaseVideoChild
  100. {
  101. pointid = PbCache.videoInfo.pointid,
  102. p_ip = str,
  103. p_rate = "0",//************解码率直接给定了,这里没取配置值*************
  104. vdo_port = PbCache.videoInfo.vdoPort,
  105. vdo_pwd = PbCache.videoInfo.vdoPwd,
  106. vdo_user = PbCache.videoInfo.vdoUser
  107. }
  108. );
  109. }
  110. }
  111. }
  112. PbCache.videoChild = videoChild;
  113. if (videoChild.Count == 0)
  114. {
  115. return false;
  116. }
  117. else
  118. {
  119. //将摄像头操作类存储再缓存中
  120. List<DhCameraShot> list = new List<DhCameraShot>();
  121. #region 由从摄像头截图改为从硬盘录像机截图
  122. /*
  123. DhCameraShot cameraShot = new DhCameraShot();
  124. cameraShot.ip = PbCache.videoInfo.videoip;
  125. cameraShot.port = PbCache.videoInfo.vdoPort;
  126. cameraShot.uid = PbCache.videoInfo.vdoUser;
  127. cameraShot.pwd = PbCache.videoInfo.vdoPwd;
  128. list.Add(cameraShot);
  129. //*/
  130. //*
  131. foreach (MeterBaseVideoChild child in PbCache.videoChild)
  132. {
  133. DhCameraShot cameraShot = new DhCameraShot();
  134. cameraShot.ip = child.p_ip;
  135. cameraShot.port = child.vdo_port;
  136. cameraShot.uid = child.vdo_user;
  137. cameraShot.pwd = child.vdo_pwd;
  138. list.Add(cameraShot);
  139. }
  140. //*/
  141. #endregion
  142. CarCache.cameraShots = list;
  143. }
  144. }
  145. else
  146. {
  147. //lg.WriteLog(1, "未找到摄像头配置信息MeterBaseVideoinfo");
  148. //return false;
  149. }
  150. #endregion
  151. #region 秤体量程配置
  152. RESTfulResult<List<MeterBaseScaleRange>> rmR = rangeService.doQueryWf(new MeterBaseScaleRange { baseSpotNo = PbCache.sportInfo.baseSpotNo });
  153. if (rmR.Succeed && rmR.Data != null && rmR.Data.Count > 0)
  154. {
  155. PbCache.range = rmR.Data[0];
  156. }
  157. else
  158. {
  159. //lg.WriteLog(1, "未找到秤体量程配置信息MeterBaseScaleRange");
  160. //return false;
  161. }
  162. #endregion
  163. #region 获取计量场景信息
  164. RESTfulResult<List<MeterWorkSceneRegister>> rmSceneRegister = sceneRegisterService.doQueryWf(new MeterWorkSceneRegister { valueFlag = "0" });
  165. if (rmSceneRegister.Succeed)
  166. {
  167. PbCache.ltSceneRegister = rmSceneRegister.Data;
  168. }
  169. else
  170. {
  171. lg.WriteLog(1, "未找到计量场景信息配置信息sceneRegisterService");
  172. return false;
  173. }
  174. #endregion
  175. return true;
  176. }
  177. /// <summary>
  178. /// 将基础数据全部载入缓存中
  179. /// </summary>
  180. /// <returns></returns>
  181. public bool setBaseDb()
  182. {
  183. string sql = "";
  184. #region 初始化一次缓存类
  185. PbCache.monitor = new MeterWorkMonitor();
  186. PbCache.Load();
  187. #endregion
  188. #region 历史皮重计算配置表
  189. RESTfulResult<List<MeterBaseHisTareCount>> rmH = service.doQueryWf(new MeterBaseHisTareCount { valueFlag = "0" , typeNo = "001033001" }); //0有效 1无效 //db.doOption<List<MeterBaseHisTareCount>>("MeterBaseHisTareCountService", "doQueryWf", new object[] { mbhtc }, 0);
  190. if (rmH.Succeed && rmH.Data != null && rmH.Data.Count > 0)
  191. {
  192. PbCache.tareCount = rmH.Data[0];
  193. }
  194. else
  195. {
  196. //lg.WriteLog(1, "未找到历史皮重配置信息MeterBaseHisTareCount");
  197. //return false;
  198. }
  199. #endregion
  200. #region 期限皮重计算配置表
  201. RESTfulResult<List<MeterBaseTermTareCount>> rmTe = termTareCountService.doQueryWf(new MeterBaseTermTareCount { valueFlag = "0", typeNo = "001033001" }); //0有效 1无效 //db.doOption<List<MeterBaseHisTareCount>>("MeterBaseHisTareCountService", "doQueryWf", new object[] { mbhtc }, 0);
  202. if (rmTe.Succeed && rmTe.Data != null && rmTe.Data.Count > 0)
  203. {
  204. PbCache.termTareCount = rmTe.Data[0];
  205. }
  206. else
  207. {
  208. //lg.WriteLog(1, "未找到期限皮重配置信息MeterBaseHisTareCount");
  209. //return false;
  210. }
  211. #endregion
  212. #region 危化品限载配置
  213. RESTfulResult<List<MeterBaseLimitChemical>> rmL = limitService.doQueryWf(new MeterBaseLimitChemical { valueFlag = "0" });
  214. if (rmL.Succeed)
  215. {
  216. PbCache.limit = rmL.Data;
  217. }
  218. else
  219. {
  220. lg.WriteLog(1, "未找到危化品限载配置信息MeterBaseLimitChemical");
  221. return false;
  222. }
  223. #endregion
  224. #region 两次计量时间间隔配置
  225. RESTfulResult<List<MeterBaseTimeSpace>> rmS = spaceService.doQueryWf(new MeterBaseTimeSpace { spotTypeNo = "001002001" });//汽车衡
  226. if (rmS.Succeed)
  227. {
  228. PbCache.timeSpace = rmS.Data;
  229. }
  230. else
  231. {
  232. lg.WriteLog(1, "未找到两次计量时间间隔配置信息MeterBaseTimeSpace");
  233. return false;
  234. }
  235. #endregion
  236. #region 期限皮重时间配置
  237. RESTfulResult<List<MeterBaseTermTareTime>> rmT = tareTime.doQueryWf(new MeterBaseTermTareTime { valueFlag = "0" });//0:有效;1:无效
  238. if (rmS.Succeed)
  239. {
  240. PbCache.tareTime = rmT.Data;
  241. }
  242. else
  243. {
  244. lg.WriteLog(1, "未找到期限皮重时间配置信息MeterBaseTermTareTime");
  245. return false;
  246. }
  247. #endregion
  248. #region 校秤基础数据
  249. sql = @"select *
  250. from (select t2.base_Spot_No baseSpotNo,
  251. t2.base_Spot_Name baseSpotName,
  252. t2.calibration_Time_Unit calibrationTimeUnit,
  253. to_char(t2.start_time, 'HH24:mi:ss') startTime,
  254. to_char(t2.end_time, 'HH24:mi:ss') endTime,
  255. t2.day_Num dayNum
  256. from METER_BASE_CALIBRA_RELATION t2
  257. where t2.base_Spot_No = '" + PbCache.sportInfo.baseSpotNo + @"'
  258. order by t2.end_time desc)
  259. where rownum = 1";
  260. RESTfulResult<List<MeterBaseCalibraRelation>> rmRelation = pbRelation.executeSqlDataWf(sql);
  261. if (rmRelation.Succeed)
  262. {
  263. PbCache.relations = rmRelation.Data;
  264. }
  265. else
  266. {
  267. lg.WriteLog(1, "未找到校秤基础数据MeterBaseCalibraRelation");
  268. return false;
  269. }
  270. #endregion
  271. #region 停留超时时间holdTime
  272. RESTfulResult<List<MeterBaseCarHoldTime>> rmHT = holdService.doQueryWf(new MeterBaseCarHoldTime { baseSpotNo = PbCache.sportInfo.baseSpotNo });//汽车衡
  273. if (rmS.Succeed)
  274. {
  275. PbCache.holdTime = rmHT.Data;
  276. }
  277. else
  278. {
  279. lg.WriteLog(1, "停留超时时间holdTime");
  280. return false;
  281. }
  282. #endregion
  283. #region 计量卸货时间
  284. RESTfulResult<List<MeterBaseUnloadTime>> rmU = unloadTimeService.doQueryWf(new MeterBaseUnloadTime { });
  285. if (rmU.Succeed)
  286. {
  287. PbCache.unloadTimes = rmU.Data;
  288. }
  289. else
  290. {
  291. //lg.WriteLog(1, "未找到计量卸货时间间隔配置信息MeterBaseUnloadTime");
  292. //return false;
  293. }
  294. #endregion
  295. #region 计量车卡信息
  296. RESTfulResult<List<MeterBaseCarCard>> rmCar = carCardService.doQueryWf(new MeterBaseCarCard { valueFlag = "1" });
  297. if (rmCar.Succeed)
  298. {
  299. PbCache.ltCarCard = rmCar.Data;
  300. }
  301. else
  302. {
  303. lg.WriteLog(1, "未找到计量卡车辆配置信息MeterBaseCarCard");
  304. return false;
  305. }
  306. #endregion
  307. #region 校秤计量关联,用于获取是否限制
  308. sql = @"select base_spot_no baseSpotNo,
  309. base_spot_name baseSpotName,
  310. up_weight upWeight,
  311. is_meter isMeter
  312. from METER_BASE_CALIBRA_NUM_REL
  313. group by base_spot_no, base_spot_name, UP_WEIGHT, is_meter";
  314. RESTfulResult<List<MeterBaseCalibraNumRel>> rmNumRel = pbNumRel.executeSqlDataWf(sql);
  315. if (rmNumRel.Succeed && rmNumRel.Data != null && rmNumRel.Data.Count > 0)
  316. {
  317. PbCache.ltBaseCalibraNumRel = rmNumRel.Data;
  318. }
  319. else
  320. {
  321. //lg.WriteLog(1, "未找到秤点关联表METER_BASE_CALIBRA_NUM_REL信息");
  322. ////return false;
  323. }
  324. #endregion
  325. return true;
  326. }
  327. }
  328. }