Commit 6c7e877d by zhoujinhui

新增付现流水明细导出

parent 8869cc37
namespace Bailun.DC.Models.Dtos.BasicData
{
/// <summary>
/// 公司信息列表
/// </summary>
public class CompanyListOutPutDto
{
/// <summary>
/// 公司编码
/// </summary>
public string company_code { get; set; }
/// <summary>
/// 公司名称
/// </summary>
public string company_name { get; set; }
/// <summary>
/// 公司id
/// </summary>
public int company_value { get; set; }
/// <summary>
/// 公司主体类型
/// </summary>
public int company_type { get; set; }
}
}
namespace Bailun.DC.Models.Dtos.BasicData
{
/// <summary>
/// 费用类型
/// </summary>
public class CostTypeListOutPutDto
{
/// <summary>
/// 费用类型名称
/// </summary>
public string CostTypeName { get; set; }
}
}
......@@ -10,6 +10,36 @@ namespace Bailun.DC.Models.Dtos.Finance
/// </summary>
public class FinanceFeeDetailsPageInputDto: PageRequest
{
/// <summary>
/// 费用单号
/// </summary>
public string CostNo { get; set; }
/// <summary>
/// 公司名称
/// </summary>
public string CompanyName { get; set; }
/// <summary>
/// 费用类型
/// </summary>
public string CostTypeName { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public string[] CreateTime { get; set; }
/// <summary>
/// 最后更新时间
/// </summary>
public string[] LastModifyDate { get; set; }
/// <summary>
/// 付款时间
/// </summary>
public string[] PayTime { get; set; }
public bool IsPages { get; set; } = true;
}
}
using System;
using System.ComponentModel.DataAnnotations.Schema;
namespace Bailun.DC.Models
{
/// <summary>
/// 付现公司主体信息
/// </summary>
[Table("dc_base_finance_company")]
public class dc_base_finance_company
{
/// <summary>
/// id
/// </summary>
public int id { get; set; }
/// <summary>
/// 公司编码
/// </summary>
public string company_code { get; set; }
/// <summary>
/// 公司名称
/// </summary>
public string company_name { get; set; }
/// <summary>
/// 公司id
/// </summary>
public int company_value { get; set; }
/// <summary>
/// 公司主体类型
/// </summary>
public int company_type { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime create_date { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime update_date { get; set; }
/// <summary>
/// 是否删除
/// </summary>
public bool isdelete { get; set; }
}
}
using Bailun.DC.Common;
using Bailun.DC.Models.Common;
using Bailun.DC.Models.Dtos.BasicData;
using Dapper;
using System.Collections.Generic;
using System.Linq;
namespace Bailun.DC.Services.WebApiService
{
/// <summary>
/// 基础数据
/// </summary>
public class BasicDataService
{
/// <summary>
/// 获取付现所有公司信息
/// </summary>
/// <returns></returns>
public CommonApiResponseDto<List<CompanyListOutPutDto>> GetCompanyAllList()
{
var result = new CommonApiResponseDto<List<CompanyListOutPutDto>> { Data = new List<CompanyListOutPutDto>() };
string sql = "SELECT * FROM dc_base_finance_company WHERE 1=1;";
result.Data = SimpleCRUD.Query<CompanyListOutPutDto>(sql, null, GlobalConfig.ConnectionString).ToList();
return result;
}
/// <summary>
/// 获取费用类型
/// </summary>
/// <returns></returns>
public CommonApiResponseDto<List<CostTypeListOutPutDto>> GetCostTypeAllList()
{
var result = new CommonApiResponseDto<List<CostTypeListOutPutDto>> { Data = new List<CostTypeListOutPutDto>() };
string sql = "SELECT type_name AS CostTypeName FROM dc_base_finance_fee GROUP BY type_name;";
result.Data = SimpleCRUD.Query<CostTypeListOutPutDto>(sql, null, GlobalConfig.ConnectionString).ToList();
return result;
}
}
}
......@@ -78,7 +78,7 @@ namespace Bailun.DC.Services.WebApiService
jsonStr += "\"key\":\"" + listValue[i].Item1 + "\",";//第一条费用类型
for (int j = 0; j < listValue[i].Item2.Count; j++)//第一条类型里所有数据
{
jsonStr += "\"" + dtos.Col[j+1].key + "\":\"" + listValue[i].Item2[j] + "\",";
jsonStr += "\"" + dtos.Col[j + 1].key + "\":\"" + listValue[i].Item2[j] + "\",";
}
jsonStr = jsonStr.Trim(',');
jsonStr += "},";
......@@ -125,6 +125,11 @@ namespace Bailun.DC.Services.WebApiService
{
var result = new CommonApiResponseDto<FinanceFeeDetailsPageOutputDto> { Data = new FinanceFeeDetailsPageOutputDto() };
var sqlWhere = BuildAllotOperationLogPageQuerySqlWhere(input, out DynamicParameters parameters);
if (!input.IsPages)
{
result.Data.Items = SimpleCRUD.Query<FinanceFeeDetailsListItem>(sqlWhere, parameters, GlobalConfig.ConnectionString).ToList();
return result;
}
using (var cn = new MySqlConnection(GlobalConfig.ConnectionString))
{
int total = 0;
......@@ -147,7 +152,39 @@ namespace Bailun.DC.Services.WebApiService
OR (t1.is_lend = 2 AND t1.lend_balance > 0)
OR (t1.is_lend = 2 AND t1.cost_form = 1)
)");
if (!string.IsNullOrWhiteSpace(input.CostNo))
{
sqlText.Append(" AND t1.cost_no = @CostNo ");
parameters.Add("CostNo", input.CostNo);
}
if (!string.IsNullOrWhiteSpace(input.CompanyName))
{
sqlText.Append(" AND t1.company_name = @CompanyName ");
parameters.Add("CompanyName", input.CompanyName);
}
if (!string.IsNullOrWhiteSpace(input.CostTypeName))
{
sqlText.Append(" AND t1.type_name = @CostTypeName ");
parameters.Add("CostTypeName", input.CostTypeName);
}
if (input.CreateTime != null && input.CreateTime.Length == 2&& !string.IsNullOrWhiteSpace(input.CreateTime[0]) && !string.IsNullOrWhiteSpace(input.CreateTime[1]))
{
sqlText.Append(" AND t1.create_time >= @StartCreateTime AND t1.create_time < @EndCreateTime ");
parameters.Add("StartCreateTime", Convert.ToDateTime(input.CreateTime[0]));
parameters.Add("EndCreateTime", Convert.ToDateTime(input.CreateTime[1]));
}
if (input.LastModifyDate != null && input.LastModifyDate.Length == 2 && !string.IsNullOrWhiteSpace(input.LastModifyDate[0]) && !string.IsNullOrWhiteSpace(input.LastModifyDate[1]))
{
sqlText.Append(" AND t1.last_modify_date >= @StartLastModifyDate AND t1.last_modify_date < @EndLastModifyDate ");
parameters.Add("StartLastModifyDate", Convert.ToDateTime(input.LastModifyDate[0]));
parameters.Add("EndLastModifyDate", Convert.ToDateTime(input.LastModifyDate[1]));
}
if (input.PayTime != null && input.PayTime.Length == 2 && !string.IsNullOrWhiteSpace(input.PayTime[0]) && !string.IsNullOrWhiteSpace(input.PayTime[1]))
{
sqlText.Append(" AND t1.pay_time = @StartPayTime AND t1.pay_time < @EndPayTime ");
parameters.Add("StartPayTime", Convert.ToDateTime(input.PayTime[0]));
parameters.Add("EndPayTime", Convert.ToDateTime(input.PayTime[1]));
}
sqlText.Append(" ORDER BY t1.create_time DESC ");
return sqlText.ToString();
}
......@@ -224,8 +261,8 @@ and s2.company_type = @CorporateEntity ";
dto.Add(new FinanceDetailsDto
{
FeeId = "合计",
AmountRmb = dto.Sum(x=>x.AmountRmb),
Amount = dto.Sum(x=>x.Amount)
AmountRmb = dto.Sum(x => x.AmountRmb),
Amount = dto.Sum(x => x.Amount)
});
return new CommonApiResponseDto<List<FinanceDetailsDto>> { Data = dto };
}
......
......@@ -10,10 +10,10 @@
</PropertyGroup>
<ItemGroup>
<Compile Remove="wwwroot\**" />
<Content Remove="wwwroot\**" />
<EmbeddedResource Remove="wwwroot\**" />
<None Remove="wwwroot\**" />
<Compile Remove="wwwroot\Files\**" />
<Content Remove="wwwroot\Files\**" />
<EmbeddedResource Remove="wwwroot\Files\**" />
<None Remove="wwwroot\Files\**" />
</ItemGroup>
<ItemGroup>
......@@ -38,4 +38,8 @@
</None>
</ItemGroup>
<ItemGroup>
<Folder Include="wwwroot\" />
</ItemGroup>
</Project>
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.IO;
namespace Bailun.DC.WebApi.Controllers
{
/// <summary>
/// 基类Api控制器
/// </summary>
public class BaseController : ControllerBase
{
/// <summary>
///
/// </summary>
/// <param name="list"></param>
/// <param name="columns"></param>
/// <param name="tbName"></param>
public void ToCSV(List<string> list, List<string> columns, string tbName, string filePath)
{
var strb = string.Empty;
if (System.IO.File.Exists(filePath + tbName + ".csv"))
{
System.IO.File.Delete(filePath + tbName + ".csv");
}
if (!Directory.Exists(filePath))
{
Directory.CreateDirectory(filePath);
}
StreamWriter writer = new StreamWriter(filePath + tbName + ".csv", true, System.Text.Encoding.UTF8);
writer.AutoFlush = true;
//var ms = new System.IO.MemoryStream();
//添加表头
foreach (var item in columns)
{
strb += (item + ",");
}
strb.Remove(strb.Length - 1, 1);
writer.WriteLine(strb.ToString());
//ms.Write(System.Text.Encoding.UTF8.GetBytes(strb.ToString()+"\n"));
//添加表内容
foreach (var item in list)
{
var arr = item.Split('|');
strb = string.Empty;
foreach (var rowitem in arr)
{
var temp = rowitem.Replace("\"", "\"\"");//替换英文冒号 英文冒号需要换成两个冒号
if (temp.Contains(",") || temp.Contains("\"")
|| temp.Contains("\r") || temp.Contains("\n")) //含逗号 冒号 换行符的需要放到引号中
{
temp = string.Format("\"{0}\"", temp);
}
strb += (temp + ",");
}
if (arr.Length > 0)
{
strb.Remove(strb.Length - 1, 1);
writer.WriteLine(strb.ToString());
//ms.Write(System.Text.Encoding.UTF8.GetBytes(strb.ToString() + "\n"));
}
}
writer.Flush();
writer.Close();
writer.Dispose();
}
}
}
using Bailun.DC.Models.Common;
using Bailun.DC.Models.Dtos.BasicData;
using Bailun.DC.Services.WebApiService;
using Bailun.ServiceFabric.Authorize;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
namespace Bailun.DC.WebApi.Controllers
{
/// <summary>
/// 基础数据
/// </summary>
[Route("api/basicData")]
[ApiController]
public class BasicDataController : ControllerBase
{
/// <summary>
/// 获取付现所有公司信息
/// </summary>
/// <returns></returns>
[HttpGet("getCompanyAllList"), BailunAuthentication(LoginMode.Enforce)]
public CommonApiResponseDto<List<CompanyListOutPutDto>> GetCompanyAllList()
{
return new BasicDataService().GetCompanyAllList();
}
/// <summary>
/// 获取费用类型
/// </summary>
/// <returns></returns>
[HttpGet("getCostTypeAllList"), BailunAuthentication(LoginMode.Enforce)]
public CommonApiResponseDto<List<CostTypeListOutPutDto>> GetCostTypeAllList()
{
return new BasicDataService().GetCostTypeAllList();
}
}
}
......@@ -19,8 +19,15 @@ namespace Bailun.DC.WebApi.Controllers
/// </summary>
[Route("api/Finance")]
[ApiController]
public class FinanceController : ControllerBase
public class FinanceController : BaseController
{
private readonly IHostingEnvironment _hostingEnvironment;
public FinanceController(IHostingEnvironment hostingEnvironment)
{
_hostingEnvironment = hostingEnvironment;
}
/// <summary>
/// 测试
/// </summary>
......@@ -50,11 +57,45 @@ namespace Bailun.DC.WebApi.Controllers
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("GetFinanceFeeDetailsPage"), BailunAuthentication(LoginMode.Enforce)]
[HttpPost("getFinanceFeeDetailsPage"), BailunAuthentication(LoginMode.Enforce)]
public CommonApiResponseDto<FinanceFeeDetailsPageOutputDto> GetFinanceFeeDetailsPage([FromBody] FinanceFeeDetailsPageInputDto input)
{
return new FinanceService().GetFinanceFeeDetailsPage(input);
}
/// <summary>
/// 导出明细
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("exportFinanceFeeDetails"), BailunAuthentication(LoginMode.Enforce)]
public ActionResult ExportFinanceFeeDetails([FromBody] FinanceFeeDetailsPageInputDto input)
{
input.IsPages = false;
var dataList = new FinanceService().GetFinanceFeeDetailsPage(input).Data.Items;
var colNames = new List<string> {"费用单号","公司名称","费用类型", "费用总金额", "人民币总金额","付款理由","大类标题","小类标题","收款/付款人",
"收款单位","会计科目","财务审核时间" ,"付款时间","最后更新时间","部门名称","创建人名称","创建时间"};
var list = new List<string>();
foreach (var item in dataList)
{
list.Add(item.cost_no + "|" + item.company_name + "|" + item.type_name + "|" + item.amount +"|"+item.amount_rmb + "|" + item.cost_reason + "|" +
item.type_name + "|" + item.kind_name + "|" + item.bank_card_user+"|"+ item.bank_company + "|"+item.accounting_subject_name+"|"+
item.audit_time + "|"+(item.pay_time.HasValue?item.pay_time.Value.ToString("yyyy-MM-dd HH:mm:ss"):string.Empty) +"|"+
(item.last_modify_date.HasValue? item.last_modify_date.Value.ToString("yyyy-MM-dd HH:mm:ss") : string.Empty) + "|"+
item.department_name + "|"+item.create_username + "|"+ (item.create_time.HasValue ? item.create_time.Value.ToString("yyyy-MM-dd HH:mm:ss") : string.Empty));
}
var guid = Guid.NewGuid().ToString();
var filepath = _hostingEnvironment.WebRootPath + "\\Files\\Report\\" + DateTime.Now.ToString("yyyy-MM-dd") + "\\";
ToCSV(list, colNames, guid, filepath);
var ms = new System.IO.MemoryStream();
using (var f = new System.IO.FileStream(filepath + guid + ".csv", System.IO.FileMode.Open))
{
f.CopyTo(ms);
}
ms.Position = 0;
return File(ms, "text/csv", "付现流水明细.csv");
}
#endregion
/// <summary>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment