示例#1
0
 public OperatorGoodImportResponse OperatorGoodImport(OperatorGoodImportRequest request)
 {
     return(_operatorGoodService.ImportGoodsFromExcel(request));
 }
示例#2
0
        /// <summary>
        /// Импортирует товары из файла
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public OperatorGoodImportResponse ImportGoodsFromExcel(OperatorGoodImportRequest request)
        {
            OperatorGoodImportResponse returnValue = new OperatorGoodImportResponse();

            _cnn.Open();
            SqlCommand cmd = _cnn.CreateCommand();

            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = "OperatorImportGoods";
            cmd.Parameters.AddWithValue("@partner", request.Partner);
            cmd.Parameters.Add("@errormessage", SqlDbType.NVarChar, 100);
            cmd.Parameters["@errormessage"].Direction = ParameterDirection.Output;
            cmd.Parameters.Add("@insertedrows", SqlDbType.Int);
            cmd.Parameters["@insertedrows"].Direction = ParameterDirection.Output;
            cmd.Parameters.Add("@result", SqlDbType.Int);
            cmd.Parameters["@result"].Direction = ParameterDirection.ReturnValue;

            if (request.Goods != null && request.Goods.Count > 0)
            {
                using (var table = new DataTable())
                {
                    table.Columns.Add("code", typeof(string));
                    table.Columns.Add("brandcode", typeof(string));
                    table.Columns.Add("goodsgroup", typeof(int));
                    table.Columns.Add("brand", typeof(int));
                    table.Columns.Add("noredeem", typeof(bool));
                    table.Columns.Add("nocharge", typeof(bool));
                    table.Columns.Add("price", typeof(decimal));
                    table.Columns.Add("minprice", typeof(decimal));
                    table.Columns.Add("name", typeof(string));
                    table.Columns.Add("catalog", typeof(int));

                    foreach (var item in request.Goods)
                    {
                        DataRow row = table.NewRow();
                        row["code"]     = item.Code;
                        row["name"]     = item.Name;
                        row["noredeem"] = false;
                        row["nocharge"] = false;
                        table.Rows.Add(row);
                    }
                    var items = new SqlParameter("@gooditems", SqlDbType.Structured)
                    {
                        TypeName = "dbo.GoodItem",
                        Value    = table
                    };
                    cmd.Parameters.Add(items);
                }
            }

            try
            {
                cmd.ExecuteNonQuery();
                if (!DBNull.Value.Equals(cmd.Parameters["@insertedrows"].Value))
                {
                    returnValue.ImportedRows = Convert.ToInt32(cmd.Parameters["@insertedrows"].Value);
                }
                returnValue.ErrorCode = Convert.ToInt32(cmd.Parameters["@result"].Value);
                returnValue.Message   = Convert.ToString(cmd.Parameters["@errormessage"].Value);
            }
            catch (Exception e)
            {
                returnValue.ErrorCode = 3;
                returnValue.Message   = e.Message;
            }
            finally
            {
                _cnn.Close();
            }
            return(returnValue);
        }
示例#3
0
        public JsonResult OperatorGoodImportFromExcel(HttpPostedFileBase file)
        {
            if (Request.Files.Count > 0)
            {
                var goodList = new List <Good>();
                using (var excel = new ExcelPackage(Request.Files[0].InputStream))
                {
                    var sheet = excel.Workbook.Worksheets.First();
                    for (var rowNum = 2; rowNum <= sheet.Dimension.End.Row; rowNum++)
                    {
                        try
                        {
                            goodList.Add(new Good
                            {
                                Code = sheet.Cells[rowNum, 2].Text,
                                Name = sheet.Cells[rowNum, 1].Text
                            });
                        }
                        catch { }
                    }
                }
                OperatorGoodImportResponse operatorGoodImportResponse = new OperatorGoodImportResponse();
                try
                {
                    short partner = JwtProps.GetPartner();
                    if (partner == 0)
                    {
                        partner = JwtProps.GetDefaultPartner();
                    }
                    var data = new OperatorGoodImportRequest
                    {
                        Partner = partner,
                        Goods   = goodList
                    };
                    HttpResponseMessage responseMessage = HttpClientService.PostAsync("api/values/ImportOperatorGoods", data).Result;
                    if (responseMessage.IsSuccessStatusCode)
                    {
                        operatorGoodImportResponse = responseMessage.Content.ReadAsAsync <OperatorGoodImportResponse>().Result;
                        if (operatorGoodImportResponse.ErrorCode == 0 && string.IsNullOrEmpty(operatorGoodImportResponse.Message))
                        {
                            return(Json(new { success = true }));
                        }
                        return(Json(new { success = false }));
                    }
                    operatorGoodImportResponse.ErrorCode = 10;
                    operatorGoodImportResponse.Message   = "Ошибка импорта данных";
                }
                catch (Exception e)
                {
                }



                //var reader = new StreamReader(Request.Files[0].InputStream);
                //var ex=new ExcelPackage(Request.Files[0].InputStream);
                //var book = ex.
                //    Factory.GetWorkbookSet().Workbooks.OpenFromStream(Request.Files[0].InputStream);
                //var sheet = book.ActiveWorksheet;

                //var usedColumns = sheet.UsedRange.ColumnCount;
                //var usedRows = sheet.UsedRange.RowCount;


                //for (var row = 0; row < usedRows; row++)
                //{
                //    for (var col = 0; col < usedColumns; col++)
                //    {
                //        var iss = sheet.Cells[row, col].Text;
                //    }
                //}

                //book.Close();



                return(Json(new { success = true }));
            }

            //ПОКА ЗАГЛУШКА ВОЗВРАЩАЮЩАЯ УСПЕХ
            //После уточнения механизма загрузки данных будет реализовано
            return(Json(new { success = true }));
        }