示例#1
0
        private void btnSearch_Click(object sender, RoutedEventArgs e)
        {
            if (PageView.QueryInfo.HasValidationErrors)
            {
                return;
            }
            currentType  = PageView.QueryInfo.SeachType.Value;
            newQueryView = PageView.DeepCopy();
            switch (currentType)
            {
            case VisitSeachType.Visited:
                this.dgVisited.Bind();
                break;

            case VisitSeachType.WaitingVisit:
                this.dgWaitingVisit.Bind();
                break;

            case VisitSeachType.FollowUpVisit:
                this.dgFollowUpVisit.Bind();
                break;

            case VisitSeachType.Maintenance:
                this.dgMaintenance.Bind();
                break;

            case VisitSeachType.FollowUpMaintenance:
                this.dgFollowUpMaintenance.Bind();
                break;
            }
        }
示例#2
0
        //普通查询
        private void IsNormalQuery(VisitSeachType type)
        {
            switch (type)
            {
            case VisitSeachType.Visited:
                newQueryView.QueryInfo.CallResult          = null;
                newQueryView.QueryInfo.DealStatus          = null;
                newQueryView.QueryInfo.ConsumeDesire       = null;
                newQueryView.QueryInfo.IsActivated         = null;
                newQueryView.QueryInfo.IsMaintain          = null;
                newQueryView.QueryInfo.LastEditorSysNo     = null;
                newQueryView.QueryInfo.FromVisitDate       = newQueryView.QueryInfo.ToVisitDate = null;
                newQueryView.QueryInfo.SpiderOrderDateFrom = newQueryView.QueryInfo.SpiderOrderDateTo = null;
                break;

            case VisitSeachType.FollowUpVisit:
                newQueryView.QueryInfo.CallResult      = null;
                newQueryView.QueryInfo.ConsumeDesire   = null;
                newQueryView.QueryInfo.LastEditorSysNo = null;
                newQueryView.QueryInfo.FromVisitDate   = newQueryView.QueryInfo.ToVisitDate = null;
                break;

            case VisitSeachType.Maintenance:
                newQueryView.QueryInfo.ConsumeDesire       = null;
                newQueryView.QueryInfo.LastEditorSysNo     = null;
                newQueryView.QueryInfo.FromVisitDate       = newQueryView.QueryInfo.ToVisitDate = null;
                newQueryView.QueryInfo.SpiderOrderDateFrom = newQueryView.QueryInfo.SpiderOrderDateTo = null;
                break;

            case VisitSeachType.FollowUpMaintenance:
                newQueryView.QueryInfo.CallResult          = null;
                newQueryView.QueryInfo.ConsumeDesire       = null;
                newQueryView.QueryInfo.LastEditorSysNo     = null;
                newQueryView.QueryInfo.FromVisitDate       = newQueryView.QueryInfo.ToVisitDate = null;
                newQueryView.QueryInfo.SpiderOrderDateFrom = newQueryView.QueryInfo.SpiderOrderDateTo = null;
                break;
            }
        }
