Commit b21551d6 by guanzhenshan

增加跨境电商资金分析明细每日报表统计服务

parent adcb5ba8
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.1</TargetFramework>
<LangVersion>latest</LangVersion>
</PropertyGroup>
<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="..\branch01\Bailun.DC.Common\Bailun.DC.Common.csproj" />
<ProjectReference Include="..\branch01\Bailun.DC.Models\Bailun.DC.Models.csproj" />
</ItemGroup>
</Project>
FROM microsoft/dotnet:2.1-runtime AS base
WORKDIR /app
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY ../Bailun.DC.DailyPayAndIncoming/Bailun.DC.DailyPayAndIncoming.csproj ../Bailun.DC.DailyPayAndIncoming/
COPY Bailun.DC.Common/Bailun.DC.Common.csproj Bailun.DC.Common/
COPY Bailun.DC.Models/Bailun.DC.Models.csproj Bailun.DC.Models/
RUN dotnet restore ../Bailun.DC.DailyPayAndIncoming/Bailun.DC.DailyPayAndIncoming.csproj
COPY . .
WORKDIR /src/../Bailun.DC.DailyPayAndIncoming
RUN dotnet build Bailun.DC.DailyPayAndIncoming.csproj -c Release -o /app
FROM build AS publish
RUN dotnet publish Bailun.DC.DailyPayAndIncoming.csproj -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "Bailun.DC.DailyPayAndIncoming.dll"]
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System;
using System.Threading.Tasks;
namespace Bailun.DC.DailyPayAndIncoming
{
class Program
{
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();
// var start = DateTime.Parse("2019-09-01");
// while (start < DateTime.Now)
// {
// _services.Init(start, start.AddDays(1));
// _services.SaveMoneyFlowCount(start, start.AddDays(1));
// start = start.AddDays(1);
// }
//}
}
}
using System;
using System.Collections.Generic;
using System.Text;
using MySql.Data.MySqlClient;
using Dapper;
using Bailun.DC.Common;
using Bailun.DC.Models;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Hosting;
namespace Bailun.DC.DailyPayAndIncoming
{
/// <summary>
/// 每日收支统计
/// </summary>
public class Services : BackgroundService
{
private Timer _timer;
protected override Task ExecuteAsync(CancellationToken stoppingToken)
{
_timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromMinutes(1));
return Task.CompletedTask;
}
private void DoWork(object state)
{
try
{
var now = DateTime.Now;
if (now.Hour == 5 && now.Minute == 01) //每天 23:59分启动
{
Console.WriteLine("开始启动 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
var start = DateTime.Parse(now.AddDays(-1).ToShortDateString());
Init(start, start.AddDays(1));
SaveMoneyFlowCount(start, start.AddDays(1));
Console.WriteLine("任务运行完成 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
//每日支出和到账金额
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)))";
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var obj = 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")}'";
var objIncoming = cn.QueryFirstOrDefault<decimal?>(sql, null, null, 2 * 60);
var m = new dc_daily_pay_income()
{
amount_income = objIncoming ?? 0,
amount_payed = obj ?? 0,
createtime = DateTime.Now,
record_time = DateTime.Parse(start.ToShortDateString()),
};
sql = $"delete from dc_daily_pay_income where record_time='{m.record_time.ToString("yyyy-MM-dd")}'";
cn.Execute(sql);
sql = $"insert dc_daily_pay_income (amount_income,amount_payed,createtime,record_time) values ({m.amount_income},{m.amount_payed},'{m.createtime.ToString("yyyy-MM-dd HH:mm:ss")}','{m.record_time.ToString("yyyy-MM-dd")}')";
cn.Execute(sql,null,null,2*60);
}
}
//现金流明细 采购下单、财务付款、到货、库存、售出、应收款、放款在途、银行到账
public void SaveMoneyFlowCount(DateTime start,DateTime end)
{
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))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
//采购下单
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)))";
var objPayed = cn.QueryFirstOrDefault<decimal?>(sql, null, null, 2 * 60);
//到货
sql = $@"select sum(t1.count*t2.unit_price) amount from dc_base_purchase_arrival t1
join dc_base_purchase_details t2 on t1.purchase_id=t2.purchase_id and t1.bailun_sku=t2.bailun_sku
where t1.create_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and t1.create_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}'";
var objArrival = cn.QueryFirstOrDefault<decimal?>(sql, null, null, 2 * 60);
//库存 每日晚上12点10分跑每日库存服务
sql = $"select sum((usable_sales+occupy_stock)*unit_price) amount from dc_daily_stock where record_time='{start.ToString("yyyy-MM-dd")}'";
var objStock = cn.QueryFirstOrDefault<decimal?>(sql, null, null, 2 * 60);
//售出
sql = $"select sum(bailun_sku_quantity_ordered*bailun_sku_unit_price) as amount from dc_base_oms_sku where has_delete=0 and company_id=1 and bailun_order_status!='Canceled' and create_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and create_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}'";
var objSale = cn.QueryFirstOrDefault<decimal?>(sql, null, null, 2 * 60);
//应收款 当前发货的销售额
sql = $@"select sum(amount) amount from (select sum(t1.quantity_shipped*t2.amount_sales*t2.seller_order_exchange_rate) amount from dc_base_oms_pick t1
join dc_base_oms_sku t2 on t1.bailun_sku=t2.bailun_sku and t1.bailun_order_id=t2.bailun_order_id and t2.has_scalp=0 and t2.has_delete=0 and t2.has_innersale=0 and t2.bailun_order_status!='Canceled' and t2.has_innersale=0 and t2.company_id=1 and (t2.platform_type!='FBA' and t2.bailun_order_status!='CantHandle')
where t1.shipping_status='TotalShipping' and t1.shipping_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and t1.shipping_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}'
union all
select sum(t2.amount_sales*t2.seller_order_exchange_rate) amount from dc_base_oms_order t2 where t2.bailun_order_status!='Canceled' and t2.platform_type='FBA' and t2.bailun_payment_status='TotalPay' and t2.create_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and t2.create_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}') tb";
var objReceivable = cn.QueryFirstOrDefault<decimal?>(sql, null, null, 2 * 60);
//放款在途
sql = $@"select sum(money*other_to_cny_exchange_rate) amount from dc_base_finance_cashierdetail where status=1 and createTime>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and createTime<'{end.ToString("yyyy-MM-dd HH:mm:ss")}'";
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")}'";
var objIncoming = cn.QueryFirstOrDefault<decimal?>(sql, null, null, 2 * 60);
var m = new dc_daily_companymoneystatus()
{
amount_arrivaled = objArrival??0,
amount_incoming = objIncoming??0,
amount_payed = objPayed??0,
amount_purchase = objPurchase??0,
amount_receivable = objReceivable??0,
amount_sale = objSale??0,
amount_stock = objStock??0,
amount_withdrawonway = objWithdrawOnWay??0,
createtime = DateTime.Now,
record_time = DateTime.Parse(start.ToShortDateString())
};
sql = $"delete from dc_daily_companymoneystatus where record_time='{m.record_time.ToString("yyyy-MM-dd")}'";
cn.Execute(sql);
sql = "insert dc_daily_companymoneystatus (amount_arrivaled,amount_incoming,amount_payed,amount_purchase,amount_receivable,amount_sale,amount_stock,amount_withdrawonway,createtime,record_time) values ";
sql += ($@"({m.amount_arrivaled},{m.amount_incoming},{m.amount_payed},{m.amount_purchase},{m.amount_receivable},{m.amount_sale},{m.amount_stock},{m.amount_withdrawonway},'{m.createtime.ToString("yyyy-MM-dd HH:mm:ss")}','{m.record_time.ToString("yyyy-MM-dd")}')");
cn.Execute(sql, null, null, 2 * 60);
}
}
}
}
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" />
</startup>
</configuration>
\ No newline at end of file
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("Bailun.DC.SkuDataWareHouse")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Bailun.DC.SkuDataWareHouse")]
[assembly: AssemblyCopyright("Copyright © 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 会使此程序集中的类型
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("802632d2-80a4-4f6a-a89a-7e12d671665c")]
// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
// 方法是按如下所示使用“*”: :
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
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