using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using OASystem.API.OAMethodLib; using OASystem.API.OAMethodLib.File; using OASystem.Domain; using OASystem.Domain.Dtos.Financial; using OASystem.Domain.Entities.Groups; using OASystem.Domain.ViewModels.Financial; using OASystem.Domain.ViewModels.Groups; using OASystem.Infrastructure.Repositories.Financial; using OASystem.Infrastructure.Repositories.Groups; using System.Data; namespace OASystem.API.Controllers { /// /// 财务模块 /// [Route("api/[controller]/[action]")] [ApiController] public class FinancialController : ControllerBase { private readonly IMapper _mapper; private readonly IConfiguration _config; private readonly SqlSugarClient _sqlSugar; private readonly SetDataTypeRepository _setDataTypeRep; private readonly DailyFeePaymentRepository _daiRep; //日付申请仓库 private readonly TeamRateRepository _teamRateRep; //团组汇率仓库 private readonly ForeignReceivablesRepository _ForForeignReceivablesRep; //对外收款账单仓库 private readonly ProceedsReceivedRepository _proceedsReceivedRep; //已收款项仓库 /// /// 初始化 /// public FinancialController(IMapper mapper, IConfiguration configuration, DailyFeePaymentRepository daiRep, SqlSugarClient sqlSugar, SetDataTypeRepository setDataTypeRep, TeamRateRepository teamRateRep, ForeignReceivablesRepository ForForeignReceivablesRep, ProceedsReceivedRepository proceedsReceivedRep) { _mapper = mapper; _config = configuration; _daiRep = daiRep; _sqlSugar = sqlSugar; _setDataTypeRep = setDataTypeRep; _teamRateRep = teamRateRep; _ForForeignReceivablesRep = ForForeignReceivablesRep; _proceedsReceivedRep = proceedsReceivedRep; } #region 日付申请 /// /// 获取日付申请 基础数据源 /// /// 日付申请 分页 dto /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostPageSearchDailyPaymentPriceTypeData(PortDtoBase dto) { var result = await _daiRep.GetPagePriceTypeData(dto); if (result == null || result.Code != 0) { return Ok(JsonView(false, result.Msg)); } var data = result.Data; return Ok(JsonView(data)); } /// /// 获取日付申请 基础数据源 - 转账表识 /// /// 日付申请 分页 dto /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task GetSearchDailyPaymentPriceTypeAddData(PortDtoBase dto) { var result = await _daiRep.GetPriceTypeAddData(dto); if (result == null || result.Code != 0) { return Ok(JsonView(false, result.Msg)); } var data = result.Data; return Ok(JsonView(data)); } /// /// 日付申请 Page Search /// /// 日付申请 分页 dto /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostPageSearchDailyPaymentList(PageDailyFeePaymentDto dto) { var result = await _daiRep.GetPageSearchAll(dto); if (result == null || result.Code != 0) { return Ok(JsonView(false, result.Msg)); } var data = result.Data; if (data == null) { return Ok(JsonView(false, result.Msg)); } return Ok(JsonView(data)); } /// /// 日付申请 Single Search By Id /// /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostSearchDailyPaymentInfo(SearchDailyFeePaymentDto dto) { var result = await _daiRep.GetSearchById(dto); if (result == null || result.Code != 0) { return Ok(JsonView(false, result.Msg)); } return Ok(JsonView(result.Data)); } /// /// 日付申请 添加 /// /// 日付申请 添加 dto /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostAddDailyPayment(AddDailyFeePaymentDto dto) { var result = await _daiRep.Add(dto); if (result == null || result.Code != 0) { return Ok(JsonView(false, result.Msg)); } return Ok(JsonView(true)); } /// /// 日付申请 Update /// /// 日付申请 修改 dto /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostEditDailyPayment(EditDailyFeePaymentDto dto) { var result = await _daiRep.Edit(dto); if (result == null || result.Code != 0) { return Ok(JsonView(false, result.Msg)); } return Ok(JsonView(true)); } /// /// 日付申请 Del /// /// 日付申请 删除 dto /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostDelDailyPayment(DelDailyFeePaymentDto dto) { var result = await _daiRep.Del(dto); if (result == null || result.Code != 0) { return Ok(JsonView(false, result.Msg)); } return Ok(JsonView(true)); } /// /// 日付申请 财务审核 /// /// dto /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostDelDailyPaymentAudit(DP_AuditStatusDto dto) { var result = await _daiRep.DelDailyPaymentAudit(dto); if (result == null || result.Code != 0) { return Ok(JsonView(false, result.Msg)); } return Ok(JsonView(true)); } /// /// 日付申请 Single Excel Download /// /// dto /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostExcelDailyPaymentDownload(SearchDailyFeePaymentDto dto) { if (dto.PortType == 1 || dto.PortType == 2) { 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(feeSql).FirstAsync(); if (feeData == null) { return Ok(JsonView(false, "暂无数据!")); } string feeContentSql = string.Format(@"Select * From Fin_DailyFeePaymentContent Where IsDel=0 And DFPId = {0} ", dto.Id); feeData.FeeContents = await _sqlSugar.SqlQueryable(feeContentSql).ToListAsync(); if (feeData != null) { string userName = string.Empty; string userSql = string.Format("Select * From Sys_Users Where Id={0} And Isdel = {1}", feeData.CreateUserId, 0); Sys_Users user = await _sqlSugar.SqlQueryable(userSql).FirstAsync(); if (user != null) { userName = user.CnName; } var setData = _setDataTypeRep.QueryDto().ToList(); //48人员费用 49办公费用 50 销售费用 51 其他费用 55 大运会 var priceSubTypeData = setData.Where(s => s.STid == 55).ToList(); Dictionary pairs = new Dictionary(); List datas = new List(); //if (priceSubTypeData.Where(s => s.Id == feeData.PriceTypeId).ToList().Count() > 0)//大运会专属模板 //{ // //AsposeHelper.ExpertExcelToModel("日常费用付款申请模板-大运会数据.xls", "DailyPayment", "大运会所有日常费用付款申请.xls", // // pairs, datas); //} //else //日付常规模板 //{ pairs.Clear(); pairs.Add("Opertor", userName); pairs.Add("DateTime", feeData.CreateTime.ToString("yyyy-MM-dd HH:mm:ss")); pairs.Add("FAuditStatus", feeData.FAuditDesc); pairs.Add("MAuditStatus", feeData.MAuditDesc); pairs.Add("SumPrice", feeData.SumPrice); DataTable data = AsposeHelper.ListToDataTable("DailyFeePayment", feeData.FeeContents); datas.Clear(); datas.Add(data); string fileName = string.Format("{0}-日常费用付款申请.xlsx", feeData.Instructions); string msg = AsposeHelper.ExpertExcelToModel("日常费用付款申请模板.xlsx", "DailyPayment", fileName, pairs, datas); return Ok(JsonView(true, msg)); //} } else { return Ok(JsonView(false, "暂无数据!")); } } return Ok(JsonView(true)); } #endregion #region 团组提成 /// /// 提成 Page Search /// /// 提成 分页 dto /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostPageSearchCommissionList(GroupCommissionDto dto) { var data = await GroupCommission.GetCommissionPageList(dto); return Ok(JsonView(data.Data)); } #endregion #region 团组汇率 /// /// 团组汇率 Select数据源(团组列,汇率列) /// /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task GetGroupRateDataSources(TeamRateDto dto) { try { Result teamRateData = await _teamRateRep.GetGroupRateDataSource(dto); if (teamRateData.Code != 0) { return Ok(JsonView(false, teamRateData.Msg)); } return Ok(JsonView(true, teamRateData.Msg, teamRateData.Data)); } catch (Exception ex) { return Ok(JsonView(false, ex.Message)); throw; } } ///// ///// 团组汇率 changge ///// ///// //[HttpPost] //[ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] //public async Task ChangeGroupRateInfo() //{ // try // { // Result teamRateData = await _teamRateRep.GetGroupRateChangeData(); // if (teamRateData.Code != 0) // { // return Ok(JsonView(false, teamRateData.Msg)); // } // return Ok(JsonView(true, teamRateData.Msg, teamRateData.Data)); // } // catch (Exception ex) // { // return Ok(JsonView(false, ex.Message)); // throw; // } //} /// /// 团组汇率 Select汇率详情 /// /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task GetGroupRateInfo(TeamRateInfoDto dto) { try { Result teamRateData = await _teamRateRep.GetGroupRateInfoByDiid(dto); if (teamRateData.Code != 0) { return Ok(JsonView(false, teamRateData.Msg)); } return Ok(JsonView(true, teamRateData.Msg, teamRateData.Data)); } catch (Exception ex) { return Ok(JsonView(false, ex.Message)); throw; } } /// /// 团组汇率 添加 or 更新 /// /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostGroupRateUpdate(TeamRateUpdateDto dto) { try { Result teamRateData = await _teamRateRep.PostGroupRateUpdate(dto); if (teamRateData.Code != 0) { return Ok(JsonView(false, teamRateData.Msg)); } return Ok(JsonView(true, teamRateData.Msg, teamRateData.Data)); } catch (Exception ex) { return Ok(JsonView(false, ex.Message)); throw; } } #endregion #region 对外收款账单 关联已收款项 /// /// 对外收款账单 Select数据源(团组名,币种,汇款方式) /// 关联已收款项 /// /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task GetForeignReceivablesDataSources() { try { Result ffrData = await _ForForeignReceivablesRep.GetDataSource(); if (ffrData.Code != 0) { return Ok(JsonView(false, ffrData.Msg)); } return Ok(JsonView(true, ffrData.Msg, ffrData.Data)); } catch (Exception ex) { return Ok(JsonView(false, ex.Message)); throw; } } /// /// 对外收款账单 /// 账单详情 /// 关联已收款项 /// /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task GetGroupReceivablesInfoByDiId(ForForeignReceivablesInfoDto dto) { try { Result ffrData = await _ForForeignReceivablesRep.GetGroupReceivablesInfoByDiId(dto); if (ffrData.Code != 0) { return Ok(JsonView(false, ffrData.Msg)); } return Ok(JsonView(true, ffrData.Msg, ffrData.Data)); } catch (Exception ex) { return Ok(JsonView(false, ex.Message)); throw; } } /// /// 对外收款账单 /// 账单 删除 /// 关联已收款项 /// /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostGroupReceivablesDel(DelForForeignReceivablesInfoDto dto) { try { Result ffrData = await _ForForeignReceivablesRep._Del(dto); if (ffrData.Code != 0) { return Ok(JsonView(false, ffrData.Msg)); } return Ok(JsonView(true, ffrData.Msg, ffrData.Data)); } catch (Exception ex) { return Ok(JsonView(false, ex.Message)); throw; } } /// /// 对外收款账单 /// 添加 And 更新 /// 关联已收款项 /// /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostReceivablesOperate(ForeignReceivablesAddAndUpdateDto dto) { try { Result ffrData = await _ForForeignReceivablesRep.PostReceivablesOperate(dto); if (ffrData.Code != 0) { return Ok(JsonView(false, ffrData.Msg)); } return Ok(JsonView(true, ffrData.Msg, ffrData.Data)); } catch (Exception ex) { return Ok(JsonView(false, ex.Message)); throw; } } /// /// 已收款项 /// 账单 删除 /// 关联已收款项 /// /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostAmountReceivedDel(ProceedsReceivedDelDto dto) { try { Result ffrData = await _proceedsReceivedRep._Del(dto); if (ffrData.Code != 0) { return Ok(JsonView(false, ffrData.Msg)); } return Ok(JsonView(true, ffrData.Msg, ffrData.Data)); } catch (Exception ex) { return Ok(JsonView(false, ex.Message)); throw; } } /// /// 已收款项 /// 添加 And 更新 /// 关联已收款项 /// /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostAmountReceivedOperate(ProceedsReceivedDto dto) { try { Result ffrData = await _proceedsReceivedRep.PostAmountReceivedOperate(dto); if (ffrData.Code != 0) { return Ok(JsonView(false, ffrData.Msg)); } return Ok(JsonView(true, ffrData.Msg, ffrData.Data)); } catch (Exception ex) { return Ok(JsonView(false, ex.Message)); throw; } } /// /// 财务 已收款项 /// 分配已收款项至 应收项下 /// 关联已收款项 /// /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostAllocateAmountReceived(AllocateAmountReceivedDto dto) { try { Result ffrData = await _proceedsReceivedRep.PostAllocateAmountReceived(dto); if (ffrData.Code != 0) { return Ok(JsonView(false, ffrData.Msg)); } return Ok(JsonView(true)); } catch (Exception ex) { return Ok(JsonView(false, ex.Message)); throw; } } ///// ///// 财务 收款账单 ///// 导出Word(北京,四川) ///// ///// ///// //[HttpPost] //[ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] //public async Task PostAccountReceivableWordExport(AccountReceivableWordExportDto dto) //{ // try // { // //模板处理 // string typeName = string.Empty; // if (dto.TemplateType == 1) //四川 // { // typeName = "四川"; // } // else if (dto.TemplateType == 2) //北京 // { // typeName = "北京"; // } // else return Ok(JsonView(false,"请选择正确的模板类型!")); // string wordTempName = string.Format("收款账单({0})模板.doc", typeName); // } // catch (Exception ex) // { // return Ok(JsonView(false, ex.Message)); // } //} #endregion #region 对外收款账单 /// /// 对外收款账单 /// 数据源 /// /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostGroupReceivablesDataSource() { try { Result ffrData = await _ForForeignReceivablesRep.PostDataSource(); if (ffrData.Code != 0) { return Ok(JsonView(false, ffrData.Msg)); } return Ok(JsonView(true, ffrData.Msg, ffrData.Data)); } catch (Exception ex) { return Ok(JsonView(false, ex.Message)); throw; } } /// /// 对外收款账单 /// 账单详情 /// /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostGroupReceivablesInfoByDiId(ForForeignReceivablesNewDto dto) { try { Result ffrData = await _ForForeignReceivablesRep.PostGroupReceivablesInfoByDiId(dto); if (ffrData.Code != 0) { return Ok(JsonView(false, ffrData.Msg)); } return Ok(JsonView(true, ffrData.Msg, ffrData.Data)); } catch (Exception ex) { return Ok(JsonView(false, ex.Message)); throw; } } /// /// 对外收款账单 /// 添加 And 更新 /// /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostReceivablesSave(ForeignReceivablesSaveDto dto) { try { Result ffrData = await _ForForeignReceivablesRep.PostReceivablesSave(dto); if (ffrData.Code != 0) { return Ok(JsonView(false, ffrData.Msg)); } return Ok(JsonView(true, ffrData.Msg, ffrData.Data)); } catch (Exception ex) { return Ok(JsonView(false, ex.Message)); throw; } } /// /// 已收账单 /// 删除 /// /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostReceivablesDel(ForeignReceivablesDelDto dto) { try { Result ffrData = await _ForForeignReceivablesRep.PostReceivablesDel(dto); if (ffrData.Code != 0) { return Ok(JsonView(false, ffrData.Msg)); } return Ok(JsonView(true, ffrData.Msg, ffrData.Data)); } catch (Exception ex) { return Ok(JsonView(false, ex.Message)); throw; } } #endregion #region 已收款项 /// /// 已收款项 /// 查询 /// /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostAmountReceived(AmountReceivedDto dto) { try { if (dto == null) { return Ok(JsonView(false, "参数不能为空!")); } Result ffrData = await _proceedsReceivedRep.PostAmountReceived(dto.DiId ); dynamic data = null; if (dto.PortType == 1) { if (ffrData.Code != 0) { return Ok(JsonView(false, ffrData.Msg)); } data= ffrData.Data; } else if(dto.PortType == 2) { if (ffrData.Code != 0) { return Ok(JsonView(false, ffrData.Msg)); } data = ffrData.Data; } else if (dto.PortType == 2) { if (ffrData.Code != 0) { return Ok(JsonView(false, ffrData.Msg)); } data = ffrData.Data; } else { return Ok(JsonView(false, "请选择正确的端口号!")); } return Ok(JsonView(true,"操作成功!", data)); } catch (Exception ex) { return Ok(JsonView(false, ex.Message)); } } /// /// 已收款项 /// Add Or Edit /// /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostAmountReceivedAddOrEdit(AmountReceivedAddOrEditDto dto) { try { if (dto == null) { return Ok(JsonView(false, "参数不能为空!")); } Result ffrData = await _proceedsReceivedRep.PostAmountReceivedAddOrEditDto(dto); if (dto.PortType == 1) { if (ffrData.Code != 0) { return Ok(JsonView(false, ffrData.Msg)); } } else if (dto.PortType == 2) { if (ffrData.Code != 0) { return Ok(JsonView(false, ffrData.Msg)); } } else if (dto.PortType == 2) { if (ffrData.Code != 0) { return Ok(JsonView(false, ffrData.Msg)); } } else { return Ok(JsonView(false, "请选择正确的端口号!")); } return Ok(JsonView(true, "操作成功!")); } catch (Exception ex) { return Ok(JsonView(false, ex.Message)); } } /// /// 已收款项 /// Del /// /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostAmountReceived_Del(AmountReceivedDelDto dto) { try { if (dto == null) { return Ok(JsonView(false, "参数不能为空!")); } Result ffrData = await _proceedsReceivedRep.PostAmountReceivedDel(dto); if (ffrData.Code != 0) { return Ok(JsonView(false, ffrData.Msg)); } return Ok(JsonView(true, "操作成功!")); } catch (Exception ex) { return Ok(JsonView(false, ex.Message)); } } #endregion } }