示例#3
0
        public virtual DataTable Query(CustomerVisitQueryFilter filter, out int totalCount)
        {
            VisitSeachType searchType = VisitSeachType.WaitingVisit;

            if (filter.SeachType.HasValue)
            {
                searchType = Enum.TryParse <VisitSeachType>(filter.SeachType.Value.ToString(), out searchType) ? searchType : VisitSeachType.WaitingVisit;
            }
            PagingInfoEntity pagingEntity = new PagingInfoEntity();

            pagingEntity.SortField     = filter.PageInfo.SortBy;
            pagingEntity.MaximumRows   = filter.PageInfo.PageSize;
            pagingEntity.StartRowIndex = filter.PageInfo.PageIndex * filter.PageInfo.PageSize;

            CustomDataCommand command = null;

            QuerySorterHelper.SetSorterSQL(pagingEntity);
            if (searchType == VisitSeachType.Visited || searchType == VisitSeachType.FollowUpMaintenance)
            {
                //回访统计查询或者是需跟进维护查询
                command = DataCommandManager.CreateCustomDataCommandFromConfig("GetVisitCustomerByMaintenanceQuery");
                using (DynamicQuerySqlBuilder sqlBuilder = new DynamicQuerySqlBuilder(command.CommandText, command, pagingEntity, "VC.SysNo DESC"))
                {
                    AddTheBasicCustomerConditions(filter, command, sqlBuilder);
                    AddTheQueryVisitCustomerConditions(filter, command, sqlBuilder, searchType);
                    command.CommandText = sqlBuilder.BuildQuerySql();

                    ReplaceVisitOrderStrWhere(filter, command);
                }
            }
            else if (searchType == VisitSeachType.Maintenance)
            {
                command = DataCommandManager.CreateCustomDataCommandFromConfig("GetNeedMaintainCustomers");
                if (filter.PageInfo != null && !string.IsNullOrEmpty(pagingEntity.SortField))
                {
                    pagingEntity.SortField = "tempTable.Priority ASC," + pagingEntity.SortField;
                }

                using (DynamicQuerySqlBuilder sqlBuilder = new DynamicQuerySqlBuilder(
                           command.CommandText,
                           command,
                           pagingEntity,
                           "VC.LastCallTime DESC"))
                {
                    AddTheBasicCustomerConditions(filter, command, sqlBuilder);
                    AddTheQueryVisitCustomerConditions(filter, command, sqlBuilder, searchType);

                    if (string.IsNullOrEmpty(filter.CustomerSysNos))
                    {
                        filter.CustomerSysNos = "null";
                    }

                    sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND,
                                                                 "@CustomerSysNoList",
                                                                 DbType.AnsiString, "@CustomerSysNoList",
                                                                 QueryConditionOperatorType.Equal,
                                                                 filter.CustomerSysNos);

                    command.CommandText = sqlBuilder.BuildQuerySql();
                    ReplaceVisitOrderStrWhere(filter, command);
                }
            }
            else if (searchType == VisitSeachType.WaitingVisit)
            {
                //查询首次待会访的客户
                command = DataCommandManager.CreateCustomDataCommandFromConfig
                              ("GetFirstVisitingCustomers");
                if (filter.PageInfo != null && !string.IsNullOrEmpty(pagingEntity.SortField))
                {
                    pagingEntity.SortField = "tempTable.Priority ASC," + pagingEntity.SortField;
                }

                using (DynamicQuerySqlBuilder sqlBuilder = new DynamicQuerySqlBuilder(
                           command.CommandText,
                           command,
                           pagingEntity,
                           "tempTable.Priority ASC,cus.CustomerSysNo DESC"))
                {
                    int days = 0;
                    if (!int.TryParse(AppSettingManager.GetSetting("Customer", "VisitCustomerActiveNeedDays"), out days))
                    {
                        days = 180;
                    }

                    string sql = "(TVC.LastBuyDate > '1990-1-2' AND TVC.LastBuyDate < @LastCallTime AND TVC.LastCallTime < @LastCallTime)";

                    sqlBuilder.ConditionConstructor.AddCustomCondition(QueryConditionRelationType.AND, sql);
                    command.AddInputParameter("@LastCallTime", DbType.DateTime, DateTime.Now.AddDays(-days));

                    if (string.IsNullOrEmpty(filter.CustomerSysNos))
                    {
                        filter.CustomerSysNos = "null";
                    }

                    sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND,
                                                                 "@CustomerSysNoList",
                                                                 DbType.AnsiString, "@CustomerSysNoList",
                                                                 QueryConditionOperatorType.Equal,
                                                                 filter.CustomerSysNos);

                    AddCustomerConditionsForToVisit(filter, command, sqlBuilder);

                    command.CommandText = sqlBuilder.BuildQuerySql();
                }
            }
            else
            {
                //查询已经回访过的,但是仍然需要跟进的客户
                command = DataCommandManager.CreateCustomDataCommandFromConfig
                              ("GetNeedVisitingCustomers");
                using (DynamicQuerySqlBuilder sqlBuilder = new DynamicQuerySqlBuilder(
                           command.CommandText,
                           command,
                           pagingEntity,
                           "CS.RegisterTime DESC"))
                {
                    //需要跟进LastCallStatus = 0
                    sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND,
                                                                 "VC.LastCallStatus",
                                                                 DbType.Int32, "@LastCallStatus",
                                                                 QueryConditionOperatorType.Equal,
                                                                 0);

                    AddTheBasicCustomerConditions(filter, command, sqlBuilder);
                    if (filter.IsSpiderSearch)
                    {
                        AddTheQueryVisitCustomerConditions(filter,
                                                           command,
                                                           sqlBuilder,
                                                           searchType);
                    }
                    command.CommandText = sqlBuilder.BuildQuerySql();
                }
            }
            EnumColumnList ecList = new EnumColumnList();

            ecList.Add("Rank", typeof(CustomerRank));
            ecList.Add("LastCallStatus", typeof(VisitDealStatus));
            ecList.Add("LastMaintenanceStatus", typeof(VisitDealStatus));
            ecList.Add("NeedBuy", typeof(YNStatusThree));
            ecList.Add("IsActive", typeof(YNStatus));
            //ecList.Add("IsRMA", typeof(YNStatus));
            ecList.Add("LastCallReason", typeof(VisitCallResult));
            DataTable dt = command.ExecuteDataTable(ecList);

            totalCount = Convert.ToInt32(command.GetParameterValue("@TotalCount"));
            return(dt);
        }
