盘盈盘亏同步

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;
}
/// <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>
public void GenerateNo()

View File

@@ -23,6 +23,6 @@ namespace WMS.Web.Domain.IService
//盘盈
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);
/// <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<TakeStock>> GetEntityList(List<int> ids);
}
}

View File

@@ -14,6 +14,8 @@ namespace WMS.Web.Domain.Mappers
{
CreateMap<SaveTakeStockRequest, TakeStockDetails>()
.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>
public async Task<Result> Save(List<SaveTakeStockRequest> dto, LoginInDto loginInfo)
{
TakeStock entity = new TakeStock();
//entity.Details = _mapper.Map<List<TakeStockDetails>>(dto);
List<TakeStock> list = _mapper.Map<List<TakeStock>>(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
/// </summary>
/// <param name="dto"></param>
/// <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>
/// <param name="entity"></param>
/// <returns></returns>
@@ -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<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>
/// <param name="entity"></param>
/// <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);
@@ -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<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>