This commit is contained in:
2025-07-21 17:25:35 +08:00
12 changed files with 438 additions and 249 deletions

View File

@@ -157,34 +157,47 @@ namespace MyCode.Project.Services.Implementation
public void PushOrderToKingDee(string id)
{
var orderSHeet = _pushKingDeeOrderRepository.Queryable().Where(t => id == t.Id.ToString()).First();
if (orderSHeet.Status != 0)
var orderHead = _pushKingDeeOrderRepository.Queryable().Where(t => id == t.Id.ToString()).First();
if (orderHead.Status != 0)
{
throw new BaseException("单据已经下推.");
}
var one = _yTKJTShopParameterRepository
var param = _yTKJTShopParameterRepository
.Queryable()
//.Where(t => t.FSHOPCODE == orderSHeet.ShopCode)
.Where(t => t.FSHOPCODE == "bybo")
.Where(t => t.FSHOPCODE == orderHead.ShopCode)
.First();
if (one is null)
if (param is null)
{
throw new BaseException($"门店编号:{orderSHeet.ShopCode},门店名称:{orderSHeet.ShopName},没有找到对应的门店参数 ");
throw new BaseException($"门店编号:{orderHead.ShopCode},门店名称:{orderHead.ShopName},没有找到对应的门店参数 ");
}
// 如果这个配置都没有勾选则直接报错
if (param.FSYNCHRONIZEKINGDEE == "0" && param.FSYNCHRONIZEWMS == "0")
{
throw new BaseException($"门店编号:{orderHead.ShopCode},门店名称:{orderHead.ShopName},参数配置错误,请联系管理员检查 ");
}
// TODO 如果是False则同步到云星空销售订单
if (one.FSYNCHRONIZEWMS == "1")
//if (param.FSYNCHRONIZEWMS == "1")
if (param.FSYNCHRONIZEKINGDEE == "1")
{
PushKingdeeSaleOrder(orderSHeet);
var response = PushKingdeeSaleOrder(orderHead, param);
// 如果保存成功,需要更新源单数据
if (response.IsSuccess)
{
orderHead.Status = 2;
_pushKingDeeOrderRepository.Update(orderHead);
}
}
// 如果为True则同步到WMS
else
else if (param.FSYNCHRONIZEWMS == "1")
{
//wms
PushWMSSaleOrder(orderSHeet);
PushWMSSaleOrder(orderHead, param);
}
}
private string PushWMSSaleOrder(PushKingDeeOrder pushKingdeeOrder)
private string PushWMSSaleOrder(PushKingDeeOrder pushKingdeeOrder, YTKJTShopParameter param)
{
var itemList = _pushKingDeeOrderItemRepository
.Queryable()
@@ -195,13 +208,13 @@ namespace MyCode.Project.Services.Implementation
// 赋值
order.CreateTime = pushKingdeeOrder.CreateTime?.ToString("yyyy/MM/dd");
order.OrderNo = pushKingdeeOrder.Id.ToString();
order.CompanyId = string.Empty; // 公司Id
order.OrderType = pushKingdeeOrder.TradeType == 8 ? "8" : "4"; // 订单类型
order.CustomerId = string.Empty; // 货主ID
order.CompanyId = param.FCOMPANYID; // 公司Id
order.OrderType = pushKingdeeOrder.TradeType == 8 ? "7" : "4"; // 订单类型
order.CustomerId = param.FCANGKUHUOZHU; // 货主ID
order.WarehouseId = pushKingdeeOrder?.WarehouseId;
order.OrderTime = pushKingdeeOrder.ConsignTime?.ToString("yyyy/MM/dd");
order.Channel = string.Empty; // 下发系统
order.ItemType = string.Empty; // 单据类型
order.Channel = "K3Cloud"; // 下发系统
order.ItemType = pushKingdeeOrder.TradeType == 8 ? "退货订单" : "标准销售订单"; // 单据类型
order.TotalQty = itemList.Sum(n => n.SellCount);
order.TotalMount = itemList.Sum(n => n.SellTotal);
order.CreateTime = pushKingdeeOrder.CreateTime?.ToString("yyyy/MM/dd");
@@ -220,7 +233,7 @@ namespace MyCode.Project.Services.Implementation
ItemId = n.GoodsId, // 商品
}).ToArray();
var uri = "";
var uri = "http://172.16.42.45:9000";
var requestString = JsonHelper.ToJson(order, false, false, true);
var client = new RestClient($"{uri}/sale/order/return");
@@ -237,18 +250,27 @@ namespace MyCode.Project.Services.Implementation
return resultString;
}
private string PushKingdeeSaleOrder(PushKingDeeOrder pushKingdeeOrder)
/// <summary>
/// 推送到金蝶云星空
/// </summary>
/// <param name="pushKingdeeOrder">源单信息</param>
/// <param name="param">门店配置</param>
/// <returns></returns>
private Domain.Message.Response.KingDee.K3Result.Model.ResponseStatus PushKingdeeSaleOrder(PushKingDeeOrder pushKingdeeOrder, YTKJTShopParameter param)
{
var itemList = _pushKingDeeOrderItemRepository.Queryable().Where(t => pushKingdeeOrder.Id == t.PushKingDeeOrderId).ToList();
// 遍历单体,构造单据体实体
var entryList = itemList.Select(n => new FSaleOrderEntryItem()
{
Fcode = n.Barcode, // 条码带出物料 、物料带出税额
//Fcode = "2120101128415", // 条码带出物料 、物料带出税额
FEntryTaxRate = param.FTAXRATE,
FQty = n.SellCount, // 销售数量
FTaxPrice = Math.Round(n.DivideSellTotal / n.SellCount, 10), // 含税单价等于 金额/总数
FSOStockId = new FSOStockId() // 仓库必填
{
FNUMBER = pushKingdeeOrder.WarehouseCode
FNUMBER = param.FWAREHOUSECODE
},
}).ToList();
@@ -261,19 +283,20 @@ namespace MyCode.Project.Services.Implementation
// 1零售业务7售后发货8售后退货
FNUMBER = pushKingdeeOrder.TradeType == 8 ? "XSDD05_SYS" : "XSDD01_SYS"
},
FOrdertype = pushKingdeeOrder.TradeType == 8 ? "8" : "4",
FOrdertype = pushKingdeeOrder.TradeType == 8 ? "7" : "4",
FDate = pushKingdeeOrder.ConsignTime?.ToString("yyyy/MM/dd"),
FSaleOrgId = new FSaleOrgId()
{
FNumber = "" // 固定组织
FOrgId = param.FSaleOrgId.ToString() // 销售组织
},
FCustId = new FCustId()
FCustId = new FCustomerId()
{
FNumber = "", // 客户?
FCustId = param.FSALESCUSTOMERS.ToString(), // 客户?
},
FSalerId = new FSalerId()
{
FNumber = "", // 销售员
FId = param.FSALER, // 销售员
//FNumber = "思迅销售员_GW000002_1", // 销售员
},
Foutlets = new Foutlets()
{
@@ -291,9 +314,9 @@ namespace MyCode.Project.Services.Implementation
};
SaleOrderModel fSaleOrderEntry = new SaleOrderModel();
var resultString = _kingDeeService.Save("SAL_SaleOrder", billSave);
LogHelper.Info(resultString);
return resultString;
var responseStatus = _kingDeeService.Save("SAL_SaleOrder", billSave);
//LogHelper.Info();
return responseStatus;
}
}
}