diff --git a/ZR.Admin.WebApi/Controllers/mes/wms/WmOutOrderController.cs b/ZR.Admin.WebApi/Controllers/mes/wms/WmOutOrderController.cs
index 0f61eb01..4384957d 100644
--- a/ZR.Admin.WebApi/Controllers/mes/wms/WmOutOrderController.cs
+++ b/ZR.Admin.WebApi/Controllers/mes/wms/WmOutOrderController.cs
@@ -219,6 +219,26 @@ namespace ZR.Admin.WebApi.Controllers
int result = _WmOutOrderService.PersistenceOutorderplan(shipment_num);
return SUCCESS(result);
}
+ ///
+ /// 8.5 PDA端 获取出库单的持久化存储出库计划并计算计划批次当前已出库数量
+ ///
+ /// 出库单号
+ /// 物料号(零件号)
+ ///
+ [HttpGet("getOutOrderPlanAndOutProductionNum")]
+ public IActionResult GetOutOrderPlanAndOutProductionNum(string shipment_num,string partnumber)
+ {
+ if (shipment_num == null)
+ {
+ return ToResponse(new ApiResult(500, "传入工单号为空!", "传入工单号为空!"));
+ }
+ var result = _WmOutOrderService.GetOutOrderPlanAndOutProductionNum(shipment_num, partnumber);
+ if(result == null)
+ {
+ return ToResponse(new ApiResult(500, "获取计划异常!", "获取计划异常!"));
+ }
+ return SUCCESS(result);
+ }
///
/// 5 成品出库
diff --git a/ZR.Model/MES/wms/Dto/WmOutOrderDto.cs b/ZR.Model/MES/wms/Dto/WmOutOrderDto.cs
index 6a8c7ea9..36474257 100644
--- a/ZR.Model/MES/wms/Dto/WmOutOrderDto.cs
+++ b/ZR.Model/MES/wms/Dto/WmOutOrderDto.cs
@@ -5,7 +5,7 @@ namespace ZR.Model.MES.wms.Dto
///
/// 出货单(物料+客户)查询对象
///
- public class WmOutOrderQueryDto : PagerInfo
+ public class WmOutOrderQueryDto : PagerInfo
{
public string ShipmentNum { get; set; }
public int? Year { get; set; }
@@ -22,7 +22,7 @@ namespace ZR.Model.MES.wms.Dto
///
public class WmOutOrderDto
{
-
+
public string ShipmentNum { get; set; }
public string CustomId { get; set; }
@@ -64,7 +64,7 @@ namespace ZR.Model.MES.wms.Dto
//带出货数量的物料表
public List MaterialList { get; set; }
-
+
}
///
/// 出货单_物料——数量
@@ -77,23 +77,84 @@ namespace ZR.Model.MES.wms.Dto
}
// 出货到出货记录表
- public class WmDoMaterialOut_Dto
- {
+ public class WmDoMaterialOut_Dto
+ {
///
/// 出库单号
///
- public string ShipmentNum { get; set; }
+ public string ShipmentNum { get; set; }
///
/// 批次号
///
- public string[] PatchCode { get; set; }
+ public string[] PatchCode { get; set; }
+
-
}
-
+ ///
+ /// 持久化出库计划与批次已出库数
+ ///
+ public class WmOutPlanAndGoodsOutProductionNumDto
+ {
+ ///
+ /// 出库顺序
+ ///
+ public int OutOrder { get; set; } = 1;
+ ///
+ /// 批次号
+ ///
+ public string PackageCode { get; set; } = string.Empty;
+ ///
+ /// 物料号(零件号)
+ ///
+ public string Partnumber { get; set; } = string.Empty;
+ ///
+ /// 描述
+ ///
+ public string Description { get; set; } = "无描述";
+ ///
+ /// 所属仓库
+ ///
+ public string WarehouseCode { get; set; } = "无描述";
+ ///
+ /// 需求零件数
+ ///
+ public int RequireNum { get; set; } = 0;
+ ///
+ /// 库存现有箱数
+ ///
+ public int PackageNum { get; set; } = 0;
+ ///
+ /// 库存现有零件数
+ ///
+ public int PartnumberNum { get; set; } = 0;
+ ///
+ /// 计划出库箱数
+ ///
+ public int PackagePlanNum { get; set; } = 0;
+ ///
+ /// 计划出库零件数
+ ///
+ public int PartnumberPlanNum { get; set; } = 0;
+ ///
+ /// 该批次已出箱数
+ ///
+ public int OutPackageNum { get; set; } = 0;
+ ///
+ /// 该批次已出零件数
+ ///
+ public int OutPartnumberNum { get; set; } = 0;
+ ///
+ /// 是否出现异常(时效性,出库中是否出现实际箱比计划箱多)
+ ///
+ public bool IsError { get; set; } = false;
+ ///
+ /// 是否出完
+ ///
+ public bool IsOver { get; set; } = false;
+ }
}
\ No newline at end of file
diff --git a/ZR.Service/mes/wms/IService/IWmOutOrderService.cs b/ZR.Service/mes/wms/IService/IWmOutOrderService.cs
index 0fb9bda5..d2dbf414 100644
--- a/ZR.Service/mes/wms/IService/IWmOutOrderService.cs
+++ b/ZR.Service/mes/wms/IService/IWmOutOrderService.cs
@@ -39,6 +39,13 @@ namespace ZR.Service.mes.wms.IService
bool OverOutorderplan(string shipment_num);
+
+ ///
+ /// 8.5 PDA端 获取出库单的持久化存储出库计划并计算计划批次当前已出库数量
+ ///
+ /// 出库单号
+ ///
+ List GetOutOrderPlanAndOutProductionNum(string shipment_num, string partnumber);
// 检查是否可出库
string CheckProductionOut(string parnumber,string production_packcode, string shipment_num);
diff --git a/ZR.Service/mes/wms/WmOutOrderService.cs b/ZR.Service/mes/wms/WmOutOrderService.cs
index b32c23da..8486be25 100644
--- a/ZR.Service/mes/wms/WmOutOrderService.cs
+++ b/ZR.Service/mes/wms/WmOutOrderService.cs
@@ -17,6 +17,7 @@ using Infrastructure.Model;
using ZR.Service;
using ZR.Service.Utils;
using Aliyun.OSS;
+using Microsoft.AspNetCore.Hosting.Server;
namespace ZR.Service.mes.wms
{
@@ -553,6 +554,79 @@ namespace ZR.Service.mes.wms
}
return resultionPackage.ProductionTime;
}
+ ///
+ /// 8.5 PDA端 获取出库单的持久化存储出库计划并计算计划批次当前已出库数量
+ ///
+ /// 出库单号
+ ///
+ public List GetOutOrderPlanAndOutProductionNum(string shipment_num, string partnumber)
+ {
+ try
+ {
+ List result = new();
+ // 当前工单出库计划
+ var exp = Expressionable.Create()
+ .And(it => it.FkOutOrderId == shipment_num)
+ .AndIF(!string.IsNullOrEmpty(partnumber),it => it.MaterialCode == partnumber)
+ .ToExpression();
+ List wmOutOrderPlan = Context.Queryable()
+ .Where(exp)
+ .OrderBy(it => it.Outorder)
+ .ToList();
+ // 查询每个计划具体出库数据
+ foreach (WmOutOrderPlan item in wmOutOrderPlan)
+ {
+ // 库存记录
+ List nowProductionList = Context.Queryable()
+ .Where(it => it.PackageCodeClient.Contains(item.Patchcode))
+ .ToList();
+ int nowPackageNum = 0;
+ int nowPartnumberNum = 0;
+ foreach (WmGoodsNowProduction outItem in nowProductionList)
+ {
+ nowPackageNum += 1;
+ nowPartnumberNum += (int)outItem.GoodsNumAction;
+ }
+ // 出库记录
+ List outPackageList = Context.Queryable()
+ .Where(it => it.PackageCodeClient.Contains(item.Patchcode))
+ .ToList();
+ int outPackageNum = 0;
+ int outPartnumberNum = 0;
+ foreach (WmGoodsOutRecord outItem in outPackageList)
+ {
+ outPackageNum += 1;
+ outPartnumberNum += (int)outItem.GoodsNumAction;
+ }
+ WmMaterial material = Context.Queryable()
+ .Where(it => it.Partnumber.Contains(item.MaterialCode))
+ .First();
+ WmOutPlanAndGoodsOutProductionNumDto newItem = new()
+ {
+ OutOrder = (int)item.Outorder,
+ PackageCode = item.Patchcode,
+ Partnumber = item.MaterialCode,
+ Description = !string.IsNullOrEmpty(material.Description) ? material.Description : material.ProductName,
+ WarehouseCode = item.WarehouseCode,
+ RequireNum = (int)item.RequireNum,
+ PackageNum = (int)nowPackageNum,
+ PartnumberNum = (int)nowPartnumberNum,
+ PackagePlanNum = (int)item.PackageNum,
+ PartnumberPlanNum = (int)item.PartnumberNum,
+ OutPackageNum = outPackageNum,
+ OutPartnumberNum = outPartnumberNum,
+ IsError = (nowPartnumberNum + outPartnumberNum) != item.PartnumberNum,
+ IsOver = outPartnumberNum == item.PartnumberNum
+ };
+ result.Add(newItem);
+ }
+ return result;
+ }
+ catch (Exception ex)
+ {
+ return null;
+ }
+ }
///
/// 检查是否可出库
@@ -669,7 +743,6 @@ namespace ZR.Service.mes.wms
return result;
}
-
-
+
}
}
\ No newline at end of file