using CarMeterSystem.OptionCls; 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 CarMeterSystem { /// /// 基础数据获取 /// public class BaseDbCls { Log lg = Log.GetInstance(); private PbModelDbService> pb = new PbModelDbService>(); private MeterBaseVideoinfoService mbvs = new MeterBaseVideoinfoService(); private MeterBaseScaleRangeService rangeService = new MeterBaseScaleRangeService(); private MeterWorkSceneRegisterService sceneRegisterService = new MeterWorkSceneRegisterService(); private MeterBaseHisTareCountService service = new MeterBaseHisTareCountService(); private MeterBaseTermTareCountService termTareCountService = new MeterBaseTermTareCountService(); private MeterBaseLimitChemicalService limitService = new MeterBaseLimitChemicalService(); private MeterBaseTimeSpaceService spaceService = new MeterBaseTimeSpaceService(); private MeterBaseTermTareTimeService tareTime = new MeterBaseTermTareTimeService(); private PbModelDbService> pbRelation = new PbModelDbService>(); private MeterBaseCarHoldTimeService holdService = new MeterBaseCarHoldTimeService(); private MeterBaseUnloadTimeService unloadTimeService = new MeterBaseUnloadTimeService(); private MeterBaseCarCardService carCardService = new MeterBaseCarCardService(); private PbModelDbService> pbNumRel = new PbModelDbService>(); public bool getBaseDb() { PbCache.isEndHour = 9999; #region 获取计量类型 //string sql = @"SELECT base_code baseCode,base_name baseName,memo FROM Com_Base_Info where p_base_code='001006' and valid_Flag='1'"; //杨秀东修改为仅包含秤点信息的才让缓存出来 //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" + /** * BourneCao注释:酒钢不存在计量类型选择 */ string sql = @"SELECT base_code baseCode,base_name baseName,memo FROM Com_Base_Info where p_base_code='001006' and valid_Flag='1'" + "order by create_time desc, base_code desc"; RESTfulResult> rmType = pb.executeSqlDataWf(sql); if (rmType.Succeed && rmType.Data != null && rmType.Data.Count > 0) { PbCache.businessType = rmType.Data; } else { lg.WriteLog(1, "未找到计量类型基础信息"); 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'"; 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 读取音频文件名称 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 摄像头配置信息 RESTfulResult> rm = mbvs.doQueryWf(new MeterBaseVideoinfo { pointid = PbCache.sportInfo.baseSpotNo }); //db.doOption("meterbasevideoinfos", "doQueryWf", new object[] { PbCache.sportInfo }, 0); if (rm.Succeed && rm.Data != null && rm.Data.Count > 0) { PbCache.videoInfo = rm.Data[0]; List videoChild = new List(); Type postType = PbCache.videoInfo.GetType(); //rm.Data.GetType(); PropertyInfo[] postTypeInfos = postType.GetProperties(); //返回为当前 Type 的所有公共属性,PropertyInfo[] PropertyInfo 的所有公共属性的 Type 对象数组 foreach (PropertyInfo p in postTypeInfos) { if (p.Name.Contains("videoip")) //2021年3月16日 杨秀东:原来从摄像头截图使用position;现在从硬盘录像机截图,使用videoip { 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(); #region 由从摄像头截图改为从硬盘录像机截图 /* DhCameraShot cameraShot = new DhCameraShot(); cameraShot.ip = PbCache.videoInfo.videoip; cameraShot.port = PbCache.videoInfo.vdoPort; cameraShot.uid = PbCache.videoInfo.vdoUser; cameraShot.pwd = PbCache.videoInfo.vdoPwd; list.Add(cameraShot); //*/ //* 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); } //*/ #endregion CarCache.cameraShots = list; } } else { //lg.WriteLog(1, "未找到摄像头配置信息MeterBaseVideoinfo"); //return false; } #endregion #region 秤体量程配置 RESTfulResult> rmR = rangeService.doQueryWf(new MeterBaseScaleRange { baseSpotNo = PbCache.sportInfo.baseSpotNo }); if (rmR.Succeed && rmR.Data != null && rmR.Data.Count > 0) { PbCache.range = rmR.Data[0]; } else { //lg.WriteLog(1, "未找到秤体量程配置信息MeterBaseScaleRange"); //return false; } #endregion #region 获取计量场景信息 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() { string sql = ""; #region 初始化一次缓存类 PbCache.monitor = new MeterWorkMonitor(); PbCache.Load(); #endregion #region 历史皮重计算配置表 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(1, "未找到历史皮重配置信息MeterBaseHisTareCount"); //return false; } #endregion #region 期限皮重计算配置表 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 危化品限载配置 RESTfulResult> rmL = limitService.doQueryWf(new MeterBaseLimitChemical { valueFlag = "0" }); if (rmL.Succeed) { PbCache.limit = rmL.Data; } else { lg.WriteLog(1, "未找到危化品限载配置信息MeterBaseLimitChemical"); return false; } #endregion #region 两次计量时间间隔配置 RESTfulResult> rmS = spaceService.doQueryWf(new MeterBaseTimeSpace { spotTypeNo = "001002001" });//汽车衡 if (rmS.Succeed) { PbCache.timeSpace = rmS.Data; } else { lg.WriteLog(1, "未找到两次计量时间间隔配置信息MeterBaseTimeSpace"); return false; } #endregion #region 期限皮重时间配置 RESTfulResult> rmT = tareTime.doQueryWf(new MeterBaseTermTareTime { valueFlag = "0" });//0:有效;1:无效 if (rmS.Succeed) { PbCache.tareTime = rmT.Data; } else { lg.WriteLog(1, "未找到期限皮重时间配置信息MeterBaseTermTareTime"); return false; } #endregion #region 校秤基础数据 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 t2.base_Spot_No = '" + PbCache.sportInfo.baseSpotNo + @"' order by t2.end_time desc) where rownum = 1"; RESTfulResult> rmRelation = pbRelation.executeSqlDataWf(sql); if (rmRelation.Succeed) { PbCache.relations = rmRelation.Data; } else { lg.WriteLog(1, "未找到校秤基础数据MeterBaseCalibraRelation"); return false; } #endregion #region 停留超时时间holdTime RESTfulResult> rmHT = holdService.doQueryWf(new MeterBaseCarHoldTime { baseSpotNo = PbCache.sportInfo.baseSpotNo });//汽车衡 if (rmS.Succeed) { PbCache.holdTime = rmHT.Data; } else { lg.WriteLog(1, "停留超时时间holdTime"); return false; } #endregion #region 计量卸货时间 RESTfulResult> rmU = unloadTimeService.doQueryWf(new MeterBaseUnloadTime { }); if (rmU.Succeed) { PbCache.unloadTimes = rmU.Data; } else { //lg.WriteLog(1, "未找到计量卸货时间间隔配置信息MeterBaseUnloadTime"); //return false; } #endregion #region 计量车卡信息 RESTfulResult> rmCar = carCardService.doQueryWf(new MeterBaseCarCard { valueFlag = "1" }); if (rmCar.Succeed) { PbCache.ltCarCard = rmCar.Data; } else { lg.WriteLog(1, "未找到计量卡车辆配置信息MeterBaseCarCard"); return false; } #endregion #region 校秤计量关联,用于获取是否限制 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"; 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; } } }