BaseDbCls.cs 15 KB

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