|
@@ -7,6 +7,7 @@ using EyeSoft.Runtime.InteropServices;
|
|
|
using FluentValidation;
|
|
|
using MathNet.Numerics.Distributions;
|
|
|
using Microsoft.EntityFrameworkCore.Query.Internal;
|
|
|
+using Microsoft.OpenApi.Expressions;
|
|
|
using NPOI.HPSF;
|
|
|
using NPOI.HSSF.UserModel;
|
|
|
using NPOI.SS.Formula.Functions;
|
|
@@ -30,12 +31,14 @@ using OfficeOpenXml;
|
|
|
using Org.BouncyCastle.Math;
|
|
|
using SqlSugar.Extensions;
|
|
|
using System.Collections;
|
|
|
+using System.ComponentModel.Design;
|
|
|
using System.Data;
|
|
|
using System.Data.OleDb;
|
|
|
using System.Diagnostics;
|
|
|
using System.Globalization;
|
|
|
using System.IO.Compression;
|
|
|
using System.IO.Pipelines;
|
|
|
+using System.Linq.Expressions;
|
|
|
|
|
|
namespace OASystem.API.Controllers
|
|
|
{
|
|
@@ -240,8 +243,22 @@ namespace OASystem.API.Controllers
|
|
|
[ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
|
|
|
public async Task<IActionResult> PostDelDailyPayment(DelDailyFeePaymentDto dto)
|
|
|
{
|
|
|
+ _sqlSugar.BeginTran();
|
|
|
+
|
|
|
var result = await _daiRep.Del(dto);
|
|
|
|
|
|
+ //删除日付关联表
|
|
|
+ var delCount = _sqlSugar.Updateable<Fin_RoyaltyForm>()
|
|
|
+ .Where(x => x.IsDel == 0 && x.DayOverhead == dto.Id)
|
|
|
+ .SetColumns(x => new Fin_RoyaltyForm
|
|
|
+ {
|
|
|
+ DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
|
|
|
+ DeleteUserId = dto.UserId,
|
|
|
+ IsDel = 1
|
|
|
+ }).ExecuteCommand();
|
|
|
+
|
|
|
+ _sqlSugar.CommitTran();
|
|
|
+
|
|
|
if (result == null || result.Code != 0)
|
|
|
{
|
|
|
return Ok(JsonView(false, result.Msg));
|
|
@@ -5800,6 +5817,227 @@ Group by PriceType ", dto.diId);
|
|
|
}
|
|
|
return Ok(jw);
|
|
|
}
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 提成确认信息
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost]
|
|
|
+
|
|
|
+ public IActionResult RoyaltyConfirmInfo()
|
|
|
+ {
|
|
|
+ var jw = JsonView(false);
|
|
|
+
|
|
|
+ var queryExpression = Expressionable.Create<Fin_RoyaltyConfirm>()
|
|
|
+ .And(r => r.IsDel == 0)
|
|
|
+ .And(r => r.IsConfirm == 1)
|
|
|
+ .And(r => r.IsSeed == 0)
|
|
|
+ .ToExpression();
|
|
|
+
|
|
|
+ var DbQueryConfirmInfo = _sqlSugar.Queryable<Fin_RoyaltyConfirm>()
|
|
|
+ .LeftJoin<Sys_Users>((r,s) => s.IsDel == 0 && s.Id == r.UserId)
|
|
|
+ .LeftJoin<Sys_JobPost>((r, s , p) => p.IsDel == 0 && p.Id == s.JobPostId)
|
|
|
+ .LeftJoin<Sys_Department>((r, s, p , d) => d.IsDel == 0 && d.Id == p.DepId)
|
|
|
+ .LeftJoin<Sys_Company>((r, s, p, d, c) => c.IsDel == 0 && c.Id == d.CompanyId)
|
|
|
+ .Where(queryExpression)
|
|
|
+ .Select((r, s, p, d, c) => new
|
|
|
+ {
|
|
|
+ r.UserId,
|
|
|
+ r.TeamId,
|
|
|
+ r.Id,
|
|
|
+ r.TeamName,
|
|
|
+ r.Price,
|
|
|
+ s.CnName,
|
|
|
+ p.JobName,
|
|
|
+ d.DepName,
|
|
|
+ c.CompanyName
|
|
|
+ })
|
|
|
+ .ToList();
|
|
|
+
|
|
|
+ var groupConfirmInfoByUser = DbQueryConfirmInfo.GroupBy(x => x.UserId);
|
|
|
+
|
|
|
+ ArrayList returnData = new ArrayList();
|
|
|
+
|
|
|
+ foreach (var item in groupConfirmInfoByUser)
|
|
|
+ {
|
|
|
+ var first = item.First();
|
|
|
+ returnData.Add(new
|
|
|
+ {
|
|
|
+ UserId = item.Key,
|
|
|
+ Count = item.Count(),
|
|
|
+ first.CompanyName,
|
|
|
+ first.DepName,
|
|
|
+ first.JobName,
|
|
|
+ first.CnName,
|
|
|
+ SumPrice = item.Sum(x=>x.Price),
|
|
|
+ RoyaltyIdArr = item.Select(x=>x.Id)
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ jw = JsonView(true,"获取成功!",returnData);
|
|
|
+
|
|
|
+ return Ok(jw);
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 提交到日付申请
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost]
|
|
|
+ public async Task<IActionResult> RoyaltyFormPrice(RoyaltyFromPriceDto dto)
|
|
|
+ {
|
|
|
+ var jw = JsonView(false,"用户ID为空!");
|
|
|
+
|
|
|
+ var User = _sqlSugar.Queryable<Sys_Users>().First(x => x.Id
|
|
|
+ == dto.CreateId && x.IsDel == 0);
|
|
|
+ if (User == null)
|
|
|
+ {
|
|
|
+ JsonView(false, "createid 不存在!");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (dto.Items.Count > 0)
|
|
|
+ {
|
|
|
+
|
|
|
+ var queryExpression = Expressionable.Create<Fin_RoyaltyConfirm>()
|
|
|
+ .And(r => r.IsDel == 0)
|
|
|
+ .And(r => r.IsConfirm == 1)
|
|
|
+ .And(r => dto.Items.Select(x=>x.UserId).Contains(r.UserId))
|
|
|
+ .ToExpression();
|
|
|
+
|
|
|
+ var DbQueryConfirmInfo = _sqlSugar.Queryable<Fin_RoyaltyConfirm>()
|
|
|
+ .LeftJoin<Sys_Users>((r, s) => s.IsDel == 0 && s.Id == r.UserId)
|
|
|
+ .LeftJoin<Sys_JobPost>((r, s, p) => p.IsDel == 0 && p.Id == s.JobPostId)
|
|
|
+ .LeftJoin<Sys_Department>((r, s, p, d) => d.IsDel == 0 && d.Id == p.DepId)
|
|
|
+ .LeftJoin<Sys_Company>((r, s, p, d, c) => c.IsDel == 0 && c.Id == d.CompanyId)
|
|
|
+ .Where(queryExpression)
|
|
|
+ .Select((r, s, p, d, c) => new
|
|
|
+ {
|
|
|
+ r.UserId,
|
|
|
+ r.TeamId,
|
|
|
+ r.Id,
|
|
|
+ r.TeamName,
|
|
|
+ r.Price,
|
|
|
+ s.CnName,
|
|
|
+ p.JobName,
|
|
|
+ d.DepName,
|
|
|
+ c.CompanyName,
|
|
|
+ CompanyId = c.Id,
|
|
|
+ UserName = s.CnName,
|
|
|
+ })
|
|
|
+ .ToList();
|
|
|
+
|
|
|
+ //已经提交到日付的用户提成信息
|
|
|
+ var existsDb = _sqlSugar.Queryable<Fin_RoyaltyForm>()
|
|
|
+ .Where(x => dto.Items
|
|
|
+ .Select(x => x.UserId).Contains(x.UserId) && x.IsDel == 0 )
|
|
|
+ .ToList();
|
|
|
+
|
|
|
+ var GroupByConfirmInfo = DbQueryConfirmInfo.GroupBy(x => x.UserId ).ToList();
|
|
|
+ //关联信息
|
|
|
+ List<Fin_RoyaltyForm> relevanceSoure = new List<Fin_RoyaltyForm>();
|
|
|
+
|
|
|
+ AddDailyFeePaymentDto dayPrice = new AddDailyFeePaymentDto()
|
|
|
+ {
|
|
|
+ UserId = dto.CreateId,
|
|
|
+ Instructions = DateTime.Now.ToString("yyyy-MM-dd HH:mm") + " 提成导入日付!",
|
|
|
+ PortType = 1,
|
|
|
+ CompanyId = 2,
|
|
|
+ PriceTypeId = 668,
|
|
|
+ TransferTypeId = 798,
|
|
|
+ };
|
|
|
+
|
|
|
+ List<AddDailyFeePaymentContentDto> ChiDayPrice = new List<AddDailyFeePaymentContentDto>();
|
|
|
+
|
|
|
+ _sqlSugar.BeginTran();
|
|
|
+
|
|
|
+ try
|
|
|
+ {
|
|
|
+ string message = string.Empty;
|
|
|
+
|
|
|
+ foreach (var item in GroupByConfirmInfo)
|
|
|
+ {
|
|
|
+ var first = item.First();
|
|
|
+
|
|
|
+ var reqBody = dto.Items.Find(x => x.UserId == item.Key);
|
|
|
+ var exists = item.Where(x => reqBody!.ChiArr.Contains(x.Id));
|
|
|
+ var existsDbByUser = existsDb.Where(x => x.UserId == item.Key);
|
|
|
+ var idsByUser = string.Join(',',existsDbByUser.Select(x=>x.ConfirmIdArr));
|
|
|
+ var idsByUserList = idsByUser.Split(',')
|
|
|
+ .Select(x=>
|
|
|
+ {
|
|
|
+ if (!string.IsNullOrWhiteSpace(x) && int.TryParse(x, out int intx))
|
|
|
+ {
|
|
|
+ return intx;
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+ })
|
|
|
+ .Where(x => x != 0)
|
|
|
+ .ToList();
|
|
|
+ var saveArr = exists.Where(x => !idsByUserList.Contains(x.Id));
|
|
|
+ var existsYes = exists.Where(x => idsByUserList.Contains(x.Id));
|
|
|
+ var yesPrice = existsYes.Sum(x => x.Price);
|
|
|
+ var savePrice = saveArr.Sum(x => x.Price);
|
|
|
+
|
|
|
+ if (saveArr.Count() > 0) {
|
|
|
+
|
|
|
+ ChiDayPrice.Add(new
|
|
|
+ AddDailyFeePaymentContentDto
|
|
|
+ {
|
|
|
+ ItemTotal = savePrice,
|
|
|
+ Price = savePrice,
|
|
|
+ Quantity = 1,
|
|
|
+ PriceName = first.CnName + "提成金额!",
|
|
|
+ });
|
|
|
+
|
|
|
+ relevanceSoure.Add(new
|
|
|
+ Fin_RoyaltyForm
|
|
|
+ {
|
|
|
+ CreateUserId = dto.CreateId,
|
|
|
+ ConfirmIdArr = string.Join(',', saveArr.Select(x => x.Id)),
|
|
|
+ CreateTime = DateTime.Now,
|
|
|
+ IsDel = 0,
|
|
|
+ UserId = item.Key,
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ if (yesPrice > 0 ) {
|
|
|
+ message += $"{first.CnName} 提成 {savePrice}元已导入日付申请 , {yesPrice} 元已经存在 ! \r\n";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ message += $"{first.CnName} 提成 {savePrice}元已导入日付申请 ! \r\n";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ dayPrice.FeeContents = ChiDayPrice;
|
|
|
+ dayPrice.SumPrice = ChiDayPrice.Sum(x => x.ItemTotal);
|
|
|
+ if (dayPrice.SumPrice != 0)
|
|
|
+ {
|
|
|
+ var ApiResult = await _daiRep.Add(dayPrice);
|
|
|
+
|
|
|
+ int dailyId = Convert.ToInt32(ApiResult?.Data?.GetType().GetProperty("dailyId").GetValue(ApiResult.Data));
|
|
|
+ int sign = Convert.ToInt32(ApiResult?.Data?.GetType().GetProperty("sign").GetValue(ApiResult.Data));
|
|
|
+
|
|
|
+ relevanceSoure.ForEach(x => x.DayOverhead = dailyId);
|
|
|
+
|
|
|
+ var addCount = _sqlSugar.Insertable<Fin_RoyaltyForm>(relevanceSoure).ExecuteCommand();
|
|
|
+ }
|
|
|
+
|
|
|
+ _sqlSugar.CommitTran();
|
|
|
+
|
|
|
+ //消息通知
|
|
|
+ //await AppNoticeLibrary.DailyPayReminders_Create_ToCaiwuChat(dailyId, sign, QiyeWeChatEnum.CaiWuChat);
|
|
|
+
|
|
|
+ jw = JsonView(true, message);
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ _sqlSugar.RollbackTran();
|
|
|
+ jw = JsonView(false, $" Api Error ({ex.Message})");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return Ok(jw);
|
|
|
+ }
|
|
|
#endregion
|
|
|
|
|
|
#region 团组未审核数据
|