diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
index 7bd4a50d..54dd860f 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
@@ -788,6 +788,13 @@
+
+
+ 全部失败
+
+
+
+
重传
diff --git a/src/WMS.Web.Domain/Entitys/InStock.cs b/src/WMS.Web.Domain/Entitys/InStock.cs
index e7c2d3e7..1bc6c4ea 100644
--- a/src/WMS.Web.Domain/Entitys/InStock.cs
+++ b/src/WMS.Web.Domain/Entitys/InStock.cs
@@ -190,6 +190,19 @@ namespace WMS.Web.Domain.Entitys
this.SyncTime = DateTime.Now;
}
+ ///
+ /// 全部失败
+ ///
+ ///
+ ///
+ public void SyncFailAll(string remark, int operateId)
+ {
+ this.SuccessSync = SyncStatus.Fail;
+ this.Remark = remark;
+ this.OperateId = operateId;
+ this.SyncTime = DateTime.Now;
+ }
+
///
/// 重传
///
diff --git a/src/WMS.Web.Domain/Services/InStockService.cs b/src/WMS.Web.Domain/Services/InStockService.cs
index a5f46f5a..4b7a3c7a 100644
--- a/src/WMS.Web.Domain/Services/InStockService.cs
+++ b/src/WMS.Web.Domain/Services/InStockService.cs
@@ -200,7 +200,7 @@ namespace WMS.Web.Domain.Services
return Result.ReFailure(ResultCodes.Box_No_Task_Data);
//1.先判断:箱号已经绑定了入库任务单中;备注:其它单据收的提示
- var tast_box = await _inStockTaskBoxRepositories.GetBy(dto.BoxBillNo,dto.TaskId);
+ var tast_box = await _inStockTaskBoxRepositories.GetBy(dto.BoxBillNo, dto.TaskId);
if (tast_box == null)
return Result.ReFailure(ResultCodes.Box_NoBind_Task_Data);
@@ -316,17 +316,17 @@ namespace WMS.Web.Domain.Services
//1.获取最新的erp明细信息
var billNo_new = await _inStockRepositories.GetLastBillNo();
//erp明细:生成批号
- int new_firstBillNo = billNo_new == null ? 0 : (billNo_new.FirstBillNo.HasValue? billNo_new.FirstBillNo.Value:0);
- int new_lastBillNo = billNo_new == null ? 0 : (billNo_new.LastBillNo.HasValue? billNo_new.LastBillNo.Value:0);
- entity.ErpDetails.ForEach(x =>
+ int new_firstBillNo = billNo_new == null ? 0 : (billNo_new.FirstBillNo.HasValue ? billNo_new.FirstBillNo.Value : 0);
+ int new_lastBillNo = billNo_new == null ? 0 : (billNo_new.LastBillNo.HasValue ? billNo_new.LastBillNo.Value : 0);
+ entity.ErpDetails.ForEach(x =>
{
//物料必须是启动了批号管理才生成批号
- var mat= materials.Where(m => m.MaterialNumber == x.MaterialNumber && m.OrgCode == entity.OrgCode && m.IsBatchManage==true).FirstOrDefault();
+ var mat = materials.Where(m => m.MaterialNumber == x.MaterialNumber && m.OrgCode == entity.OrgCode && m.IsBatchManage == true).FirstOrDefault();
if (mat != null)
{
x.GenerateBatchBillNo(new_firstBillNo, new_lastBillNo, mat.IsBatchManage);
- new_firstBillNo = x.FirstBillNo??0;
- new_lastBillNo = x.LastBillNo??0;
+ new_firstBillNo = x.FirstBillNo ?? 0;
+ new_lastBillNo = x.LastBillNo ?? 0;
}
});
@@ -584,7 +584,7 @@ namespace WMS.Web.Domain.Services
foreach (var item in dto.Boxs)
{
var taskBox = _mapper.Map(item);
- taskBox.TaskId = entity.Id;
+ taskBox.TaskId = entity.Id;
taskBox.Receiver(staffId);
var current_dto_box_dets = boxEntitys.Where(x => x.Id == item.BoxId).SelectMany(x => x.Details).ToList();
taskBox.Details = _mapper.Map>(current_dto_box_dets);
@@ -748,24 +748,32 @@ namespace WMS.Web.Domain.Services
erpDetails.Add(item);
}
- foreach (var s in erpDetails)
+ if (erpDetails.Count != 0)
{
- var erp_details = entity.ErpDetails
- .Where(w => w.SourceBillNo.Equals(s)).Select(s => s.ErpDetailId).ToList();
- var erpDto = new ErpPushDto()
+ foreach (var s in erpDetails)
{
- RuleId = "PUR_PurchaseOrder-STK_InStock",//转换规则内码 采购订单下推采购入库单
- FormId = FormIdParam.PUR_PurchaseOrder.ToString(),
- TargetFormId = FormIdParam.STK_InStock.ToString(),
- DetailsId = s.ErpDetailId.ToString(),
- IsDraftWhenSaveFail = true//是否需要暂存
- };
- //下推金蝶
- var res = await this.Push(erpDto, s, entity.BillNo, sc_erpService, sc_inStockRepositories);
- if (res.result.IsSuccess)
- entity.SyncSuccess(s.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.erpBillNo);
- else
- entity.SyncFail(res.result.Message, s.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.syncStatus);
+ var erp_details = entity.ErpDetails
+ .Where(w => w.SourceBillNo.Equals(s)).Select(s => s.ErpDetailId).ToList();
+ var erpDto = new ErpPushDto()
+ {
+ RuleId = "PUR_PurchaseOrder-STK_InStock",//转换规则内码 采购订单下推采购入库单
+ FormId = FormIdParam.PUR_PurchaseOrder.ToString(),
+ TargetFormId = FormIdParam.STK_InStock.ToString(),
+ DetailsId = s.ErpDetailId.ToString(),
+ IsDraftWhenSaveFail = true//是否需要暂存
+ };
+ //下推金蝶
+ var res = await this.Push(erpDto, s, entity.BillNo, sc_erpService, sc_inStockRepositories);
+ if (res.result.IsSuccess)
+ entity.SyncSuccess(s.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.erpBillNo);
+ else
+ entity.SyncFail(res.result.Message, s.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.syncStatus);
+ }
+ }
+ else
+ {
+ erpDetails_tags.ForEach(x => { x.SuccessSync = SyncStatus.Fail; });
+ entity.SyncFailAll("同步金蝶失败,金蝶存在已审核的采购入库单", loginInfo?.UserInfo?.StaffId ?? 0);
}
//最好一条一条执行,否则执行失败 但是金蝶那边又同步成功 就会造成数据比价乱
var isSuccess = await sc_InStockRepositories.Update(entity, true);
@@ -824,7 +832,7 @@ namespace WMS.Web.Domain.Services
purchaseInStock.Details[0].Lot = new ErpLotSaveDto();
purchaseInStock.Details[0].Lot.Number = erpDetail.BatchBillNo;
}
-
+
_logger.LogInformation($"入库单->下推成功 开始保存 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId} 数据: {JsonConvert.SerializeObject(purchaseInStock)}");
var res_s = await sc_erpService.Save(purchaseInStock, formId);
if (!res_s.IsSuccess)