Commit 4edb12f7 by guanzhenshan

生成库龄服务增加保存推算的采购单记录和调拨单记录

parent a55a28cb
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
<PackageReference Include="Dapper" Version="2.0.78" /> <PackageReference Include="Dapper" Version="2.0.78" />
<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.11" /> <PackageReference Include="MySql.Data" Version="8.0.11" />
<PackageReference Include="Newtonsoft.Json" Version="10.0.1" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
......
using System;
using System.Collections.Generic;
using System.Text;
namespace Bailun.DC.DailyStockAge.Models
{
public class jsondata
{
/// <summary>
/// 实时库存
/// </summary>
public int stock { get; set; }
/// <summary>
/// 采购入库数
/// </summary>
public int purchasecount { get; set; }
/// <summary>
/// 调拨入库数
/// </summary>
public int allotcount { get; set; }
/// <summary>
/// 库龄库存数
/// </summary>
public int agecount { get; set; }
/// <summary>
/// 采购单号集合
/// </summary>
public List<string> listpurchase { get; set; }
/// <summary>
/// 调拨单号集合
/// </summary>
public List<string> listallot { get; set; }
}
}
...@@ -21,7 +21,7 @@ namespace Bailun.DC.DailyStockAge ...@@ -21,7 +21,7 @@ namespace Bailun.DC.DailyStockAge
//static void Main(string[] args) //static void Main(string[] args)
//{ //{
// var _service = new Services(); // var _service = new Services();
// _service.Init(DateTime.Parse("2021-03-16")); // _service.Init(DateTime.Parse("2021-03-18"));
//} //}
} }
} }
...@@ -65,6 +65,7 @@ namespace Bailun.DC.DailyStockAge ...@@ -65,6 +65,7 @@ namespace Bailun.DC.DailyStockAge
Console.WriteLine("库存大于0的记录数:"+ liststock.Count+ " >>" + DateTime.Now); Console.WriteLine("库存大于0的记录数:"+ liststock.Count+ " >>" + DateTime.Now);
Console.WriteLine("开始计算库龄数据... >>"+DateTime.Now);
//对比库存和入库数据,记录库龄数据 //对比库存和入库数据,记录库龄数据
foreach (var item in liststock) foreach (var item in liststock)
{ {
...@@ -83,6 +84,8 @@ namespace Bailun.DC.DailyStockAge ...@@ -83,6 +84,8 @@ namespace Bailun.DC.DailyStockAge
where t1.warehouse_type='';"; where t1.warehouse_type='';";
cn_update.Execute(sql, null, null, 2 * 60); cn_update.Execute(sql, null, null, 2 * 60);
Console.WriteLine("更新成品仓库类型字段成功 >>" + DateTime.Now);
//更新成品库龄数据的sku产品类型字段 //更新成品库龄数据的sku产品类型字段
sql = @"update dc_mid_stock_age t1 sql = @"update dc_mid_stock_age t1
join dc_base_sku t2 on t1.bailun_sku=t2.bailun_sku join dc_base_sku t2 on t1.bailun_sku=t2.bailun_sku
...@@ -91,6 +94,14 @@ namespace Bailun.DC.DailyStockAge ...@@ -91,6 +94,14 @@ namespace Bailun.DC.DailyStockAge
where t1.warehouse_type!='半成品仓'"; where t1.warehouse_type!='半成品仓'";
cn_update.Execute(sql, null, null, 2 * 60); cn_update.Execute(sql, null, null, 2 * 60);
Console.WriteLine("更新成品Sku产品类型字段成功 >>" + DateTime.Now);
#endregion
#region 半成品
#endregion #endregion
cn_update.Close(); cn_update.Close();
...@@ -118,7 +129,17 @@ namespace Bailun.DC.DailyStockAge ...@@ -118,7 +129,17 @@ namespace Bailun.DC.DailyStockAge
dailyCountPurchasePutIn = cn.QueryFirstOrDefault<int?>($"select sum(count) from dc_base_purchase_inbound where bailun_sku='{sku}' and warehouse_code='{warehousecode}' and status=1 and has_transfer=0 and update_time>='{day.ToString("yyyy-MM-dd")}' and update_time<'{day.AddDays(1).ToString("yyyy-MM-dd")}'")??0; dailyCountPurchasePutIn = cn.QueryFirstOrDefault<int?>($"select sum(count) from dc_base_purchase_inbound where bailun_sku='{sku}' and warehouse_code='{warehousecode}' and status=1 and has_transfer=0 and update_time>='{day.ToString("yyyy-MM-dd")}' and update_time<'{day.AddDays(1).ToString("yyyy-MM-dd")}'")??0;
dailyCountPurchasePutIn = cn.QueryFirstOrDefault<int?>($"select sum(t1.count) from dc_base_transfer_complete t1 where t1.deleted=0 and t1.bailun_sku='{sku}' and t1.warehouse_code='{warehousecode}' and t1.create_time>='{day.ToString("yyyy-MM-dd")}' and t1.create_time<'{day.AddDays(1).ToString("yyyy-MM-dd")}'")??0; dailyCountAllotPutIn = cn.QueryFirstOrDefault<int?>($"select sum(t1.count) from dc_base_transfer_complete t1 where t1.deleted=0 and t1.bailun_sku='{sku}' and t1.warehouse_code='{warehousecode}' and t1.create_time>='{day.ToString("yyyy-MM-dd")}' and t1.create_time<'{day.AddDays(1).ToString("yyyy-MM-dd")}'")??0;
//记录推算结果的json
var json = new Models.jsondata() {
stock = stock,
purchasecount = 0,
allotcount = 0,
listallot = new List<string>(),
listpurchase = new List<string>()
};
if (stock > (dailyCountPurchasePutIn + dailyCountAllotPutIn)) //当前库存大于当天的入库记录 if (stock > (dailyCountPurchasePutIn + dailyCountAllotPutIn)) //当前库存大于当天的入库记录
{ {
...@@ -128,16 +149,19 @@ namespace Bailun.DC.DailyStockAge ...@@ -128,16 +149,19 @@ namespace Bailun.DC.DailyStockAge
var listAllotPutIn = cn.Query<dc_base_transfer_complete>($"select * from dc_base_transfer_complete t1 where t1.deleted=0 and t1.bailun_sku='{sku}' and t1.warehouse_code='{warehousecode}' order by create_time desc").AsList(); var listAllotPutIn = cn.Query<dc_base_transfer_complete>($"select * from dc_base_transfer_complete t1 where t1.deleted=0 and t1.bailun_sku='{sku}' and t1.warehouse_code='{warehousecode}' order by create_time desc").AsList();
if (listPurchasePutIn.Count == 0 && listAllotPutIn.Count == 0) //没有找到入库记录 if (listPurchasePutIn.Count == 0 && listAllotPutIn.Count == 0) //没有找到入库记录
{ {
//把库龄都记录到2019-01-01的日期上 //把库龄都记录到2019-01-01的日期上
json.agecount = stock;
if (cn_update.State == System.Data.ConnectionState.Closed) if (cn_update.State == System.Data.ConnectionState.Closed)
{ {
cn_update.Open(); cn_update.Open();
} }
cn_update.Execute($"insert dc_mid_stock_age (createtime,warehouse_code,bailun_sku,day,stock,warehouse_name) value ('{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}','{warehousecode}','{sku}','{"2019-01-01"}','{stock}','');"); cn_update.Execute($"insert dc_mid_stock_age (createtime,warehouse_code,bailun_sku,day,stock,warehouse_name,basisdata_json) value ('{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}','{warehousecode}','{sku}','{"2019-01-01"}','{stock}','','{Newtonsoft.Json.JsonConvert.SerializeObject(json)}');");
//var m = new dc_mid_stock_age //var m = new dc_mid_stock_age
//{ //{
...@@ -161,8 +185,10 @@ namespace Bailun.DC.DailyStockAge ...@@ -161,8 +185,10 @@ namespace Bailun.DC.DailyStockAge
var count = 0; var count = 0;
foreach (var item in listdate) foreach (var item in listdate)
{ {
var putinCount = listPurchasePutIn.Where(a => a.update_time.ToString("yyyy-MM-dd") == item)?.Sum(a => a.count)??0; var purchaseCount = listPurchasePutIn.Where(a => a.update_time.ToString("yyyy-MM-dd") == item)?.Sum(a => a.count)??0;
putinCount += listAllotPutIn.Where(a => a.create_time.ToString("yyyy-MM-dd") == item)?.Sum(a => a.count) ?? 0; var allotCount = listAllotPutIn.Where(a => a.create_time.ToString("yyyy-MM-dd") == item)?.Sum(a => a.count) ?? 0;
var putinCount = purchaseCount + allotCount;
var key = item; var key = item;
if (item == "0001-01-01") if (item == "0001-01-01")
...@@ -172,12 +198,19 @@ namespace Bailun.DC.DailyStockAge ...@@ -172,12 +198,19 @@ namespace Bailun.DC.DailyStockAge
if ((putinCount + count) <= stock) if ((putinCount + count) <= stock)
{ {
json.agecount = putinCount;
json.purchasecount = purchaseCount;
json.allotcount = allotCount;
json.listpurchase = listPurchasePutIn.Where(a => a.update_time.ToString("yyyy-MM-dd") == item).Select(a => a.purchase_id + "*" + a.count).ToList();
json.listallot = listAllotPutIn.Where(a => a.create_time.ToString("yyyy-MM-dd") == item).Select(a => a.transfer_order_id + "*" + a.count).ToList();
if (cn_update.State == System.Data.ConnectionState.Closed) if (cn_update.State == System.Data.ConnectionState.Closed)
{ {
cn_update.Open(); cn_update.Open();
} }
cn_update.Execute($"insert dc_mid_stock_age (createtime,warehouse_code,bailun_sku,day,stock,warehouse_name) value ('{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}','{warehousecode}','{sku}','{key}','{putinCount}','');"); cn_update.Execute($"insert dc_mid_stock_age (createtime,warehouse_code,bailun_sku,day,stock,warehouse_name,basisdata_json) value ('{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}','{warehousecode}','{sku}','{key}','{putinCount}','','{Newtonsoft.Json.JsonConvert.SerializeObject(json)}');");
//var m = new dc_mid_stock_age //var m = new dc_mid_stock_age
//{ //{
...@@ -203,12 +236,20 @@ namespace Bailun.DC.DailyStockAge ...@@ -203,12 +236,20 @@ namespace Bailun.DC.DailyStockAge
// warehouse_name = "", // warehouse_name = "",
//}; //};
json.agecount = (stock - count);
json.purchasecount = purchaseCount;
json.allotcount = allotCount;
json.listpurchase = listPurchasePutIn.Where(a => a.update_time.ToString("yyyy-MM-dd") == item).Select(a => a.purchase_id + "*" + a.count).ToList();
json.listallot = listAllotPutIn.Where(a => a.create_time.ToString("yyyy-MM-dd") == item).Select(a => a.transfer_order_id + "*" + a.count).ToList();
if (cn_update.State == System.Data.ConnectionState.Closed) if (cn_update.State == System.Data.ConnectionState.Closed)
{ {
cn_update.Open(); cn_update.Open();
} }
cn_update.Execute($"insert dc_mid_stock_age (createtime,warehouse_code,bailun_sku,day,stock,warehouse_name) value ('{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}','{warehousecode}','{sku}','{key}','{(stock-count)}','');"); cn_update.Execute($"insert dc_mid_stock_age (createtime,warehouse_code,bailun_sku,day,stock,warehouse_name,basisdata_json) value ('{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}','{warehousecode}','{sku}','{key}','{(stock-count)}','','{Newtonsoft.Json.JsonConvert.SerializeObject(json)}');");
count = stock; count = stock;
...@@ -219,7 +260,10 @@ namespace Bailun.DC.DailyStockAge ...@@ -219,7 +260,10 @@ namespace Bailun.DC.DailyStockAge
if (count < stock) if (count < stock)
{ {
cn_update.Execute($"insert dc_mid_stock_age (createtime,warehouse_code,bailun_sku,day,stock,warehouse_name) value ('{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}','{warehousecode}','{sku}','{"2019-01-01"}','{(stock-count)}','');"); json.agecount = stock - count;
cn_update.Execute($"insert dc_mid_stock_age (createtime,warehouse_code,bailun_sku,day,stock,warehouse_name,basisdata_json) value ('{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}','{warehousecode}','{sku}','{"2019-01-01"}','{(stock-count)}','','{Newtonsoft.Json.JsonConvert.SerializeObject(json)}');");
} }
} }
...@@ -236,7 +280,16 @@ namespace Bailun.DC.DailyStockAge ...@@ -236,7 +280,16 @@ namespace Bailun.DC.DailyStockAge
// warehouse_name = "", // warehouse_name = "",
//}; //};
cn_update.Execute($"insert dc_mid_stock_age (createtime,warehouse_code,bailun_sku,day,stock,warehouse_name) value ('{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}','{warehousecode}','{sku}','{day.ToString("yyyy-MM-dd")}','{(stock)}','');"); json.agecount = stock;
json.purchasecount = dailyCountPurchasePutIn;
json.allotcount = dailyCountAllotPutIn;
json.listpurchase = cn.Query<dc_base_purchase_inbound>($"select * from dc_base_purchase_inbound where bailun_sku='{sku}' and warehouse_code='{warehousecode}' and status=1 and has_transfer=0 and update_time>='{day.ToString("yyyy-MM-dd")}' and update_time<'{day.AddDays(1).ToString("yyyy-MM-dd")}'").Select(a => a.purchase_id + "*" + a.count).ToList();
json.listallot = cn.Query<dc_base_transfer_complete>($"select * from dc_base_transfer_complete t1 where t1.deleted=0 and t1.bailun_sku='{sku}' and t1.warehouse_code='{warehousecode}' and t1.create_time>='{day.ToString("yyyy-MM-dd")}' and t1.create_time<'{day.AddDays(1).ToString("yyyy-MM-dd")}'").Select(a => a.transfer_order_id + "*" + a.count).ToList();
cn_update.Execute($"insert dc_mid_stock_age (createtime,warehouse_code,bailun_sku,day,stock,warehouse_name,basisdata_json) value ('{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}','{warehousecode}','{sku}','{day.ToString("yyyy-MM-dd")}','{(stock)}','','{Newtonsoft.Json.JsonConvert.SerializeObject(json)}');");
} }
......
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