|
|
@@ -19,6 +19,7 @@ using MongoDB.Driver.Linq;
|
|
|
using System;
|
|
|
using System.Collections;
|
|
|
using System.Collections.Generic;
|
|
|
+using System.ComponentModel.Design;
|
|
|
using System.Linq;
|
|
|
using System.Threading.Tasks;
|
|
|
using Volo.Abp.Application.Services;
|
|
|
@@ -3154,7 +3155,7 @@ namespace Business.Replenishment
|
|
|
weekPlan[i].ProductionOrder = morder_noList[i].NbrResult;
|
|
|
weekPlan[i].OrderNO = OrderNOList[i].NbrResult;
|
|
|
}
|
|
|
- await PlanOrderResourceCheck(moList.OrderBy(a=>a.moentry_sys_stime).ToList(), moentryList, bang_id,"",false);
|
|
|
+ await PlanOrderResourceCheck(moList.OrderBy(a=>a.moentry_sys_stime).ToList(), moentryList, bang_id,"",false,false);
|
|
|
|
|
|
var examine_resultList = _mysql_examine_result.GetListAsync(a => a.bangid == bang_id).Result;
|
|
|
await _businessDbContext.BulkInsertAsync(moList);
|
|
|
@@ -3322,7 +3323,7 @@ namespace Business.Replenishment
|
|
|
var moListCheck=_mysql_mes_morder.GetListAsync(a=>(a.morder_state==MorderEnum.Initial_state|| string.IsNullOrEmpty(a.morder_state)) && a.factory_id == input.factory_id).Result;
|
|
|
var moEntryListCheck = _mysql_mes_moentry.GetListAsync(a => moListCheck.Select(b=>b.morder_no).ToList().Contains(a.moentry_mono) && a.factory_id == input.factory_id).Result;
|
|
|
|
|
|
- await PlanOrderResourceCheck(moListCheck.OrderBy(a => a.moentry_sys_stime).ToList(), moEntryListCheck, bang_id, "",false);
|
|
|
+ await PlanOrderResourceCheck(moListCheck.OrderBy(a => a.moentry_sys_stime).ToList(), moEntryListCheck, bang_id, "",false,true);
|
|
|
|
|
|
var examine_resultList = _mysql_examine_result.GetListAsync(a => a.bangid == bang_id).Result;
|
|
|
|
|
|
@@ -4457,7 +4458,7 @@ namespace Business.Replenishment
|
|
|
a.QtyOrded = newqty;
|
|
|
});
|
|
|
|
|
|
- await PlanOrderResourceCheck(moList.OrderBy(a => a.moentry_sys_stime).ToList(), moentryList, bang_id, "", true);
|
|
|
+ await PlanOrderResourceCheck(moList.OrderBy(a => a.moentry_sys_stime).ToList(), moentryList, bang_id, "", true,false);
|
|
|
|
|
|
var examine_resultList = _mysql_examine_result.GetListAsync(a => a.bangid == bang_id).Result;
|
|
|
if (weekPlan.IsReplenishmentModel == "N")
|
|
|
@@ -4556,7 +4557,7 @@ namespace Business.Replenishment
|
|
|
/// </summary>
|
|
|
/// <param name="input"></param>
|
|
|
/// <returns></returns>
|
|
|
- public async Task<string> PlanOrderResourceCheck(List<mes_morder> Mes_Morders, List<mes_moentry> moentryList,long bangid,string analogCalcVersion,bool isChangePriority)
|
|
|
+ public async Task<string> PlanOrderResourceCheck(List<mes_morder> Mes_Morders, List<mes_moentry> moentryList,long bangid,string analogCalcVersion,bool isChangePriority,bool IsWeekPlan)
|
|
|
{
|
|
|
if (Mes_Morders.Any())
|
|
|
{
|
|
|
@@ -4616,7 +4617,7 @@ namespace Business.Replenishment
|
|
|
// _scheduleResultOpMaster.Delete(s => monolist.Contains(s.WorkOrd));
|
|
|
//}
|
|
|
//只走计划工单
|
|
|
- var rtn = await OrderKittingCheck(Mes_Morders, moentryList, bangid,analogCalcVersion,isChangePriority, true);
|
|
|
+ var rtn = await OrderKittingCheck(Mes_Morders, moentryList, bangid,analogCalcVersion,isChangePriority, true, IsWeekPlan);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
@@ -5025,6 +5026,10 @@ namespace Business.Replenishment
|
|
|
int.TryParse(sysSet[0].Ufld1, out ScheduleAgreement);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ //需要新增的PR集合
|
|
|
+ CalcPrAdd(prAddList, dbPurchaseList, ic_items, ScheduleAgreement);
|
|
|
+
|
|
|
//数据库需要减少的PR集合
|
|
|
CalcPrDel(prDelList, dbPurchaseList, ic_items, DBprmainList.Where(x=>x.state==1).ToList(), updatPrList, deletePrList);//只取新增状态的PR,可以做删除或者修改
|
|
|
|
|
|
@@ -5184,6 +5189,67 @@ namespace Business.Replenishment
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ public List<srm_pr_main> CalcPrAdd(List<AlignmentCalcDto> prAddList, List<srm_purchase> purchase, List<ic_item> ic_items,int ScheduleAgreement)
|
|
|
+ {
|
|
|
+ List<srm_pr_main> prList = new List<srm_pr_main>();
|
|
|
+ prAddList.ForEach(dto => {
|
|
|
+ var itemPurList = purchase.Where(x => x.number == dto.ItemNum).ToList();
|
|
|
+ var icitem = ic_items.Find(x => x.number == dto.ItemNum);
|
|
|
+ foreach (var supplier in itemPurList)
|
|
|
+ {
|
|
|
+ srm_pr_main srm_Pr = new srm_pr_main();
|
|
|
+ srm_Pr.GenerateNewId(help.NextId());
|
|
|
+ srm_Pr.pr_order_type = icitem.erp_cls == 2 ? "L" : "";//单据类型
|
|
|
+ srm_Pr.supplier_type = supplier.supplier_type;
|
|
|
+ srm_Pr.IsRequireGoods = supplier.IsRequireGoods;
|
|
|
+ if (supplier.supplier_type == "VMI")
|
|
|
+ {
|
|
|
+ srm_Pr.IsRequireGoods = 1;
|
|
|
+ srm_Pr.pr_order_type = "K";
|
|
|
+ }
|
|
|
+ srm_Pr.pr_purchaseid = supplier.supplier_id;//供应商id
|
|
|
+ srm_Pr.pr_purchasenumber = supplier.supplier_number;//供应商编码
|
|
|
+ srm_Pr.pr_purchasename = supplier.supplier_name;//供应商名称
|
|
|
+ srm_Pr.pr_purchaser = supplier.order_rector_name;//采购员
|
|
|
+ srm_Pr.pr_purchaser_num = supplier.order_rector_num;//采购员工号(采购信息表)
|
|
|
+ srm_Pr.pr_rqty = Math.Ceiling(dto.DifferenceQty * supplier.quota_rate.GetValueOrDefault() / 100);//需求数量
|
|
|
+ srm_Pr.pr_aqty = srm_Pr.pr_rqty;//申请数量
|
|
|
+ srm_Pr.pr_sqty = srm_Pr.pr_rqty;//建议数量
|
|
|
+ srm_Pr.icitem_id = icitem.Id;//物料id
|
|
|
+ srm_Pr.icitem_name = icitem.name;//物料名称
|
|
|
+ //srm_Pr.num = returnlist.num;
|
|
|
+ if (ScheduleAgreement==1)
|
|
|
+ {
|
|
|
+ supplier.lead_time = 7;//启用计划协议时,默认为7天。
|
|
|
+ srm_Pr.pr_ssend_date = DateTime.Now.Date.AddDays(1);//系统建议下单日期
|
|
|
+ srm_Pr.pr_sarrive_date = DateTime.Now.AddDays((double)supplier.lead_time.GetValueOrDefault());//系统建议到达日期(建议到货日期)
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ srm_Pr.pr_ssend_date = DateTime.Now.Date.AddDays(1);//系统建议下单日期
|
|
|
+ srm_Pr.pr_sarrive_date = DateTime.Now.Date.AddDays(1).AddDays((int)(Math.Ceiling(icitem.clean_leadtime.GetValueOrDefault() + icitem.self_inspection_date.GetValueOrDefault())));
|
|
|
+ }
|
|
|
+ srm_Pr.pr_sysprice = supplier.order_price;//系统价格(含税)
|
|
|
+ srm_Pr.pr_orderprice = srm_Pr.pr_rqty * supplier.order_price;//订单价格(含税)
|
|
|
+ srm_Pr.pr_price = supplier.netpurchase_price;//采购净价(不含税)
|
|
|
+ srm_Pr.pr_rate = supplier.taxrate;//税率
|
|
|
+ srm_Pr.pr_unit = icitem.unit;//单位
|
|
|
+ srm_Pr.state = 1;//状态
|
|
|
+ srm_Pr.old_apply_aqty = 0;//已申请数量
|
|
|
+ srm_Pr.pr_type = icitem.erp_cls == 2 ?2 :3;//申请类型
|
|
|
+ srm_Pr.currencytype = supplier.currency_type == null ? 1 : supplier.currency_type.Value;//币种
|
|
|
+ srm_Pr.secInv_ratio = icitem.secinv_ratio;//安全库存触发采购比例
|
|
|
+ srm_Pr.tenant_id = param.company_id;
|
|
|
+ srm_Pr.company_id = param.company_id;
|
|
|
+ srm_Pr.factory_id = param.factoryId;
|
|
|
+ srm_Pr.create_time = DateTime.Now;
|
|
|
+ srm_Pr.create_by_name = "admin";
|
|
|
+ srm_Pr.update_time = DateTime.Now;
|
|
|
+ srm_Pr.update_by_name = "admin";
|
|
|
+ prList.Add(srm_Pr);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return prList;
|
|
|
+ }
|
|
|
public async Task ExamineResultInsertDBAsync(List<ExamineResult> examines)
|
|
|
{
|
|
|
//检查结果写入数据库
|
|
|
@@ -6062,7 +6128,7 @@ namespace Business.Replenishment
|
|
|
//await _mysql_mes_morder.InsertManyAsync(moList);
|
|
|
//await _mysql_mes_moentry.InsertManyAsync(moentryList);
|
|
|
moList = moList.OrderBy(a => a.moentry_sys_stime).ToList();
|
|
|
- await PlanOrderResourceCheck(moList,moentryList, bangid, $"V{DateTime.Now.ToString("yyyyMMddHHmm")}",false);
|
|
|
+ await PlanOrderResourceCheck(moList,moentryList, bangid, $"V{DateTime.Now.ToString("yyyyMMddHHmm")}",false,false);
|
|
|
return "OK";
|
|
|
}
|
|
|
|