示例#4
0
        private static void AddTheQueryVisitCustomerConditions(CustomerVisitQueryFilter filter, CustomDataCommand command,
                                                               DynamicQuerySqlBuilder sqlBuilder, VisitSeachType queryType)
        {
            if (queryType == VisitSeachType.WaitingVisit)//首次维护
            {
                sqlBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "VC.IsActive", DbType.Int32, "@IsActive",
                    QueryConditionOperatorType.Equal,
                    1);

                sqlBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "VC.IsRMA", DbType.Boolean, "@IsRMA",
                    QueryConditionOperatorType.Equal,
                    true);

                sqlBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "ISNULL(VC.LastMaintenanceStatus,-2)", DbType.Int32, "@LastMaintenanceStatus",
                    QueryConditionOperatorType.Equal,
                    -2);
            }
            if (queryType == VisitSeachType.FollowUpMaintenance)//需跟进维护
            {
                sqlBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "VC.IsActive", DbType.Int32, "@IsActive",
                    QueryConditionOperatorType.Equal,
                    1);

                sqlBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "VC.IsRMA", DbType.Boolean, "@IsRMA",
                    QueryConditionOperatorType.Equal,
                    true);
                sqlBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "ISNULL(VC.LastMaintenanceStatus,-2)", DbType.Int32, "@LastMaintenanceStatus",
                    QueryConditionOperatorType.Equal,
                    0);
            }
            if (filter.SeachType == (int)VisitSeachType.Visited)//回访统计
            {
                sqlBuilder.ConditionConstructor.BeginGroupCondition(QueryConditionRelationType.AND);

                if (filter.IsMaintain.HasValue)
                {
                    if (filter.IsMaintain.Value)
                    {
                        sqlBuilder.ConditionConstructor.AddCondition(
                            QueryConditionRelationType.OR,
                            "ISNULL(VC.LastMaintenanceStatus,-2)", DbType.Int32, "@LastCallStatus",
                            QueryConditionOperatorType.Equal,
                            filter.DealStatus);
                    }
                    else if (!filter.IsMaintain.Value)
                    {
                        sqlBuilder.ConditionConstructor.AddCondition(
                            QueryConditionRelationType.AND,
                            "VC.LastCallStatus", DbType.Int32, "@LastCallStatus",
                            QueryConditionOperatorType.Equal,
                            filter.DealStatus);
                    }
                }
                else
                {
                    sqlBuilder.ConditionConstructor.AddCondition(
                        QueryConditionRelationType.AND,
                        "VC.LastCallStatus", DbType.Int32, "@LastCallStatus",
                        QueryConditionOperatorType.Equal,
                        filter.DealStatus);

                    sqlBuilder.ConditionConstructor.AddCondition(
                        QueryConditionRelationType.OR,
                        "ISNULL(VC.LastMaintenanceStatus,-2)", DbType.Int32, "@LastCallStatus",
                        QueryConditionOperatorType.Equal,
                        filter.DealStatus);
                }

                sqlBuilder.ConditionConstructor.EndGroupCondition();
            }
            else
            {
                sqlBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "VC.LastMaintenanceStatus", DbType.Int32, "@LastMaintenanceStatus",
                    QueryConditionOperatorType.Equal,
                    filter.DealStatus);
            }

            sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND,
                                                         "VC.CreateDate", DbType.DateTime, "@VisitDateFrom",
                                                         QueryConditionOperatorType.MoreThanOrEqual,
                                                         filter.FromVisitDate);

            sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND,
                                                         "VC.CreateDate", DbType.DateTime, "@VisitDateTo",
                                                         QueryConditionOperatorType.LessThan,
                                                         filter.ToVisitDate);

            sqlBuilder.ConditionConstructor.AddCondition(
                QueryConditionRelationType.AND,
                "VC.IsActive", DbType.Int32, "@IsActive",
                QueryConditionOperatorType.Equal,
                filter.IsActivated);

            sqlBuilder.ConditionConstructor.AddCondition(
                QueryConditionRelationType.AND,
                "VC.NeedBuy", DbType.Int32, "@NeedBuy",
                QueryConditionOperatorType.Equal,
                filter.ConsumeDesire);

            if (filter.IsMaintain.HasValue)
            {
                if (filter.IsMaintain.Value)
                {
                    sqlBuilder.ConditionConstructor.AddCondition(
                        QueryConditionRelationType.AND,
                        "VC.LastMaintenanceStatus", DbType.Int32, "@LastMaintenanceStatus",
                        QueryConditionOperatorType.NotEqual,
                        -2);
                }
                else if (!filter.IsMaintain.Value)
                {
                    sqlBuilder.ConditionConstructor.AddCondition(
                        QueryConditionRelationType.AND,
                        "VC.LastMaintenanceStatus", DbType.Int32, "@LastMaintenanceStatus",
                        QueryConditionOperatorType.Equal,
                        -2);
                }
            }

            sqlBuilder.ConditionConstructor.AddCondition(
                QueryConditionRelationType.AND,
                "VC.LastEditUserSysNo", DbType.Int32, "@LastEditUserSysNo",
                QueryConditionOperatorType.Equal,
                filter.LastEditorSysNo);

            sqlBuilder.ConditionConstructor.AddInCondition <int>(
                QueryConditionRelationType.AND,
                "VC.LastCallReason", DbType.Int32,
                filter.CallResult);
        }