盘点支持更换仓位
This commit is contained in:
Binary file not shown.
@@ -2498,6 +2498,12 @@
|
|||||||
仓位
|
仓位
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:WMS.Web.Domain.Entitys.TakeStockDetails.Old_SubStockCode">
|
||||||
|
<summary>
|
||||||
|
老仓位(如果更好了仓位 这里就是原有仓位)
|
||||||
|
如果没有更换仓位 那老仓位和新仓位就是一样的值
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:WMS.Web.Domain.Entitys.TakeStockDetails.Erp_SubStockCode">
|
<member name="P:WMS.Web.Domain.Entitys.TakeStockDetails.Erp_SubStockCode">
|
||||||
<summary>
|
<summary>
|
||||||
子仓库(跟金蝶交互字段)
|
子仓库(跟金蝶交互字段)
|
||||||
@@ -3434,7 +3440,7 @@
|
|||||||
<param name="isTransaction"></param>
|
<param name="isTransaction"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:WMS.Web.Domain.IService.IBoxInventoryService.GenerateTakeBox(System.Collections.Generic.List{WMS.Web.Domain.Entitys.TakeStock},System.Collections.Generic.List{WMS.Web.Core.Dto.Inventory.SerialNumbersBoxInventoryDto},System.Boolean)">
|
<member name="M:WMS.Web.Domain.IService.IBoxInventoryService.GenerateTakeBox(System.Collections.Generic.List{WMS.Web.Domain.Entitys.TakeStock},System.Collections.Generic.List{WMS.Web.Core.Dto.Inventory.SerialNumbersBoxInventoryDto},System.Boolean,System.Boolean)">
|
||||||
<summary>
|
<summary>
|
||||||
盘点-箱库存的变更
|
盘点-箱库存的变更
|
||||||
</summary>
|
</summary>
|
||||||
@@ -4888,7 +4894,7 @@
|
|||||||
<param name="isTransaction"></param>
|
<param name="isTransaction"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:WMS.Web.Domain.Services.BoxInventoryService.GenerateTakeBox(System.Collections.Generic.List{WMS.Web.Domain.Entitys.TakeStock},System.Collections.Generic.List{WMS.Web.Core.Dto.Inventory.SerialNumbersBoxInventoryDto},System.Boolean)">
|
<member name="M:WMS.Web.Domain.Services.BoxInventoryService.GenerateTakeBox(System.Collections.Generic.List{WMS.Web.Domain.Entitys.TakeStock},System.Collections.Generic.List{WMS.Web.Core.Dto.Inventory.SerialNumbersBoxInventoryDto},System.Boolean,System.Boolean)">
|
||||||
<summary>
|
<summary>
|
||||||
盘点单-箱库存的变更
|
盘点单-箱库存的变更
|
||||||
</summary>
|
</summary>
|
||||||
@@ -6508,6 +6514,13 @@
|
|||||||
<param name="dto"></param>
|
<param name="dto"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.TakeStockService.GetUpdateSubStockTakeStock(System.Collections.Generic.List{WMS.Web.Core.Dto.TakeStock.SaveTakeStockRequest},WMS.Web.Core.Dto.Login.LoginInDto,WMS.Web.Domain.Entitys.BoxInventory)">
|
||||||
|
<summary>
|
||||||
|
盘点更换仓位组装盘点单结构,用来调用即时库存
|
||||||
|
</summary>
|
||||||
|
<param name="dto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="T:WMS.Web.Domain.TimedJob.ErpBaseDataSyncJob">
|
<member name="T:WMS.Web.Domain.TimedJob.ErpBaseDataSyncJob">
|
||||||
<summary>
|
<summary>
|
||||||
erp基础数据-同步定时任务
|
erp基础数据-同步定时任务
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ namespace WMS.Web.Domain.IService
|
|||||||
/// <param name="dtoDatas"></param>
|
/// <param name="dtoDatas"></param>
|
||||||
/// <param name="isTransaction"></param>
|
/// <param name="isTransaction"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<Result> GenerateTakeBox(List<TakeStock> dtoDatas, List<SerialNumbersBoxInventoryDto> serNubBoxDto, bool isTransaction);
|
Task<Result> GenerateTakeBox(List<TakeStock> dtoDatas, List<SerialNumbersBoxInventoryDto> serNubBoxDto,bool isUpdateSubStock, bool isTransaction);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 入库单-箱库存的变更
|
/// 入库单-箱库存的变更
|
||||||
|
|||||||
@@ -328,7 +328,7 @@ namespace WMS.Web.Domain.Services
|
|||||||
/// <param name="dtoDatas"></param>
|
/// <param name="dtoDatas"></param>
|
||||||
/// <param name="isTransaction"></param>
|
/// <param name="isTransaction"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<Result> GenerateTakeBox(List<TakeStock> dtoDatas, List<SerialNumbersBoxInventoryDto> serNubBoxDto, bool isTransaction)
|
public async Task<Result> GenerateTakeBox(List<TakeStock> dtoDatas, List<SerialNumbersBoxInventoryDto> serNubBoxDto,bool isUpdateSubStock, bool isTransaction)
|
||||||
{
|
{
|
||||||
_logger.LogInformation("盘点单-箱库存的变更:" + JsonConvert.SerializeObject(dtoDatas));
|
_logger.LogInformation("盘点单-箱库存的变更:" + JsonConvert.SerializeObject(dtoDatas));
|
||||||
//1.判断来源数据是否存在
|
//1.判断来源数据是否存在
|
||||||
@@ -399,7 +399,24 @@ namespace WMS.Web.Domain.Services
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
if (isUpdateSubStock)
|
||||||
|
{
|
||||||
|
//更改了仓位 分两次调 先调出库 再调入库
|
||||||
|
var result = await this.ExeTakeBox(generateDtoList_out, serNubBoxDto, isTransaction);
|
||||||
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
_logger.LogInformation("盘点单-箱库存的变更(出):失败->" + result.Message + ",参数->" + JsonConvert.SerializeObject(dtoDatas));
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
result = await this.ExeTakeBox(generateDtoList_in, serNubBoxDto, isTransaction);
|
||||||
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
_logger.LogInformation("盘点单-箱库存的变更(入):失败->" + result.Message + ",参数->" + JsonConvert.SerializeObject(dtoDatas));
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
//整合一起
|
//整合一起
|
||||||
var generateDtoList = new List<BoxInventoryTakeGenerateDto>();
|
var generateDtoList = new List<BoxInventoryTakeGenerateDto>();
|
||||||
generateDtoList.AddRange(generateDtoList_in);
|
generateDtoList.AddRange(generateDtoList_in);
|
||||||
@@ -411,6 +428,7 @@ namespace WMS.Web.Domain.Services
|
|||||||
_logger.LogInformation("盘点单-箱库存的变更:失败->" + result.Message + ",参数->" + JsonConvert.SerializeObject(dtoDatas));
|
_logger.LogInformation("盘点单-箱库存的变更:失败->" + result.Message + ",参数->" + JsonConvert.SerializeObject(dtoDatas));
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//5.组装物料收发明细
|
//5.组装物料收发明细
|
||||||
foreach (var item in dtoDatas.SelectMany(x => x.Details).ToList())
|
foreach (var item in dtoDatas.SelectMany(x => x.Details).ToList())
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ using Newtonsoft.Json;
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Security.Cryptography;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using WMS.Web.Core.Dto;
|
using WMS.Web.Core.Dto;
|
||||||
@@ -39,6 +40,7 @@ namespace WMS.Web.Domain.Services
|
|||||||
private readonly IErpService _erpService;
|
private readonly IErpService _erpService;
|
||||||
private readonly ILogger<TakeStockService> _logger;
|
private readonly ILogger<TakeStockService> _logger;
|
||||||
private readonly IBoxInventoryService _boxInventoryService;
|
private readonly IBoxInventoryService _boxInventoryService;
|
||||||
|
private readonly IBoxInventoryRepositories _boxInventoryRepositories;
|
||||||
private readonly IErpBasicDataExtendService _erpBasicDataExtendService;
|
private readonly IErpBasicDataExtendService _erpBasicDataExtendService;
|
||||||
private readonly ISerialNumberService _serialNumberService;
|
private readonly ISerialNumberService _serialNumberService;
|
||||||
private readonly IServiceScopeFactory _serviceScopeFactory;
|
private readonly IServiceScopeFactory _serviceScopeFactory;
|
||||||
@@ -50,7 +52,8 @@ namespace WMS.Web.Domain.Services
|
|||||||
ISingleDataService singleDataService, IErpService erpService, ILogger<TakeStockService> logger,
|
ISingleDataService singleDataService, IErpService erpService, ILogger<TakeStockService> logger,
|
||||||
IBoxInventoryService boxInventoryService, IErpBasicDataExtendService erpBasicDataExtendService,
|
IBoxInventoryService boxInventoryService, IErpBasicDataExtendService erpBasicDataExtendService,
|
||||||
ISerialNumberService serialNumberService, IServiceScopeFactory serviceScopeFactory,
|
ISerialNumberService serialNumberService, IServiceScopeFactory serviceScopeFactory,
|
||||||
ISerialNumbersRepositories serialNumberRepositories, IBoxRepositories boxRepositories)
|
ISerialNumbersRepositories serialNumberRepositories, IBoxRepositories boxRepositories,
|
||||||
|
IBoxInventoryRepositories boxInventoryRepositories)
|
||||||
{
|
{
|
||||||
_mapper = mapper;
|
_mapper = mapper;
|
||||||
_loginService = loginService;
|
_loginService = loginService;
|
||||||
@@ -66,6 +69,7 @@ namespace WMS.Web.Domain.Services
|
|||||||
_serviceScopeFactory = serviceScopeFactory;
|
_serviceScopeFactory = serviceScopeFactory;
|
||||||
_serialNumberRepositories = serialNumberRepositories;
|
_serialNumberRepositories = serialNumberRepositories;
|
||||||
_boxRepositories = boxRepositories;
|
_boxRepositories = boxRepositories;
|
||||||
|
_boxInventoryRepositories = boxInventoryRepositories;
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 保存
|
/// 保存
|
||||||
@@ -80,8 +84,15 @@ namespace WMS.Web.Domain.Services
|
|||||||
if (dto.Count() == 0) return Result.ReSuccess();
|
if (dto.Count() == 0) return Result.ReSuccess();
|
||||||
if (dto.GroupBy(g => g.BoxId).Count() > 1)
|
if (dto.GroupBy(g => g.BoxId).Count() > 1)
|
||||||
return Result.ReFailure(ResultCodes.TakeStockBoxError);
|
return Result.ReFailure(ResultCodes.TakeStockBoxError);
|
||||||
//v1.0.6 如果箱子不存在则添加箱信息
|
//v1.0.6 如果箱子不存在则添加箱信息 和 可以更换仓位
|
||||||
var dto_f = dto.First();
|
var dto_f = dto.First();
|
||||||
|
bool isUpdateSubStock = false;
|
||||||
|
BoxInventory boxInventory = null;
|
||||||
|
if (isUpdateSubStock)
|
||||||
|
{
|
||||||
|
boxInventory = await _boxInventoryRepositories.Get(dto_f.BoxId);
|
||||||
|
if (boxInventory == null) return Result.ReFailure(ResultCodes.BoxInventoryNoDataError);
|
||||||
|
}
|
||||||
if (dto_f.BoxId == 0)
|
if (dto_f.BoxId == 0)
|
||||||
{
|
{
|
||||||
var dBox = await _boxRepositories.GetByNo(dto_f.BoxBillNo);
|
var dBox = await _boxRepositories.GetByNo(dto_f.BoxBillNo);
|
||||||
@@ -95,7 +106,7 @@ namespace WMS.Web.Domain.Services
|
|||||||
CreateTime = DateTime.Now
|
CreateTime = DateTime.Now
|
||||||
};
|
};
|
||||||
dBox = await _boxRepositories.Add(dBox);
|
dBox = await _boxRepositories.Add(dBox);
|
||||||
if(dBox==null)return Result.ReFailure(ResultCodes.DateWriteError);
|
if (dBox == null) return Result.ReFailure(ResultCodes.DateWriteError);
|
||||||
dto.ForEach(f => f.BoxId = dBox.Id);
|
dto.ForEach(f => f.BoxId = dBox.Id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -163,7 +174,13 @@ namespace WMS.Web.Domain.Services
|
|||||||
}
|
}
|
||||||
if (res_Rollback.IsSuccess)
|
if (res_Rollback.IsSuccess)
|
||||||
{
|
{
|
||||||
var res_Inventory = await _boxInventoryService.GenerateTakeBox(list, serialNumbersBoxInventoryList, false);
|
List<TakeStock> takes = list;
|
||||||
|
if (isUpdateSubStock)
|
||||||
|
{
|
||||||
|
takes = new List<TakeStock>();
|
||||||
|
takes = GetUpdateSubStockTakeStock(dto, loginInfo, boxInventory);
|
||||||
|
}
|
||||||
|
var res_Inventory = await _boxInventoryService.GenerateTakeBox(list, serialNumbersBoxInventoryList, isUpdateSubStock, false);
|
||||||
if (!res_Inventory.IsSuccess) res_Rollback = res_Inventory;
|
if (!res_Inventory.IsSuccess) res_Rollback = res_Inventory;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -386,5 +403,50 @@ namespace WMS.Web.Domain.Services
|
|||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 盘点更换仓位组装盘点单结构,用来调用即时库存
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="dto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
private List<TakeStock> GetUpdateSubStockTakeStock(List<SaveTakeStockRequest> dto, LoginInDto loginInfo, BoxInventory boxInventory)
|
||||||
|
{
|
||||||
|
List<TakeStock> list = new List<TakeStock>();
|
||||||
|
var fist = dto.First();
|
||||||
|
|
||||||
|
//先用箱库存 组装盘亏单 把数据都盘出去
|
||||||
|
TakeStock loss = new TakeStock();
|
||||||
|
loss.Create(loginInfo.UserInfo.StaffId, TakeStockType.Loss);
|
||||||
|
foreach (var d in boxInventory.Details)
|
||||||
|
{
|
||||||
|
loss.Details.Add(new TakeStockDetails()
|
||||||
|
{
|
||||||
|
BoxId = fist.BoxId,
|
||||||
|
MaterialNumber = d.MaterialNumber,
|
||||||
|
OrgCode = boxInventory.OrgCode,
|
||||||
|
StockCode = boxInventory.StockCode,
|
||||||
|
SubStockCode = boxInventory.SubStockCode,
|
||||||
|
Old_SubStockCode = boxInventory.SubStockCode,
|
||||||
|
AfterQty = 0,
|
||||||
|
BeforeQty = d.Qty,
|
||||||
|
SerialNumbers = d.SerialNumbers,
|
||||||
|
FinalQty = d.Qty
|
||||||
|
});
|
||||||
|
}
|
||||||
|
list.Add(loss);
|
||||||
|
|
||||||
|
//组装盘盈单
|
||||||
|
TakeStock profit = new TakeStock();
|
||||||
|
profit.Create(loginInfo.UserInfo.StaffId, TakeStockType.Profit);
|
||||||
|
profit.Details = _mapper.Map<List<TakeStockDetails>>(dto.Where(w => w.AfterQty > 0));
|
||||||
|
foreach (var d in profit.Details)
|
||||||
|
{
|
||||||
|
d.OrgCode = boxInventory.OrgCode;
|
||||||
|
d.BeforeQty = 0;
|
||||||
|
d.FinalQty = d.AfterQty;
|
||||||
|
}
|
||||||
|
list.Add(profit);
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user