Commit bfa47516 by guanzhenshan

增加4k资产负债表页面和更新功能

parent 41f9c27e
......@@ -15,4 +15,9 @@
<PackageReference Include="MySql.Data" Version="8.0.22" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Bailun.DC.Common\Bailun.DC.Common.csproj" />
<ProjectReference Include="..\Bailun.DC.Models\Bailun.DC.Models.csproj" />
</ItemGroup>
</Project>
......@@ -9,7 +9,18 @@ namespace Bailun.DC.BalanceSheet4K
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
//Console.WriteLine("启动服务 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
//var builder = new HostBuilder().ConfigureServices((hostContext, services) =>
//{
// services.AddHostedService<Services>();
//});
//await builder.RunConsoleAsync();
var _service = new Services();
var day = DateTime.Parse("2020-11-30");
_service.Init(day);
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
using MySql.Data.MySqlClient;
using Dapper;
using Bailun.DC.Models;
namespace Bailun.DC.BalanceSheet4K
{
public class Services
{
public void Init()
/// <summary>
/// 每月的第一天
/// </summary>
/// <param name="day"></param>
public void Init(DateTime day)
{
var m = new dc_balance_sheet_4k {
day = day,
cl_count = 0,
cl_dividends_payable = 0,
cl_oneyear_noncurrent_liabilities = 0,
cl_other_liabilities = 0,
cl_payable_interest = 0,
count_assets = 0,
count_liabilities = 0,
count_liabilities_and_oe = 0,
createtime = DateTime.Now,
fa_count = 0,
nca_count = 0,
ncl_count = 0,
oe_capital_reserve=0,
oe_count = 0,
oe_paicl_up_capital = 0,
oe_parentcompany_count = 0,
accounts_payable = 0,
accounts_receivable = 0,
advance_received = 0,
fixed_assets = 0,
fa_interest_receivable = 0,
isedit=0,
lastupdatetime = DateTime.Now,
lastupdateuserid = 0,
lastupdateusername = "admin",
ncl_longterm_loan=0,
ncl_other_liabilities = 0,
monetary_fund = 0,
oe_minority_equity = 0,
oe_surplus_public_accumulation = 0,
oe_undistributed_profit = 0,
other_accounts_payable = 0,
other_accounts_receivable = 0,
payable_remuneration = 0,
short_term_borrow = 0,
prepayment = 0,
taxes_payable = 0,
};
using (var cn = new MySqlConnection(Bailun.DC.Common.GlobalConfig.ConnectionString_read))
{
if(cn.State== System.Data.ConnectionState.Closed)
{
cn.Open();
}
var sql = "";
//货币资金
sql = $@"select sum(balance_rmb) as balance_rmb from dc_bank_account_balance_new where statistical_time='{day.AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd")}' and company_system_id=2;";
m.monetary_fund = cn.QueryFirstOrDefault<decimal?>(sql)??0;
//其他应收款
sql = $@"select sum((a.amount - a.had_pay + (a.compensate)) * a.to_rmb_rate) from dc_daily_fee a where `cost_status`=4 and recoed_time='{day.AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd")}' and company_name like '%四千里%'";
m.other_accounts_receivable = cn.QueryFirstOrDefault<decimal?>(sql)??0;
//固定资产
sql = $@"select sum(amount_rmb) from dc_base_finance_fee where type_name='固定资产' and company_name like '%四千里%' and cost_status=4";
m.fixed_assets = cn.QueryFirstOrDefault<decimal?>(sql) ?? 0;
}
//流动资产合计=货币资金+应收账款+预付款项+应收利息+其他应收款
m.fa_count = m.monetary_fund + m.accounts_receivable + m.prepayment + m.fa_interest_receivable + m.other_accounts_receivable;
//非流动资产合计=固定资产
m.nca_count = m.fixed_assets;
//资产总计=流动资产合计+非流动资产合计
m.count_assets = m.fa_count + m.nca_count;
//流动负债合计=短期借款+应付账款+预收款项+应付职工薪酬+应交税费+应付利息+应付股利+其他应付款+一年内到期的非流动负债+其他流动负债
m.cl_count = m.short_term_borrow + m.accounts_payable + m.monetary_fund + m.advance_received + m.payable_remuneration + m.taxes_payable + m.cl_payable_interest + m.cl_dividends_payable + m.other_accounts_payable + m.cl_oneyear_noncurrent_liabilities + m.cl_other_liabilities;
//非流动负债合计=长期借款+其他非流动负债
m.ncl_count = m.ncl_longterm_loan + m.ncl_other_liabilities;
//负债合计=流动负债合计+非流动负债合计
m.count_liabilities = m.cl_count + m.ncl_count;
//归属于母公司所有者权益合计=实收资本+资本公积+盈余公积+未分配利润
m.oe_parentcompany_count = m.oe_paicl_up_capital + m.oe_capital_reserve + m.oe_surplus_public_accumulation + m.oe_undistributed_profit;
//所有者权益合计= 少数股东权益
m.oe_count = m.oe_minority_equity;
//负债和所有者权益总计=负债合计+所有者权益合计
m.count_liabilities_and_oe = m.count_liabilities + m.oe_count;
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if(cn.State== System.Data.ConnectionState.Closed)
{
cn.Open();
}
cn.Execute($"delete from dc_balance_sheet_4k where day='{day.ToString("yyyy-MM-dd")}' and isedit=0 ");
var sql = $@"insert dc_balance_sheet_4k (day,cl_count,cl_dividends_payable,cl_oneyear_noncurrent_liabilities,cl_other_liabilities,cl_payable_interest,count_assets,count_liabilities,count_liabilities_and_oe,createtime,fa_count,nca_count,ncl_count,oe_capital_reserve,oe_count,oe_paicl_up_capital,oe_parentcompany_count,accounts_payable,accounts_receivable,advance_received,fixed_assets,fa_interest_receivable,isedit,lastupdatetime,lastupdateuserid,lastupdateusername,ncl_longterm_loan,ncl_other_liabilities,monetary_fund,oe_minority_equity,oe_surplus_public_accumulation,oe_undistributed_profit,other_accounts_payable,other_accounts_receivable,payable_remuneration,short_term_borrow,prepayment,taxes_payable) value ('{m.day.ToString("yyyy-MM-dd")}',{m.cl_count},{m.cl_dividends_payable},{m.cl_oneyear_noncurrent_liabilities},{m.cl_other_liabilities},{m.cl_payable_interest},{m.count_assets},{m.count_liabilities},{m.count_liabilities_and_oe},'{m.createtime.ToString("yyyy-MM-dd HH:mm:ss")}',{m.fa_count},{m.nca_count},{m.ncl_count},{m.oe_capital_reserve},{m.oe_count},{m.oe_paicl_up_capital},{m.oe_parentcompany_count},{m.accounts_payable},{m.accounts_receivable},{m.advance_received},{m.fixed_assets},{m.fa_interest_receivable},{m.isedit},'{m.lastupdatetime.ToString("yyyy-MM-dd HH:mm:ss")}',{m.lastupdateuserid},'{m.lastupdateusername}',{m.ncl_longterm_loan},{m.ncl_other_liabilities},{m.monetary_fund},{m.oe_minority_equity},{m.oe_surplus_public_accumulation},{m.oe_undistributed_profit},{m.other_accounts_payable},{m.other_accounts_receivable},{m.payable_remuneration},{m.short_term_borrow},{m.prepayment},{m.taxes_payable})";
cn.Execute(sql);
}
}
}
......
......@@ -10,18 +10,19 @@ namespace Bailun.DC.DailyItemNoProfitRate
static async Task Main(string[] args)
{
Console.WriteLine("启动服务 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
var builder = new HostBuilder().ConfigureServices((hostContext, services) =>
{
services.AddHostedService<Services>();
});
//Console.WriteLine("启动服务 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
//var builder = new HostBuilder().ConfigureServices((hostContext, services) =>
//{
// services.AddHostedService<Services>();
//});
await builder.RunConsoleAsync();
//await builder.RunConsoleAsync();
//var _service = new Services();
//var day = DateTime.Parse(DateTime.Now.AddDays(-2).ToShortDateString());
var _service = new Services();
var day = DateTime.Parse(DateTime.Now.AddDays(-2).ToShortDateString());
//_service.Init(day.AddDays(-20), day);
//_service.OneDayItemNoProfitRate(day.AddDays(-1), day);
_service.SaveProfitRate(day.AddDays(-20), day);
}
}
}
......@@ -153,27 +153,40 @@ namespace Bailun.DC.DailyItemNoProfitRate
Console.WriteLine("完成订单基础数据保存 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
}
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString_read))
SaveProfitRate(start, end);
}
public void SaveProfitRate(DateTime start,DateTime end)
{
var listOrders = new List<Models.dc_mid_itemno_profit_order>();
var listItemAdGMV = new List<Models.dc_daily_itemno_ad_gmv>();
var listAdEbay = new List<Models.dc_base_finance_ebay>(); //ebay广告费
var listAdAmazon = new List<Models.dc_base_finance_amazon_ad_product>(); //亚马逊广告费
var listWithDraw = GetPlatformLossWithdraw().Where(a => a.english_name.ToLower() == "ebay").FirstOrDefault();
var list = new List<Models.dc_daily_item_profit_rate>();
var listBaseOrder = new List<dc_mid_itemno_profit_order>();
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString_read))
{
if(cn.State== System.Data.ConnectionState.Closed)
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
//取出订单明细
listOrders = cn.Query<Models.dc_mid_itemno_profit_order>($"select * from dc_mid_itemno_profit_order where day>='{start.ToString("yyyy-MM-dd")}' and day<'{end.AddDays(1).ToString("yyyy-MM-dd")}'",null,null,true,6*60).AsList();
listOrders = cn.Query<Models.dc_mid_itemno_profit_order>($"select * from dc_mid_itemno_profit_order where day>='{start.ToString("yyyy-MM-dd")}' and day<'{end.AddDays(1).ToString("yyyy-MM-dd")}' and item_id='263702031471'", null, null, true, 6 * 60).AsList();
Console.WriteLine("完成取出订单数据" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
//取出item no的广告GMV
listItemAdGMV = cn.Query<Models.dc_daily_itemno_ad_gmv>($"select * from dc_daily_itemno_ad_gmv where day>='{start.ToString("yyyy-MM-dd")}' and day<'{end.AddDays(1).ToString("yyyy-MM-dd")}'").AsList();
listItemAdGMV = cn.Query<Models.dc_daily_itemno_ad_gmv>($"select * from dc_daily_itemno_ad_gmv where sale_date_bj>='{start.ToString("yyyy-MM-dd")}' and sale_date_bj<'{end.AddDays(1).ToString("yyyy-MM-dd")}' and item_id='263702031471'").AsList();
Console.WriteLine("完成取出itemno的广告GMV数据" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
//取出所有ebay的广告费
listAdEbay = cn.Query<Models.dc_base_finance_ebay>($@"select * from dc_base_finance_ebay where bj_date>='{start.ToString("yyyy-MM-dd")}' and bj_date<'{end.AddDays(1).ToString("yyyy-MM-dd")}' and account_entry_type='FeeAd'").ToList();
listAdEbay = cn.Query<Models.dc_base_finance_ebay>($@"select * from dc_base_finance_ebay where bj_date>='{start.ToString("yyyy-MM-dd")}' and bj_date<'{end.AddDays(1).ToString("yyyy-MM-dd")}' and account_entry_type='FeeAd' and item_id='263702031471'").ToList();
Console.WriteLine("完成取出ebay广告费数据" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
//取出所有亚马逊的广告费
listAdAmazon = cn.Query<Models.dc_base_finance_amazon_ad_product>($@"select * from dc_base_finance_amazon_ad_product where report_date>='{start.ToString("yyyy-MM-dd")}' and report_date<'{end.AddDays(1).ToString("yyyy-MM-dd")}'").ToList();
listAdAmazon = cn.Query<Models.dc_base_finance_amazon_ad_product>($@"select * from dc_base_finance_amazon_ad_product where report_date>='{start.ToString("yyyy-MM-dd")}' and report_date<'{end.AddDays(1).ToString("yyyy-MM-dd")}' and asin='263702031471'").ToList();
Console.WriteLine("完成取出亚马逊广告数据" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
}
......@@ -184,9 +197,10 @@ namespace Bailun.DC.DailyItemNoProfitRate
listItemId = listItemId.Distinct().ToList(); //去重
//以item维度计算出销售额,销售成本,广告GMV等数据
foreach(var item in listItemId)
foreach (var item in listItemId)
{
var m = new Models.dc_daily_item_profit_rate {
var m = new Models.dc_daily_item_profit_rate
{
createtime = DateTime.Now,
day = end,
item_id = item,
......@@ -200,32 +214,32 @@ namespace Bailun.DC.DailyItemNoProfitRate
m.amount_sales = objOrders?.Sum(a => a.amount_sales * a.seller_order_exchange_rate) ?? 0;
m.amount_sales_ad_gmv = listItemAdGMV.Where(a => a.item_id == item)?.Sum(a => a.sales_amount * a.sales_rate) ?? 0;
m.cost_ad = listAdEbay.Where(a => a.item_id == item)?.Sum(a => a.exchange_rate * a.gross_amount) ?? 0 + listAdAmazon.Where(a => a.asin == item)?.Sum(a => a.cost * a.exchange_rate) ?? 0;
m.cost_sales = objOrders?.Sum(a => a.cost_fba_fee*a.seller_order_exchange_rate + a.cost_first + a.cost_handle_bailun + a.cost_handle_platform + a.cost_logistics + a.cost_paypal_fee*a.seller_order_exchange_rate + a.cost_platform_fee*a.seller_order_exchange_rate + a.cost_product) ?? 0;
m.cost_sales = objOrders?.Sum(a => a.cost_fba_fee * a.seller_order_exchange_rate + a.cost_first + a.cost_handle_bailun + a.cost_handle_platform + a.cost_logistics + a.cost_paypal_fee * a.seller_order_exchange_rate + a.cost_platform_fee * a.seller_order_exchange_rate + a.cost_product) ?? 0;
//广告订单GMV占比
objadrate = m.amount_sales > 0 ? m.amount_sales_ad_gmv / m.amount_sales : 0;
//全部订单利润率=(过去20天OMS订单销售额-过去20天广告费-过去20天全部订单销售成本)/过去20天OMS订单销售额
m.rate_all = m.amount_sales > 0 ? (m.amount_sales - m.cost_ad - m.cost_sales) / m.amount_sales:0;
m.rate_all = m.amount_sales > 0 ? (m.amount_sales - m.cost_ad - m.cost_sales) / m.amount_sales : 0;
//过去20天自然订单GMV=总GMV-广告GMV
//过去20天自然订单销售成本 = 过去20天OMS订单总销售成本(不计广告费)*(1 - 广告订单GMV占比)
//自然订单GMV - 过去20天自然订单销售成 = 自然订单利润
//自然订单利润 / 过去20天自然订单GMV = 自然订单利润率
m.rate_order = (m.amount_sales - m.amount_sales_ad_gmv)>0?((m.amount_sales - m.amount_sales_ad_gmv) - (m.cost_sales * (1 - objadrate))) / (m.amount_sales - m.amount_sales_ad_gmv):0;
m.rate_order = (m.amount_sales - m.amount_sales_ad_gmv) > 0 ? ((m.amount_sales - m.amount_sales_ad_gmv) - (m.cost_sales * (1 - objadrate))) / (m.amount_sales - m.amount_sales_ad_gmv) : 0;
//过去20天广告GMV/过去20天OMS订单销量额=广告订单GMV占比
//过去20天OMS订单总销售成本(不计广告费)*广告订单GMV占比=过去20天广告订单总销售成本
//广告GMV-过去20天广告订单总销售成本-广告费=广告订单利润
//广告订单利润/广告GMV=广告订单利润率
m.rate_order_ad = m.amount_sales_ad_gmv > 0 ? ((m.amount_sales_ad_gmv-(m.cost_sales*objadrate)-m.cost_ad)/m.amount_sales_ad_gmv) : 0;
m.rate_order_ad = m.amount_sales_ad_gmv > 0 ? ((m.amount_sales_ad_gmv - (m.cost_sales * objadrate) - m.cost_ad) / m.amount_sales_ad_gmv) : 0;
list.Add(m);
}
Console.WriteLine("完成数据计算,得出利润率" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
//合并保存item的销售额,销售成本,广告GMV,利润,利润率数据
if (list.Count>0)
if (list.Count > 0)
{
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
......@@ -252,15 +266,14 @@ namespace Bailun.DC.DailyItemNoProfitRate
cn.Execute(sql + str, null, null, 6 * 60);
str = "";
Console.WriteLine("保存数据,index:"+index+ ";总记录数:"+list.Count+";" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
Console.WriteLine("保存数据,index:" + index + ";总记录数:" + list.Count + ";" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
}
index++;
}
}
}
}
/// <summary>
......
......@@ -12,28 +12,28 @@ namespace Bailun.DC.DailyLogisticSupplierTransaction
/// </summary>
/// <param name="args"></param>
/// <returns></returns>
static async Task Main(string[] args)
{
Console.WriteLine("启动服务 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
var builder = new HostBuilder().ConfigureServices((hostContext, services) =>
{
services.AddHostedService<Services>();
});
await builder.RunConsoleAsync();
}
//static void Main(string[] args)
//static async Task Main(string[] args)
//{
// var _services = new Services();
// var start = DateTime.Parse("2020-09-01");
// while (start.AddDays(1) < DateTime.Now)
// Console.WriteLine("启动服务 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
// var builder = new HostBuilder().ConfigureServices((hostContext, services) =>
// {
// Console.WriteLine(start);
// _services.Init(start);
// start = start.AddDays(1);
// }
// services.AddHostedService<Services>();
// });
// await builder.RunConsoleAsync();
//}
static void Main(string[] args)
{
var _services = new Services();
var start = DateTime.Parse("2020-09-01");
while (start.AddDays(1) < DateTime.Now)
{
Console.WriteLine(start);
_services.Init(start);
start = start.AddDays(1);
}
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace Bailun.DC.Models
{
public class mBalanceSheet4K_Input
{
/// <summary>
///
/// </summary>
public int id { get; set; }
/// <summary>
///
/// </summary>
public DateTime day { get; set; }
/// <summary>
/// 货币资金
/// </summary>
public decimal? monetary_fund { get; set; }
/// <summary>
/// 应收账款
/// </summary>
public decimal? accounts_receivable { get; set; }
/// <summary>
/// 预付款项
/// </summary>
public decimal? prepayment { get; set; }
/// <summary>
/// 应收利息
/// </summary>
public decimal? fa_interest_receivable { get; set; }
/// <summary>
/// 其他应收款
/// </summary>
public decimal? other_accounts_receivable { get; set; }
/// <summary>
/// 流动资产合计
/// </summary>
public decimal? fa_count { get; set; }
/// <summary>
/// 固定资产
/// </summary>
public decimal? fixed_assets { get; set; }
/// <summary>
/// 非流动资产合计
/// </summary>
public decimal? nca_count { get; set; }
/// <summary>
/// 资产合计
/// </summary>
public decimal? count_assets { get; set; }
/// <summary>
/// 短期借款
/// </summary>
public decimal? short_term_borrow { get; set; }
/// <summary>
/// 应付账款
/// </summary>
public decimal? accounts_payable { get; set; }
/// <summary>
/// 预收款项
/// </summary>
public decimal? advance_received { get; set; }
/// <summary>
/// 应付职工薪酬
/// </summary>
public decimal? payable_remuneration { get; set; }
/// <summary>
/// 应交税费
/// </summary>
public decimal? taxes_payable { get; set; }
/// <summary>
/// 应付利息
/// </summary>
public decimal? cl_payable_interest { get; set; }
/// <summary>
/// 应付股利
/// </summary>
public decimal? cl_dividends_payable { get; set; }
/// <summary>
/// 其他应付款
/// </summary>
public decimal? other_accounts_payable { get; set; }
/// <summary>
/// 一年内到期的非流动负债
/// </summary>
public decimal? cl_oneyear_noncurrent_liabilities { get; set; }
/// <summary>
/// 其他流动负债
/// </summary>
public decimal? cl_other_liabilities { get; set; }
/// <summary>
/// 流动负债合计
/// </summary>
public decimal? cl_count { get; set; }
/// <summary>
/// 长期借款
/// </summary>
public decimal? ncl_longterm_loan { get; set; }
/// <summary>
/// 其他非流动负债
/// </summary>
public decimal? ncl_other_liabilities { get; set; }
/// <summary>
/// 非流动负债合计
/// </summary>
public decimal? ncl_count { get; set; }
/// <summary>
/// 负债合计
/// </summary>
public decimal? count_liabilities { get; set; }
/// <summary>
/// 实收资本
/// </summary>
public decimal? oe_paicl_up_capital { get; set; }
/// <summary>
/// 资本公积
/// </summary>
public decimal? oe_capital_reserve { get; set; }
/// <summary>
/// 盈余公积
/// </summary>
public decimal? oe_surplus_public_accumulation { get; set; }
/// <summary>
/// 未分配利润
/// </summary>
public decimal? oe_undistributed_profit { get; set; }
/// <summary>
/// 归属于母公司所有者权益合计
/// </summary>
public decimal? oe_parentcompany_count { get; set; }
/// <summary>
/// 所有者权益(或股东权益)合计
/// </summary>
public decimal? oe_count { get; set; }
/// <summary>
/// 少数股东权益
/// </summary>
public decimal? oe_minority_equity { get; set; }
/// <summary>
/// 负债和所有者权益(或股东权益)总计
/// </summary>
public decimal? count_liabilities_and_oe { get; set; }
}
}
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