Commit 4edb12f7 by guanzhenshan

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

parent a55a28cb
......@@ -10,6 +10,7 @@
<PackageReference Include="Dapper" Version="2.0.78" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.0.0" />
<PackageReference Include="MySql.Data" Version="8.0.11" />
<PackageReference Include="Newtonsoft.Json" Version="10.0.1" />
</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
//static void Main(string[] args)
//{
// 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
Console.WriteLine("库存大于0的记录数:"+ liststock.Count+ " >>" + DateTime.Now);
Console.WriteLine("开始计算库龄数据... >>"+DateTime.Now);
//对比库存和入库数据,记录库龄数据
foreach (var item in liststock)
{
......@@ -83,6 +84,8 @@ namespace Bailun.DC.DailyStockAge
where t1.warehouse_type='';";
cn_update.Execute(sql, null, null, 2 * 60);
Console.WriteLine("更新成品仓库类型字段成功 >>" + DateTime.Now);
//更新成品库龄数据的sku产品类型字段
sql = @"update dc_mid_stock_age t1
join dc_base_sku t2 on t1.bailun_sku=t2.bailun_sku
......@@ -91,6 +94,14 @@ namespace Bailun.DC.DailyStockAge
where t1.warehouse_type!='半成品仓'";
cn_update.Execute(sql, null, null, 2 * 60);
Console.WriteLine("更新成品Sku产品类型字段成功 >>" + DateTime.Now);
#endregion
#region 半成品
#endregion
cn_update.Close();
......@@ -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(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)) //当前库存大于当天的入库记录
{
......@@ -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();
if (listPurchasePutIn.Count == 0 && listAllotPutIn.Count == 0) //没有找到入库记录
{
//把库龄都记录到2019-01-01的日期上
json.agecount = stock;
if (cn_update.State == System.Data.ConnectionState.Closed)
{
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
//{
......@@ -161,8 +185,10 @@ namespace Bailun.DC.DailyStockAge
var count = 0;
foreach (var item in listdate)
{
var putinCount = 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 purchaseCount = listPurchasePutIn.Where(a => a.update_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;
if (item == "0001-01-01")
......@@ -172,12 +198,19 @@ namespace Bailun.DC.DailyStockAge
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)
{
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
//{
......@@ -203,12 +236,20 @@ namespace Bailun.DC.DailyStockAge
// 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)
{
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;
......@@ -219,7 +260,10 @@ namespace Bailun.DC.DailyStockAge
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
// 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