|
|
@@ -1,3 +1,4 @@
|
|
|
+using Amazon.Runtime.Internal.Util;
|
|
|
using Business.Core.Enum;
|
|
|
using Business.Core.Utilities;
|
|
|
using Business.Domain;
|
|
|
@@ -6,15 +7,18 @@ using Business.EntityFrameworkCore;
|
|
|
using Business.EntityFrameworkCore.SqlRepositories;
|
|
|
using Business.PriorityManagement;
|
|
|
using Business.ResourceExamineManagement.Dto;
|
|
|
+using Business.StructuredDB.WMS;
|
|
|
using EFCore.BulkExtensions;
|
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
using MongoDB.Driver;
|
|
|
using MongoDB.Driver.Linq;
|
|
|
using Newtonsoft.Json;
|
|
|
using Newtonsoft.Json.Linq;
|
|
|
+using SixLabors.ImageSharp;
|
|
|
using Spire.Pdf.General.Render.Decode.Jpeg2000.j2k.wavelet.synthesis;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
+using System.ComponentModel.Design;
|
|
|
using System.Linq;
|
|
|
using System.Linq.Dynamic.Core;
|
|
|
using System.Threading.Tasks;
|
|
|
@@ -203,6 +207,16 @@ namespace Business.ResourceExamineManagement
|
|
|
/// </summary>
|
|
|
private readonly ISqlRepository<PeriodSequenceDet> _periodSequenceDet;
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 物料职责表
|
|
|
+ /// </summary>
|
|
|
+ private readonly ISqlRepository<EmpWorkDutyMaster> _empWorkDutyMaster;
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 雇员信息表
|
|
|
+ /// </summary>
|
|
|
+ private readonly ISqlRepository<EmployeeMaster> _employeeMaster;
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 排产结果明细
|
|
|
/// </summary>
|
|
|
@@ -394,6 +408,8 @@ namespace Business.ResourceExamineManagement
|
|
|
IRepository<srm_supplier, long> mysql_srm_supplier,
|
|
|
ISqlRepository<TagMaster> tagMasterRepository,
|
|
|
ISqlRepository<PeriodSequenceDet> periodSequenceDet,
|
|
|
+ ISqlRepository<EmployeeMaster> employeeMaster,
|
|
|
+ ISqlRepository<EmpWorkDutyMaster> empWorkDutyMaster,
|
|
|
ISqlRepository<LineMaster> lineMaster,
|
|
|
ISqlRepository<ItemMaster> itemMaster,
|
|
|
PretreatmentAppService pretreatmentAppService,
|
|
|
@@ -476,6 +492,8 @@ namespace Business.ResourceExamineManagement
|
|
|
_mysql_srm_supplier = mysql_srm_supplier;
|
|
|
_tagMasterRepository = tagMasterRepository;
|
|
|
_periodSequenceDet = periodSequenceDet;
|
|
|
+ _employeeMaster = employeeMaster;
|
|
|
+ _empWorkDutyMaster = empWorkDutyMaster;
|
|
|
_pretreatmentAppService = pretreatmentAppService;
|
|
|
_CalcBomViewAppService = calcbomviewAppService;
|
|
|
_purchaseOrderAppService = purchaseOrderAppService;
|
|
|
@@ -2329,28 +2347,18 @@ namespace Business.ResourceExamineManagement
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 按未来N天工单齐套检查
|
|
|
+ /// 按工单齐套检查
|
|
|
/// </summary>
|
|
|
/// <param name="input"></param>
|
|
|
/// <returns></returns>
|
|
|
- public async Task<string> OrderResourceCheck(int day, string companyid)
|
|
|
+ public async Task<string> OrderResourceCheck(List<mes_morder> mo_Mes_Morders,string domain, string userAccount)
|
|
|
{
|
|
|
- List<mes_morder> mo_Mes_Morders = new List<mes_morder>();
|
|
|
- if (day <= 0)
|
|
|
- {
|
|
|
- return "请选择开工时间在今天之后的工单。";
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- mo_Mes_Morders = _mysql_mes_morder.GetListAsync(x => companyid == x.company_id.ToString() && x.moentry_sys_stime >= DateTime.Now.Date.AddDays(1) && x.moentry_sys_stime <= DateTime.Now.Date.AddDays(day) && x.morder_state == MorderEnum.Initial_state && !x.IsDeleted).Result;
|
|
|
- }
|
|
|
-
|
|
|
List<mes_morder> checkMo = new List<mes_morder>();
|
|
|
//只做库存是否齐套检查
|
|
|
if (mo_Mes_Morders.Any())
|
|
|
{
|
|
|
//检查工单是否已经下了领料单
|
|
|
- var nbrList = _nbrMaster.Select(a => a.Domain == mo_Mes_Morders[0].factory_id.GetValueOrDefault().ToString() && a.Type == "SM" && mo_Mes_Morders.Select(c => c.morder_no).Contains(a.WorkOrd));
|
|
|
+ var nbrList = _nbrMaster.Select(a => a.Domain == domain && a.Type == "SM" && mo_Mes_Morders.Select(c => c.morder_no).Contains(a.WorkOrd));
|
|
|
foreach (var mo in mo_Mes_Morders)
|
|
|
{
|
|
|
//查出已产生领料单、过滤掉,取出未领料的工单
|
|
|
@@ -2392,7 +2400,7 @@ namespace Business.ResourceExamineManagement
|
|
|
var rtn = await OrderKittingCheck(checkMo);
|
|
|
if (rtn != null && rtn.examines != null)
|
|
|
{
|
|
|
- var sysSet = _generalizedCodeMaster.Select(s => s.FldName == "SystemConfig" && s.Val == "WorkOrderLockPeriod" && s.Domain == companyid).ToList();
|
|
|
+ var sysSet = _generalizedCodeMaster.Select(s => s.FldName == "SystemConfig" && s.Val == "WorkOrderLockPeriod" && s.Domain == domain).ToList();
|
|
|
decimal lookDay = 0;
|
|
|
if (sysSet.Any())
|
|
|
{
|
|
|
@@ -2457,7 +2465,12 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
workords = workords.Substring(1, workords.Length - 1);
|
|
|
//如果生成领料单,需清理掉当前工单的占用,然后根据领料单的数据,来生成工单的占用
|
|
|
- await CreatePickBill(workords, mo_Mes_Morders[0].factory_id.GetValueOrDefault().ToString());
|
|
|
+ await CreatePickBill(workords, domain, userAccount);
|
|
|
+ var insertList = GetCopyOP(workords, domain);
|
|
|
+ if (insertList.Any())
|
|
|
+ {
|
|
|
+ _periodSequenceDet.Insert(insertList);
|
|
|
+ }
|
|
|
}
|
|
|
return "ok";
|
|
|
}
|
|
|
@@ -2466,6 +2479,137 @@ namespace Business.ResourceExamineManagement
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ //寻找子工序生成排产计划
|
|
|
+ public List<PeriodSequenceDet> GetCopyOP(string workords,string domain)
|
|
|
+ {
|
|
|
+ List<PeriodSequenceDet> returnList = new List<PeriodSequenceDet>();
|
|
|
+ if (string.IsNullOrEmpty(workords))
|
|
|
+ {
|
|
|
+ return returnList;
|
|
|
+ }
|
|
|
+ List<string> workOrd = workords.Split(",").ToList();
|
|
|
+
|
|
|
+ //工单信息
|
|
|
+ var workOrdMasters = _workOrdMaster.Select(p => p.Domain == domain && workOrd.Contains(p.WorkOrd));
|
|
|
+ //当前工单所有工序
|
|
|
+ var workordRList = _workOrdRouting.Select(s => s.Domain == domain && workOrd.Contains(s.WorkOrd)).ToList();
|
|
|
+ //产线
|
|
|
+ List<ProdLineDetail> prodLines = _prodLineDetail.Select(p => workOrdMasters.Select(m => m.ItemNum).Contains(p.Part) && p.Domain == domain && p.IsActive);
|
|
|
+ //获取已排产的工单
|
|
|
+ List<PeriodSequenceDet> dbPeriodSequences = _periodSequenceDet.Select(p => workOrd.Contains(p.WorkOrds) && p.Domain == domain && p.IsActive);
|
|
|
+
|
|
|
+ List<WorkOrdRouting> copyList = new List<WorkOrdRouting>();
|
|
|
+ foreach (var work in workOrd)
|
|
|
+ {
|
|
|
+ List<WorkOrdRouting> alllist = workordRList.Where(s => s.WorkOrd == work).ToList();
|
|
|
+ List<WorkOrdRouting> parentlist = alllist.Where(s => s.WorkOrd == work && s.ParentOp == 0).ToList();
|
|
|
+ copyList.AddRange(parentlist.Where(s => s.MilestoneOp == false).ToList());
|
|
|
+ GetChildOP(parentlist, alllist, copyList);
|
|
|
+ }
|
|
|
+ foreach (var wor in copyList)
|
|
|
+ {
|
|
|
+ var workPsd = dbPeriodSequences.Where(s => s.ItemNum == wor.ItemNum && s.WorkOrds == wor.WorkOrd).ToList();
|
|
|
+ var line = prodLines.Where(p => p.Part == wor.ItemNum && p.Op == wor.OP).FirstOrDefault();
|
|
|
+ foreach (var psd in workPsd)
|
|
|
+ {
|
|
|
+ var newPsd = new PeriodSequenceDet
|
|
|
+ {
|
|
|
+ Domain = domain,
|
|
|
+ //Line = item.Line,
|
|
|
+ ItemNum = wor.ItemNum,
|
|
|
+ PlanDate = psd.PlanDate,
|
|
|
+ Period = 1,//目前只考虑一班制
|
|
|
+ OrdQty = psd.OrdQty,
|
|
|
+ WorkOrds = wor.WorkOrd,
|
|
|
+ Op = wor.OP,
|
|
|
+ IsActive = true,
|
|
|
+ Status = "",
|
|
|
+ CreateTime = DateTime.Now
|
|
|
+ };
|
|
|
+ if (line != null)
|
|
|
+ {
|
|
|
+ newPsd.Line = line.Line;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ newPsd.Line = psd.Line;
|
|
|
+ }
|
|
|
+ returnList.Add(newPsd);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return returnList;
|
|
|
+ }
|
|
|
+
|
|
|
+ //递归寻找到子级工序里工序编码最大的一条记录。
|
|
|
+ public void GetChildOP(List<WorkOrdRouting> parentlist, List<WorkOrdRouting> alllist, List<WorkOrdRouting> copyList)
|
|
|
+ {
|
|
|
+ foreach (var parent in parentlist)
|
|
|
+ {
|
|
|
+ var list = alllist.Where(s => s.ParentOp == parent.OP).ToList();
|
|
|
+ if (list.Any())
|
|
|
+ {
|
|
|
+ var maxOp = list.OrderByDescending(s => s.OP).FirstOrDefault();
|
|
|
+ if (maxOp != null)
|
|
|
+ {
|
|
|
+ copyList.Add(maxOp);
|
|
|
+ }
|
|
|
+ GetChildOP(list, alllist, copyList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 范围内工单齐套检查并下达
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="startime"></param>
|
|
|
+ /// <param name="endtime"></param>
|
|
|
+ /// <param name="domain"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<string> ProduceDayPlanKittingCheck(string startime,string endtime,string domain, string userAccount)
|
|
|
+ {
|
|
|
+ DateTime stime = DateTime.Now.Date.AddDays(-100);
|
|
|
+ if (!string.IsNullOrEmpty(startime))
|
|
|
+ {
|
|
|
+ DateTime.TryParse(startime, out stime);
|
|
|
+ }
|
|
|
+ DateTime etime = DateTime.Now.Date.AddYears(2);
|
|
|
+ if (!string.IsNullOrEmpty(endtime))
|
|
|
+ {
|
|
|
+ DateTime.TryParse(startime, out etime);
|
|
|
+ }
|
|
|
+
|
|
|
+ var periodSd = _periodSequenceDet.Select(s => s.Domain == domain && (s.Status == "" || s.Status == "r") && stime <= s.PlanDate && s.PlanDate <= etime).ToList();
|
|
|
+ if (periodSd.Any())
|
|
|
+ {
|
|
|
+ periodSd.Select(s => s.WorkOrds).ToList();
|
|
|
+ List<mes_morder> mo_Mes_Morders = _mysql_mes_morder.GetListAsync(x => domain == x.factory_id.ToString() && periodSd.Select(s => s.WorkOrds).Contains(x.morder_no) && (x.morder_state == MorderEnum.Initial_state || x.morder_state == MorderEnum.Xd_state) && !x.IsDeleted).Result;
|
|
|
+ return await OrderResourceCheck(mo_Mes_Morders, domain, userAccount);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ return "没有需要检查的工单";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 工单齐套检查并下达
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="startime"></param>
|
|
|
+ /// <param name="endtime"></param>
|
|
|
+ /// <param name="domain"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<string> ProduceWorkOrdKittingCheck(string workord, string domain,string userAccount)
|
|
|
+ {
|
|
|
+ if (!string.IsNullOrEmpty(workord))
|
|
|
+ {
|
|
|
+ List<mes_morder> mo_Mes_Morders = _mysql_mes_morder.GetListAsync(x => domain == x.factory_id.ToString() && x.morder_no == workord && x.morder_state == MorderEnum.Initial_state && !x.IsDeleted).Result;
|
|
|
+ return await OrderResourceCheck(mo_Mes_Morders, domain, userAccount);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return "没有需要检查的工单";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 工单齐套检查/替代料齐套检查结果保存
|
|
|
/// </summary>
|
|
|
@@ -3083,25 +3227,37 @@ namespace Business.ResourceExamineManagement
|
|
|
AutoCreateBomBill(companyid);
|
|
|
}
|
|
|
|
|
|
- public async Task AutoCreatePickBill(List<WorkOrdMaster> workOrdMasters, List<PeriodSequenceDet> dbPeriodSequences, List<NbrMaster> nbrMasterList, List<NbrDetail> nbrDetailList)
|
|
|
+ public async Task AutoCreatePickBill(List<WorkOrdMaster> workOrdMasters, List<PeriodSequenceDet> dbPeriodSequences, List<NbrMaster> nbrMasterList, List<NbrDetail> nbrDetailList, string userAccount)
|
|
|
{
|
|
|
if (dbPeriodSequences.Any())
|
|
|
{
|
|
|
List<string> AllLines = dbPeriodSequences.Where(a => workOrdMasters.Select(b=>b.WorkOrd).Contains(a.WorkOrds)).Select(a => a.Line).Distinct().ToList();
|
|
|
List<LineMaster> AllLineMasters = _lineMaster.Select(p => AllLines.Contains(p.Line) && p.Domain == workOrdMasters[0].Domain && p.IsActive);
|
|
|
-
|
|
|
-
|
|
|
+ var user = _employeeMaster.Select(s => s.Employee == userAccount && s.Domain == workOrdMasters[0].Domain).FirstOrDefault();
|
|
|
+ var ewdmList = _empWorkDutyMaster.Select(s => s.Domain == workOrdMasters[0].Domain).ToList();
|
|
|
//按照工单领料,一个工单一个领料单,之前是按照排产日期和产线分别领料
|
|
|
foreach (var workord in workOrdMasters)
|
|
|
{
|
|
|
Dictionary<string, decimal> dictItemQty = new Dictionary<string, decimal>();
|
|
|
decimal QtyOrdSum = workord.QtyOrded;
|
|
|
- List<string> lines = dbPeriodSequences.Where(a => a.WorkOrds == workord.WorkOrd).Select(a => a.Line).Distinct().ToList();
|
|
|
- List<LineMaster> lineMasters = AllLineMasters.Where(p => lines.Contains(p.Line) && p.Domain == workord.Domain && p.IsActive).ToList();
|
|
|
+ string LocationTo = "";
|
|
|
+ LineMaster defaultLine = null;
|
|
|
+
|
|
|
+ var dftPs = dbPeriodSequences.Where(a => a.WorkOrds == workord.WorkOrd).OrderBy(s => s.CreateTime).FirstOrDefault();
|
|
|
+ if (dftPs != null)
|
|
|
+ {
|
|
|
+ List<LineMaster> lineMasters = AllLineMasters.Where(p => p.Line == dftPs.Line && p.Domain == workord.Domain && p.IsActive).ToList();
|
|
|
+ if (lineMasters.Any())
|
|
|
+ {
|
|
|
+ defaultLine = lineMasters.FirstOrDefault();
|
|
|
+ }
|
|
|
+ LocationTo = defaultLine?.VLocation;
|
|
|
+ }
|
|
|
+
|
|
|
List<ProductStructureMaster> itemList = GetProductStructure(dbPeriodSequences.First(a => a.WorkOrds == workord.WorkOrd).ItemNum, QtyOrdSum, workord.Domain);
|
|
|
var childrenList = itemList.Select(a => a.ComponentItem).Distinct().ToList();
|
|
|
List<ItemMaster> itemLocList = _itemMaster.Select(p => childrenList.Contains(p.ItemNum) && p.Domain == workord.Domain && p.IsActive).Distinct().ToList();
|
|
|
- var dopIcitems = _ic_item.GetListAsync(s => itemLocList.Select(c => c.ItemNum).Contains(s.number)).Result;
|
|
|
+ var dopIcitems = _ic_item.GetListAsync(s => itemLocList.Select(c => c.ItemNum).Contains(s.number) && s.factory_id.ToString() == workord.Domain).Result;
|
|
|
//获取预处理提前期最大值
|
|
|
decimal cleanTime = 0;
|
|
|
if (dopIcitems.Any())
|
|
|
@@ -3111,21 +3267,20 @@ namespace Business.ResourceExamineManagement
|
|
|
List<ItemPackMaster> itemPackList = _itemPackMaster.Select(p => childrenList.Contains(p.ItemNum) && p.Domain == workord.Domain && p.IsActive).Distinct().ToList();
|
|
|
var Nbr = GetMaxSerialNumber(417416915624005);
|
|
|
|
|
|
- string LocationTo= lineMasters.FirstOrDefault()?.Location;
|
|
|
DateTime eff = workord.OrdDate.GetValueOrDefault().Date.AddDays(-1);
|
|
|
DateTime start = eff.AddDays((double)(0 - cleanTime - 1));
|
|
|
if (start <= DateTime.Now.Date)
|
|
|
{
|
|
|
start = DateTime.Now.Date;
|
|
|
}
|
|
|
- nbrMasterList.Add(new NbrMaster
|
|
|
+ var newNbr = new NbrMaster
|
|
|
{
|
|
|
- Domain = workOrdMasters[0].Domain,
|
|
|
+ Domain = workord.Domain,
|
|
|
Type = "SM",
|
|
|
Nbr = Nbr,
|
|
|
Remark = "下达自动领料",
|
|
|
//Date = dbPeriodSequences.Where(a => a.WorkOrds == workord.WorkOrd).Min(a => a.PlanDate),
|
|
|
- //ProdLine = item.Line,
|
|
|
+ ProdLine = defaultLine?.Line,
|
|
|
EffDate = eff,
|
|
|
Date = start,
|
|
|
Status = "",
|
|
|
@@ -3133,13 +3288,15 @@ namespace Business.ResourceExamineManagement
|
|
|
QtyOrd = QtyOrdSum,
|
|
|
IsActive = true,
|
|
|
IsChanged = true,
|
|
|
- Name = workOrdMasters[0].Domain,
|
|
|
+ Name = userAccount,
|
|
|
Department = "101",
|
|
|
CreateTime = DateTime.Now,
|
|
|
UpdateTime = DateTime.Now,
|
|
|
- CreateUser = workOrdMasters[0].Domain,
|
|
|
- UpdateUser = workOrdMasters[0].Domain
|
|
|
- });
|
|
|
+ CreateUser = user?.Name,
|
|
|
+ UpdateUser = user?.Name,
|
|
|
+ };
|
|
|
+ nbrMasterList.Add(newNbr);
|
|
|
+ List<string> headAccount = new List<string>();
|
|
|
int i = 1;
|
|
|
itemList?.ForEach(a =>
|
|
|
{
|
|
|
@@ -3148,14 +3305,22 @@ namespace Business.ResourceExamineManagement
|
|
|
if (find != null)
|
|
|
{
|
|
|
LocationFrom = find.Location;
|
|
|
+ //找出职责范围负责人
|
|
|
+ //s.ItemNum1 <= a.ComponentItem && a.ComponentItem <= s.ItemNum2
|
|
|
+ var ewdm = ewdmList.Find(s => 0 >= string.Compare(s.ItemNum1, a.ComponentItem) && 0 >= string.Compare(a.ComponentItem, s.ItemNum2));
|
|
|
+ if (ewdm != null && !string.IsNullOrEmpty(ewdm.Employee))
|
|
|
+ {
|
|
|
+ headAccount.Add(ewdm.Employee);
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
//相同物料汇总
|
|
|
var itemComponent = nbrDetailList.Find(b => b.Nbr == Nbr && b.ItemNum == a.ComponentItem);
|
|
|
if (itemComponent == null)
|
|
|
{
|
|
|
nbrDetailList.Add(new NbrDetail
|
|
|
{
|
|
|
- Domain = workOrdMasters[0].Domain,
|
|
|
+ Domain = workord.Domain,
|
|
|
Type = "SM",
|
|
|
Nbr = Nbr,
|
|
|
ItemNum = a.ComponentItem,
|
|
|
@@ -3170,8 +3335,8 @@ namespace Business.ResourceExamineManagement
|
|
|
IsActive = true,
|
|
|
CreateTime = DateTime.Now,
|
|
|
UpdateTime = DateTime.Now,
|
|
|
- CreateUser = workOrdMasters[0].Domain,
|
|
|
- UpdateUser = workOrdMasters[0].Domain,
|
|
|
+ CreateUser = user?.Name,
|
|
|
+ UpdateUser = user?.Name,
|
|
|
UM = a.UM
|
|
|
});
|
|
|
i++;
|
|
|
@@ -3182,6 +3347,15 @@ namespace Business.ResourceExamineManagement
|
|
|
nbrDetailList.First(b => b.Nbr == Nbr && b.ItemNum == a.ComponentItem).CurrQtyOpened = itemComponent.CurrQtyOpened + a.Qty;
|
|
|
}
|
|
|
});
|
|
|
+
|
|
|
+ if (headAccount.Any())
|
|
|
+ {
|
|
|
+ headAccount.Distinct();
|
|
|
+ newNbr.User1 = string.Join(",", headAccount);
|
|
|
+ string[] user2 = headAccount.ToArray();
|
|
|
+ newNbr.User2 =JsonConvert.SerializeObject(user2);
|
|
|
+ }
|
|
|
+
|
|
|
//先屏蔽备料单扣除库存的DEMO演示。
|
|
|
/*nbrDetailList.ForEach(a =>
|
|
|
{
|
|
|
@@ -3379,7 +3553,7 @@ namespace Business.ResourceExamineManagement
|
|
|
/// 生成领料单
|
|
|
/// </summary>
|
|
|
/// <param name="workOrd"></param>
|
|
|
- public async Task<string> CreatePickBill(string workOrd, string domain)
|
|
|
+ public async Task<string> CreatePickBill(string workOrd, string domain, string userAccount)
|
|
|
{
|
|
|
List<string> workOrds = new List<string>();
|
|
|
List<WorkOrdMaster> workOrdMasters = new List<WorkOrdMaster>();
|
|
|
@@ -3407,7 +3581,7 @@ namespace Business.ResourceExamineManagement
|
|
|
//查出已排产的工单
|
|
|
workOrdMasters = workOrdMasters.Where(p => dbWorkOrds.Contains(p.WorkOrd)).ToList();
|
|
|
//查出已产生领料单、过滤掉,取出未领料的工单
|
|
|
- var nbrList = _nbrMaster.Select(a => a.Domain == workOrdMasters[0].Domain && a.Type == "SM" && dbWorkOrds.Contains(a.WorkOrd));
|
|
|
+ var nbrList = _nbrMaster.Select(a => a.Domain == domain && a.Type == "SM" && dbWorkOrds.Contains(a.WorkOrd));
|
|
|
var noNbrlist = nbrList.Select(p => p.WorkOrd).ToList();
|
|
|
workOrdMasters = workOrdMasters.Where(p => !noNbrlist.Contains(p.WorkOrd)).ToList();
|
|
|
if (workOrdMasters.Count == 0)
|
|
|
@@ -3428,7 +3602,7 @@ namespace Business.ResourceExamineManagement
|
|
|
var ords = workOrdMasters.Select(p => p.WorkOrd).ToList();
|
|
|
|
|
|
dbPeriodSequences = dbPeriodSequences.Where(p => ords.Contains(p.WorkOrds)).ToList();
|
|
|
- await AutoCreatePickBill(workOrdMasters, dbPeriodSequences, nbrMasterList, nbrDetailList);
|
|
|
+ await AutoCreatePickBill(workOrdMasters, dbPeriodSequences, nbrMasterList, nbrDetailList, userAccount);
|
|
|
if (nbrMasterList.Any())
|
|
|
{
|
|
|
dbPeriodSequences.ForEach(p => { p.Status = "r"; });
|