public productDataModel GetProductByClassID(QueryProductListParameter parameter)
 {
     this.ExecuteSQL    = "SELECT * FROM dbo.product WHERE classid=@classid";
     this.DataParameter = new IDbDataParameter[]
     {
         new SqlParameter("@classid", SqlDbType.VarChar)
         {
             Value = parameter.ParentId
         }
     };
     return(this.ExecuteReadSqlToproductDataModel());
 }
 public int UpdateChildNumberByClassId(IDbTransaction tran, QueryProductListParameter parameter)
 {
     this.ExecuteSQL    = "UPDATE dbo.product SET childnumber=childnumber+1 WHERE classid=@classid";
     this.DataParameter = new IDbDataParameter[]
     {
         new SqlParameter("@classid", SqlDbType.VarChar)
         {
             Value = parameter.ParentId
         }
     };
     return(this.ExecuteNonQuery(tran));
 }
 public List <productDataModel> GetProductListByParentID(QueryProductListParameter parameter)
 {
     this.ExecuteSQL    = "SELECT * FROM dbo.product WHERE parentid=@parentid ORDER BY classid DESC";
     this.DataParameter = new IDbDataParameter[]
     {
         new SqlParameter("@parentid", SqlDbType.VarChar)
         {
             Value = parameter.ParentId
         }
     };
     return(this.ExecuteReadSqlToproductDataModelList());
 }
        public bool CheckProductIsExist(QueryProductListParameter parameter)
        {
            this.ExecuteSQL    = "SELECT * FROM dbo.product WHERE name=@name AND serialnumber=@serialnumber";
            this.DataParameter = new IDbDataParameter[]
            {
                new SqlParameter("@name", parameter.Name),
                new SqlParameter("@serialnumber", parameter.SerialNumber)
            };
            var product = this.ExecuteReadSqlToproductDataModel();

            return(product != null);
        }
        public PageData <productDataModel> GetQueryProductList(QueryProductListParameter parameter)
        {
            var isSearch = !(string.IsNullOrEmpty(parameter.Name) && string.IsNullOrEmpty(parameter.SerialNumber) && string.IsNullOrEmpty(parameter.Spelling) &&
                             parameter.Status == 0 && parameter.Deleted == 0);

            this.ExecuteSQL = string.Format("SELECT e.* FROM dbo.product e INNER JOIN dbo.department d ON e.depid=d.depid WHERE {0} e.name LIKE '%{1}%' AND e.pinyin LIKE '%{2}%' AND e.serialnumber LIKE '%{3}%' AND e.[status] IN({4}) AND e.deleted IN({5})",
                                            isSearch ? string.Empty : string.Format("e.parentid='{0}' AND", parameter.ParentId),
                                            parameter.Name,
                                            parameter.Spelling,
                                            parameter.SerialNumber,
                                            parameter.Status == (short)CommonStatus.Default ? string.Concat((short)CommonStatus.Used, ",", (short)CommonStatus.Stopped) : parameter.Status.ToString(),
                                            parameter.Deleted == (short)CommonDeleted.Default ? string.Concat((short)CommonDeleted.Deleted, ",", (short)CommonDeleted.NotDeleted) : parameter.Deleted.ToString()
                                            );
            return(this.ExecuteReadSqlToproductDataModelPageData("empid", parameter.PageIndex, parameter.PageSize, "classid ASC, sort DESC"));
        }
        public RespondWebViewData <List <RespondQueryProductViewModel> > GetQueryProductList(RequestWebViewData <RequestQueryProductViewModel> request)
        {
            if (request.data == null)
            {
                request.data = new RequestQueryProductViewModel();
            }
            return(MemcacheHelper.Get(new RequestMemcacheParameter <RespondWebViewData <List <RespondQueryProductViewModel> > >
            {
                CacheKey = string.Format(PRE_CACHE_KEY, "GetQueryProductList"),

                #region =================
                CallBackFunc = () =>
                {
                    var parameter = new QueryProductListParameter
                    {
                        PageSize = request.rows,
                        PageIndex = request.page,
                        Deleted = request.data.Deleted,
                        Name = request.data.Name,
                        ParentId = request.data.ParentId,
                        SerialNumber = request.data.SerialNumber,
                        Spelling = request.data.Spelling,
                        Status = request.data.Status
                    };
                    var pageDataList = this.mProductDataAccess.GetQueryProductList(parameter);
                    var respond = new RespondWebViewData <List <RespondQueryProductViewModel> >
                    {
                        total = pageDataList.DataCount,
                        rows = pageDataList.Datas.Select(item => new RespondQueryProductViewModel
                        {
                            Alias = item.alias,
                            BarCode = item.barcode,
                            Brand = item.brand,
                            ClassId = item.classid,
                            Comment = item.comment,
                            ChildCount = item.childcount,
                            CostMethod = item.costmethod,
                            Deleted = item.deleted,
                            MakeArea = item.makearea,
                            Modal = item.modal,
                            ParentId = item.parentid,
                            PermitCode = item.permitcode,
                            Spelling = item.pinyin,
                            ProId = item.proid,
                            Status = item.status,
                            SerialNumber = item.serialnumber,
                            SNLength = item.snlength,
                            SNManage = item.snmanage,
                            Sort = item.sort,
                            Standard = item.standard,
                            TaxRate = item.taxrate,
                            TradeMark = item.trademark,
                            UnitId = item.unitid,
                            ValidDay = item.validday,
                            ValidMonth = item.validmonth
                        }).ToList()
                    };
                    return respond;
                },

                #endregion

                ExpiresAt = DateTime.Now.AddMinutes(30),
                ManageCacheKeyForKey = ServiceMemcachedKeyManageConst.BasicProduct,
                ParamsKeys = new object[]
                {
                    request.data.ParentId,
                    request.page,
                    request.rows
                }
            }));
        }
        public RespondWebViewData <RespondAddProductViewModel> AddProduct(RequestWebViewData <RequestAddProductViewModel> request)
        {
            var rData = request.data;

            if (this.mProductDataAccess.CheckProductIsExist(new QueryProductListParameter {
                Name = rData.Name, SerialNumber = rData.SerialNumber
            }))
            {
                return(new RespondWebViewData <RespondAddProductViewModel>(WebViewErrorCode.ExistsDataInfo.ErrorCode, string.Format("名称为[{0}]或编号为[{1}]的商品已经存在", rData.Name, rData.SerialNumber)));
            }

            var respond = new RespondWebViewData <RespondAddProductViewModel>(WebViewErrorCode.Success);

            try
            {
                var product = this.mProductDataAccess.GetProductByClassID(new QueryProductListParameter {
                    ParentId = rData.ParentId
                });
                if (product == null)
                {
                    return(new RespondWebViewData <RespondAddProductViewModel>(WebViewErrorCode.NotExistsDataInfo));
                }
                if (product.deleted == (short)CommonDeleted.Deleted)
                {
                    return(new RespondWebViewData <RespondAddProductViewModel>(WebViewErrorCode.NotExistsDataInfo));
                }
                this.mDbConnection.ExecuteTransaction(tran =>
                {
                    var parameter = new QueryProductListParameter()
                    {
                        ParentId = rData.ParentId
                    };
                    var classId = string.Concat(rData.ParentId, "000001");
                    var depList = this.mProductDataAccess.GetProductListByParentID(parameter);
                    if (depList.Count > 0)
                    {
                        classId = BuildNewClassIdByLastClassId.GeneratedNewClassIdByLastClassId(depList[0].classid);
                    }

                    var data = new productDataModel
                    {
                        classid      = classId,
                        deleted      = (short)CommonDeleted.NotDeleted,
                        name         = rData.Name,
                        parentid     = rData.ParentId,
                        pinyin       = rData.Spelling,
                        serialnumber = rData.SerialNumber,
                        sort         = rData.Sort,
                        status       = (short)CommonStatus.Used
                    };
                    var addResult = this.mProductDataAccess.Add(data, tran);
                    if (addResult > 0)
                    {
                        this.mProductDataAccess.UpdateChildNumberByClassId(tran, parameter);
                    }
                    MemcacheHelper.RemoveBy(ServiceMemcachedKeyManageConst.BasicProduct);

                    //由于电脑配置不上mongodb固暂时先屏蔽掉此段mongodb的数据操作
                    //this.SaveMongoDbData("新增商品资料", request, respond, this.GetType());
                });
            }
            catch (Exception ex)
            {
                respond = new RespondWebViewData <RespondAddProductViewModel>(new ErrorCodeItem(WebViewErrorCode.Exception.ErrorCode, ex.Message));
            }
            return(respond);
        }