Exemplo n.º 1
0
        public virtual DataTable QueryCallingLog(QueryFilter.Customer.CustomerCallingQueryFilter queryEntity, out int totalCount)
        {
            PagingInfoEntity  pagingEntity = SetPagingInfo(queryEntity);
            CustomDataCommand cmd          = DataCommandManager.CreateCustomDataCommandFromConfig("GetCallingList");

            using (DynamicQuerySqlBuilder sqlBuilder = new DynamicQuerySqlBuilder(
                       cmd.CommandText,
                       cmd,
                       pagingEntity,
                       "SysNo DESC"))
            {
                if (queryEntity.SystemNumber.HasValue)
                {
                    sqlBuilder.ConditionConstructor.AddCondition(
                        QueryConditionRelationType.AND,
                        "SysNo",
                        DbType.Int32,
                        "@SystemNumber",
                        QueryConditionOperatorType.Equal,
                        queryEntity.SystemNumber.Value);
                }
                else
                {
                    sqlBuilder.ConditionConstructor.AddCondition(
                        QueryConditionRelationType.AND,
                        "CustomerID", DbType.String, "@CustomerID",
                        QueryConditionOperatorType.Equal,
                        queryEntity.CustomerID);

                    sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND,
                                                                 "CustomerName", DbType.String, "@CustomerName",
                                                                 QueryConditionOperatorType.Like,
                                                                 queryEntity.CustomerName);

                    sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND,
                                                                 "Email", DbType.String, "@Email",
                                                                 QueryConditionOperatorType.Like,
                                                                 queryEntity.Email);

                    sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND,
                                                                 "Phone", DbType.String, "@Phone",
                                                                 QueryConditionOperatorType.Equal,
                                                                 queryEntity.PhoneORCellphone);

                    sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND,
                                                                 "Address", DbType.String, "@Address",
                                                                 QueryConditionOperatorType.Like,
                                                                 queryEntity.Address);

                    sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND,
                                                                 "a.Status", DbType.Int32, "@Status",
                                                                 QueryConditionOperatorType.Equal,
                                                                 queryEntity.CallingStatus);

                    sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND,
                                                                 "CallReason", DbType.Int32, "@CallReason",
                                                                 QueryConditionOperatorType.Equal,
                                                                 queryEntity.CallReason);

                    sqlBuilder.ConditionConstructor.AddCondition(
                        QueryConditionRelationType.AND,
                        "CreateDate",
                        DbType.DateTime,
                        "@CreateDateFrom",
                        QueryConditionOperatorType.MoreThanOrEqual,
                        queryEntity.CreateDateFrom);

                    sqlBuilder.ConditionConstructor.AddCondition(
                        QueryConditionRelationType.AND,
                        "CreateDate",
                        DbType.DateTime,
                        "@CreateDateTo",
                        QueryConditionOperatorType.LessThan,
                        queryEntity.CreateDateTo);

                    sqlBuilder.ConditionConstructor.AddCondition(
                        QueryConditionRelationType.AND,
                        "ReopenCount",
                        DbType.Int32,
                        "@ReopenCount",
                        QueryConditionOperatorType.Equal,
                        queryEntity.ReopenCount);
                }
                sqlBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    @"[LastEditUserSysNo]",
                    DbType.Int32,
                    "@LastUpdateUserSysNo",
                    QueryConditionOperatorType.Equal,
                    queryEntity.LastUpdateUserSysNo
                    );
                if (queryEntity.OperaterCallingTimes.HasValue && queryEntity.CallingTimes.HasValue)
                {
                    sqlBuilder.ConditionConstructor.AddCondition(
                        QueryConditionRelationType.AND,
                        @"(SELECT COUNT(1)
                                     FROM OverseaCustomerManagement.[dbo].Customer_CallingLog 
                                     WHERE 
                                         Customer_CallingSysNo=a.[SysNo]
                                    )",
                        DbType.Int32,
                        "@UsedTimes",
                        TransOperationSignType(queryEntity.OperaterCallingTimes.Value),
                        queryEntity.CallingTimes
                        );
                }

                sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND,
                                                             "OrderSysNo",
                                                             DbType.Int32,
                                                             "@OrderSysNo",
                                                             QueryConditionOperatorType.Equal,
                                                             queryEntity.OrderSysNo
                                                             );


                sqlBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "LastEditDate",
                    DbType.DateTime,
                    "@EndDateFrom",
                    QueryConditionOperatorType.MoreThanOrEqual,
                    queryEntity.FinishDateFrom);

                sqlBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "LastEditDate",
                    DbType.DateTime,
                    "@EndDateTo",
                    QueryConditionOperatorType.LessThan,
                    queryEntity.FinishDateTo);



                sqlBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "CloseDate",
                    DbType.DateTime,
                    "@CloseDateFrom",
                    QueryConditionOperatorType.MoreThanOrEqual,
                    queryEntity.CloseDateFrom);
                sqlBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "CloseDate",
                    DbType.DateTime,
                    "@CloseDateTo",
                    QueryConditionOperatorType.LessThan,
                    queryEntity.CloseDateTo);

                sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND,
                                                             "LogTitle",
                                                             DbType.String,
                                                             "@LogTitle",
                                                             QueryConditionOperatorType.LeftLike,
                                                             queryEntity.LogTitle
                                                             );

                sqlBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "CompanyCode", DbType.AnsiStringFixedLength, "@CompanyCode",
                    QueryConditionOperatorType.Equal,
                    queryEntity.CompanyCode);


                if (queryEntity.OperaterCallingHours.HasValue && queryEntity.CallingHours.HasValue)
                {
                    sqlBuilder.ConditionConstructor.AddCondition(
                        QueryConditionRelationType.AND,
                        "a.Status",
                        DbType.Int32,
                        "@Status",
                        QueryConditionOperatorType.Equal,
                        2);
                    sqlBuilder.ConditionConstructor.AddCondition(
                        QueryConditionRelationType.AND,
                        "UsedHours",
                        DbType.Int32,
                        "@UsedHours",
                        TransOperationSignType((OperationSignType)queryEntity.OperaterCallingHours.Value),
                        queryEntity.CallingHours.Value);
                }
                cmd.CommandText = sqlBuilder.BuildQuerySql();
                EnumColumnList list = new EnumColumnList();
                list.Add(17, typeof(CallsEventsStatus));
                list.Add(20, typeof(CallingReferenceType));
                DataTable dt = cmd.ExecuteDataTable(list);
                totalCount = Convert.ToInt32(cmd.GetParameterValue("@TotalCount"));
                return(dt);
            }
        }
