|
@@ -32,7 +32,6 @@ using System.Data.OleDb;
|
|
|
using System.Diagnostics;
|
|
|
using System.Globalization;
|
|
|
using System.IO.Compression;
|
|
|
-
|
|
|
namespace OASystem.API.Controllers
|
|
|
{
|
|
|
/// <summary>
|
|
@@ -4930,11 +4929,11 @@ Group by PriceType ", dto.diId);
|
|
|
{
|
|
|
TeamName = groupinfo.TeamName,
|
|
|
TeamId = groupinfo.Id,
|
|
|
- chiArr = infos,
|
|
|
- teamLvStr = teamLv.Find(x=>x.Id == groupinfo.TeamLevSId)?.Name,
|
|
|
+ ChiArr = infos,
|
|
|
+ TeamLvStr = teamLv.Find(x=>x.Id == groupinfo.TeamLevSId)?.Name,
|
|
|
VisitDate = groupinfo.VisitDate,
|
|
|
- temp = temp,
|
|
|
- price = (groupAirCount * 10),
|
|
|
+ Temp = temp,
|
|
|
+ Price = (groupAirCount * 10),
|
|
|
}) ;
|
|
|
}
|
|
|
}
|
|
@@ -5002,11 +5001,11 @@ Group by PriceType ", dto.diId);
|
|
|
{
|
|
|
TeamName = groupinfo.TeamName,
|
|
|
TeamId = groupinfo.Id,
|
|
|
- chiArr = infos,
|
|
|
- teamLvStr = teamLv.Find(x => x.Id == groupinfo.TeamLevSId)?.Name,
|
|
|
+ ChiArr = infos,
|
|
|
+ TeamLvStr = teamLv.Find(x => x.Id == groupinfo.TeamLevSId)?.Name,
|
|
|
VisitDate = groupinfo.VisitDate,
|
|
|
- temp = temp,
|
|
|
- price = totalPrice,
|
|
|
+ Temp = temp,
|
|
|
+ Price = totalPrice,
|
|
|
});
|
|
|
}
|
|
|
|
|
@@ -5031,11 +5030,11 @@ Group by PriceType ", dto.diId);
|
|
|
{
|
|
|
TeamName = groupinfo.TeamName,
|
|
|
TeamId = groupinfo.Id,
|
|
|
- chiArr = new List<string>() { temp },
|
|
|
- teamLvStr = teamLv.Find(x => x.Id == groupinfo.TeamLevSId)?.Name,
|
|
|
+ ChiArr = new List<string>() { temp },
|
|
|
+ TeamLvStr = teamLv.Find(x => x.Id == groupinfo.TeamLevSId)?.Name,
|
|
|
VisitDate = groupinfo.VisitDate,
|
|
|
- temp = temp,
|
|
|
- price = price
|
|
|
+ Temp = temp,
|
|
|
+ Price = price
|
|
|
});
|
|
|
}
|
|
|
|
|
@@ -5127,11 +5126,11 @@ Group by PriceType ", dto.diId);
|
|
|
{
|
|
|
TeamName = groupinfo.TeamName,
|
|
|
TeamId = groupinfo.Id,
|
|
|
- chiArr = infos,
|
|
|
- teamLvStr = teamLv.Find(x => x.Id == groupinfo.TeamLevSId)?.Name,
|
|
|
+ ChiArr = infos,
|
|
|
+ TeamLvStr = teamLv.Find(x => x.Id == groupinfo.TeamLevSId)?.Name,
|
|
|
VisitDate = groupinfo.VisitDate,
|
|
|
- temp = temp,
|
|
|
- price = money,
|
|
|
+ Temp = temp,
|
|
|
+ Price = money,
|
|
|
});
|
|
|
}
|
|
|
}
|
|
@@ -5195,11 +5194,11 @@ Group by PriceType ", dto.diId);
|
|
|
{
|
|
|
TeamName = groupinfo.TeamName,
|
|
|
TeamId = groupinfo.Id,
|
|
|
- chiArr = arr,
|
|
|
- teamLvStr = teamLv.Find(x => x.Id == groupinfo.TeamLevSId)?.Name,
|
|
|
+ ChiArr = arr,
|
|
|
+ TeamLvStr = teamLv.Find(x => x.Id == groupinfo.TeamLevSId)?.Name,
|
|
|
VisitDate = groupinfo.VisitDate,
|
|
|
- temp = temp,
|
|
|
- price = money,
|
|
|
+ Temp = temp,
|
|
|
+ Price = money,
|
|
|
});
|
|
|
}
|
|
|
|
|
@@ -5214,7 +5213,7 @@ Group by PriceType ", dto.diId);
|
|
|
{
|
|
|
//var number = item.GetType().GetProperty("price")?.GetValue(item)?.ToString();
|
|
|
//total += decimal.TryParse(number,out decimal numberInt) ? numberInt : 0.00M;
|
|
|
- total += item.price;
|
|
|
+ total += item.Price;
|
|
|
}
|
|
|
|
|
|
jw.Data = new
|
|
@@ -5279,10 +5278,10 @@ Group by PriceType ", dto.diId);
|
|
|
No,
|
|
|
item.TeamName,
|
|
|
item.VisitDate,
|
|
|
- item.teamLvStr,
|
|
|
- item.temp,
|
|
|
- infos = string.Join("\r\n",item.chiArr),
|
|
|
- price = item.price + "元",
|
|
|
+ item.TeamLvStr,
|
|
|
+ item.Temp,
|
|
|
+ infos = string.Join("\r\n",item.ChiArr),
|
|
|
+ price = item.Price + "元",
|
|
|
});
|
|
|
|
|
|
No++;
|
|
@@ -5320,20 +5319,99 @@ Group by PriceType ", dto.diId);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 提成确认
|
|
|
+ /// 提成财务确认通知
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
[HttpPost]
|
|
|
|
|
|
- public IActionResult SaveRoyaltyDetaile(SaveRoyaltyDetaileDto dto)
|
|
|
+ public async Task<IActionResult> RoyaltyConfirmByFin(RoyaltyConfirmDto dto)
|
|
|
{
|
|
|
var jw = JsonView(false);
|
|
|
+
|
|
|
+ if (!DateTime.TryParse(dto.StartData, out DateTime StartDateTime))
|
|
|
+ {
|
|
|
+ jw.Msg = "开始时间格式有误!";
|
|
|
+ return Ok(jw);
|
|
|
+ }
|
|
|
+ if (!DateTime.TryParse(dto.EndData, out DateTime EndDateTime))
|
|
|
+ {
|
|
|
+ jw.Msg = "结束时间格式有误!";
|
|
|
+ return Ok(jw);
|
|
|
+ }
|
|
|
+ if (DateTime.Compare(StartDateTime, EndDateTime) > 0)
|
|
|
+ {
|
|
|
+ jw.Msg = "开始时间大于结束时间!";
|
|
|
+ return Ok(jw);
|
|
|
+ }
|
|
|
+
|
|
|
if (dto.ComputeRoyaltiesList.Count != 0)
|
|
|
{
|
|
|
+ var user = _sqlSugar.Queryable<Sys_Users>().First(x => x.Id == dto.UserId);
|
|
|
+ if (user == null) { return Ok(JsonView(false, "通知失败! 人员信息有误!")); }
|
|
|
+
|
|
|
//保存提成信息
|
|
|
- //消息通知对应人员(公司 部门 人员 时间段)
|
|
|
+ //消息通知对应人员(公司 部门 人员 时间段 团组id 是否确定 )
|
|
|
+ List<Fin_RoyaltyConfirm> entitys = dto.ComputeRoyaltiesList.Select(x => new Fin_RoyaltyConfirm
|
|
|
+ {
|
|
|
+ UserId = dto.UserId,
|
|
|
+ ChiArr = JsonConvert.SerializeObject(x.ChiArr),
|
|
|
+ CreateTime = DateTime.Now,
|
|
|
+ CreateUserId = dto.UserId,
|
|
|
+ IsConfirm = 0,
|
|
|
+ TeamId = x.TeamId,
|
|
|
+ TeamLvStr = x.TeamLvStr,
|
|
|
+ Price = x.Price,
|
|
|
+ VisitDate = x.VisitDate,
|
|
|
+ TeamName = x.TeamName,
|
|
|
+ Temp = x.Temp
|
|
|
+ }).ToList();
|
|
|
+
|
|
|
+ var expressionSoftDeleteWhere = Expressionable.Create<Fin_RoyaltyConfirm>()
|
|
|
+ .And(it => it.VisitDate >= StartDateTime)
|
|
|
+ .And(it => it.VisitDate <= EndDateTime)
|
|
|
+ .And(it => it.IsDel == 0)
|
|
|
+ .And(it => it.UserId == dto.UserId)
|
|
|
+ .And(it => it.IsConfirm == 0)
|
|
|
+ .ToExpression();
|
|
|
+
|
|
|
+ var expressionSelectWhere = Expressionable.Create<Fin_RoyaltyConfirm>()
|
|
|
+ .And(it => it.VisitDate >= StartDateTime)
|
|
|
+ .And(it => it.VisitDate <= EndDateTime)
|
|
|
+ .And(it => it.IsDel == 0)
|
|
|
+ .And(it => it.UserId == dto.UserId)
|
|
|
+ .And(it => it.IsConfirm == 1)
|
|
|
+ .ToExpression();
|
|
|
|
|
|
+ _sqlSugar.BeginTran();
|
|
|
|
|
|
+ try
|
|
|
+ {
|
|
|
+ _ = _sqlSugar.Updateable<Fin_RoyaltyConfirm>().SetColumns(it => new Fin_RoyaltyConfirm() { IsDel = 1, DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm"), DeleteUserId = dto.UserId })
|
|
|
+ .Where(expressionSoftDeleteWhere)
|
|
|
+ .ExecuteCommand();
|
|
|
+
|
|
|
+ var confirmYes = _sqlSugar.Queryable<Fin_RoyaltyConfirm>().Where(expressionSelectWhere).Select(x => x.TeamId).ToList();
|
|
|
+
|
|
|
+ entitys = entitys.Where(x => !confirmYes.Contains(x.TeamId)).ToList();
|
|
|
+
|
|
|
+ _ = _sqlSugar.Insertable<Fin_RoyaltyConfirm>(entitys).ExecuteCommand();
|
|
|
+
|
|
|
+ _sqlSugar.CommitTran();
|
|
|
+
|
|
|
+ //调用通知
|
|
|
+ var title = "提成确认";
|
|
|
+ var center = $@"{dto.StartData}-{dto.EndData}提成财务已确认,请尽快查看!
|
|
|
+【{dto.StartData}-{dto.EndData}】";
|
|
|
+ var ids = new List<int> { 235 }; //dto.UserId
|
|
|
+ await GeneralMethod.MessageIssueAndNotification(MessageTypeEnum.GroupBusinessOperations,title, center, ids);
|
|
|
+
|
|
|
+ jw = JsonView(true, $"人员:{user.CnName} {dto.StartData}-{dto.EndData} 通知成功!");
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ _sqlSugar.RollbackTran();
|
|
|
+ jw = JsonView(false, "保存失败!" + ex.Message);
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -5343,10 +5421,101 @@ Group by PriceType ", dto.diId);
|
|
|
return Ok(jw);
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 查询提成信息
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
[HttpPost]
|
|
|
public IActionResult QueryRoyaltyInfo(QueryRoyaltyInfoDto dto)
|
|
|
{
|
|
|
var jw = JsonView(false);
|
|
|
+
|
|
|
+ if (!DateTime.TryParse(dto.StartDate, out DateTime StartDateTime))
|
|
|
+ {
|
|
|
+ jw.Msg = "开始时间格式有误!";
|
|
|
+ return Ok(jw);
|
|
|
+ }
|
|
|
+ if (!DateTime.TryParse(dto.EndDate, out DateTime EndDateTime))
|
|
|
+ {
|
|
|
+ jw.Msg = "结束时间格式有误!";
|
|
|
+ return Ok(jw);
|
|
|
+ }
|
|
|
+ if (DateTime.Compare(StartDateTime, EndDateTime) > 0)
|
|
|
+ {
|
|
|
+ jw.Msg = "开始时间大于结束时间!";
|
|
|
+ return Ok(jw);
|
|
|
+ }
|
|
|
+
|
|
|
+ var expressionSelectWhere = Expressionable.Create<Fin_RoyaltyConfirm>()
|
|
|
+ .And(it => it.VisitDate >= StartDateTime)
|
|
|
+ .And(it => it.VisitDate <= EndDateTime)
|
|
|
+ .And(it => it.IsDel == 0)
|
|
|
+ .And(it => it.UserId == dto.UserId)
|
|
|
+ .ToExpression();
|
|
|
+
|
|
|
+ try
|
|
|
+ {
|
|
|
+ var query = _sqlSugar.Queryable<Fin_RoyaltyConfirm>().Where(expressionSelectWhere).ToList().Select(x => new
|
|
|
+ {
|
|
|
+ x.Price,
|
|
|
+ ChiArr = JsonConvert.DeserializeObject<List<string>>(x.ChiArr),
|
|
|
+ x.IsConfirm,
|
|
|
+ x.Id,
|
|
|
+ x.TeamId,
|
|
|
+ x.TeamName,
|
|
|
+ x.TeamLvStr,
|
|
|
+ x.Temp,
|
|
|
+ x.VisitDate,
|
|
|
+ });
|
|
|
+
|
|
|
+ jw = JsonView(true, "获取成功!", query);
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ jw = JsonView(true, "获取失败!" + ex.Message);
|
|
|
+ }
|
|
|
+
|
|
|
+ return Ok(jw);
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 个人提成确认
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost]
|
|
|
+ public IActionResult RoyaltyConfirmByUser(RoyaltyConfirmByUserDto dto)
|
|
|
+ {
|
|
|
+ var jw = JsonView(false);
|
|
|
+
|
|
|
+ var stateArr = new int[] {0 , 1};
|
|
|
+
|
|
|
+ if (!stateArr.Contains(dto.State))
|
|
|
+ {
|
|
|
+ return Ok(JsonView(false,"状态标识有误!"));
|
|
|
+ }
|
|
|
+
|
|
|
+ if (dto.Data != null && dto.Data.Count != 0)
|
|
|
+ {
|
|
|
+ var expressionUpdateWhere = Expressionable.Create<Fin_RoyaltyConfirm>()
|
|
|
+ .And(it => dto.Data.Contains (it.Id))
|
|
|
+ .And(it => it.IsDel == 0)
|
|
|
+ .ToExpression();
|
|
|
+
|
|
|
+ var count = _sqlSugar.Updateable<Fin_RoyaltyConfirm>().SetColumns(x => new Fin_RoyaltyConfirm
|
|
|
+ {
|
|
|
+ IsConfirm = dto.State,
|
|
|
+ })
|
|
|
+ .Where(expressionUpdateWhere).ExecuteCommand();
|
|
|
+
|
|
|
+ jw.Msg = $"{count}个团组确认成功!";
|
|
|
+ jw.Code = 200;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ jw.Msg = "Data为空!";
|
|
|
+ }
|
|
|
return Ok(jw);
|
|
|
}
|
|
|
#endregion
|