using MyCode.Project.Domain.Message.Response.JackYun; 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.JackYun; 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 JackYunTaskService : ServiceBase , IJackYunTaskService { private IJackYunService _jackYunService; private IJackOrdersRepository _jackOrdersRepository; private IJackOrdersItemRepository _jackOrdersItemRepository; private IPushKingDeeOrderRepository _pushKingDeeOrderRepository; private IPushKingDeeOrderItemRepository _pushKingDeeOrderItemRepository; private IYTKJTShopParameterRepository _yTKJTShopParameterRepository; private IWorkProcessService _workProcessService; public JackYunTaskService(IJackOrdersRepository jackOrdersRepository , IJackOrdersItemRepository jackOrdersItemRepository , IPushKingDeeOrderRepository pushKingDeeOrderRepository , IPushKingDeeOrderItemRepository pushKingDeeOrderItemRepository , IYTKJTShopParameterRepository yTKJTShopParameterRepository , IJackYunService jackYunService, IWorkProcessService workProcessService ) { _yTKJTShopParameterRepository = yTKJTShopParameterRepository; _pushKingDeeOrderRepository = pushKingDeeOrderRepository; _pushKingDeeOrderItemRepository = pushKingDeeOrderItemRepository; _jackOrdersRepository = jackOrdersRepository; _jackOrdersItemRepository = jackOrdersItemRepository; _jackYunService = jackYunService; _workProcessService = workProcessService; } #region TaskGetJackYunOrder(调度运行抓吉客云销售订单) /// /// 调度运行抓吉客云销售订单 /// /// public void TaskGetJackYunOrder(string now) { DateTime runTime = DateTime.Parse(now); var list = _jackYunService.testTradeFullInfoGet(runTime); SetOrder(list); _workProcessService.Add(this.MerchantId, "GetAndMergeJackYunOrder", "合并吉客云订单到新表", now, 1); } #endregion #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(); pushKingDeeOrder.CreateTime = DateTime.Now; pushKingDeeOrder.UpdateTime = DateTime.Now; 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 } }