Exemplo n.º 2
0
        public virtual DataTable QuerySOList(QueryFilter.Customer.CustomerCallingQueryFilter queryEntity, out int totalCount)
        {
            PagingInfoEntity  pagingEntity = SetPagingInfo(queryEntity);
            CustomDataCommand cmd          = null;

            if (!string.IsNullOrEmpty(queryEntity.OrderSysNo))
            {
                cmd = DataCommandManager.CreateCustomDataCommandFromConfig("QuerySOMasterForSO");
            }
            else
            {
                cmd = DataCommandManager.CreateCustomDataCommandFromConfig("QuerySOMaster");
            }
            using (DynamicQuerySqlBuilder queryBuilder = new DynamicQuerySqlBuilder(cmd.CommandText, cmd, pagingEntity, "sm.OrderDate DESC"))
            {
                queryBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND,
                                                               "sm.UpdateUserSysNo",
                                                               DbType.Int32,
                                                               "@UpdateUserSysNo",
                                                               QueryConditionOperatorType.Equal,
                                                               queryEntity.LastUpdateUserSysNo
                                                               );
                #region 特殊条件构造

                if (!string.IsNullOrEmpty(queryEntity.OrderSysNo) && queryEntity.OrderSysNo.Split('.').Length >= 2)
                {
                    string querySOList = queryEntity.OrderSysNo.Replace(".", ",");
                    queryBuilder.ConditionConstructor.AddSubQueryCondition(QueryConditionRelationType.AND,
                                                                           "sm.sysno",
                                                                           QueryConditionOperatorType.In,
                                                                           querySOList);
                }
                else if (!string.IsNullOrEmpty(queryEntity.OrderSysNo))
                {
                    cmd.AddInputParameter("@SONumber", DbType.Int32, queryEntity.OrderSysNo);
                }
                #endregion
                #region 动态拼装条件
                //queryBuilder.AddCondition(QueryConditionRelationType.AND,
                //                        "sm.sysno",
                //                        DbType.Int32,
                //                        "@SysNo",
                //                        QueryConditionOperatorType.Equal,
                //                        queryEntity.SystemNumber
                //                        );

                if (!string.IsNullOrEmpty(queryEntity.CustomerName))
                {
                    queryBuilder.ConditionConstructor.AddCustomCondition(QueryConditionRelationType.AND, "sm.receivename LIKE @ReceiveName");
                    cmd.AddInputParameter("@ReceiveName", DbType.String, string.Format("{0}%", queryEntity.CustomerName));
                }

                queryBuilder.ConditionConstructor.BeginGroupCondition(QueryConditionRelationType.AND);
                if (!string.IsNullOrEmpty(queryEntity.PhoneORCellphone))
                {
                    queryBuilder.ConditionConstructor.AddCustomCondition(QueryConditionRelationType.AND, "sm.receivephone LIKE @ReceivePhone");
                    cmd.AddInputParameter("@ReceivePhone", DbType.String, string.Format("{0}%", queryEntity.PhoneORCellphone));

                    queryBuilder.ConditionConstructor.AddCustomCondition(QueryConditionRelationType.AND, "sm.receivecellphone LIKE @ReceiveCellPhone");
                    cmd.AddInputParameter("@ReceiveCellPhone", DbType.String, string.Format("{0}%", queryEntity.PhoneORCellphone));
                }
                queryBuilder.ConditionConstructor.EndGroupCondition();

                queryBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND,
                                                               "sm.status",
                                                               DbType.Int32,
                                                               "@Status",
                                                               QueryConditionOperatorType.Equal,
                                                               queryEntity.SOStatus
                                                               );
                if (!string.IsNullOrEmpty(queryEntity.CustomerID))
                {
                    queryBuilder.ConditionConstructor.AddCustomCondition(QueryConditionRelationType.AND, "cm.CustomerID LIKE @CustomerID");
                    cmd.AddInputParameter("@CustomerID", DbType.String, string.Format("{0}%", queryEntity.CustomerID));
                }

                if (!string.IsNullOrEmpty(queryEntity.Address))
                {
                    queryBuilder.ConditionConstructor.AddCustomCondition(QueryConditionRelationType.AND, "sm.receiveaddress LIKE @ReceiveAddress");
                    cmd.AddInputParameter("@ReceiveAddress", DbType.String, string.Format("{0}%", queryEntity.Address));
                }

                queryBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND,
                                                               "sm.OrderDate",
                                                               DbType.DateTime,
                                                               "@OrderDateFrom",
                                                               QueryConditionOperatorType.MoreThanOrEqual,
                                                               queryEntity.CreateDateFrom
                                                               );

                queryBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND,
                                                               "sm.OrderDate",
                                                               DbType.DateTime,
                                                               "@OrderDateTo",
                                                               QueryConditionOperatorType.LessThan,
                                                               queryEntity.CreateDateTo
                                                               );

                queryBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "sm.CompanyCode", DbType.AnsiStringFixedLength, "@CompanyCode",
                    QueryConditionOperatorType.Equal,
                    queryEntity.CompanyCode);


                #endregion
                cmd.CommandText = queryBuilder.BuildQuerySql();
                EnumColumnList list = new EnumColumnList();
                list.Add(12, typeof(SOStatus));
                list.Add(18, typeof(FPCheckStatus));
                DataTable dt = cmd.ExecuteDataTable(list);
                totalCount = Convert.ToInt32(cmd.GetParameterValue("@TotalCount"));
                return(dt);
            }
        }
