Commit 4cdcbe6b by guanzhenshan

完善物流供应商往来服务

parent 06bddd89
......@@ -12,4 +12,8 @@
<PackageReference Include="MySql.Data" Version="8.0.20" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Bailun.DC.Common\Bailun.DC.Common.csproj" />
</ItemGroup>
</Project>
using System;
using System.Collections.Generic;
using System.Text;
namespace Bailun.DC.DailyLogisticSupplierTransaction.Models
{
public class dc_base_logistics
{
public int id { get; set; }
public int wms_id { get; set; }
public string company_code { get; set; }
public string company_name { get; set; }
public string bill_code { get; set; }
public string tracking_no { get; set; }
public decimal merchant_output_weight_kg { get; set; }
public decimal merchant_shipment_cost_cny { get; set; }
public DateTime? merchant_reconciliation_time { get; set; }
public string reconciliation_type { get; set; }
public string info_id { get; set; }
public decimal output_weight_kg { get; set; }
public decimal bailun_shipment_cost_cny { get; set; }
public DateTime? shipment_time { get; set; }
public string diff_state_type { get; set; }
public decimal merchant_output_weight_kg_original { get; set; }
public decimal merchant_shipment_cost_sny_original { get; set; }
public decimal cost_diff_decimal { get; set; }
public decimal weight_diff_decimal { get; set; }
public string line_name { get; set; }
public string fee_code { get; set; }
public string remark { get; set; }
public string generate_bill_status { get; set; }
public string fee_product_type { get; set; }
public DateTime? last_modification_time { get; set; }
public DateTime gmt_create_time { get; set; }
public DateTime gmt_modify_time { get; set; }
}
}
......@@ -31,8 +31,7 @@ namespace Bailun.DC.DailyLogisticSupplierTransaction
// while (start.AddDays(1) < DateTime.Now)
// {
// Console.WriteLine(start);
// _services.Init(start, start.AddDays(1));
// _services.SaveMoneyFlowCount(start, start.AddDays(1));
// _services.Init(start);
// start = start.AddDays(1);
// }
//}
......
......@@ -4,6 +4,10 @@ using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;
using Dapper;
using Bailun.DC.DailyLogisticSupplierTransaction.Models;
using System.Linq;
namespace Bailun.DC.DailyLogisticSupplierTransaction
{
......@@ -23,27 +27,27 @@ namespace Bailun.DC.DailyLogisticSupplierTransaction
{
var now = DateTime.Now;
if (now.Hour == 5 && now.Minute == 01) //凌晨5:01分启动
if (now.Hour == 11 && now.Minute == 57) //11:57分启动
{
Console.WriteLine("开始启动 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
var day = DateTime.Parse(now.AddDays(-1).ToShortDateString());
var day = DateTime.Parse(now.ToShortDateString());
Init(day);
Console.WriteLine("任务运行完成 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
}
else if (now.Hour % 8 == 0 && now.Minute == 1)
{
var day = DateTime.Parse(now.AddMonths(-1).ToShortDateString());
while (day.AddDays(1) < DateTime.Now)
{
Console.WriteLine(day);
Init(day);
Console.WriteLine("重跑 " + day.ToString("yyyy-MM-dd HH:mm:ss") + " 完成");
day = day.AddDays(1);
}
}
//else if (now.Hour % 8 == 0 && now.Minute == 1)
//{
// var day = DateTime.Parse(now.AddMonths(-1).ToShortDateString());
// while (day.AddDays(1) < DateTime.Now)
// {
// Console.WriteLine(day);
// Init(day);
// Console.WriteLine("重跑 " + day.ToString("yyyy-MM-dd HH:mm:ss") + " 完成");
// day = day.AddDays(1);
// }
//}
}
catch (Exception ex)
......@@ -52,9 +56,136 @@ namespace Bailun.DC.DailyLogisticSupplierTransaction
}
}
private void Init(DateTime day)
public void Init(DateTime day)
{
//业务逻辑
var listHappen = new List<Models.dc_base_logistics>();
var listPay = new List<dc_base_logistics>();
var listRecevice = new List<dc_base_logistics>();
var list = new List<dc_daily_logistics_supplier_transaction>();
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
//发生额
var sql = $"select t1.company_name,sum(t1.merchant_shipment_cost_cny) as merchant_shipment_cost_cny from dc_base_logistics t1 where ((t1.reconciliation_type='跟踪号对账' and t1.diff_state_type!=0) or (t1.reconciliation_type='单独费用')) and t1.merchant_reconciliation_time='{day.ToString("yyyy-MM-dd")}' group by t1.company_name";
listHappen = cn.Query<Models.dc_base_logistics>(sql).AsList();
//付款额
sql = $@"select t1.receive_unit as company_name,sum(t1.amount_rmb) as merchant_shipment_cost_cny from dc_base_finance_logistics t1
where t1.no in (select DISTINCT t2.fee_code from dc_base_logistics t2 where t2.fee_code in (select t1.`no` from dc_base_finance_logistics t1 where t1.pay_time>='{day.ToString("yyyy-MM-dd")}' and t1.pay_time>='{day.AddDays(1).ToString("yyyy-MM-dd")}' and t1.amount_rmb>=0))
group by t1.receive_unit";
listPay = cn.Query<dc_base_logistics>(sql).AsList();
//收款额
sql = $@"select t1.receive_unit as company_name,sum(t1.amount_rmb) as merchant_shipment_cost_cny from dc_base_finance_logistics t1
where t1.no in (select DISTINCT t2.fee_code from dc_base_logistics t2 where t2.fee_code in (select t1.`no` from dc_base_finance_logistics t1 where t1.pay_time>='{day.ToString("yyyy-MM-dd")}' and t1.pay_time>='{day.AddDays(1).ToString("yyyy-MM-dd")}' and t1.amount_rmb<0))
group by t1.receive_unit";
listRecevice = cn.Query<dc_base_logistics>(sql).AsList();
var listSupplier = new List<string>();
listSupplier.AddRange(listHappen.Select(a => a.company_name));
listSupplier.AddRange(listPay.Select(a => a.company_name));
listSupplier.AddRange(listRecevice.Select(a => a.company_name));
listSupplier = listSupplier.Distinct().ToList();
foreach (var item in listSupplier)
{
var m = new dc_daily_logistics_supplier_transaction() {
amount_end = 0,
amount_happen = 0,
amount_other = 0,
amount_pay = 0,
amount_receipt = 0,
amount_start = 0,
createtime = DateTime.Now,
day = day,
lastupdatetime = DateTime.Now,
lastupdateuserid = 0,
lastupdateusername = "admin",
supplierid = 0,
suppliername = item,
};
var objHappen = listHappen.Where(a => a.company_name == item).FirstOrDefault();
if (objHappen != null)
{
m.amount_happen = objHappen.merchant_shipment_cost_cny;
}
var objPay = listPay.Where(a => a.company_name == item).FirstOrDefault();
if (objPay != null)
{
m.amount_pay = objPay.merchant_shipment_cost_cny;
}
var objReceive = listRecevice.Where(a => a.company_name == item).FirstOrDefault();
if (objReceive != null)
{
m.amount_receipt = objReceive.merchant_shipment_cost_cny;
}
list.Add(m);
}
}
Save(list);
}
private void Save(List<dc_daily_logistics_supplier_transaction> list)
{
var _sql = "insert dc_daily_logistics_supplier_transaction (day,supplierid,suppliername,amount_start,amount_happen,amount_pay,amount_receipt,amount_other,amount_end,createtime,lastupdatetime,lastupdateuserid,lastupdateusername) values ";
var s = "";
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
foreach (var item in list)
{
//获取期初
var sql = $"select * from dc_daily_logistics_supplier_transaction where suppliername='{item.suppliername}' and day='{item.day.AddDays(-1).ToString("yyyy-MM-dd")}'";
var objStart = cn.QueryFirstOrDefault<dc_daily_logistics_supplier_transaction>(sql);
if (objStart != null)
{
item.amount_start = objStart.amount_end;
}
//查看是否有本期数据
sql = $"select * from dc_daily_logistics_supplier_transaction where suppliername='{item.suppliername}' and day='{item.day.ToString("yyyy-MM-dd")}'";
var obj = cn.QueryFirstOrDefault<dc_daily_logistics_supplier_transaction>(sql);
if (obj != null)
{
item.amount_other = obj.amount_other;
}
//期末 = 期初+发生额-付款额+收款额-其他金额
item.amount_end = item.amount_start + item.amount_happen - item.amount_pay + (-item.amount_receipt) + item.amount_other;
s += ($"('{item.day.ToString("yyyy-MM-dd")}',{item.supplierid},'{item.suppliername}',{item.amount_start},{item.amount_happen},{item.amount_pay},{item.amount_receipt},{item.amount_other},{item.amount_end},'{item.createtime.ToString("yyyy-MM-dd HH:mm:ss")}','{item.lastupdatetime.ToString("yyyy-MM-dd HH:mm:ss")}',{item.lastupdateuserid},'{item.lastupdateusername}'),");
}
if (s.Length > 0)
{
s = s.Substring(0, s.Length - 1);
cn.Execute(_sql + s);
}
}
}
}
......
......@@ -7,27 +7,27 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales
{
class Program
{
static async Task Main(string[] args)
{
Console.WriteLine("每日销进差异汇总");
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 start = DateTime.Parse("2020-06-02");
// while (start.AddDays(1) < DateTime.Now)
// Console.WriteLine("每日销进差异汇总");
// var builder = new HostBuilder().ConfigureServices((hostContext, services) =>
// {
// Console.WriteLine(start.ToString("yyyy-MM-dd"));
// new Services().Init(start, start.AddDays(1));
// start = start.AddDays(1);
// }
// services.AddHostedService<Services>();
// });
// await builder.RunConsoleAsync();
//}
static void Main(string[] args)
{
var start = DateTime.Parse("2020-05-03");
while (start.AddDays(1) < DateTime.Now)
{
Console.WriteLine(start.ToString("yyyy-MM-dd"));
new Services().Init(start, start.AddDays(1));
start = start.AddDays(1);
}
}
}
}
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