批号添加

This commit is contained in:
tongfei
2024-03-28 09:04:27 +08:00
parent e246d3800e
commit 7714e8e376
8 changed files with 134 additions and 5 deletions

View File

@@ -1056,6 +1056,11 @@
数量
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.Erp.ErpPurchaseInStockDetailsSaveDto.Lot">
<summary>
批号
</summary>
</member>
<member name="T:WMS.Web.Core.Dto.Erp.ErpPushDto">
<summary>
下推

View File

@@ -893,6 +893,28 @@
同步到金蝶后金蝶的单据Id
</summary>
</member>
<member name="P:WMS.Web.Domain.Entitys.InStockErpDetails.BatchBillNo">
<summary>
批号
</summary>
</member>
<member name="P:WMS.Web.Domain.Entitys.InStockErpDetails.FirstBillNo">
<summary>
箱唛编号-首位
</summary>
</member>
<member name="P:WMS.Web.Domain.Entitys.InStockErpDetails.LastBillNo">
<summary>
箱唛编号-末尾序号
</summary>
</member>
<member name="M:WMS.Web.Domain.Entitys.InStockErpDetails.GenerateBatchBillNo(System.Int32,System.Int32,System.Boolean)">
<summary>
生成批号
</summary>
<param name="firstBillNo"></param>
<param name="lastBillNo"></param>
</member>
<member name="T:WMS.Web.Domain.Entitys.InStockTask">
<summary>
erp入库任务表
@@ -2713,6 +2735,12 @@
<param name="taskId"></param>
<returns></returns>
</member>
<member name="M:WMS.Web.Domain.Infrastructure.IInStockRepositories.GetLastBillNo">
<summary>
获取最新的erp明细
</summary>
<returns></returns>
</member>
<member name="T:WMS.Web.Domain.Infrastructure.IInStockTaskBoxRepositories">
<summary>
箱与任务单绑定(收货)关系表-仓储接口

View File

@@ -49,5 +49,11 @@ namespace WMS.Web.Core.Dto.Erp
/// </summary>
[JsonProperty("FRealQty")]
public decimal Qty { get; set; }
/// <summary>
/// 批号
/// </summary>
[JsonProperty("FLot")]
public string Lot { get; set; }
}
}

View File

@@ -55,5 +55,51 @@ namespace WMS.Web.Domain.Entitys
/// </summary>
public string ErpSyncBillNo { get; set; }
/// <summary>
/// 批号
/// </summary>
public string BatchBillNo { get; set; }
/// <summary>
/// 箱唛编号-首位
/// </summary>
public int FirstBillNo { get; set; }
/// <summary>
/// 箱唛编号-末尾序号
/// </summary>
public int LastBillNo { get; set; }
/// <summary>
/// 生成批号
/// </summary>
/// <param name="firstBillNo"></param>
/// <param name="lastBillNo"></param>
public void GenerateBatchBillNo(int firstBillNo,int lastBillNo,bool isBatchManage)
{
if (isBatchManage)
{
this.FirstBillNo = Convert.ToInt32(DateTime.Now.ToString("yyMMdd"));
if (this.FirstBillNo == firstBillNo)
this.LastBillNo = lastBillNo + 1;
else
this.LastBillNo = 1;
if (this.LastBillNo.ToString().Length >= 6)
{
this.BatchBillNo = "W" + this.FirstBillNo + this.LastBillNo;
return;
}
string lastStr = this.LastBillNo.ToString();
while (true)
{
lastStr = "0" + lastStr;
if (lastStr.Length >= 6) break;
}
this.BatchBillNo = "W" + this.FirstBillNo + lastStr;
}
}
}
}

View File

@@ -81,5 +81,11 @@ namespace WMS.Web.Domain.Infrastructure
/// <param name="taskId"></param>
/// <returns></returns>
Task<List<ReceiveBoxResponse>> GetInstockBox(int taskId);
/// <summary>
/// 获取最新的erp明细
/// </summary>
/// <returns></returns>
Task<InStockErpDetails> GetLastBillNo();
}
}

View File

