|
@@ -60,7 +60,6 @@ namespace OASystem.API.Controllers
|
|
|
_visitingClientsRep = visitingClientsRep;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
#region 团组报表
|
|
|
|
|
|
/// <summary>
|
|
@@ -2073,20 +2072,18 @@ namespace OASystem.API.Controllers
|
|
|
.Select(it => new { id = it.Id, name = it.CompanyName })
|
|
|
.ToList();
|
|
|
List<int> companyIds = companyData.Select(it => it.id).ToList();
|
|
|
- //查询所有公司的市场部
|
|
|
- var depData = _sqlSugar.Queryable<Sys_Department>().Where(it => it.IsDel == 0 && companyIds.Contains(it.CompanyId) && it.DepName.Contains("市场部"))
|
|
|
- .Select(it => new { it.Id, it.CompanyId, it.DepName })
|
|
|
- .ToList();
|
|
|
- List<int> depIds = depData.Select(it => it.Id).ToList();
|
|
|
|
|
|
- //
|
|
|
+ List<int> pickGroupUserIds = _sqlSugar.Queryable<Grp_DelegationInfo>().Where(it => it.IsDel == 0)
|
|
|
+ .Select(it => it.JietuanOperator )
|
|
|
+ .ToList();
|
|
|
+
|
|
|
//var jobData = _sqlSugar.Queryable<Sys_JobPost>().Where(it => it.IsDel == 0 && companyIds.Contains(it.CompanyId) && (it.JobName.Contains("经理") || it.JobName.Contains("主管")))
|
|
|
// .Select(it => new { it.Id, it.CompanyId, it.DepId, it.JobName })
|
|
|
// .ToList();
|
|
|
//List<int> jobIds = jobData.Select(it => it.Id).ToList();
|
|
|
//(depIds.Contains(it.DepId) || jobIds.Contains(it.JobPostId)
|
|
|
//userId = 21
|
|
|
- var userData = _sqlSugar.Queryable<Sys_Users>().Where(it => it.IsDel == 0 && (depIds.Contains(it.DepId) || it.Id==21))
|
|
|
+ var userData = _sqlSugar.Queryable<Sys_Users>().Where(it => it.IsDel == 0 && (pickGroupUserIds.Contains(it.Id) || it.Id == 21))
|
|
|
.Select(it => new { id = it.Id, companyId = it.CompanyId, name = it.CnName })
|
|
|
.ToList();
|
|
|
|
|
@@ -2219,6 +2216,32 @@ namespace OASystem.API.Controllers
|
|
|
return Ok(JsonView(true, "操作成功!", await GroupSales(_dto.CompanyId, _dto.GroupPickupUserId, beginDt, endDt)));
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ private async Task<List<int>> GetUserIds(int companyId, int groupPickupUserId)
|
|
|
+ {
|
|
|
+ //全部人员Id
|
|
|
+ //查询所有公司的市场部
|
|
|
+ List<int> pickGroupIds = _sqlSugar.Queryable<Grp_DelegationInfo>().Where(it => it.IsDel == 0).Select(it => it.JietuanOperator).Distinct().ToList();
|
|
|
+ List<int> userIds = new List<int>();
|
|
|
+ var userDatas = await _sqlSugar.Queryable<Sys_Users>()
|
|
|
+ .InnerJoin<Sys_Company>((u, c) => u.CompanyId == c.Id)
|
|
|
+ .Where((u, c) => u.IsDel == 0 && pickGroupIds.Contains( u.Id))
|
|
|
+ .Select((u, c) => new { u.Id, u.CompanyId, u.CnName })
|
|
|
+ .ToListAsync();
|
|
|
+
|
|
|
+ userIds = userDatas.Select(it => it.Id).ToList();
|
|
|
+ if (companyId > 0)
|
|
|
+ {
|
|
|
+ userIds = userDatas.Where(it => it.CompanyId == companyId).Select(it => it.Id).ToList();
|
|
|
+ }
|
|
|
+ if (groupPickupUserId > 0)
|
|
|
+ {
|
|
|
+ userIds = userDatas.Where(it => it.Id == groupPickupUserId).Select(it => it.Id).ToList();
|
|
|
+ }
|
|
|
+
|
|
|
+ return userIds;
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 计算团组销售额
|
|
|
/// </summary>
|
|
@@ -2227,14 +2250,19 @@ namespace OASystem.API.Controllers
|
|
|
/// <param name="beginDt"></param>
|
|
|
/// <param name="endDt"></param>
|
|
|
/// <returns></returns>
|
|
|
- private async Task<SalesYOYView> GroupSales(int companyId, int groupPickupUserId, string beginDt, string endDt)
|
|
|
+ private async Task<SalesYOYView> GroupSales(int companyId, int groupPickupUserId,string beginDt, string endDt)
|
|
|
{
|
|
|
- decimal thisSales = 0.00M, lastSales = 0.00M, yoy = 0.00M;
|
|
|
+ decimal thisSales = 0.00M, lastSales = 0.00M, yoy = 1.00M;
|
|
|
var _view = new SalesYOYView();
|
|
|
- //团组查询条件增加 isSure=1
|
|
|
+ List<int> userIds = new List<int>();
|
|
|
+ userIds = await GetUserIds(companyId, groupPickupUserId);
|
|
|
string userSqlWhere = "";
|
|
|
- if (companyId > 0) userSqlWhere += string.Format($" And CompanyId={companyId}");
|
|
|
- if (groupPickupUserId > 0) userSqlWhere += string.Format($" And Id={groupPickupUserId}");
|
|
|
+ if (userIds.Count > 0)
|
|
|
+ {
|
|
|
+ userSqlWhere = string.Format($" And Id IN ({string.Join(',', userIds)})");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
string sql = string.Format($@"SELECT
|
|
|
CAST(SUM(Sales) AS decimal(12,2)) AS Sales
|
|
|
FROM
|
|
@@ -2307,18 +2335,13 @@ FROM
|
|
|
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 < 1 || thisSales < 1)
|
|
|
- {
|
|
|
- thisSales = 1.00M;
|
|
|
- lastSales = 1.00M;
|
|
|
- }
|
|
|
-
|
|
|
if (lastSales != 0 && thisSales != 0) yoy = (thisSales - lastSales) / lastSales;
|
|
|
|
|
|
_view = new SalesYOYView
|
|
@@ -2378,30 +2401,7 @@ FROM
|
|
|
|
|
|
string userSql = "";
|
|
|
List<int> userIds = new List<int>();
|
|
|
- //全部人员Id
|
|
|
- //查询所有公司的市场部
|
|
|
-
|
|
|
- var userDatas = await _sqlSugar.Queryable<Sys_Users>()
|
|
|
- .InnerJoin<Sys_Company>((u, c) => u.CompanyId == c.Id)
|
|
|
- .InnerJoin<Sys_Department>((u, c, d) => u.DepId == d.Id)
|
|
|
- .Where((u, c, d) => u.IsDel == 0 && (u.Id == 21 || d.DepName.Contains("市场部")))
|
|
|
- .Select((u, c, d) => new { u.Id ,u.CompanyId,u.CnName})
|
|
|
- .ToListAsync();
|
|
|
-
|
|
|
-
|
|
|
- if (_dto.CompanyId > 0)
|
|
|
- {
|
|
|
- userIds = userDatas.Where(it => it.CompanyId == _dto.CompanyId).Select(it => it.Id).ToList();
|
|
|
-
|
|
|
- //userIds = _sqlSugar.Queryable<Sys_Users>().Where(it => it.IsDel == 0 && it.CompanyId == _dto.CompanyId).Select(it => it.Id).ToList();
|
|
|
- }
|
|
|
-
|
|
|
- if (_dto.GroupPickupUserId > 0)
|
|
|
- {
|
|
|
- userIds = userDatas.Where(it => it.Id == _dto.GroupPickupUserId).Select(it => it.Id).ToList();
|
|
|
- }
|
|
|
-
|
|
|
- userIds = userDatas.Select(it => it.Id).ToList();
|
|
|
+ userIds = await GetUserIds(_dto.CompanyId, _dto.GroupPickupUserId);
|
|
|
|
|
|
if (userIds.Count > 0)
|
|
|
{
|
|
@@ -2496,6 +2496,13 @@ FROM
|
|
|
#endregion
|
|
|
|
|
|
string beginDt = $"{_dto.BeginDt} 00:00:00", endDt = $"{_dto.EndDt} 23:59:59";
|
|
|
+ List<int> userIds = await GetUserIds(_dto.CompanyId, _dto.GroupPickupUserId);
|
|
|
+
|
|
|
+ string userSql = "";
|
|
|
+ if (userIds.Count > 0)
|
|
|
+ {
|
|
|
+ userSql = string.Format(@$" AND JietuanOperator IN ({string.Join(",",userIds)})");
|
|
|
+ }
|
|
|
|
|
|
string sql = "";
|
|
|
|
|
@@ -2507,6 +2514,7 @@ FROM
|
|
|
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");
|
|
@@ -2519,6 +2527,7 @@ Order By Count Desc");
|
|
|
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");
|
|
@@ -2533,6 +2542,7 @@ Order By Count Desc");
|
|
|
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");
|
|
@@ -2546,6 +2556,7 @@ Order By Count Desc");
|
|
|
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");
|
|
@@ -2597,6 +2608,14 @@ Order By Count Desc");
|
|
|
|
|
|
string beginDt = $"{_dto.BeginDt} 00:00:00", endDt = $"{_dto.EndDt} 23:59:59";
|
|
|
|
|
|
+ List<int> userIds = await GetUserIds(_dto.CompanyId, _dto.GroupPickupUserId);
|
|
|
+
|
|
|
+ string userSql = "";
|
|
|
+ if (userIds.Count > 0)
|
|
|
+ {
|
|
|
+ userSql = string.Format(@$" AND JietuanOperator IN ({string.Join(",", userIds)})");
|
|
|
+ }
|
|
|
+
|
|
|
string sql = string.Format(@$"Select
|
|
|
ROW_NUMBER() Over(Order By Count(*) Desc) As RowNumber,
|
|
|
u.CnName As UserName,
|
|
@@ -2604,6 +2623,7 @@ Order By Count Desc");
|
|
|
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");
|
|
|
|
|
@@ -2691,6 +2711,37 @@ Order By Count Desc");
|
|
|
return Ok(await _visitingClientsRep._Del(_dto.Id,_dto.UserId));
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 市场部销售额
|
|
|
+ /// 客户拜访 操作 save
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="_dto">市场部销售额请求dto</param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("PostMarketingSalesVCSave")]
|
|
|
+ [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
|
|
|
+ public async Task<IActionResult> PostMarketingSalesVCSave(MarketingSalesVCSaveDto _dto)
|
|
|
+ {
|
|
|
+ #region 参数验证
|
|
|
+ MarketingSalesUserPageFuncDtoBaseFoalidator validationRules = new MarketingSalesUserPageFuncDtoBaseFoalidator();
|
|
|
+ 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
|
|
|
+ return Ok(await _visitingClientsRep._Save(_dto));
|
|
|
+ }
|
|
|
+
|
|
|
#endregion
|
|
|
}
|
|
|
}
|