盘盈盘亏同步

This commit is contained in:
18942506660
2023-11-07 10:57:46 +08:00
parent 0a9d34ba9c
commit 0630137920
6 changed files with 144 additions and 17 deletions

View File

@@ -96,6 +96,24 @@ namespace WMS.Web.Domain.Entitys
this.Date = DateTime.Now; this.Date = DateTime.Now;
} }
/// <summary> /// <summary>
/// 同步金蝶结果
/// </summary>
/// <param name="isSuccess"></param>
/// <param name="remark"></param>
public void Sync(bool isSuccess,string remark)
{
if (isSuccess)
{
this.SuccessSync = true;
this.Remark = "";
}
else
{
this.SuccessSync = false;
this.Remark = remark;
}
}
/// <summary>
/// 生成单据号 /// 生成单据号
/// </summary> /// </summary>
public void GenerateNo() public void GenerateNo()

View File

@@ -23,6 +23,6 @@ namespace WMS.Web.Domain.IService
//盘盈 //盘盈
Task<Result> Profit(TakeStock entity); Task<Result> Profit(TakeStock entity);
//盘亏 //盘亏
Task<Result> Loss(TakeStock entity); Task<Result> Loss_Profit(TakeStock entity);
} }
} }

View File

@@ -11,7 +11,18 @@ namespace WMS.Web.Domain.Infrastructure
{ {
// 新增 // 新增
Task<TakeStock> Add(TakeStock entity, bool isTransaction = true); Task<TakeStock> Add(TakeStock entity, bool isTransaction = true);
/// <summary>
/// 批量添加
/// </summary>
/// <param name="entitys"></param>
/// <param name="isTransaction"></param>
/// <returns></returns>
Task<bool> AddRange(List<TakeStock> entitys, bool isTransaction = true);
//编辑
Task<TakeStock> Edit(TakeStock entity, bool isTransaction = true);
// 获取列表 // 获取列表
Task<(List<TakeStockQueryInfoResponse> list, int total)> GetListAsync(TakeStockQueryRequest dto); Task<(List<TakeStockQueryInfoResponse> list, int total)> GetListAsync(TakeStockQueryRequest dto);
/// 查询实体集合
Task<List<TakeStock>> GetEntityList(List<int> ids);
} }
} }

View File

@@ -14,6 +14,8 @@ namespace WMS.Web.Domain.Mappers
{ {
CreateMap<SaveTakeStockRequest, TakeStockDetails>() CreateMap<SaveTakeStockRequest, TakeStockDetails>()
.ForMember(x => x.ResultType, ops => ops.MapFrom(x => (x.AfterQty - x.BeforeQty) >0? TakeStockType.Profit: TakeStockType.Loss)); .ForMember(x => x.ResultType, ops => ops.MapFrom(x => (x.AfterQty - x.BeforeQty) >0? TakeStockType.Profit: TakeStockType.Loss));
CreateMap<SaveTakeStockRequest, TakeStock>()
.ForMember(x => x.ResultType, ops => ops.MapFrom(x => (x.AfterQty - x.BeforeQty) > 0 ? TakeStockType.Profit : TakeStockType.Loss));
} }
} }
} }

View File

