|
|
@@ -609,7 +609,7 @@ namespace Business.ResourceExamineManagement
|
|
|
});
|
|
|
if (autoCreates.Any())
|
|
|
{
|
|
|
- AutoCreateBomBill(autoCreates);
|
|
|
+ AutoCreateBomBill(param.company_id.ToString(), autoCreates);
|
|
|
pretreatments = _mysql_b_bom_pretreatment.GetListAsync(s => boms.Select(c => c.mysql_id).ToList().Contains(s.sourceid)).Result;
|
|
|
}
|
|
|
|
|
|
@@ -1027,7 +1027,7 @@ namespace Business.ResourceExamineManagement
|
|
|
}
|
|
|
|
|
|
//PR自动合并
|
|
|
- public void PrAutoMerge()
|
|
|
+ public void PrAutoMerge(string companyid)
|
|
|
{
|
|
|
//TODO:先按每周四调度任务循环,周五下单处理
|
|
|
|
|
|
@@ -1037,8 +1037,8 @@ namespace Business.ResourceExamineManagement
|
|
|
DateTime toTime = DateTime.Now; //new DateTime(2023, 7, 6);
|
|
|
DateTime starttime = toTime.Date.AddDays(8);
|
|
|
DateTime endtime = toTime.Date.AddDays(14);
|
|
|
- List<srm_pr_main> prlist = _mysql_srm_pr_main.GetListAsync(s => s.pr_ssend_date >= starttime && s.pr_ssend_date <= endtime && (s.state == 1 || s.state == 3)).Result;
|
|
|
- List<ic_item> ic_Items = _mysql_ic_item.GetListAsync(s => prlist.Select(c => c.icitem_id).Contains(s.Id)).Result;
|
|
|
+ List<srm_pr_main> prlist = _mysql_srm_pr_main.GetListAsync(s => s.company_id.ToString() == companyid && s.pr_ssend_date >= starttime && s.pr_ssend_date <= endtime && (s.state == 1 || s.state == 3)).Result;
|
|
|
+ List<ic_item> ic_Items = _mysql_ic_item.GetListAsync(s => s.company_id.ToString() == companyid && prlist.Select(c => c.icitem_id).Contains(s.Id)).Result;
|
|
|
List<PrWeekDto> prWeekDtos = new List<PrWeekDto>();
|
|
|
|
|
|
List<srm_pr_main> insetPrList = new List<srm_pr_main>();
|
|
|
@@ -1235,19 +1235,19 @@ namespace Business.ResourceExamineManagement
|
|
|
}*/
|
|
|
|
|
|
//PR自动审核
|
|
|
- public async Task<string> PrAutoApprove()
|
|
|
+ public async Task<string> PrAutoApprove(string companyid)
|
|
|
{
|
|
|
//直接按间隔多少天一次来处理数据,定时任务按周四来考虑。
|
|
|
DateTime toTime = new DateTime(2023, 7, 6);
|
|
|
DateTime starttime = toTime.AddDays(1);
|
|
|
DateTime endtime = toTime.AddDays(8);
|
|
|
- List<srm_pr_main> prlist = _mysql_srm_pr_main.GetListAsync(s => s.pr_rarrive_date >= starttime && s.pr_rarrive_date <= endtime && (s.state == 1|| s.state == 2 || s.state == 3)).Result;
|
|
|
+ List<srm_pr_main> prlist = _mysql_srm_pr_main.GetListAsync(s => s.company_id.ToString() == companyid && s.pr_rarrive_date >= starttime && s.pr_rarrive_date <= endtime && (s.state == 1|| s.state == 2 || s.state == 3)).Result;
|
|
|
|
|
|
if (prlist.Any())
|
|
|
{
|
|
|
- List<srm_purchase> purchaselist = _mysql_srm_purchase.GetListAsync(s => prlist.Select(c => c.icitem_id).Contains(s.icitem_id) && prlist.Select(c => c.pr_purchaseid).Contains(s.supplier_id)).Result;
|
|
|
- List<srm_supplier> itemsupplierList = _mysql_srm_supplier.GetListAsync(s => prlist.Select(c => c.pr_purchaseid).Contains(s.Id)).Result;
|
|
|
- List<ic_item> ic_Items = _mysql_ic_item.GetListAsync(s => prlist.Select(c => c.icitem_id).Contains(s.Id)).Result;
|
|
|
+ List<srm_purchase> purchaselist = _mysql_srm_purchase.GetListAsync(s => s.company_id.ToString() == companyid && prlist.Select(c => c.icitem_id).Contains(s.icitem_id) && prlist.Select(c => c.pr_purchaseid).Contains(s.supplier_id)).Result;
|
|
|
+ List<srm_supplier> itemsupplierList = _mysql_srm_supplier.GetListAsync(s => s.company_id.ToString() == companyid && prlist.Select(c => c.pr_purchaseid).Contains(s.Id)).Result;
|
|
|
+ List<ic_item> ic_Items = _mysql_ic_item.GetListAsync(s => s.company_id.ToString() == companyid && prlist.Select(c => c.icitem_id).Contains(s.Id)).Result;
|
|
|
PoActionListDto poaction = new PoActionListDto();
|
|
|
param.company_id = prlist[0].company_id;
|
|
|
param.factoryId = prlist[0].factory_id.GetValueOrDefault();
|
|
|
@@ -1452,7 +1452,7 @@ namespace Business.ResourceExamineManagement
|
|
|
}
|
|
|
|
|
|
//获取订单行数据 progress == "2"已做检查但是未评审的订单行
|
|
|
- //sentrys = sentrys.Where(s => s.progress == "2").ToList();
|
|
|
+ sentrys = sentrys.Where(s => s.progress == "2").ToList();
|
|
|
if (!sentrys.Any())
|
|
|
{
|
|
|
new NLogHelper("ResourceExamineAppService").WriteLog("ReceiveResult", "订单行数据不存在", _currentTenant.Id.ToString());
|
|
|
@@ -1508,16 +1508,6 @@ namespace Business.ResourceExamineManagement
|
|
|
WriteMorder = WriteMorder.Where(x => !dborders.Select(c => c.Id).Contains(x.mysql_id)).ToList();
|
|
|
#endregion
|
|
|
|
|
|
- List<mo_ic_item_stockoccupy> item_stockoccupy1 = await _ic_item_stockoccupy.GetListAsync(s => seIds.Contains(s.orderentry_id.Value) && bangidList.Contains(s.bang_id));
|
|
|
- if (item_stockoccupy1.Any())
|
|
|
- {
|
|
|
- item_stockoccupy1.ForEach(s => { s.mysql_id = help.NextId(); });
|
|
|
- var sklist = ObjectMapper.Map<List<mo_ic_item_stockoccupy>, List<ic_item_stockoccupy>>(item_stockoccupy1);
|
|
|
- sklist.ForEach(s => { s.create_time = DateTime.Now; });
|
|
|
- _businessDbContext.BulkInsert(sklist);
|
|
|
- return "ok";
|
|
|
- }
|
|
|
-
|
|
|
//批量保存 后期考虑子工单
|
|
|
List<mes_morder> moderlist = new List<mes_morder>();
|
|
|
List<WorkOrdMaster> workOrds = new List<WorkOrdMaster>();
|
|
|
@@ -1541,7 +1531,6 @@ namespace Business.ResourceExamineManagement
|
|
|
List<mo_srm_pr_main> prmainlist = await _srm_pr_main.GetListAsync(s => seIds.Contains(s.sentry_id.Value) && bangidList.Contains(s.bang_id.Value));
|
|
|
List<mo_ic_item_stockoccupy> item_stockoccupy = await _ic_item_stockoccupy.GetListAsync(s => seIds.Contains(s.orderentry_id.Value) && bangidList.Contains(s.bang_id));
|
|
|
|
|
|
-
|
|
|
using (var unitOfWork = _unitOfWorkManager.Begin(false, true))
|
|
|
{
|
|
|
try
|
|
|
@@ -1585,7 +1574,7 @@ namespace Business.ResourceExamineManagement
|
|
|
if (item_stockoccupy.Any())
|
|
|
{
|
|
|
var sklist = ObjectMapper.Map<List<mo_ic_item_stockoccupy>, List<ic_item_stockoccupy>>(item_stockoccupy);
|
|
|
- sklist.ForEach(s => { s.create_time = DateTime.Now; });
|
|
|
+ sklist.ForEach(s => { s.GenerateNewId(help.NextId()); s.create_time = DateTime.Now; });
|
|
|
_businessDbContext.BulkInsert(sklist);
|
|
|
}
|
|
|
if (po_occupy.Any())
|
|
|
@@ -2358,7 +2347,7 @@ namespace Business.ResourceExamineManagement
|
|
|
}
|
|
|
mo_Mes_Morders = _mysql_mes_morder.GetListAsync(x => companyid == x.company_id.ToString() && workOrds.Contains(x.morder_no)).Result;
|
|
|
//如果工单有今天和之前的,则提示不处理
|
|
|
- if (mo_Mes_Morders.Where(s => s.moentry_sys_stime >= DateTime.Now.Date).Count() > 0)
|
|
|
+ if (mo_Mes_Morders.Where(s => s.moentry_sys_stime <= DateTime.Now.Date).Count() > 0)
|
|
|
{
|
|
|
return "请选择开工时间在今天之后的工单。";
|
|
|
}
|
|
|
@@ -2387,19 +2376,19 @@ namespace Business.ResourceExamineManagement
|
|
|
if (nbr.Ufld1 == "completed")
|
|
|
{
|
|
|
//工单状态为 “生产齐套”
|
|
|
- mo.MaterialSituation = "生产齐套";
|
|
|
+ mo.MaterialSituation = MorderEnum.ProduceComplete;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//工单状态为 “备料滞后”
|
|
|
- mo.MaterialSituation = "备料滞后";
|
|
|
+ mo.MaterialSituation = MorderEnum.Lag;
|
|
|
}
|
|
|
}
|
|
|
//完成时间未到
|
|
|
else if (nbr.EffDate.GetValueOrDefault().Date > DateTime.Now.Date)
|
|
|
{
|
|
|
//工单状态为 “备料中”
|
|
|
- mo.MaterialSituation = "备料中";
|
|
|
+ mo.MaterialSituation = MorderEnum.Preparation;
|
|
|
}
|
|
|
//完成时间已经过去,则不做处理
|
|
|
}
|
|
|
@@ -2456,17 +2445,17 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
//生成领料单
|
|
|
workords += "," + cmo.morder_no;
|
|
|
- cmo.MaterialSituation = "备料中";
|
|
|
+ cmo.MaterialSituation = MorderEnum.Preparation;
|
|
|
cmo.morder_state = MorderEnum.Xd_state;
|
|
|
}
|
|
|
else {
|
|
|
- cmo.MaterialSituation = "仓库齐套";
|
|
|
+ cmo.MaterialSituation = MorderEnum.CarehouseComplete;
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//工单状态为 “仓库不齐套”
|
|
|
- cmo.MaterialSituation = "仓库不齐套";
|
|
|
+ cmo.MaterialSituation = MorderEnum.NoCarehouseComplete;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -2479,7 +2468,7 @@ namespace Business.ResourceExamineManagement
|
|
|
if (workords.Length > 0)
|
|
|
{
|
|
|
workords = workords.Substring(1, workords.Length - 1);
|
|
|
- await CreatePickBill(workords);
|
|
|
+ await CreatePickBill(workords, mo_Mes_Morders[0].factory_id.GetValueOrDefault().ToString());
|
|
|
}
|
|
|
return JsonConvert.SerializeObject("ok");
|
|
|
}
|
|
|
@@ -2735,7 +2724,7 @@ namespace Business.ResourceExamineManagement
|
|
|
});
|
|
|
if (autoCreates.Any())
|
|
|
{
|
|
|
- AutoCreateBomBill(autoCreates);
|
|
|
+ AutoCreateBomBill(param.company_id.ToString(), autoCreates);
|
|
|
pretreatments = _mysql_b_bom_pretreatment.GetListAsync(s => boms.Select(c => c.mysql_id).ToList().Contains(s.sourceid)).Result;
|
|
|
}
|
|
|
|
|
|
@@ -2764,7 +2753,7 @@ namespace Business.ResourceExamineManagement
|
|
|
ExamineResult dtl = new ExamineResult();
|
|
|
dtl.morder_id = item.Id;
|
|
|
dtl.morder_no = item.morder_no;
|
|
|
-
|
|
|
+ dtl.bangid = bangid;
|
|
|
dtl.order_statr_time = item.start_time;
|
|
|
dtl.bom_number = item.bom_number;
|
|
|
dtl.need_qty = item.need_number.GetValueOrDefault();
|
|
|
@@ -3035,9 +3024,9 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <summary>
|
|
|
/// 自动生成BOM预处理清单
|
|
|
/// </summary>
|
|
|
- public void AutoCreateBomBill(List<mo_ic_bom> ic_Boms = null)
|
|
|
+ public void AutoCreateBomBill(string companyid,List<mo_ic_bom> ic_Boms = null)
|
|
|
{
|
|
|
- ic_Boms ??= _ic_bom.GetListAsync(p => p.factory_id == 10101 && p.company_id == 101 && !p.IsDeleted).Result.ToList();
|
|
|
+ ic_Boms ??= _ic_bom.GetListAsync(p => p.company_id.ToString() == companyid && !p.IsDeleted).Result.ToList();
|
|
|
var pretreatment = _mysql_b_bom_pretreatment.GetListAsync(s => ic_Boms.Select(c => c.mysql_id).ToList().Contains(s.sourceid)).Result;
|
|
|
|
|
|
//物料bom
|
|
|
@@ -3094,9 +3083,9 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <summary>
|
|
|
/// BOM清单批量预处理
|
|
|
/// </summary>
|
|
|
- public void AutoCreateBomBillInterface()
|
|
|
+ public void AutoCreateBomBillInterface(string companyid)
|
|
|
{
|
|
|
- AutoCreateBomBill();
|
|
|
+ AutoCreateBomBill(companyid);
|
|
|
}
|
|
|
|
|
|
public async Task AutoCreatePickBill(List<WorkOrdMaster> workOrdMasters, List<PeriodSequenceDet> dbPeriodSequences, List<NbrMaster> nbrMasterList, List<NbrDetail> nbrDetailList)
|
|
|
@@ -3368,7 +3357,7 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <param name="workOrd"></param>
|
|
|
/// <returns></returns>
|
|
|
/// <exception cref="NotImplementedException"></exception>
|
|
|
- public async Task<string> ProductionSchedule(string workOrd)
|
|
|
+ public async Task<string> ProductionSchedule(string workOrd,string domain)
|
|
|
{
|
|
|
List<string> workOrds = workOrd.Split(",").ToList();
|
|
|
if (workOrds.Count == 0)
|
|
|
@@ -3376,7 +3365,7 @@ namespace Business.ResourceExamineManagement
|
|
|
return "";
|
|
|
}
|
|
|
//获取工单数据
|
|
|
- var workOrdMasters = _workOrdMaster.Select(p => workOrds.Contains(p.WorkOrd));
|
|
|
+ var workOrdMasters = _workOrdMaster.Select(p => workOrds.Contains(p.WorkOrd) && p.Domain == domain);
|
|
|
//获取已排产的工单
|
|
|
List<string> dbWorkOrds = _periodSequenceDet.Select(p => workOrds.Contains(p.WorkOrds)).Select(p => p.WorkOrds).Distinct().ToList();
|
|
|
//过滤掉已排产的工单
|
|
|
@@ -3395,14 +3384,14 @@ namespace Business.ResourceExamineManagement
|
|
|
/// 生成领料单
|
|
|
/// </summary>
|
|
|
/// <param name="workOrd"></param>
|
|
|
- public async Task<string> CreatePickBill(string workOrd)
|
|
|
+ public async Task<string> CreatePickBill(string workOrd, string domain)
|
|
|
{
|
|
|
List<string> workOrds = new List<string>();
|
|
|
List<WorkOrdMaster> workOrdMasters = new List<WorkOrdMaster>();
|
|
|
if (string.IsNullOrEmpty(workOrd))
|
|
|
{
|
|
|
//获取工单数据
|
|
|
- workOrdMasters = _workOrdMaster.Select(p => p.OrdDate >= DateTime.Now.Date.AddDays(1) && p.OrdDate < DateTime.Now.Date.AddDays(4) && p.Status != "r" && p.Status != "c");
|
|
|
+ workOrdMasters = _workOrdMaster.Select(p => p.Domain == domain && p.OrdDate >= DateTime.Now.Date.AddDays(1) && p.OrdDate < DateTime.Now.Date.AddDays(4) && p.Status != "r" && p.Status != "c");
|
|
|
}
|
|
|
else {
|
|
|
workOrds = workOrd.Split(",").ToList();
|
|
|
@@ -3410,14 +3399,14 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
return JsonConvert.SerializeObject("没有需要下达的工单。");
|
|
|
}
|
|
|
- workOrdMasters = _workOrdMaster.Select(p => workOrds.Contains(p.WorkOrd) && p.Status != "r" && p.Status != "c");
|
|
|
+ workOrdMasters = _workOrdMaster.Select(p => p.Domain == domain && workOrds.Contains(p.WorkOrd) && p.Status != "r" && p.Status != "c");
|
|
|
}
|
|
|
if (workOrdMasters.Count == 0)
|
|
|
{
|
|
|
return "没有需要下达的工单。";
|
|
|
}
|
|
|
//获取已排产的工单
|
|
|
- List<PeriodSequenceDet> dbPeriodSequences = _periodSequenceDet.Select(p => workOrds.Contains(p.WorkOrds) && p.Domain == workOrdMasters[0].Domain && p.IsActive);
|
|
|
+ List<PeriodSequenceDet> dbPeriodSequences = _periodSequenceDet.Select(p => workOrds.Contains(p.WorkOrds) && p.Domain == domain && p.IsActive);
|
|
|
List<string> dbWorkOrds = dbPeriodSequences.Select(p => p.WorkOrds).Distinct().ToList();
|
|
|
|
|
|
//查出已排产的工单
|
|
|
@@ -3430,6 +3419,14 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
return "当前选择的工单已领料或未排产。";
|
|
|
}
|
|
|
+
|
|
|
+ //增加判断当前工单是否进行过齐套检查,并且是仓库齐套
|
|
|
+ var mes_morders = _mysql_mes_morder.GetListAsync(s => dbWorkOrds.Contains(s.morder_no) && s.factory_id.ToString() == domain).Result;
|
|
|
+ if (mes_morders.Where(s => s.MaterialSituation != MorderEnum.CarehouseComplete).Any())
|
|
|
+ {
|
|
|
+ return "请选择物料情况为“仓库齐套”的工单。";
|
|
|
+ }
|
|
|
+
|
|
|
List<NbrMaster> nbrMasterList = new List<NbrMaster>();//需要生成领料单列表
|
|
|
List<NbrDetail> nbrDetailList = new List<NbrDetail>();//需要生成领料单明细列表
|
|
|
|