From 848083c7077ec4571f410d78c58cdf2ae1743a5e Mon Sep 17 00:00:00 2001
From: tongfei <244188119@qq.com>
Date: Fri, 10 Nov 2023 18:26:58 +0800
Subject: [PATCH] xml
---
src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 8 ++
src/WMS.Web.Domain/Services/InStockService.cs | 4 +-
.../Services/InStockTaskService.cs | 75 +++++++++++++++++++
3 files changed, 85 insertions(+), 2 deletions(-)
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
index 69983bb8..754726b8 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
@@ -2532,6 +2532,14 @@
+
+
+ 同步:其他入库单
+
+
+
+
+
出库服务
diff --git a/src/WMS.Web.Domain/Services/InStockService.cs b/src/WMS.Web.Domain/Services/InStockService.cs
index 3ff3f8a7..56da6549 100644
--- a/src/WMS.Web.Domain/Services/InStockService.cs
+++ b/src/WMS.Web.Domain/Services/InStockService.cs
@@ -344,11 +344,11 @@ namespace WMS.Web.Domain.Services
return Result.ReFailure(ResultCodes.BoxNoData);
//3.比对:false为比对失败;
- bool isRight = box.Details.All(x => task.Details.Any(t => t.MaterialId == x.MaterialId && t.AccruedQty == x.Qty)) && box.Details.Count == task.Details.Count;
+ bool isRight = box.Details.All(x => task.Details.Any(t => t.MaterialId == x.MaterialId && t.AccruedQty >= x.Qty)) && box.Details.Count == task.Details.Count;
if(!isRight)
return Result.ReFailure(ResultCodes.ContrastError);
- //4.是否存在箱号判断:存在的话,就不能收货或者非采购上架
+ //4.是否任务单存在绑定箱号判断:存在的话,就不能收货或者非采购上架
bool isHave = task.Boxs.Where(x => x.BoxBillNo == box.BoxBillNo).Any();
if(isHave)
return Result.ReFailure(ResultCodes.BoxHaveError);
diff --git a/src/WMS.Web.Domain/Services/InStockTaskService.cs b/src/WMS.Web.Domain/Services/InStockTaskService.cs
index 0e4b42f4..ac75fcb6 100644
--- a/src/WMS.Web.Domain/Services/InStockTaskService.cs
+++ b/src/WMS.Web.Domain/Services/InStockTaskService.cs
@@ -5,6 +5,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using WMS.Web.Core.Dto.Erp;
using WMS.Web.Core.Dto.Erp.Purchase;
using WMS.Web.Core.Dto.InStockTask;
using WMS.Web.Core.Internal.Results;
@@ -169,5 +170,79 @@ namespace WMS.Web.Domain.Services
return Result.ReSuccess();
}
+
+ ///
+ /// 同步:其他入库单
+ ///
+ ///
+ ///
+ ///
+ public async Task SysnMiscellaneous(List billNos = null, bool isTransaction = true)
+ {
+ //1.获取金蝶数据:其他入库订单数据
+ var erp_result = await _erpService.BillQueryForMiscellaneous(billNos);
+ if (!erp_result.IsSuccess)
+ return Result.ReFailure(erp_result.Message, erp_result.Status);
+ var erp_list = erp_result.Data;
+
+ //2.通过单据编号找到wms系统现有的任务单;并修改
+ var erp_removeList = new List();
+ var SourceBillNo_list = erp_list.GroupBy(x => x.BillNo).Select(x => x.Key).ToList();
+ var data_list = await _inStockTaskRepositories.GetListBy(SourceBillNo_list);
+ if (data_list.Count != 0)
+ {
+ //2.1提取出wms任务单明细信息
+ var data_list_details = data_list.SelectMany(x => x.Details).ToList();
+ foreach (var item in data_list_details)
+ {
+ var data = data_list.Where(x => x.Id == item.Fid).FirstOrDefault();
+
+ //2.1.1对比erp的物料信息
+ var erp_data = erp_list.Where(x => x.BillNo == data.SourceBillNo && x.MaterialId == item.MaterialId).FirstOrDefault();
+ if (erp_data != null)
+ {
+ //2.1.2修改数量
+ item.AccruedQty = erp_data.Qty;
+ erp_removeList.Add(erp_data);
+ }
+ }
+
+ //2.2.提交修改
+ var isSuccess = await _inStockTaskRepositories.UpdateRange(data_list, isTransaction);
+ if (!isSuccess)
+ return ResultList.ReFailure(ResultCodes.DateWriteError);
+
+ //2.3剔除:已修改的单据
+ foreach (var item in erp_removeList)
+ {
+ erp_list.Remove(item);
+ }
+ }
+
+ //3.wms任务单的来源单据编号不存在于erp中,那么就新增
+ if (erp_list.Count != 0)
+ {
+ var add_entitys = new List();
+ var current_billNos = erp_list.GroupBy(x => x.BillNo).Select(x => x.Key).ToList();
+ foreach (var item in current_billNos)
+ {
+ var dto = new InStockTask();
+ dto.SourceBillNo = item;
+ dto.Create(InstockType.Purchase);
+
+ //找到当前对应来源单据编号的集合数据
+ var current_erp_details = erp_list.Where(x => x.BillNo == item).ToList();
+ //给到dto的实体明细中
+ dto.Details = _mapper.Map>(current_erp_details);
+ add_entitys.Add(dto);
+ }
+ //3.1提交新增
+ var isSuccess = await _inStockTaskRepositories.AddRange(add_entitys, isTransaction);
+ if (!isSuccess)
+ return ResultList.ReFailure(ResultCodes.DateWriteError);
+ }
+
+ return Result.ReSuccess();
+ }
}
}