Exemplo n.º 3
0
        public virtual DataTable QueryComplainList(QueryFilter.Customer.CustomerCallingQueryFilter queryEntity, out int totalCount)
        {
            PagingInfoEntity  pagingEntity = SetPagingInfo(queryEntity);
            CustomDataCommand cmd          = DataCommandManager.CreateCustomDataCommandFromConfig("GetComplainList");

            using (DynamicQuerySqlBuilder sqlBuilder = new DynamicQuerySqlBuilder(
                       cmd.CommandText,
                       cmd,
                       pagingEntity,
                       "Complain.SysNo DESC"))
            {
                if (!string.IsNullOrEmpty(queryEntity.OrderSysNo) && queryEntity.OrderSysNo.Split('.').Length >= 2)
                {
                    string querySOList = queryEntity.OrderSysNo.Replace(".", ",");
                    sqlBuilder.ConditionConstructor.AddSubQueryCondition(QueryConditionRelationType.AND,
                                                                         "Complain.SOSysNo",
                                                                         QueryConditionOperatorType.In,
                                                                         querySOList);
                }
                else if (!string.IsNullOrEmpty(queryEntity.OrderSysNo))
                {
                    sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND,
                                                                 "Complain.SOSysNo",
                                                                 DbType.Int32,
                                                                 "@SOID",
                                                                 QueryConditionOperatorType.Equal,
                                                                 int.Parse(queryEntity.OrderSysNo)
                                                                 );
                }

                if (queryEntity.ReopenCount.HasValue && queryEntity.ReopenCount > -1 &&
                    !string.IsNullOrEmpty(queryEntity.OrderSysNo))
                {
                    sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND,
                                                                 "Complain.SOSysNo",
                                                                 DbType.Int32,
                                                                 "@SOID",
                                                                 QueryConditionOperatorType.Equal,
                                                                 int.Parse(queryEntity.OrderSysNo)
                                                                 );
                }

                //if (queryEntity.SystemNumber.HasValue)
                //{
                //    sqlBuilder.ConditionConstructor.AddCondition(
                //     QueryConditionRelationType.AND,
                //     "Complain.SysNo",
                //     DbType.Int32,
                //     "@SystemNumber",
                //     QueryConditionOperatorType.Equal,
                //     queryEntity.SystemNumber
                //     );
                //}

                if (queryEntity.ReopenCount.HasValue)
                {
                    if (queryEntity.ReopenCount == -1)
                    {
                        sqlBuilder.ConditionConstructor.AddCondition(
                            QueryConditionRelationType.AND,
                            "Complain.ReopenCount",
                            DbType.Int32,
                            "@ReopenCount",
                            QueryConditionOperatorType.MoreThan,
                            0
                            );
                    }
                    else
                    {
                        sqlBuilder.ConditionConstructor.AddCondition(
                            QueryConditionRelationType.AND,
                            "Complain.ReopenCount",
                            DbType.Int32,
                            "@ReopenCount",
                            QueryConditionOperatorType.Equal,
                            queryEntity.ReopenCount
                            );
                    }
                }
                //PRE环境加此条件查询时会报错,现将查询语句更改如下,有待验证 Norton.C.Li 2012.12.06
                sqlBuilder.ConditionConstructor.BeginGroupCondition(QueryConditionRelationType.AND);
                sqlBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "h.CreateUserSysNo",
                    DbType.Int32,
                    "@LastUpdateUserSysNo",
                    QueryConditionOperatorType.Equal,
                    queryEntity.LastUpdateUserSysNo);
                sqlBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.OR,
                    "Complain.OperatorSysNo",
                    DbType.Int32,
                    "@GetComplainList",
                    QueryConditionOperatorType.Equal,
                    queryEntity.LastUpdateUserSysNo);
                sqlBuilder.ConditionConstructor.EndGroupCondition();
                //sqlBuilder.ConditionConstructor.AddCondition(
                //              QueryConditionRelationType.AND,
                //              @"(SELECT TOP 1 UserSysNo FROM [OverseaCustomerManagement].[dbo].[UF_SOComplain_GetOperatorUserName] (Complain.SysNo,Complain.OperatorSysNo))",
                //              DbType.Int32,
                //              "@LastUpdateUserSysNo",
                //              QueryConditionOperatorType.Equal,
                //              queryEntity.LastUpdateUserSysNo
                //              );

                if (queryEntity.ComplainStatus.HasValue)
                {
                    if (!queryEntity.ComplainStatus.HasValue)
                    {
                        sqlBuilder.ConditionConstructor.AddCondition(
                            QueryConditionRelationType.AND,
                            "Complain.Status",
                            DbType.Int32,
                            "@Status",
                            QueryConditionOperatorType.NotEqual,
                            -1
                            );
                    }
                    else
                    {
                        sqlBuilder.ConditionConstructor.AddCondition(
                            QueryConditionRelationType.AND,
                            "Complain.Status",
                            DbType.Int32,
                            "@Status",
                            QueryConditionOperatorType.Equal,
                            queryEntity.ComplainStatus
                            );
                    }
                }

                if (!string.IsNullOrEmpty(queryEntity.CustomerID))
                {
                    sqlBuilder.ConditionConstructor.AddCustomCondition(QueryConditionRelationType.AND, "Customer.CustomerID LIKE @CustomerID");
                    cmd.AddInputParameter("@CustomerID", DbType.String, string.Format("{0}%", queryEntity.CustomerID));
                }

                if (!string.IsNullOrEmpty(queryEntity.CustomerName))
                {
                    sqlBuilder.ConditionConstructor.AddCustomCondition(QueryConditionRelationType.AND, "Customer.CustomerName LIKE @CustomerName");
                    cmd.AddInputParameter("@CustomerName", DbType.String, string.Format("{0}%", queryEntity.CustomerName));
                }


                sqlBuilder.ConditionConstructor.BeginGroupCondition(QueryConditionRelationType.AND);
                if (!string.IsNullOrEmpty(queryEntity.PhoneORCellphone))
                {
                    sqlBuilder.ConditionConstructor.AddCustomCondition(QueryConditionRelationType.AND, "Customer.Phone LIKE @ReceivePhone");
                    cmd.AddInputParameter("@ReceivePhone", DbType.String, string.Format("{0}%", queryEntity.PhoneORCellphone));

                    sqlBuilder.ConditionConstructor.AddCustomCondition(QueryConditionRelationType.AND, "Customer.CellPhone LIKE @ReceiveCellPhone");
                    cmd.AddInputParameter("@ReceiveCellPhone", DbType.String, string.Format("{0}%", queryEntity.PhoneORCellphone));
                }
                sqlBuilder.ConditionConstructor.EndGroupCondition();

                if (!string.IsNullOrEmpty(queryEntity.Address))
                {
                    sqlBuilder.ConditionConstructor.AddCustomCondition(QueryConditionRelationType.AND, "Customer.DwellAddress LIKE @ReceiveAddress");
                    cmd.AddInputParameter("@ReceiveAddress", DbType.String, string.Format("{0}%", queryEntity.Address));
                }

                sqlBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "Complain.CreateDate",
                    DbType.DateTime,
                    "@CreateDateFrom",
                    QueryConditionOperatorType.MoreThanOrEqual,
                    queryEntity.CreateDateFrom
                    );

                sqlBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "Complain.CreateDate",
                    DbType.DateTime,
                    "@CreateDateTo",
                    QueryConditionOperatorType.LessThan,
                    queryEntity.CreateDateTo
                    );

                sqlBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "h.CreateDate",
                    DbType.DateTime,
                    "@CloseDateFrom",
                    QueryConditionOperatorType.MoreThanOrEqual,
                    queryEntity.CloseDateFrom
                    );
                sqlBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "h.CreateDate",
                    DbType.DateTime,
                    "@CloseDateTo",
                    QueryConditionOperatorType.LessThan,
                    queryEntity.CloseDateTo
                    );


                sqlBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "Complain.CompanyCode", DbType.AnsiStringFixedLength, "@CompanyCode",
                    QueryConditionOperatorType.Equal,
                    queryEntity.CompanyCode);

                cmd.CommandText = sqlBuilder.BuildQuerySql();
                DataTable dt = cmd.ExecuteDataTable(7, typeof(SOComplainStatus));
                totalCount = Convert.ToInt32(cmd.GetParameterValue("@TotalCount"));
                return(dt);
            }
        }
