Commit f5af2396 by guanzhenshan

修改获取支出的方法

parent 9e6c60f8
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
<PackageReference Include="Dapper" Version="2.0.30" /> <PackageReference Include="Dapper" Version="2.0.30" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.0.0" /> <PackageReference Include="Microsoft.Extensions.Hosting" Version="3.0.0" />
<PackageReference Include="MySql.Data" Version="8.0.18" /> <PackageReference Include="MySql.Data" Version="8.0.18" />
<PackageReference Include="Newtonsoft.Json" Version="10.0.1" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
......
...@@ -7,30 +7,30 @@ namespace Bailun.DC.DailyPayAndIncoming ...@@ -7,30 +7,30 @@ namespace Bailun.DC.DailyPayAndIncoming
{ {
class Program class Program
{ {
static async Task Main(string[] args) //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)
//{ //{
// var _services = new Services(); // Console.WriteLine("启动服务 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
// var builder = new HostBuilder().ConfigureServices((hostContext, services) =>
// var start = DateTime.Parse("2019-09-01");
// while (start < DateTime.Now)
// { // {
// services.AddHostedService<Services>();
// });
// _services.Init(start, start.AddDays(1)); // await builder.RunConsoleAsync();
// _services.SaveMoneyFlowCount(start, start.AddDays(1));
// Console.WriteLine(start);
// start = start.AddDays(1);
// }
//} //}
static void Main(string[] args)
{
var _services = new Services();
var start = DateTime.Parse("2019-09-01");
while (start < DateTime.Now)
{
_services.Init(start, start.AddDays(1));
_services.SaveMoneyFlowCount(start, start.AddDays(1));
Console.WriteLine(start);
start = start.AddDays(1);
}
}
} }
} }
...@@ -8,6 +8,7 @@ using Bailun.DC.Models; ...@@ -8,6 +8,7 @@ using Bailun.DC.Models;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using System.Linq;
namespace Bailun.DC.DailyPayAndIncoming namespace Bailun.DC.DailyPayAndIncoming
{ {
...@@ -54,8 +55,30 @@ namespace Bailun.DC.DailyPayAndIncoming ...@@ -54,8 +55,30 @@ namespace Bailun.DC.DailyPayAndIncoming
//每日支出和到账金额 //每日支出和到账金额
public void Init(DateTime start,DateTime end) public void Init(DateTime start,DateTime end)
{ {
//支出 成品采购+半成品采购+百伦(广州、香港)支付给哈倪曼和拉古娜的费用 //支出包含两部分,一部分是百伦管理费,一部分是产品成本支出
var sql = $@"select sum(cashier_paymoneyrmb) as amount from dc_base_finance_cashier where cashier_status=1 and cashier_type=1 and cashier_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and cashier_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}' and (sourcecode in ('Buy','SemiFinishedProduct') or (tradeb_bjectname in ('广州哈倪蔓生物科技有限公司','广州拉古娜生物科技有限公司') and companymain_value_from in (1,2)))"; //管理成本 广州百伦、香港百伦、电子服装厂、阳山仓、深圳仓的管理成本
var url = "http://api.fee.bailuntec.com/purchase/other/cost/api/manageCostList?o=0";
var cwurl = "http://cw.bailuntec.com/api/api/GetRepayPlanDetails?";
url += "&startDate=" + start.ToString("yyyy-MM-dd") + "&endDate=" + end.ToString("yyyy-MM-dd");
cwurl += "BeginRepayTime=" + start.ToString("yyyy-MM-dd") + "&EndRepayTime=" + end.ToString("yyyy-MM-dd");
//利息支出
var listInterest = ListInterestExpense(cwurl);
//管理成品
var list = ListOtherCost(url);
decimal costTotal = 0;
costTotal = listInterest.Count > 0 ? listInterest.Sum(a => a.RepayInterestRMB):0;
list = list.Where(a => a.companyValue == 1 || a.companyValue == 2 || a.companyValue == 5 || a.companyValue == 8 || a.companyValue == 7).ToList();
if (list.Count > 0)
{
costTotal += list.Sum(a => a.amountRmb);
}
//支出 2、成品采购+半成品采购+百伦(广州、香港)支付给哈倪曼和拉古娜的费用+百伦管理费用
var sql = $@"select sum(cashier_paymoneyrmb) as amount from dc_base_finance_cashier where cashier_status=1 and cashier_type=1 and cashier_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and cashier_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}' and (sourcecode in ('Buy','SemiFinishedProduct') or (tradeb_bjectname in ('广州哈倪蔓生物科技有限公司','广州拉古娜生物科技有限公司','广州美甲生产仓') and companymain_value_from in (1,2,5,7,8)))";
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString)) using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{ {
...@@ -73,7 +96,7 @@ namespace Bailun.DC.DailyPayAndIncoming ...@@ -73,7 +96,7 @@ namespace Bailun.DC.DailyPayAndIncoming
var m = new dc_daily_pay_income() var m = new dc_daily_pay_income()
{ {
amount_income = objIncoming ?? 0, amount_income = costTotal+ (objIncoming ?? 0),
amount_payed = obj ?? 0, amount_payed = obj ?? 0,
createtime = DateTime.Now, createtime = DateTime.Now,
record_time = DateTime.Parse(start.ToShortDateString()), record_time = DateTime.Parse(start.ToShortDateString()),
...@@ -92,6 +115,29 @@ namespace Bailun.DC.DailyPayAndIncoming ...@@ -92,6 +115,29 @@ namespace Bailun.DC.DailyPayAndIncoming
//现金流明细 采购下单、财务付款、到货、库存、售出、应收款、放款在途、银行到账 //现金流明细 采购下单、财务付款、到货、库存、售出、应收款、放款在途、银行到账
public void SaveMoneyFlowCount(DateTime start,DateTime end) public void SaveMoneyFlowCount(DateTime start,DateTime end)
{ {
//支出包含两部分,一部分是百伦管理费,一部分是产品成本支出
//管理成本 广州百伦、香港百伦、电子服装厂、阳山仓、深圳仓的管理成本
var url = "http://api.fee.bailuntec.com/purchase/other/cost/api/manageCostList?o=0";
var cwurl = "http://cw.bailuntec.com/api/api/GetRepayPlanDetails?";
url += "&startDate=" + start.ToString("yyyy-MM-dd") + "&endDate=" + end.ToString("yyyy-MM-dd");
cwurl += "BeginRepayTime=" + start.ToString("yyyy-MM-dd") + "&EndRepayTime=" + end.ToString("yyyy-MM-dd");
//利息支出
var listInterest = ListInterestExpense(cwurl);
//管理成品
var list = ListOtherCost(url);
decimal costTotal = 0;
costTotal = listInterest.Count > 0 ? listInterest.Sum(a => a.RepayInterestRMB) : 0;
list = list.Where(a => a.companyValue == 1 || a.companyValue == 2 || a.companyValue == 5 || a.companyValue == 8 || a.companyValue == 7).ToList();
if (list.Count > 0)
{
costTotal += list.Sum(a => a.amountRmb);
}
//支出 2、成品采购+半成品采购+百伦(广州、香港)支付给哈倪曼和拉古娜的费用+百伦管理费用
var sql = $"select sum(amount_paid) amount from dc_base_purchase_details where create_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and create_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}' and `status`>=0"; var sql = $"select sum(amount_paid) amount from dc_base_purchase_details where create_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and create_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}' and `status`>=0";
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString)) using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
...@@ -105,7 +151,7 @@ namespace Bailun.DC.DailyPayAndIncoming ...@@ -105,7 +151,7 @@ namespace Bailun.DC.DailyPayAndIncoming
var objPurchase = cn.QueryFirstOrDefault<decimal?>(sql, null, null, 2 * 60); var objPurchase = cn.QueryFirstOrDefault<decimal?>(sql, null, null, 2 * 60);
//财务付款 //财务付款
sql = $@"select sum(cashier_paymoneyrmb) as amount from dc_base_finance_cashier where cashier_status=1 and cashier_type=1 and cashier_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and cashier_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}' and (sourcecode in ('Buy','SemiFinishedProduct') or (tradeb_bjectname in ('广州哈倪蔓生物科技有限公司','广州拉古娜生物科技有限公司') and companymain_value_from in (1,2)))"; sql = $@"select sum(cashier_paymoneyrmb) as amount from dc_base_finance_cashier where cashier_status=1 and cashier_type=1 and cashier_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and cashier_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}' and (sourcecode in ('Buy','SemiFinishedProduct') or (tradeb_bjectname in ('广州哈倪蔓生物科技有限公司','广州拉古娜生物科技有限公司','广州美甲生产仓') and companymain_value_from in (1,2,5,7,8)))";
var objPayed = cn.QueryFirstOrDefault<decimal?>(sql, null, null, 2 * 60); var objPayed = cn.QueryFirstOrDefault<decimal?>(sql, null, null, 2 * 60);
//到货 //到货
...@@ -137,7 +183,7 @@ namespace Bailun.DC.DailyPayAndIncoming ...@@ -137,7 +183,7 @@ namespace Bailun.DC.DailyPayAndIncoming
var objWithdrawOnWay = cn.QueryFirstOrDefault<decimal?>(sql, null, null, 2 * 60); var objWithdrawOnWay = cn.QueryFirstOrDefault<decimal?>(sql, null, null, 2 * 60);
//银行到账 //银行到账
sql = $"select sum(other_to_cny_money) amount from dc_base_finance_cashierdetail where daozhang_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and daozhang_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}'"; sql = $"select sum(balance_rmb) amount from dc_bank_account_balance where company_value in (2,1,39,32,26,12,42,34,38,22,29,8,27,5,40,33,7) and bank_name != 'payoneer' and bank_name!='PayPal' and bank_name!='Beepay' and bank_name!='P卡' and statistical_time='{start.ToString("yyyy-MM-dd")}'";
var objIncoming = cn.QueryFirstOrDefault<decimal?>(sql, null, null, 2 * 60); var objIncoming = cn.QueryFirstOrDefault<decimal?>(sql, null, null, 2 * 60);
var m = new dc_daily_companymoneystatus() var m = new dc_daily_companymoneystatus()
...@@ -165,6 +211,54 @@ namespace Bailun.DC.DailyPayAndIncoming ...@@ -165,6 +211,54 @@ namespace Bailun.DC.DailyPayAndIncoming
} }
} }
#region 管理成本
/// <summary>
/// 获取管理成本明细
/// </summary>
/// <param name="url">访问地址</param>
/// <returns></returns>
public List<Models.Api.mOtherFee> ListOtherCost(string url)
{
var list = new List<Models.Api.mOtherFee>();
var result = Common.HttpHelper.NetHelper.Request(url);
if (!string.IsNullOrEmpty(result))
{
var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<Models.Api.mListOtherFee>(result);
if (obj != null)
{
list = obj.data;
}
}
return list;
}
/// <summary>
/// 管理成本--利息支出
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public List<Models.Api.mInterestExpense> ListInterestExpense(string url)
{
var list = new List<Models.Api.mInterestExpense>();
var result = Common.HttpHelper.NetHelper.Request(url);
if (!string.IsNullOrEmpty(result))
{
var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Models.Api.mInterestExpense>>(result);
if (obj.Count > 0)
{
list = obj;
}
}
return list;
}
#endregion
} }
......
...@@ -6,6 +6,12 @@ ...@@ -6,6 +6,12 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Dapper" Version="2.0.30" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.0.0" />
<PackageReference Include="MySql.Data" Version="8.0.18" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Bailun.DC.Common\Bailun.DC.Common.csproj" /> <ProjectReference Include="..\Bailun.DC.Common\Bailun.DC.Common.csproj" />
<ProjectReference Include="..\Bailun.DC.Models\Bailun.DC.Models.csproj" /> <ProjectReference Include="..\Bailun.DC.Models\Bailun.DC.Models.csproj" />
</ItemGroup> </ItemGroup>
......
...@@ -6,7 +6,15 @@ namespace Bailun.DC.DailyPurchaseSellStock ...@@ -6,7 +6,15 @@ namespace Bailun.DC.DailyPurchaseSellStock
{ {
static void Main(string[] args) static void Main(string[] args)
{ {
Console.WriteLine("Hello World!"); var _services = new Services();
var start = DateTime.Parse("2019-10-22");
while (start.AddDays(1) < DateTime.Now)
{
_services.Init(start);
Console.WriteLine(start);
start = start.AddDays(1);
}
} }
} }
} }
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
using MySql.Data.MySqlClient;
using Dapper;
using System.Linq;
using Bailun.DC.Models;
namespace Bailun.DC.DailyPurchaseSellStock namespace Bailun.DC.DailyPurchaseSellStock
{ {
...@@ -8,8 +13,155 @@ namespace Bailun.DC.DailyPurchaseSellStock ...@@ -8,8 +13,155 @@ namespace Bailun.DC.DailyPurchaseSellStock
{ {
public void Init(DateTime day) public void Init(DateTime day)
{ {
var sql = $@"select t1.bailun_sku,t1.warehouse_code,t2.warehouse_name,sum(t1.usable_stock+t1.occupy_stock) count,sum((t1.usable_stock+t1.occupy_stock)*t1.unit_price) as amount from dc_daily_stock t1
left join dc_base_warehouse t2 on t1.warehouse_code=t2.warehouse_code
where t1.record_time='{day.AddDays(-1).ToString("yyyy-MM-dd")}' group by t1.bailun_sku,t1.warehouse_code";
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
} }
//昨日库存
var objPreStock = cn.Query<mStock>(sql, null, null, true, 2 * 60);
//在库库存
sql = $@"select t1.bailun_sku,t1.warehouse_code,t2.warehouse_name,sum(t1.usable_stock+t1.occupy_stock) count,sum((t1.usable_stock+t1.occupy_stock)*t3.unit_price) as amount from dc_base_stock t1
left join dc_base_warehouse t2 on t1.warehouse_code=t2.warehouse_code
left join dc_base_sku t3 on t1.bailun_sku=t3.bailun_sku
where t1.usable_stock>0 or t1.occupy_stock>0 group by t1.bailun_sku,t1.warehouse_code";
var objStock = cn.Query<mStock>(sql, null, null, true, 2 * 60);
//昨日在途库存
sql = $@"select t1.bailun_sku,t1.warehouse_code,t2.warehouse_name,sum(t1.quantity_purchase+t1.quantity_transfer) count,sum((t1.quantity_purchase+t1.quantity_transfer)*t1.unit_price) as amount from dc_daily_transit t1
left join dc_base_warehouse t2 on t1.warehouse_code=t2.warehouse_code
where t1.record_time='{day.AddDays(-1).ToString("yyyy-MM-dd")}' and (t1.quantity_purchase>0 or t1.quantity_transfer>0) group by t1.bailun_sku,t1.warehouse_code";
var objPreOnWay = cn.Query<mStock>(sql, null, null, true, 2 * 60);
//在途库存
sql = $@"select t1.bailun_sku,t1.warehouse_code,t2.warehouse_name,sum(t1.quantity_purchase+t1.quantity_transfer) count,sum((t1.quantity_purchase+t1.quantity_transfer)*t3.unit_price) as amount from dc_mid_transit t1
left join dc_base_warehouse t2 on t1.warehouse_code=t2.warehouse_code
left join dc_base_sku t3 on t1.bailun_sku=t3.bailun_sku
where (t1.quantity_purchase>0 or t1.quantity_transfer>0)
group by t1.bailun_sku,t1.warehouse_code
";
var objOnWay = cn.Query<mStock>(sql, null, null, true, 2 * 60);
var temparr = new List<Tuple<string, string,string>>();
temparr.AddRange(objPreStock.Select(p => new Tuple<string, string,string>(p.bailun_sku, p.warehouse_code,p.warehouse_name)));
temparr.AddRange(objStock.Select(p => new Tuple<string, string,string>(p.bailun_sku, p.warehouse_code,p.warehouse_name)));
temparr.AddRange(objPreOnWay.Select(p => new Tuple<string, string,string>(p.bailun_sku, p.warehouse_code,p.warehouse_name)));
temparr.AddRange(objOnWay.Select(p => new Tuple<string, string,string>(p.bailun_sku, p.warehouse_code,p.warehouse_name)));
temparr = temparr.Distinct().ToList();
var list = new List<dc_daily_purchase_sell_stock>();
foreach (var item in temparr)
{
var m = new dc_daily_purchase_sell_stock() {
bailun_sku = item.Item1,
warehouse_code = item.Item2,
warehouse_name = item.Item3,
createtime = DateTime.Now,
record_time = day,
end_onway_amount = 0,
end_onway_count = 0,
end_stock_amount = 0,
end_stock_count = 0,
start_onway_amount = 0,
start_onway_count = 0,
start_stock_amount=0,
start_stock_count = 0,
};
var p = objPreStock.Where(a => a.bailun_sku == item.Item1 && a.warehouse_code == item.Item2).FirstOrDefault();
if (p != null)
{
m.start_stock_count = p.count;
m.start_stock_amount = p.amount;
}
p = objStock.Where(a => a.bailun_sku == item.Item1 && a.warehouse_code == item.Item2).FirstOrDefault();
if (p != null)
{
m.end_stock_count = p.count;
m.end_stock_amount = p.amount;
}
p = objPreOnWay.Where(a => a.bailun_sku == item.Item1 && a.warehouse_code == item.Item2).FirstOrDefault();
if (p != null)
{
m.start_onway_count = p.count;
m.start_onway_amount = p.amount;
}
p = objOnWay.Where(a => a.bailun_sku == item.Item1 && a.warehouse_code == item.Item2).FirstOrDefault();
if (p != null)
{
m.end_onway_count = p.count;
m.end_onway_amount = p.amount;
}
list.Add(m);
}
cn.Execute($"delete from dc_daily_purchase_sell_stock where record_time='{day.ToString("yyyy-MM-dd")}'");
sql = "insert dc_daily_purchase_sell_stock (bailun_sku,warehouse_code,warehouse_name,createtime,record_time,end_onway_amount,end_onway_count,end_stock_amount,end_stock_count,start_onway_amount,start_onway_count,start_stock_amount,start_stock_count) values ";
var resultcount = 0;
while (resultcount < list.Count)
{
var s = "";
var temp = list.Skip(resultcount).Take(5000);
foreach (var item in temp)
{
s += $"('{item.bailun_sku}','{item.warehouse_code}','{item.warehouse_name}','{item.createtime.ToString("yyyy-MM-dd HH:mm:ss")}','{item.record_time.ToString("yyyy-MM-dd")}',{item.end_onway_amount},{item.end_onway_count},{item.end_stock_amount},{item.end_stock_count},{item.start_onway_amount},{item.start_onway_count},{item.start_stock_amount},{item.start_stock_count}),";
}
resultcount += 5000;
if (s.Length>0)
{
cn.Execute(sql + s.Substring(0, s.Length - 1), null, null, 2 * 60);
}
}
}
}
}
class mStock
{
/// <summary>
/// sku编码
/// </summary>
public string bailun_sku { get; set; }
/// <summary>
/// 仓库编码
/// </summary>
public string warehouse_code { get; set; }
/// <summary>
/// 仓库名称
/// </summary>
public string warehouse_name { get; set; }
/// <summary>
/// 数量
/// </summary>
public int count { get; set; }
/// <summary>
/// 金额
/// </summary>
public decimal amount { get; set; }
} }
} }
...@@ -48,16 +48,16 @@ ...@@ -48,16 +48,16 @@
<div class="alert alert-warning"> <div class="alert alert-warning">
取数说明: 取数说明:
<br /> <br />
1、支出的取值:成品采购+半成品采购+百伦(广州、香港)支付给哈倪曼和拉古娜的费用<br /> 1、支出的取值:成品采购+半成品采购+百伦(广州、香港)支付给哈倪曼和拉古娜的费用+百伦的管理费<br />
2、收入的取值:当天提现到账的资金(已转换成CNY)<br /> 2、收入的取值:当天提现到账的资金(已转换成CNY)<br />
3、采购下单的取值:成品采购系统当天下单的采购金额<br /> 3、采购下单的取值:成品采购系统当天下单的采购金额<br />
4、财务付款的取值:当天支付给成品采购+半成品采购+百伦(广州、香港)支付给哈倪曼和拉古娜的费用<br /> 4、财务付款的取值:当天支付给成品采购+半成品采购+百伦(广州、香港)支付给哈倪曼和拉古娜的费用+百伦的管理费<br />
5、到货的取值:当天成品采购系统到货的总采购额<br /> 5、到货的取值:当天成品采购系统到货的总采购额<br />
6、库存的取值:当天在库的库存金额<br /> 6、库存的取值:当天在库的库存金额<br />
7、售出的取值:当天销售订单的产品成本<br /> 7、售出的取值:当天销售订单的产品成本<br />
8、应收款的取值:当前发货的销售额<br /> 8、应收款的取值:当天各个平台的帐号余额<br />
9、放款在途的取值:统计当前提现未到账的金额<br /> 9、放款在途的取值:统计当前提现未到账的金额<br />
10、银行到账的取值:当天银行放款到帐号的金额 10、银行到账的取值:当天银行卡的余额。
</div> </div>
</div> </div>
</div> </div>
......
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