From 99a757f517f68ff4b5529e0ba52d326d3d6cebfa Mon Sep 17 00:00:00 2001 From: yuyubo <1870149533@qq.com> Date: Mon, 24 Nov 2025 16:06:01 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E8=AF=95=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusiOrderGoodsDocInRepository.cs | 14 ++-- .../Implementation/JackYunService.cs | 24 ++++--- .../Implementation/JackYunTaskService.cs | 13 ++-- .../Implementation/PurchaseStockInService.cs | 66 ++++++++----------- .../Implementation/WMSService.cs | 4 +- 5 files changed, 57 insertions(+), 64 deletions(-) diff --git a/Reportapi/MyCode.Project.Repositories/BusiOrderGoodsDocInRepository.cs b/Reportapi/MyCode.Project.Repositories/BusiOrderGoodsDocInRepository.cs index c43c54a..bc84809 100644 --- a/Reportapi/MyCode.Project.Repositories/BusiOrderGoodsDocInRepository.cs +++ b/Reportapi/MyCode.Project.Repositories/BusiOrderGoodsDocInRepository.cs @@ -68,10 +68,8 @@ namespace MyCode.Project.Repositories { string sql = $@"SELECT -- 分组字段 - CONVERT(date, MAX(InOutDate2)) AS InOutDate2, - WarehouseCode AS WarehouseCode, - WarehouseName AS WarehouseName, - [SourceBillNo] AS GoodsdocNo ,[ApplyCompanyName],[VendCustomerName], + CONVERT(date, InOutDate2) AS InOutDate2, + [VendCustomerName], VendCode, -- 合计数据 SUM(Quantity) AS Quantity ,-- 总数量, SUM(BaceCurrencyCostAmount) AS BaceCurrencyCostAmount,--总入库金额, @@ -88,13 +86,9 @@ namespace MyCode.Project.Repositories FROM [dbo].[BusiOrderGoodsDocIn] WHERE Status IN (0) -- 根据业务需求调整状态筛选 GROUP BY - WarehouseCode, - WarehouseName, - [SourceBillNo] ,[ApplyCompanyName],[VendCustomerName] + CONVERT(date, InOutDate2) ,[VendCustomerName] ,VendCode ORDER BY - InOutDate2 DESC, - WarehouseCode, - GoodsdocNo; "; + InOutDate2 DESC "; var list = this.SelectList(sql); return list; } diff --git a/Reportapi/MyCode.Project.Services/Implementation/JackYunService.cs b/Reportapi/MyCode.Project.Services/Implementation/JackYunService.cs index 3c308bc..9b9f50e 100644 --- a/Reportapi/MyCode.Project.Services/Implementation/JackYunService.cs +++ b/Reportapi/MyCode.Project.Services/Implementation/JackYunService.cs @@ -126,6 +126,7 @@ namespace MyCode.Project.Services.Implementation if (response.code == "200") { orderjson = JsonHelper.ToJson(response.result); + LogHelper.Info(orderjson); list1 = JsonHelper.ToObject>(orderjson); } @@ -215,6 +216,7 @@ namespace MyCode.Project.Services.Implementation if (response.code == "200") { orderjson = JsonHelper.ToJson(response.result); + LogHelper.Info(orderjson); list1 = JsonHelper.ToObject>(orderjson); } @@ -333,6 +335,7 @@ namespace MyCode.Project.Services.Implementation if (response.code == "200") { orderjson = JsonHelper.ToJson(response.result); + LogHelper.Info(orderjson); list1 = JsonHelper.ToObject(orderjson); TotalResults = list1.contextId; } @@ -348,14 +351,14 @@ namespace MyCode.Project.Services.Implementation throw new BaseException(msg); } }); - var warehouseCodes = shopConfigs.Select(t => t.FPURCHASINGWAREHOUSECODE).Distinct().ToList(); - var guolv = shopConfigs.Select(t => new { t.FPURCHASINGWAREHOUSECODE, t.FPURCHASEDATE }).ToList(); - trades = trades.Where(t => warehouseCodes.Contains(t.warehouseCode)).ToList(); + //var warehouseCodes = shopConfigs.Select(t => t.FPURCHASINGWAREHOUSECODE).Distinct().ToList(); + //var guolv = shopConfigs.Select(t => new { t.FPURCHASINGWAREHOUSECODE, t.FPURCHASEDATE }).ToList(); + //trades = trades.Where(t => warehouseCodes.Contains(t.warehouseCode)).ToList(); - foreach (var item in guolv) - { - trades.RemoveAll(t => item.FPURCHASINGWAREHOUSECODE == t.warehouseCode && item.FPURCHASEDATE > t.inOutDate2); - } + //foreach (var item in guolv) + //{ + // trades.RemoveAll(t => item.FPURCHASINGWAREHOUSECODE == t.warehouseCode && item.FPURCHASEDATE > t.inOutDate2); + //} return trades; } @@ -428,6 +431,7 @@ namespace MyCode.Project.Services.Implementation if (response.code == "200") { orderjson = JsonHelper.ToJson(response.result); + LogHelper.Info(orderjson); list1 = JsonHelper.ToObject(orderjson); } @@ -440,9 +444,9 @@ namespace MyCode.Project.Services.Implementation } }); - var warehouseCodes = shopConfigs.Select(t => t.FPURCHASINGWAREHOUSECODE).Distinct().ToList(); - var guolv = shopConfigs.Select(t => new { t.FPURCHASINGWAREHOUSECODE, t.FPURCHASEDATE }).ToList(); - trades = trades.Where(t => warehouseCodes.Contains(t.WarehouseCode)).ToList(); + //var warehouseCodes = shopConfigs.Select(t => t.FPURCHASINGWAREHOUSECODE).Distinct().ToList(); + //var guolv = shopConfigs.Select(t => new { t.FPURCHASINGWAREHOUSECODE, t.FPURCHASEDATE }).ToList(); + //trades = trades.Where(t => warehouseCodes.Contains(t.WarehouseCode)).ToList(); //foreach (var item in guolv) //{ // trades.RemoveAll(t => item.FPURCHASINGWAREHOUSECODE == t.WarehouseCode && item.FPURCHASEDATE > t.InOutDate); diff --git a/Reportapi/MyCode.Project.Services/Implementation/JackYunTaskService.cs b/Reportapi/MyCode.Project.Services/Implementation/JackYunTaskService.cs index 3d11432..31a2f5a 100644 --- a/Reportapi/MyCode.Project.Services/Implementation/JackYunTaskService.cs +++ b/Reportapi/MyCode.Project.Services/Implementation/JackYunTaskService.cs @@ -376,8 +376,8 @@ namespace MyCode.Project.Services.Implementation item.Status = 0; item.CreateTime = DateTime.Now; item.CreateUserName = ""; - var one = guolv.Where(h => h.FPURCHASINGWAREHOUSECODE == item.WarehouseCode).FirstOrDefault(); - if (one == null || one.FPURCHASEDATE > item.InOutDate2) + var one = guolv.Max(t=>t.FPURCHASEDATE); + if (one == null || one > item.InOutDate2) { item.ID = Guid.Empty; } @@ -440,7 +440,7 @@ namespace MyCode.Project.Services.Implementation var oldList = _busiOrderGoodsDocInRepository.Queryable().Where(t => t.Status == 0).ToList(); oldList.ForEach(t => { - if (pushKingDeeOrders.Count(h => h.WarehouseCode == t.WarehouseCode && t.InOutDate2.Value.ToString("yyyy-MM-dd") == h.InOutDate2.Value.ToString("yyyy-MM-dd")) > 0) + if (pushKingDeeOrders.Count(h => h.VendCode == t.VendCode && t.InOutDate2.Value.ToString("yyyy-MM-dd") == h.InOutDate2.Value.ToString("yyyy-MM-dd")) > 0) { t.Status = 1; t.UpdateTime = DateTime.Now; @@ -508,8 +508,13 @@ namespace MyCode.Project.Services.Implementation { _storageGoodsDocOutHeadRepository.Add(jackOrdersList); _storageGoodsDocOutDetailRepository.Add(ordersItemList); + jackOrdersList.ForEach(t => + { + _workProcessService.Add(this.MerchantId, "PushPurchaseReturnToKingDee", "推送采购退料单到金蝶云星空", t.Id, 1); + }); + } - + } #endregion diff --git a/Reportapi/MyCode.Project.Services/Implementation/PurchaseStockInService.cs b/Reportapi/MyCode.Project.Services/Implementation/PurchaseStockInService.cs index f2811d3..0f3bf59 100644 --- a/Reportapi/MyCode.Project.Services/Implementation/PurchaseStockInService.cs +++ b/Reportapi/MyCode.Project.Services/Implementation/PurchaseStockInService.cs @@ -68,7 +68,7 @@ namespace MyCode.Project.Services.Implementation if (goodsDocIn.Status ==2 ) { - throw new BaseException($"采购入库单 {goodsDocIn.GoodsdocNo} 已经推送过,状态为:{goodsDocIn.Status},不允许重复推送"); + throw new BaseException($"{goodsDocIn.InOutDate2}+{goodsDocIn.VendCustomerName}的采购入库单已经推送过,状态为:{goodsDocIn.Status},不允许重复推送"); } var param = _yTKJTShopParameterRepository @@ -93,16 +93,8 @@ namespace MyCode.Project.Services.Implementation if (response.IsSuccess) { - var allRecords = _pushKingDeeGoodsDocInRepository - .Queryable() - .Where(t => t.GoodsdocNo == goodsDocIn.GoodsdocNo) - .ToList(); - - foreach (var record in allRecords) - { - record.Status = 2; - _pushKingDeeGoodsDocInRepository.Update(record); - } + goodsDocIn.Status = 2; + _pushKingDeeGoodsDocInRepository.Update(goodsDocIn); } return result; @@ -116,52 +108,32 @@ namespace MyCode.Project.Services.Implementation // 从BusiOrderGoodsDocIn表获取明细数据 var detailList = _busiOrderGoodsDocInRepository .Queryable() - .Where(t => t.SourceBillNo == goodsDocIn.GoodsdocNo) + .Where(t => t.InOutDate2.Value.ToString("yyyy-MM-dd") == goodsDocIn.InOutDate2.Value.ToString("yyyy-MM-dd") && t.VendCode==goodsDocIn.VendCode ) .ToList(); if (detailList == null || detailList.Count == 0) { - throw new BaseException($"采购入库单 {goodsDocIn.GoodsdocNo} 没有找到明细数据,无法推送"); + throw new BaseException($"没有找到明细数据,无法推送"); } - - var vendorCodes = detailList.Where(d => !string.IsNullOrEmpty(d.VendCode)) - .Select(d => d.VendCode) - .Distinct() - .ToList(); - if (vendorCodes.Count > 1) - { - throw new BaseException($"采购入库单 {goodsDocIn.GoodsdocNo} 明细行中存在不同的供应商编码:{string.Join(",", vendorCodes)},无法推送"); - } - // 获取第一条明细用于主表信息 var firstDetail = detailList.FirstOrDefault(); if (firstDetail == null) { - throw new BaseException($"采购入库单 {goodsDocIn.GoodsdocNo} 明细数据为空,无法推送"); + throw new BaseException($" 明细数据为空,无法推送"); } // 获取采购组织ID string purchaseOrgId = param.FPURCHASEORGID?.ToString() ?? param.FSALEORGID?.ToString() ?? DEFAULT_ORG; // 获取仓库编码 - string warehouseCode = firstDetail.WarehouseCode ?? param.FPURCHASINGWAREHOUSECODE ?? ""; - - // 数据校验 - if (string.IsNullOrEmpty(firstDetail.VendCode)) - { - throw new BaseException($"采购入库单 {goodsDocIn.GoodsdocNo} 供应商编码为空,无法推送"); - } - if (string.IsNullOrEmpty(warehouseCode)) - { - throw new BaseException($"采购入库单 {goodsDocIn.GoodsdocNo} 仓库编码为空,无法推送"); - } + string warehouseCode =param.FPURCHASINGWAREHOUSECODE ; // 构建金蝶API的明细行数据 var entryList = detailList.Select((n, index) => BuildEntryItem(n, param, purchaseOrgId, warehouseCode)).ToList(); if (entryList.Count == 0) { - throw new BaseException($"采购入库单 {goodsDocIn.GoodsdocNo} 明细数据转换失败,无法推送"); + throw new BaseException($"采购入库单明细数据转换失败,无法推送"); } // 构建金蝶API的主表数据 @@ -255,11 +227,12 @@ namespace MyCode.Project.Services.Implementation private PurchaseStockInModel BuildMainModel(PushKingDeeGoodsDocIn goodsDocIn, BusiOrderGoodsDocIn firstDetail, YTKJTShopParameter param, string orgId, List entryList) { + //JKCR+年月日+自增ID(三位) string dateStr = goodsDocIn.InOutDate2?.ToString("yyyy-MM-dd HH:mm:ss") ?? DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); - + string FBillNo = GenerateBillNo(goodsDocIn.SortId, goodsDocIn.InOutDate2.Value); return new PurchaseStockInModel() { - FBillNo= goodsDocIn.GoodsdocNo, + FBillNo= FBillNo, FID = 0, FBillTypeID = new FBillTypeID() { @@ -317,6 +290,23 @@ namespace MyCode.Project.Services.Implementation FInStockEntry = entryList }; } + + /** + * JKXC+年月日+自增ID(三位)--销售出库单 +JKXT+年月日+自增ID(三位)--销售退货单 +JKCR+年月日+自增ID(三位)--采购入库单 +JKCT+年月日+自增ID(三位)--采购退货单 + **/ + private string GenerateBillNo(int Sheet, DateTime date) + { + string prefix = "JKCR" + date.ToString("yyyyMMdd"); + string numberPart = (Sheet > 0 ? Sheet.ToString() : "").PadLeft(3, '0'); + numberPart = numberPart.Length > 3 ? numberPart.Substring(numberPart.Length - 3) : numberPart; + // 组合并确保只取最后3位数字 + string combined = prefix + numberPart; + return combined; + + } } } diff --git a/Reportapi/MyCode.Project.Services/Implementation/WMSService.cs b/Reportapi/MyCode.Project.Services/Implementation/WMSService.cs index 4dd0758..68c1337 100644 --- a/Reportapi/MyCode.Project.Services/Implementation/WMSService.cs +++ b/Reportapi/MyCode.Project.Services/Implementation/WMSService.cs @@ -44,8 +44,8 @@ namespace MyCode.Project.Services.Implementation DateTime now = DateTime.Now.Date; _workProcessService.Add(this.MerchantId, "TaskGetJackYunOrder", "调度运行抓吉客云销售订单", now.ToString("yyyy-MM-dd"), 1); _workProcessService.Add(this.MerchantId, "TaskGetReturnChangeList", "调度运行抓吉客云退货订单", now.ToString("yyyy-MM-dd"), 1); - //_workProcessService.Add(this.MerchantId, "GetPurchaseInboundData", "调度运行吉客云采购入库", now.ToString("yyyy-MM-dd"), 1); - //_workProcessService.Add(this.MerchantId, "GetStorageGoodsDocOutV2", "获取吉客云采购退货出库单", now.ToString("yyyy-MM-dd"), 1); + _workProcessService.Add(this.MerchantId, "GetPurchaseInboundData", "调度运行吉客云采购入库", now.ToString("yyyy-MM-dd"), 1); + _workProcessService.Add(this.MerchantId, "GetStorageGoodsDocOutV2", "获取吉客云采购退货出库单", now.ToString("yyyy-MM-dd"), 1); } #endregion