diff --git a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2
index 8fb124c7..1af4f939 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.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
index 94644910..d0339d17 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
@@ -2498,6 +2498,12 @@
仓位
+
+
+ 老仓位(如果更好了仓位 这里就是原有仓位)
+ 如果没有更换仓位 那老仓位和新仓位就是一样的值
+
+
子仓库(跟金蝶交互字段)
@@ -3434,7 +3440,7 @@
-
+
盘点-箱库存的变更
@@ -4888,7 +4894,7 @@
-
+
盘点单-箱库存的变更
@@ -6508,6 +6514,13 @@
+
+
+ 盘点更换仓位组装盘点单结构,用来调用即时库存
+
+
+
+
erp基础数据-同步定时任务
diff --git a/src/WMS.Web.Domain/IService/IBoxInventoryService.cs b/src/WMS.Web.Domain/IService/IBoxInventoryService.cs
index c0da4b14..0c0a3cf4 100644
--- a/src/WMS.Web.Domain/IService/IBoxInventoryService.cs
+++ b/src/WMS.Web.Domain/IService/IBoxInventoryService.cs
@@ -51,7 +51,7 @@ namespace WMS.Web.Domain.IService
///
///
///
- Task GenerateTakeBox(List dtoDatas, List serNubBoxDto, bool isTransaction);
+ Task GenerateTakeBox(List dtoDatas, List serNubBoxDto,bool isUpdateSubStock, bool isTransaction);
///
/// 入库单-箱库存的变更
diff --git a/src/WMS.Web.Domain/Services/BoxInventoryService.cs b/src/WMS.Web.Domain/Services/BoxInventoryService.cs
index 9340389a..6efcd7e4 100644
--- a/src/WMS.Web.Domain/Services/BoxInventoryService.cs
+++ b/src/WMS.Web.Domain/Services/BoxInventoryService.cs
@@ -328,7 +328,7 @@ namespace WMS.Web.Domain.Services
///
///
///
- public async Task GenerateTakeBox(List dtoDatas, List serNubBoxDto, bool isTransaction)
+ public async Task GenerateTakeBox(List dtoDatas, List serNubBoxDto,bool isUpdateSubStock, bool isTransaction)
{
_logger.LogInformation("盘点单-箱库存的变更:" + JsonConvert.SerializeObject(dtoDatas));
//1.判断来源数据是否存在
@@ -399,17 +399,35 @@ namespace WMS.Web.Domain.Services
}
}
});
-
- //整合一起
- var generateDtoList = new List();
- generateDtoList.AddRange(generateDtoList_in);
- generateDtoList.AddRange(generateDtoList_out);
- //提交处理
- var result = await this.ExeTakeBox(generateDtoList, serNubBoxDto, isTransaction);
- if (!result.IsSuccess)
+ if (isUpdateSubStock)
{
- _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();
+ 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.组装物料收发明细
diff --git a/src/WMS.Web.Domain/Services/TakeStockService.cs b/src/WMS.Web.Domain/Services/TakeStockService.cs
index bd72428a..76440189 100644
--- a/src/WMS.Web.Domain/Services/TakeStockService.cs
+++ b/src/WMS.Web.Domain/Services/TakeStockService.cs
@@ -6,6 +6,7 @@ using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
+using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using WMS.Web.Core.Dto;
@@ -39,6 +40,7 @@ namespace WMS.Web.Domain.Services
private readonly IErpService _erpService;
private readonly ILogger _logger;
private readonly IBoxInventoryService _boxInventoryService;
+ private readonly IBoxInventoryRepositories _boxInventoryRepositories;
private readonly IErpBasicDataExtendService _erpBasicDataExtendService;
private readonly ISerialNumberService _serialNumberService;
private readonly IServiceScopeFactory _serviceScopeFactory;
@@ -50,7 +52,8 @@ namespace WMS.Web.Domain.Services
ISingleDataService singleDataService, IErpService erpService, ILogger logger,
IBoxInventoryService boxInventoryService, IErpBasicDataExtendService erpBasicDataExtendService,
ISerialNumberService serialNumberService, IServiceScopeFactory serviceScopeFactory,
- ISerialNumbersRepositories serialNumberRepositories, IBoxRepositories boxRepositories)
+ ISerialNumbersRepositories serialNumberRepositories, IBoxRepositories boxRepositories,
+ IBoxInventoryRepositories boxInventoryRepositories)
{
_mapper = mapper;
_loginService = loginService;
@@ -66,6 +69,7 @@ namespace WMS.Web.Domain.Services
_serviceScopeFactory = serviceScopeFactory;
_serialNumberRepositories = serialNumberRepositories;
_boxRepositories = boxRepositories;
+ _boxInventoryRepositories = boxInventoryRepositories;
}
///
/// 保存
@@ -80,8 +84,15 @@ namespace WMS.Web.Domain.Services
if (dto.Count() == 0) return Result.ReSuccess();
if (dto.GroupBy(g => g.BoxId).Count() > 1)
return Result.ReFailure(ResultCodes.TakeStockBoxError);
- //v1.0.6 如果箱子不存在则添加箱信息
+ //v1.0.6 如果箱子不存在则添加箱信息 和 可以更换仓位
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)
{
var dBox = await _boxRepositories.GetByNo(dto_f.BoxBillNo);
@@ -95,7 +106,7 @@ namespace WMS.Web.Domain.Services
CreateTime = DateTime.Now
};
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);
}
@@ -163,7 +174,13 @@ namespace WMS.Web.Domain.Services
}
if (res_Rollback.IsSuccess)
{
- var res_Inventory = await _boxInventoryService.GenerateTakeBox(list, serialNumbersBoxInventoryList, false);
+ List takes = list;
+ if (isUpdateSubStock)
+ {
+ takes = new List();
+ takes = GetUpdateSubStockTakeStock(dto, loginInfo, boxInventory);
+ }
+ var res_Inventory = await _boxInventoryService.GenerateTakeBox(list, serialNumbersBoxInventoryList, isUpdateSubStock, false);
if (!res_Inventory.IsSuccess) res_Rollback = res_Inventory;
}
@@ -386,5 +403,50 @@ namespace WMS.Web.Domain.Services
}
return list;
}
+ ///
+ /// 盘点更换仓位组装盘点单结构,用来调用即时库存
+ ///
+ ///
+ ///
+ private List GetUpdateSubStockTakeStock(List dto, LoginInDto loginInfo, BoxInventory boxInventory)
+ {
+ List list = new List();
+ 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>(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;
+ }
}
}