示例#1
0
        /// <summary>
        /// 订单导入
        /// </summary>
        /// <param name="dt"></param>
        /// <param name="dataResult"></param>
        /// <param name="errMessage"></param>
        /// <param name="importFile"></param>
        /// <returns></returns>
        public bool ImportOrder(SaleOrderImportFileEntity importFile, DataTable dt, out DataTable dataResult,
                                out string errMessage)
        {
            string userId = ManageProvider.Provider.Current().UserId;

            //构造导入返回结果表
            DataTable resultTable = new DataTable("Result");

            resultTable.Columns.Add("rowid", typeof(string));  //行号
            resultTable.Columns.Add("locate", typeof(string)); //位置
            resultTable.Columns.Add("reason", typeof(string)); //原因
            errMessage = string.Empty;
            bool isSuccess = false;

            if (dt != null && dt.Rows.Count > 0)
            {
                IDatabase database = DataFactory.Database();
                try
                {
                    List <SaleOrderImportItemEntity> lstEntities = new List <SaleOrderImportItemEntity>();
                    foreach (DataRow item in dt.Rows)
                    {
                        var importEntity = new SaleOrderImportItemEntity();
                        importEntity.Create();
                        //
                        importEntity.FileId      = importFile.FileId;
                        importEntity.ProductCode = item["商品编码"].ToString();
                        if (string.IsNullOrWhiteSpace(importEntity.ProductCode))
                        {
                            throw new Exception("商品编码不能为空");
                        }
                        importEntity.SourceOrderNo = item["外部单号"].ToString();
                        if (string.IsNullOrWhiteSpace(importEntity.SourceOrderNo))
                        {
                            throw new Exception("外部订单号不能为空");
                        }
                        //string OrderDate = item["制单日期"].ToString();
                        importEntity.OrderDate        = DateTime.Now;
                        importEntity.ReceiveContact   = item["联系人"].ToString();
                        importEntity.ReceivePhone     = item["固定电话"].ToString();
                        importEntity.ReceiveCellPhone = item["联系电话"].ToString();
                        importEntity.ReceiveZip       = item["邮编"].ToString();
                        importEntity.ExpressNum       = item["快递单号"].ToString();
                        importEntity.Province         = item["所在省"].ToString();
                        importEntity.City             = item["所在市"].ToString();
                        importEntity.County           = item["所在县/区"].ToString();
                        importEntity.ReceiveAddress   = item["详细地址"].ToString();
                        importEntity.Qty          = int.Parse(item["数量"].ToString());
                        importEntity.SellerNote   = item["卖家留言"].ToString();
                        importEntity.BuyerNote    = item["买家留言"].ToString();
                        importEntity.ShipTypeName = item["物流方式"].ToString();
                        importEntity.Remark       = item["备注"].ToString();

                        bool flag = _saleOrderBLL.IsExistSourceOrderNo(importEntity.SourceOrderNo);
                        if (flag)
                        {
                            throw new Exception(string.Format("外部单号{0}已存在,请作废后重新导入", importEntity.SourceOrderNo));
                        }

                        lstEntities.Add(importEntity);
                    }

                    lstEntities = lstEntities.OrderBy(a => a.SourceOrderNo).ToList();

                    var shipTypeList = _shipTypeBLL.GetList();

                    DbTransaction isOpenTrans = database.BeginTrans();

                    string sourceOrderNo = string.Empty;
                    string orderNo       = string.Empty;
                    List <SaleOrderEntity>     orderEntities     = new List <SaleOrderEntity>();
                    List <SaleOrderItemEntity> orderItemEntities = new List <SaleOrderItemEntity>();
                    foreach (SaleOrderImportItemEntity orderImportEntity in lstEntities)
                    {
                        var shipType = shipTypeList.Find(a => a.ShipTypeName == orderImportEntity.ShipTypeName);
                        if (shipType == null)
                        {
                            throw new Exception(string.Format("物流方式{0}不存在", orderImportEntity.ShipTypeName));
                        }

                        SaleOrderEntity orderEntity = new SaleOrderEntity();
                        var             select      = orderEntities.Where(i => i.ReceiveContact == orderImportEntity.ReceiveContact &&
                                                                          i.ReceivePhone == orderImportEntity.ReceivePhone
                                                                          &&
                                                                          i.ReceiveCellPhone == orderImportEntity.ReceiveCellPhone &&
                                                                          i.ReceiveZip == orderImportEntity.ReceiveZip &&
                                                                          i.Province == orderImportEntity.Province &&
                                                                          i.City == orderImportEntity.City &&
                                                                          i.County == orderImportEntity.County &&
                                                                          i.ReceiveAddress == orderImportEntity.ReceiveAddress &&
                                                                          i.WarehouseId == importFile.WarehouseId &&
                                                                          i.ShipTypeId == shipType.ShipTypeId &&
                                                                          i.ExpressNum == orderImportEntity.ExpressNum &&
                                                                          i.SellerNote == orderImportEntity.SellerNote &&
                                                                          i.BuyerNote == orderImportEntity.BuyerNote &&
                                                                          i.Remark == orderImportEntity.Remark);
                        if (select.Any())
                        {
                            orderEntity = select.First();
                            var otherSourceOrderNos = orderEntity.SourceOrderNo.Split(',').ToList();
                            if (!otherSourceOrderNos.Contains(orderImportEntity.SourceOrderNo))
                            {
                                otherSourceOrderNos.Add(orderImportEntity.SourceOrderNo);
                            }
                            orderEntity.SourceOrderNo = String.Join(",", otherSourceOrderNos.ToArray());
                        }
                        else
                        {
                            orderEntity.Create();
                            orderEntity.OrderId          = orderImportEntity.ItemId;
                            orderEntity.OrderNo          = _codeRuleBll.GetBillCode(userId, SaleOrderCodeName);
                            orderEntity.SourceOrderNo    = orderImportEntity.SourceOrderNo;
                            orderEntity.OrderDate        = DateTime.Now;
                            orderEntity.WarehouseId      = importFile.WarehouseId;
                            orderEntity.MerchantId       = importFile.MerchantId;
                            orderEntity.MerchantMallId   = importFile.MerchantMallId;
                            orderEntity.ShipTypeId       = shipType.ShipTypeId;
                            orderEntity.Province         = orderImportEntity.Province;
                            orderEntity.City             = orderImportEntity.City;
                            orderEntity.County           = orderImportEntity.County;
                            orderEntity.ReceiveAddress   = orderImportEntity.ReceiveAddress;
                            orderEntity.ReceiveContact   = orderImportEntity.ReceiveContact;
                            orderEntity.ReceivePhone     = orderImportEntity.ReceivePhone;
                            orderEntity.ReceiveCellPhone = orderImportEntity.ReceiveCellPhone;
                            orderEntity.ReceiveZip       = orderImportEntity.ReceiveZip;
                            orderEntity.SellerNote       = orderImportEntity.SellerNote;
                            orderEntity.BuyerNote        = orderImportEntity.BuyerNote;
                            orderEntity.ExpressNum       = orderImportEntity.ExpressNum;
                            orderEntity.City             = orderImportEntity.City;
                            orderEntity.Remark           = orderImportEntity.Remark;
                            orderEntities.Add(orderEntity);

                            _codeRuleBll.OccupyBillCode(ManageProvider.Provider.Current().UserId, SaleOrderCodeName,
                                                        isOpenTrans);

                            sourceOrderNo = orderImportEntity.SourceOrderNo;
                            orderNo       = orderEntity.OrderNo;
                        }

                        var product = _productBLL.GetProductByCode(orderImportEntity.ProductCode);
                        if (product == null)
                        {
                            throw new Exception(string.Format("商品编号{0}不存在", orderImportEntity.ProductCode));
                        }

                        var saleOrderItem = new SaleOrderItemEntity();
                        saleOrderItem.Create();
                        saleOrderItem.OrderId       = orderEntity.OrderId;
                        saleOrderItem.OrderNo       = orderNo;
                        saleOrderItem.ProductId     = product.ProductId;
                        saleOrderItem.Code          = product.Code;
                        saleOrderItem.ProductName   = product.ProductName;
                        saleOrderItem.Weight        = product.Weight;
                        saleOrderItem.Volume        = product.Volume;
                        saleOrderItem.Specification = product.Specification;
                        saleOrderItem.BaseUnit      = product.BaseUnit;
                        saleOrderItem.BarCode       = product.BarCode;
                        saleOrderItem.Price         = product.Price;
                        saleOrderItem.Qty           = orderImportEntity.Qty;

                        orderItemEntities.Add(saleOrderItem);
                    }


                    database.Insert(importFile);
                    foreach (SaleOrderImportItemEntity orderImportEntity in lstEntities)
                    {
                        database.Insert(orderImportEntity, isOpenTrans);
                    }

                    foreach (SaleOrderEntity orderImportEntity in orderEntities)
                    {
                        database.Insert(orderImportEntity, isOpenTrans);
                    }

                    foreach (SaleOrderItemEntity orderImportEntity in orderItemEntities)
                    {
                        database.Insert(orderImportEntity, isOpenTrans);
                    }

                    database.Commit();
                    isSuccess = true;
                }
                catch (Exception ex)
                {
                    database.Rollback();
                    BaseSysLogBll.Instance.WriteLog("", OperationType.Add, "-1", "异常错误:" + ex.Message);
                    isSuccess  = false;
                    errMessage = ex.Message;
                }
            }
            dataResult = resultTable;
            return(isSuccess);
        }