@@ -268,6 +268,12 @@ namespace WMS.Web.Domain.Services
}
}
//1.获取物料集合和组织集合和供应商的集合
var materials = new List<ErpMaterialDto>();
var materials_result = await _erpService.BillQueryForMaterial();
if (materials_result.IsSuccess)
materials = materials_result.Data.ToList();
//1.获取来源单
var taskIds = dto.Details.GroupBy(x => x.TaskId).Select(x => x.Key).ToList();
var tasks = await _inStockTaskRepositories.GetList(taskIds);
@@ -302,6 +308,23 @@ namespace WMS.Web.Domain.Services
Qty = x.Sum(t => t.Qty)
}).ToList();
//1.获取最新的erp明细信息
var billNo_new = await _inStockRepositories.GetLastBillNo();
//erp明细生成批号
int new_firstBillNo = billNo_new == null ? 0 : billNo_new.FirstBillNo;
int new_lastBillNo = billNo_new == null ? 0 : billNo_new.LastBillNo;
entity.ErpDetails.ForEach(x =>
{
//物料必须是启动了批号管理才生成批号
var mat= materials.Where(m => m.MaterialNumber == x.MaterialNumber && m.OrgCode == entity.OrgCode).FirstOrDefault();
if (mat != null)
{
x.GenerateBatchBillNo(new_firstBillNo, new_lastBillNo, mat.IsBatchManage);
new_firstBillNo = x.FirstBillNo;
new_lastBillNo = x.LastBillNo;
}
});
//序列号集:箱里面的
var serialNumbers = await _serialNumbersRepositories.GetEntityListByBoxIds(dto.Details.GroupBy(x => x.BoxId).Select(x => x.Key).ToList());
@@ -766,6 +789,7 @@ namespace WMS.Web.Domain.Services
var resPurchaseInStock = await sc_erpService.BillQueryForPurchaseInStock(id);
var purchaseInStock = resPurchaseInStock.Data;
purchaseInStock.Details[0].Qty = erpDetail.Qty;
purchaseInStock.Details[0].Lot = erpDetail.BatchBillNo;
string formId = dto.TargetFormId.ToString();
_logger.LogInformation($"入库单->开始同步金蝶 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId} 数据: {JsonConvert.SerializeObject(dto)}");
var res_s = await sc_erpService.Save<ErpPurchaseInStockSaveDto>(purchaseInStock, formId);

View File

@@ -256,7 +256,7 @@ namespace WMS.Web.Repositories.Configuration
.WithOne()
.HasForeignKey(p => p.Fid)
.OnDelete(DeleteBehavior.Cascade);
});
});
builder.Entity<InStockTaskDetails>(ent =>
{
ent.ToTable("t_erp_instock_task_details");
@@ -322,9 +322,9 @@ namespace WMS.Web.Repositories.Configuration
v => JsonConvert.SerializeObject(v),
v => JsonConvert.DeserializeObject<List<string>>(v),
new ValueComparer<List<string>>(
(c1,c2)=>c1.SequenceEqual(c2),
c=>c.Aggregate(0,(a,v)=>HashCode.Combine(a,v.GetHashCode())),
c=>(List<string>)c.ToList()));
(c1, c2) => c1.SequenceEqual(c2),
c => c.Aggregate(0, (a, v) => HashCode.Combine(a, v.GetHashCode())),
c => (List<string>)c.ToList()));
});
# endregion
@@ -421,8 +421,11 @@ namespace WMS.Web.Repositories.Configuration
public DbSet<InStock> Instock { get; set; }
public DbSet<InStockDetails> InStockDetails { get; set; }
public DbSet<InStockTotalDetails> InStockTotalDetails { get; set; }
public DbSet<InStockTask> InStockTask { get; set; }
public DbSet<InStockErpDetails> InStockErpDetails { get; set; }
public DbSet<InStockTaskBox> InstockTaskBox { get; set; }
public DbSet<InStockTaskBoxDetails> InStockTaskBoxDetails { get; set; }
public DbSet<InStockTaskDetails> InStockTaskDetails { get; set; }

View File

@@ -409,5 +409,16 @@ namespace WMS.Web.Repositories
return (list, total);
}
/// <summary>
/// 详情-根据最新的ID
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public async Task<InStockErpDetails> GetLastBillNo()
{
var entity = await _context.InStockErpDetails.OrderByDescending(x => x.Id).FirstOrDefaultAsync();
return entity;
}
}
}