@@ -53,8 +53,8 @@ namespace WMS.Web.Domain.Services
/// <returns></returns> /// <returns></returns>
public async Task<Result> Save(List<SaveTakeStockRequest> dto, LoginInDto loginInfo) public async Task<Result> Save(List<SaveTakeStockRequest> dto, LoginInDto loginInfo)
{ {
TakeStock entity = new TakeStock(); List<TakeStock> list = _mapper.Map<List<TakeStock>>(dto);
//entity.Details = _mapper.Map<List<TakeStockDetails>>(dto); foreach (var entity in list)
entity.Create(loginInfo.UserInfo.StaffId); entity.Create(loginInfo.UserInfo.StaffId);
//需要填写序列号 //需要填写序列号
@@ -63,14 +63,18 @@ namespace WMS.Web.Domain.Services
IDbContextTransaction _transaction = _transactionRepositories.GetTransaction(); IDbContextTransaction _transaction = _transactionRepositories.GetTransaction();
bool isRollback = false; bool isRollback = false;
bool isSuccess = true; bool isSuccess = true;
entity = await _takeStockRepositories.Add(entity, false); isSuccess = await _takeStockRepositories.AddRange(list, false);
if (entity == null) isRollback = true; if (!isSuccess) isRollback = true;
//提交事务 //提交事务
isSuccess = _transactionRepositories.CommitTransaction(isRollback, _transaction); isSuccess = _transactionRepositories.CommitTransaction(isRollback, _transaction);
if (!isSuccess) if (!isSuccess)
return Result.ReFailure(ResultCodes.DateWriteError); return Result.ReFailure(ResultCodes.DateWriteError);
//同步金蝶
foreach (var entity in list)
await Loss_Profit(entity);
return Result.ReSuccess(); return Result.ReSuccess();
} }
@@ -79,12 +83,17 @@ namespace WMS.Web.Domain.Services
/// </summary> /// </summary>
/// <param name="dto"></param> /// <param name="dto"></param>
/// <returns></returns> /// <returns></returns>
public Task<Result> Sync(OperateRequest dto) public async Task<Result> 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();
} }
/// <summary> /// <summary>
/// 盘盈 /// 作废
/// </summary> /// </summary>
/// <param name="entity"></param> /// <param name="entity"></param>
/// <returns></returns> /// <returns></returns>
@@ -113,7 +122,7 @@ namespace WMS.Web.Domain.Services
AfterQty = entity.AfterQty, AfterQty = entity.AfterQty,
FinalQty = entity.FinalQty, FinalQty = entity.FinalQty,
Fnote = "" Fnote = ""
}) ; });
ErpTakeStockSaveDto dto = new ErpTakeStockSaveDto() ErpTakeStockSaveDto dto = new ErpTakeStockSaveDto()
{ {
BillNo = entity.BillNo, BillNo = entity.BillNo,
@@ -124,14 +133,17 @@ namespace WMS.Web.Domain.Services
}; };
#endregion #endregion
return await _erpService.Sync<ErpTakeStockSaveDto>(dto, FormIdParam.STK_StockCountGain.ToString()); var resSync = await _erpService.Sync<ErpTakeStockSaveDto>(dto, FormIdParam.STK_StockCountGain.ToString());
entity.Sync(resSync.IsSuccess, resSync.Message);
await _takeStockRepositories.Edit(entity, true);
return res;
} }
/// <summary> /// <summary>
/// 盘 /// 盘盈盘亏同步金蝶
/// </summary> /// </summary>
/// <param name="entity"></param> /// <param name="entity"></param>
/// <returns></returns> /// <returns></returns>
public async Task<Result> Loss(TakeStock entity) public async Task<Result> Loss_Profit(TakeStock entity)
{ {
//获取金蝶仓库仓位编码 //获取金蝶仓库仓位编码
var stockCode = _singleDataService.GetSingleDataCode(SingleAction.Stocks, _loginRepositories.CompanyId, entity.StockId); var stockCode = _singleDataService.GetSingleDataCode(SingleAction.Stocks, _loginRepositories.CompanyId, entity.StockId);
@@ -156,18 +168,22 @@ namespace WMS.Web.Domain.Services
AfterQty = entity.AfterQty, AfterQty = entity.AfterQty,
FinalQty = entity.FinalQty, FinalQty = entity.FinalQty,
Fnote = "" Fnote = ""
}) ; });
ErpTakeStockSaveDto dto = new ErpTakeStockSaveDto() ErpTakeStockSaveDto dto = new ErpTakeStockSaveDto()
{ {
BillNo = entity.BillNo, BillNo = entity.BillNo,
StockOrgId = stock.OrgId.ToString(), StockOrgId = stock.OrgId.ToString(),
Type = "PK01_SYS", Type = entity.ResultType == TakeStockType.Loss ? "PK01_SYS" : "PY01_SYS",
Date = entity.Date, Date = entity.Date,
Details = detils Details = detils
}; };
#endregion #endregion
//判断盘盈盘亏
return await _erpService.Sync<ErpTakeStockSaveDto>(dto, FormIdParam.STK_StockCountLoss.ToString()); string formId = entity.ResultType == TakeStockType.Loss ? FormIdParam.STK_StockCountLoss.ToString() : FormIdParam.STK_StockCountGain.ToString();
var resSync = await _erpService.Sync<ErpTakeStockSaveDto>(dto, formId);
entity.Sync(resSync.IsSuccess, resSync.Message);
await _takeStockRepositories.Edit(entity, true);
return res;
} }
} }
} }

View File

@@ -70,6 +70,86 @@ namespace WMS.Web.Repositories
} }
} }
/// <summary>
/// 批量添加
/// </summary>
/// <param name="entitys"></param>
/// <param name="isTransaction"></param>
/// <returns></returns>
public async Task<bool> AddRange(List<TakeStock> 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;
}
}
/// <summary>
/// 编辑
/// </summary>
/// <param name="entity"></param>
/// <param name="isTransaction"></param>
/// <returns></returns>
public async Task<TakeStock> 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<List<TakeStock>> GetEntityList(List<int> ids)
{
var res = await _context.TakeStock
.Where(f => ids.Contains(f.Id))
.ToListAsync();
return res.Clone();
}
/// <summary> /// <summary>
/// 盘点单列表 /// 盘点单列表
/// </summary> /// </summary>