新增吉克云销售数据推送到金蝶云星空
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
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;
|
||||
|
||||
@@ -0,0 +1,224 @@
|
||||
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 MyCode.Project.Services.IServices;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace MyCode.Project.Services.Implementation
|
||||
{
|
||||
public class OrderPushService : IOrderPushService //, 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(把吉客云订单存进本地数据库)
|
||||
/// <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>();
|
||||
trades.ForEach(t =>
|
||||
{
|
||||
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).Count() > 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
PushKingDeeOrder pushKingDeeOrder = new PushKingDeeOrder();
|
||||
pushKingDeeOrder = AutoMapperHelper.AutoMappToSingle<PushKingDeeOrder, PushOrderListResp>(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<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);
|
||||
}
|
||||
|
||||
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")
|
||||
{
|
||||
// 遍历单体,构造单据体实体
|
||||
var entryList = itemList.Select(n => new FSaleOrderEntryItem()
|
||||
{
|
||||
Fcode = n.Barcode, // 条码带出物料 、物料带出税额
|
||||
FQty = n.SellCount, // 销售数量
|
||||
|
||||
}).ToList();
|
||||
// 构建单据数据包
|
||||
var model = new SaleOrderModel()
|
||||
{
|
||||
FID = 0, // 新增
|
||||
FBillTypeID = new FBillTypeID()
|
||||
{
|
||||
// 1:零售业务7:售后发货;8:售后退货
|
||||
FNUMBER = orderSHeet.TradeType == 8 ? "XSDD05_SYS" : "XSDD01_SYS"
|
||||
},
|
||||
FOrdertype = orderSHeet.TradeType == 8 ? "8" : "4",
|
||||
FDate = orderSHeet.CreateTime?.ToString("yyyy/MM/dd"),
|
||||
FSaleOrgId = new FSaleOrgId()
|
||||
{
|
||||
FNumber = "" // 固定组织
|
||||
},
|
||||
FCustId = new FCustId()
|
||||
{
|
||||
FNumber = "", // 客户?
|
||||
},
|
||||
FSalerId = new FSalerId()
|
||||
{
|
||||
FNumber = "", // 销售员
|
||||
},
|
||||
Foutlets = new Foutlets()
|
||||
{
|
||||
FNUMBER = orderSHeet.ShopCode, // 门店编码
|
||||
},
|
||||
FWarehouse = new FWarehouse()
|
||||
{
|
||||
FNUMBER = orderSHeet.WarehouseCode, // 仓库编码
|
||||
},
|
||||
FSaleOrderEntry = entryList
|
||||
};
|
||||
BillSave billSave = new BillSave()
|
||||
{
|
||||
Model = model
|
||||
};
|
||||
SaleOrderModel fSaleOrderEntry = new SaleOrderModel();
|
||||
|
||||
var resultString = _kingDeeService.Save("SAL_SaleOrder", billSave);
|
||||
LogHelper.Info(resultString);
|
||||
}
|
||||
// 如果为True则同步到WMS
|
||||
else
|
||||
{
|
||||
//wms
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user