PDA-出库,添加出库计划查看功能
This commit is contained in:
@@ -219,6 +219,26 @@ namespace ZR.Admin.WebApi.Controllers
|
||||
int result = _WmOutOrderService.PersistenceOutorderplan(shipment_num);
|
||||
return SUCCESS(result);
|
||||
}
|
||||
/// <summary>
|
||||
/// 8.5 PDA端 获取出库单的持久化存储出库计划并计算计划批次当前已出库数量
|
||||
/// </summary>
|
||||
/// <param name="shipment_num">出库单号</param>
|
||||
/// <param name="partnumber">物料号(零件号)</param>
|
||||
/// <returns></returns>
|
||||
[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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 5 成品出库
|
||||
|
||||
@@ -5,7 +5,7 @@ namespace ZR.Model.MES.wms.Dto
|
||||
/// <summary>
|
||||
/// 出货单(物料+客户)查询对象
|
||||
/// </summary>
|
||||
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
|
||||
/// </summary>
|
||||
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<WmMaterialQuery_stockQuantityDto> MaterialList { get; set; }
|
||||
|
||||
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// 出货单_物料——数量
|
||||
@@ -77,23 +77,84 @@ namespace ZR.Model.MES.wms.Dto
|
||||
}
|
||||
|
||||
// 出货到出货记录表
|
||||
public class WmDoMaterialOut_Dto
|
||||
{
|
||||
public class WmDoMaterialOut_Dto
|
||||
{
|
||||
/// <summary>
|
||||
/// 出库单号
|
||||
/// </summary>
|
||||
public string ShipmentNum { get; set; }
|
||||
public string ShipmentNum { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 批次号
|
||||
/// </summary>
|
||||
public string[] PatchCode { get; set; }
|
||||
public string[] PatchCode { get; set; }
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 持久化出库计划与批次已出库数
|
||||
/// </summary>
|
||||
public class WmOutPlanAndGoodsOutProductionNumDto
|
||||
{
|
||||
/// <summary>
|
||||
/// 出库顺序
|
||||
/// </summary>
|
||||
public int OutOrder { get; set; } = 1;
|
||||
/// <summary>
|
||||
/// 批次号
|
||||
/// </summary>
|
||||
public string PackageCode { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// 物料号(零件号)
|
||||
/// </summary>
|
||||
public string Partnumber { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// 描述
|
||||
/// </summary>
|
||||
public string Description { get; set; } = "无描述";
|
||||
/// <summary>
|
||||
/// 所属仓库
|
||||
/// </summary>
|
||||
public string WarehouseCode { get; set; } = "无描述";
|
||||
/// <summary>
|
||||
/// 需求零件数
|
||||
/// </summary>
|
||||
public int RequireNum { get; set; } = 0;
|
||||
/// <summary>
|
||||
/// 库存现有箱数
|
||||
/// </summary>
|
||||
public int PackageNum { get; set; } = 0;
|
||||
/// <summary>
|
||||
/// 库存现有零件数
|
||||
/// </summary>
|
||||
public int PartnumberNum { get; set; } = 0;
|
||||
/// <summary>
|
||||
/// 计划出库箱数
|
||||
/// </summary>
|
||||
public int PackagePlanNum { get; set; } = 0;
|
||||
/// <summary>
|
||||
/// 计划出库零件数
|
||||
/// </summary>
|
||||
public int PartnumberPlanNum { get; set; } = 0;
|
||||
/// <summary>
|
||||
/// 该批次已出箱数
|
||||
/// </summary>
|
||||
public int OutPackageNum { get; set; } = 0;
|
||||
/// <summary>
|
||||
/// 该批次已出零件数
|
||||
/// </summary>
|
||||
public int OutPartnumberNum { get; set; } = 0;
|
||||
/// <summary>
|
||||
/// 是否出现异常(时效性,出库中是否出现实际箱比计划箱多)
|
||||
/// </summary>
|
||||
public bool IsError { get; set; } = false;
|
||||
/// <summary>
|
||||
/// 是否出完
|
||||
/// </summary>
|
||||
public bool IsOver { get; set; } = false;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -39,6 +39,13 @@ namespace ZR.Service.mes.wms.IService
|
||||
|
||||
bool OverOutorderplan(string shipment_num);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 8.5 PDA端 获取出库单的持久化存储出库计划并计算计划批次当前已出库数量
|
||||
/// </summary>
|
||||
/// <param name="shipment_num">出库单号</param>
|
||||
/// <returns></returns>
|
||||
List<WmOutPlanAndGoodsOutProductionNumDto> GetOutOrderPlanAndOutProductionNum(string shipment_num, string partnumber);
|
||||
// 检查是否可出库
|
||||
string CheckProductionOut(string parnumber,string production_packcode, string shipment_num);
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
/// <summary>
|
||||
/// 8.5 PDA端 获取出库单的持久化存储出库计划并计算计划批次当前已出库数量
|
||||
/// </summary>
|
||||
/// <param name="shipment_num">出库单号</param>
|
||||
/// <returns></returns>
|
||||
public List<WmOutPlanAndGoodsOutProductionNumDto> GetOutOrderPlanAndOutProductionNum(string shipment_num, string partnumber)
|
||||
{
|
||||
try
|
||||
{
|
||||
List<WmOutPlanAndGoodsOutProductionNumDto> result = new();
|
||||
// 当前工单出库计划
|
||||
var exp = Expressionable.Create<WmOutOrderPlan>()
|
||||
.And(it => it.FkOutOrderId == shipment_num)
|
||||
.AndIF(!string.IsNullOrEmpty(partnumber),it => it.MaterialCode == partnumber)
|
||||
.ToExpression();
|
||||
List<WmOutOrderPlan> wmOutOrderPlan = Context.Queryable<WmOutOrderPlan>()
|
||||
.Where(exp)
|
||||
.OrderBy(it => it.Outorder)
|
||||
.ToList();
|
||||
// 查询每个计划具体出库数据
|
||||
foreach (WmOutOrderPlan item in wmOutOrderPlan)
|
||||
{
|
||||
// 库存记录
|
||||
List<WmGoodsNowProduction> nowProductionList = Context.Queryable<WmGoodsNowProduction>()
|
||||
.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<WmGoodsOutRecord> outPackageList = Context.Queryable<WmGoodsOutRecord>()
|
||||
.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<WmMaterial>()
|
||||
.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;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 检查是否可出库
|
||||
@@ -669,7 +743,6 @@ namespace ZR.Service.mes.wms
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user