Exemplo n.º 4
0
        public virtual DataTable QueryRMAList(QueryFilter.Customer.CustomerCallingQueryFilter queryEntity, out int totalCount)
        {
            PagingInfoEntity  pagingEntity = SetPagingInfo(queryEntity);
            CustomDataCommand cmd          = DataCommandManager.CreateCustomDataCommandFromConfig("GetRMAList");

            using (DynamicQuerySqlBuilder sqlBuilder = new DynamicQuerySqlBuilder(
                       cmd.CommandText,
                       cmd,
                       pagingEntity,
                       "C.CreateTime DESC"))
            {
                //  sqlBuilder.ConditionConstructor.AddCondition(
                //QueryConditionRelationType.AND,
                //"A.SysNo",
                //DbType.Int32,
                //"@SysNo ",
                //QueryConditionOperatorType.Equal,
                //queryEntity.SystemNumber
                //);

                if (queryEntity.ReopenCount.HasValue)
                {
                    if (queryEntity.ReopenCount == -1)
                    {
                        sqlBuilder.ConditionConstructor.BeginGroupCondition(QueryConditionRelationType.AND);
                        sqlBuilder.ConditionConstructor.AddCondition(
                            QueryConditionRelationType.AND,
                            "F.CurrentCount",
                            DbType.Int32,
                            "@CurrentCount",
                            QueryConditionOperatorType.MoreThan,
                            1);
                        sqlBuilder.ConditionConstructor.AddCondition(
                            QueryConditionRelationType.AND,
                            "F.RepeatProductCount",
                            DbType.Int32,
                            "@RepeatProductCount",
                            QueryConditionOperatorType.Equal,
                            1);
                        sqlBuilder.ConditionConstructor.EndGroupCondition();
                    }
                    else
                    {
                        sqlBuilder.ConditionConstructor.AddCondition(
                            QueryConditionRelationType.AND,
                            "F.CurrentCount",
                            DbType.Int32,
                            "@CurrentCount",
                            QueryConditionOperatorType.Equal,
                            queryEntity.ReopenCount + 1);
                    }
                    sqlBuilder.ConditionConstructor.AddCondition(
                        QueryConditionRelationType.AND,
                        "A.Status",
                        DbType.Int32,
                        "@RMAStatus1",
                        QueryConditionOperatorType.NotEqual,
                        0
                        );
                    sqlBuilder.ConditionConstructor.AddCondition(
                        QueryConditionRelationType.AND,
                        "A.Status",
                        DbType.Int32,
                        "@RMAStatus2",
                        QueryConditionOperatorType.NotEqual,
                        -1
                        );
                }
                sqlBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "G.CreateUserSysNo",
                    DbType.Int32,
                    "@LastUpdateUserSysNo",
                    QueryConditionOperatorType.Equal,
                    queryEntity.LastUpdateUserSysNo
                    );
                if (queryEntity.RMAStatus.HasValue)
                {
                    if (queryEntity.RMAStatus.Value == CallingRMAStatus.CheckProcessing)
                    {
                        if (!queryEntity.ReopenCount.HasValue)
                        {
                            sqlBuilder.ConditionConstructor.BeginGroupCondition(QueryConditionRelationType.AND);
                            sqlBuilder.ConditionConstructor.AddCondition(
                                QueryConditionRelationType.AND,
                                "F.CurrentCount",
                                DbType.Int32,
                                "@CurrentCount",
                                QueryConditionOperatorType.MoreThan,
                                1);
                            sqlBuilder.ConditionConstructor.AddCondition(
                                QueryConditionRelationType.AND,
                                "F.RepeatProductCount",
                                DbType.Int32,
                                "@RepeatProductCount",
                                QueryConditionOperatorType.Equal,
                                1);
                            sqlBuilder.ConditionConstructor.EndGroupCondition();

                            sqlBuilder.ConditionConstructor.AddCondition(
                                QueryConditionRelationType.AND,
                                "A.Status",
                                DbType.Int32,
                                "@RMAStatus1",
                                QueryConditionOperatorType.NotEqual,
                                0
                                );
                            sqlBuilder.ConditionConstructor.AddCondition(
                                QueryConditionRelationType.AND,
                                "A.Status",
                                DbType.Int32,
                                "@RMAStatus2",
                                QueryConditionOperatorType.NotEqual,
                                -1
                                );
                        }
                    }
                    else
                    {
                        sqlBuilder.ConditionConstructor.AddCondition(
                            QueryConditionRelationType.AND,
                            "A.Status",
                            DbType.Int32,
                            "@RMAStatus",
                            QueryConditionOperatorType.Equal,
                            queryEntity.RMAStatus
                            );
                    }
                }

                if (!string.IsNullOrEmpty(queryEntity.OrderSysNo) && queryEntity.OrderSysNo.Split('.').Length >= 2)
                {
                    string querySOList = queryEntity.OrderSysNo.Replace(".", ",");
                    sqlBuilder.ConditionConstructor.AddSubQueryCondition(QueryConditionRelationType.AND,
                                                                         "C.SOSysNo",
                                                                         QueryConditionOperatorType.In,
                                                                         querySOList);
                }
                else if (!string.IsNullOrEmpty(queryEntity.OrderSysNo))
                {
                    sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND,
                                                                 "C.SOSysNo",
                                                                 DbType.Int32,
                                                                 "@SOID",
                                                                 QueryConditionOperatorType.Equal,
                                                                 int.Parse(queryEntity.OrderSysNo)
                                                                 );
                }

                sqlBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "A.SysNo ",
                    DbType.Int32,
                    "@RegisterSysNo ",
                    QueryConditionOperatorType.Equal,
                    queryEntity.RegisterSysNo
                    );


                if (!string.IsNullOrEmpty(queryEntity.CustomerID))
                {
                    sqlBuilder.ConditionConstructor.AddCustomCondition(QueryConditionRelationType.AND, "D.CustomerID LIKE @CustomerID");
                    cmd.AddInputParameter("@CustomerID", DbType.String, string.Format("{0}%", queryEntity.CustomerID));
                }

                if (!string.IsNullOrEmpty(queryEntity.CustomerName))
                {
                    sqlBuilder.ConditionConstructor.AddCustomCondition(QueryConditionRelationType.AND, "D.CustomerName LIKE @CustomerName");
                    cmd.AddInputParameter("@CustomerName", DbType.String, string.Format("{0}%", queryEntity.CustomerName));
                }

                sqlBuilder.ConditionConstructor.BeginGroupCondition(QueryConditionRelationType.AND);
                if (!string.IsNullOrEmpty(queryEntity.PhoneORCellphone))
                {
                    sqlBuilder.ConditionConstructor.AddCustomCondition(QueryConditionRelationType.AND, "D.CellPhone LIKE @ReceivePhone");
                    cmd.AddInputParameter("@ReceivePhone", DbType.String, string.Format("{0}%", queryEntity.PhoneORCellphone));

                    sqlBuilder.ConditionConstructor.AddCustomCondition(QueryConditionRelationType.AND, "D.CellPhone LIKE @ReceiveCellPhone");
                    cmd.AddInputParameter("@ReceiveCellPhone", DbType.String, string.Format("{0}%", queryEntity.PhoneORCellphone));
                }
                sqlBuilder.ConditionConstructor.EndGroupCondition();

                if (!string.IsNullOrEmpty(queryEntity.Address))
                {
                    sqlBuilder.ConditionConstructor.AddCustomCondition(QueryConditionRelationType.AND, "D.DwellAddress LIKE @ReceiveAddress");
                    cmd.AddInputParameter("@ReceiveAddress", DbType.String, string.Format("{0}%", queryEntity.Address));
                }

                sqlBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "C.CreateTime",
                    DbType.DateTime,
                    "@CreateDateFrom",
                    QueryConditionOperatorType.MoreThanOrEqual,
                    queryEntity.CreateDateFrom
                    );

                sqlBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "C.CreateTime",
                    DbType.DateTime,
                    "@CreateDateTo",
                    QueryConditionOperatorType.LessThan,
                    queryEntity.CreateDateTo
                    );
                #region 关闭时间
                sqlBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "A.CloseTime",
                    DbType.DateTime,
                    "@CloseDateFrom",
                    QueryConditionOperatorType.MoreThanOrEqual,
                    queryEntity.CloseDateFrom
                    );

                sqlBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "A.CloseTime",
                    DbType.DateTime,
                    "@CloseDateTo",
                    QueryConditionOperatorType.LessThan,
                    queryEntity.CloseDateTo
                    );
                #endregion
                sqlBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "A.CompanyCode", DbType.AnsiStringFixedLength, "@CompanyCode",
                    QueryConditionOperatorType.Equal,
                    queryEntity.CompanyCode);

                cmd.CommandText = sqlBuilder.BuildQuerySql();
                DataTable dt = cmd.ExecuteDataTable(3, typeof(CallingRMAStatus));
                totalCount = Convert.ToInt32(cmd.GetParameterValue("@TotalCount"));
                return(dt);
            }
        }