From 989cbda8408451ae6c9640b97114108d884e4691 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 8 Aug 2023 11:59:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A3=80=E6=9F=A5=E5=85=A5=E4=BB=93=E9=87=87?= =?UTF-8?q?=E8=B4=AD=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.API/Controllers/JDController.cs | 25 +++ .../Extensions/OrderStateExtension.cs | 21 ++- BBWYB.Server.Business/JD/JDBusiness.cs | 148 +++++++++++++++++- BBWYB.Server.Business/Order/OrderBusiness.cs | 2 +- .../PurchaseOrder/PurchaseOrderBusiness.cs | 120 +++----------- .../Vender/VenderBusiness.cs | 7 + .../Db/Order/InStoreOrderCheckTask.cs | 29 ++++ .../Order/InStorePurchaseOrdeRrelationInfo.cs | 30 ++-- 8 files changed, 258 insertions(+), 124 deletions(-) create mode 100644 BBWYB.Server.API/Controllers/JDController.cs create mode 100644 BBWYB.Server.Model/Db/Order/InStoreOrderCheckTask.cs diff --git a/BBWYB.Server.API/Controllers/JDController.cs b/BBWYB.Server.API/Controllers/JDController.cs new file mode 100644 index 0000000..ef06731 --- /dev/null +++ b/BBWYB.Server.API/Controllers/JDController.cs @@ -0,0 +1,25 @@ +using BBWYB.Server.Business.JD; +using Microsoft.AspNetCore.Mvc; + +namespace BBWYB.Server.API.Controllers +{ + + public class JDController : BaseApiController + { + private JDBusiness jdBusiness; + + public JDController(IHttpContextAccessor httpContextAccessor, JDBusiness jdBusiness) : base(httpContextAccessor) + { + this.jdBusiness = jdBusiness; + } + + /// + /// 检查入仓采购单 + /// + [HttpPost] + public void CheckInStoreOrder() + { + jdBusiness.CheckInStoreOrder(); + } + } +} diff --git a/BBWYB.Server.Business/Extensions/OrderStateExtension.cs b/BBWYB.Server.Business/Extensions/OrderStateExtension.cs index 1834f9c..9b5c861 100644 --- a/BBWYB.Server.Business/Extensions/OrderStateExtension.cs +++ b/BBWYB.Server.Business/Extensions/OrderStateExtension.cs @@ -13,18 +13,13 @@ namespace BBWYB.Server.Business /// /// /// - /// 是否在入库单验证失败后通知钉钉 /// /// - /// public static void CalculationOrderState(this Order order, IFreeSql fsql, - out bool IsNotifyDingDingWhenInStoreOrderFail, IList orderSkuList = null, - IList orderPurchaseInfoList = null, - IList jdInStoreOrderDetailList = null) + IList orderPurchaseInfoList = null) { - IsNotifyDingDingWhenInStoreOrderFail = false; if (order.OrderState == Enums.OrderState.已取消 || order.OrderState == Enums.OrderState.已完成 || order.OrderState == Enums.OrderState.待付款) @@ -120,13 +115,15 @@ namespace BBWYB.Server.Business } else if (order.IntoStoreType == Enums.IntoStoreType.厂商代发入仓) { - if (jdInStoreOrderDetailList == null || jdInStoreOrderDetailList.Count() == 0 || jdInStoreOrderDetailList.Any(x => x.storageStatus != "2")) - { + if (order.OrderState != Enums.OrderState.待核算) order.OrderState = Enums.OrderState.待验收; - IsNotifyDingDingWhenInStoreOrderFail = true; - } - else - order.OrderState = Enums.OrderState.待核算; + //if (jdInStoreOrderDetailList == null || jdInStoreOrderDetailList.Count() == 0 || jdInStoreOrderDetailList.Any(x => x.storageStatus != "2")) + //{ + // order.OrderState = Enums.OrderState.待验收; + // IsNotifyDingDingWhenInStoreOrderFail = true; + //} + //else + // order.OrderState = Enums.OrderState.待核算; } return; } diff --git a/BBWYB.Server.Business/JD/JDBusiness.cs b/BBWYB.Server.Business/JD/JDBusiness.cs index d00139d..5b2f1ba 100644 --- a/BBWYB.Server.Business/JD/JDBusiness.cs +++ b/BBWYB.Server.Business/JD/JDBusiness.cs @@ -1,8 +1,10 @@ using BBWYB.Common.Http; using BBWYB.Common.Log; using BBWYB.Common.Models; +using BBWYB.Server.Model.Db; using JD.Dto; using Newtonsoft.Json; +using System.Text; using Yitter.IdGenerator; namespace BBWYB.Server.Business.JD @@ -11,14 +13,20 @@ namespace BBWYB.Server.Business.JD { private RestApiService restApiService; private VenderBusiness venderBusiness; + private DingDingBusiness dingDingBusiness; + private TaskSchedulerManager taskSchedulerManager; public JDBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, RestApiService restApiService, - VenderBusiness venderBusiness) : base(fsql, nLogManager, idGenerator) + VenderBusiness venderBusiness, + DingDingBusiness dingDingBusiness, + TaskSchedulerManager taskSchedulerManager) : base(fsql, nLogManager, idGenerator) { this.restApiService = restApiService; this.venderBusiness = venderBusiness; + this.dingDingBusiness = dingDingBusiness; + this.taskSchedulerManager = taskSchedulerManager; } public ApiResponse> GetJDInStoreOrderDetailList(string sourceShopName, IList poOrderNos) @@ -50,5 +58,143 @@ namespace BBWYB.Server.Business.JD return new ApiResponse>() { Code = 0, Msg = ex.Message }; } } + + public void CheckInStoreOrder() + { + List orderIds = null; + + try + { + var checkTaskList = fsql.Select().Where(x => x.IsChecked == false).ToList(); + if (checkTaskList.Count() == 0) + return; + orderIds = checkTaskList.Select(x => x.OrderId).ToList(); + var orderPurchaseInfoList = fsql.Select().Where(opi => orderIds.Contains(opi.PurchaseOrderId) && opi.IsEnabled == true).ToList(); + + var waitCheckInStoreOrderList = fsql.Select() + .InnerJoin((io, o) => io.OrderId == o.Id) + .Where((io, o) => orderIds.Contains(io.OrderId) && !string.IsNullOrEmpty(o.SourceShopName)) + .ToList((io, o) => new + { + io.Id, + io.PurchaseOrderId, + io.CreateTime, + io.InStorePurchaseOrderId, + io.OrderId, + io.ShopId, + io.WaybillNo, + o.SourceShopName + }); + var shopIds = checkTaskList.Select(x => x.ShopId.ToString()).ToList(); + var shopList = venderBusiness.GetShopList(shopIds); + + foreach (var checkTask in checkTaskList) + { + var dingdingMsg = new StringBuilder(); + var inStoreOrderRelationList = waitCheckInStoreOrderList.Where(x => x.OrderId == checkTask.OrderId).ToList(); + var currentPurchaseOrderList = orderPurchaseInfoList.Where(opi => opi.OrderId == checkTask.OrderId).ToList(); + var shop = shopList.FirstOrDefault(s => s.ShopId == checkTask.ShopId.ToString()); + if (inStoreOrderRelationList == null || inStoreOrderRelationList.Count() == 0) + { + if (currentPurchaseOrderList.Count() > 0) + { + foreach (var opi in currentPurchaseOrderList) + { + dingdingMsg.AppendLine($"店铺名称:{shop?.ShopName}"); + dingdingMsg.AppendLine($"拳探订单号:{checkTask.OrderSn}"); + dingdingMsg.AppendLine($"采购平台:{opi.PurchasePlatform}"); + dingdingMsg.AppendLine($"采购单号:{opi.PurchaseOrderId}"); + dingdingMsg.AppendLine("缺少入仓采购单号"); + dingdingMsg.AppendLine(); + } + } + } + else + { + var poOrderNos = inStoreOrderRelationList.Select(i => i.InStorePurchaseOrderId).Distinct().ToList(); + //查询京东 + var inStoreResponse = GetJDInStoreOrderDetailList(inStoreOrderRelationList.FirstOrDefault().SourceShopName, poOrderNos); + if (!inStoreResponse.Success) + { + if (currentPurchaseOrderList.Count() > 0) + { + foreach (var opi in currentPurchaseOrderList) + { + dingdingMsg.AppendLine($"店铺名称:{shop?.ShopName}"); + dingdingMsg.AppendLine($"拳探订单号:{checkTask.OrderSn}"); + dingdingMsg.AppendLine($"采购平台:{opi.PurchasePlatform}"); + dingdingMsg.AppendLine($"采购单号:{opi.PurchaseOrderId}"); + dingdingMsg.AppendLine($"{inStoreResponse.Msg}"); + dingdingMsg.AppendLine(); + } + } + } + else + { + foreach (var inStoreOrderRelation in inStoreOrderRelationList) + { + var jdInStore = inStoreResponse.Data.FirstOrDefault(x => x.poOrderNo == inStoreOrderRelation.InStorePurchaseOrderId); + if (jdInStore == null || jdInStore.storageStatus == "2") + continue; + var opi = currentPurchaseOrderList.FirstOrDefault(opi => opi.PurchaseOrderId == inStoreOrderRelation.PurchaseOrderId); + if (opi == null) + continue; + + var stateText = ""; + switch (jdInStore.storageStatus) + { + case "1": + stateText = "有差异待确认"; + break; + case "3": + stateText = "待确认"; + break; + case "4": + stateText = "有差异已确认"; + break; + } + + dingdingMsg.AppendLine($"店铺名称:{shop?.ShopName}"); + dingdingMsg.AppendLine($"拳探订单号:{checkTask.OrderSn}"); + dingdingMsg.AppendLine($"采购平台:{opi.PurchasePlatform}"); + dingdingMsg.AppendLine($"采购单号:{opi.PurchaseOrderId}"); + dingdingMsg.AppendLine($"入仓采购单号:{inStoreOrderRelation.InStorePurchaseOrderId}"); + dingdingMsg.AppendLine($"入仓采购单状态:{jdInStore.storageStatus} {stateText}"); + dingdingMsg.AppendLine(); + } + } + } + + if (dingdingMsg.Length > 0) + { + Task.Factory.StartNew(() => SendDingDing(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + } + } + } + catch (Exception ex) + { + nLogManager.Default().Error(ex, "CheckInStoreOrder"); + } + finally + { + try + { + if (orderIds != null && orderIds.Count() > 0) + fsql.Update().Set(x => x.IsChecked, true).Where(x => orderIds.Contains(x.OrderId)).ExecuteAffrows(); + } + catch { } + } + } + + private void SendDingDing(string content) + { + try + { + dingDingBusiness.SendDingDingBotMessage("SEC5f08a3dd6813e50bf9a3b81350ec12a8086c64b9e29ef858a17f5cc7887906d7", + "https://oapi.dingtalk.com/robot/send?access_token=7ce472411bb8dde0c3ff503fcca9ead84d39950ee3c4c65c808dbc58981eb929", + content); + } + catch { } + } } } diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index f3a3ff8..dab1f9a 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -726,7 +726,7 @@ namespace BBWYB.Server.Business updateOrderSku = fsql.Update(orderSku.Id).Set(osku => osku.IsCheck, true); var oldOrderState = dbOrder.OrderState; - dbOrder.CalculationOrderState(fsql, out _, orderSkuList, null); + dbOrder.CalculationOrderState(fsql, orderSkuList); if (oldOrderState != dbOrder.OrderState) updateOrder = fsql.Update(dbOrder.Id).Set(o => o.OrderState, dbOrder.OrderState); diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 8068d69..ee612b7 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -541,7 +541,7 @@ namespace BBWYB.Server.Business #endregion #region 订单状态 - dbOrder.CalculationOrderState(fsql, out _, orderSkus, orderPurchaseInfoList.Union(insertOrderPurchaseInfos).ToList()); + dbOrder.CalculationOrderState(fsql, orderSkus, orderPurchaseInfoList.Union(insertOrderPurchaseInfos).ToList()); #endregion #region 通知C端状态 @@ -1041,7 +1041,7 @@ namespace BBWYB.Server.Business #endregion #region 订单状态 - dbOrder.CalculationOrderState(fsql, out _, dbOrderSkuList, dbPurchaseOrderList.Union(insertOrderPurchaseInfoList).ToList()); + dbOrder.CalculationOrderState(fsql, dbOrderSkuList, dbPurchaseOrderList.Union(insertOrderPurchaseInfoList).ToList()); #endregion #region 通知C端状态 @@ -1296,7 +1296,7 @@ namespace BBWYB.Server.Business #endregion orderPurchaseInfoList.Remove(historyPurchaseOrder); - dbOrder.CalculationOrderState(fsql, out _, orderPurchaseInfoList: orderPurchaseInfoList); + dbOrder.CalculationOrderState(fsql, orderPurchaseInfoList: orderPurchaseInfoList); fsql.Transaction(() => { @@ -1339,7 +1339,6 @@ namespace BBWYB.Server.Business }); } - /// /// 修改采购快递单 /// @@ -1489,7 +1488,7 @@ namespace BBWYB.Server.Business #region 计算订单状态 var oldOrderState = dbOrder.OrderState; - dbOrder.CalculationOrderState(fsql, out _, null, orderPurchaseInfoList); + dbOrder.CalculationOrderState(fsql, null, orderPurchaseInfoList); if (oldOrderState != dbOrder.OrderState) { updateOrder = fsql.Update(dbOrder.Id).Set(o => o.OrderState, dbOrder.OrderState); @@ -1704,7 +1703,7 @@ namespace BBWYB.Server.Business #endregion #region 计算订单状态 - dbOrder.CalculationOrderState(fsql, out _, null, orderPurchaseInfoList); + dbOrder.CalculationOrderState(fsql, null, orderPurchaseInfoList); updateOrder = fsql.Update(dbOrder.Id) .Set(o => o.OrderState, dbOrder.OrderState); #endregion @@ -1913,7 +1912,7 @@ namespace BBWYB.Server.Business #endregion #region 计算订单状态 - dbOrder.CalculationOrderState(fsql, out _, null, orderPurchaseInfoList); + dbOrder.CalculationOrderState(fsql, null, orderPurchaseInfoList); updateOrder = fsql.Update(dbOrder.Id) .Set(o => o.OrderState, dbOrder.OrderState); #endregion @@ -1965,7 +1964,6 @@ namespace BBWYB.Server.Business taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); } - ///// ///// 手动收货 ///// @@ -2371,7 +2369,7 @@ namespace BBWYB.Server.Business #endregion #region 计算订单状态 - dbOrder.CalculationOrderState(fsql, out _, null, orderPurchaseInfoList); + dbOrder.CalculationOrderState(fsql, null, orderPurchaseInfoList); updateOrder = fsql.Update(dbOrder.Id) .Set(o => o.OrderState, dbOrder.OrderState); #endregion @@ -2481,6 +2479,7 @@ namespace BBWYB.Server.Business List> updateOrderPurchaseList = new List>(); List> updateOrderList = new List>(); List insertTimeLimitTaskList = new List(); + List insertInStoreOrderCheckTaskList = new List(); #region 查询该笔快递单 var tpeo = fsql.Select(wayBillNo).ToOne(); @@ -2566,9 +2565,9 @@ namespace BBWYB.Server.Business #endregion #region 查询入库单信息 - IList inStoreOrderRelationList = null; + IList inStoreOrderCheckTaskList = null; if (orderList.Any(o => o.IntoStoreType == Enums.IntoStoreType.厂商代发入仓) && state == "QianShou") - inStoreOrderRelationList = fsql.Select().Where(i => orderIds.Contains(i.OrderId)).ToList(); + inStoreOrderCheckTaskList = fsql.Select().Where(i => orderIds.Contains(i.OrderId)).ToList(); #endregion #region 计算订单状态和采购单状态 @@ -2607,93 +2606,22 @@ namespace BBWYB.Server.Business } var oldOrderState = order.OrderState; + order.CalculationOrderState(fsql, currentOrderSkuList, currentPurchaseOrderList); - if (order.IntoStoreType == Enums.IntoStoreType.厂商代发入仓 && state == "QianShou") + if (order.IntoStoreType == Enums.IntoStoreType.厂商代发入仓 && + state == "QianShou" && + order.OrderState == Enums.OrderState.待验收 && + !inStoreOrderCheckTaskList.Any(x => x.OrderId == order.Id)) { - #region 检查入库采购单状态 - var isNotifyDingDingWhenInOrderFail = false; - var currentOrder_InStoreOrderRelationList = inStoreOrderRelationList.Where(i => i.OrderId == order.Id).ToList(); - ApiResponse> inStoreResponse = null; - if (currentOrder_InStoreOrderRelationList.Count() > 0) - { - var poOrderNos = currentOrder_InStoreOrderRelationList.Select(i => i.InStorePurchaseOrderId).Distinct().ToList(); - //查询京东 - inStoreResponse = jdBusiness.GetJDInStoreOrderDetailList(order.SourceShopName, poOrderNos); - } - order.CalculationOrderState(fsql, out isNotifyDingDingWhenInOrderFail, currentOrderSkuList, currentPurchaseOrderList, inStoreResponse?.Data); - - if (isNotifyDingDingWhenInOrderFail && inStoreResponse != null) + insertInStoreOrderCheckTaskList.Add(new InStoreOrderCheckTask() { - #region 入库单查询有误,通知钉钉 - var shop = venderBusiness.GetShopList(order.ShopId).FirstOrDefault(); - var dingdingMsg = new StringBuilder(); - if (!inStoreResponse.Success) - { - foreach (var opi in currentPurchaseOrderList) - { - dingdingMsg.AppendLine($"店铺名称:{shop?.ShopName}"); - dingdingMsg.AppendLine($"拳探订单号:{order.OrderSn}"); - dingdingMsg.AppendLine($"采购平台:{opi.PurchasePlatform}"); - dingdingMsg.AppendLine($"采购单号:{opi.PurchaseOrderId}"); - dingdingMsg.AppendLine($"{inStoreResponse.Msg}"); - dingdingMsg.AppendLine(); - } - } - else if (inStoreResponse.Data == null || inStoreResponse.Data.Count() == 0) - { - foreach (var opi in currentPurchaseOrderList) - { - dingdingMsg.AppendLine($"店铺名称:{shop?.ShopName}"); - dingdingMsg.AppendLine($"拳探订单号:{order.OrderSn}"); - dingdingMsg.AppendLine($"采购平台:{opi.PurchasePlatform}"); - dingdingMsg.AppendLine($"采购单号:{opi.PurchaseOrderId}"); - dingdingMsg.AppendLine("缺少入仓采购单号"); - dingdingMsg.AppendLine(); - } - } - else - { - foreach (var inStoreOrderRelation in currentOrder_InStoreOrderRelationList) - { - var jdInStore = inStoreResponse.Data.FirstOrDefault(x => x.poOrderNo == inStoreOrderRelation.InStorePurchaseOrderId); - if (jdInStore == null || jdInStore.storageStatus == "2") - continue; - var opi = currentPurchaseOrderList.FirstOrDefault(opi => opi.PurchaseOrderId == inStoreOrderRelation.PurchaseOrderId); - if (opi == null) - continue; - - var stateText = ""; - switch (jdInStore.storageStatus) - { - case "1": - stateText = "有差异待确认"; - break; - case "3": - stateText = "待确认"; - break; - case "4": - stateText = "有差异已确认"; - break; - } - - dingdingMsg.AppendLine($"店铺名称:{shop?.ShopName}"); - dingdingMsg.AppendLine($"拳探订单号:{order.OrderSn}"); - dingdingMsg.AppendLine($"采购平台:{opi.PurchasePlatform}"); - dingdingMsg.AppendLine($"采购单号:{opi.PurchaseOrderId}"); - dingdingMsg.AppendLine($"入仓采购单号:{inStoreOrderRelation.InStorePurchaseOrderId}"); - dingdingMsg.AppendLine($"入仓采购单状态:{jdInStore.storageStatus} {stateText}"); - dingdingMsg.AppendLine(); - } - } - - Task.Factory.StartNew(() => SendDingDing(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); - #endregion - } - #endregion - } - else - { - order.CalculationOrderState(fsql, out _, currentOrderSkuList, currentPurchaseOrderList); + Id = idGenerator.NewLong(), + CreateTime = DateTime.Now, + IsChecked = false, + OrderId = order.Id, + ShopId = order.ShopId, + OrderSn = order.OrderSn + }); } if (order.OrderState != oldOrderState) @@ -2747,6 +2675,8 @@ namespace BBWYB.Server.Business } if (insertTimeLimitTaskList.Count() > 0) fsql.Insert(insertTimeLimitTaskList).ExecuteAffrows(); + if (insertInStoreOrderCheckTaskList.Count() > 0) + fsql.Insert(insertInStoreOrderCheckTaskList).ExecuteAffrows(); }); #endregion } diff --git a/BBWYB.Server.Business/Vender/VenderBusiness.cs b/BBWYB.Server.Business/Vender/VenderBusiness.cs index 1f55d66..a07ca3e 100644 --- a/BBWYB.Server.Business/Vender/VenderBusiness.cs +++ b/BBWYB.Server.Business/Vender/VenderBusiness.cs @@ -32,6 +32,13 @@ namespace BBWYB.Server.Business .ToList(); } + public IList GetShopList(List shopIds) + { + return fsqlManager.MDSfsql.Select().Where(s => !string.IsNullOrEmpty(s.ShopId) && + shopIds.Contains(s.ShopId)) + .ToList(); + } + public long SaveShopSetting(ShopSettingRequest shopSettingRequest) { diff --git a/BBWYB.Server.Model/Db/Order/InStoreOrderCheckTask.cs b/BBWYB.Server.Model/Db/Order/InStoreOrderCheckTask.cs new file mode 100644 index 0000000..8bde073 --- /dev/null +++ b/BBWYB.Server.Model/Db/Order/InStoreOrderCheckTask.cs @@ -0,0 +1,29 @@ +using FreeSql.DataAnnotations; + +namespace BBWYB.Server.Model.Db +{ + + [Table(Name = "instoreorderchecktask", DisableSyncStructure = true)] + public partial class InStoreOrderCheckTask + { + + [Column(IsPrimary = true)] + public long Id { get; set; } + + [Column(DbType = "datetime")] + public DateTime? CreateTime { get; set; } + + + public bool? IsChecked { get; set; } = false; + + [Column(StringLength = 50)] + public string OrderId { get; set; } + + [Column(StringLength = 50)] + public string OrderSn { get; set; } + + public long? ShopId { get; set; } + + } + +} diff --git a/BBWYB.Server.Model/Db/Order/InStorePurchaseOrdeRrelationInfo.cs b/BBWYB.Server.Model/Db/Order/InStorePurchaseOrdeRrelationInfo.cs index 1a67e40..ecf27e7 100644 --- a/BBWYB.Server.Model/Db/Order/InStorePurchaseOrdeRrelationInfo.cs +++ b/BBWYB.Server.Model/Db/Order/InStorePurchaseOrdeRrelationInfo.cs @@ -7,29 +7,29 @@ namespace BBWYB.Server.Model.Db /// 入库采购单关系表 /// [Table(Name = "instorepurchaseorderrelationinfo", DisableSyncStructure = true)] - public partial class InStorePurchaseOrdeRrelationInfo + public partial class InStorePurchaseOrdeRrelationInfo { - [Column(IsPrimary = true)] - public long Id { get; set; } + [Column(IsPrimary = true)] + public long Id { get; set; } - [Column(DbType = "datetime")] - public DateTime? CreateTime { get; set; } + [Column(DbType = "datetime")] + public DateTime? CreateTime { get; set; } - [Column(StringLength = 100)] - public string InStorePurchaseOrderId { get; set; } + [Column(StringLength = 100)] + public string InStorePurchaseOrderId { get; set; } - [Column(StringLength = 100)] - public string OrderId { get; set; } + [Column(StringLength = 100)] + public string OrderId { get; set; } - [Column(StringLength = 100)] - public string PurchaseOrderId { get; set; } + [Column(StringLength = 100)] + public string PurchaseOrderId { get; set; } - public long? ShopId { get; set; } + public long? ShopId { get; set; } - [Column(StringLength = 100)] - public string WaybillNo { get; set; } + [Column(StringLength = 100)] + public string WaybillNo { get; set; } - } + } }