Commit 26e7c11b by 泽锋 李

尾程费支持根据供应商账期计算支付时间

parent ab22cdad
......@@ -35,5 +35,25 @@ namespace AutoTurnOver.DB
return;
}
public static List<LmsShipLogisticsDto> ShipLogisticsList()
{
//查询采购建议明细
return RedisHelper.Get(RedisConsts.Lms_GetLogistics, () =>
{
string url = ConfigHelper.GetValue("Lms_GetLogistics");
string resultStr = HttpHelper.Request(url, RequestType.GET, "", timeout: 1000 * 60 * 60 * 24);
var result = resultStr.ToObj<LmsResultDto<List<LmsShipLogisticsDto>>>();
if (result == null)
{
throw new Exception("lms系统异常: 未获取到数据");
}
if (!result.Success)
{
throw new Exception("lms系统异常: " + result.ErrorMessage);
}
return result.Data;
});
}
}
}
......@@ -3,8 +3,10 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using AutoTurnOver.Models;
using AutoTurnOver.Models.ApiDto;
using AutoTurnOver.Models.Report;
using Dapper;
using AutoTurnOver.Utility;
namespace AutoTurnOver.DB
{
......@@ -26,6 +28,7 @@ namespace AutoTurnOver.DB
List<dc_report_cash_flow_config> configs = conn.Query<dc_report_cash_flow_config>(" select * from dc_report_cash_flow_config ").AsList();
while (true)
{
var now = DateTime.Now;
var sql = " select * from dc_base_oms_sku where gmt_create>=@btime ";
DynamicParameters parameters = new DynamicParameters();
parameters.Add("btime", btime.ToString("yyyy-MM-dd 00:00:00"));
......@@ -53,6 +56,7 @@ namespace AutoTurnOver.DB
data_type = (int)dc_report_cash_flow_log_data_type_enum.释放头程费用,
is_delete = (order_item.has_delete == 1 || order_item.has_scalp == 1) ? 1 : 0,
item = order_item.bailun_order_id,
update_time = now,
no = order_item.bailun_order_id,
platform_type = order_item.platform_type,
remarks = "",
......@@ -88,6 +92,7 @@ namespace AutoTurnOver.DB
data_type = (int)dc_report_cash_flow_log_data_type_enum.释放销售成本,
is_delete = (order_item.has_delete == 1 || order_item.has_scalp == 1) ? 1 : 0,
item = order_item.bailun_order_id,
update_time = now,
no = order_item.bailun_order_id,
platform_type = order_item.platform_type,
remarks = "",
......@@ -115,41 +120,6 @@ namespace AutoTurnOver.DB
#endregion
#region 尾程费
dc_report_cash_flow_log item4 = new dc_report_cash_flow_log()
{
bailun_sku = order_item.bailun_sku,
data_type = (int)dc_report_cash_flow_log_data_type_enum.平台费用,
is_delete = (order_item.has_delete == 1 || order_item.has_scalp == 1) ? 1 : 0,
item = order_item.bailun_order_id,
no = order_item.bailun_order_id,
platform_type = order_item.platform_type,
remarks = "",
val = order_item.cost_logistics * order_item.bailun_sku_quantity_ordered,
occur_time = order_item.paid_time ?? new DateTime(1991, 1, 1),
warehouse_code = order_item.warehouse_code,
pay_type = (int)dc_report_cash_flow_log_pay_type_enum.后付,
item_no = order_item.bailun_order_id
};
item4.pay_time = CalculationPayTime(configs, item4.occur_time, item4.data_type, item4.platform_type);
item4.id = conn.QuerySingleOrDefault<int?>(" select * from dc_report_cash_flow_log where data_type=@data_type and bailun_sku=@bailun_sku and item_no=@item_no ", new
{
data_type = item4.data_type,
bailun_sku = item4.bailun_sku,
item_no = item4.item_no
}) ?? 0;
if (item4.id > 0)
{
conn.Update(item4);
}
else
{
conn.Insert(item4);
}
#endregion
#region 平台费
dc_report_cash_flow_log item3 = new dc_report_cash_flow_log()
......@@ -158,6 +128,7 @@ namespace AutoTurnOver.DB
data_type = (int)dc_report_cash_flow_log_data_type_enum.平台费用,
is_delete = (order_item.has_delete == 1 || order_item.has_scalp == 1) ? 1 : 0,
item = order_item.bailun_order_id,
update_time = now,
no = order_item.bailun_order_id,
platform_type = order_item.platform_type,
remarks = "",
......@@ -193,6 +164,7 @@ namespace AutoTurnOver.DB
data_type = (int)dc_report_cash_flow_log_data_type_enum.利润,
is_delete = (order_item.has_delete == 1 || order_item.has_scalp == 1) ? 1 : 0,
item = order_item.bailun_order_id,
update_time = now,
no = order_item.bailun_order_id,
platform_type = order_item.platform_type,
remarks = "",
......@@ -228,6 +200,7 @@ namespace AutoTurnOver.DB
data_type = (int)dc_report_cash_flow_log_data_type_enum.销售数量,
is_delete = (order_item.has_delete == 1 || order_item.has_scalp == 1) ? 1 : 0,
item = order_item.bailun_order_id,
update_time = now,
no = order_item.bailun_order_id,
platform_type = order_item.platform_type,
remarks = "",
......@@ -263,6 +236,7 @@ namespace AutoTurnOver.DB
data_type = (int)dc_report_cash_flow_log_data_type_enum.销售金额,
is_delete = (order_item.has_delete == 1 || order_item.has_scalp == 1) ? 1 : 0,
item = order_item.bailun_order_id,
update_time = now,
no = order_item.bailun_order_id,
platform_type = order_item.platform_type,
remarks = "",
......@@ -304,7 +278,106 @@ namespace AutoTurnOver.DB
}
catch (Exception ex)
{
Console.WriteLine("现金流-订单-异常"+ex.Message);
Console.WriteLine("现金流-订单-异常" + ex.Message);
Console.WriteLine("现金流-订单-异常" + ex.StackTrace);
}
}
/// <summary>
/// 计算订单尾程费
/// </summary>
/// <param name="btime"></param>
/// <param name="etime"></param>
public static void CalculationOrderCostLogistics(DateTime btime, DateTime? etime)
{
try
{
var conn = _connection;
int page = 1;
int rows = 1000;
var logisticsList = ApiUtility.ShipLogisticsList();
List<dc_report_logistics_company_config_dto> logistics_company_list = conn.Query<dc_report_logistics_company_config_dto>(" select * from dc_report_logistics_company_config ").AsList();
List<dc_report_cash_flow_config> configs = conn.Query<dc_report_cash_flow_config>(" select * from dc_report_cash_flow_config ").AsList();
while (true)
{
var now = DateTime.Now;
var sql = " select * from dc_base_oms_sku where gmt_create>=@btime ";
DynamicParameters parameters = new DynamicParameters();
parameters.Add("btime", btime.ToString("yyyy-MM-dd 00:00:00"));
if (etime != null)
{
sql += " and gmt_create<=@etime ";
parameters.Add("etime", etime.Value.ToString("yyyy-MM-dd 23:59:59"));
}
sql += $" limit {(page - 1) * rows},{rows} ";
var order_list = conn.Query<dc_base_oms_sku>(sql, parameters).AsList();
if (order_list == null || order_list.Count <= 0)
{
break;
}
page++;
foreach (var order_item in order_list)
{
try
{
#region 尾程费
dc_report_cash_flow_log item4 = new dc_report_cash_flow_log()
{
bailun_sku = order_item.bailun_sku,
data_type = (int)dc_report_cash_flow_log_data_type_enum.尾程费用,
is_delete = (order_item.has_delete == 1 || order_item.has_scalp == 1) ? 1 : 0,
item = order_item.bailun_order_id,
update_time = now,
no = order_item.bailun_order_id,
platform_type = order_item.platform_type,
remarks = "",
val = order_item.cost_logistics * order_item.bailun_sku_quantity_ordered,
occur_time = order_item.paid_time ?? new DateTime(1991, 1, 1),
warehouse_code = order_item.warehouse_code,
pay_type = (int)dc_report_cash_flow_log_pay_type_enum.后付,
item_no = order_item.bailun_order_id
};
var pick_data_logistics_order_id = conn.QueryFirstOrDefault<string>(" select logistics_order_id from dc_base_oms_pick where bailun_order_id=@bailun_order_id and bailun_sku=@bailun_sku limit 1 ",new {
bailun_order_id = order_item.bailun_order_id,
bailun_sku = order_item.bailun_sku
});
var remarks = "";
item4.pay_time = CalculationLogisticsPayTime(logisticsList, logistics_company_list, item4.occur_time, pick_data_logistics_order_id,out remarks);
item4.remarks = remarks;
item4.id = conn.QuerySingleOrDefault<int?>(" select * from dc_report_cash_flow_log where data_type=@data_type and bailun_sku=@bailun_sku and item_no=@item_no ", new
{
data_type = item4.data_type,
bailun_sku = item4.bailun_sku,
item_no = item4.item_no
}) ?? 0;
if (item4.id > 0)
{
conn.Update(item4);
}
else
{
conn.Insert(item4);
}
#endregion
}
catch (Exception ex)
{
Console.WriteLine($"现金流-订单-{order_item.bailun_order_id}-异常" + ex.Message);
Console.WriteLine("现金流-订单-异常" + ex.StackTrace);
}
}
}
}
catch (Exception ex)
{
Console.WriteLine("现金流-订单-异常" + ex.Message);
Console.WriteLine("现金流-订单-异常" + ex.StackTrace);
}
......@@ -326,6 +399,7 @@ namespace AutoTurnOver.DB
List<dc_report_cash_flow_config> configs = conn.Query<dc_report_cash_flow_config>(" select * from dc_report_cash_flow_config ").AsList();
while (true)
{
var now = DateTime.Now;
var sql = " select t1.*,t2.pay_time from dc_base_purchase_details as t1 left join dc_base_purchase as t2 on t1.purchase_id = t2.purchase_id and t1.bailun_sku = t2.bailun_sku where t1.gmt_create>=@btime and t1.gmt_create<=@etime ";
DynamicParameters parameters = new DynamicParameters();
parameters.Add("btime", btime.ToString("yyyy-MM-dd 00:00:00"));
......@@ -349,6 +423,7 @@ namespace AutoTurnOver.DB
data_type = (int)dc_report_cash_flow_log_data_type_enum.新增采购费用,
is_delete = (order_item.status == -1) ? 1 : 0,
item = order_item.purchase_id,
update_time = now,
no = order_item.purchase_id,
platform_type = "",
remarks = "",
......@@ -415,6 +490,7 @@ namespace AutoTurnOver.DB
List<dc_report_cash_flow_config> configs = conn.Query<dc_report_cash_flow_config>(" select * from dc_report_cash_flow_config ").AsList();
while (true)
{
var now = DateTime.Now;
var sql = " select t1.* from dc_base_crm_refund as t1 where gmt_create>=@btime and gmt_create<=@etime ";
DynamicParameters parameters = new DynamicParameters();
parameters.Add("btime", btime.ToString("yyyy-MM-dd 00:00:00"));
......@@ -438,6 +514,7 @@ namespace AutoTurnOver.DB
data_type = (int)dc_report_cash_flow_log_data_type_enum.退款,
is_delete = (order_item.is_deleted == 1) ? 1 : 0,
item = order_item.origin_order_id,
update_time = now,
no = order_item.origin_order_id,
platform_type = "",
remarks = "",
......@@ -495,13 +572,17 @@ namespace AutoTurnOver.DB
var conn = _connection;
int page = 1;
int rows = 1000;
var logisticsList = ApiUtility.ShipLogisticsList();
List<dc_report_logistics_company_config_dto> logistics_company_list = conn.Query<dc_report_logistics_company_config_dto>(" select * from dc_report_logistics_company_config ").AsList();
List<dc_report_cash_flow_config> configs = conn.Query<dc_report_cash_flow_config>(" select * from dc_report_cash_flow_config ").AsList();
while (true)
{
var sql = @" select t1.*,t2.create_time as 'complete_time',ifnull(t3.cost_first,0) as 'cost_first' from
var now = DateTime.Now;
var sql = @" select t1.*,t2.create_time as 'complete_time',ifnull(t3.cost_first,0) as 'cost_first',t4.logisticscode from
dc_base_transfer_verify as t1
left join dc_base_transfer_complete as t2 on t1.bailun_sku = t2.bailun_sku and t1.transfer_order_id = t2.transfer_order_id
left join dc_mid_cost_first_order as t3 on t1.bailun_sku = t3.bailun_sku and t1.transfer_order_id = t3.transfer_order_id
left join dc_base_transfer_info as t4 on t1.transfer_order_id = t4.`code`
where t1.create_time>=@btime and t1.create_time<=@etime ";
DynamicParameters parameters = new DynamicParameters();
parameters.Add("btime", btime.ToString("yyyy-MM-dd 00:00:00"));
......@@ -525,6 +606,7 @@ where t1.create_time>=@btime and t1.create_time<=@etime ";
data_type = (int)dc_report_cash_flow_log_data_type_enum.新增头程费用,
is_delete = (order_item.deleted == 1) ? 1 : 0,
item = order_item.transfer_order_id,
update_time = now,
no = order_item.transfer_order_id,
platform_type = "",
remarks = "",
......@@ -534,7 +616,9 @@ where t1.create_time>=@btime and t1.create_time<=@etime ";
pay_type = (int)dc_report_cash_flow_log_pay_type_enum.后付,
item_no = order_item.transfer_order_id
};
item.pay_time = order_item.complete_time ?? new DateTime(1991, 1, 1);
var remarks = "";
item.pay_time = CalculationLogisticsPayTime(logisticsList, logistics_company_list, item.occur_time, order_item.logisticscode, out remarks);
item.remarks = remarks;
item.id = conn.QuerySingleOrDefault<int?>(" select * from dc_report_cash_flow_log where data_type=@data_type and bailun_sku=@bailun_sku and item_no=@item_no ", new
{
data_type = item.data_type,
......@@ -602,5 +686,75 @@ where t1.create_time>=@btime and t1.create_time<=@etime ";
}
}
}
/// <summary>
/// 获取物流商结款时间
/// </summary>
/// <param name=""></param>
/// <returns></returns>
public static DateTime CalculationLogisticsPayTime(List<LmsShipLogisticsDto> logistics,List<dc_report_logistics_company_config_dto> logistics_company_list, DateTime occur_time,string line_code,out string remarks)
{
if (string.IsNullOrWhiteSpace(line_code))
{
remarks = "未获取到订单渠道,取发生时间";
return occur_time;
}
else
{
var logistics_item = logistics.FirstOrDefault(s=> line_code.Equals( s.Line_Code,StringComparison.OrdinalIgnoreCase));
if (logistics_item == null)
{
remarks =$"lms 系统中 未查询到该渠道({line_code}),取发生时间";
return occur_time;
}
else
{
if(string.IsNullOrWhiteSpace(logistics_item.Company_Code))
{
remarks = $"lms 系统中 该渠道({logistics_item.Line_Name})未配置供应商,取发生时间";
return occur_time;
}
else
{
var item_logistics_company = logistics_company_list.FirstOrDefault(s=> logistics_item.Company_Code==s.company_code);
if (item_logistics_company == null)
{
remarks = $"Aims 系统中未读取到该供应商({logistics_item.Company_Name})的账期配置,取发生时间";
return occur_time;
}
else
{
switch (item_logistics_company.payment_days_type)
{
case ((int)dc_report_logistics_company_config_payment_days_type.周结):
remarks = $" 供应商 {item_logistics_company.company_name}{item_logistics_company.payment_days_type_str}】 ";
return occur_time.GetWeekLastDaySun();
case ((int)dc_report_logistics_company_config_payment_days_type.月结):
remarks = $" 供应商 {item_logistics_company.company_name}{item_logistics_company.payment_days_type_str}】 ";
return occur_time.LastDayOfMonth();
case ((int)dc_report_logistics_company_config_payment_days_type.半月结):
remarks = $" 供应商 {item_logistics_company.company_name}{item_logistics_company.payment_days_type_str}】 ";
if (occur_time.Day <= 15)
{
return DateTime.Parse(occur_time.ToString("yyyy-MM-15 HH:mm:ss"));
}
else
{
return occur_time.LastDayOfMonth();
}
case ((int)dc_report_logistics_company_config_payment_days_type.固定天数):
remarks = $" 供应商 {item_logistics_company.company_name}{item_logistics_company.payment_days_type_str}】【{item_logistics_company.days}天】 ";
return occur_time.AddDays(item_logistics_company.days);
case ((int)dc_report_logistics_company_config_payment_days_type.现结):
case ((int)dc_report_logistics_company_config_payment_days_type.预付):
remarks = $" 供应商 {item_logistics_company.company_name}{item_logistics_company.payment_days_type_str}】 ";
return occur_time;
default:throw new Exception("程序异常,aims 配置了算法不支持的账期");
}
}
}
}
}
}
}
}
......@@ -11,6 +11,8 @@ namespace AutoTurnOver.Models.ApiDto
{
public string Line_Code { get; set; }
public string Line_Name { get; set; }
public string Company_Code { get; set; }
public string Company_Name { get; set; }
}
public class LmsResultDto<T>
......
......@@ -91,5 +91,9 @@ namespace AutoTurnOver.Models.Report
{
public DateTime? complete_time { get; set; }
public decimal cost_first { get; set; }
/// <summary>
/// 渠道编码
/// </summary>
public string logisticscode { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace AutoTurnOver.Models.Report
{
public class dc_report_logistics_company_config
{
public int id { get; set; }
public string company_code { get; set; }
public string company_name { get; set; }
public int payment_days_type { get; set; }
public int days { get; set; }
}
public class dc_report_logistics_company_config_dto: dc_report_logistics_company_config
{
public string payment_days_type_str { get
{
return ((dc_report_logistics_company_config_payment_days_type)payment_days_type).ToString();
} }
}
/// <summary>
/// 1 = 周结 2= 月结 3 = 半结 4 = 预付 5=固定天数 6 = 现结
/// </summary>
public enum dc_report_logistics_company_config_payment_days_type
{
周结 = 1,
月结=2,
半月结 =3,
预付 = 4,
固定天数 = 5,
现结 = 6
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace AutoTurnOver.Models
{
public class dc_base_oms_pick
{
/// <summary>
///
/// </summary>
public int id { get; set; }
/// <summary>
/// 平台订单号
/// </summary>
public string origin_order_id { get; set; }
/// <summary>
/// 账号id
/// </summary>
public int bailun_account_id { get; set; }
/// <summary>
/// 百伦订单号
/// </summary>
public string bailun_order_id { get; set; }
/// <summary>
/// 配货单号
/// </summary>
public string pick_order_id { get; set; }
/// <summary>
/// 追踪提供商
/// </summary>
public string tracking_provider { get; set; }
/// <summary>
/// 追踪单号
/// </summary>
public string tracking_order_id { get; set; }
/// <summary>
/// 百伦发货状态
/// </summary>
public string shipping_status { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime? create_time { get; set; }
/// <summary>
/// 发货时间
/// </summary>
public DateTime? shipping_time { get; set; }
/// <summary>
/// 百伦SKU仓库名称
/// </summary>
public string warehouse_name { get; set; }
/// <summary>
/// 百伦SKU仓库编码
/// </summary>
public string warehouse_code { get; set; }
/// <summary>
/// 运单号
/// </summary>
public string logistics_order_id { get; set; }
/// <summary>
/// 运单线路
/// </summary>
public string logistics_order_name { get; set; }
/// <summary>
/// 数据中心创建时间
/// </summary>
public DateTime gmt_create { get; set; }
/// <summary>
/// 数据中心更新时间
/// </summary>
public DateTime gmt_modified { get; set; }
/// <summary>
/// 配货数量
/// </summary>
public int quantity_picked { get; set; }
/// <summary>
/// 发货数量
/// </summary>
public int quantity_shipped { get; set; }
/// <summary>
/// 百伦sku
/// </summary>
public string bailun_sku { get; set; }
/// <summary>
/// 申报价值,USD
/// </summary>
public decimal declare_price { get; set; }
/// <summary>
/// 运费-配货单维度
/// </summary>
public decimal cost_shipping { get; set; }
/// <summary>
/// 包装费-配货单维度
/// </summary>
public decimal cost_packaging { get; set; }
/// <summary>
/// 出库重量,KG-配货单维度
/// </summary>
public decimal outbound_weight { get; set; }
/// <summary>
/// 运费-SKU维度
/// </summary>
public decimal bailun_sku_cost_shipping { get; set; }
/// <summary>
/// 包装费-SKU维度
/// </summary>
public decimal bailun_sku_cost_packaging { get; set; }
/// <summary>
/// 出库重量,G-SKU维度
/// </summary>
public decimal bailun_sku_outbound_weight { get; set; }
/// <summary>
/// 是否被删除-数据中心添加
/// </summary>
public int has_delete { get; set; }
/// <summary>
/// 公司Id, 默认0是无意义的
/// </summary>
public int company_id { get; set; }
/// <summary>
/// 是否推送第三方仓库
/// </summary>
public int has_pushed { get; set; }
/// <summary>
/// 总费用
/// </summary>
public decimal total_fee { get; set; }
/// <summary>
/// 运输费
/// </summary>
public decimal shipping { get; set; }
/// <summary>
/// 操作费
/// </summary>
public decimal opf { get; set; }
/// <summary>
/// 燃油附加费
/// </summary>
public decimal fsc { get; set; }
/// <summary>
/// 关税
/// </summary>
public decimal dt { get; set; }
/// <summary>
/// 挂号
/// </summary>
public decimal rsf { get; set; }
/// <summary>
/// 其他费用
/// </summary>
public decimal otf { get; set; }
/// <summary>
/// 仓租
/// </summary>
public decimal whf { get; set; }
/// <summary>
/// 币种
/// </summary>
public string currency_code { get; set; }
/// <summary>
/// 转人民币-汇率
/// </summary>
public decimal wms_to_cny_exchange_rate { get; set; }
/// <summary>
/// 转美元-汇率
/// </summary>
public decimal wms_to_usd_exchange_rate { get; set; }
}
}
......@@ -56,6 +56,7 @@ namespace AutoTurnOver.Models
/// 是否作废
/// </summary>
public int is_delete { get; set; }
public DateTime? update_time { get; set; }
}
/// <summary>
......
......@@ -350,22 +350,7 @@ namespace AutoTurnOver.Services
public static List<LmsShipLogisticsDto> ShipLogisticsList()
{
//查询采购建议明细
return RedisHelper.Get(RedisConsts.Lms_GetLogistics, () =>
{
string url = ConfigHelper.GetValue("Lms_GetLogistics");
string resultStr = HttpHelper.Request(url, RequestType.GET, "", timeout: 1000 * 60 * 60 * 24);
var result = resultStr.ToObj<LmsResultDto<List<LmsShipLogisticsDto>>>();
if (result == null)
{
throw new Exception("lms系统异常: 未获取到数据");
}
if (!result.Success)
{
throw new Exception("lms系统异常: " + result.ErrorMessage);
}
return result.Data;
});
return ApiUtility.ShipLogisticsList();
}
public static List<LmsShipLogisticsDto> ShipLogisticsList(string name)
......
using System;
using System.Collections.Generic;
using System.Text;
namespace AutoTurnOver.Utility
{
public static class DateHelper
{
/// <summary>
/// 把秒转化成 天时分的格式
/// </summary>
/// <param name="s">秒</param>
/// <returns></returns>
public static string ToDateStr(this int s)
{
var t = new TimeSpan(0, 0, 0, s);
string str = "";
if (t.Days >= 1) { str += $"{t.Days}天"; }
if (t.Hours >= 1) { str += $"{t.Hours}时"; }
if (t.Minutes >= 1) { str += $"{t.Minutes}分"; }
if (t.Seconds >= 1) { str += $"{t.Seconds}秒"; }
return str;
}
public static string ToDateStr(this decimal s)
{
if (s <= 0) return "未设置";
int zs = (int)Math.Floor(s);
var t = new TimeSpan(0, 0, 0, zs);
string str = "";
if (t.Days >= 1) { str += $"{t.Days}天"; }
if (t.Hours >= 1) { str += $"{t.Hours}时"; }
if (t.Minutes >= 1) { str += $"{t.Minutes}分"; }
if (t.Seconds >= 1) { str += $"{t.Seconds}秒"; }
return str;
}
/// <summary>
/// 获取该时间 的零点
/// </summary>
/// <param name="d"></param>
/// <returns></returns>
public static DateTime ToDayHome(this DateTime d)
{
return DateTime.Parse(d.ToString("yyyy-MM-dd 00:00:00"));
}
/// <summary>
/// 获取该时间 的23点
/// </summary>
/// <param name="d"></param>
/// <returns></returns>
public static DateTime ToDayEnd(this DateTime d)
{
return DateTime.Parse(d.ToString("yyyy-MM-dd 23:59:59"));
}
/// <summary>
/// 获取该时间 的零点
/// </summary>
/// <param name="d"></param>
/// <returns></returns>
public static DateTime ToDayDate(this DateTime d, int hour, int minute = 0)
{
return DateTime.Parse(d.ToString($"yyyy-MM-dd {hour}:{minute}:00"));
}
//// <summary>
/// 取得某月的最后一天
/// </summary>
/// <param name="datetime">要取得月份最后一天的时间</param>
/// <returns></returns>
public static DateTime LastDayOfMonth(this DateTime datetime)
{
return datetime.AddDays(1 - datetime.Day).AddMonths(1).AddDays(-1);
}
/// <summary>
/// 得到本周第一天(以星期一为第一天)
/// </summary>
/// <param name="datetime"></param>
/// <returns></returns>
public static DateTime GetWeekFirstDayMon(this DateTime datetime)
{
//星期一为第一天
int weeknow = Convert.ToInt32(datetime.DayOfWeek);
//因为是以星期一为第一天,所以要判断weeknow等于0时,要向前推6天。
weeknow = (weeknow == 0 ? (7 - 1) : (weeknow - 1));
int daydiff = (-1) * weeknow;
//本周第一天
string FirstDay = datetime.AddDays(daydiff).ToString("yyyy-MM-dd");
return Convert.ToDateTime(FirstDay);
}
/// <summary>
/// 得到本周最后一天(以星期天为最后一天)
/// </summary>
/// <param name="datetime"></param>
/// <returns></returns>
public static DateTime GetWeekLastDaySun(this DateTime datetime)
{
//星期天为最后一天
int weeknow = Convert.ToInt32(datetime.DayOfWeek);
weeknow = (weeknow == 0 ? 7 : weeknow);
int daydiff = (7 - weeknow);
//本周最后一天
string LastDay = datetime.AddDays(daydiff).ToString("yyyy-MM-dd");
return Convert.ToDateTime(LastDay);
}
/// <summary>
/// 汉化 成小时为最小单位
/// </summary>
/// <param name=""></param>
/// <returns></returns>
public static string SinicizationByHours(this TimeSpan time_span)
{
var total_h = time_span.TotalHours;
var val = "";
var days = Math.Floor(total_h / 24);
if (days >= 1)
{
val += $"{days}天";
}
var hours = Math.Round(total_h % 24);
val += $"{hours}小时";
return val;
}
/// <summary>
/// 时间戳转时间
/// </summary>
/// <param name="time"></param>
/// <returns></returns>
public static DateTime StampToDateTime(this long? timeStamp_long)
{
if (timeStamp_long == null) return new DateTime(1991, 1, 1);
var timeStamp = timeStamp_long.ToString();
DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
long lTime = long.Parse(timeStamp + "0000");
TimeSpan toNow = new TimeSpan(lTime);
return dtStart.Add(toNow);
}
/// <summary>
/// 将DateTime时间格式转换为Unix时间戳格式
/// </summary>
/// <param name="time">时间</param>
/// <returns>long</returns>
public static long GetUnixTime(this DateTime time)
{
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0));
long t = (time.Ticks - startTime.Ticks) / 10000; //除10000调整为13位
return t;
}
public static string Sinicization(this DayOfWeek week)
{
switch (week)
{
case DayOfWeek.Friday:
return "周五";
case DayOfWeek.Monday:
return "周一";
case DayOfWeek.Saturday:
return "周六";
case DayOfWeek.Sunday:
return "周日";
case DayOfWeek.Thursday:
return "周四";
case DayOfWeek.Tuesday:
return "周二";
case DayOfWeek.Wednesday:
return "周三";
default:
return "";
break;
}
}
public static List<DateTime> GetDayByWeek(this DayOfWeek week, DateTime bDate, DateTime eDate)
{
var datas = new List<DateTime>();
var thisTime = bDate;
while (thisTime <= eDate)
{
if (thisTime.DayOfWeek == week)
{
datas.Add(thisTime);
}
thisTime = thisTime.AddDays(1);
}
return datas;
}
public static List<DateTime> GetDays(this DateTime bDate, DateTime eDate)
{
var datas = new List<DateTime>();
var thisTime = bDate;
while (thisTime <= eDate)
{
datas.Add(thisTime);
thisTime = thisTime.AddDays(1);
}
return datas;
}
public static decimal? DecimalRoun(this decimal val, int num)
{
return Math.Round(val, num);
}
public static decimal? DecimalRoun(this decimal? val, int num)
{
if (val == null)
{
return null;
}
return Math.Round(val.Value, num);
}
/// <summary>
/// 除法
/// </summary>
/// <param name="val1"></param>
/// <param name="val2"></param>
/// <returns></returns>
public static decimal Division(this decimal val1, decimal val2)
{
if (val1 == 0 || val2 == 0)
{
return 0M;
}
else
{
return Math.Round(val1 / val2, 4);
}
}
public static decimal Division(this int? val1, int? val2)
{
if (val1 == null || val2 == null)
{
return 0M;
}
else
{
return ((decimal)val1.Value).Division(val2.Value);
}
}
public static decimal Division(this decimal? val1, decimal? val2)
{
if (val1 == null || val2 == null)
{
return 0M;
}
else
{
return val1.Value.Division(val2.Value);
}
}
public static decimal Division(this decimal val1, decimal? val2)
{
if (val2 == null)
{
return 0M;
}
else
{
return val1.Division(val2.Value);
}
}
/// <summary>
/// 获取某个月份的 指点天数
/// </summary>
/// <param name="thime"></param>
/// <param name="day"></param>
/// <returns></returns>
public static DateTime GetMonthToday(this DateTime time, int day)
{
var lsatTime = time.LastDayOfMonth();
if (lsatTime.Day <= day)
{
return lsatTime;
}
else
{
return new DateTime(time.Year, time.Month, day);
}
}
}
}
......@@ -45,6 +45,12 @@ namespace ResetOutofstock
report_cash_flow_dao.CalculationRefundOrder(now.AddMonths(-3), DateTime.Parse(now.AddDays(-1).ToString("yyyy-MM-dd 23:59:59")));
Console.WriteLine($"结束刷新现金流 退款数据,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
}
if (now.Hour == 01 && now.Minute == 05)
{
Console.WriteLine($"开始 刷新订单尾程费 退款数据,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
report_cash_flow_dao.CalculationOrderCostLogistics(now.AddMonths(-3), DateTime.Parse(now.AddDays(-1).ToString("yyyy-MM-dd 23:59:59")));
Console.WriteLine($"结束 刷新订单尾程费 退款数据,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
}
}
public override void Dispose()
......
......@@ -14,7 +14,7 @@ namespace ResetOutofstock
{
Console.WriteLine("刷新缺货数据任务启动...");
var now = DateTime.Now;
//report_cash_flow_dao.CalculationTransferOrder(now.AddMonths(-3), DateTime.Parse(now.AddDays(-1).ToString("yyyy-MM-dd 23:59:59")));
report_cash_flow_dao.CalculationOrderCostLogistics(now.AddMonths(-3), DateTime.Parse(now.AddDays(-1).ToString("yyyy-MM-dd 23:59:59")));
var builder = new HostBuilder().ConfigureServices((hostContext, services) =>
{
services.AddHostedService<ResetOutofstockBackgrounService>();
......
......@@ -34,6 +34,26 @@ namespace ResetOutofstock
}
});
Task.Factory.StartNew(() => {
while (true)
{
try
{
Console.WriteLine($"开始 刷新现金流 订单尾程费,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
var now = DateTime.Now;
report_cash_flow_dao.CalculationOrderCostLogistics(now.AddMonths(-3), DateTime.Parse(now.AddDays(-1).ToString("yyyy-MM-dd 23:59:59")));
Console.WriteLine($"结束 刷新现金流 订单尾程费,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Thread.Sleep(60 * 60 * 1000);
}
});
Task.Factory.StartNew(() => {
while (true)
......
......@@ -9,5 +9,6 @@
"Password": "SpaceHorse1",
"Defaultdatabase": "0"
},
"WipStockUrl": "http://mjzz.bailuntec.com/api/FullStockPageList"
"WipStockUrl": "http://mjzz.bailuntec.com/api/FullStockPageList",
"Lms_GetLogistics": "http://lms.bailuntec.com/api/DataInfo/ApiLogistics/GetLogistics"
}
......@@ -10,5 +10,6 @@
"Defaultdatabase": "0"
},
"PPS_ShortagePush": "http://bltpro.bailuntec.com/api/EbayTask/PushSkuEditQtyTask",
"WipStockUrl": "http://mjzz.bailuntec.com/api/FullStockPageList"
"WipStockUrl": "http://mjzz.bailuntec.com/api/FullStockPageList",
"Lms_GetLogistics": "http://lms.bailuntec.com/api/DataInfo/ApiLogistics/GetLogistics"
}
......@@ -3,5 +3,6 @@
"Default": "server=10.0.8.15;port=3306;database=bailun_datacenter;uid=root;password=#7kfnymAM$Y9-Ntf;"
},
"PPS_ShortagePush": "http://10.0.6.8:8002/api/EbayTask/PushSkuEditQtyTask",
"WipStockUrl": "http://mjzz.bailuntec.com/api/FullStockPageList"
"WipStockUrl": "http://mjzz.bailuntec.com/api/FullStockPageList",
"Lms_GetLogistics": "http://lms.bailuntec.com/api/DataInfo/ApiLogistics/GetLogistics"
}
\ No newline at end of file
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