示例#2
0
        /// <summary>
        /// 订单导入
        /// </summary>
        /// <returns></returns>
        public ActionResult SubmitImportOrder()
        {
            bool   isSuccess  = false;           //导入状态
            string errMessage = string.Empty;
            var    dataResult = new DataTable(); //导入错误记录表

            try
            {
                string WarehouseId = Request.Form["WarehouseId"];
                if (string.IsNullOrEmpty(WarehouseId))
                {
                    throw new Exception("上传文件失败:请选择默认出货仓库");
                }
                string MerchantId = HttpContext.Request.Form["MerchantId"];
                if (string.IsNullOrEmpty(MerchantId))
                {
                    throw new Exception("上传文件失败:请选择订单所属商户");
                }
                string MerchantMallId = HttpContext.Request.Form["MerchantMallId"];
                if (string.IsNullOrEmpty(MerchantMallId))
                {
                    throw new Exception("上传文件失败:请选择订单所属店铺");
                }

                HttpFileCollectionBase files = Request.Files;
                HttpPostedFileBase     file  = files["filePath"];//获取上传的文件
                if (file != null && file.FileName != "")
                {
                    string fullname  = file.FileName;
                    var    extension = System.IO.Path.GetExtension(fullname);
                    if (extension != null)
                    {
                        string fileType = extension.ToLower();
                        if (fileType == ".xls" || fileType == ".xlsx")
                        {
                            string fileId   = Guid.NewGuid().ToString();
                            string filename = fileId + fileType;

                            bool flag = UploadHelper.FileUpload(file, Server.MapPath("~/UploadFile/ImportOrder/"),
                                                                filename, out errMessage);
                            if (flag)
                            {
                                SaleOrderImportFileEntity importFile = new SaleOrderImportFileEntity();
                                importFile.Create();
                                importFile.FileId         = fileId;
                                importFile.WarehouseId    = WarehouseId;
                                importFile.MerchantId     = MerchantId;
                                importFile.MerchantMallId = MerchantMallId;
                                importFile.FileName       = fullname;

                                DataTable dt = ImportExcel.ImportExcelFile(Server.MapPath("~/UploadFile/ImportOrder/") + filename);
                                flag = _orderService.ImportOrder(importFile, dt, out dataResult, out errMessage);
                                if (flag)
                                {
                                    isSuccess = true;
                                }
                            }
                            else
                            {
                                throw new Exception("订单导入失败:" + errMessage);
                            }
                        }
                        else
                        {
                            throw new Exception("订单导入失败:文件格式不正确");
                        }
                    }
                    else
                    {
                        throw new Exception("订单导入失败:文件格式不正确");
                    }
                }
                else
                {
                    throw new Exception("请选择上传文件");
                }
            }
            catch (Exception ex)
            {
                BaseSysLogBll.Instance.WriteLog("", OperationType.Add, "-1", "异常错误:" + ex.Message);
                errMessage = ex.Message;
                isSuccess  = false;
            }

            if (dataResult.Rows.Count > 0)
            {
                isSuccess = false;
            }
            var data = new
            {
                status  = isSuccess ? "true" : "false",
                result  = dataResult,
                message = errMessage
            };

            return(Content(data.ToJson()));
        }