BaseDbCls.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324
  1. using com.hnshituo.core.webapp.vo;
  2. using Common;
  3. using MeterPlugInLibrary;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Reflection;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. namespace StorageMeterSystem
  11. {
  12. public class BaseDbCls
  13. {
  14. Log lg = Log.GetInstance();
  15. public bool getBaseDb()
  16. {
  17. #region 读取音频文件名称
  18. /*
  19. List<string> ls = new List<string>();
  20. DirectoryInfo folder = new DirectoryInfo(PbStorageCache.path + "\\Sound");
  21. foreach (FileInfo file in folder.GetFiles("*.wav"))
  22. {
  23. ls.Add(file.Name.Replace(".wav", ""));
  24. }
  25. PbStorageCache.voiceInfo = ls;
  26. //*/
  27. #endregion
  28. #region 所有摄像头配置信息
  29. MeterBaseVideoinfoService mbvs = new MeterBaseVideoinfoService();
  30. RESTfulResult<List<MeterBaseVideoinfo>> rm = mbvs.doQueryWf(new MeterBaseVideoinfo { });
  31. if (rm.Succeed && rm.Data != null && rm.Data.Count > 0)
  32. {
  33. PbStorageCache.ltVideoInfo = rm.Data;
  34. }
  35. else
  36. {
  37. lg.WriteLog(8, "未找到摄像头配置信息MeterBaseVideoinfo");
  38. return false;
  39. }
  40. #endregion
  41. #region 所有计量点数据
  42. MeterBaseSpotInfoService service = new MeterBaseSpotInfoService();
  43. RESTfulResult<List<MeterBaseSpotInfo>> rms = service.doQueryWf(new MeterBaseSpotInfo { validFlag = "1", spotTypeNo = "001002003" }); //获取成品秤数据
  44. if (rms.Succeed && rms.Data != null && rms.Data.Count > 0)
  45. {
  46. PbStorageCache.sportInfos = rms.Data;
  47. if (PbStorageCache.ltMonitor != null)
  48. {
  49. foreach (MeterBaseSpotInfo sp in PbStorageCache.sportInfos)
  50. {
  51. string pNo = PbStorageCache.ltMonitor?.FirstOrDefault(s => s.baseSpotNo == sp.baseSpotNo)?.pointNo;
  52. if (!string.IsNullOrEmpty(pNo))
  53. sp.deleteManNo = pNo;
  54. }
  55. }
  56. }
  57. else
  58. {
  59. lg.WriteLog(8, "MeterBaseSpotInfo");
  60. return false;
  61. }
  62. #endregion
  63. #region 秤点配置表,针对一个秤多块表的情况
  64. PbModelDbService<List<MeterBaseScalePoint>> pbRelation = new PbModelDbService<List<MeterBaseScalePoint>>();
  65. string sql = @"select t2.scale_point_no scalePointNo,
  66. t2.scale_point_name scalePointName,
  67. t2.base_spot_no baseSpotNo,
  68. t2.base_spot_name baseSpotName
  69. from meter_base_spot_info t1,
  70. meter_base_scale_point t2
  71. where t1.base_Spot_No=t2.base_Spot_No and t2.valid_flag='1' and t1.valid_flag='1' and t1.spot_type_no='001002003'
  72. order by t2.base_spot_no";
  73. RESTfulResult<List<MeterBaseScalePoint>> rmRelation = pbRelation.executeSqlDataWf(sql);
  74. if (rmRelation.Succeed && rmRelation.Data != null && rmRelation.Data.Count > 0)
  75. {
  76. PbStorageCache.scalePoints = rmRelation.Data;
  77. }
  78. else
  79. {
  80. lg.WriteLog(8, "未找到秤校基础数据MeterBaseCalibraRelation");
  81. return false;
  82. }
  83. #endregion
  84. #region 秤体量程配置
  85. MeterBaseScaleRangeService rangeService = new MeterBaseScaleRangeService();
  86. RESTfulResult<List<MeterBaseScaleRange>> rmR = rangeService.doQueryWf(new MeterBaseScaleRange { });
  87. if (rmR.Succeed && rmR.Data != null && rmR.Data.Count > 0)
  88. {
  89. PbStorageCache.ltRange = rmR.Data;
  90. }
  91. else
  92. {
  93. lg.WriteLog(8, "未找到秤体量程配置信息MeterBaseScaleRange");
  94. return false;
  95. }
  96. #endregion
  97. return true;
  98. }
  99. internal bool setBaseDb()
  100. {
  101. #region 初始化一次缓存类
  102. PbStorageCache.Load();
  103. #endregion
  104. #region 轨道衡监控表
  105. MeterWorkStockOnlineService staticMonitorService = new MeterWorkStockOnlineService();
  106. RESTfulResult<List<MeterWorkStockOnline>> rr = staticMonitorService.doQueryWf(new MeterWorkStockOnline { validFlag = "1" });
  107. if (rr.Succeed && rr.Data != null && rr.Data.Count > 0)
  108. {
  109. PbStorageCache.ltMonitor = rr.Data;
  110. }
  111. else
  112. {
  113. lg.WriteLog(8, "未找到监控表信息MeterWorkStockOnline");
  114. return false;
  115. }
  116. #endregion
  117. return true;
  118. }
  119. internal bool setBaseDbScalePoint()
  120. {
  121. #region 初始化一次缓存类
  122. PbStorageCache.Load();
  123. #endregion
  124. #region 监控表
  125. MeterBaseScalePointService monitorService = new MeterBaseScalePointService();
  126. RESTfulResult<List<MeterBaseScalePoint>> rmMonitor = monitorService.doQueryWf(new MeterBaseScalePoint { validFlag = "1" });
  127. if (rmMonitor.Succeed)
  128. {
  129. PbCacheMonitor.ltMeterBaseScalePoint = rmMonitor.Data;
  130. return true;
  131. }
  132. else
  133. {
  134. lg.WriteLog(4, "未找到秤体基础配置信息MeterBaseScalePoint");
  135. return false;
  136. }
  137. #endregion
  138. }
  139. /// <summary>
  140. /// 热送基础数据
  141. /// </summary>
  142. /// <returns></returns>
  143. internal bool setBaseDbScalePointHot()
  144. {
  145. #region 初始化一次缓存类
  146. PbStorageCache.Load();
  147. #endregion
  148. #region 热送磅监控表
  149. MeterBaseScalePointService monitorService = new MeterBaseScalePointService();
  150. RESTfulResult<List<MeterBaseScalePoint>> rmMonitor = monitorService.doQueryWf(new MeterBaseScalePoint { validFlag = "1" ,spotTypeNo= "001002004" });
  151. if (rmMonitor.Succeed)
  152. {
  153. PbCacheMonitor.ltMeterBaseScalePoint = rmMonitor.Data;
  154. return true;
  155. }
  156. else
  157. {
  158. lg.WriteLog(4, "未找到秤体基础配置信息MeterBaseScalePoint");
  159. return false;
  160. }
  161. #endregion
  162. }
  163. public bool getSpot()
  164. {
  165. #region 校秤基础数据
  166. PbModelDbService<List<MeterBaseCalibraRelation>> pbRelation = new PbModelDbService<List<MeterBaseCalibraRelation>>();
  167. string sql = @"select *
  168. from (select t2.base_Spot_No baseSpotNo,
  169. t2.base_Spot_Name baseSpotName,
  170. t2.calibration_Time_Unit calibrationTimeUnit,
  171. to_char(t2.start_time, 'HH24:mi:ss') startTime,
  172. to_char(t2.end_time, 'HH24:mi:ss') endTime,
  173. t2.day_Num dayNum
  174. from METER_BASE_CALIBRA_RELATION t2
  175. where t2.base_Spot_No = '" + PbStorageCache.sportInfo.baseSpotNo + @"'
  176. order by t2.end_time desc)
  177. where rownum = 1";
  178. RESTfulResult<List<MeterBaseCalibraRelation>> rmRelation = pbRelation.executeSqlDataWf(sql);
  179. if (rmRelation.Succeed && rmRelation.Data != null && rmRelation.Data.Count > 0)
  180. {
  181. PbStorageCache.relations = rmRelation.Data;
  182. }
  183. else
  184. {
  185. lg.WriteLog(8, "未找到秤校基础数据MeterBaseCalibraRelation");
  186. return false;
  187. }
  188. #endregion
  189. #region 获取摄像头数据用于截图
  190. if (PbStorageCache.ltVideoInfo != null && PbStorageCache.ltVideoInfo.Count > 0)
  191. {
  192. PbStorageCache.videoInfo = PbStorageCache.ltVideoInfo.Where(s => s.pointid == PbStorageCache.sportInfo.baseSpotNo).FirstOrDefault();
  193. List<MeterBaseVideoChild> videoChild = new List<MeterBaseVideoChild>();
  194. Type postType = PbStorageCache.videoInfo.GetType();
  195. PropertyInfo[] postTypeInfos = postType.GetProperties(); //返回为当前 Type 的所有公共属性,PropertyInfo[] PropertyInfo 的所有公共属性的 Type 对象数组
  196. foreach (PropertyInfo p in postTypeInfos)
  197. {
  198. if (p.Name.Contains("position"))
  199. {
  200. string str = (string)p.GetValue(PbStorageCache.videoInfo, null);
  201. if (str != "" && str != null)
  202. {
  203. videoChild.Add(
  204. new MeterBaseVideoChild
  205. {
  206. pointid = PbStorageCache.videoInfo.pointid,
  207. p_ip = str,
  208. p_rate = "0",//************解码率直接给定了,这里没取配置值*************
  209. vdo_port = PbStorageCache.videoInfo.vdoPort,
  210. vdo_pwd = PbStorageCache.videoInfo.vdoPwd,
  211. vdo_user = PbStorageCache.videoInfo.vdoUser
  212. }
  213. );
  214. }
  215. }
  216. }
  217. PbStorageCache.videoChild = videoChild;
  218. if (videoChild.Count == 0)
  219. {
  220. return false;
  221. }
  222. else
  223. {
  224. //将摄像头操作类存储再缓存中
  225. List<CameraShotCls> list = new List<CameraShotCls>();
  226. foreach (MeterBaseVideoChild child in PbStorageCache.videoChild)
  227. {
  228. CameraShotCls cameraShot = new CameraShotCls();
  229. cameraShot.ip = child.p_ip;
  230. cameraShot.port = child.vdo_port;
  231. cameraShot.uid = child.vdo_user;
  232. cameraShot.pwd = child.vdo_pwd;
  233. list.Add(cameraShot);
  234. }
  235. CarCache.cameraShots = list;
  236. }
  237. }
  238. #endregion
  239. return true;
  240. }
  241. public bool getDb()
  242. {
  243. #region 实时获取监控信息
  244. MeterWorkMonitorService monitorService = new MeterWorkMonitorService();
  245. RESTfulResult<List<MeterWorkMonitor>> rmMonitor = monitorService.doQueryAllWf(new MeterWorkMonitor { validFlag = "1" });
  246. if (rmMonitor.Succeed)
  247. {
  248. PbCacheMonitor.ltWorkMonitor = rmMonitor.Data;
  249. return true;
  250. }
  251. else
  252. {
  253. lg.WriteLog(4, "未找到秤体量程配置信息MeterBaseScaleRange");
  254. return false;
  255. }
  256. #endregion
  257. }
  258. /// <summary>
  259. /// 查询MeterBaseScalePoint表的基础信息
  260. /// </summary>
  261. /// <returns></returns>
  262. public bool getDbBaseScale()
  263. {
  264. #region 实时获取监控信息
  265. MeterBaseScalePointService monitorService = new MeterBaseScalePointService();
  266. RESTfulResult<List<MeterBaseScalePoint>> rmMonitor = monitorService.doQueryWf(new MeterBaseScalePoint { validFlag = "1" });
  267. if (rmMonitor.Succeed)
  268. {
  269. PbCacheMonitor.ltMeterBaseScalePoint = rmMonitor.Data;
  270. return true;
  271. }
  272. else
  273. {
  274. lg.WriteLog(4, "未找到秤体基础配置信息MeterBaseScalePoint");
  275. return false;
  276. }
  277. #endregion
  278. }
  279. /// <summary>
  280. /// 查询MeterBaseScalePoint表的基础信息:热送
  281. /// </summary>
  282. /// <returns></returns>
  283. public bool getDbBaseScaleHot()
  284. {
  285. #region 实时获取热送磅监控信息
  286. MeterBaseScalePointService monitorService = new MeterBaseScalePointService();
  287. RESTfulResult<List<MeterBaseScalePoint>> rmMonitor = monitorService.doQueryWf(new MeterBaseScalePoint { validFlag = "1", spotTypeNo = "001002004" });
  288. if (rmMonitor.Succeed)
  289. {
  290. PbCacheMonitor.ltMeterBaseScalePoint = rmMonitor.Data;
  291. return true;
  292. }
  293. else
  294. {
  295. lg.WriteLog(4, "未找到秤体基础配置信息MeterBaseScalePoint");
  296. return false;
  297. }
  298. #endregion
  299. }
  300. }
  301. }