using Common; using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using MeterPlugInLibrary; using System.IO; using com.hnshituo.core.webapp.vo; namespace CarRemoteMeter { /// /// 基础数据获取 /// public class BaseDbCls { Log lg = Log.GetInstance(); public bool getBaseDb() { #region 读取音频文件名称 List ls = new List(); DirectoryInfo folder = new DirectoryInfo(PbCache.path + "\\Sound"); foreach (FileInfo file in folder.GetFiles("*.wav")) { ls.Add(file.Name.Replace(".wav", "")); } PbCache.voiceInfo = ls; #endregion #region 获取计量类型 string sql = @"SELECT base_code baseCode,base_name baseName,memo FROM Com_Base_Info where p_base_code='001006' and valid_Flag='1'"; PbModelDbService> pb = new PbModelDbService>(); RESTfulResult> rmType = pb.executeSqlDataWf(sql); if (rmType.Succeed && rmType.Data != null && rmType.Data.Count > 0) { PbCache.businessType = rmType.Data; } else { lg.WriteLog(5, "未找到计量类型基础信息"); return false; } //*/ #endregion #region 获取一次计量数据过期时间 sql = @"SELECT base_code baseCode,base_name baseName,memo FROM Com_Base_Info where p_base_code='001031' and valid_Flag='1'"; PbModelDbService> pb1 = new PbModelDbService>(); RESTfulResult> rmType1 = pb.executeSqlDataWf(sql); if (rmType1.Succeed && rmType1.Data != null && rmType1.Data.Count > 0) { try { PbCache.isEndHour = Convert.ToDouble(rmType.Data[0].baseName); } catch { PbCache.isEndHour = 9999; } } #endregion #region 所有摄像头配置信息 MeterBaseVideoinfoService mbvs = new MeterBaseVideoinfoService(); RESTfulResult> rm = mbvs.doQueryWf(new MeterBaseVideoinfo { }); if (rm.Succeed && rm.Data != null && rm.Data.Count > 0) { PbCache.ltVideoInfo = rm.Data; } else { lg.WriteLog(5, "未找到摄像头配置信息MeterBaseVideoinfo"); return false; } #endregion #region 秤体量程配置 //* MeterBaseScaleRangeService rangeService = new MeterBaseScaleRangeService(); RESTfulResult> rmR = rangeService.doQueryWf(new MeterBaseScaleRange { }); if (rmR.Succeed && rmR.Data != null && rmR.Data.Count > 0) { PbCache.ltRange = rmR.Data; } else { lg.WriteLog(5, "未找到秤体量程配置信息MeterBaseScaleRange"); return false; } //*/ #endregion #region 获取计量场景信息 MeterWorkSceneRegisterService sceneRegisterService = new MeterWorkSceneRegisterService(); RESTfulResult> rmSceneRegister = sceneRegisterService.doQueryWf(new MeterWorkSceneRegister { valueFlag = "0" }); if (rmSceneRegister.Succeed) { PbCache.ltSceneRegister = rmSceneRegister.Data; } else { lg.WriteLog(1, "未找到计量场景信息配置信息sceneRegisterService"); return false; } #endregion return true; } /// /// 将基础数据全部载入缓存中 /// /// public bool setBaseDb() { #region 初始化一次缓存类 PbCache.monitor = new MeterWorkMonitor(); PbCache.Load(); #endregion #region 历史皮重计算配置表 //* MeterBaseHisTareCountService service = new MeterBaseHisTareCountService(); RESTfulResult> rmH = service.doQueryWf(new MeterBaseHisTareCount { valueFlag = "0", typeNo = "001033001" }); //0有效 1无效 //db.doOption>("MeterBaseHisTareCountService", "doQueryWf", new object[] { mbhtc }, 0); if (rmH.Succeed && rmH.Data != null && rmH.Data.Count > 0) { PbCache.tareCount = rmH.Data[0]; } else { lg.WriteLog(5, "未找到历史皮重计算配置信息MeterBaseHisTareCount"); return false; } //*/ #endregion #region 期限皮重计算配置表 MeterBaseTermTareCountService termTareCountService = new MeterBaseTermTareCountService(); RESTfulResult> rmTe = termTareCountService.doQueryWf(new MeterBaseTermTareCount { valueFlag = "0", typeNo = "001033001" }); //0有效 1无效 //db.doOption>("MeterBaseHisTareCountService", "doQueryWf", new object[] { mbhtc }, 0); if (rmTe.Succeed && rmTe.Data != null && rmTe.Data.Count > 0) { PbCache.termTareCount = rmTe.Data[0]; } else { lg.WriteLog(1, "未找到期限皮重配置信息MeterBaseHisTareCount"); return false; } #endregion #region 危化品限载配置 /* MeterBaseLimitChemicalService limitService = new MeterBaseLimitChemicalService(); RESTfulResult> rmL = limitService.doQueryWf(new MeterBaseLimitChemical { valueFlag = "1" }); if (rmL.Succeed) { PbCache.limit = rmL.Data; } else { lg.WriteLog(5, "未找到危化品限载配置信息MeterBaseLimitChemical"); return false; } //*/ #endregion #region 两次计量时间间隔配置 /* MeterBaseTimeSpaceService spaceService = new MeterBaseTimeSpaceService(); RESTfulResult> rmS = spaceService.doQueryWf(new MeterBaseTimeSpace { spotTypeNo = "001002001" });//汽车衡 if (rmS.Succeed) { PbCache.timeSpace = rmS.Data; } else { lg.WriteLog(5, "未找到两次计量时间间隔配置信息MeterBaseTimeSpace"); return false; } //*/ #endregion #region 期限皮重时间配置 /* MeterBaseTermTareTimeService tareTime = new MeterBaseTermTareTimeService(); RESTfulResult> rmT = tareTime.doQueryWf(new MeterBaseTermTareTime { valueFlag = "0" });//0:有效;1:无效 if (rmS.Succeed) { PbCache.tareTime = rmT.Data; } else { lg.WriteLog(5, "未找到期限皮重时间配置信息MeterBaseTermTareTime"); return false; } //*/ #endregion #region 所有秤体信息 //* MeterWorkMonitorService monitorService = new MeterWorkMonitorService(); RESTfulResult> rmMonitor = monitorService.doQueryOneWf(new MeterWorkMonitor { validFlag = "1" }); if (rmMonitor.Succeed) { PbCache.ltWorkMonitor = rmMonitor.Data; } else { lg.WriteLog(1, "未找到秤体信息配置信息MeterWorkMonitor"); return false; } //*/ #endregion #region 所有计量点数据 MeterBaseSpotInfoService Pservice = new MeterBaseSpotInfoService(); RESTfulResult> rms = Pservice.doQueryWf(new MeterBaseSpotInfo { validFlag = "1" }); if (rms.Succeed && rms.Data != null && rms.Data.Count > 0) { PbCache.sportInfos = rms.Data; } else { lg.WriteLog(1, "MeterBaseSpotInfo"); return false; } #endregion #region 计量卸货时间 MeterBaseUnloadTimeService unloadTimeService = new MeterBaseUnloadTimeService(); RESTfulResult> rmU = unloadTimeService.doQueryWf(new MeterBaseUnloadTime { }); if (rmU.Succeed) { PbCache.unloadTimes = rmU.Data; } else { lg.WriteLog(1, "未找到计量卸货时间间隔配置信息MeterBaseUnloadTime"); return false; } #endregion #region 计量车卡信息 /* MeterBaseCarCardService carCardService = new MeterBaseCarCardService(); RESTfulResult> rmCar = carCardService.doQueryWf(new MeterBaseCarCard { valueFlag = "1" }); if (rmCar.Succeed) { PbCache.ltCarCard = rmCar.Data; } else { lg.WriteLog(1, "未找到计量卡车辆配置信息MeterBaseCarCard"); return false; } //*/ #endregion #region 校秤计量关联,用于获取是否限制 string sql = @"select base_spot_no baseSpotNo, base_spot_name baseSpotName, up_weight upWeight, is_meter isMeter from METER_BASE_CALIBRA_NUM_REL group by base_spot_no, base_spot_name, UP_WEIGHT, is_meter"; PbModelDbService> pbNumRel = new PbModelDbService>(); RESTfulResult> rmNumRel = pbNumRel.executeSqlDataWf(sql); if (rmNumRel.Succeed && rmNumRel.Data != null && rmNumRel.Data.Count > 0) { PbCache.ltBaseCalibraNumRel = rmNumRel.Data; } else { lg.WriteLog(1, "未找到秤点关联表METER_BASE_CALIBRA_NUM_REL信息"); return false; } #endregion return true; } public bool getSpot() { #region 获取摄像头数据用于截图 if (PbCache.ltVideoInfo != null && PbCache.ltVideoInfo.Count > 0) { PbCache.videoInfo = PbCache.ltVideoInfo.Where(s => s.pointid == PbCache.sportInfo.baseSpotNo).FirstOrDefault(); List videoChild = new List(); Type postType = PbCache.videoInfo.GetType(); PropertyInfo[] postTypeInfos = postType.GetProperties(); //返回为当前 Type 的所有公共属性,PropertyInfo[] PropertyInfo 的所有公共属性的 Type 对象数组 foreach (PropertyInfo p in postTypeInfos) { if (p.Name.Contains("position")) { string str = (string)p.GetValue(PbCache.videoInfo, null); if (str != "" && str != null) { videoChild.Add( new MeterBaseVideoChild { pointid = PbCache.videoInfo.pointid, p_ip = str, p_rate = "0",//************解码率直接给定了,这里没取配置值************* vdo_port = PbCache.videoInfo.vdoPort, vdo_pwd = PbCache.videoInfo.vdoPwd, vdo_user = PbCache.videoInfo.vdoUser } ); } } } PbCache.videoChild = videoChild; if (videoChild.Count == 0) { return false; } else { //将摄像头操作类存储再缓存中 List list = new List(); foreach (MeterBaseVideoChild child in PbCache.videoChild) { DhCameraShot cameraShot = new DhCameraShot(); cameraShot.ip = child.p_ip; cameraShot.port = child.vdo_port; cameraShot.uid = child.vdo_user; cameraShot.pwd = child.vdo_pwd; list.Add(cameraShot); } CarCache.cameraShots = list; } } #endregion #region 秤体量程 if (PbCache.ltRange != null && PbCache.ltRange.Count > 0) { PbCache.range = PbCache.ltRange.Where(s => s.baseSpotNo == PbCache.sportInfo.baseSpotNo).FirstOrDefault(); } else { return false; } #endregion #region 校秤基础数据 PbModelDbService> pbRelation = new PbModelDbService>(); string sql = @"select * from (select t2.base_Spot_No baseSpotNo, t2.base_Spot_Name baseSpotName, t2.calibration_Time_Unit calibrationTimeUnit, to_char(t2.start_time, 'HH24:mi:ss') startTime, to_char(t2.end_time, 'HH24:mi:ss') endTime, t2.day_Num dayNum from METER_BASE_CALIBRA_RELATION t2 where where t2.base_Spot_No = '" + PbCache.sportInfo.baseSpotNo + @"' order by t2.end_time desc) where rownum = 1"; RESTfulResult> rmRelation = pbRelation.executeSqlDataWf(sql); if (rmRelation.Succeed && rmRelation.Data != null && rmRelation.Data.Count > 0) { PbCache.relations = rmRelation.Data; } else { lg.WriteLog(5, "未找到秤校基础数据MeterBaseCalibraRelation"); return false; } #endregion return true; } } }