Commit 26ca1c37 by 泽锋 李

新增转仓任务

parent 8ff550e2
using AutoTurnOver.Models;
using AutoTurnOver.Utility;
using Dapper;
using System;
using System.Collections.Generic;
......@@ -79,17 +80,6 @@ where 1=1 ";
{
var turnover_data = conn.QueryFirstOrDefault<AutoTurnOver.Models.dc_auto_turnover>(" select * from dc_auto_turnover where id=@id ", new { id = item });
// 检查是否已经存在数据
//var new_turnover_data_count = conn.QueryFirstOrDefault<int>(" select count(1) from dc_auto_turnover where warehouse_code=@warehouse_code and bailun_sku=@bailun_sku ", new
//{
// warehouse_code = input_data.to_warehouse_code,
// bailun_sku = turnover_data.bailun_sku
//});
//if (new_turnover_data_count >= 1)
//{
// throw new Exception($" {turnover_data.bailun_sku} - {input_data.to_warehouse_code} 已存在,请勿重复操作");
//}
// 添加一条日志
conn.Insert(new dc_aims_transfer_warehouse_log
{
......@@ -112,5 +102,163 @@ where 1=1 ";
}
}
/// <summary>
/// 执行转仓操作
/// </summary>
public static void TransferWarehouseTask()
{
List<dc_aims_transfer_warehouse_log> logs = _connection.Query<dc_aims_transfer_warehouse_log>(" select * from dc_aims_transfer_warehouse_log where `status` not in @not_status ",new {
not_status = new List<int> { (int)dc_aims_transfer_warehouse_log_dto.status_enum.失败, (int)dc_aims_transfer_warehouse_log_dto.status_enum.完成, (int)dc_aims_transfer_warehouse_log_dto.status_enum.刷新周转数据 }
}).AsList();
if (logs != null && logs.Count>=1)
{
foreach (var item in logs)
{
TransferWarehouseAction(item);
}
}
}
/// <summary>
/// 转仓任务
/// </summary>
public static void TransferWarehouseAction(dc_aims_transfer_warehouse_log logData)
{
using (var conn = MyMySqlConnection._connection)
{
conn.Open();
using (var t = conn.BeginTransaction())
{
try
{
var from_turnover_data = conn.QueryFirstOrDefault<AutoTurnOver.Models.dc_auto_turnover>(" select * from dc_auto_turnover where bailun_sku=@bailun_sku and warehouse_code=@warehouse_code ", new { bailun_sku = logData.bailun_sku, warehouse_code = logData.from_warehouse_code });
//检查是否已经存在数据
var new_turnover_data_count = conn.QueryFirstOrDefault<int>(" select count(1) from dc_auto_turnover where warehouse_code=@warehouse_code and bailun_sku=@bailun_sku ", new
{
warehouse_code = logData.to_warehouse_code,
bailun_sku = from_turnover_data.bailun_sku
});
if (new_turnover_data_count >= 1)
{
throw new Exception($" {logData.bailun_sku} - {logData.to_warehouse_code} 已存在,请勿重复操作");
}
logData.status = (int)dc_aims_transfer_warehouse_log_dto.status_enum.转移最新30天销量;
_connection.Update(logData);
// 查询历史销量
var dc_base_forecast_historys = conn.Query<dc_base_forecast_history>(@"
select
t1.bailun_sku,
t1.warehouse_code,
CONCAT(t1.bailun_sku,t1.warehouse_code) as 'bailun_sku_warehouse_code',
DATE_FORMAT(create_time,'%Y-%m-%d') as 'date',
DATE_FORMAT(create_time,'%Y-%m-%d') as 'date_str',
now() as 'create_date',
sum( t1.bailun_sku_quantity_ordered) as 'sales'
from dc_base_oms_sku_30 as t1
where t1.bailun_sku=@bailun_sku and t1.warehouse_code=@warehouse_code
and has_fba_s = 0
and has_delete = 0
and has_scalp = 0
and has_buyer_remark = 0
and has_platsku_remark = 0
and has_innersale = 0
and bailun_order_status !='Canceled'
and platform_order_type != '手工单'
and t1.create_time>=@date30
GROUP BY DATE_FORMAT(create_time,'%Y-%m-%d')
",new { bailun_sku = logData.bailun_sku, warehouse_code = logData.from_warehouse_code, date30 = DateTime.Now.AddDays(-31)}).AsList();
if(dc_base_forecast_historys!=null && dc_base_forecast_historys.Count >= 1)
{
foreach (var item in dc_base_forecast_historys)
{
item.warehouse_code = logData.to_warehouse_code;
item.bailun_sku_warehouse_code = $"{logData.bailun_sku}{logData.to_warehouse_code}";
item.id = conn.QuerySingleOrDefault<int?>(" select * from dc_base_forecast_history where bailun_sku_warehouse_code=@bailun_sku_warehouse_code and date_str=@date_str ",new {
bailun_sku_warehouse_code = item.warehouse_code,
date_str = item.date_str
}) ?? 0;
if (item.id > 0)
{
conn.Update(item,t);
}
else
{
conn.Insert(item, t);
}
}
logData.status = (int)dc_aims_transfer_warehouse_log_dto.status_enum.刷新周转数据;
_connection.Update(logData);
_connection.Insert(new dc_base_queue
{
submit_date = DateTime.Now,
error_message = "",
consume_date = null,
error_stack_trace = "",
message = new { bailun_sku = logData.bailun_sku, warehouse_code = logData.to_warehouse_code }.ToJson(),
type = "刷新周转表"
});
}
else
{
throw new Exception("未查询到来源仓最近30天有销量");
}
}
catch (Exception ex)
{
logData.status = (int)dc_aims_transfer_warehouse_log_dto.status_enum.失败;
logData.error_message = ex.Message;
logData.error_stack_trace = ex.StackTrace;
conn.Update(logData,t);
}
t.Commit();
}
}
}
/// <summary>
/// 监听完成情况
/// </summary>
public static void MonitorCompleteStatus()
{
List<dc_aims_transfer_warehouse_log> logs = _connection.Query<dc_aims_transfer_warehouse_log>(" select * from dc_aims_transfer_warehouse_log where `status` in @not_status ", new
{
not_status = new List<int> { (int)dc_aims_transfer_warehouse_log_dto.status_enum.刷新周转数据 }
}).AsList();
if (logs != null && logs.Count >= 1)
{
foreach (var item in logs)
{
// 查询该仓库是否已经有数据了
var new_turnover_data_count = _connection.QueryFirstOrDefault<int>(" select count(1) from dc_auto_turnover where warehouse_code=@warehouse_code and bailun_sku=@bailun_sku ", new
{
warehouse_code = item.to_warehouse_code,
bailun_sku = item.bailun_sku
});
if (new_turnover_data_count >= 1)
{
item.status = (int)dc_aims_transfer_warehouse_log_dto.status_enum.完成;
_connection.Update(item);
}
}
}
}
}
}
......@@ -33,8 +33,46 @@ namespace AutoTurnOver.DownloadService
Console.WriteLine(ex.StackTrace);
}
}
});
Task.Factory.StartNew(() =>
{
while (true)
{
try
{
Console.WriteLine($"开始 转仓任务 执行 ,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
dc_aims_transfer_warehouse_dao.TransferWarehouseTask();
Console.WriteLine($"结束 转仓任务 执行 ,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
Thread.Sleep(60 * 1000);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.WriteLine(ex.StackTrace);
}
}
});
Task.Factory.StartNew(() =>
{
while (true)
{
try
{
Console.WriteLine($"开始 转仓任务 监听完成状态 ,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
dc_aims_transfer_warehouse_dao.MonitorCompleteStatus();
Console.WriteLine($"结束 转仓任务 监听完成状态 ,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
Thread.Sleep(60 * 1000);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.WriteLine(ex.StackTrace);
}
}
});
return Task.CompletedTask;
......
using AutoTurnOver.Services;
using AutoTurnOver.DB;
using AutoTurnOver.Services;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System;
......@@ -12,7 +13,8 @@ namespace AutoTurnOver.DownloadService
{
try
{
//await new TaskDownloadServices().Download();
//await new TaskDownloadServices().Download();
}
catch (Exception ex)
{
......
......@@ -29,7 +29,8 @@ namespace ResetOutofstock
//report.PurchaseWeekBackUp();
//await new TaskDownloadServices().Download();
//daily.ResetFbaExtendSales(DateTime.Now);
dc_aims_transfer_warehouse_dao.TransferWarehouseTask();
}
catch (Exception ex)
{
......
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