盘点支持更换仓位

This commit is contained in:
18942506660
2024-06-20 14:17:19 +08:00
parent a165e8e71c
commit e1ef73afac
5 changed files with 111 additions and 18 deletions

View File

@@ -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基础数据-同步定时任务

View File

@@ -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>
/// 入库单-箱库存的变更 /// 入库单-箱库存的变更

View File

@@ -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,17 +399,35 @@ namespace WMS.Web.Domain.Services
} }
} }
}); });
if (isUpdateSubStock)
//整合一起
var generateDtoList = new List<BoxInventoryTakeGenerateDto>();
generateDtoList.AddRange(generateDtoList_in);
generateDtoList.AddRange(generateDtoList_out);
//提交处理
var result = await this.ExeTakeBox(generateDtoList, serNubBoxDto, isTransaction);
if (!result.IsSuccess)
{ {
_logger.LogInformation("盘点单-箱库存的变更:失败->" + result.Message + ",参数->" + JsonConvert.SerializeObject(dtoDatas)); //更改了仓位 分两次调 先调出库 再调入库
return result; 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>();
generateDtoList.AddRange(generateDtoList_in);
generateDtoList.AddRange(generateDtoList_out);
//提交处理
var result = await this.ExeTakeBox(generateDtoList, serNubBoxDto, isTransaction);
if (!result.IsSuccess)
{
_logger.LogInformation("盘点单-箱库存的变更:失败->" + result.Message + ",参数->" + JsonConvert.SerializeObject(dtoDatas));
return result;
}
} }
//5.组装物料收发明细 //5.组装物料收发明细

View File

@@ -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;
}
} }
} }