调整出库任务单结构

This commit is contained in:
18942506660
2023-11-16 11:03:07 +08:00
parent be659f01ad
commit d7b2c9bbb2
12 changed files with 199 additions and 138 deletions

View File

@@ -168,10 +168,13 @@ namespace WMS.Web.Domain.Entitys
if (detail_new != null)
{
detail_new.AccruedQty += d.AccruedQty;//应出数量累加
detail_new.SaleBillNos.AddRange(d.SaleBillNos);
detail_new.SourceBillNos.AddRange(d.SourceBillNos);
foreach (var dic in d.AccruedQty_Dic)
detail_new.AccruedQty_Dic.Add(dic.Key, dic.Value);
foreach (var erpd in d.ErpDetails)
{
var cd = erpd.Clone();
cd.Id = 0;cd.DetailId = 0;
detail_new.ErpDetails.Add(cd);
}
}
else
details_new.Add(d);

View File

@@ -28,22 +28,6 @@ namespace WMS.Web.Domain.Entitys
[Column("Fid")]
public int Fid { get; set; }
/// <summary>
/// 对应金蝶单据明细id(销售出库同步金蝶下推使用)
/// </summary>
[Column("Erp_DetailId")]
public int Erp_DetailId { get; set; }
/// <summary>
/// 来源单号(合并后有多个)
///</summary>
[Column("SourceBillNo")]
public List<string> SourceBillNos { get; set; }
/// <summary>
/// 销售订单号
///</summary>
[Column("SaleBillNo")]
public List<string> SaleBillNos { get; set; }
/// <summary>
/// 物料Id
///</summary>
[Column("MaterialId")]
@@ -69,16 +53,6 @@ namespace WMS.Web.Domain.Entitys
[Column("RealityQty")]
public decimal RealityQty { get; set; }
/// <summary>
/// 已出库数量(合并后不同物料 分别出库多少)
///</summary>
[Column("RealityQty_Dic")]
public Dictionary<string, decimal> RealityQty_Dic { get; set; } = new Dictionary<string, decimal>();
/// <summary>
/// 应出库数量(合并后不同物料 分别应出多少)
///</summary>
[Column("AccruedQty_Dic")]
public Dictionary<string, decimal> AccruedQty_Dic { get; set; } = new Dictionary<string, decimal>();
/// <summary>
/// 订单明细备注
///</summary>
[Column("Remark")]
@@ -93,7 +67,10 @@ namespace WMS.Web.Domain.Entitys
///</summary>
[Column("OutStockEndTime")]
public DateTime? OutStockEndTime { get; set; }
/// <summary>
/// 对应erp明细 同一个物料 存在于不同的来源单中(合并后出现多条)
/// </summary>
public List<OutStockTaskErpDetails> ErpDetails { get; set; } = new List<OutStockTaskErpDetails>();
}
}

View File

@@ -0,0 +1,53 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text;
using WMS.Web.Core;
namespace WMS.Web.Domain.Entitys
{
/// <summary>
/// 对应金蝶的明细
/// </summary>
[Serializable]
[Table("t_erp_outstock_task_erp_details")]
public class OutStockTaskErpDetails : EntityBase
{
public OutStockTaskErpDetails() { }
/// <summary>
/// 主键 订单编号
/// </summary>
[Column("Id")]
public override int Id { get; set; }
/// <summary>
/// 任务单明细Id
/// </summary>
[Column("DetailId")]
public int DetailId { get; set; }
/// <summary>
/// 对应金蝶单据明细id(销售出库同步金蝶下推使用)
/// </summary>
[Column("Erp_DetailId")]
public int Erp_DetailId { get; set; }
/// <summary>
/// 来源单号
///</summary>
[Column("SourceBillNo")]
public string SourceBillNo { get; set; }
/// <summary>
/// 销售订单号
///</summary>
[Column("SaleBillNo")]
public string SaleBillNo { get; set; }
/// <summary>
/// 应出库数量
///</summary>
[Column("AccruedQty")]
public decimal AccruedQty { get; set; }
/// <summary>
/// 已出库数量
///</summary>
[Column("RealityQty")]
public decimal RealityQty { get; set; }
}
}

View File

@@ -23,7 +23,7 @@ namespace WMS.Web.Domain.Infrastructure
/// 查询实体集合
Task<List<OutStockTask>> GetEntityList(List<int> ids);
/// <summary>
/// 列表-根据明细中的来源单号
/// 列表-根据明细中的来源单号精确匹配
/// </summary>
/// <param name="sourceBillNos"></param>
/// <returns></returns>

View File

@@ -24,9 +24,8 @@ namespace WMS.Web.Domain.Mappers
CreateMap<OutStockTask, GetOutStockTaskByNoResponse>();
CreateMap<OutStockTaskDetails, GetOutStockTaskByNoDetailsResponse>();
CreateMap<ErpDeliveryNoticeOutStockResultDto, OutStockTaskDetails>()
.ForPath(x => x.SourceBillNos, ops => ops.MapFrom(x => new List<string>() { x.SourceBillNo }))
.ForPath(x => x.SaleBillNos, ops => ops.MapFrom(x => new List<string>() { x.SaleBillNo }));
CreateMap<ErpDeliveryNoticeOutStockResultDto, OutStockTaskDetails>();
CreateMap<ErpDeliveryNoticeOutStockResultDto, OutStockTaskErpDetails>();
}
}
}

View File

