protected void AppendNCData(ref List <proc_WebSelectCargoStorageDetail_Result> list) { try { #region 查询数据 string typeArgs = "CargoInventory"; string conditionArgs = "20101";//参数是仓库编码//string.Empty; System.Data.DataTable dt = null; string queryMsg = ""; string msg = ""; BasicInfoInvoke BasicInfoInvokeObj = BasicInfoInvokeFactory.CreateInstance(typeArgs, conditionArgs); if (BasicInfoInvokeObj.GetNCDataJoinRFID(out dt, out queryMsg) == false) { ShowMessageBox("查询用友系统信息失败!详细信息:" + queryMsg); return; } else { List <StockPositionAndVolume> NCList = GetModelFromDataTable(dt, out msg); if (NCList == null || NCList.Count == 0) { ShowMessageBox("查询用友系统信息失败!详细信息:" + msg); } else { foreach (proc_WebSelectCargoStorageDetail_Result spav in list) { StockPositionAndVolume NCSpav = (from r in NCList where r.WHCode == spav.WHCode && r.CargoCode == spav.CargoCode select r).FirstOrDefault <StockPositionAndVolume>(); if (NCSpav != null) { spav.NCCargoStockCount = (decimal)NCSpav.CargoStockCount;//将从用户系统查询出的信息附件到RFID系统查询出的结果上。 } } } } #endregion } catch (Exception ex) { ShowMessageBox("查询用友库存信息失败!", ex); } finally { ScriptManager.RegisterStartupScript(this.Page, this.GetType(), Guid.NewGuid().ToString(), "hiddenWaitDiv('divWait');", true);//js提示 } }
/// <summary> /// 从DataTable中获取实体列表 /// </summary> /// <param name="dt"></param> /// <param name="msg"></param> /// <returns></returns> public List <DAL.StockPositionAndVolume> GetModelFromDataTable(DataTable dt, out string msg) { List <DAL.StockPositionAndVolume> list = new List <DAL.StockPositionAndVolume>(); msg = ""; //接口协议文档中定义的字段 Dictionary <string, string> dataFieldNameDic = new Dictionary <string, string>(); /* * WHCode 仓库编码 * WHName 仓库名称 * CargoCode 商品编码 * CargoName 商品名称 * CargoSpec 规格 * CargoModel 型号 * CargoUnit 单位 * ReleaseYear 发行年份 * CargoStockCount 库存数量 * CargoProperty 存货属性 * ProjectName 项目名称 * */ dataFieldNameDic.Add("WHCode", "仓库编码"); dataFieldNameDic.Add("WHName", "仓库名称"); dataFieldNameDic.Add("CargoCode", "商品编码"); dataFieldNameDic.Add("CargoName", "商品名称"); dataFieldNameDic.Add("CargoSpec", "规格"); dataFieldNameDic.Add("CargoModel", "型号"); dataFieldNameDic.Add("CargoUnit", "单位"); dataFieldNameDic.Add("ReleaseYear", "发行年份"); dataFieldNameDic.Add("CargoStockCount", "库存数量"); dataFieldNameDic.Add("CargoProperty", "存货属性"); dataFieldNameDic.Add("ProjectName", "项目名称"); if (dt.Rows.Count == 0) { msg = "用友系统返回数据集中无数据!"; return(new List <StockPositionAndVolume>()); } StringBuilder errorColName = new StringBuilder(); //检查数据集中是否存在指定字段 foreach (KeyValuePair <string, string> kvp in dataFieldNameDic) { if (dt.Columns.Contains(kvp.Key) == false) { errorColName.Append(Environment.NewLine); errorColName.Append(kvp.Value); errorColName.Append("-"); errorColName.Append(kvp.Key); } } if (errorColName.Length > 0) { errorColName.Insert(0, "用友系统返回的数据集中未包含如下字段,不能进行有效解析!"); msg = errorColName.ToString(); return(new List <StockPositionAndVolume>());; } //遍历数据集创建实体 foreach (DataRow dr in dt.Rows) { StockPositionAndVolume newModel = new StockPositionAndVolume(); newModel.WHCode = DataCheckHelper.GetCellString(dr["WHCode"]); newModel.CargoCode = DataCheckHelper.GetCellString(dr["CargoCode"]); newModel.CargoName = DataCheckHelper.GetCellString(dr["CargoName"]); newModel.CargoSpec = DataCheckHelper.GetCellString(dr["CargoSpec"]); newModel.CargoModel = DataCheckHelper.GetCellString(dr["CargoModel"]); newModel.CargoUnits = DataCheckHelper.GetCellString(dr["CargoUnit"]); newModel.ReleaseYear = DataCheckHelper.GetCellString(dr["ReleaseYear"]); newModel.CargoStockCount = DataCheckHelper.GetCellDouble(dr["CargoStockCount"]); newModel.LastUpdateTime = DateTime.Now; //newModel.Remark = DataCheckHelper.GetCellString(dr["ProjectName"]); List <StockPositionAndVolume> existWareHouse = (from r in list where r.CargoCode == newModel.CargoCode && r.WHCode == newModel.WHCode select r).ToList <StockPositionAndVolume>(); if (existWareHouse == null || existWareHouse.Count == 0)//过滤重复数据 { list.Add(newModel); } } return(list); }