diff --git a/Reportapi/MyCode.Project.OutSideService/IKingDeeService.cs b/Reportapi/MyCode.Project.OutSideService/IKingDeeService.cs new file mode 100644 index 0000000..228e03f --- /dev/null +++ b/Reportapi/MyCode.Project.OutSideService/IKingDeeService.cs @@ -0,0 +1,17 @@ +using MyCode.Project.Domain.Message.Request.KingDee; + +namespace MyCode.Project.OutSideService +{ + public interface IKingDeeService + { + /// + /// 保存一个订单对象 + /// + /// + /// + /// + string Save(string formId, BillSave billSave); + + + } +} diff --git a/Reportapi/MyCode.Project.Services/Implementation/OrderPushService.cs b/Reportapi/MyCode.Project.Services/Implementation/OrderPushService.cs new file mode 100644 index 0000000..3ccd9ad --- /dev/null +++ b/Reportapi/MyCode.Project.Services/Implementation/OrderPushService.cs @@ -0,0 +1,183 @@ +using MyCode.Project.Domain.Message.Request.KingDee; +using MyCode.Project.Domain.Message.Response.JackYun; +using MyCode.Project.Domain.Model; +using MyCode.Project.Domain.Repositories; +using MyCode.Project.Infrastructure.Common; +using MyCode.Project.Infrastructure.Exceptions; +using MyCode.Project.Infrastructure.JackYun; +using MyCode.Project.OutSideService; +using MyCode.Project.Repositories; +using MyCode.Project.Repositories.Common; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MyCode.Project.Services.Implementation +{ + public class OrderPushService : ServiceBase //, IOrderPushService + { + private IJackYunService _jackYunService; + private IJackOrdersRepository _jackOrdersRepository; + private IJackOrdersItemRepository _jackOrdersItemRepository; + private IPushKingDeeOrderRepository _pushKingDeeOrderRepository; + private IPushKingDeeOrderItemRepository _pushKingDeeOrderItemRepository; + private IYTKJTShopParameterRepository _yTKJTShopParameterRepository; + private IKingDeeService _kingDeeService; + + public OrderPushService(IJackOrdersRepository jackOrdersRepository + , IJackOrdersItemRepository jackOrdersItemRepository + , IPushKingDeeOrderRepository pushKingDeeOrderRepository + , IPushKingDeeOrderItemRepository pushKingDeeOrderItemRepository + , IYTKJTShopParameterRepository yTKJTShopParameterRepository + , IJackYunService jackYunService + , IKingDeeService kingDeeService) + { + _yTKJTShopParameterRepository = yTKJTShopParameterRepository; + _pushKingDeeOrderRepository = pushKingDeeOrderRepository; + _pushKingDeeOrderItemRepository = pushKingDeeOrderItemRepository; + _jackOrdersRepository = jackOrdersRepository; + _jackOrdersItemRepository = jackOrdersItemRepository; + _jackYunService = jackYunService; + _kingDeeService = kingDeeService; + } + + + #region SetOrder(把吉客云订单存进本地数据库) + /// + /// 把吉客云订单存进本地数据库 + /// + /// + [TransactionCallHandler] + public void SetOrder(List trades) + { + var ids = trades.Select(t => t.tradeId).Distinct().ToList(); + ids = _jackOrdersRepository.Queryable().Where(t => ids.Contains(t.TradeId)).Select(t => t.TradeId).Distinct().ToList(); + if (ids.Count > 0) + trades = trades.Where(t => !ids.Contains(t.tradeId)).ToList(); + List jackOrdersList = new List(); + List ordersItemList = new List(); + trades.ForEach(t => + { + JackOrders jackOrders = new JackOrders(); + jackOrders = AutoMapperHelper.AutoMappToSingle(t); + jackOrders.Id = Guid.NewGuid(); + jackOrders.Status = 0; + jackOrders.UpdateTime = DateTime.Now; + jackOrders.CreateTime = DateTime.Now; + if (t.goodsDetail != null) + { + var items = AutoMapperHelper.AutoMappToList(t.goodsDetail); + items.ForEach(k => + { + k.JackOrdersId = jackOrders.Id; + }); + jackOrdersList.Add(jackOrders); + ordersItemList.AddRange(items); + } + + }); + + if (jackOrdersList.Count > 0) + { + _jackOrdersRepository.Add(jackOrdersList); + _jackOrdersItemRepository.Add(ordersItemList); + } + } + #endregion + + #region GetAndMergeJackYunOrder(合并吉客云订单到新表) + /// + /// 合并吉客云订单到新表 + /// + /// + [TransactionCallHandler] + public string GetAndMergeJackYunOrder(string now) + { + var list = _jackOrdersItemRepository.GetPushOrder(); + List mesg = new List(); + + var shopParemList = _yTKJTShopParameterRepository.Queryable().Where(t => t.FDOCUMENTSTATUS == "C").ToList(); + List pushKingDeeOrderItems = new List(); + List pushKingDeeOrders = new List(); + list.ForEach(sheet => + { + if (pushKingDeeOrders.Where(t => t.ShopId == sheet.ShopId && t.WarehouseId == sheet.WarehouseId).Count() > 0) + { + return; + } + PushKingDeeOrder pushKingDeeOrder = new PushKingDeeOrder(); + pushKingDeeOrder = AutoMapperHelper.AutoMappToSingle(sheet); + pushKingDeeOrder.Id = Guid.NewGuid(); + pushKingDeeOrders.Add(pushKingDeeOrder); + + var tempList = list.Where(t => t.ShopId == sheet.ShopId && t.WarehouseId == sheet.WarehouseId).ToList(); + tempList.ForEach(item => + { + PushKingDeeOrderItem pushKingDeeOrderItem = new PushKingDeeOrderItem(); + pushKingDeeOrderItem = AutoMapperHelper.AutoMappToSingle(item); + pushKingDeeOrderItem.PushKingDeeOrderId = pushKingDeeOrder.Id; + pushKingDeeOrderItem.Id = Guid.NewGuid(); + pushKingDeeOrderItems.Add(pushKingDeeOrderItem); + }); + //var shopParem = shopParemList.Where(h => h.FSHOPCODE == sheet.ShopId.Value.ToString()&& h.FWAREHOUSE.Value.ToString()==sheet.WarehouseId ).FirstOrDefault(); + //if (shopParem != null) + //{ + //} + //else + //{ + // mesg.Add($@"店铺{sheet.ShopName}没有配置店铺参数或者配置的仓库不是 {sheet.WarehouseCode}"); + //} + }); + if (pushKingDeeOrders.Count > 0) + { + var oldList = _jackOrdersRepository.Queryable().Where(t => t.Status == 0).ToList(); + oldList.ForEach(t => + { + if (pushKingDeeOrders.Count(h => h.ShopId == t.ShopId && t.WarehouseId == h.WarehouseId) > 0) + { + t.Status = 1; + t.UpdateTime = DateTime.Now; + } + }); + oldList = oldList.Where(t => t.Status == 1).ToList(); + _jackOrdersRepository.Update(oldList); + _pushKingDeeOrderRepository.Add(pushKingDeeOrders); + _pushKingDeeOrderItemRepository.Add(pushKingDeeOrderItems); + } + + return JsonHelper.ToJson(list); + } + #endregion + + public void PushOrderToKingDee(PushKingDeeOrder pushKingDeeOrder1) + { + var orderSHeet = _pushKingDeeOrderRepository.Queryable().Where(t => pushKingDeeOrder1.Id == t.Id).First(); + if (orderSHeet.Status != 0) + { + throw new BaseException(""); + } + var itemList = _pushKingDeeOrderItemRepository.Queryable().Where(t => pushKingDeeOrder1.Id == t.PushKingDeeOrderId).ToList(); + var one = _yTKJTShopParameterRepository.Queryable().Where(t => t.FSHOPCODE == orderSHeet.ShopCode).First(); + // TODO 如果是False则同步到云星空销售订单 + if (one.FSYNCHRONIZEWMS == "0") + { + BillSave billSave = new BillSave() + { + Model = orderSHeet, + }; + FSaleOrderEntry fSaleOrderEntry = new FSaleOrderEntry(); + + var resultString = _kingDeeService.Save("SAL_SaleOrder", billSave); + LogHelper.Info(resultString); + } + // 如果为True则同步到WMS + else + { + //wms + + } + } + } +}