查询BOM 及其所需数量

This commit is contained in:
qianhao.xu 2024-09-04 13:10:37 +08:00
parent b3f4c8dc8a
commit fef1a3906e
4 changed files with 105 additions and 14 deletions

View File

@ -272,6 +272,21 @@ namespace DOAN.Admin.WebApi.Controllers
return SUCCESS(response);
}
//TODO 查询BOM 及其所需数量
/// <summary>
/// 查询BOM 及其所需数量
/// </summary>
/// <param name="workorder_num">工单号</param>
/// <returns></returns>
[HttpGet("search_BOM_num")]
public IActionResult SearchBOMNum(string workorder_num) {
if (string.IsNullOrEmpty(workorder_num)) { return SUCCESS(null); }
var response = _ProWorkorderService.SearchBOMNum(workorder_num);
return SUCCESS(response);
}
}
}

View File

@ -26,7 +26,7 @@ namespace DOAN.Model.MES.product.Dto
public class ProWorkorderQueryDto2
{
public DateTime WorkorderDate { get; set; }
public DateTime WorkorderDate { get; set; }
}
@ -104,7 +104,7 @@ namespace DOAN.Model.MES.product.Dto
/// <summary>
/// 完成数量
/// </summary>
public int? FinishNum { get; set; }
public int? FinishNum { get; set; }
public string Unit { get; set; }
@ -147,7 +147,7 @@ namespace DOAN.Model.MES.product.Dto
/// <summary>
/// 下一个工单号
/// </summary>
public string next_id { get; set; }
public string Id { get; set; }
@ -205,9 +205,9 @@ namespace DOAN.Model.MES.product.Dto
/// <summary>
/// 缺少物料 (物料清单不存在)存在为值 不存在为null
/// </summary>
public string MaterialName { get; set; }
public string Specification { get; set; }
public string MaterialName { get; set; }
public string Specification { get; set; }
/// <summary>
/// 缺少工艺路线 (工艺路线)存在为值 不存在为0
/// </summary>
@ -260,6 +260,39 @@ namespace DOAN.Model.MES.product.Dto
}
/// <summary>
/// 工单BOM 及其所需数量
/// </summary>
public class WorkOrderBom
{
/// <summary>
/// 子件编码
/// </summary>
public string SubInvCode { get; set; }
/// <summary>
/// 子件名称
/// </summary>
public string SubInvName { get; set; }
/// <summary>
/// 使用数量
/// </summary>
public string Iusequantity { get; set; }
/// <summary>
/// BOM版本号
/// </summary>
public string BOMVersion { get; set; }
}
}

View File

@ -48,5 +48,7 @@ namespace DOAN.Service.MES.product.IService
List<GroupSchedule> GetGroupList(string route_code);
List<WorkOrderBom> SearchBOMNum(string workorder_num);
}
}

View File

@ -29,6 +29,7 @@ using NPOI.Util;
using DOAN.Model.MES.base_.Dto;
using Aliyun.OSS;
using DOAN.Model.MES.group;
using Mapster;
namespace DOAN.Service.MES.product
{
@ -73,7 +74,7 @@ namespace DOAN.Service.MES.product
MaterialName = m.Name,
Specification = m.Specification,
Unit = m.Unit,
Unit = q.Unit,
}, true);
var query2 = Context.Queryable(query1).LeftJoin<BaseWorkRoute>((q, r) => q.RouteId == r.Code)
.Select((q, r) => new ProWorkorderDto3()
@ -587,7 +588,7 @@ namespace DOAN.Service.MES.product
// !string.IsNullOrEmpty(parm.CustomNo),
// it => it.CustomName.Contains(parm.CustomNo)
//)
.And(it => it.Status ==1);
.And(it => it.Status == 1);
var response = Context.Queryable<BaseCustom>()
.Where(predicate.ToExpression())
@ -595,7 +596,7 @@ namespace DOAN.Service.MES.product
.Take(20)
.ToList();
return response;
}
@ -607,11 +608,17 @@ namespace DOAN.Service.MES.product
/// <returns></returns>
public List<BaseWorkRoute> GetProcessRoute(DateTime dateTime)
{
DateTime dataTO= dateTime.ToLocalTime().Date;
var query= Context.Queryable<GroupSchedule>().Where(it => it.ScheduleDate == dataTO);
DateTime dataTO = dateTime.ToLocalTime().Date;
var query = Context.Queryable<GroupSchedule>().Where(it => it.ScheduleDate == dataTO);
return Context.Queryable(query).LeftJoin<BaseWorkRoute>((q, p) => q.FkBelongRouteCode == p.Code).Select((q, p) => p).Distinct().ToList();
return Context
.Queryable(query)
.LeftJoin<BaseWorkRoute>((q, p) => q.FkBelongRouteCode == p.Code)
.Select((q, p) => p)
.Distinct()
.ToList();
}
/// <summary>
/// 获取班组
/// </summary>
@ -620,8 +627,42 @@ namespace DOAN.Service.MES.product
public List<GroupSchedule> GetGroupList(string route_code)
{
return Context.Queryable<GroupSchedule>().Where(it => it.FkBelongRouteCode == route_code).ToList();
return Context.Queryable<GroupSchedule>().Where(it => it.FkBelongRouteCode == route_code).ToList();
}
/// <summary>
/// 查询BOM 及其所需数量
/// </summary>
/// <param name="workorder_num"></param>
/// <returns></returns>
public List<WorkOrderBom> SearchBOMNum(string workorder_num)
{
List<BaseMaterialBom> baseMaterialBoms = null;
ProWorkorder proworkorder = Context.Queryable<ProWorkorder>().Where(it => it.Workorder == workorder_num).First();
if (proworkorder != null)
{
baseMaterialBoms = Context.Queryable<BaseMaterialBom>().Where(it => it.InvCode == proworkorder.ProductionCode).ToList();
if (baseMaterialBoms != null && baseMaterialBoms
.Count() > 0)
{
foreach (var item in baseMaterialBoms)
{
float num = float.Parse(item.Iusequantity) * proworkorder.DeliveryNum.Value;
item.Iusequantity = num.ToString();
}
}
}
return baseMaterialBoms.Adapt<List<WorkOrderBom>>();
}
}
}