public SalePackageDomainModel GetSalePackageDomainModelByIdFromDatabase(string salePackageId)
        {
            if (salePackageId == null)
            {
                return(null);
            }

            SalePackageDomainModel result    = null;
            SalesPackageInfoModel  basicInfo = Retrieve(salePackageId);

            if (basicInfo != null)
            {
                string sql             = "SELECT * FROM [product_sales_group_info] WHERE sale_package_id = $sale_package_id$";
                ParameterCollection pc = new ParameterCollection();
                pc.Add("sale_package_id", salePackageId);

                DataTable dt = ExecuteDataTable(sql, pc);
                if (dt != null && dt.Rows.Count > 0)
                {
                    result                     = new SalePackageDomainModel();
                    result.BasicInfo           = basicInfo;
                    result.ProductCategoryList = ModelConvertFrom <ProductSalesGroupInfoModel>(dt, "product_category_id");
                }
            }

            return(result);
        }
        public bool CreateSalePackageInfo(SalesPackageInfoModel packageInfo, List <string> productCategoryList, out string message)
        {
            message = "操作失败,请与管理员联系";
            bool result = false;

            if (productCategoryList == null || productCategoryList.Count < 1)
            {
                message = "营销项目至少包含一个产品类型,请检查输入";
                return(false);
            }

            try
            {
                BeginTransaction();

                packageInfo.SalesPackageId = GetGuid();

                if (Create(packageInfo) == 1)
                {
                    ProductSalesGroupInfoModel groupInfo = null;

                    foreach (string catId in productCategoryList)
                    {
                        groupInfo = new ProductSalesGroupInfoModel();
                        groupInfo.ProductCategoryId = catId;
                        groupInfo.SaleGroupId       = GetGuid();
                        groupInfo.SalePackageId     = packageInfo.SalesPackageId;
                        groupInfo.SaleGroupName     = ProductCategoryInfoService.Instance.GetProductCategoryInfoById(catId).CategoryName;
                        groupInfo.SaleCityId        = packageInfo.SalesCityId;
                        groupInfo.BeginTime         = packageInfo.BeginTime;
                        groupInfo.EndTime           = packageInfo.EndTime;

                        if (ProductSalesGroupInfoService.Instance.Create(groupInfo) != 1)
                        {
                            RollbackTransaction();
                            message = "创建营销项目产品类型信息失败";
                            return(false);
                        }
                    }

                    CommitTransaction();
                    message = "成功创建营销项目信息";
                    result  = true;
                }
                else
                {
                    RollbackTransaction();
                    message = "创建营销项目失败,请与管理员联系";
                    result  = false;
                }
            }
            catch (Exception ex)
            {
                RollbackTransaction();
                LogUtil.Error("创建营销项目信息异常", ex);
                throw ex;
            }

            return(result);
        }
        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="pc">pc</param>
        /// <returns>影响的记录行数</returns>
        public int DeleteMultiple(ParameterCollection pc)
        {
            int ret = 0;

            SalesPackageInfoModel salespackageinfo = new SalesPackageInfoModel();

            ret = DbUtil.Current.DeleteMultiple(salespackageinfo, pc);

            return(ret);
        }
        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="salespackageinfo">实体</param>
        /// <param name="pc">pc</param>
        /// <returns>影响的记录行数</returns>
        public int UpdateMultiple(SalesPackageInfoModel salespackageinfo, ParameterCollection pc)
        {
            int ret = 0;

            salespackageinfo.ModifiedBy = SessionUtil.Current.UserId;
            salespackageinfo.ModifiedOn = DateTime.Now;

            ret = DbUtil.Current.UpdateMultiple(salespackageinfo, pc);

            return(ret);
        }
        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="salespackageinfo">实体</param>
        /// <returns>影响的记录行数</returns>
        public int Update(SalesPackageInfoModel salespackageinfo)
        {
            int ret = 0;

            salespackageinfo.ModifiedBy = SessionUtil.Current.UserId;
            salespackageinfo.ModifiedOn = DateTime.Now;

            ret = DbUtil.Current.Update(salespackageinfo);

            return(ret);
        }
        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="salespackageid"></param>
        /// <returns>影响的记录行数</returns>
        public int Delete(string salespackageid)
        {
            int ret = 0;

            SalesPackageInfoModel salespackageinfo = new SalesPackageInfoModel();

            salespackageinfo.SalesPackageId = salespackageid;

            ret = DbUtil.Current.Delete(salespackageinfo);

            return(ret);
        }
        /// <summary>
        /// 根据条件获取实体集合
        /// </summary>
        /// <param name="pc">pc</param>
        /// <param name="obc">obc</param>
        /// <returns>实体</returns>
        public List <SalesPackageInfoModel> RetrieveMultiple(ParameterCollection pc, OrderByCollection obc)
        {
            List <SalesPackageInfoModel> salespackageinfos = new List <SalesPackageInfoModel>();

            SalesPackageInfoModel salespackageinfo = new SalesPackageInfoModel();
            DataTable             dt = DbUtil.Current.RetrieveMultiple(salespackageinfo, pc, obc);

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                salespackageinfo = new SalesPackageInfoModel();
                salespackageinfo.ConvertFrom(dt, i);
                salespackageinfos.Add(salespackageinfo);
            }

            return(salespackageinfos);
        }
        /// <summary>
        /// 根据主键获取实体
        /// </summary>
        /// <param name="salespackageid"></param>
        /// <returns>实体</returns>
        public SalesPackageInfoModel Retrieve(string salespackageid)
        {
            SalesPackageInfoModel salespackageinfo = new SalesPackageInfoModel();

            salespackageinfo.SalesPackageId = salespackageid;

            DataTable dt = DbUtil.Current.Retrieve(salespackageinfo);

            if (dt.Rows.Count < 1)
            {
                return(null);
            }

            salespackageinfo.ConvertFrom(dt);

            return(salespackageinfo);
        }
        public JsonResult DoUpdateSalePackageInfo()
        {
            SalesPackageInfoModel package      = new SalesPackageInfoModel();
            CustomDataDomainModel SaleCityList = CustomDataInfoService.Instance.GetCustomDataDomainModelByName("销售城市", false);

            package.SalesPackageId   = GetFormData("packageId");
            package.BeginTime        = Convert.ToDateTime(GetFormData("beginTime"));
            package.EndTime          = Convert.ToDateTime(GetFormData("endTime"));
            package.Location         = GetFormData("location");
            package.MonthKeepPrice   = Convert.ToDecimal(GetFormData("monthKeep"));
            package.MonthReturnPrice = Convert.ToDecimal(GetFormData("monthReturns"));
            package.PackageName      = GetFormData("packageName");
            package.PriceTotal       = Convert.ToDecimal(GetFormData("totalPrice"));
            package.Remark           = GetFormData("remark");
            package.ReturnMonths     = Convert.ToInt32(GetFormData("returnMonths"));
            package.SalePrice        = Convert.ToDecimal(GetFormData("salePrice"));
            package.SalesCityId      = GetFormData("city");
            package.SalesCityName    = SaleCityList.ValueList[package.SalesCityId].DataValue;

            package.StagePrice  = Convert.ToDecimal(GetFormData("stagePrice"));
            package.Stages      = Convert.ToInt32(GetFormData("stages"));
            package.StoredPrice = Convert.ToDecimal(GetFormData("storedPrice"));

            if (Request.Form["chkProCat"] == null)
            {
                return(FailedJson("操作失败,请选择产品包包含的产品组成。"));
            }

            List <string> productCategoryIdList = Request.Form.GetValues("chkProCat").ToList();

            string message = "操作失败,请与管理员联系";

            if (SalesPackageInfoService.Instance.UpdateSalePackageInfo(package, productCategoryIdList, out message))
            {
                return(SuccessedJson(message, "BusinessCenter_SalePackageManager", "BusinessCenter_SalePackageManager", "closeCurrent", "/businesscenter/salepackagemanager"));
            }
            else
            {
                return(FailedJson(message));
            }
        }
        public bool UpdateSalePackageInfo(SalesPackageInfoModel packageInfo, List <string> productCategoryList, out string message)
        {
            message = "操作失败,请与管理员联系";
            bool result = false;

            if (productCategoryList == null || productCategoryList.Count < 1)
            {
                message = "营销项目至少包含一个产品类型,请检查输入";
                return(false);
            }

            try
            {
                BeginTransaction();

                if (Update(packageInfo) == 1)
                {
                    string sql             = "DELETE FROM [product_sales_group_info] WHERE sale_package_id = $sale_package_id$";
                    ParameterCollection pc = new ParameterCollection();
                    pc.Add("sale_package_id", packageInfo.SalesPackageId);

                    if (ExecuteNonQuery(sql, pc) >= 0)
                    {
                        ProductSalesGroupInfoModel groupInfo = null;
                        foreach (string catId in productCategoryList)
                        {
                            groupInfo = new ProductSalesGroupInfoModel();
                            groupInfo.ProductCategoryId = catId;
                            groupInfo.SaleGroupId       = GetGuid();
                            groupInfo.SalePackageId     = packageInfo.SalesPackageId;
                            groupInfo.SaleGroupName     = ProductCategoryInfoService.Instance.GetProductCategoryInfoById(catId).CategoryName;
                            groupInfo.SaleCityId        = packageInfo.SalesCityId;
                            groupInfo.BeginTime         = packageInfo.BeginTime;
                            groupInfo.EndTime           = packageInfo.EndTime;

                            if (ProductSalesGroupInfoService.Instance.Create(groupInfo) != 1)
                            {
                                RollbackTransaction();
                                message = "更新营销项目产品类型信息失败";
                                return(false);
                            }
                        }

                        CommitTransaction();
                        GetSalePackageDomainModelById(packageInfo.SalesPackageId, true);
                        message = "成功更新营销项目信息";
                        result  = true;
                    }
                    else
                    {
                        RollbackTransaction();
                        message = "更新营销项目产品类型信息失败,请与管理员联系";
                        result  = false;
                    }
                }
                else
                {
                    RollbackTransaction();
                    message = "更新营销项目失败,请与管理员联系";
                    result  = false;
                }
            }
            catch (Exception ex)
            {
                RollbackTransaction();
                LogUtil.Error("更新营销项目信息异常", ex);
                throw ex;
            }

            return(result);
        }
        // 在此添加你的代码...

        public bool ImportSalePackageFromExcel(DataSet ds, out string importLogs, out string message)
        {
            bool result = false;

            importLogs = message = "操作失败,请与管理员联系";

            if (ds == null && ds.Tables.Count == 0)
            {
                message = "Excel数据文件异常,请检查";
                return(false);
            }

            Dictionary <string, ProductCategoryInfoModel> productCategoryList = ProductCategoryInfoService.Instance.GetProductCategoryList(false);

            if (productCategoryList == null || productCategoryList.Count == 0)
            {
                message = "数据库中无产品类型信息,请检查";
                return(false);
            }

            ParameterCollection      pc           = new ParameterCollection();
            CustomDataDomainModel    SaleCityList = CustomDataInfoService.Instance.GetCustomDataDomainModelByName("销售城市", false);
            SalesPackageInfoModel    salePackInfo = null;
            ProductCategoryInfoModel proCatInfo   = null;
            List <string>            proCatList   = new List <string>();

            try
            {
                BeginTransaction();
                for (int t = 0; t < ds.Tables.Count; t++)
                {
                    if (ds.Tables[t].TableName.Contains("-") == false)
                    {
                        continue;
                    }

                    if (ds.Tables[t].TableName.Split('-')[0] != "营销计划")
                    {
                        continue;
                    }

                    string saleCityName = ds.Tables[t].TableName.Split('-')[1];
                    CustomDataValueDomainModel saleCityInfo = SaleCityList.GetCustomDataValueDomainByDataValue(saleCityName);
                    if (saleCityInfo == null)
                    {
                        RollbackTransaction();
                        message = string.Format("数据库中不存在销售城市为【{0}】的营销计划,数据导入失败", saleCityName);
                        return(false);
                    }

                    for (int i = 0; i < ds.Tables[t].Rows.Count; i++)
                    {
                        salePackInfo                  = new SalesPackageInfoModel();
                        salePackInfo.BeginTime        = Convert.ToDateTime(ds.Tables[t].Rows[i]["有效起始时间"]);
                        salePackInfo.EndTime          = Convert.ToDateTime(ds.Tables[t].Rows[i]["有效截止时间"]);
                        salePackInfo.Location         = ds.Tables[t].Rows[i]["产品定位"].ToString();
                        salePackInfo.MonthKeepPrice   = Convert.ToDecimal(ds.Tables[t].Rows[i]["每月补存"]);
                        salePackInfo.MonthReturnPrice = Convert.ToDecimal(ds.Tables[t].Rows[i]["每月返还"]);
                        salePackInfo.PackageName      = ds.Tables[t].Rows[i]["项目名称"].ToString();
                        salePackInfo.PriceTotal       = Convert.ToDecimal(ds.Tables[t].Rows[i]["业务总额"]);
                        salePackInfo.Remark           = ds.Tables[t].Rows[i]["备注信息"].ToString();
                        salePackInfo.ReturnMonths     = Convert.ToInt32(ds.Tables[t].Rows[i]["返还月数"]);
                        salePackInfo.SalePrice        = Convert.ToDecimal(ds.Tables[t].Rows[i]["购机金额"]);
                        salePackInfo.SalesCityId      = saleCityInfo.ValueId;
                        salePackInfo.SalesCityName    = saleCityInfo.DataValue;
                        salePackInfo.SalesPackageId   = GetGuid();
                        salePackInfo.StagePrice       = Convert.ToDecimal(ds.Tables[t].Rows[i]["每期金额"]);
                        salePackInfo.Stages           = Convert.ToInt32(ds.Tables[t].Rows[i]["分期数"]);
                        salePackInfo.Status           = 0;
                        salePackInfo.StoredPrice      = Convert.ToDecimal(ds.Tables[t].Rows[i]["预存话费"]);


                        proCatList.Clear();

                        string[] catNameList = ds.Tables[t].Rows[i]["包含产品"].ToString().Split(',');
                        if (catNameList == null || catNameList.Length == 0)
                        {
                            RollbackTransaction();
                            message = string.Format("销售城市为【{0}】的营销计划中,营销项目{1}中没有设置包含产品类型名称,数据导入失败", saleCityName, salePackInfo.PackageName);
                            return(false);
                        }


                        for (int j = 0; j < catNameList.Length; j++)
                        {
                            proCatInfo = ProductCategoryInfoService.Instance.GetProductCategoryInfoByName(catNameList[j]);
                            if (proCatInfo == null)
                            {
                                RollbackTransaction();
                                message = string.Format("销售城市为【{0}】的营销计划中,营销项目{1}中设置包含产品类型名称{2}不存在于数据库,数据导入失败", saleCityName, salePackInfo.PackageName, catNameList[j]);
                                return(false);
                            }

                            proCatList.Add(proCatInfo.ProductCategoryId);
                        }


                        if (SalesPackageInfoService.Instance.CreateSalePackageInfo(salePackInfo, proCatList, out message) == false)
                        {
                            RollbackTransaction();
                            message = string.Format("销售城市为【{0}】的营销计划中,营销项目{1}数据导入失败", saleCityName, salePackInfo.PackageName);
                            return(false);
                        }
                    }
                }

                CommitTransaction();
            }
            catch (Exception ex)
            {
                RollbackTransaction();
                LogUtil.Error("从Excel导入产品数据异常", ex);
                throw ex;
            }

            return(result);
        }