397 lines
18 KiB
C#
397 lines
18 KiB
C#
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 MyCode.Project.Services.IServices;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading;
|
|
|
|
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 IReturnChangeGoodsDetailRepository _ReturnChangeGoodsDetailRepository;
|
|
private IBusiOrderGoodsDocInRepository _busiOrderGoodsDocInRepository;
|
|
|
|
private IWorkProcessService _workProcessService;
|
|
|
|
public JackYunTaskService(IJackOrdersRepository jackOrdersRepository
|
|
, IJackOrdersItemRepository jackOrdersItemRepository
|
|
, IPushKingDeeOrderRepository pushKingDeeOrderRepository
|
|
, IPushKingDeeOrderItemRepository pushKingDeeOrderItemRepository
|
|
, IYTKJTShopParameterRepository yTKJTShopParameterRepository
|
|
, IReturnChangeGoodsDetailRepository returnChangeGoodsDetailRepository
|
|
, IBusiOrderGoodsDocInRepository busiOrderGoodsDocInRepository
|
|
, IJackYunService jackYunService,
|
|
IWorkProcessService workProcessService)
|
|
{
|
|
_yTKJTShopParameterRepository = yTKJTShopParameterRepository;
|
|
_pushKingDeeOrderRepository = pushKingDeeOrderRepository;
|
|
_pushKingDeeOrderItemRepository = pushKingDeeOrderItemRepository;
|
|
_jackOrdersRepository = jackOrdersRepository;
|
|
_jackOrdersItemRepository = jackOrdersItemRepository;
|
|
_ReturnChangeGoodsDetailRepository = returnChangeGoodsDetailRepository;
|
|
_busiOrderGoodsDocInRepository = busiOrderGoodsDocInRepository;
|
|
|
|
_jackYunService = jackYunService;
|
|
_workProcessService = workProcessService;
|
|
}
|
|
|
|
#region TaskGetJackYunOrder(调度运行抓吉客云销售订单)
|
|
/// <summary>
|
|
/// 调度运行抓吉客云销售订单
|
|
/// </summary>
|
|
/// <param name="now"></param>
|
|
public void TaskGetJackYunOrder(string now)
|
|
{
|
|
DateTime runTime = DateTime.Parse(now);
|
|
var list = _jackYunService.testTradeFullInfoGet(runTime);
|
|
SetOrder(list);
|
|
_workProcessService.Add<IJackYunTaskService>(this.MerchantId, "GetAndMergeJackYunOrder", "合并吉客云订单到新表", now, 1);
|
|
}
|
|
#endregion
|
|
|
|
#region SetOrder(把吉客云订单存进本地数据库)
|
|
/// <summary>
|
|
/// 把吉客云订单存进本地数据库
|
|
/// </summary>
|
|
/// <param name="trades"></param>
|
|
[TransactionCallHandler]
|
|
public void SetOrder(List<TradesItem> 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<JackOrders> jackOrdersList = new List<JackOrders>();
|
|
List<JackOrdersItem> ordersItemList = new List<JackOrdersItem>();
|
|
var shopConfig = _yTKJTShopParameterRepository.Queryable().Where(t => t.FDOCUMENTSTATUS == "C").ToList();
|
|
var shopCodeList = shopConfig.Select(t => t.FSHOPCODE).ToList();
|
|
|
|
|
|
trades.ForEach(t =>
|
|
{
|
|
if (shopCodeList.Contains(t.shopCode))
|
|
{
|
|
JackOrders jackOrders = new JackOrders();
|
|
jackOrders = AutoMapperHelper.AutoMappToSingle<JackOrders, TradesItem>(t);
|
|
jackOrders.Id = Guid.NewGuid();
|
|
jackOrders.Status = 0;
|
|
jackOrders.UpdateTime = DateTime.Now;
|
|
jackOrders.CreateTime = DateTime.Now;
|
|
if (t.goodsDetail != null)
|
|
{
|
|
var items = AutoMapperHelper.AutoMappToList<JackOrdersItem, GoodsDetailItem>(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(合并吉客云订单到新表)
|
|
/// <summary>
|
|
/// 合并吉客云订单到新表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[TransactionCallHandler]
|
|
public string GetAndMergeJackYunOrder(string now)
|
|
{
|
|
var list = _jackOrdersItemRepository.GetPushOrder();
|
|
List<string> mesg = new List<string>();
|
|
|
|
var shopParemList = _yTKJTShopParameterRepository.Queryable().Where(t => t.FDOCUMENTSTATUS == "C").ToList();
|
|
List<PushKingDeeOrderItem> pushKingDeeOrderItems = new List<PushKingDeeOrderItem>();
|
|
List<PushKingDeeOrder> pushKingDeeOrders = new List<PushKingDeeOrder>();
|
|
list.ForEach(sheet =>
|
|
{
|
|
if (pushKingDeeOrders.Where(t => t.ShopId == sheet.ShopId && t.WarehouseId == sheet.WarehouseId
|
|
&& t.ConsignTime.Value.ToString("yyyy-MM-dd")==sheet.ConsignTime && t.TradeType != 8).Count() > 0)
|
|
{
|
|
return;
|
|
}
|
|
PushKingDeeOrder pushKingDeeOrder = new PushKingDeeOrder();
|
|
pushKingDeeOrder = AutoMapperHelper.AutoMappToSingle<PushKingDeeOrder, PushOrderListResp>(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 && sheet.ConsignTime == t.ConsignTime).ToList();
|
|
tempList.ForEach(item =>
|
|
{
|
|
PushKingDeeOrderItem pushKingDeeOrderItem = new PushKingDeeOrderItem();
|
|
pushKingDeeOrderItem = AutoMapperHelper.AutoMappToSingle<PushKingDeeOrderItem, PushOrderListResp>(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);
|
|
}
|
|
pushKingDeeOrders.ForEach(t =>
|
|
{
|
|
_workProcessService.Add<IOrderPushService>(this.MerchantId, "PushOrderToKingDee", "推送订单到云星空或者WMS", t.Id, 1);
|
|
Thread.Sleep(300);
|
|
});
|
|
|
|
return JsonHelper.ToJson(list);
|
|
}
|
|
#endregion
|
|
|
|
|
|
#region TaskGetReturnChangeList(调度运行抓吉客云退货订单)
|
|
/// <summary>
|
|
/// 调度运行抓吉客云退货订单
|
|
/// </summary>
|
|
/// <param name="now"></param>
|
|
public void TaskGetReturnChangeList(string now)
|
|
{
|
|
DateTime runTime = DateTime.Parse(now);
|
|
var list = _jackYunService.GetReturnChangeList(runTime);
|
|
SetReturnOrder(list);
|
|
_workProcessService.Add<IJackYunTaskService>(this.MerchantId, "GetAndMergeJackReturnYunOrder", "合并吉客云退货订单到新表", now, 1);
|
|
}
|
|
#endregion
|
|
|
|
|
|
#region SetReturnOrder(把吉客云退货订单存进本地数据库)
|
|
/// <summary>
|
|
/// 把吉客云退货订单存进本地数据库
|
|
/// </summary>
|
|
/// <param name="trades"></param>
|
|
[TransactionCallHandler]
|
|
public void SetReturnOrder(List<TradesItem> 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<JackOrders> jackOrdersList = new List<JackOrders>();
|
|
List<ReturnChangeGoodsDetail> ordersItemList = new List<ReturnChangeGoodsDetail>();
|
|
var shopConfig = _yTKJTShopParameterRepository.Queryable().Where(t => t.FDOCUMENTSTATUS == "C").ToList();
|
|
var shopCodeList = shopConfig.Select(t => t.FSHOPCODE).ToList();
|
|
|
|
|
|
trades.ForEach(t =>
|
|
{
|
|
if (shopCodeList.Contains(t.shopCode))
|
|
{
|
|
JackOrders jackOrders = new JackOrders();
|
|
jackOrders = AutoMapperHelper.AutoMappToSingle<JackOrders, TradesItem>(t);
|
|
jackOrders.Id = Guid.NewGuid();
|
|
jackOrders.Status = 0;
|
|
jackOrders.UpdateTime = DateTime.Now;
|
|
jackOrders.CreateTime = DateTime.Now;
|
|
if (t.ReturnChangeGoodsDetail != null)
|
|
{
|
|
var items = AutoMapperHelper.AutoMappToList< ReturnChangeGoodsDetail, JkyReturnChangeGoodsDetail>(t.ReturnChangeGoodsDetail);
|
|
items.ForEach(k =>
|
|
{
|
|
k.JackOrdersId = jackOrders.Id;
|
|
});
|
|
jackOrdersList.Add(jackOrders);
|
|
ordersItemList.AddRange(items);
|
|
}
|
|
}
|
|
|
|
});
|
|
|
|
if (jackOrdersList.Count > 0)
|
|
{
|
|
_jackOrdersRepository.Add(jackOrdersList);
|
|
_ReturnChangeGoodsDetailRepository.Add(ordersItemList);
|
|
}
|
|
|
|
}
|
|
#endregion
|
|
|
|
|
|
#region GetAndMergeJackReturnYunOrder(合并吉客云退货订单到新表)
|
|
/// <summary>
|
|
/// 合并吉客云退货订单到新表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[TransactionCallHandler]
|
|
public string GetAndMergeJackReturnYunOrder(string now)
|
|
{
|
|
var list = _jackOrdersItemRepository.GetPushReturnOrder();
|
|
List<string> mesg = new List<string>();
|
|
|
|
var shopParemList = _yTKJTShopParameterRepository.Queryable().Where(t => t.FDOCUMENTSTATUS == "C").ToList();
|
|
List<PushKingDeeOrderItem> pushKingDeeOrderItems = new List<PushKingDeeOrderItem>();
|
|
List<PushKingDeeOrder> pushKingDeeOrders = new List<PushKingDeeOrder>();
|
|
list.ForEach(sheet =>
|
|
{
|
|
if (pushKingDeeOrders.Where(t => t.ShopId == sheet.ShopId && t.WarehouseId == sheet.WarehouseId
|
|
&& t.ConsignTime.Value.ToString("yyyy-MM-dd") == sheet.ConsignTime && t.TradeType==8).Count() > 0)
|
|
{
|
|
return;
|
|
}
|
|
PushKingDeeOrder pushKingDeeOrder = new PushKingDeeOrder();
|
|
pushKingDeeOrder = AutoMapperHelper.AutoMappToSingle<PushKingDeeOrder, PushOrderListResp>(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 && sheet.ConsignTime == t.ConsignTime).ToList();
|
|
tempList.ForEach(item =>
|
|
{
|
|
PushKingDeeOrderItem pushKingDeeOrderItem = new PushKingDeeOrderItem();
|
|
pushKingDeeOrderItem = AutoMapperHelper.AutoMappToSingle<PushKingDeeOrderItem, PushOrderListResp>(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);
|
|
}
|
|
pushKingDeeOrders.ForEach(t =>
|
|
{
|
|
_workProcessService.Add<IOrderPushService>(this.MerchantId, "PushOrderToKingDee", "推送退货订单到云星空或者WMS", t.Id, 1);
|
|
Thread.Sleep(300);
|
|
});
|
|
|
|
return JsonHelper.ToJson(list);
|
|
}
|
|
#endregion
|
|
|
|
#region GetPurchaseInboundData(调度运行获取吉客云采购入库)
|
|
/// <summary>
|
|
/// 调度运行获取吉客云采购入库
|
|
/// </summary>
|
|
/// <param name="now"></param>
|
|
public void GetPurchaseInboundData(string now)
|
|
{
|
|
DateTime runTime = DateTime.Parse(now);
|
|
var list = _jackYunService.GetPurchaseInboundData(runTime);
|
|
SetPurchaseInboundData(list);
|
|
//_workProcessService.Add<IJackYunTaskService>(this.MerchantId, "GetAndMergeJackReturnYunOrder", "合并吉客云退货订单到新表", now, 1);
|
|
}
|
|
#endregion
|
|
|
|
#region SetPurchaseInboundData(把吉客云采购订单存进本地数据库)
|
|
/// <summary>
|
|
/// 把吉客云采购订单存进本地数据库
|
|
/// </summary>
|
|
/// <param name="trades"></param>
|
|
[TransactionCallHandler]
|
|
public void SetPurchaseInboundData(List<BusiOrderGoodsDocInResponse> trades)
|
|
{
|
|
var ids = trades.Select(t => t.RecId).Distinct().ToList();
|
|
ids = _busiOrderGoodsDocInRepository.Queryable().Where(t =>t.RecId!=null && ids.Contains(t.RecId.Value)).Select(t => t.RecId.Value).ToList();
|
|
trades = trades.Where(t => !ids.Contains(t.RecId)).ToList();
|
|
List<BusiOrderGoodsDocIn> addList = new List<BusiOrderGoodsDocIn>();
|
|
addList = AutoMapperHelper.AutoMappToList<BusiOrderGoodsDocIn, BusiOrderGoodsDocInResponse>(trades);
|
|
addList.ForEach(item =>
|
|
{
|
|
|
|
item.ID = Guid.NewGuid();
|
|
DateTime startTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
|
|
item.InOutDate2 = startTime.AddMilliseconds(item.InOutDate.Value).ToLocalTime();
|
|
item.GmtCreate2 = startTime.AddMilliseconds(item.GmtCreate.Value).ToLocalTime();
|
|
item.Status = 0;
|
|
item.CreateTime = DateTime.Now;
|
|
item.CreateUserName = "";
|
|
|
|
|
|
});
|
|
|
|
if (addList.Count > 0)
|
|
{
|
|
_busiOrderGoodsDocInRepository.Add(addList);
|
|
|
|
}
|
|
|
|
}
|
|
#endregion
|
|
|
|
|
|
#region GetStorageGoodsDocOutV2(调度运行吉客云采购出库单)
|
|
/// <summary>
|
|
/// 调度运行吉客云采购出库单
|
|
/// </summary>
|
|
/// <param name="now"></param>
|
|
public void GetStorageGoodsDocOutV2(string now)
|
|
{
|
|
DateTime runTime = DateTime.Parse(now);
|
|
var list = _jackYunService.GetStorageGoodsDocOutV2(runTime);
|
|
//SetPurchaseInboundData(list);
|
|
//_workProcessService.Add<IJackYunTaskService>(this.MerchantId, "GetAndMergeJackReturnYunOrder", "合并吉客云退货订单到新表", now, 1);
|
|
}
|
|
#endregion
|
|
|
|
|
|
|
|
}
|
|
}
|