|  | @@ -25,6 +25,7 @@ using System.ComponentModel.Design;
 | 
	
		
			
				|  |  |  using NetTaste;
 | 
	
		
			
				|  |  |  using OASystem.Domain.ViewModels.QiYeWeChat;
 | 
	
		
			
				|  |  |  using NPOI.POIFS.Crypt.Dsig;
 | 
	
		
			
				|  |  | +using EyeSoft.SequentialIdentity;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  namespace OASystem.API.Controllers
 | 
	
		
			
				|  |  |  {
 | 
	
	
		
			
				|  | @@ -2253,6 +2254,7 @@ namespace OASystem.API.Controllers
 | 
	
		
			
				|  |  |          private async Task<SalesYOYView> GroupSales(int companyId, int groupPickupUserId,string beginDt, string endDt)
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |              decimal thisSales = 0.00M, lastSales = 0.00M, yoy = 1.00M;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              var _view = new SalesYOYView();
 | 
	
		
			
				|  |  |              List<int> userIds = new List<int>();
 | 
	
		
			
				|  |  |              userIds = await GetUserIds(companyId, groupPickupUserId);
 | 
	
	
		
			
				|  | @@ -2270,101 +2272,59 @@ namespace OASystem.API.Controllers
 | 
	
		
			
				|  |  |                  };
 | 
	
		
			
				|  |  |                  return _view;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -             
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            string sql = string.Format($@"SELECT
 | 
	
		
			
				|  |  | -    CAST(SUM(Sales) AS decimal(12,2)) AS Sales
 | 
	
		
			
				|  |  | -FROM
 | 
	
		
			
				|  |  | -  (
 | 
	
		
			
				|  |  | -    SELECT
 | 
	
		
			
				|  |  | -      YEAR(di.VisitDate) AS [Year],
 | 
	
		
			
				|  |  | -      (
 | 
	
		
			
				|  |  | -        SELECT
 | 
	
		
			
				|  |  | -          CAST(SUM(ItemSumPrice * Rate) AS decimal(12,2))
 | 
	
		
			
				|  |  | -        FROM
 | 
	
		
			
				|  |  | -          Fin_ForeignReceivables
 | 
	
		
			
				|  |  | -        WHERE
 | 
	
		
			
				|  |  | -          IsDel = 0
 | 
	
		
			
				|  |  | -          AND AddingWay IN (0, 1, 2)
 | 
	
		
			
				|  |  | -          AND di.Id = Diid
 | 
	
		
			
				|  |  | -      ) AS Sales
 | 
	
		
			
				|  |  | -    FROM
 | 
	
		
			
				|  |  | -      Grp_DelegationInfo di
 | 
	
		
			
				|  |  | -    WHERE
 | 
	
		
			
				|  |  | -      di.IsDel = 0
 | 
	
		
			
				|  |  | -	  AND di.IsSure = 1
 | 
	
		
			
				|  |  | -      AND di.JietuanOperator IN (
 | 
	
		
			
				|  |  | -        SELECT
 | 
	
		
			
				|  |  | -          Id
 | 
	
		
			
				|  |  | -        FROM
 | 
	
		
			
				|  |  | -          Sys_Users
 | 
	
		
			
				|  |  | -        WITH
 | 
	
		
			
				|  |  | -          (NoLock)
 | 
	
		
			
				|  |  | -        WHERE
 | 
	
		
			
				|  |  | -          IsDel = 0 {userSqlWhere} 
 | 
	
		
			
				|  |  | -      )
 | 
	
		
			
				|  |  | -      AND di.VisitDate BETWEEN '{beginDt}' AND '{endDt}'
 | 
	
		
			
				|  |  | -  ) temp");
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            var newDB = _sqlSugar.CopyNew();
 | 
	
		
			
				|  |  | -            var salesData = newDB.SqlQueryable<SalesView>(sql).First();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            thisSales = salesData?.Sales ?? 0.00M;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              string lastBeginDt = Convert.ToDateTime(beginDt).AddYears(-1).ToString("yyyy-MM-dd HH:mm:ss"),
 | 
	
		
			
				|  |  |                     lastEndDt = Convert.ToDateTime(endDt).AddYears(-1).ToString("yyyy-MM-dd HH:mm:ss");
 | 
	
		
			
				|  |  | -            string lastSql = string.Format($@"SELECT
 | 
	
		
			
				|  |  | -    CAST(SUM(Sales) AS decimal(12,2)) AS Sales
 | 
	
		
			
				|  |  | +            string salesSql = string.Format(@"
 | 
	
		
			
				|  |  | +SELECT
 | 
	
		
			
				|  |  | +	'ThisSales' As [Name],
 | 
	
		
			
				|  |  | +	CAST(SUM(Sales) AS decimal(12,2)) As Sales
 | 
	
		
			
				|  |  |  FROM
 | 
	
		
			
				|  |  | -  (
 | 
	
		
			
				|  |  | -    SELECT
 | 
	
		
			
				|  |  | -      YEAR(di.VisitDate) AS [Year],
 | 
	
		
			
				|  |  | -      (
 | 
	
		
			
				|  |  | -        SELECT
 | 
	
		
			
				|  |  | -          CAST(SUM(ItemSumPrice * Rate) AS decimal(12,2))
 | 
	
		
			
				|  |  | -        FROM
 | 
	
		
			
				|  |  | -          Fin_ForeignReceivables
 | 
	
		
			
				|  |  | -        WHERE
 | 
	
		
			
				|  |  | -          IsDel = 0
 | 
	
		
			
				|  |  | -          AND AddingWay IN (0, 1, 2)
 | 
	
		
			
				|  |  | -          AND di.Id = Diid
 | 
	
		
			
				|  |  | -      ) AS Sales
 | 
	
		
			
				|  |  | -    FROM
 | 
	
		
			
				|  |  | -      Grp_DelegationInfo di
 | 
	
		
			
				|  |  | -    WHERE
 | 
	
		
			
				|  |  | -      di.IsDel = 0
 | 
	
		
			
				|  |  | -	  AND di.IsSure = 1
 | 
	
		
			
				|  |  | -      AND di.JietuanOperator IN (
 | 
	
		
			
				|  |  | -        SELECT
 | 
	
		
			
				|  |  | -          Id
 | 
	
		
			
				|  |  | -        FROM
 | 
	
		
			
				|  |  | -          Sys_Users
 | 
	
		
			
				|  |  | -        WITH
 | 
	
		
			
				|  |  | -          (NoLock)
 | 
	
		
			
				|  |  | -        WHERE
 | 
	
		
			
				|  |  | -          IsDel = 0 {userSqlWhere} 
 | 
	
		
			
				|  |  | -      )
 | 
	
		
			
				|  |  | -      AND di.Issure = 1
 | 
	
		
			
				|  |  | -      AND di.VisitDate BETWEEN '{lastBeginDt}' AND '{lastEndDt}'
 | 
	
		
			
				|  |  | -  ) temp");
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            var salesData1 = newDB.SqlQueryable<SalesView>(lastSql).First();
 | 
	
		
			
				|  |  | -            lastSales = salesData1?.Sales ?? 0.00M;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            if (lastSales != 0 && thisSales != 0) yoy = (thisSales - lastSales) / lastSales;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            _view = new SalesYOYView
 | 
	
		
			
				|  |  | -            {
 | 
	
		
			
				|  |  | +	(
 | 
	
		
			
				|  |  | +	SELECT di.VisitDate,
 | 
	
		
			
				|  |  | +		(SELECT  CAST(SUM(ItemSumPrice * Rate) AS decimal(12,2)) FROM Fin_ForeignReceivables
 | 
	
		
			
				|  |  | +		WHERE IsDel = 0 AND AddingWay IN (0, 1, 2)AND di.Id = Diid
 | 
	
		
			
				|  |  | +		) AS Sales
 | 
	
		
			
				|  |  | +	FROM
 | 
	
		
			
				|  |  | +		Grp_DelegationInfo di
 | 
	
		
			
				|  |  | +	WHERE di.IsDel = 0 AND di.IsSure = 1
 | 
	
		
			
				|  |  | +		AND di.JietuanOperator IN (SELECT Id FROM Sys_Users WITH (NoLock) WHERE IsDel = 0  {0})
 | 
	
		
			
				|  |  | +		AND di.VisitDate BETWEEN '{1}' AND '{2}'
 | 
	
		
			
				|  |  | +	) temp
 | 
	
		
			
				|  |  | +Union ALL
 | 
	
		
			
				|  |  | +SELECT
 | 
	
		
			
				|  |  | +	'LastSales' As [Name],
 | 
	
		
			
				|  |  | +	CAST(SUM(Sales) AS decimal(12,2)) As Sales
 | 
	
		
			
				|  |  | +FROM
 | 
	
		
			
				|  |  | +	(
 | 
	
		
			
				|  |  | +	SELECT di.VisitDate,
 | 
	
		
			
				|  |  | +		(SELECT  CAST(SUM(ItemSumPrice * Rate) AS decimal(12,2)) FROM Fin_ForeignReceivables
 | 
	
		
			
				|  |  | +		WHERE IsDel = 0 AND AddingWay IN (0, 1, 2)AND di.Id = Diid
 | 
	
		
			
				|  |  | +		) AS Sales
 | 
	
		
			
				|  |  | +	FROM
 | 
	
		
			
				|  |  | +		Grp_DelegationInfo di
 | 
	
		
			
				|  |  | +	WHERE di.IsDel = 0 AND di.IsSure = 1
 | 
	
		
			
				|  |  | +		AND di.JietuanOperator IN (SELECT Id FROM Sys_Users WITH (NoLock) WHERE IsDel = 0 {3})
 | 
	
		
			
				|  |  | +		AND di.VisitDate BETWEEN '{4}' AND '{5}'
 | 
	
		
			
				|  |  | +	) temp", userSqlWhere, beginDt, endDt, userSqlWhere, lastBeginDt, lastEndDt);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            var salesData = await _sqlSugar.SqlQueryable<SalesView>(salesSql).ToListAsync();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +             thisSales = salesData.Where(x => x.Name.Equals("ThisSales")).First()?.Sales ?? 0;
 | 
	
		
			
				|  |  | +             lastSales = salesData.Where(x => x.Name.Equals("LastSales")).First()?.Sales ?? 0;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if (lastSales != 0 && thisSales != 0) yoy = (thisSales - lastSales) / lastSales;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            return new SalesYOYView() {
 | 
	
		
			
				|  |  |                  thisYearSales = thisSales.ToString("#0.00"),
 | 
	
		
			
				|  |  |                  lastYearSales = lastSales.ToString("#0.00"),
 | 
	
		
			
				|  |  |                  yoy = yoy.ToString("#0.00")
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |              };
 | 
	
		
			
				|  |  | -            return _view;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          private class SalesView
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  | +            public string Name { get; set; }
 | 
	
		
			
				|  |  |              public decimal Sales { get; set; }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -2516,11 +2476,18 @@ FROM
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              else
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  | -                return Ok(JsonView(true, "操作成功!", new
 | 
	
		
			
				|  |  | +                if (_dto.PortType == 2 || _dto.PortType == 3)
 | 
	
		
			
				|  |  |                  {
 | 
	
		
			
				|  |  | -                    customerTypeData = new List<object> { },
 | 
	
		
			
				|  |  | -                    clientGradeData = new List<object> { }
 | 
	
		
			
				|  |  | -                }));
 | 
	
		
			
				|  |  | +                    return Ok(JsonView(true, "操作成功!", new List<object> { }));
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                else
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    return Ok(JsonView(true, "操作成功!", new
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        customerTypeData = new List<object> { },
 | 
	
		
			
				|  |  | +                        clientGradeData = new List<object> { }
 | 
	
		
			
				|  |  | +                    }));
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              string sql = "";
 | 
	
	
		
			
				|  | @@ -2566,7 +2533,6 @@ And VisitDate Between '{beginDt}' And  '{endDt}'
 | 
	
		
			
				|  |  |  Group By [Name]
 | 
	
		
			
				|  |  |  Order By Count Desc");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |                  var customerTypeData = await _sqlSugar.SqlQueryable<MarketingSalesGroupStatisticsView>(sql1).ToListAsync();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  string sql2 = string.Format(@$"Select 
 | 
	
	
		
			
				|  | @@ -2646,7 +2612,6 @@ Order By Count Desc");
 | 
	
		
			
				|  |  |  	And VisitDate Between '{beginDt}' And  '{endDt}'
 | 
	
		
			
				|  |  |  	Group By CnName");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |              RefAsync<int> total = 0;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              var rankingData = await _sqlSugar.SqlQueryable<MarketingSalesOrderRankingView>(sql).ToPageListAsync(_dto.PageIndex, _dto.PageSize, total);
 | 
	
	
		
			
				|  | @@ -2654,6 +2619,163 @@ Order By Count Desc");
 | 
	
		
			
				|  |  |              return Ok(JsonView(true, "操作成功!", rankingData, total));
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        /// <summary>
 | 
	
		
			
				|  |  | +        ///  市场部销售额
 | 
	
		
			
				|  |  | +        ///  团组列表、客户类型、客户等级、接单排名
 | 
	
		
			
				|  |  | +        ///  (增加团组查询条件 IsSure=1)
 | 
	
		
			
				|  |  | +        /// </summary>
 | 
	
		
			
				|  |  | +        /// <param name="_dto">市场部销售额请求dto</param>
 | 
	
		
			
				|  |  | +        /// <returns></returns>
 | 
	
		
			
				|  |  | +        [HttpPost("PostMarketingSalesGroupItem")]
 | 
	
		
			
				|  |  | +        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
 | 
	
		
			
				|  |  | +        public async Task<IActionResult> PostMarketingSalesGroupItem(MarketingSalesGroupListDto _dto)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            #region  参数验证
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            MarketingSalesStatisticsDtoFoalidator validationRules = new MarketingSalesStatisticsDtoFoalidator();
 | 
	
		
			
				|  |  | +            var validResult = await validationRules.ValidateAsync(_dto);
 | 
	
		
			
				|  |  | +            if (!validResult.IsValid)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                var errors = new StringBuilder();
 | 
	
		
			
				|  |  | +                foreach (var error in validResult.Errors) errors.AppendLine(error.ErrorMessage);
 | 
	
		
			
				|  |  | +                return Ok(JsonView(false, errors.ToString()));
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            PageFunAuthViewBase pageFunAuthView = new PageFunAuthViewBase();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            #region 页面操作权限验证
 | 
	
		
			
				|  |  | +            pageFunAuthView = await GeneralMethod.PostUserPageFuncDatas(_dto.UserId, _dto.PageId);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            if (pageFunAuthView.CheckAuth == 0) return Ok(JsonView(false, MsgTips.CheckAuth));
 | 
	
		
			
				|  |  | +            #endregion
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            #endregion
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            string userSql = "";
 | 
	
		
			
				|  |  | +            List<int> userIds = new List<int>();
 | 
	
		
			
				|  |  | +            userIds = await GetUserIds(_dto.CompanyId, _dto.GroupPickupUserId);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            if (userIds.Count <= 0)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                return Ok(JsonView(true, "操作成功!", new List<object> { }, 0));
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            else userSql = @$" And di.JietuanOperator In ({string.Join(",", userIds)})";
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            if (!string.IsNullOrEmpty(_dto.SearchCriteria))
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                userSql += string.Format(@$" AND di.TeamName Like '%{_dto.SearchCriteria}%'");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            string beginDt = $"{_dto.BeginDt} 00:00:00", endDt = $"{_dto.EndDt} 23:59:59";
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            #region 团组List
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            string sql = string.Format(@$"SELECT
 | 
	
		
			
				|  |  | +  ROW_NUMBER() OVER (
 | 
	
		
			
				|  |  | +    ORDER BY
 | 
	
		
			
				|  |  | +      CollectionDays
 | 
	
		
			
				|  |  | +  ) AS RowNumber,
 | 
	
		
			
				|  |  | +  *
 | 
	
		
			
				|  |  | +FROM
 | 
	
		
			
				|  |  | +  (
 | 
	
		
			
				|  |  | +    SELECT
 | 
	
		
			
				|  |  | +      di.Id,
 | 
	
		
			
				|  |  | +      di.TeamName,
 | 
	
		
			
				|  |  | +      di.ClientUnit,
 | 
	
		
			
				|  |  | +      di.ClientName,
 | 
	
		
			
				|  |  | +      di.VisitDate,
 | 
	
		
			
				|  |  | +      di.VisitPNumber,
 | 
	
		
			
				|  |  | +      di.JietuanOperator,
 | 
	
		
			
				|  |  | +      di.VisitEndDate,
 | 
	
		
			
				|  |  | +      (
 | 
	
		
			
				|  |  | +        SELECT
 | 
	
		
			
				|  |  | +          CAST(
 | 
	
		
			
				|  |  | +            COALESCE(SUM(ItemSumPrice * Rate), 0) AS DECIMAL(12, 2)
 | 
	
		
			
				|  |  | +          ) AS GroupSales
 | 
	
		
			
				|  |  | +        FROM
 | 
	
		
			
				|  |  | +          Fin_ForeignReceivables
 | 
	
		
			
				|  |  | +        WHERE
 | 
	
		
			
				|  |  | +          IsDel = 0
 | 
	
		
			
				|  |  | +          AND di.Id = Diid
 | 
	
		
			
				|  |  | +          AND AddingWay IN (0, 1, 2)
 | 
	
		
			
				|  |  | +      ) AS GroupSales,
 | 
	
		
			
				|  |  | +      u.CnName AS GroupPickupUser,
 | 
	
		
			
				|  |  | +      DATEADD(DAY, 7, di.VisitEndDate) AS CollectionDays
 | 
	
		
			
				|  |  | +    FROM
 | 
	
		
			
				|  |  | +      Grp_DelegationInfo di
 | 
	
		
			
				|  |  | +    WITH
 | 
	
		
			
				|  |  | +      (NoLock)
 | 
	
		
			
				|  |  | +      LEFT JOIN Sys_Users u ON di.JietuanOperator = u.Id
 | 
	
		
			
				|  |  | +    WHERE
 | 
	
		
			
				|  |  | +      di.Isdel = 0
 | 
	
		
			
				|  |  | +	  AND di.IsSure = 1 {userSql} 
 | 
	
		
			
				|  |  | +      AND VisitDate Between '{beginDt}' And  '{endDt}'
 | 
	
		
			
				|  |  | +  ) Temp ");
 | 
	
		
			
				|  |  | +            RefAsync<int> total = 0;
 | 
	
		
			
				|  |  | +            var groupData = await _sqlSugar.SqlQueryable<MarketingSalesGroupList>(sql).ToPageListAsync(_dto.PageIndex, _dto.PageSize, total);
 | 
	
		
			
				|  |  | +            #endregion
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            #region 客户类型、客户等级 统计
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            string sql1 = string.Format(@$"Select 
 | 
	
		
			
				|  |  | +	sd.[Name],
 | 
	
		
			
				|  |  | +	Count(*) As [Count]
 | 
	
		
			
				|  |  | +From Grp_DelegationInfo di
 | 
	
		
			
				|  |  | +Left Join Sys_SetData sd On di.TeamDid = sd.Id
 | 
	
		
			
				|  |  | +Where di.Isdel = 0 
 | 
	
		
			
				|  |  | +And IsSure = 1 {userSql} 
 | 
	
		
			
				|  |  | +And VisitDate Between '{beginDt}' And  '{endDt}'
 | 
	
		
			
				|  |  | +Group By [Name]
 | 
	
		
			
				|  |  | +Order By Count Desc");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            var customerTypeData = await _sqlSugar.SqlQueryable<MarketingSalesGroupStatisticsView>(sql1).ToListAsync();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            string sql2 = string.Format(@$"Select 
 | 
	
		
			
				|  |  | +	sd.[Name],
 | 
	
		
			
				|  |  | +	Count(*) As [Count]
 | 
	
		
			
				|  |  | +From Grp_DelegationInfo di
 | 
	
		
			
				|  |  | +Left Join Sys_SetData sd On di.TeamLevSId = sd.Id
 | 
	
		
			
				|  |  | +Where di.Isdel = 0 
 | 
	
		
			
				|  |  | +And IsSure = 1 {userSql} 
 | 
	
		
			
				|  |  | +And VisitDate Between '{beginDt}' And  '{endDt}'
 | 
	
		
			
				|  |  | +Group By [Name]
 | 
	
		
			
				|  |  | +Order By Count Desc");
 | 
	
		
			
				|  |  | +            var clientGradeData = await _sqlSugar.SqlQueryable<MarketingSalesGroupStatisticsView>(sql2).ToListAsync();
 | 
	
		
			
				|  |  | +            #endregion
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            #region 接单排名
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            string sql4 = string.Format(@$"Select 
 | 
	
		
			
				|  |  | +	ROW_NUMBER() Over(Order By Count(*) Desc) As RowNumber,
 | 
	
		
			
				|  |  | +	u.CnName As UserName,
 | 
	
		
			
				|  |  | +	Count(*) As [Count]
 | 
	
		
			
				|  |  | +	From Grp_DelegationInfo di
 | 
	
		
			
				|  |  | +	Left Join Sys_Users u On di.JietuanOperator = u.Id
 | 
	
		
			
				|  |  | +	Where di.Isdel = 0 
 | 
	
		
			
				|  |  | +    AND IsSure = 1 {userSql} 
 | 
	
		
			
				|  |  | +	And VisitDate Between '{beginDt}' And  '{endDt}'
 | 
	
		
			
				|  |  | +	Group By CnName");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            var rankingData = await _sqlSugar.SqlQueryable<MarketingSalesOrderRankingView>(sql4).ToListAsync();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            #endregion
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            var viewData = new {
 | 
	
		
			
				|  |  | +                groupData = groupData,
 | 
	
		
			
				|  |  | +                groupTotal = total,
 | 
	
		
			
				|  |  | +                customerTypeData = customerTypeData,
 | 
	
		
			
				|  |  | +                clientGradeData = clientGradeData,
 | 
	
		
			
				|  |  | +                rankingData = rankingData
 | 
	
		
			
				|  |  | +            };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            return Ok(JsonView(true, "操作成功!", viewData, total));
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          /// <summary>
 | 
	
		
			
				|  |  |          ///  市场部销售额
 | 
	
		
			
				|  |  |          ///  客户拜访列表
 |