盘盈盘亏同步
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user