缺料判定

This commit is contained in:
qianhao.xu 2024-09-04 14:36:19 +08:00
parent bedfcc7b9d
commit 58f2df2f57
4 changed files with 99 additions and 20 deletions

View File

@ -0,0 +1,49 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DOAN.Model.MES.ERP
{
/// <summary>
/// 仓库库存详情
/// </summary>
[Tenant("1")]
[SugarTable("custDev_mes_CurrentStock")]
public class CustDevMesCurrentStock
{
/// <summary>
/// 仓库编码
/// </summary>
[SugarColumn(ColumnName = "cWhCode")]
public string WhCode { get; set; }
/// <summary>
/// 仓库名称
/// </summary>
[SugarColumn(ColumnName = "cWhName")]
public string WhName { get; set; }
/// <summary>
/// 存货编码
/// </summary>
[SugarColumn(ColumnName = "cInvCode")]
public string InvCode { get; set; }
/// <summary>
/// 存货名称
/// </summary>
[SugarColumn(ColumnName = "cInvName")]
public string InvName { get; set; }
/// <summary>
/// 库存数量
/// </summary>
[SugarColumn(ColumnName = "iQuantity")]
public decimal IQuantity { get; set; }
}
}

View File

@ -5,7 +5,7 @@ namespace DOAN.Model.MES.mm.Dto
/// <summary>
/// 物料需求计划查询对象
/// </summary>
public class MmRequirePlanQueryDto : PagerInfo
public class MmRequirePlanQueryDto : PagerInfo
{
public string MaterialCode { get; set; }
@ -28,6 +28,16 @@ namespace DOAN.Model.MES.mm.Dto
public decimal RequireNum { get; set; }
/// <summary>
/// 库存数量
/// </summary>
public decimal WhQuantity { get; set; }
/// <summary>
/// 缺料数量
/// </summary>
public decimal LackQuantity { get; set; }
public DateTime? RequireDate { get; set; }
@ -53,7 +63,7 @@ namespace DOAN.Model.MES.mm.Dto

View File

@ -31,16 +31,22 @@ namespace DOAN.Model.MES.mm
[SugarColumn(ColumnName = "require_num")]
public decimal RequireNum { get; set; }
/// <summary>
/// 库存数量
/// </summary>
[SugarColumn(ColumnName = "wh_quantity")]
public decimal WhQuantity { get; set; }
/// <summary>
/// 需求日期
/// </summary>
[SugarColumn(ColumnName = "require_date")]
public DateTime? RequireDate { get; set; }
/// <summary>
/// 所属数组
/// 所属工单
/// </summary>
[SugarColumn(ColumnName = "workorder_array")]
public string WorkorderArray { get; set; }

View File

@ -14,6 +14,7 @@ using DOAN.Model.MES.product;
using DOAN.Model.MES.base_;
using Microsoft.Extensions.Logging;
using NPOI;
using DOAN.Model.MES.ERP;
namespace DOAN.Service.group
{
@ -34,7 +35,7 @@ namespace DOAN.Service.group
int result = 0;
plan_date = plan_date.Date;
Dictionary<string, float> need_Materials = new Dictionary<string, float>();
Dictionary<string,HashSet<string>> need_Materials_workOrder=new Dictionary<string, HashSet<string>>();
Dictionary<string, HashSet<string>> need_Materials_workOrder = new Dictionary<string, HashSet<string>>();
List<MmRequirePlan> mmRequirePlans = new List<MmRequirePlan>();
//获取当天所有工单
List<ProWorkorder> ProWorkorderList = Context.Queryable<ProWorkorder>().Where(it => it.WorkorderDate == plan_date).ToList();
@ -68,7 +69,7 @@ namespace DOAN.Service.group
}
if (need_Materials_workOrder.ContainsKey(item.SubInvCode))
{
need_Materials_workOrder[item.SubInvCode].Add(workorder_item.Workorder);
}
else
@ -86,19 +87,33 @@ namespace DOAN.Service.group
{
string[] SubInvCode = need_Materials.Keys.ToArray();
List<BaseMaterialList> baseMaterialList = Context.Queryable<BaseMaterialList>().Where(it => SubInvCode.Contains(it.Code)).ToList();
if (baseMaterialList != null && baseMaterialList.Count() > 0)
{
string[] search_codes = baseMaterialList.Select(it => it.Code).ToArray();
var childDb = Context.AsTenant().GetConnectionWithAttr<CustDevMesCurrentStock>();
var search_code_List = childDb.Queryable<CustDevMesCurrentStock>().Where(it => search_codes.Contains(it.InvCode)).ToList();
foreach (var item in baseMaterialList)
{
decimal IQuantity = search_code_List.Where(it => it.InvCode == item.Code).Select(it => it.IQuantity).FirstOrDefault();
MmRequirePlan mmRequirePlan = new MmRequirePlan();
mmRequirePlan.Id = XueHua;
mmRequirePlan.MaterialCode = item.Code;
mmRequirePlan.MaterialName = item.Name;
mmRequirePlan.RequireNum = (decimal)(need_Materials.TryGetValue(item.Code, out float value) ? value : default(float));
mmRequirePlan.WhQuantity = IQuantity;
mmRequirePlan.RequireDate = plan_date;
mmRequirePlan.IsSufficient = 0;
if (mmRequirePlan.RequireNum > mmRequirePlan.WhQuantity)
{
mmRequirePlan.IsSufficient = 1;
}
else
{
mmRequirePlan.IsSufficient = 2;
}
mmRequirePlan.CreatedBy = name;
mmRequirePlan.CreatedTime = DateTime.Now;
@ -106,9 +121,9 @@ namespace DOAN.Service.group
if (need_Materials_workOrder.ContainsKey(item.Code))
{
mmRequirePlan.WorkorderArray= String.Join(", ", need_Materials_workOrder[item.Code].ToArray());
mmRequirePlan.WorkorderArray = String.Join(", ", need_Materials_workOrder[item.Code].ToArray());
}
mmRequirePlans.Add(mmRequirePlan);
@ -158,18 +173,17 @@ namespace DOAN.Service.group
.Where(predicate.ToExpression())
.ToPage<MmRequirePlan, MmRequirePlanDto>(parm);
//TODO 增加所属工单
//if (response != null && response.Result != null && response.Result.Count() > 0)
//{
// foreach (var item in response.Result) {
// //子件抓母件 母件抓工单
// }
if (response != null && response.Result != null && response.Result.Count > 0)
{
//}
foreach (var item in response.Result)
{
item.LackQuantity = (item.RequireNum - item.WhQuantity) > 0 ? (item.RequireNum - item.WhQuantity) : 0;
}
}
return response;