using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; 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 System.Data; namespace OASystem.API.Controllers { /// <summary> /// 财务模块 /// </summary> [Route("api/[controller]/[action]")] [ApiController] public class FinancialController : ControllerBase { private readonly IMapper _mapper; private readonly IConfiguration _config; private readonly DailyFeePaymentRepository _daiRep; private readonly SqlSugarClient _sqlSugar; private readonly SetDataTypeRepository _setDataTypeRep; /// <summary> /// 初始化 /// </summary> public FinancialController(IMapper mapper, IConfiguration configuration, DailyFeePaymentRepository daiRep, SqlSugarClient sqlSugar, SetDataTypeRepository setDataTypeRep) { this._mapper = mapper; this._config = configuration; this._daiRep = daiRep; this._sqlSugar = sqlSugar; this._setDataTypeRep = setDataTypeRep; } #region 日付申请 /// <summary> /// 获取日付申请 基础数据源 /// </summary> /// <param name="dto"> 日付申请 分页 dto</param> /// <returns></returns> [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task<IActionResult> PostPageSearchDailyPaymentPriceTypeData(DtoBase 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)); } /// <summary> /// 日付申请 Page Search /// </summary> /// <param name="dto"> 日付申请 分页 dto</param> /// <returns></returns> [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task<IActionResult> 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)); } /// <summary> /// 日付申请 Single Search By Id /// </summary> /// <param name="dto"></param> /// <returns></returns> [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task<IActionResult> 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)); } /// <summary> /// 日付申请 添加 /// </summary> /// <param name="dto"> 日付申请 添加 dto</param> /// <returns></returns> [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task<IActionResult> 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)); } /// <summary> /// 日付申请 Update /// </summary> /// <param name="dto"> 日付申请 修改 dto</param> /// <returns></returns> [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task<IActionResult> 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)); } /// <summary> /// 日付申请 Del /// </summary> /// <param name="dto"> 日付申请 删除 dto</param> /// <returns></returns> [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task<IActionResult> 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)); } /// <summary> /// 日付申请 财务审核 /// </summary> /// <param name="dto"> dto </param> /// <returns></returns> [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task<IActionResult> 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)); } /// <summary> /// 日付申请 Single Excel Download /// </summary> /// <param name="dto"> dto </param> /// <returns></returns> [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task<IActionResult> 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<Fin_DailyFeePaymentInfolView>(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<Fin_DailyFeePaymentContentInfolView>(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<Sys_Users>(userSql).FirstAsync(); if (user != null) { userName = user.CnName; } var setData = _setDataTypeRep.QueryDto<Sys_SetData, Fin_DailyFeePaymentPagePriceSubTypeView>().ToList(); //48人员费用 49办公费用 50 销售费用 51 其他费用 55 大运会 var priceSubTypeData = setData.Where(s => s.STid == 55).ToList(); Dictionary<string, object> pairs = new Dictionary<string, object>(); List<DataTable> datas = new List<DataTable>(); //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 } }