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
}
}