diff --git a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2
index 596f520b..87fd87fc 100644
Binary files a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 and b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 differ
diff --git a/src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskQueryInfoResponse.cs b/src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskQueryInfoResponse.cs
index 01815845..ddf32a57 100644
--- a/src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskQueryInfoResponse.cs
+++ b/src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskQueryInfoResponse.cs
@@ -85,5 +85,17 @@ namespace WMS.Web.Core.Dto.OutStockTask
/// 创建时间(erp那边的创建时间)
///
public string CreateTime { get; set; }
+ ///
+ /// 单位
+ ///
+ public string Unit { get; set; }
+ ///
+ /// 出库开始时间
+ ///
+ public string OutStockBeginTime { get; set; }
+ ///
+ /// 出库结束时间
+ ///
+ public string OutStockEndTime { get; set; }
}
}
diff --git a/src/WMS.Web.Domain/Entitys/OutStockTaskDetails.cs b/src/WMS.Web.Domain/Entitys/OutStockTaskDetails.cs
index d68aa89f..9098ba6b 100644
--- a/src/WMS.Web.Domain/Entitys/OutStockTaskDetails.cs
+++ b/src/WMS.Web.Domain/Entitys/OutStockTaskDetails.cs
@@ -61,7 +61,16 @@ namespace WMS.Web.Domain.Entitys
///
[Column("Remark")]
public string Remark { get; set; }
-
+ ///
+ /// 出库开始时间
+ ///
+ [Column("OutStockBeginTime")]
+ public DateTime? OutStockBeginTime { get; set; }
+ ///
+ /// 出库结束时间
+ ///
+ [Column("OutStockEndTime")]
+ public DateTime? OutStockEndTime { get; set; }
///
/// 出库 反写 任务单
@@ -74,6 +83,11 @@ namespace WMS.Web.Domain.Entitys
if ((this.AccruedQty - this.RealityQty) < qty)
return Result.ReFailure(ResultCodes.OutStockQtyError);
+ if (this.RealityQty <= 0)
+ this.OutStockBeginTime = DateTime.Now;
+
+ this.OutStockEndTime = DateTime.Now;
+
this.RealityQty = this.RealityQty + qty;
return Result.ReSuccess();
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/BoxRepositories.cs b/src/WMS.Web.Repositories/BoxRepositories.cs
index f37e4f65..690f3261 100644
--- a/src/WMS.Web.Repositories/BoxRepositories.cs
+++ b/src/WMS.Web.Repositories/BoxRepositories.cs
@@ -54,8 +54,13 @@ namespace WMS.Web.Repositories
{
var list = await _context.Box.Include(x => x.Details).Where(f => BoxBillNos.Contains(f.BoxBillNo)).ToListAsync();
var resList = _mapper.Map>(list);
+
//获取物料信息 显示物料三件套
var mIds = list.SelectMany(s => s.Details).Select(s => s.MaterialId).ToList();
+ foreach (var r in resList)
+ {
+ r.TotalQty = r.Details.Sum(s => s.Qty);
+ }
return resList;
}
diff --git a/src/WMS.Web.Repositories/OutStockTaskRepositories.cs b/src/WMS.Web.Repositories/OutStockTaskRepositories.cs
index 1651f5e2..81062606 100644
--- a/src/WMS.Web.Repositories/OutStockTaskRepositories.cs
+++ b/src/WMS.Web.Repositories/OutStockTaskRepositories.cs
@@ -247,14 +247,17 @@ namespace WMS.Web.Repositories
Status = s.order.Status.GetRemark(),
Type = s.order.Type.GetRemark(),
CreateTime = s.order.OperateTime.DateToStringSeconds(),
+ OutStockBeginTime= s.detail.OutStockBeginTime.DateToStringSeconds(),
+ OutStockEndTime = s.detail.OutStockEndTime.DateToStringSeconds(),
Stock = _singleDataService.GetSingleData(SingleAction.Stocks, _loginRepositories.CompanyId, s.detail.StockId),
SourceBillNo = s.order.SourceBillNo,
SaleBillNo = s.detail.SaleBillNo,
DeliveryOrg = "",
- ReceiptCustomer = _singleDataService.GetSingleData(SingleAction.Customers, _loginRepositories.CompanyId, s.order.ReceiptCustomerId),
+ ReceiptCustomer = "",
MaterialName = "",
MaterialNumber = "",
- Specifications = ""
+ Specifications = "",
+ Unit="",
#endregion
}).Skip((dto.PageNo - 1) * dto.PageSize).Take(dto.PageSize).ToListAsync();
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();
+ }
+
///
/// 盘点单列表
///