调整物料和仓位编码

This commit is contained in:
18942506660
2024-03-18 09:34:40 +08:00
parent c0520b5cd3
commit 92d19e6a21
14 changed files with 90 additions and 39 deletions

View File

@@ -33,10 +33,14 @@ namespace WMS.Web.Core.Dto.Erp.OutStock
/// 对应金蝶单据明细id(销售出库同步金蝶下推使用)
/// </summary>
public int Erp_DetailId { get; set; } = 0;
///// <summary>
///// 物料Id
/////</summary>
//public int MaterialId { get; set; }
/// <summary>
/// 物料Id
/// 物料编码
///</summary>
public int MaterialId { get; set; }
public string MaterialNumber { get; set; }
/// <summary>
/// 仓库ID
///</summary>

View File

@@ -172,7 +172,7 @@ namespace WMS.Web.Domain.Entitys
foreach (var d in detailClone)
{
//如果箱信息存在 箱库存不存在 删除箱信息数据
var inventoryDetail = inventory.Details.FirstOrDefault(f => f.MaterialId == d.MaterialId);
var inventoryDetail = inventory.Details.FirstOrDefault(f => f.MaterialNumber == d.MaterialNumber);
if (inventoryDetail == null)
{
var boxDetail = this.Details.FirstOrDefault(f => f.Id == d.Id);
@@ -182,9 +182,9 @@ namespace WMS.Web.Domain.Entitys
//箱库存存在 箱信息不存在 添加
foreach (var d in inventory.Details)
{
var md = this.Details.FirstOrDefault(w => w.MaterialId == d.MaterialId);
var md = this.Details.FirstOrDefault(w => w.MaterialNumber == d.MaterialNumber);
if (md == null)
this.Details.Add(new BoxDetails() { MaterialId = d.MaterialId, Qty = d.Qty });
this.Details.Add(new BoxDetails() { MaterialNumber = d.MaterialNumber, Qty = d.Qty });
else
md.Qty = d.Qty;
}

View File

@@ -89,14 +89,14 @@ namespace WMS.Web.Domain.Entitys
/// 创建
/// </summary>
/// <param name="creatorId"></param>
public void Create(MoveBoxType type, int boxId,decimal qty, string orgCode, string stockCode, int subStockId, int creatorId,string subStockCode)
public void Create(MoveBoxType type, int boxId,decimal qty, string orgCode, string stockCode, int creatorId,string subStockCode)
{
this.BoxId = boxId;
this.Type = type;
this.OrgCode = orgCode;
this.StockCode = stockCode;
SrcSubStockId = type == MoveBoxType.Up ? 0 : subStockId;//上架 原仓位是0 目标仓位有值
DestSubStockId = type == MoveBoxType.Up ? subStockId : 0; //下架 原仓位有值 目标仓位是0
//SrcSubStockId = type == MoveBoxType.Up ? 0 : subStockId;//上架 原仓位是0 目标仓位有值
//DestSubStockId = type == MoveBoxType.Up ? subStockId : 0; //下架 原仓位有值 目标仓位是0
SrcSubStockCode = type == MoveBoxType.Up ? "" : subStockCode;//上架 原仓位是0 目标仓位有值
DestSubStockCode = type == MoveBoxType.Up ? subStockCode : ""; //下架 原仓位有值 目标仓位是0
this.Qty = qty;

View File

@@ -99,17 +99,17 @@ namespace WMS.Web.Domain.Entitys
/// <summary>
/// 出库 反写 任务单(返回 这个物料下面的来源单号出了多少数量)
/// </summary>
/// <param name="materialId"></param>
/// <param name="materialNumber"></param>
/// <param name="qty"></param>
/// <returns></returns>
public Result<List<(int erpDetailId, decimal qty)>> OutStock(int materialId, decimal qty, int outStockId)
public Result<List<(int erpDetailId, decimal qty)>> OutStock(string materialNumber, decimal qty, int outStockId)
{
if (this.Status == OutStockStatus.Already)
return Result<List<(int erpDetailId, decimal qty)>>.ReFailure(ResultCodes.OutStockTaskAlready);
if (this.Status == OutStockStatus.Repeal)
return Result<List<(int erpDetailId, decimal qty)>>.ReFailure(ResultCodes.OutStockTaskRepeal);
var detail = this.Details.FirstOrDefault(f => f.MaterialId == materialId);
var detail = this.Details.FirstOrDefault(f => f.MaterialNumber == materialNumber);
if (detail == null) return Result<List<(int erpDetailId, decimal qty)>>.ReFailure(ResultCodes.OrderNoData);
if ((detail.AccruedQty - detail.RealityQty) < qty)
return Result<List<(int erpDetailId, decimal qty)>>.ReFailure(ResultCodes.OutStockQtyError);
@@ -221,7 +221,7 @@ namespace WMS.Web.Domain.Entitys
{
d.Id = 0;
d.Fid = 0;
var detail_new = details_new.FirstOrDefault(f => f.MaterialId == d.MaterialId);
var detail_new = details_new.FirstOrDefault(f => f.MaterialNumber == d.MaterialNumber);
if (detail_new != null)
{
detail_new.AccruedQty += d.AccruedQty;//应出数量累加

View File

@@ -59,6 +59,13 @@ namespace WMS.Web.Domain.IService.Public
/// <returns></returns>
string GetMaterialUnitName(List<ErpMaterialDto> erpMaterials, int materialId);
/// <summary>
/// 获取物料基本单位名称
/// </summary>
/// <param name="erpMaterials"></param>
/// <param name="materialNumber"></param>
/// <returns></returns>
string GetMaterialUnitName(List<ErpMaterialDto> erpMaterials, string materialNumber);
/// <summary>
/// 获取物料的条码
/// </summary>
@@ -89,6 +96,14 @@ namespace WMS.Web.Domain.IService.Public
/// <param name="materialId"></param>
/// <returns></returns>
string GetMaterialUnitNumber(List<ErpMaterialDto> erpMaterials, int materialId);
/// <summary>
/// 获取物料基本单位编码
/// </summary>
/// <param name="erpMaterials"></param>
/// <param name="materialNumber"></param>
/// <returns></returns>
string GetMaterialUnitNumber(List<ErpMaterialDto> erpMaterials, string materialNumber);
/// <summary>
/// 获取组织名称
/// </summary>

View File

@@ -172,7 +172,7 @@ namespace WMS.Web.Domain.Services
entity.SrcSubStockCode = subStock_s?.Code ?? "";
if (subStock != null)
{
entity.DestSubStockId = dt.SubStockId;
//entity.DestSubStockId = dt.SubStockId;
entity.DestBoxOrgCode = subStock.ErpOrgCode;
entity.DestStockCode = subStock.StockCode;
entity.DestSubStockCode = subStock.Code;
@@ -278,9 +278,9 @@ namespace WMS.Web.Domain.Services
List<MoveBoxRecord> entityList = new List<MoveBoxRecord>();
foreach (var d in dto)
{
var subStock = await _basbicsRepositories.GetSubUcStockAsync(d.SubStockId, loginInfo.UserInfo.CompanyId);
var subStock = await _basbicsRepositories.GetSubUcStockAsync(d.SubStockCode, loginInfo.UserInfo.CompanyId);
var entity = new MoveBoxRecord();
entity.Create(IsUp == true ? MoveBoxType.Up : MoveBoxType.Down, d.BoxId, d.Qty, subStock?.ErpOrgCode, subStock?.StockCode, d.SubStockId, loginInfo.UserInfo.StaffId, subStock?.Code);
entity.Create(IsUp == true ? MoveBoxType.Up : MoveBoxType.Down, d.BoxId, d.Qty, subStock?.ErpOrgCode, d.SubStockCode, loginInfo.UserInfo.StaffId, subStock?.Code);
entity.Details = d.Details.Select(s => new MoveBoxRecordDetails()
{
MaterialNumber = s.MaterialNumber,

View File

@@ -134,7 +134,7 @@ namespace WMS.Web.Domain.Services
foreach (var b in boxInventoryDetails)
{
var num = boxInventoryDetails.Where(w => w.MaterialId == b.MaterialId).Sum(s => s.Qty);
var taskDetail = outStockTask.Details.FirstOrDefault(f => f.MaterialNumber == b.MaterialId);
var taskDetail = outStockTask.Details.FirstOrDefault(f => f.MaterialNumber == b.MaterialNumber);
if (taskDetail == null) return Result.ReFailure(ResultCodes.BoxOutStockTaskMaterialError);
//箱子里该物料的总数量大于出库单(应出库数量-已出库数量) 不能出库
if (num > (taskDetail.AccruedQty - taskDetail.RealityQty))
@@ -144,7 +144,7 @@ namespace WMS.Web.Domain.Services
if (box == null) return Result.ReFailure(ResultCodes.BoxNoData);
var dtod = _mapper.Map<SaveOutStockDetailsRequest>(b);
dtod.BoxId = box.BoxId;
dtod.SubStockId = box.SubStockId;
dtod.SubStockCode = box.SubStockCode;
dto.Details.Add(dtod);
}
}

View File

@@ -114,7 +114,7 @@ namespace WMS.Web.Domain.Services
foreach (var erp in erps)
{
//仓库不同 拆分成不同的
var detail = outStockTask.Details.FirstOrDefault(w => w.MaterialId == erp.MaterialId);
var detail = outStockTask.Details.FirstOrDefault(w => w.MaterialNumber == erp.MaterialNumber);
if (detail == null)
{
//添加一条物料明细
@@ -167,11 +167,11 @@ namespace WMS.Web.Domain.Services
entity.Create((OutStockType)e.Type, e.StockCode, e.OrgCode, e.DeliveryOrgId, e.ReceiptCustomerId, (DateTime)e.CreateTime);
//找到当前对应来源单据编号的集合数据
var mIds = eList.GroupBy(g => g.MaterialId).Select(s => s.Key).ToList();
var mIds = eList.GroupBy(g => g.MaterialNumber).Select(s => s.Key).ToList();
//给到dto的实体明细中
foreach (var mid in mIds)
{
var emList = eList.Where(w => w.MaterialId == mid).ToList();
var emList = eList.Where(w => w.MaterialNumber == mid).ToList();
var detail = _mapper.Map<OutStockTaskDetails>(emList.First());
var erpDetail = _mapper.Map<List<OutStockTaskErpDetails>>(emList);
detail.ErpDetails.AddRange(erpDetail);
@@ -205,7 +205,7 @@ namespace WMS.Web.Domain.Services
var erp_o = erp_list.Where(w => w.SourceBillNo == ed.SourceBillNo).ToList();
if (erp_o.Count() == 0) continue;
var erp_d = erp_list.Where(w => w.MaterialId == d.MaterialId && ed.Erp_DetailId == w.Erp_DetailId).ToList();
var erp_d = erp_list.Where(w => w.MaterialNumber == d.MaterialNumber && ed.Erp_DetailId == w.Erp_DetailId).ToList();
if (erp_d.Count() == 0)
{
//金蝶删除明细数据后 wms对应数据修改为0

View File

@@ -161,7 +161,20 @@ namespace WMS.Web.Domain.Services.Public
}
return mat.BaseUnitName;
}
public string GetMaterialUnitName(List<ErpMaterialDto> erpMaterials, string materialNumber)
{
if (erpMaterials == null || erpMaterials.Count == 0)
return "";
var mat = erpMaterials.Where(x => x.MaterialNumber == materialNumber).FirstOrDefault();
if (mat == null)
{
var result = _erpService.BillQueryForMaterial(materialNumber).GetAwaiter().GetResult();
if (!result.IsSuccess)
return "";
return result.Data == null ? "" : result.Data.BaseUnitName;
}
return mat.BaseUnitName;
}
/// <summary>
/// 获取物料的条码
/// </summary>
@@ -244,7 +257,26 @@ namespace WMS.Web.Domain.Services.Public
}
return mat.BaseUnitNumber;
}
/// <summary>
/// 获取物料基本单位编码
/// </summary>
/// <param name="erpMaterials"></param>
/// <param name="materialNumber"></param>
/// <returns></returns>
public string GetMaterialUnitNumber(List<ErpMaterialDto> erpMaterials, string materialNumber)
{
if (erpMaterials == null || erpMaterials.Count == 0)
return "";
var mat = erpMaterials.Where(x => x.MaterialNumber == materialNumber).FirstOrDefault();
if (mat == null)
{
var result = _erpService.BillQueryForMaterial(materialNumber).GetAwaiter().GetResult();
if (!result.IsSuccess)
return "";
return result.Data == null ? "" : result.Data.BaseUnitNumber;
}
return mat.BaseUnitNumber;
}
/// <summary>
/// 获取组织名称
/// </summary>

View File

@@ -69,7 +69,7 @@ namespace WMS.Web.Domain.Services
//记录序列号操作日志
SerialNumberOperate op = new SerialNumberOperate()
{
MaterialId = entity.MaterialId,
MaterialNumber = entity.MaterialNumber,
SerialNumber = entity.SerialNumber,
OrgId = box.OrgId,
SupplierId = box.SupplierId,
@@ -134,7 +134,7 @@ namespace WMS.Web.Domain.Services
//记录序列号操作日志
SerialNumberOperate op = new SerialNumberOperate()
{
MaterialId = entity.MaterialId,
MaterialNumber = entity.MaterialNumber,
SerialNumber = entity.SerialNumber,
OrgId = box.OrgId,
SupplierId = box.SupplierId,
@@ -192,15 +192,15 @@ namespace WMS.Web.Domain.Services
foreach (var entity in entityList)
{
var box = boxList.FirstOrDefault(f => f.Id == entity.BoxId);
var outstockDetail = outStock.Details.FirstOrDefault(f => f.MaterialId == entity.MaterialId);
var outstockDetail = outStock.Details.FirstOrDefault(f => f.MaterialNumber == entity.MaterialNumber);
if (outstockDetail == null) continue;
//修改序列号和箱绑定关系
entity.OutStock(outStock, entity.MaterialId);
entity.OutStock(outStock, entity.MaterialNumber);
//记录序列号操作日志
SerialNumberOperate op = new SerialNumberOperate()
{
MaterialId = entity.MaterialId,
MaterialNumber = entity.MaterialNumber,
SerialNumber = entity.SerialNumber,
OrgId = box.OrgId,
SupplierId = box.SupplierId,
@@ -211,7 +211,7 @@ namespace WMS.Web.Domain.Services
};
if (outStock.Type == OutStockType.Sal)
{
var detail = outStock.Details.FirstOrDefault(f => f.MaterialId == entity.MaterialId);
var detail = outStock.Details.FirstOrDefault(f => f.MaterialNumber == entity.MaterialNumber);
var res_c = await _erpService.BillQueryForCustomer();
var customer = res_c.Data.FirstOrDefault(f => f.Id == outStock.ReceiptCustomerId);
op.Remark += "\r\n" + "销售订单号:" + string.Join(",", detail.ErpDetails.Select(s => s.SaleBillNo));
@@ -321,7 +321,7 @@ namespace WMS.Web.Domain.Services
{
var boxId = inStock.Details.FirstOrDefault(s => s.SerialNumbers.Contains(entity.SerialNumber))?.BoxId ?? 0;
var box = boxList.FirstOrDefault(f => f.Id == boxId);
var instockDetail = inStock.Details.FirstOrDefault(f => f.MaterialId == entity.MaterialId);
var instockDetail = inStock.Details.FirstOrDefault(f => f.MaterialNumber == entity.MaterialNumber);
var subStock = _singleDataService.GetSingleData(SingleAction.SubStocks, loginInfo.UserInfo.CompanyId, inStock.SubStockId);
//修改序列号和箱绑定关系
entity.InStock(instockDetail.SourceBillNo, inStock.Type);
@@ -330,7 +330,7 @@ namespace WMS.Web.Domain.Services
//记录序列号操作日志
SerialNumberOperate op = new SerialNumberOperate()
{
MaterialId = entity.MaterialId,
MaterialNumber = entity.MaterialNumber,
SerialNumber = entity.SerialNumber,
OrgId = box?.OrgId ?? 0,
SupplierId = box?.SupplierId ?? 0,
@@ -397,7 +397,7 @@ namespace WMS.Web.Domain.Services
//记录序列号操作日志
SerialNumberOperate op = new SerialNumberOperate()
{
MaterialId = entity.MaterialId,
MaterialNumber = entity.MaterialNumber,
SerialNumber = entity.SerialNumber,
OrgId = box.OrgId,
SupplierId = box.SupplierId,
@@ -457,17 +457,17 @@ namespace WMS.Web.Domain.Services
if (takeStockDetail == null) continue;
var box = boxList.FirstOrDefault(f => f.Id == takeStockDetail.BoxId);
var s_entity = entityList.FirstOrDefault(f => f.SerialNumber.Equals(s));
if (box != null && box.Details.FirstOrDefault(f => f.MaterialId == takeStockDetail.MaterialId) == null)
if (box != null && box.Details.FirstOrDefault(f => f.MaterialNumber == takeStockDetail.MaterialNumber) == null)
{
//如果这个物料不存在箱箱信息 添加进去
box.TakeStock(takeStockDetail.MaterialId, takeStockDetail.AfterQty);
box.TakeStock(takeStockDetail.MaterialNumber, takeStockDetail.AfterQty);
box_New_List.Add(box);
}
if (s_entity == null)
{
//序列号
SerialNumbers s_new = new SerialNumbers(s, takeStockDetail.MaterialId, takeStockDetail.Id, 0, "", DateTime.Now, DateTime.Now);
SerialNumbers s_new = new SerialNumbers(s, takeStockDetail.MaterialNumber, takeStockDetail.Id, 0, "", DateTime.Now, DateTime.Now);
sList.Add(s_new);
}
else
@@ -479,7 +479,7 @@ namespace WMS.Web.Domain.Services
//记录序列号操作日志
SerialNumberOperate op = new SerialNumberOperate()
{
MaterialId = takeStockDetail.MaterialId,
MaterialNumber = takeStockDetail.MaterialNumber,
SerialNumber = s,
OrgId = box.OrgId,
SupplierId = box.SupplierId,

View File

@@ -243,7 +243,7 @@ namespace WMS.Web.Domain.Services
var erpInventory = res_s.Data.FirstOrDefault(f => f.MaterialNumber == number && f.StockCode == d.StockCode
&& f.OrgCode == d.OrgCode && f.Erp_SubStockId == subStockId);
decimal qty = erpInventory?.Qty ?? 0;
var unitNumber = _erpBasicDataExtendService.GetMaterialUnitNumber(materials, d.MaterialId);
var unitNumber = _erpBasicDataExtendService.GetMaterialUnitNumber(materials, d.MaterialNumber);
detils.Add(new ErpTakeStockDetailsSaveDto()
{
FOwnerid = new ErpNumberDto(d.OrgCode),

View File

@@ -198,7 +198,7 @@ namespace WMS.Web.Repositories
MaterialNumber = s.detail.MaterialNumber,
Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, s.detail.MaterialNumber),
Qty = s.detail.Qty,
Unit = _erpBasicDataExtendService.GetMaterialUnitName(materials, s.detail.MaterialId),
Unit = _erpBasicDataExtendService.GetMaterialUnitName(materials, s.detail.MaterialNumber),
Remark = s.order.Remark
#endregion

View File

@@ -257,7 +257,7 @@ namespace WMS.Web.Repositories
#region dto组装
Id = s.order.Id,
BillNo = s.order.BillNo,
Unit = _erpBasicDataExtendService.GetMaterialUnitName(materials, s.detail.MaterialId),
Unit = _erpBasicDataExtendService.GetMaterialUnitName(materials, s.detail.MaterialNumber),
Stock = _singleDataService.GetSingleData(SingleAction.StocksJoinOrgCode, companyId, s.detail.StockCode + s.detail.OrgCode),
SubStock = _singleDataService.GetSingleData(SingleAction.SubStocks, companyId, s.detail.SubStockId),
Erp_SubStock = _erpBasicDataExtendService.GetSubStockName(subStocks, s.detail.Erp_SubStockCode),