示例#1
0
        /// <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);
        }