private DataTable FormatData(DataTable originalDt) { AlertorResolve ar = new AlertorResolve(); DataTable resultDt = new DataTable(); resultDt.Columns.Add("CID"); resultDt.Columns.Add("CarNo"); resultDt.Columns.Add("SimCode"); resultDt.Columns.Add("CarOwnTel"); resultDt.Columns.Add("TNO"); resultDt.Columns.Add("VehicleType"); resultDt.Columns.Add("FaultCount"); DataView dataView = originalDt.DefaultView; DataTable carDt = dataView.ToTable(true, "CID", "CarNo", "SimCode", "CarOwnTel", "TNO", "VehicleType"); if (carDt != null && carDt.Rows.Count > 0) { int carcount = carDt.Rows.Count; for (int i = 0; i < carcount; i++) { int fCount = 0; DataRow dr = resultDt.NewRow(); string CID = carDt.Rows[i]["CID"].ToString().Trim(); dr["CID"] = CID; dr["CarNo"] = carDt.Rows[i]["CarNo"].ToString().Trim(); dr["SimCode"] = carDt.Rows[i]["SimCode"].ToString().Trim(); dr["CarOwnTel"] = carDt.Rows[i]["CarOwnTel"].ToString().Trim(); dr["TNO"] = carDt.Rows[i]["TNO"].ToString().Trim(); dr["VehicleType"] = carDt.Rows[i]["VehicleType"].ToString().Trim(); DataRow[] faultDrs = originalDt.Select("CID=" + CID); if (faultDrs != null && faultDrs.Length > 0) { int count = faultDrs.Length; for (int j = 0; j < count; j++) { OBDDiagn obdDiagn = ar.analyzeOBDDiagn((byte[])(faultDrs[j]["vData"])); List <CommLibrary.OBDDiagn.diagn> powerAsmList = obdDiagn.PowerAsmList; //动力总成系统 List <CommLibrary.OBDDiagn.diagn> underpanAsmList = obdDiagn.UnderpanAsmList; //底盘系统 List <CommLibrary.OBDDiagn.diagn> carBodyAsmList = obdDiagn.CarBodyAsmList; //车身系统 List <CommLibrary.OBDDiagn.diagn> networkAsmList = obdDiagn.NetworkAsmList; //网络系统 if (powerAsmList.Count > 0) { foreach (CommLibrary.OBDDiagn.diagn obddiagn in powerAsmList) { if (!obddiagn.FaultyCodes.Equals("00000000")) { fCount++; } } } if (underpanAsmList.Count > 0) { foreach (CommLibrary.OBDDiagn.diagn obddiagn in underpanAsmList) { if (!obddiagn.FaultyCodes.Equals("00000000")) { fCount++; } } } if (carBodyAsmList.Count > 0) { foreach (CommLibrary.OBDDiagn.diagn obddiagn in carBodyAsmList) { if (!obddiagn.FaultyCodes.Equals("00000000")) { fCount++; } } } if (networkAsmList.Count > 0) { foreach (CommLibrary.OBDDiagn.diagn obddiagn in networkAsmList) { if (!obddiagn.FaultyCodes.Equals("00000000")) { fCount++; } } } } } dr["FaultCount"] = fCount; resultDt.Rows.Add(dr); } } return(resultDt); }
public ResponseAppResult AppGetOBDDiagnResult(Dictionary <string, string> inparams) { ResponseAppResult Result = null; if (!inparams.Keys.Contains("cid") || inparams["cid"] == "") { Result = new ResponseAppResult(ResState.ParamsImperfect, "缺少cid或cid为空!", null); return(Result); } try { string sysflag = inparams["sysflag"]; long cid = GetCarCIDBySimCode(sysflag, inparams["cid"]); AlertorResolve ar = new AlertorResolve(); RDSConfigModel rc = RDSConfig.GetRDS(WebProc.GetAppSysflagKey(sysflag)); RealtimeDataServer.WCFServiceClient df = new RealtimeDataServer.WCFServiceClient(); df.Endpoint.Address = new System.ServiceModel.EndpointAddress(rc.WCFUrl); RealtimeDataServer.CarTransmissionProtocolInfo ctf = df.GetCarTransData(WebProc.GetAppSysflagKey(sysflag), cid); byte[] spai = null; //OBDDiagn res = new OBDDiagn(); //res.VIN = "aa12345678935"; //res.NormalUnitCount = 2; //res.FaultyUnitList = new List<OBDDiagn.diagn>(); //OBDDiagn.diagn rrr = new OBDDiagn.diagn(); //rrr.FaultyCodes = "12412"; //rrr.UnitCode = 0x5; //rrr.UnitName = "允许进入/启动"; //rrr.AsmName = "车身系统"; //res.FaultyUnitList.Add(rrr); //OBDDiagn.diagn rrr2 = new OBDDiagn.diagn(); //rrr2.FaultyCodes = "27452"; //rrr2.UnitCode = 0x16; //rrr2.UnitName = "方向盘"; //rrr2.AsmName = "车身系统"; //res.FaultyUnitList.Add(rrr2); //res.NormalUnitList = new List<OBDDiagn.diagn>(); //OBDDiagn.diagn rrr3 = new OBDDiagn.diagn(); //rrr3.FaultyCodes = "00000"; //rrr3.UnitCode = 0x1; //rrr3.UnitName = "发动机"; //rrr3.AsmName = "动力总成系统"; //res.NormalUnitList.Add(rrr3); //OBDDiagn.diagn rrr4 = new OBDDiagn.diagn(); //rrr4.FaultyCodes = "00000"; //rrr4.UnitCode = 0x3; //rrr3.AsmName = "底盘系统"; // rrr4.UnitName = "ABS制动"; //res.NormalUnitList.Add(rrr4); //Result = new ResponseAppResult(ResState.Success, "操作成功", res); if (ctf != null && ctf.TransData != null && ctf.TransData.ContainsKey(0x0FC7)) { spai = ctf.TransData[0x0FC7];// date[0].TransmissionProtocolInfo; OBDDiagn res = ar.analyzeOBDDiagn(spai); if (res != null) { Result = new ResponseAppResult(ResState.Success, "操作成功", res); } else { Result = new ResponseAppResult(ResState.RetryAfter, "未收到OBD诊断数据,请稍候重试!", ""); } } else { Result = new ResponseAppResult(ResState.RetryAfter, "未收到OBD诊断数据,请稍候重试!", ""); } } catch (Exception ex) { LogHelper.WriteError("AppSendOBDDiagn调用异常", ex); Result = new ResponseAppResult(ResState.OperationFailed, ex.Message, null); } return(Result); }
private DataTable FormatDetailData(DataTable originalDt) { DataTable resultDt = new DataTable(); DataColumn dc0 = new DataColumn(); resultDt.Columns.Add(new DataColumn("CarNo", Type.GetType("System.String"))); resultDt.Columns.Add(new DataColumn("T_DateTime", Type.GetType("System.DateTime"))); resultDt.Columns.Add(new DataColumn("UnitCode", Type.GetType("System.String"))); //resultDt.Columns.Add(new DataColumn("AsmName", Type.GetType("System.String"))); resultDt.Columns.Add(new DataColumn("UnitName", Type.GetType("System.String"))); resultDt.Columns.Add(new DataColumn("FaultyCodes", Type.GetType("System.String"))); if (originalDt != null && originalDt.Rows.Count > 0) { AlertorResolve ar = new AlertorResolve(); int count = originalDt.Rows.Count; for (int i = 0; i < count; i++) { try { OBDDiagn obdDiagn = ar.analyzeOBDDiagn((byte[])(originalDt.Rows[i]["vData"])); List <CommLibrary.OBDDiagn.diagn> powerAsmList = obdDiagn.PowerAsmList; //动力总成系统 List <CommLibrary.OBDDiagn.diagn> underpanAsmList = obdDiagn.UnderpanAsmList; //底盘系统 List <CommLibrary.OBDDiagn.diagn> carBodyAsmList = obdDiagn.CarBodyAsmList; //车身系统 List <CommLibrary.OBDDiagn.diagn> networkAsmList = obdDiagn.NetworkAsmList; //网络系统 if (powerAsmList.Count > 0) { foreach (CommLibrary.OBDDiagn.diagn obddiagn in powerAsmList) { if (!obddiagn.FaultyCodes.Equals("00000000")) { DataRow dr = resultDt.NewRow(); dr["CarNo"] = originalDt.Rows[i]["CarNo"].ToString(); dr["T_DateTime"] = Convert.ToDateTime(originalDt.Rows[i]["T_DateTime"]); //dr["AsmName"] = obddiagn.AsmName; dr["UnitName"] = obddiagn.UnitName; dr["UnitCode"] = obddiagn.UnitCode.ToString("X2"); dr["FaultyCodes"] = obddiagn.FaultyCodes; resultDt.Rows.Add(dr); } } } if (underpanAsmList.Count > 0) { foreach (CommLibrary.OBDDiagn.diagn obddiagn in underpanAsmList) { if (!obddiagn.FaultyCodes.Equals("00000000")) { DataRow dr = resultDt.NewRow(); dr["CarNo"] = originalDt.Rows[i]["CarNo"].ToString(); dr["T_DateTime"] = Convert.ToDateTime(originalDt.Rows[i]["T_DateTime"]); //dr["AsmName"] = obddiagn.AsmName; dr["UnitName"] = obddiagn.UnitName; dr["UnitCode"] = obddiagn.UnitCode.ToString("X2"); dr["FaultyCodes"] = obddiagn.FaultyCodes; resultDt.Rows.Add(dr); } } } if (carBodyAsmList.Count > 0) { foreach (CommLibrary.OBDDiagn.diagn obddiagn in carBodyAsmList) { if (!obddiagn.FaultyCodes.Equals("00000000")) { DataRow dr = resultDt.NewRow(); dr["CarNo"] = originalDt.Rows[i]["CarNo"].ToString(); dr["T_DateTime"] = Convert.ToDateTime(originalDt.Rows[i]["T_DateTime"]); //dr["AsmName"] = obddiagn.AsmName; dr["UnitName"] = obddiagn.UnitName; dr["UnitCode"] = obddiagn.UnitCode.ToString("X2"); dr["FaultyCodes"] = obddiagn.FaultyCodes; resultDt.Rows.Add(dr); } } } if (networkAsmList.Count > 0) { foreach (CommLibrary.OBDDiagn.diagn obddiagn in networkAsmList) { if (!obddiagn.FaultyCodes.Equals("00000000")) { DataRow dr = resultDt.NewRow(); dr["CarNo"] = originalDt.Rows[i]["CarNo"].ToString(); dr["T_DateTime"] = Convert.ToDateTime(originalDt.Rows[i]["T_DateTime"]); //dr["AsmName"] = obddiagn.AsmName; dr["UnitName"] = obddiagn.UnitName; dr["UnitCode"] = obddiagn.UnitCode.ToString("X2"); dr["FaultyCodes"] = obddiagn.FaultyCodes; resultDt.Rows.Add(dr); } } } } catch { // } } } //resultDt.DefaultView.Sort = DataView dv = resultDt.DefaultView; dv.Sort = "T_DateTime ASC,UnitCode ASC "; DataTable dt2 = dv.ToTable(); return(dt2); }