123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585 |
- using AutoMapper;
- using NPOI.SS.Formula.Functions;
- using OASystem.Domain;
- using OASystem.Domain.Dtos;
- using OASystem.Domain.Dtos.Financial;
- using OASystem.Domain.Entities.Financial;
- using OASystem.Domain.ViewModels.Financial;
- using OASystem.Infrastructure.Repositories.System;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel.Design;
- using System.Linq;
- using System.Runtime.Intrinsics.Arm;
- using System.Text;
- using System.Threading.Tasks;
- namespace OASystem.Infrastructure.Repositories.Financial
- {
- /// <summary>
- /// 财务 - 日付申请
- /// </summary>
- public class DailyFeePaymentRepository : BaseRepository<Fin_DailyFeePayment, Fin_DailyFeePaymentView>
- {
- private readonly IMapper _mapper;
- private readonly System.SetDataTypeRepository _setDataTypeRep;
- private readonly System.UsersRepository _UsersRep;
- private readonly System.CompanyRepository _CompanyRep;
- public DailyFeePaymentRepository(SqlSugarClient sqlSugar, IMapper mapper, System.SetDataTypeRepository setDataTypeRep,
- UsersRepository usersRep, CompanyRepository companyRep)
- : base(sqlSugar)
- {
- this._mapper = mapper;
- this._setDataTypeRep = setDataTypeRep;
- this._UsersRep = usersRep;
- this._CompanyRep = companyRep;
- }
- /// <summary>
- /// 日付申请查询 使用的数据源
- /// </summary>
- /// <param name="dto"></param>
- /// <returns></returns>
- public async Task<Result> GetPagePriceTypeData(PortDtoBase dto, int currUserId = 0)
- {
- Result result = new Result() { Code = -2 };
- dynamic? DailyFeePaymentList = null;
- var setTypeData = _setDataTypeRep.QueryDto<Sys_SetDataType, Fin_DailyFeePaymentPagePriceTypeView>().ToList();
- var setData = _setDataTypeRep.QueryDto<Sys_SetData, Fin_DailyFeePaymentPagePriceSubTypeView>().ToList();
- //48人员费用 49办公费用 50 销售费用 51 其他费用 55 大运会
- var typeIds = new List<int>() {
- 48, //人员费用
- 49, //办公费用
- 50, //销售费用
- 51, //其他费用
- 55, //大运会
- 90, //各部门基础固定费用明细
- };
- var priceTypeData = setTypeData.Where(s => typeIds.Contains(s.Id)).ToList();
- var priceSubTypeData = setData.Where(s => typeIds.Contains(s.STid)).ToList();
- var isEnable = false;
- //员工姓名列表
- var userData = _sqlSugar.Queryable<Sys_Users>()
- .LeftJoin<Sys_Department>((u, d) => u.DepId == d.Id)
- .LeftJoin<Sys_JobPost>((u, d, jp) => u.JobPostId == jp.Id)
- .Where((u, d, jp) => u.IsDel == 0)
- .Select((u, d, jp) => new
- {
- u.Id,
- u.CnName,
- u.DepId,
- d.DepName,
- u.JobPostId,
- jp.JobName
- })
- .ToList();
- //1 经理职位 查看该部门下所有人员
- if (currUserId > 0)
- {
- //42
- var auditUserIds = _sqlSugar.Queryable<Sys_UserAuthority>().Where(x => x.IsDel == 0 && x.SmId == 42 && x.FId == 12).Select(x => x.UId).ToList();
- if (!auditUserIds.Contains(currUserId))
- {
- var screenWheres = new List<string>() { "经理", "主管" };
- var userInfo = userData.Find(x => x.Id == currUserId && screenWheres.Contains(x.JobName));
- if (userInfo != null)
- {
- userData = userData.Where(x => x.DepName.Equals(userInfo.DepName)).ToList();
- }
- else
- {
- userData = userData.Where(x => x.Id == currUserId).ToList();
- }
- }
- else
- {
- userData.Insert(0, new { Id = -1, CnName = "全部", DepId = 0, DepName = "", JobPostId = 0, JobName = "" });
- }
-
- }
- var userData1 = userData.Select(x => new { x.Id, x.CnName }).ToList();
- //62 公转 63 私转
- var feeMarkTypeData = setTypeData.Where(s => s.Id == 62 || s.Id == 63).ToList();
- var feeMarkSubTypeData = setData.Where(s => s.STid == 62 || s.STid == 63).ToList();
- var companyNameData = await _CompanyRep.GetCompanyNameData();
- if (dto.PortType == 1) //web
- {
- DailyFeePaymentList = new
- {
- FeeTypeData = priceTypeData,
- FeeSubTypeData = priceSubTypeData,
- UserNameData = userData1,
- FeeMarkTypeData = feeMarkTypeData,
- FeeMarkSubTypeData = feeMarkSubTypeData,
- CompanyNameData = companyNameData.Data
- };
- }
- else if (dto.PortType == 2) //安卓
- {
- DailyFeePaymentList = new
- {
- UserNameData = userData1,
- FeeTypeData = priceTypeData,
- FeeTypeSubData = priceSubTypeData
- };
- }
- result.Code = 0;
- result.Msg = "查询成功!";
- result.Data = DailyFeePaymentList;
- return result;
- }
- /// <summary>
- /// 日付申请查询 使用的数据源
- /// </summary>
- /// <param name="dto"></param>
- /// <returns></returns>
- public async Task<Result> GetPriceTypeAddData(PortDtoBase dto)
- {
- Result result = new Result() { Code = -2 };
- dynamic? DailyFeePaymentList = null;
- var setTypeData = _setDataTypeRep.QueryDto<Sys_SetDataType, Fin_DailyFeePaymentPagePriceTypeView>().ToList();
- var setData = _setDataTypeRep.QueryDto<Sys_SetData, Fin_DailyFeePaymentPagePriceSubTypeView>().ToList();
- //48人员费用 49办公费用 50 销售费用 51 其他费用 55 大运会
- var priceTypeData = setTypeData.Where(s => s.Id == 48 || s.Id == 49 || s.Id == 50 || s.Id == 51 || s.Id == 55).ToList();
- var priceSubTypeData = setData.Where(s => s.STid == 48 || s.STid == 49 || s.STid == 50 || s.STid == 51 || s.STid == 55).ToList();
- //员工姓名列表
- var userNameData = await _UsersRep.GetUserNameList(dto.PortType);
- //62 公转 63 私转
- var feeMarkTypeData = setTypeData.Where(s => s.Id == 62 || s.Id == 63).ToList();
- var feeMarkSubTypeData = setData.Where(s => s.STid == 62 || s.STid == 63).ToList();
- var companyNameData = await _CompanyRep.GetCompanyNameData();
- if (dto.PortType == 1) //web
- {
- DailyFeePaymentList = new Fin_DailyFeePaymentPagePriceTypeDataView
- {
- FeeTypeData = priceTypeData,
- FeeSubTypeData = priceSubTypeData,
- UserNameData = userNameData.Data,
- FeeMarkTypeData = feeMarkTypeData,
- FeeMarkSubTypeData = feeMarkSubTypeData,
- CompanyNameData = companyNameData.Data
- };
- }
- else if (dto.PortType == 2) //安卓
- {
- DailyFeePaymentList = new
- {
- CompanyNameData = companyNameData.Data,
- FeeTypeData = feeMarkTypeData,
- FeeTypeSubData = feeMarkSubTypeData
- };
- }
- result.Code = 0;
- result.Msg = "查询成功!";
- result.Data = DailyFeePaymentList;
- return result;
- }
- /// <summary>
- /// 日付申请 page 查询
- /// </summary>
- /// <param name="dto"></param>
- /// <returns></returns>
- public async Task<Result> GetPageSearchAll(PageDailyFeePaymentDto dto)
- {
- Result result = new Result() { Code = -2 };
- ListViewBase<Fin_DailyFeePaymentPageListView> dailyFeePaymentPageList = new ListViewBase<Fin_DailyFeePaymentPageListView>()
- {
- ReceiveDt = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
- };
- #region sql条件处理
- string sqlWhere = "";
- if (dto.CompanyId != -1) //公司
- sqlWhere += string.Format(" And dfp.CompanyId = {0}", dto.CompanyId);
- if (dto.FinancialAuditStatus != -1) //财务审核
- sqlWhere += string.Format(" And dfp.FAudit = {0}", dto.FinancialAuditStatus);
- if (dto.ManagerAuditStatus != -1) //总经理审核
- sqlWhere += string.Format(" And dfp.MAudit = {0}", dto.ManagerAuditStatus);
- if (dto.IsPaySign != -1) //付款状态
- {
- sqlWhere += string.Format(" And dfp.IsPay = {0}", dto.IsPaySign);
- }
- if (dto.FeeTypeId != -1) //费用类型
- {
- if (dto.FeeSubTypeId != -1) //子类处理
- {
- sqlWhere += string.Format(" And dfp.PriceTypeId = {0}", dto.FeeSubTypeId);
- }
- else
- {
- var setData = _setDataTypeRep.QueryDto<Sys_SetData, SetDataView>(s => s.STid == dto.FeeTypeId).ToList();
- if (setData.Count > 0)
- {
- string setDataIds = "";
- foreach (var item in setData)
- {
- setDataIds += item.Id + ",";
- }
- if (setDataIds.Length > 0)
- {
- setDataIds = setDataIds.Substring(0, setDataIds.Length - 1);
- sqlWhere += string.Format(" And dfp.PriceTypeId In ({0})", setDataIds);
- }
- }
- }
- }
- if (!string.IsNullOrEmpty(dto.FeeDesc))
- sqlWhere += string.Format(" And dfp.Instructions Like '%{0}%'", dto.FeeDesc);
- if (dto.CreateUserId != -1)
- sqlWhere += string.Format(" And dfp.CreateUserId = {0}", dto.CreateUserId);
- int startIndex = (dto.PageIndex - 1) * dto.PageSize + 1;
- int endIndex = startIndex + dto.PageSize - 1;
- string sqlPage = string.Format(@"Select * From (
- Select row_number() over (order by dfp.Id Desc) as RowNumber,
- dfp.Id,dfp.CompanyId,c.CompanyName,dfp.Instructions,dfp.SumPrice,
- dfp.CreateUserId,u.CnName CreateUser,dfp.CreateTime,dfp.FAudit,dfp.MAudit,
- dfp.PriceTypeId,dfp.IsPay
- From Fin_DailyFeePayment dfp
- Inner Join Sys_Company c On dfp.CompanyId = c.Id
- Left Join Sys_Users u On dfp.CreateUserId = u.Id
- Where dfp.IsDel=0 {0}
- ) temp Where RowNumber Between {1} and {2}", sqlWhere, startIndex, endIndex);
- string sqlCount = string.Format(@"Select COUNT(1) as Count From (
- Select dfp.Id,dfp.CompanyId,c.CompanyName,dfp.Instructions,dfp.SumPrice,
- dfp.CreateUserId,u.CnName CreateUser,dfp.CreateTime,dfp.FAudit,dfp.MAudit,
- dfp.PriceTypeId
- From Fin_DailyFeePayment dfp
- Inner Join Sys_Company c On dfp.CompanyId = c.Id
- Left Join Sys_Users u On dfp.CreateUserId = u.Id
- Where dfp.IsDel=0 {0}
- ) temp ", sqlWhere);
- #endregion
- if (dto.PortType == 1 || dto.PortType == 2 || dto.PortType == 3) //web
- {
- //Fin_DailyFeePaymentPageCount
- var dailyFeePaymentCount = await _sqlSugar.SqlQueryable<Fin_DailyFeePaymentPageCount>(sqlCount).FirstAsync();
- var DailyFeePaymentData = await _sqlSugar.SqlQueryable<Fin_DailyFeePaymentPageListView>(sqlPage).ToListAsync();
- int totalCount = dailyFeePaymentCount.Count;
- dailyFeePaymentPageList = new ListViewBase<Fin_DailyFeePaymentPageListView>
- {
- CurrPageIndex = dto.PageIndex,
- CurrPageSize = dto.PageSize,
- DataCount = totalCount,
- DataList = DailyFeePaymentData
- };
- }
- result.Code = 0;
- result.Msg = "查询成功!";
- result.Data = dailyFeePaymentPageList;
- return result;
- }
- /// <summary>
- /// 日付申请 single 查询 By Id
- /// </summary>
- /// <param name="dto"></param>
- /// <returns></returns>
- public async Task<Result> GetSearchById(SearchDailyFeePaymentDto dto)
- {
- Result result = new Result() { Code = -2 };
- if (dto.PortType == 1) //web
- {
- Fin_DailyFeePaymentInfolView feeData = new Fin_DailyFeePaymentInfolView();
- string feeSql = string.Format(@"Select * From Fin_DailyFeePayment
- Where IsDel=0 And Id = {0} ", dto.Id);
- feeData = await _sqlSugar.SqlQueryable<Fin_DailyFeePaymentInfolView>(feeSql).FirstAsync();
- string feeContentSql = string.Format(@"Select * From Fin_DailyFeePaymentContent
- Where IsDel=0 And DFPId = {0} ", dto.Id);
- feeData.FeeContents = await _sqlSugar.SqlQueryable<Fin_DailyFeePaymentContentInfolView>(feeContentSql).ToListAsync();
- result.Code = 0;
- result.Msg = "查询成功!";
- result.Data = feeData;
- }
- else if (dto.PortType == 2 || dto.PortType == 3) //android And ios
- {
- Fin_DailyFeePaymentInfoAndroidlView feeData = new Fin_DailyFeePaymentInfoAndroidlView();
- string feeSql = string.Format(@"Select * From Fin_DailyFeePayment
- Where IsDel=0 And Id = {0} ", dto.Id);
- feeData = await _sqlSugar.SqlQueryable<Fin_DailyFeePaymentInfoAndroidlView>(feeSql).FirstAsync();
- //feeData.TransferTypeId = feeData.TransferTypeId == 0 ? 62 : feeData.TransferTypeId == 1 ? 63 : 0;
- string feeContentSql = string.Format(@"Select * From Fin_DailyFeePaymentContent
- Where IsDel=0 And DFPId = {0} ", dto.Id);
- feeData.FeeContents = await _sqlSugar.SqlQueryable<Fin_DailyFeePaymentContentInfolView>(feeContentSql).ToListAsync();
- result.Code = 0;
- result.Msg = "查询成功!";
- result.Data = feeData;
- }
- return result;
- }
- /// <summary>
- /// 日付申请 添加
- /// </summary>
- /// <param name="dto"></param>
- /// <returns></returns>
- public async Task<Result> Add(AddDailyFeePaymentDto dto)
- {
- Result result = new Result() { Code = -2 };
- _sqlSugar.BeginTran();
- try
- {
- Fin_DailyFeePayment _fee = _mapper.Map<Fin_DailyFeePayment>(dto);
- _fee.CreateUserId = dto.UserId;
- /*
- * 2024-10-29
- * 各部门基础固定费用明细”里的费用数据新增后,财务和总经理审核都默认直接通过isAudit=1),并且可编辑,如果ispay=1的话将不可编辑
- */
- var priceTypeInfo = await _sqlSugar.Queryable<Sys_SetData>().Where(x => x.IsDel == 0 && x.Id == dto.PriceTypeId).FirstAsync();
- if (priceTypeInfo != null && priceTypeInfo.STid == 90)
- {
- _fee.FAudit = 1;
- _fee.FAuditDate = DateTime.Now;
- _fee.MAudit = 1;
- _fee.MAuditDate = DateTime.Now;
- }
- int? feeId = await _sqlSugar.Insertable(_fee).ExecuteReturnIdentityAsync();
- if (dto.FeeContents.Count > 0)
- {
- List<Fin_DailyFeePaymentContent> _feeContents = _mapper.Map<List<Fin_DailyFeePaymentContent>>(dto.FeeContents);
- foreach (var item in _feeContents)
- {
- item.DFPId = feeId == null ? -1 : Convert.ToInt32(feeId);
- item.CreateUserId = dto.UserId;
- }
- await _sqlSugar.Insertable(_feeContents).ExecuteCommandAsync();
- }
- _sqlSugar.CommitTran();
- result.Code = 0;
- var data = new { dailyId = feeId, sign = 1 };
- result.Data = data;
- }
- catch (Exception ex)
- {
- _sqlSugar.RollbackTran();
- result.Msg = ex.Message;
- }
- return result;
- }
- /// <summary>
- /// 日付申请 编辑
- /// </summary>
- /// <param name="dto"></param>
- /// <returns></returns>
- public async Task<Result> Edit(EditDailyFeePaymentDto dto)
- {
- Result result = new Result() { Code = -2 };
- #region 已审核过的日付申请不可编辑
- var _DailyFeePayment = await _sqlSugar.Queryable<Fin_DailyFeePayment>().Where(it => it.Id == dto.Id && it.IsDel == 0).FirstAsync();
- if (_DailyFeePayment != null)
- {
- if (_DailyFeePayment.FAudit == 1 || _DailyFeePayment.MAudit == 1)
- {
- var setData = await _sqlSugar.Queryable<Sys_SetData>().Where(x => x.IsDel == 0 && x.Id == dto.PriceTypeId).FirstAsync();
- if (setData != null)
- {
- if (setData.STid == 90)
- {
- if (_DailyFeePayment.IsPay == 1)
- {
- result.Msg = "该笔费用已付款,不可修改!";
- return result;
- }
- }
- else
- {
- result.Msg = "审核已通过,不可修改!";
- return result;
- }
- }
- else
- {
- result.Msg = "审核已通过,不可修改!";
- return result;
- }
- }
- }
- #endregion
- _sqlSugar.BeginTran();
- try
- {
- Fin_DailyFeePayment _fee = _mapper.Map<Fin_DailyFeePayment>(dto);
- _fee.CreateUserId = dto.UserId;
- int? editFeeStatus = await _sqlSugar.Updateable<Fin_DailyFeePayment>()
- .Where(a => a.Id == dto.Id)
- .SetColumns(a => new Fin_DailyFeePayment
- {
- Instructions = dto.Instructions,
- SumPrice = dto.SumPrice,
- TransferTypeId = dto.TransferTypeId,
- PriceTypeId = dto.PriceTypeId,
- CompanyId = dto.CompanyId,
- }).ExecuteCommandAsync();
- List<Fin_DailyFeePaymentContent> _feeContents = _mapper.Map<List<Fin_DailyFeePaymentContent>>(dto.FeeContents);
- await _sqlSugar.Updateable<Fin_DailyFeePaymentContent>()
- .Where(a => a.DFPId == _fee.Id)
- .SetColumns(a => new Fin_DailyFeePaymentContent
- {
- IsDel = 1,
- DeleteUserId = _fee.CreateUserId,
- DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
- }).ExecuteCommandAsync();
- if (_feeContents.Count > 0)
- {
- foreach (var item in _feeContents)
- {
- item.DFPId = _fee.Id;
- item.CreateUserId = dto.UserId;
- }
- if (_feeContents.Count > 0)
- {
- await _sqlSugar.Insertable(_feeContents).ExecuteCommandAsync();
- }
- }
- _sqlSugar.CommitTran();
- result.Code = 0;
- var data = new { dailyId = dto.Id, sign = 2 };
- result.Data = data;
- }
- catch (Exception ex)
- {
- _sqlSugar.RollbackTran();
- result.Msg = ex.Message;
- }
- return result;
- }
- /// <summary>
- /// 日付申请 删除
- /// </summary>
- /// <param name="dto"></param>
- /// <returns></returns>
- public async Task<Result> Del(DelDailyFeePaymentDto dto)
- {
- Result result = new Result() { Code = -2 };
- int? delFeeStatus = await _sqlSugar.Updateable<Fin_DailyFeePayment>()
- .Where(a => a.Id == dto.Id)
- .SetColumns(a => new Fin_DailyFeePayment
- {
- IsDel = 1,
- DeleteUserId = dto.Id,
- DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
- }).ExecuteCommandAsync();
- result.Code = 0;
- return result;
- }
- /// <summary>
- /// 日付申请 审核
- /// </summary>
- /// <param name="dto"></param>
- /// <returns></returns>
- public async Task<Result> DailyPaymentAudit(DP_AuditStatusDto dto)
- {
- Result result = new Result() { Code = -2 };
- if (dto.AuditType == 1) //财务审核
- {
- int? auditStatus = await _sqlSugar.Updateable<Fin_DailyFeePayment>()
- .Where(a => a.Id == dto.Id)
- .SetColumns(a => new Fin_DailyFeePayment
- {
- FAudit = dto.AuditStatus,
- FAuditDate = DateTime.Now,
- }).ExecuteCommandAsync();
- if (auditStatus != null && auditStatus > 0)
- result.Code = 0;
- else
- result.Msg = "财务审核操作失败";
- }
- else if (dto.AuditType == 2) //总经理
- {
- int? auditStatus = await _sqlSugar.Updateable<Fin_DailyFeePayment>()
- .Where(a => a.Id == dto.Id)
- .SetColumns(a => new Fin_DailyFeePayment
- {
- MAudit = dto.AuditStatus,
- MAuditDate = DateTime.Now,
- }).ExecuteCommandAsync();
- if (auditStatus != null && auditStatus > 0)
- result.Code = 0;
- else
- result.Msg = "总经理审核操作失败";
- }
- return result;
- }
- }
- }
|