BaseDbCls.cs 13 KB

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