From 063013792005c00c703ea0540846505a1ad9b6ba Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Tue, 7 Nov 2023 10:57:46 +0800
Subject: [PATCH] =?UTF-8?q?=E7=9B=98=E7=9B=88=E7=9B=98=E4=BA=8F=E5=90=8C?=
=?UTF-8?q?=E6=AD=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/WMS.Web.Domain/Entitys/TakeStock.cs | 18 +++++
.../IService/ITakeStockService.cs | 2 +-
.../Infrastructure/ITakeStockRepositories.cs | 11 +++
src/WMS.Web.Domain/Mappers/TakeStockMapper.cs | 2 +
.../Services/TakeStockService.cs | 48 +++++++----
.../TakeStockRepositories.cs | 80 +++++++++++++++++++
6 files changed, 144 insertions(+), 17 deletions(-)
diff --git a/src/WMS.Web.Domain/Entitys/TakeStock.cs b/src/WMS.Web.Domain/Entitys/TakeStock.cs
index eae815ab..e0808357 100644
--- a/src/WMS.Web.Domain/Entitys/TakeStock.cs
+++ b/src/WMS.Web.Domain/Entitys/TakeStock.cs
@@ -96,6 +96,24 @@ namespace WMS.Web.Domain.Entitys
this.Date = DateTime.Now;
}
///
+ /// 同步金蝶结果
+ ///
+ ///
+ ///
+ public void Sync(bool isSuccess,string remark)
+ {
+ if (isSuccess)
+ {
+ this.SuccessSync = true;
+ this.Remark = "";
+ }
+ else
+ {
+ this.SuccessSync = false;
+ this.Remark = remark;
+ }
+ }
+ ///
/// 生成单据号
///
public void GenerateNo()
diff --git a/src/WMS.Web.Domain/IService/ITakeStockService.cs b/src/WMS.Web.Domain/IService/ITakeStockService.cs
index 762d2a8b..07ac3db1 100644
--- a/src/WMS.Web.Domain/IService/ITakeStockService.cs
+++ b/src/WMS.Web.Domain/IService/ITakeStockService.cs
@@ -23,6 +23,6 @@ namespace WMS.Web.Domain.IService
//盘盈
Task Profit(TakeStock entity);
//盘亏
- Task Loss(TakeStock entity);
+ Task Loss_Profit(TakeStock entity);
}
}
diff --git a/src/WMS.Web.Domain/Infrastructure/ITakeStockRepositories.cs b/src/WMS.Web.Domain/Infrastructure/ITakeStockRepositories.cs
index c6d25f56..8b3f3a71 100644
--- a/src/WMS.Web.Domain/Infrastructure/ITakeStockRepositories.cs
+++ b/src/WMS.Web.Domain/Infrastructure/ITakeStockRepositories.cs
@@ -11,7 +11,18 @@ namespace WMS.Web.Domain.Infrastructure
{
// 新增
Task Add(TakeStock entity, bool isTransaction = true);
+ ///
+ /// 批量添加
+ ///
+ ///
+ ///
+ ///
+ Task AddRange(List entitys, bool isTransaction = true);
+ //编辑
+ Task Edit(TakeStock entity, bool isTransaction = true);
// 获取列表
Task<(List list, int total)> GetListAsync(TakeStockQueryRequest dto);
+ /// 查询实体集合
+ Task> GetEntityList(List ids);
}
}
diff --git a/src/WMS.Web.Domain/Mappers/TakeStockMapper.cs b/src/WMS.Web.Domain/Mappers/TakeStockMapper.cs
index 7019b7b0..f8b928e6 100644
--- a/src/WMS.Web.Domain/Mappers/TakeStockMapper.cs
+++ b/src/WMS.Web.Domain/Mappers/TakeStockMapper.cs
@@ -14,6 +14,8 @@ namespace WMS.Web.Domain.Mappers
{
CreateMap()
.ForMember(x => x.ResultType, ops => ops.MapFrom(x => (x.AfterQty - x.BeforeQty) >0? TakeStockType.Profit: TakeStockType.Loss));
+ CreateMap()
+ .ForMember(x => x.ResultType, ops => ops.MapFrom(x => (x.AfterQty - x.BeforeQty) > 0 ? TakeStockType.Profit : TakeStockType.Loss));
}
}
}
diff --git a/src/WMS.Web.Domain/Services/TakeStockService.cs b/src/WMS.Web.Domain/Services/TakeStockService.cs
index 5f95edd9..361b5b2f 100644
--- a/src/WMS.Web.Domain/Services/TakeStockService.cs
+++ b/src/WMS.Web.Domain/Services/TakeStockService.cs
@@ -53,9 +53,9 @@ namespace WMS.Web.Domain.Services
///
public async Task Save(List dto, LoginInDto loginInfo)
{
- TakeStock entity = new TakeStock();
- //entity.Details = _mapper.Map>(dto);
- entity.Create(loginInfo.UserInfo.StaffId);
+ List list = _mapper.Map>(dto);
+ foreach (var entity in list)
+ entity.Create(loginInfo.UserInfo.StaffId);
//需要填写序列号
//需要修改库存
@@ -63,14 +63,18 @@ namespace WMS.Web.Domain.Services
IDbContextTransaction _transaction = _transactionRepositories.GetTransaction();
bool isRollback = false;
bool isSuccess = true;
- entity = await _takeStockRepositories.Add(entity, false);
- if (entity == null) isRollback = true;
+ isSuccess = await _takeStockRepositories.AddRange(list, false);
+ if (!isSuccess) isRollback = true;
//提交事务
isSuccess = _transactionRepositories.CommitTransaction(isRollback, _transaction);
if (!isSuccess)
return Result.ReFailure(ResultCodes.DateWriteError);
+ //同步金蝶
+ foreach (var entity in list)
+ await Loss_Profit(entity);
+
return Result.ReSuccess();
}
@@ -79,12 +83,17 @@ namespace WMS.Web.Domain.Services
///
///
///
- public Task Sync(OperateRequest dto)
+ public async Task Sync(OperateRequest dto)
{
- return Task.FromResult(Result.ReSuccess());
+ var list = await _takeStockRepositories.GetEntityList(dto.Ids);
+ list = list.Where(w => w.SuccessSync == false).ToList();
+ foreach (var entity in list)
+ await Loss_Profit(entity);
+
+ return Result.ReSuccess();
}
///
- /// 盘盈
+ /// 作废
///
///
///
@@ -113,7 +122,7 @@ namespace WMS.Web.Domain.Services
AfterQty = entity.AfterQty,
FinalQty = entity.FinalQty,
Fnote = ""
- }) ;
+ });
ErpTakeStockSaveDto dto = new ErpTakeStockSaveDto()
{
BillNo = entity.BillNo,
@@ -124,14 +133,17 @@ namespace WMS.Web.Domain.Services
};
#endregion
- return await _erpService.Sync(dto, FormIdParam.STK_StockCountGain.ToString());
+ var resSync = await _erpService.Sync(dto, FormIdParam.STK_StockCountGain.ToString());
+ entity.Sync(resSync.IsSuccess, resSync.Message);
+ await _takeStockRepositories.Edit(entity, true);
+ return res;
}
///
- /// 盘亏
+ /// 盘盈盘亏同步金蝶
///
///
///
- public async Task Loss(TakeStock entity)
+ public async Task Loss_Profit(TakeStock entity)
{
//获取金蝶仓库仓位编码
var stockCode = _singleDataService.GetSingleDataCode(SingleAction.Stocks, _loginRepositories.CompanyId, entity.StockId);
@@ -156,18 +168,22 @@ namespace WMS.Web.Domain.Services
AfterQty = entity.AfterQty,
FinalQty = entity.FinalQty,
Fnote = ""
- }) ;
+ });
ErpTakeStockSaveDto dto = new ErpTakeStockSaveDto()
{
BillNo = entity.BillNo,
StockOrgId = stock.OrgId.ToString(),
- Type = "PK01_SYS",
+ Type = entity.ResultType == TakeStockType.Loss ? "PK01_SYS" : "PY01_SYS",
Date = entity.Date,
Details = detils
};
#endregion
-
- return await _erpService.Sync(dto, FormIdParam.STK_StockCountLoss.ToString());
+ //判断盘盈盘亏
+ string formId = entity.ResultType == TakeStockType.Loss ? FormIdParam.STK_StockCountLoss.ToString() : FormIdParam.STK_StockCountGain.ToString();
+ var resSync = await _erpService.Sync(dto, formId);
+ entity.Sync(resSync.IsSuccess, resSync.Message);
+ await _takeStockRepositories.Edit(entity, true);
+ return res;
}
}
}
diff --git a/src/WMS.Web.Repositories/TakeStockRepositories.cs b/src/WMS.Web.Repositories/TakeStockRepositories.cs
index e33d82af..913d4c9c 100644
--- a/src/WMS.Web.Repositories/TakeStockRepositories.cs
+++ b/src/WMS.Web.Repositories/TakeStockRepositories.cs
@@ -70,6 +70,86 @@ namespace WMS.Web.Repositories
}
}
+ ///
+ /// 批量添加
+ ///
+ ///
+ ///
+ ///
+ public async Task AddRange(List entitys, bool isTransaction = true)
+ {
+ IDbContextTransaction _transaction = null;
+ if (isTransaction)
+ _transaction = _context.Database.BeginTransaction();
+ try
+ {
+ if (entitys != null && entitys.Count != 0)
+ {
+ await _context.TakeStock.AddRangeAsync(entitys);
+ await _context.SaveChangesAsync();
+ foreach (var item in entitys)
+ {
+ if (string.IsNullOrEmpty(item.BillNo))
+ //自动生成单据编号
+ item.GenerateNo();
+ }
+ await _context.SaveChangesAsync();
+ }
+ if (_transaction != null)
+ _transaction.Commit();
+ return true;
+ }
+ catch
+ {
+ if (_transaction != null)
+ _transaction.Rollback();
+ return false;
+ }
+ }
+
+ ///
+ /// 编辑
+ ///
+ ///
+ ///
+ ///
+ public async Task Edit(TakeStock entity, bool isTransaction = true)
+ {
+ IDbContextTransaction _transaction = null;
+ if (isTransaction)
+ _transaction = _context.Database.BeginTransaction();
+
+ try
+ {
+ var res = await _context.TakeStock
+ .FirstOrDefaultAsync(f => f.Id == entity.Id);
+ if (res == null) return null;
+
+ _mapper.Map(entity, res);
+ await _context.SaveChangesAsync();
+
+ if (_transaction != null)
+ _transaction.Commit();
+
+ return res;
+ }
+ catch (Exception)
+ {
+ if (_transaction != null)
+ _transaction.Rollback();
+ return null;
+ }
+ }
+
+ public async Task> GetEntityList(List ids)
+ {
+ var res = await _context.TakeStock
+ .Where(f => ids.Contains(f.Id))
+ .ToListAsync();
+
+ return res.Clone();
+ }
+
///
/// 盘点单列表
///