123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806 |
- using AutoMapper;
- using EyeSoft.Extensions;
- using MathNet.Numerics.Statistics.Mcmc;
- using NPOI.SS.Formula.Functions;
- using OASystem.Domain;
- using OASystem.Domain.Dtos.Financial;
- using OASystem.Domain.Dtos.Groups;
- using OASystem.Domain.Entities.Financial;
- using OASystem.Domain.Entities.Groups;
- using OASystem.Domain.ViewModels.Financial;
- using OASystem.Domain.ViewModels.Groups;
- using OASystem.Infrastructure.Repositories.Groups;
- using OASystem.Infrastructure.Repositories.System;
- using SqlSugar;
- using SqlSugar.Extensions;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace OASystem.Infrastructure.Repositories.Financial
- {
- /// <summary>
- /// 财务 - 团组应收款项 仓库
- /// 雷怡 2023.08.16 15:03
- /// </summary>
- public class ForeignReceivablesRepository : BaseRepository<Fin_ForeignReceivables, Fin_ForeignReceivablesView>
- {
- private readonly IMapper _mapper;
- private readonly DelegationInfoRepository _delegationRep;
- private readonly SetDataRepository _setDataRep;
- private readonly List<int> _portTypes = new List<int>() { 1, 2, 3 };
- public ForeignReceivablesRepository(SqlSugarClient sqlSugar, IMapper mapper, DelegationInfoRepository delegationRep, SetDataRepository setDataRep)
- : base(sqlSugar)
- {
- _mapper = mapper;
- _delegationRep = delegationRep;
- _setDataRep = setDataRep;
- }
- #region 关联已收款项
- /// <summary>
- /// 收款账单 数据源
- /// </summary>
- /// <returns></returns>
- public async Task<JsonView> GetDataSource(ForeignReceivablesDataSourcesDto dto)
- {
- JsonView result = new() { Code = StatusCodes.Status204NoContent };
- //已收款项 判断如果是市场部的人员进来的话 只显示自己的 其他的都显示全部的
- var userInfos = await _sqlSugar.Queryable<Sys_Users>()
- .InnerJoin<Sys_Department>((u, d) => u.DepId == d.Id)
- .Where((u, d) => u.IsDel == 0 && d.DepName.Contains("市场部") && u.Id == dto.CurrUserId)
- .ToListAsync();
- string sqlWhere = "";
- if (userInfos.Count > 0) sqlWhere = string.Format(@$" And JietuanOperator={dto.CurrUserId} ");
- string sql = string.Format(@$"Select Id,TeamName GroupName From Grp_DelegationInfo
- Where TeamName != '' And IsDel = 0 {sqlWhere}
- Order By Id Desc");
- var _groupNameList = await _sqlSugar.SqlQueryable<GroupNameView>(sql).ToListAsync();
- //var groupNameData = await _delegationRep.GetGroupNameList(new GroupNameDto());
- var currencyData = await _setDataRep.GetSetDataBySTId(_setDataRep, 66); //币种
- var remittanceMethodData = await _setDataRep.GetSetDataBySTId(_setDataRep, 14); //汇款方式
- result.Code = StatusCodes.Status200OK;
- result.Msg = "成功!";
- result.Data = new
- {
- GroupNameData = _groupNameList,
- CurrencyData = currencyData.Data,
- RemittanceMethodData = remittanceMethodData.Data
- };
- return result;
- }
- /// <summary>
- /// 根据diid查询团组应收款项
- /// </summary>
- /// <param name="diid"></param>
- /// <returns></returns>
- public async Task<Result> GetGroupReceivablesInfoByDiId(ForForeignReceivablesInfoDto dto)
- {
- Result result = new() { Code = -2 };
- var groupInfoData = await _delegationRep.GetGroupInfo(new GroupInfoDto() { Id = dto.DiId });
- //应收款项
- string groupReceivedSql = string.Format(@"Select * From Fin_ForeignReceivables Where IsDel=0 And Diid={0}", dto.DiId);
- var groupReceivedList = await _sqlSugar.SqlQueryable<ForeignReceivablesView>(groupReceivedSql).ToListAsync();
- //已收款项
- string groupProceedsReceivedSql = string.Format(@"Select * From Fin_ProceedsReceived Where IsDel=0 And Diid={0}", dto.DiId);
- var groupProceedsReceivedList = await _sqlSugar.SqlQueryable<ProceedsReceivedView>(groupProceedsReceivedSql).ToListAsync();
- List<ProceedsReceivedView> NotFIDData = new List<ProceedsReceivedView>();
- if (dto.PortType == 1)
- {
- foreach (var item in groupReceivedList)
- {
- item._ProceedsReceivedDatas = groupProceedsReceivedList.Where(s => s.FID == item.Id).ToList();
- }
- NotFIDData = groupProceedsReceivedList.Where(s => !groupReceivedList.Any(e => s.FID == e.Id)).ToList();
- }
- result.Code = 0;
- result.Msg = "查询成功!";
- result.Data = new
- {
- GroupInfo = groupInfoData.Data,
- GroupCollectionStatementData = new
- {
- ReceivedData = groupReceivedList,
- UnallocatedData = NotFIDData
- }
- };
- return result;
- }
- /// <summary>
- /// 应收款项 删除
- /// </summary>
- /// <param name="dto"></param>
- /// <returns></returns>
- public async Task<Result> _Del(DelForForeignReceivablesInfoDto dto)
- {
- Result result = new Result() { Code = -1, Msg = "程序错误!" };
- _sqlSugar.BeginTran();
- try
- {
- var res = await _sqlSugar.Updateable<Fin_ForeignReceivables>()
- .Where(it => it.Id == dto.Id)
- .SetColumns(it => new Fin_ForeignReceivables()
- {
- IsDel = 1,
- DeleteUserId = dto.UserId,
- DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
- }
- ).ExecuteCommandAsync();
- if (res > 0)
- {
- await _sqlSugar.Updateable<Fin_ProceedsReceived>()
- .Where(a => a.FID == dto.Id)
- .SetColumns(a => new Fin_ProceedsReceived
- {
- IsDel = 1,
- DeleteUserId = dto.UserId,
- DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
- }).ExecuteCommandAsync();
- _sqlSugar.CommitTran();
- result.Msg = "删除成功!";
- result.Code = 0;
- }
- else
- {
- _sqlSugar.RollbackTran();
- result.Msg = "删除失败!";
- return result;
- }
- }
- catch (Exception ex)
- {
- _sqlSugar.RollbackTran();
- result.Msg = ex.Message;
- return result;
- }
- return result;
- }
- /// <summary>
- /// 财务模块
- /// 收款账单 Add And Update
- /// </summary>
- /// <param name="diid"></param>
- /// <returns></returns>
- public async Task<Result> PostReceivablesOperate(ForeignReceivablesAddAndUpdateDto dto)
- {
- Result result = new() { Code = -2 };
- if (dto.foreignReceivablesInfos.Count <= 0)
- {
- result.Msg = "收款账单没有信息,不能进行,添加或修改操作!!!";
- return result;
- }
- int addCount = 0, updateCount = 0;
- if (dto.PortType == 1)
- {
- List<Fin_ForeignReceivables> _ForeignReceivables = new List<Fin_ForeignReceivables>();
- foreach (var item in dto.foreignReceivablesInfos)
- {
- _ForeignReceivables.Add(new Fin_ForeignReceivables()
- {
- Diid = dto.DiId,
- Id = item.Id,
- PriceName = item.PriceName,
- Price = item.Price,
- Count = item.Count,
- Unit = item.Unit,
- ItemSumPrice = item.ItemSumPrice,
- Rate = item.Rate,
- Currency = item.Currency,
- AddingWay = item.AddingWay,
- CreateUserId = dto.UserId,
- CreateTime = DateTime.Now,
- Remark = item.Remark
- });
- }
- if (_ForeignReceivables.Count > 0)
- {
- var x = _sqlSugar.Storageable(_ForeignReceivables).ToStorage();
- addCount = x.AsInsertable.ExecuteCommand(); //不存在插入
- updateCount = x.AsUpdateable.ExecuteCommand(); //存在更新
- }
- result.Code = 0;
- result.Msg = string.Format(@"操作成功!添加:{0}条;更新:{1};", addCount, updateCount);
- }
- return result;
- }
- /// <summary>
- /// 根据diid查询团组应收款项
- /// </summary>
- /// <param name="diid"></param>
- /// <returns></returns>
- public async Task<Result> GetGroupReceivablesByDiid(int diid)
- {
- Result result = new() { Code = -2 };
- string sql = string.Format(@"Select * From Fin_ForeignReceivables Where IsDel=0 And Diid={0}", diid);
- var groupReceivedList = await _sqlSugar.SqlQueryable<Fin_ForeignReceivables>(sql).ToListAsync();
- result.Code = 0;
- result.Msg = "查询成功!";
- result.Data = groupReceivedList;
- return result;
- }
- /// <summary>
- /// 根据diid 数组 查询团组应收款项
- /// </summary>
- /// <param name="diid"></param>
- /// <returns></returns>
- public async Task<Result> GetGroupReceivablesByDiids(int[] diids)
- {
- Result result = new() { Code = -2 };
- //string sql = string.Format(@"Select * From Fin_ProceedsReceived Where IsDel=0 And Diid={0}", diids);
- var groupReceivedList = await _sqlSugar.Queryable<Fin_ForeignReceivables>()
- .Where(pr => pr.IsDel == 0 && diids.Contains(pr.Diid)).ToListAsync();
- result.Code = 0;
- result.Msg = "查询成功!";
- result.Data = groupReceivedList;
- return result;
- }
- #endregion
- #region 未关联已收款项
- /// <summary>
- /// 收款账单 数据源
- /// </summary>
- /// <returns></returns>
- public async Task<JsonView> PostDataSource(ForeignReceivablesDataSourcesDto dto)
- {
- JsonView result = new() { Code = StatusCodes.Status204NoContent };
- //已收款项 判断如果是市场部的人员进来的话 只显示自己的 其他的都显示全部的
- var userInfos = await _sqlSugar.Queryable<Sys_Users>()
- .InnerJoin<Sys_Department>((u, d) => u.DepId == d.Id)
- .Where((u, d) => u.IsDel == 0 && d.DepName.Contains("市场部") && u.Id == dto.CurrUserId)
- .ToListAsync();
- string sqlWhere = "";
- if (userInfos.Count > 0) sqlWhere = string.Format(@$" And JietuanOperator={dto.CurrUserId} ");
- string sql = string.Format(@$"Select Id,TeamName GroupName From Grp_DelegationInfo
- Where TeamName != '' And IsDel = 0 {sqlWhere}
- Order By Id Desc");
- var _groupNameList = await _sqlSugar.SqlQueryable<GroupNameView>(sql).ToListAsync();
- //var groupNameData = await _delegationRep.GetGroupNameList(new GroupNameDto());
- var currencyData = await _setDataRep.GetSetDataBySTId(_setDataRep, 66); //币种
- var remittanceMethodData = await _setDataRep.GetSetDataBySTId(_setDataRep, 14); //汇款方式
- result.Code = StatusCodes.Status200OK;
- result.Msg = "成功!";
- result.Data = new
- {
- GroupNameData = _groupNameList,
- CurrencyData = currencyData.Data,
- RemittanceMethodData = remittanceMethodData.Data
- };
- return result;
- }
- /// <summary>
- /// 收款账单数据源团组分页
- /// </summary>
- /// <returns></returns>
- public async Task<JsonView> PostDataSourceOffSet(ForeignReceivablesDataSourcesOffSetDto dto)
- {
- JsonView result = new() { Code = StatusCodes.Status204NoContent };
- if (dto.PageIndex < 1) dto.PageIndex = 1;
- if (dto.PageSize < 1) dto.PageSize = 10;
- //已收款项 判断如果是市场部的人员进来的话 只显示自己的 其他的都显示全部的
- var userInfos = await _sqlSugar.Queryable<Sys_Users>()
- .InnerJoin<Sys_Department>((u, d) => u.DepId == d.Id)
- .Where((u, d) => u.IsDel == 0 && d.DepName.Contains("市场部") && u.Id == dto.CurrUserId)
- .ToListAsync();
- var expressionWhere = Expressionable.Create<Grp_DelegationInfo>()
- .And(x => x.IsDel == 0 && x.TeamName != "")
- .AndIF(userInfos.Count > 0, x => x.JietuanOperator == dto.CurrUserId)
- .AndIF(!dto.SearchValue.IsNullOrWhiteSpace(),x=> x.TeamName.Contains(dto.SearchValue))
- .ToExpression();
- var totalNumber = 0;
- var _groupNameList = _sqlSugar.Queryable<Grp_DelegationInfo>()
- .Where(expressionWhere)
- .ToPageList(dto.PageIndex, dto.PageSize, ref totalNumber)
- .Select(x=> new GroupNameView
- {
- GroupName = x.TeamName,
- Id = x.Id,
- });
- if (totalNumber > 0)
- {
- totalNumber = totalNumber / dto.PageSize + 1;
- }
- //var currencyData = await _setDataRep.GetSetDataBySTId(_setDataRep, 66); //币种
- //var remittanceMethodData = await _setDataRep.GetSetDataBySTId(_setDataRep, 14); //汇款方式
- result.Code = StatusCodes.Status200OK;
- result.Msg = "成功!";
- result.Data = new
- {
- GroupNameData = _groupNameList,
- //CurrencyData = currencyData.Data,
- //RemittanceMethodData = remittanceMethodData.Data,
- GroupTotalPage = totalNumber
- };
- return result;
- }
- /// <summary>
- /// 根据diid查询团组应收款项
- /// </summary>
- /// <param name="diid"></param>
- /// <returns></returns>
- public async Task<JsonView> PostGroupReceivablesInfoByDiId(ForForeignReceivablesNewDto dto)
- {
- JsonView result = new() { Code = 400, Msg = "" };
- //var groupInfoData = await _delegationRep.GetGroupInfo(new GroupInfoDto() { Id = dto.DiId });
- var groupInfoData = await _delegationRep.Query(x => x.Id == dto.DiId)
- .Select(x => new
- {
- x.Id,
- x.TeamName,
- x.TourCode,
- x.ClientName,
- VisitCountry = x.VisitCountry.Replace("|","、"),
- x.VisitDays,
- x.VisitPNumber,
- x.VisitStartDate,
- x.VisitEndDate
- })
- .FirstAsync();
- //应收款项
- string groupReceivedSql = string.Format(@"Select *,su.CnName As AuditorName, ssd.Name as 'CurrencyStr' From Fin_ForeignReceivables ffr
- Left Join Sys_Users su On ffr.Auditor = su.Id
- LEFT JOIN Sys_SetData ssd on ffr.Currency = ssd.Id AND ssd.IsDel = 0
- Where ffr.IsDel=0 And ffr.Diid={0}", dto.DiId);
- var groupReceivedList = await _sqlSugar.SqlQueryable<ProceedsReceivedNewView>(groupReceivedSql).ToListAsync();
- result.Code = 200;
- result.Msg = "查询成功!";
- result.Data = new
- {
- GroupInfo = groupInfoData,
- GroupCollectionStatementData = groupReceivedList
- };
- return result;
- }
- /// <summary>
- /// 财务模块
- /// 收款账单 Add And Update
- /// </summary>
- /// <param name="diid"></param>
- /// <returns></returns>
- public async Task<JsonView> PostReceivablesSave(ForeignReceivablesSaveDto dto)
- {
- JsonView result = new() { Code = 4002 };
- if (dto.foreignReceivablesInfos.Count <= 0)
- {
- result.Msg = "收款账单没有信息,不能进行,添加或修改操作!!!";
- return result;
- }
- int addCount = 0, updateCount = 0;
-
- //if (dto.PortType == 1)
- //{
- //查询值是否更改
- var selectInfos = await _sqlSugar.Queryable<Fin_ForeignReceivables>().Where(it => it.Diid == dto.DiId && it.Status == 1).ToListAsync();
- List <Fin_ForeignReceivables> _ForeignReceivables = new List<Fin_ForeignReceivables>();
- foreach (var item in dto.foreignReceivablesInfos)
- {
- int status = 0, auditor = 0;
- string auditTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
- var info = selectInfos.Find(x => x.Id == item.Id);
- if (info != null)
- {
- if (info.ItemSumPrice == item.ItemSumPrice)
- {
- status = info.Status;
- auditor = info.Auditor;
- auditTime = info.AuditTime;
- }
- }
- _ForeignReceivables.Add(new Fin_ForeignReceivables()
- {
- Diid = dto.DiId,
- Id = item.Id,
- PriceName = item.PriceName,
- Price = item.Price,
- Count = item.Count,
- Unit = item.Unit,
- ItemSumPrice = item.ItemSumPrice,
- Rate = item.Rate,
- Currency = item.Currency,
- AddingWay = item.AddingWay,
- CreateUserId = dto.UserId,
- CreateTime = DateTime.Now,
- Remark = item.Remark,
- Status = status,
- Auditor = auditor,
- AuditTime = auditTime
- });
- }
- if (_ForeignReceivables.Count > 0)
- {
- var x = _sqlSugar.Storageable(_ForeignReceivables).ToStorage();
- addCount = x.AsInsertable.ExecuteCommand(); //不存在插入
- updateCount = x.AsUpdateable.IgnoreColumns(it => new
- {
- //it.Status,
- //it.Auditor,
- //it.AuditTime,
- it.CreateUserId,
- it.CreateTime
- }).ExecuteCommand(); //存在更新
- }
- result.Code = 200;
- result.Msg = string.Format(@"操作成功!添加:{0}条;更新:{1};", addCount, updateCount);
- //}
- return result;
- }
- /// <summary>
- /// 财务模块
- /// 收款账单(单条) Add And Update
- /// </summary>
- /// <param name="diid"></param>
- /// <returns></returns>
- public async Task<JsonView> PostReceivablesSingleSave(PostReceivablesSingleSaveDto dto)
- {
- JsonView result = new() { Code = 400 };
- var portIds = new List<int>() { 2, 3 };
- if (!portIds.Contains(dto.PortType))
- {
- result.Msg = MsgTips.MobilePort;
- return result;
- }
- if (dto.DiId < 1)
- {
- result.Msg = MsgTips.DiId;
- return result;
- }
- var selectInfos = await _sqlSugar.Queryable<Fin_ForeignReceivables>().Where(it => it.Diid == dto.DiId && it.Status == 1 && it.Id == dto.Id).FirstAsync();
- string auditTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
- int status = 0, auditor = 0;
- if (selectInfos != null)
- {
- if (selectInfos.ItemSumPrice == dto.ItemSumPrice)
- {
- status = selectInfos.Status;
- auditor = selectInfos.Auditor;
- auditTime = selectInfos.AuditTime;
- }
- }
- var info = new Fin_ForeignReceivables()
- {
- Diid = dto.DiId,
- Id = dto.Id,
- PriceName = dto.PriceName,
- Price = dto.Price,
- Count = dto.Count,
- Unit = dto.Unit,
- ItemSumPrice = dto.ItemSumPrice,
- Rate = dto.Rate,
- Currency = dto.Currency,
- AddingWay = dto.AddingWay,
- CreateUserId = dto.UserId,
- CreateTime = DateTime.Now,
- Remark = dto.Remark,
- Auditor = auditor,
- Status = status,
- AuditTime = auditTime,
- };
- if (dto.Id < 1) //添加
- {
- var add = await _sqlSugar.Insertable(info).ExecuteCommandAsync();
- if (add > 0)
- {
- result.Code = 200;
- result.Msg = "操作成功";
- }
- else result.Msg = "操作失败";
- }
- else if (dto.Id > 1) //更新
- {
- var update = await _sqlSugar.Updateable(info).IgnoreColumns(it => new { it.CreateUserId, it.CreateTime }).ExecuteCommandAsync();
- if (update > 0)
- {
- result.Code = 200;
- result.Msg = "操作成功";
- }
- else result.Msg = "操作失败";
- }
- else result.Msg = MsgTips.Id;
- return result;
- }
- /// <summary>
- /// 财务模块
- /// 收款账单
- /// Audit
- /// </summary>
- /// <param name="diid"></param>
- /// <returns></returns>
- public async Task<JsonView> FeeAudit(FeeAuditDto dto)
- {
- JsonView result = new() { Code = 400 };
- //验证
- var info = await _sqlSugar.Queryable<Fin_ForeignReceivables>().FirstAsync(x => x.Id == dto.Id);
- if (info == null)
- {
- result.Msg = "数据不存在";
- return result;
- }
- if (info.AddingWay != 2)
- {
- result.Msg = "该条数据类型不是“实际报价”类型不可审核!";
- return result;
- }
-
- var AuditStatus = await _sqlSugar.Updateable<Fin_ForeignReceivables>()
- .SetColumns(a => new Fin_ForeignReceivables
- {
- Status = dto.Status,
- Auditor = dto.UserId,
- AuditTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
- })
- .Where(a => a.Id == dto.Id)
- .ExecuteCommandAsync();
- if (AuditStatus > 0)
- {
- result.Msg = "操作成功!";
- result.Code = 200;
- }
- else result.Msg = "操作失败!";
- return result;
- }
- /// <summary>
- /// 财务模块
- /// 收款账单
- /// Del
- /// </summary>
- /// <param name="diid"></param>
- /// <returns></returns>
- public async Task<Result> PostReceivablesDel(ForeignReceivablesDelDto dto)
- {
- Result result = new() { Code = -2 };
- var delStatus = await _sqlSugar.Updateable<Fin_ForeignReceivables>()
- .SetColumns(a => new Fin_ForeignReceivables
- {
- IsDel = 1,
- DeleteUserId = dto.UserId,
- DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
- })
- .Where(a => a.Id == dto.Id)
- .ExecuteCommandAsync();
- if (delStatus > 0)
- {
- result.Msg = "操作成功!";
- result.Code = 0;
- }
- else
- {
- result.Msg = "操作成功!";
- }
- return result;
- }
- public void OverSpSeteceivables(OverSpSeteceivablesDto dto)
- {
- var querySaveReceivables = _sqlSugar.Queryable<Fin_ForeignReceivables>()
- .First(x => x.Diid == dto.DiId && x.AddingWay == 3 && x.IsDel == 0);
- //获取所有超支数据
- //整理超支数据
- //币种不同则计算rmb值
- var overspList = _sqlSugar.Queryable<Fin_GroupExtraCost, Grp_CreditCardPayment>
- ((e, c) => c.CTable == 1015 && c.CId == e.Id && c.IsDel == 0).
- Where((e, c) => e.IsDel == 0 && e.DiId == dto.DiId).
- Select((e, c) => new
- {
- e.Price,
- e.PriceCount,
- e.Coefficient,
- e.PriceSum,
- c.RMBPrice,
- c.DayRate,
- e.PriceCurrency,
- e.Remark,
- })
- .ToList().
- Where(x =>
- {
- var count = 0;
- var stringArr = new string[] { "SYsupervisorConfirm" , "SupervisorConfirm" , "ManagerConfirm" };
- foreach (var item in stringArr)
- {
- var number = x.GetType()?.GetProperty(item)?.GetValue(x).ObjToInt();
- if (number > 0)
- {
- count++;
- }
- }
- return count > 1;
- }).ToList();
- var overspListGroup = overspList.GroupBy(x => x.PriceCurrency).ToList();
- string foreignReceivablesRemake = string.Empty;
- int count = 1;
- overspList.ForEach(x =>
- {
- foreignReceivablesRemake += $"{count}.{x.Remark}";
- count++;
- });
- if (querySaveReceivables != null)
- {
- if (overspList.Count() > 0)
- {
- if (overspListGroup.Count() > 1)
- {
- querySaveReceivables.Currency = 836; //人民币
- querySaveReceivables.Rate = 1;
- querySaveReceivables.Price = overspListGroup.Sum(x => x.Sum(y => y.PriceSum * y.Coefficient * y.DayRate));
- querySaveReceivables.ItemSumPrice = overspListGroup.Sum(x => x.Sum(y => y.PriceSum * y.Coefficient * y.DayRate));
- querySaveReceivables.Remark = foreignReceivablesRemake;
- querySaveReceivables.CreateTime = DateTime.Now;
- }
- else
- {
- querySaveReceivables.Currency = overspList[0].PriceCurrency;
- querySaveReceivables.Rate = overspList[0].DayRate;
- querySaveReceivables.Price = overspListGroup[0].Sum(x => x.PriceSum * x.Coefficient);
- querySaveReceivables.ItemSumPrice = overspListGroup[0].Sum(x => x.PriceSum * x.Coefficient);
- querySaveReceivables.Remark = foreignReceivablesRemake;
- querySaveReceivables.AddingWay = 3;
- querySaveReceivables.CreateTime = DateTime.Now;
- }
- }
- else
- {
- querySaveReceivables.Currency = 836; //人民币
- querySaveReceivables.Rate = 1;
- querySaveReceivables.Price = 0;
- querySaveReceivables.ItemSumPrice = 0;
- querySaveReceivables.Remark = "";
- querySaveReceivables.CreateTime = DateTime.Now;
- querySaveReceivables.Count = 1;
- }
- _sqlSugar.Updateable(querySaveReceivables).ExecuteCommand();
- }
- else
- {
- if (overspList.Count() > 0)
- {
- if (overspListGroup.Count() > 1)
- {
- querySaveReceivables = new Fin_ForeignReceivables
- {
- CreateTime = DateTime.Now,
- CreateUserId = dto.CreateUserId,
- Diid = dto.DiId,
- PriceName = "超支费用",
- AddingWay = 3,
- Count = 1,
- Currency = 836,
- ItemSumPrice = overspList.Sum(x => x.PriceSum * x.Coefficient * x.DayRate),
- Price = overspList.Sum(x => x.PriceSum * x.Coefficient * x.DayRate),
- Rate = 1,
- IsDel = 0,
- Remark = foreignReceivablesRemake,
- Unit = "团",
- };
- }
- else
- {
- querySaveReceivables = new Fin_ForeignReceivables
- {
- CreateTime = DateTime.Now,
- CreateUserId = dto.CreateUserId,
- Diid = dto.DiId,
- PriceName = "超支费用",
- AddingWay = 3,
- Count = 1,
- Currency = overspList[0].PriceCurrency,
- ItemSumPrice = overspList.Sum(x => x.PriceSum * x.Coefficient),
- Price = overspList.Sum(x => x.PriceSum * x.Coefficient),
- Rate = overspList[0].DayRate,
- IsDel = 0,
- Remark = foreignReceivablesRemake,
- Unit = "团",
- };
- }
- }
- _sqlSugar.Insertable(querySaveReceivables).ExecuteCommand();
- }
- }
- #endregion
- }
- }
|