@@ -76,6 +76,7 @@ namespace WMS.Web.Domain.Services
foreach (var sn in ops_box.Details.SelectMany(s => s.SerialNumbers))
{
var detail = ops_box.Details.FirstOrDefault(f => f.SerialNumbers.Select(s=>s.SerialNumber).Equals(sn.SerialNumber));
if (detail == null) continue;
var opsSerial = list.FirstOrDefault(f => f.OpsBoxId == b.OpsBoxId).Details
.SelectMany(s => s.SerialNumbers)
.FirstOrDefault(s => s.SerialNumber.Equals(sn.SerialNumber));

View File

@@ -103,29 +103,41 @@ namespace WMS.Web.Domain.Services
if (data_list.Count != 0)
{
//2.1提取出wms任务单明细信息
foreach (var e in erp_list)
foreach (var outStockTask in data_list)
{
//代表单据已经存在 那么就对单据进行修改
var data = data_list.FirstOrDefault(f => f.Details.SelectMany(s => s.SourceBillNos).Contains(e.SourceBillNo));
var detail = data.Details.FirstOrDefault(w => w.MaterialId == e.MaterialId);
//存在就修改,没有就添加
if (detail != null)
var sourcNos = outStockTask.Details.SelectMany(s => s.ErpDetails).Select(s => s.SourceBillNo).ToList();
var erps = erp_list.Where(w => sourcNos.Contains(w.SourceBillNo)).ToList();
foreach (var erp in erps)
{
if (detail.AccruedQty_Dic.ContainsKey(e.SourceBillNo))
detail.AccruedQty_Dic[e.SourceBillNo] = e.AccruedQty;
var detail = outStockTask.Details.FirstOrDefault(w => w.MaterialId == erp.MaterialId);
if (detail == null)
{
//添加一条物料明细
detail = _mapper.Map<OutStockTaskDetails>(erp);
var erpDetail = _mapper.Map<OutStockTaskErpDetails>(erp);
detail.ErpDetails.Add(erpDetail);
outStockTask.Details.Add(detail);
}
else
detail.AccruedQty_Dic.Add(e.SourceBillNo, e.AccruedQty);
//对集合里的应发做出累加
detail.AccruedQty = detail.AccruedQty_Dic.Sum(s => s.Value);
}
else
{
var de = _mapper.Map<OutStockTaskDetails>(e);
de.AccruedQty_Dic.Add(de.SourceBillNos.First(), de.AccruedQty);
data.Details.Add(de);
{
//找到物料明细下面对应的来源单明细 然后修改
var erpDetail = detail.ErpDetails.FirstOrDefault(f => f.SourceBillNo.Equals(erp.SourceBillNo));
if (erpDetail == null)
{
erpDetail = _mapper.Map<OutStockTaskErpDetails>(erp);
detail.ErpDetails.Add(erpDetail);
outStockTask.Details.Add(detail);
}
else
{
erpDetail.AccruedQty = erp.AccruedQty;
detail.AccruedQty = detail.ErpDetails.Sum(s => s.AccruedQty);
}
}
//操作完后剔除
erp_removeList.Add(erp);
}
erp_removeList.Add(e);
}
//2.2.提交修改
var isSuccess = await _outStockTaskRepositories.EditEntityList(data_list, isTransaction);
@@ -150,9 +162,13 @@ namespace WMS.Web.Domain.Services
//找到当前对应来源单据编号的集合数据
var current_erp_details = erp_list.Where(x => x.SourceBillNo == item).ToList();
//给到dto的实体明细中
entity.Details = _mapper.Map<List<OutStockTaskDetails>>(current_erp_details);
foreach (var de in entity.Details)
de.AccruedQty_Dic.Add(de.SourceBillNos.First(), de.AccruedQty);
foreach (var erp in current_erp_details)
{
var detail = _mapper.Map<OutStockTaskDetails>(erp);
var erpDetail = _mapper.Map<OutStockTaskErpDetails>(erp);
detail.ErpDetails.Add(erpDetail);
entity.Details.Add(detail);
}
add_entitys.Add(entity);
}
//3.1提交新增
@@ -294,15 +310,15 @@ namespace WMS.Web.Domain.Services
foreach (var entity in taskList)
{
if (entity.Type == OutStockType.Sal)
DeliveryNotice_Nos.AddRange(entity.Details.SelectMany(s => s.SourceBillNos));
DeliveryNotice_Nos.AddRange(entity.Details.SelectMany(s => s.ErpDetails).Select(s=>s.SourceBillNo));
else if (entity.Type == OutStockType.Stkdirecttransfers)
TransferDirect_Nos.AddRange(entity.Details.SelectMany(s => s.SourceBillNos));
TransferDirect_Nos.AddRange(entity.Details.SelectMany(s => s.ErpDetails).Select(s => s.SourceBillNo));
else if (entity.Type == OutStockType.StktransferInst)
TransferOut_Nos.AddRange(entity.Details.SelectMany(s => s.SourceBillNos));
TransferOut_Nos.AddRange(entity.Details.SelectMany(s => s.ErpDetails).Select(s => s.SourceBillNo));
else if (entity.Type == OutStockType.Assembled)
AssembledApp_Nos.AddRange(entity.Details.SelectMany(s => s.SourceBillNos));
AssembledApp_Nos.AddRange(entity.Details.SelectMany(s => s.ErpDetails).Select(s => s.SourceBillNo));
else if (entity.Type == OutStockType.Miscellaneous)
MisDeliveryOut_Nos.AddRange(entity.Details.SelectMany(s => s.SourceBillNos));
MisDeliveryOut_Nos.AddRange(entity.Details.SelectMany(s => s.ErpDetails).Select(s => s.SourceBillNo));
}
if (DeliveryNotice_Nos.Count() > 0)