diff --git a/src/WMS.Web.Domain/Entitys/InStock.cs b/src/WMS.Web.Domain/Entitys/InStock.cs
index 0cac25f6..e7c2d3e7 100644
--- a/src/WMS.Web.Domain/Entitys/InStock.cs
+++ b/src/WMS.Web.Domain/Entitys/InStock.cs
@@ -179,11 +179,11 @@ namespace WMS.Web.Domain.Entitys
///
public void SyncFail(string remark, int erpDetailId, int operateId, SyncStatus syncStatus)
{
- var erpd = this.ErpDetails.Where(w=>w.ErpDetailId==erpDetailId).ToList();
- erpd.ForEach(det =>
+ var erpd = this.ErpDetails.Where(w => w.ErpDetailId == erpDetailId).ToList();
+ erpd.ForEach(det =>
{
det.SuccessSync = syncStatus;
- });
+ });
this.SuccessSync = SyncStatus.Fail;
this.Remark = remark;
this.OperateId = operateId;
diff --git a/src/WMS.Web.Domain/Services/InStockService.cs b/src/WMS.Web.Domain/Services/InStockService.cs
index 65695242..25e535b9 100644
--- a/src/WMS.Web.Domain/Services/InStockService.cs
+++ b/src/WMS.Web.Domain/Services/InStockService.cs
@@ -79,7 +79,7 @@ namespace WMS.Web.Domain.Services
///
public Task Sync(OperateRequest dto, LoginInDto loginInfo, bool isRepeatSync = true)
{
- var list = _inStockRepositories.GetList(dto.Ids).GetAwaiter().GetResult();
+ var list = _inStockRepositories.GetList(dto.Ids).GetAwaiter().GetResult();
var isSuccess = true;
if (isRepeatSync)
{
@@ -88,7 +88,7 @@ namespace WMS.Web.Domain.Services
isSuccess = _inStockRepositories.UpdateRange(list, true).GetAwaiter().GetResult();
}
Task.Run(async () =>
- {
+ {
foreach (var entity in list)
{
var res = await this.PurchaseInStock(entity, loginInfo);
@@ -149,7 +149,7 @@ namespace WMS.Web.Domain.Services
{
OperateRequest oRequest = new OperateRequest();
oRequest.Ids.Add(entity.Id);
- await Sync(oRequest, loginInfo,false);
+ await Sync(oRequest, loginInfo, false);
}
return Result.ReSuccess();
}
@@ -162,7 +162,7 @@ namespace WMS.Web.Domain.Services
///
public async Task ShelfNoPurchase(NoPurchaseShelfRequest dto, LoginInDto loginInDto)
{
- _logger.LogInformation($"非采购入库:{JsonConvert.SerializeObject(dto)} 操作人:{loginInDto.UserInfo.StaffId+loginInDto.UserInfo.Nickname}");
+ _logger.LogInformation($"非采购入库:{JsonConvert.SerializeObject(dto)} 操作人:{loginInDto.UserInfo.StaffId + loginInDto.UserInfo.Nickname}");
IDbContextTransaction _transaction = _basicsRepositories.GetTransaction();
bool isRollback = false;
bool isTransaction = false;
@@ -236,7 +236,7 @@ namespace WMS.Web.Domain.Services
box_task_detail.ErpDetailId = item.ErpDetailId;
box_task_detail.BoxMaterialQty = item.ReceiveQty;
box_task_detail.MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, item.MaterialNumber);
- box_task_detail.MaterialNumber = item.MaterialNumber;
+ box_task_detail.MaterialNumber = item.MaterialNumber;
box_task_detail.Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, item.MaterialNumber);
result.Details.Add(box_task_detail);
}
@@ -271,8 +271,8 @@ namespace WMS.Web.Domain.Services
//1.获取来源单
var taskIds = dto.Details.GroupBy(x => x.TaskId).Select(x => x.Key).ToList();
var tasks = await _inStockTaskRepositories.GetList(taskIds);
-
- if (tasks == null || tasks.Count==0)
+
+ if (tasks == null || tasks.Count == 0)
return Result.ReFailure(ResultCodes.SourceBillNoDateError);
// 组织集合
@@ -361,12 +361,12 @@ namespace WMS.Web.Domain.Services
//保存成功后:序列号跟踪流程添加
var serialNumber_result = await _serialNumberService.InStock(entity, loginInfo, isTransaction);
if (!serialNumber_result.IsSuccess)
- return Result.ReFailure(serialNumber_result);
+ return Result.ReFailure(serialNumber_result);
//箱库存变动
var boxInventoryResult = await _boxInventoryService.GenerateInStockBox(entity, isTransaction);
if (!boxInventoryResult.IsSuccess)
- return Result.ReFailure(boxInventoryResult);
+ return Result.ReFailure(boxInventoryResult);
return Result.ReSuccess(entity);
@@ -384,7 +384,7 @@ namespace WMS.Web.Domain.Services
_logger.LogInformation($"非采购上架-保存:{JsonConvert.SerializeObject(dto)} 操作人:{loginInfo.UserInfo.StaffId}");
//非采购入库的时候:不能扫同样的箱,按箱入库时候
- if (dto.Boxs != null && dto.Boxs.Count != 0 && dto.ShelfMethod==(int)ShelfMethod.Box)
+ if (dto.Boxs != null && dto.Boxs.Count != 0 && dto.ShelfMethod == (int)ShelfMethod.Box)
{
if (dto.Boxs.Select(x => x.BoxId).Distinct().Count() != dto.Boxs.Select(x => x.BoxId).Count())
return Result.ReFailure(ResultCodes.BoxOutStockTaskBoxError);
@@ -402,7 +402,7 @@ namespace WMS.Web.Domain.Services
//1.1.2判断上架数量不能超过应入库数量
var dtoDetails = dto.Boxs.SelectMany(x => x.Details).ToList();
- var dtoTotalDetails = dtoDetails.GroupBy(x => new { x.ErpDetailId,x.MaterialNumber }).Select(x => new { ErpDetailId = x.Key.ErpDetailId, MaterialNumber = x.Key.MaterialNumber, Qty = x.Sum(t => t.Qty) }).ToList();
+ var dtoTotalDetails = dtoDetails.GroupBy(x => new { x.ErpDetailId, x.MaterialNumber }).Select(x => new { ErpDetailId = x.Key.ErpDetailId, MaterialNumber = x.Key.MaterialNumber, Qty = x.Sum(t => t.Qty) }).ToList();
foreach (var item in task.Details)
{
var current_det = dtoTotalDetails.Where(x => x.ErpDetailId == item.ErpDetailId && x.MaterialNumber == item.MaterialNumber).FirstOrDefault();
@@ -617,7 +617,7 @@ namespace WMS.Web.Domain.Services
//1.1筛选出对应仓库的明细
- var task_details = task.Details.Where(x => x.StockCode == dto.StockCode && x.AccruedQty>0).ToList();
+ var task_details = task.Details.Where(x => x.StockCode == dto.StockCode && x.AccruedQty > 0).ToList();
//2.找到箱对应的物料信息:多个箱
var boxs = await _boxRepositories.GetEntityListByNos(dto.BoxBillNos);
@@ -627,7 +627,7 @@ namespace WMS.Web.Domain.Services
//3.判断箱里面对应的物料是否存在;不存在就报错
foreach (var item in boxs)
{
- if(item.Details==null || item.Details.Count==0)
+ if (item.Details == null || item.Details.Count == 0)
return Result.ReFailure(ResultCodes.BoxMateriaNoData);
}
@@ -692,7 +692,7 @@ namespace WMS.Web.Domain.Services
///
///
///
- private async Task PurchaseInStock(InStock entity, LoginInDto loginInfo)
+ private async Task PurchaseInStock(InStock entity, LoginInDto loginInfo)
{
_logger.LogInformation($"采购下推-同步:{JsonConvert.SerializeObject(entity)} 操作人:{loginInfo.UserInfo.StaffId}");
var scope = _serviceScopeFactory.CreateScope();
@@ -707,50 +707,40 @@ namespace WMS.Web.Domain.Services
var sc_erpService = scope.ServiceProvider.GetRequiredService();
//找到金蝶最新的采购订单数据
- var erp_purchase_result =await sc_erpService.BillQueryForPurchaseInStock(entity.ErpDetails.GroupBy(x=>x.SourceBillNo).Select(x=>x.Key).ToList());
+ var erp_purchase_result = await sc_erpService.BillQueryForPurchaseInStock(entity.ErpDetails.GroupBy(x => x.SourceBillNo).Select(x => x.Key).ToList());
if (!erp_purchase_result.IsSuccess)
return erp_purchase_result;
//然后刷选出对应金蝶明细和物料和wms的任务单的明细和物料是一致的就同步下推
foreach (var item in erpDetails_tags)
{
- var isHave= erp_purchase_result.Data.Where(x => x.ErpDetailId == item.ErpDetailId && x.MaterialNumber == item.MaterialNumber).Any();
+ var isHave = erp_purchase_result.Data.Where(x => x.ErpDetailId == item.ErpDetailId && x.MaterialNumber == item.MaterialNumber).Any();
if (isHave)
erpDetails.Add(item);
}
- try
+ foreach (var s in erpDetails)
{
- foreach (var s in erpDetails)
+ var erp_details = entity.ErpDetails
+ .Where(w => w.SourceBillNo.Equals(s)).Select(s => s.ErpDetailId).ToList();
+ var erpDto = new ErpPushDto()
{
- 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);
- 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 isSuccess = await sc_InStockRepositories.Update(entity, true);
- if (entity == null) return Result.ReFailure(ResultCodes.DateWriteError);
- return Result.ReSuccess();
+ 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);
+ 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);
}
- catch (Exception ex)
- {
- _logger.LogInformation($"采购下推-同步:错误:{JsonConvert.SerializeObject(entity)} 操作人:{loginInfo.UserInfo.StaffId}");
- return Result.ReFailure(ResultCodes.ErpSynsError);
- }
-
-
+ //最好一条一条执行,否则执行失败 但是金蝶那边又同步成功 就会造成数据比价乱
+ var isSuccess = await sc_InStockRepositories.Update(entity, true);
+ if (entity == null) return Result.ReFailure(ResultCodes.DateWriteError);
+ return Result.ReSuccess();
}
///
@@ -761,46 +751,55 @@ namespace WMS.Web.Domain.Services
///
///
private async Task<(Result result, SyncStatus syncStatus, string erpBillNo)> Push(ErpPushDto dto, InStockErpDetails erpDetail, string billNo, IErpService sc_erpService)
- {
+ {
+ try
+ {
+ //下推动作
+ var res = await sc_erpService.Push(dto);
+ if (!res.IsSuccess)
+ {
+ _logger.LogInformation($"入库单->下推失败 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId} 错误:{res.Message}");
+ return (Result.ReFailure(res.Message, res.Status), SyncStatus.Fail, "");
+ }
+ string id = res.Data;
+ var resPurchaseInStock = await sc_erpService.BillQueryForPurchaseInStock(id);
+ var purchaseInStock = resPurchaseInStock.Data;
+ purchaseInStock.Details[0].Qty = erpDetail.Qty;
+ string formId = dto.TargetFormId.ToString();
+ _logger.LogInformation($"入库单->开始同步金蝶 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId} 数据: {JsonConvert.SerializeObject(dto)}");
+ var res_s = await sc_erpService.Save(purchaseInStock, formId);
+ if (!res_s.IsSuccess)
+ {
+ _logger.LogInformation($"入库单->修改数量失败 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId} 错误:{res_s.Message}");
+ return (Result.ReFailure(res_s.Message, res_s.Status), SyncStatus.SubmitFail, id);
+ }
+ //提交
+ _logger.LogInformation($"入库单->保存成功 开始提交 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId}");
+ ErpOperateDto o_dto = new ErpOperateDto(formId, res_s.Data);//res_s.Data
+ var resSubmit = await sc_erpService.Submit(o_dto, formId);
+ if (!resSubmit.IsSuccess)
+ {
+ _logger.LogInformation($"入库单->提交失败 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId} 错误:{resSubmit.Message}");
+ return (resSubmit, SyncStatus.SubmitFail, o_dto.Numbers.First());
+ }
+ //审核
+ _logger.LogInformation($"入库单->提交成功 开始审核 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId}");
+ resSubmit = await sc_erpService.Audit(o_dto, formId);
+ if (!resSubmit.IsSuccess)
+ {
+ _logger.LogInformation($"入库单->审核失败 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId} 错误:{resSubmit.Message}");
+ return (resSubmit, SyncStatus.CheckFail, o_dto.Numbers.First());
+ }
+ _logger.LogInformation($"入库单->同步金蝶成功->单号:{billNo} erp明细Id:{erpDetail.ErpDetailId}");
+ return (Result.ReSuccess(), SyncStatus.Success, o_dto.Numbers.First());
+ }
+ catch (Exception ex)
+ {
+ _logger.LogInformation($"入库单-同步:错误:{billNo} erp明细Id:{erpDetail.ErpDetailId} 错误:{ex.Message}");
+ var result = Result.ReFailure(ex.Message, 50001);
+ return (result, SyncStatus.Fail, "");
+ }
- //下推动作
- var res = await sc_erpService.Push(dto);
- if (!res.IsSuccess)
- {
- _logger.LogInformation($"入库单->下推失败 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId} 错误:{res.Message}");
- return (Result.ReFailure(res.Message, res.Status), SyncStatus.Fail, "");
- }
- string id = res.Data;
- var resPurchaseInStock = await sc_erpService.BillQueryForPurchaseInStock(id);
- var purchaseInStock = resPurchaseInStock.Data;
- purchaseInStock.Details[0].Qty = erpDetail.Qty;
- string formId = dto.TargetFormId.ToString();
- _logger.LogInformation($"入库单->开始同步金蝶 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId} 数据: {JsonConvert.SerializeObject(dto)}");
- var res_s = await sc_erpService.Save(purchaseInStock, formId);
- if (!res_s.IsSuccess)
- {
- _logger.LogInformation($"入库单->修改数量失败 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId} 错误:{res_s.Message}");
- return (Result.ReFailure(res_s.Message, res_s.Status), SyncStatus.SubmitFail, id);
- }
- //提交
- _logger.LogInformation($"入库单->保存成功 开始提交 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId}");
- ErpOperateDto o_dto = new ErpOperateDto(formId, res_s.Data);//res_s.Data
- var resSubmit = await sc_erpService.Submit(o_dto, formId);
- if (!resSubmit.IsSuccess)
- {
- _logger.LogInformation($"入库单->提交失败 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId} 错误:{resSubmit.Message}");
- return (resSubmit, SyncStatus.SubmitFail, o_dto.Numbers.First());
- }
- //审核
- _logger.LogInformation($"入库单->提交成功 开始审核 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId}");
- resSubmit = await sc_erpService.Audit(o_dto, formId);
- if (!resSubmit.IsSuccess)
- {
- _logger.LogInformation($"入库单->审核失败 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId} 错误:{resSubmit.Message}");
- return (resSubmit, SyncStatus.CheckFail, o_dto.Numbers.First());
- }
- _logger.LogInformation($"入库单->同步金蝶成功->单号:{billNo} erp明细Id:{erpDetail.ErpDetailId}");
- return (Result.ReSuccess(), SyncStatus.Success, o_dto.Numbers.First());
}
diff --git a/src/WMS.Web.Domain/Services/Public/LoginService.cs b/src/WMS.Web.Domain/Services/Public/LoginService.cs
index 40a42927..cf9b5990 100644
--- a/src/WMS.Web.Domain/Services/Public/LoginService.cs
+++ b/src/WMS.Web.Domain/Services/Public/LoginService.cs
@@ -173,8 +173,8 @@ namespace WMS.Web.Domain.Services.Public
loginInfo.TokenInfo = token;
//var ops_login_time = token.Expired.AddDays(1) - DateTime.Now;//用于正式
-
- _redisClientService.SetStringKey($"wms_login_{token.Token}", loginInfo, token.Expired.TimeOfDay);
+ var ops_login_time = token.Expired - DateTime.Now;//用于正式
+ _redisClientService.SetStringKey($"wms_login_{token.Token}", loginInfo, ops_login_time);
_logger.LogInformation($"登录信息:用户人员信息->{staffName}({r.UserInfo.StaffId}),公司名称->{r.UserInfo.CompanyName}"+",过期时间:"+token.Expired.ToString("yyyy-MM-dd HH:mm:ss"));
diff --git a/src/WMS.Web.Domain/Values/SyncStatus.cs b/src/WMS.Web.Domain/Values/SyncStatus.cs
index 964430ed..b6618305 100644
--- a/src/WMS.Web.Domain/Values/SyncStatus.cs
+++ b/src/WMS.Web.Domain/Values/SyncStatus.cs
@@ -34,6 +34,6 @@ namespace WMS.Web.Domain.Values
/// 同步中
///
[EnumRemark("同步中")]
- SyncIng = 4
+ SyncIng = 4,
}
}