/// <summary> /// 根据数据采集类创建对应的事务对象 /// </summary> /// <param name="transactionKey">事务主键</param> /// <param name="obj">数据采集对象</param> /// <param name="activity">事务类型</param> public DataAcquisitionTrans(string transactionKey, DataAcquisitionData obj, EnumAcquisitionTransActivity activity) { this.Key = new DataAcquisitionTransKey() { TransactionKey = transactionKey, ItemCode = obj.Key.ItemCode, EDCTime = obj.Key.EDCTime, FieldCode = obj.Key.FieldCode, LocationName = obj.Key.LocationName, LineCode = obj.Key.LineCode, EquipmentCode = obj.Key.EquipmentCode }; this.Activity = activity; this.DataValue = obj.DataValue; this.DataState = obj.DataState; this.CreateTime = obj.CreateTime; this.Creator = obj.Creator; this.AuditTime = obj.AuditTime; this.Auditor = obj.Auditor; this.EditTime = obj.EditTime; this.Editor = obj.Editor; }
/// <summary> 创建数据列表 </summary> /// <param name="dtSet">取得数据集(采集数据列表)</param> /// <param name="dt">返回整理后数据列表</param> /// <returns></returns> public MethodReturnResult CreateTableList(MethodReturnResult <DataSet> dtSet, ref DataTable dt) { MethodReturnResult result = new MethodReturnResult(); try { result.Code = 0; DataTable dtField = new DataTable(); //字段数据 DataTable dtRowData = new DataTable(); //行数据列表 DataTable dtAcquisitionData = new DataTable(); //数据列表 string sColumnType = ""; //列项目类型 string sColumn = ""; //列项目代码 string sColumnTitle = ""; //列项目标题 #region 增加项目固定列 //增加子报表链接字段 DataColumn dcStatus = new DataColumn("ItemCode"); dcStatus.Caption = "HIDE"; //设置隐藏属性在标题(自定义) dt.Columns.Add(dcStatus); //序号 dcStatus = new DataColumn("RowsNumber"); dcStatus.Caption = "序号"; dt.Columns.Add(dcStatus); //采集时间 dcStatus = new DataColumn("EDCTime"); dcStatus.Caption = "采集时间"; dt.Columns.Add(dcStatus); //线别 dcStatus = new DataColumn("LineCode"); dcStatus.Caption = "线别"; dt.Columns.Add(dcStatus); //设备 dcStatus = new DataColumn("EquipmentCode"); dcStatus.Caption = "设备"; dt.Columns.Add(dcStatus); #endregion #region 创建动态列 dtField = dtSet.Data.Tables[0]; //采集字段数据 dtRowData = dtSet.Data.Tables[1]; //行数据明细 dtAcquisitionData = dtSet.Data.Tables[2]; //采集数据明细 var columnquery = from t in dtField.AsEnumerable() select new { ColumnIndex = t.Field <int>("SerialNumber"), //字段序号 ColumnType = t.Field <Int16>("DataType"), //列字段类型 ColumnCode = t.Field <string>("FieldCode"), //列字段代码 ColumnTitle = t.Field <string>("FieldName"), //列字段标题 } into r orderby r.ColumnIndex select r; foreach (var columndata in columnquery) { sColumnType = columndata.ColumnType.ToString(); //列项目类型 sColumn = columndata.ColumnCode; //列项目代码 sColumnTitle = columndata.ColumnTitle; //列项目标题 dcStatus = new DataColumn(sColumn); dcStatus.Caption = sColumnTitle; dcStatus.DefaultValue = 0; dt.Columns.Add(dcStatus); } #endregion #region 增加尾部字段 //数据状态 dcStatus = new DataColumn("DataState"); dcStatus.Caption = "状态"; dt.Columns.Add(dcStatus); //操作(事务类型) dcStatus = new DataColumn("Activity"); dcStatus.Caption = "操作"; dt.Columns.Add(dcStatus); ////创建时间 //dcStatus = new DataColumn("CreateTime"); //dcStatus.Caption = "创建时间"; //dt.Columns.Add(dcStatus); ////创建人 //dcStatus = new DataColumn("Creator"); //dcStatus.Caption = "创建人"; //dt.Columns.Add(dcStatus); ////审核时间 //dcStatus = new DataColumn("AuditTime"); //dcStatus.Caption = "审核时间"; //dt.Columns.Add(dcStatus); ////审核人 //dcStatus = new DataColumn("Auditor"); //dcStatus.Caption = "审核人"; //dt.Columns.Add(dcStatus); //编辑时间 dcStatus = new DataColumn("EditTime"); dcStatus.Caption = "编辑时间"; dt.Columns.Add(dcStatus); //编辑人 dcStatus = new DataColumn("Editor"); dcStatus.Caption = "编辑人"; dt.Columns.Add(dcStatus); #endregion #region 设置行信息 //取得行信息字段 var rowquery = from t in dtRowData.AsEnumerable() select new { RowsNumber = t.Field <Int64>("RowsNumber"), //总结果集行号 EDCTime = t.Field <System.DateTime>("EDCTime"), //采集时间 ItemCode = t.Field <string>("ItemCode"), //项目号 LineCode = t.Field <string>("LINE_CODE"), //线别 EquipmentCode = t.Field <string>("EQUIPMENT_CODE"), //设备代码 DataState = t.Field <Int16>("DataState"), //状态 Activity = t.Field <Int16>("Activity"), //操作事务 //CreateTime = t.Field<System.DateTime>("Create_Time"), //创建时间 //Creator = t.Field<string>("Creator"), //创建人 EditTime = t.Field <System.DateTime>("Edit_Time"), //编辑时间 Editor = t.Field <string>("Editor") //编辑人 //AuditTime = t.Field<System.DateTime>("AuditTime"), //审批时间 //Auditor = t.Field<string>("Auditor") //审批人 } into r orderby r.RowsNumber select r; DataRow dr = dt.NewRow(); //设置行信息 foreach (var data in rowquery) { dr = dt.NewRow(); dr["RowsNumber"] = data.RowsNumber; //总结果集行号 dr["EDCTime"] = data.EDCTime; //采集时间 dr["ItemCode"] = data.ItemCode; //项目号 dr["LineCode"] = data.LineCode; //线别 dr["EquipmentCode"] = data.EquipmentCode; //设备代码 if (data.DataState == 1) { dr["DataState"] = "审核"; //状态 } else { dr["DataState"] = ""; //状态 } EnumAcquisitionTransActivity activity = (EnumAcquisitionTransActivity)data.Activity; dr["Activity"] = activity.GetDisplayName(); //操作事务类型 //dr["CreateTime"] = data.CreateTime; //创建时间 //dr["Creator"] = data.Creator; //创建人 dr["EditTime"] = data.EditTime; //编辑时间 dr["Editor"] = data.Editor; //编辑人 //dr["AuditTime"] = data.AuditTime; //审批时间 //dr["Auditor"] = data.Auditor; //审批人 dt.Rows.Add(dr); } #endregion #region 填充数据 string strFieldCode = ""; string strValues = ""; int intRowNum = 0; for (int i = 0; i < dtAcquisitionData.Rows.Count; i++) { intRowNum = Convert.ToInt32(dtAcquisitionData.Rows[i]["RowNum"]); //行号 strFieldCode = dtAcquisitionData.Rows[i]["FieldCode"].ToString(); //字段代码 strValues = dtAcquisitionData.Rows[i]["DataValue"].ToString(); //值 dt.Rows[intRowNum][strFieldCode] = strValues; } #endregion return(result); } catch (Exception e) { result.Code = 1000; result.Message = e.Message; result.Detail = e.ToString(); return(result); } }