|
|
@@ -326,9 +326,9 @@ namespace Business.ResourceExamineManagement
|
|
|
_mysql_mes_tech_process = mysql_mes_tech_process;
|
|
|
_mysql_srm_po_main = mysql_srm_po_main;
|
|
|
_mysql_srm_po_list = mysql_srm_po_list;
|
|
|
- _mysql_srm_po_occupy= mysql_srm_po_occupy;
|
|
|
- _mysql_ic_item_pur= mysql_ic_item_pur;
|
|
|
- _mysql_ic_plan= mysql_ic_plan;
|
|
|
+ _mysql_srm_po_occupy = mysql_srm_po_occupy;
|
|
|
+ _mysql_ic_item_pur = mysql_ic_item_pur;
|
|
|
+ _mysql_ic_plan = mysql_ic_plan;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
@@ -397,14 +397,14 @@ namespace Business.ResourceExamineManagement
|
|
|
long bangid = snow.NextId();
|
|
|
|
|
|
//获取订单数据
|
|
|
- crm_seorder sorder = _mysql_crm_seorder.GetAsync(p=>p.Id == input.sorderId && p.IsDeleted ==false).Result;
|
|
|
+ crm_seorder sorder = _mysql_crm_seorder.GetListAsync(p => p.Id == input.sorderId && p.IsDeleted == false).Result.FirstOrDefault();
|
|
|
if (sorder == null)
|
|
|
{
|
|
|
throw new NotImplementedException("订单数据不存在!");
|
|
|
}
|
|
|
//获取订单行数据
|
|
|
List<crm_seorderentry> sentrys = _mysql_crm_seorderentry.GetListAsync(p => p.seorder_id == input.sorderId && p.IsDeleted == false).Result;
|
|
|
-
|
|
|
+
|
|
|
string bom_number = "BOM00042070";
|
|
|
int packages = 1000;
|
|
|
|
|
|
@@ -433,12 +433,36 @@ namespace Business.ResourceExamineManagement
|
|
|
//await SaveChangesCompletedEventData()
|
|
|
|
|
|
//数据库快照-同步mysql库数据到mongoDB中
|
|
|
- //await SyncData(input.tenantId, input.factoryId, bangid);
|
|
|
+ await SyncData(input.tenantId, input.factoryId, bangid);
|
|
|
+
|
|
|
+ List<BomChildExamineDto> returnlist = new List<BomChildExamineDto>();
|
|
|
+ BomChildExamineDto bomChild = new BomChildExamineDto();
|
|
|
+ bomChild.id = 4331979;
|
|
|
+ bomChild.item_id = 809914;
|
|
|
+ bomChild.item_name = "壳子";
|
|
|
+ bomChild.unit = "只";
|
|
|
+ bomChild.item_code = "2.1.01.01.0007";
|
|
|
+ bomChild.lack_qty = 20;
|
|
|
+ bomChild.erp_cls = 2;
|
|
|
+ returnlist.Add(bomChild);
|
|
|
+ BomChildExamineDto bomChild2 = new BomChildExamineDto();
|
|
|
+ bomChild2.id = 4331981;
|
|
|
+ bomChild2.item_id = 809667;
|
|
|
+ bomChild2.item_name = "壳子";
|
|
|
+ bomChild2.unit = "只";
|
|
|
+ bomChild2.item_code = "2.1.01.01.0053";
|
|
|
+ bomChild2.lack_qty = 20;
|
|
|
+ bomChild2.erp_cls = 2;
|
|
|
+ returnlist.Add(bomChild2);
|
|
|
+ DateTime dateTime = DateTime.Now.AddDays(5);
|
|
|
+ CheckOnOrder(returnlist, 102, 10201, dateTime, bangid);
|
|
|
|
|
|
//产能检查
|
|
|
await ProductiveExamine(bom_number, packages);
|
|
|
//var id = Save(input.tenantId, input.factoryId);
|
|
|
- //await GenerateMorder(id);
|
|
|
+ //await GenerateMorder(1736470478942093312);
|
|
|
+ //var dateTime = DateTime.Parse("2021-09-03");
|
|
|
+ //await CheckMorder("9.1.03.01.0541", 1000, dateTime, 1736470478942093312);
|
|
|
return null;
|
|
|
throw new NotImplementedException();
|
|
|
}
|
|
|
@@ -576,7 +600,7 @@ namespace Business.ResourceExamineManagement
|
|
|
|
|
|
//采购订单
|
|
|
var srm_po_main = _mysql_srm_po_main.GetListAsync(x => x.tenant_id == tenantId && x.factory_id == factoryId).Result;
|
|
|
- if (crm_seorderentry.Count > 0)
|
|
|
+ if (srm_po_main.Count > 0)
|
|
|
{
|
|
|
srm_po_main.ForEach(item => { item.bang_id = bangid; });
|
|
|
await _srm_po_main.InsertMany(srm_po_main);
|
|
|
@@ -732,13 +756,13 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <param name="DeliverDate">交付日期</param>
|
|
|
/// <param name="seorderentry_id">销售订单子表ID</param>
|
|
|
/// <returns></returns>
|
|
|
- public async Task GenerateMorder(long seorderentry_id)
|
|
|
+ public async Task GenerateMorder(crm_seorderentry seorderentry, decimal? Quantity)
|
|
|
{
|
|
|
//1.库存、在制工单检查完成后 当前BOM需要自制时 产生工单。
|
|
|
|
|
|
//2.每一个销售订单行对应一个工单。
|
|
|
//查询销售订单子表数据
|
|
|
- var seorderentry = await _mysql_crm_seorderentry.FindAsync(x => x.Id == seorderentry_id);
|
|
|
+ //var seorderentry = await _mysql_crm_seorderentry.FindAsync(x => x.Id == seorderentry_id);
|
|
|
//获取销售订单信息
|
|
|
var seorder = await _mysql_crm_seorder.FindAsync(x => x.Id == seorderentry.seorder_id);
|
|
|
//物料BOM
|
|
|
@@ -746,6 +770,8 @@ namespace Business.ResourceExamineManagement
|
|
|
|
|
|
var ic_bom = _ic_bom.GetManyByCondition(x => x.bom_number == seorderentry.bom_number).Result.FirstOrDefault();
|
|
|
|
|
|
+ var Number = seorderentry.qty - Quantity;
|
|
|
+
|
|
|
mes_morder mes_Morder = new mes_morder();
|
|
|
mes_Morder.GenerateNewId();
|
|
|
mes_Morder.morder_type = "销售工单";
|
|
|
@@ -760,7 +786,7 @@ namespace Business.ResourceExamineManagement
|
|
|
//根绝系统配置参数 取最早或者最晚开始日期
|
|
|
var StartDate = DateTime.Now.Date.AddDays(3);
|
|
|
mes_Morder.moentry_sys_stime = StartDate;
|
|
|
- var ProductiveDate = ProductiveExamine(ic_bom.bom_number, (int)(seorderentry.qty.Value));
|
|
|
+ var ProductiveDate = ProductiveExamine(ic_bom.bom_number, (int)(Number.Value));
|
|
|
//系统建议完工日期为 开工日期+产能检查时间=完工日期
|
|
|
var Day = ProductiveDate.Result / (60 * 10); //返回的分钟除以十个小时得出工作天数;
|
|
|
mes_Morder.moentry_sys_etime = StartDate.AddDays((double)Day);
|
|
|
@@ -783,8 +809,8 @@ namespace Business.ResourceExamineManagement
|
|
|
mes_Morder.picking_qty = 0;
|
|
|
//TODO:可删除主表字段
|
|
|
mes_Morder.unit = seorderentry.unit;
|
|
|
- mes_Morder.morder_production_number = seorderentry.qty;
|
|
|
- mes_Morder.need_number = seorderentry.qty;
|
|
|
+ mes_Morder.morder_production_number = Number;
|
|
|
+ mes_Morder.need_number = Number;
|
|
|
mes_Morder.remaining_number = 0;
|
|
|
//生成工单子表数据
|
|
|
mes_moentry mes_Moentry = new mes_moentry();
|
|
|
@@ -795,8 +821,8 @@ namespace Business.ResourceExamineManagement
|
|
|
mes_Moentry.fbill_no = seorderentry.bill_no;
|
|
|
mes_Moentry.fentry_id = seorderentry.entry_seq.Value;
|
|
|
mes_Moentry.unit = seorderentry.unit;
|
|
|
- mes_Moentry.morder_production_number = seorderentry.qty;
|
|
|
- mes_Moentry.need_number = seorderentry.qty;
|
|
|
+ mes_Moentry.morder_production_number = Number;
|
|
|
+ mes_Moentry.need_number = Number;
|
|
|
mes_Moentry.remaining_number = 0;
|
|
|
mes_Moentry.factory_id = seorderentry.factory_id;
|
|
|
//using (TransactionScope scope = new TransactionScope())
|
|
|
@@ -841,23 +867,23 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <param name="DeliverDate">交付日期</param>
|
|
|
/// <param name="seorderentry_id">销售订单子表ID</param>
|
|
|
/// <returns></returns>
|
|
|
- public async Task<bool> CheckMorder(string bomNumber, decimal? Quantity, DateTime DeliverDate, long seorderentry_id)
|
|
|
+ public async Task<bool> CheckMorder(string bomNumber, decimal? Quantity, DateTime DeliverDate, crm_seorderentry seorderentry)
|
|
|
{
|
|
|
- if (string.IsNullOrEmpty(bomNumber) || Quantity != null)
|
|
|
+ if (string.IsNullOrEmpty(bomNumber) || Quantity == null)
|
|
|
{
|
|
|
//TODO:入参异常;
|
|
|
throw new NotImplementedException("BOM编码或需求数量不能为空!");
|
|
|
}
|
|
|
//获取销售订单信息
|
|
|
//var seorder = await _crm_seorder.FindAsync(x => x.Id == OrderId);
|
|
|
- var seorderentry = await _mysql_crm_seorderentry.FindAsync(x => x.Id == seorderentry_id);
|
|
|
+ //var seorderentry = await _mysql_crm_seorderentry.FindAsync(x => x.Id == seorderentry_id);
|
|
|
//根据Bom编码查询出对应工单并且状态不为完成、关闭,非委外工单。
|
|
|
//TODO:工单类型;
|
|
|
var morderList = await _mes_morder.GetManyByCondition(x => x.bom_number == bomNumber && (x.morder_state != "完成" || x.morder_state != "关闭"
|
|
|
&& x.morder_icitem_type != "相关委外工单") && x.IsDeleted == false && x.tenant_id == seorderentry.tenant_id);
|
|
|
|
|
|
//获取物料详情
|
|
|
- var mysql_ic_item = await _mysql_ic_item.FindAsync(x => x.number == bomNumber && x.tenant_id == seorderentry.tenant_id);
|
|
|
+ var ic_item = _ic_item.GetManyByCondition(x => x.number == seorderentry.item_number && x.tenant_id == seorderentry.tenant_id).Result.FirstOrDefault();
|
|
|
|
|
|
//工单已被占用后要与占用表关联查询...减去占用量后 剩下生产数量可供下个销售工单使用。
|
|
|
var mes_mooccupyList = await _mes_mooccupy.GetManyByCondition(x => x.moo_state == 1 && x.IsDeleted == false && x.tenant_id == seorderentry.tenant_id);
|
|
|
@@ -871,7 +897,7 @@ namespace Business.ResourceExamineManagement
|
|
|
//存在此数据满足当前BOM交付找到最早日期工单,则返回无需后续继续检查。
|
|
|
var morder = morderDataList.OrderByDescending(x => x.planner_end_date).FirstOrDefault();
|
|
|
var mooccupies = mes_mooccupyList.Where(x => x.moo_moid == morder.Id).ToList();
|
|
|
- var mes_Mooccupy = GetMooccupies(seorderentry, mysql_ic_item, morder, mooccupies);
|
|
|
+ var mes_Mooccupy = GetMooccupies(seorderentry, ic_item, morder, mooccupies);
|
|
|
await _mes_mooccupy.InsertOne(mes_Mooccupy);
|
|
|
}
|
|
|
else
|
|
|
@@ -890,7 +916,7 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
//查询出工单已占用总数量
|
|
|
var mooccupies = mes_mooccupyList.Where(x => x.moo_moid == item.Id).ToList();
|
|
|
- var mes_Mooccupy = GetMooccupies(seorderentry, mysql_ic_item, item, mooccupies);
|
|
|
+ var mes_Mooccupy = GetMooccupies(seorderentry, ic_item, item, mooccupies);
|
|
|
mes_Mooccupies.Add(mes_Mooccupy);
|
|
|
//需求数量-占用量后小于或等于0 停止循环占用工单
|
|
|
if (number - mes_Mooccupy.moo_qty <= 0)
|
|
|
@@ -909,7 +935,7 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <param name="item">工单表</param>
|
|
|
/// <param name="mes_mooccupy">占用工单表</param>
|
|
|
/// <returns></returns>
|
|
|
- public mes_mooccupy GetMooccupies(crm_seorderentry seorderentry, ic_item mysql_ic_item, mes_morder item, List<mes_mooccupy> mes_mooccupy)
|
|
|
+ public mes_mooccupy GetMooccupies(crm_seorderentry seorderentry, ic_item ic_item, mes_morder item, List<mes_mooccupy> mes_mooccupy)
|
|
|
{
|
|
|
decimal? Sumqty = 0;
|
|
|
if (mes_mooccupy.Count > 0)
|
|
|
@@ -923,9 +949,9 @@ namespace Business.ResourceExamineManagement
|
|
|
mes_Mooccupy.moo_id_billid = seorderentry.seorder_id;//销售订单ID
|
|
|
mes_Mooccupy.fbill_no = seorderentry.bill_no;//销售订单号
|
|
|
mes_Mooccupy.fentry_id = seorderentry.entry_seq.Value;//销售订单行
|
|
|
- mes_Mooccupy.fitem_name = mysql_ic_item.name;//物料名称
|
|
|
- mes_Mooccupy.fitem_number = mysql_ic_item.number;
|
|
|
- mes_Mooccupy.fmodel = mysql_ic_item.model;//规格型号
|
|
|
+ mes_Mooccupy.fitem_name = ic_item.name;//物料名称
|
|
|
+ mes_Mooccupy.fitem_number = ic_item.number;
|
|
|
+ mes_Mooccupy.fmodel = ic_item.model;//规格型号
|
|
|
mes_Mooccupy.moo_moid = item.Id;
|
|
|
mes_Mooccupy.moo_mo = item.morder_no;
|
|
|
//占用量=生产计划数量-入库数量-已被占用数量
|
|
|
@@ -1274,7 +1300,7 @@ namespace Business.ResourceExamineManagement
|
|
|
//returnlist[0].kz = childList.Min(s => s.kz);//得到最小可制数量。
|
|
|
//再加个循环,来根据替代关系里的检查结果,根据规则明确使用和生成占用关系。
|
|
|
|
|
|
-
|
|
|
+
|
|
|
foreach (var item in childList)
|
|
|
{
|
|
|
if (item.haveicsubs == 1)
|
|
|
@@ -1283,7 +1309,8 @@ namespace Business.ResourceExamineManagement
|
|
|
// 如果有群组替代,就移除掉被检查过的记录 item.icitem_ids
|
|
|
CalcStrategy(item, returnlist, bangid, sklist);
|
|
|
}
|
|
|
- else {
|
|
|
+ else
|
|
|
+ {
|
|
|
//直接占用库存,缺料就生成采购
|
|
|
}
|
|
|
}
|
|
|
@@ -1313,7 +1340,8 @@ namespace Business.ResourceExamineManagement
|
|
|
}*/
|
|
|
}
|
|
|
|
|
|
- public void RecalculationStock(BomChildExamineDto item, List<BomChildExamineDto> returnlist, List<ic_item_stockoccupy> sklist) {
|
|
|
+ public void RecalculationStock(BomChildExamineDto item, List<BomChildExamineDto> returnlist, List<ic_item_stockoccupy> sklist)
|
|
|
+ {
|
|
|
//再计算一边占用情况,这里根据父级产品额缺料量*当前子料的使用数量-子料库存量。得出当前子物料的缺料数量
|
|
|
var parent = returnlist.Find(s => s.id == item.parent_id);
|
|
|
decimal stockQty = sklist.Where(s => s.icitem_id == item.item_id).Sum(p => p.quantity);
|
|
|
@@ -1323,7 +1351,7 @@ namespace Business.ResourceExamineManagement
|
|
|
item.stock_state = item.lack_qty > 0 ? 0 : 1;
|
|
|
}
|
|
|
|
|
|
- public void CalcStrategy(BomChildExamineDto item, List<BomChildExamineDto> returnlist,long bangid, List<ic_item_stockoccupy> sklist)
|
|
|
+ public void CalcStrategy(BomChildExamineDto item, List<BomChildExamineDto> returnlist, long bangid, List<ic_item_stockoccupy> sklist)
|
|
|
{
|
|
|
//提取群组关系
|
|
|
var sublist = returnlist.Where(s => s.parent_id == item.parent_id && s.num == item.num && s.level == item.level).OrderBy(c => c.substitute_all_num).ToList();
|
|
|
@@ -1346,7 +1374,8 @@ namespace Business.ResourceExamineManagement
|
|
|
//走混用
|
|
|
MixedUse(item,sublist, returnlist, sklist, bangid, parent);
|
|
|
}
|
|
|
- else {
|
|
|
+ else
|
|
|
+ {
|
|
|
//走整批
|
|
|
WholeBatch(item,sublist, returnlist, sklist, select, bangid, parent);
|
|
|
}
|
|
|
@@ -1585,7 +1614,8 @@ namespace Business.ResourceExamineManagement
|
|
|
//计算此次群组是否有符合
|
|
|
MaterialCalc(sublist, returnlist, sockoccupyList);
|
|
|
}
|
|
|
- else {
|
|
|
+ else
|
|
|
+ {
|
|
|
//根据占用情况计算库存
|
|
|
Calczykc(item, sockoccupyList);
|
|
|
//如果有子集,则丢入循环,判断下库存可制等信息。
|
|
|
@@ -1613,7 +1643,7 @@ namespace Business.ResourceExamineManagement
|
|
|
for (int i = 0; i <= maxIdx; i++)
|
|
|
{
|
|
|
var group = sublist.Where(s => s.substitute_all_num == i).ToList();
|
|
|
- // int boolCount = 0;//代表某一颗物料无需采购,可以自制,则集合+1。
|
|
|
+ // int boolCount = 0;//代表某一颗物料无需采购,可以自制,则集合+1。
|
|
|
|
|
|
//如果替代料库存不够,但是可制够,则也考虑使用优先级最高
|
|
|
foreach (var g in group)
|
|
|
@@ -1862,22 +1892,22 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
//ToDo:企业Id
|
|
|
ProjectionDefinitionBuilder<ic_factory_details> project = new ProjectionDefinitionBuilder<ic_factory_details>();
|
|
|
- return _ic_factory_details.Find(p => returnlist.Select(x => x.item_id).Contains(p.icitem_id) && p.factory_id == factoryid && p.tenant_id==tenantId && !p.IsDeleted,
|
|
|
- project.Include(p => p.icitem_id).Include(p => p.production_leadtime).Include(p => p.stock_leadtime).Include(p => p.transportation_leadtime).Include(p=>p.order_leadtime)).Result.
|
|
|
- Select(x => new ICItemLeadTimeDto { item_id = x.icitem_id, transportation_leadtime = x.transportation_leadtime, stock_leadtime = x.stock_leadtime, production_leadtime = x.production_leadtime, order_leadtime=x.order_leadtime }).AsQueryable<ICItemLeadTimeDto>().ToList();
|
|
|
+ return _ic_factory_details.Find(p => returnlist.Select(x => x.item_id).Contains(p.icitem_id) && p.factory_id == factoryid && p.tenant_id == tenantId && !p.IsDeleted,
|
|
|
+ project.Include(p => p.icitem_id).Include(p => p.production_leadtime).Include(p => p.stock_leadtime).Include(p => p.transportation_leadtime).Include(p => p.order_leadtime)).Result.
|
|
|
+ Select(x => new ICItemLeadTimeDto { item_id = x.icitem_id, transportation_leadtime = x.transportation_leadtime, stock_leadtime = x.stock_leadtime, production_leadtime = x.production_leadtime, order_leadtime = x.order_leadtime }).AsQueryable<ICItemLeadTimeDto>().ToList();
|
|
|
}
|
|
|
|
|
|
//根据物料id获取物料供应商
|
|
|
- private List<ic_item_pur> GetSupplier(List<BomChildExamineDto> returnlist, long tenantId,long factoryid)
|
|
|
+ private List<ic_item_pur> GetSupplier(List<BomChildExamineDto> returnlist, long tenantId, long factoryid)
|
|
|
{
|
|
|
//ToDo:企业Id
|
|
|
return _ic_item_pur.Find(p => returnlist.Select(x => x.item_id).Contains(p.icitem_id) && p.tenant_id == tenantId && p.factory_id == factoryid && !p.IsDeleted).Result;
|
|
|
}
|
|
|
|
|
|
//根据物料id获取物料采购计划表
|
|
|
- private List<ic_plan> GetICPlan(List<BomChildExamineDto> returnlist, long tenantId,long factoryid)
|
|
|
+ private List<ic_plan> GetICPlan(List<BomChildExamineDto> returnlist, long tenantId, long factoryid)
|
|
|
{
|
|
|
- return _ic_plan.Find(p => returnlist.Select(x => x.item_id).Contains(p.icitem_id) &&p.tenant_id==tenantId && p.factory_id == factoryid && !p.IsDeleted).Result;
|
|
|
+ return _ic_plan.Find(p => returnlist.Select(x => x.item_id).Contains(p.icitem_id) && p.tenant_id == tenantId && p.factory_id == factoryid && !p.IsDeleted).Result;
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -1888,14 +1918,14 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <param name="factoryid">工厂id</param>
|
|
|
/// <param name="deliveryDate">销售订单交付日期</param>
|
|
|
/// <returns></returns>
|
|
|
- private async Task<List<ICItemDateDto>> CheckOnOrder(List<BomChildExamineDto> returnlist, long tenantId, long factoryid, DateTime deliveryDate)
|
|
|
+ private async Task<List<ICItemDateDto>> CheckOnOrder(List<BomChildExamineDto> returnlist, long tenantId, long factoryid, DateTime deliveryDate, long bangid)
|
|
|
{
|
|
|
//ToDo:企业Id,数据状态过滤以及isdeleted
|
|
|
- var po_list = _srm_po_list.Find(p => returnlist.Select(x => x.item_id).Contains(p.icitem_id) && p.tenant_id== tenantId && p.factory_id == factoryid && p.rarrdate >= DateTime.Now && p.rarrdate < deliveryDate && !p.IsDeleted).Result;
|
|
|
+ var po_list = _srm_po_list.Find(p => returnlist.Select(x => x.item_id).Contains(p.icitem_id) && p.tenant_id == tenantId && p.factory_id == factoryid && p.rarrdate >= DateTime.Now && p.rarrdate < deliveryDate && !p.IsDeleted).Result;
|
|
|
var itemlist = new List<ICItemDateDto>();//需要生成采购申请单的物料信息
|
|
|
var leadTimeList = GetLeadTime(returnlist, tenantId, factoryid);//提前期列表
|
|
|
var supplierList = GetSupplier(returnlist, tenantId, factoryid);//供应商列表
|
|
|
- var planList = GetICPlan(returnlist, tenantId,factoryid);//plan列表
|
|
|
+ var planList = GetICPlan(returnlist, tenantId, factoryid);//plan列表
|
|
|
foreach (var item in returnlist)
|
|
|
{
|
|
|
//缺料
|
|
|
@@ -1907,15 +1937,15 @@ namespace Business.ResourceExamineManagement
|
|
|
//外购生成采购申请单
|
|
|
if (item.erp_cls == 3)
|
|
|
{
|
|
|
- DateTime lastTime=CreateSRMPR(item, tenantId, factoryid, 2, leadTimeList, supplierList, planList,deliveryDate);
|
|
|
+ DateTime lastTime = CreateSRMPR(item, tenantId, factoryid, bangid, 2, leadTimeList, supplierList, planList, deliveryDate);
|
|
|
itemlist.Add(new ICItemDateDto { item_id = item.item_id, dateTime = lastTime });
|
|
|
}
|
|
|
else if (item.erp_cls == 2)
|
|
|
{
|
|
|
//委外生成委外采购申请单和委外工单
|
|
|
- DateTime lastTime=CreateSRMPR(item, tenantId, factoryid, 1, leadTimeList, supplierList, planList,deliveryDate);
|
|
|
- CreateMesOOder(item, tenantId, factoryid, leadTimeList, supplierList,deliveryDate);
|
|
|
- itemlist.Add(new ICItemDateDto { item_id = item.item_id, dateTime = lastTime});
|
|
|
+ DateTime lastTime = CreateSRMPR(item, tenantId, factoryid, bangid, 1, leadTimeList, supplierList, planList, deliveryDate);
|
|
|
+ CreateMesOOder(item, tenantId, factoryid, bangid, leadTimeList, supplierList, deliveryDate);
|
|
|
+ itemlist.Add(new ICItemDateDto { item_id = item.item_id, dateTime = lastTime });
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
@@ -1942,6 +1972,7 @@ namespace Business.ResourceExamineManagement
|
|
|
po_Occupy.cby = "";//变更人
|
|
|
po_Occupy.creason = "";//变更原因
|
|
|
po_Occupy.ctime = DateTime.Now;//变更时间
|
|
|
+ po_Occupy.bang_id = bangid;
|
|
|
await _srm_po_occupy.InsertOne(po_Occupy);
|
|
|
break;
|
|
|
}
|
|
|
@@ -1964,7 +1995,8 @@ namespace Business.ResourceExamineManagement
|
|
|
po_Occupy.cby = "";//变更人
|
|
|
po_Occupy.creason = "";//变更原因
|
|
|
po_Occupy.ctime = DateTime.Now;//变更时间
|
|
|
- await _srm_po_occupy.InsertOne(po_Occupy);
|
|
|
+ po_Occupy.bang_id = bangid;
|
|
|
+ await _srm_po_occupy.InsertOne(po_Occupy);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -1978,7 +2010,7 @@ namespace Business.ResourceExamineManagement
|
|
|
/// </summary>
|
|
|
/// <param name="returnlist"></param>
|
|
|
/// <param name="factoryid"></param>
|
|
|
- private DateTime CreateMesOOder(BomChildExamineDto returnlist, long tenantId, long factoryid, List<ICItemLeadTimeDto> iCItemLeadTimes,List<ic_item_pur> supplierList,DateTime deliveryDate)
|
|
|
+ private DateTime CreateMesOOder(BomChildExamineDto returnlist, long tenantId, long factoryid, long bangId, List<ICItemLeadTimeDto> iCItemLeadTimes, List<ic_item_pur> supplierList, DateTime deliveryDate)
|
|
|
{
|
|
|
mes_oorder oOrder = new mes_oorder();
|
|
|
oOrder.GenerateNewId();
|
|
|
@@ -2020,6 +2052,7 @@ namespace Business.ResourceExamineManagement
|
|
|
oOrder.need_icitem_status = 1;//所需物料是否充足 1-充足 0-缺料
|
|
|
oOrder.tenant_id = tenantId;
|
|
|
oOrder.factory_id = factoryid;
|
|
|
+ oOrder.bang_id = bangId;
|
|
|
_mes_oorder.InsertOne(oOrder);
|
|
|
return DateTime.Now;
|
|
|
}
|
|
|
@@ -2031,7 +2064,7 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <param name="returnlist"></param>
|
|
|
/// <param name="factoryid"></param>
|
|
|
/// <param name="orderType">1委外采购申请单,2采购申请单</param>
|
|
|
- private DateTime CreateSRMPR(BomChildExamineDto returnlist, long tenantId, long factoryid, int orderType,List<ICItemLeadTimeDto> iCItemLeadTimes, List<ic_item_pur> supplierList, List<ic_plan> planList,DateTime deliveryDate)
|
|
|
+ private DateTime CreateSRMPR(BomChildExamineDto returnlist, long tenantId, long factoryid, long bangId, int orderType, List<ICItemLeadTimeDto> iCItemLeadTimes, List<ic_item_pur> supplierList, List<ic_plan> planList, DateTime deliveryDate)
|
|
|
{
|
|
|
var leadTime = iCItemLeadTimes.Find(x => x.item_id == returnlist.item_id);
|
|
|
var supplier = supplierList.Find(x => x.icitem_id == returnlist.item_id);//默认取第一个供应商
|
|
|
@@ -2043,13 +2076,13 @@ namespace Business.ResourceExamineManagement
|
|
|
srm_Pr.entity_id = 1;//工单行号
|
|
|
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.purcher;//采购员
|
|
|
- srm_Pr.pr_purchaser_num ="";//采购员工号(采购信息表)
|
|
|
- srm_Pr.pr_rqty =returnlist.lack_qty;//需求数量
|
|
|
+ srm_Pr.pr_purchasename = supplier.supplier_name;//供应商名称
|
|
|
+ srm_Pr.pr_purchaser = supplier.purcher;//采购员
|
|
|
+ srm_Pr.pr_purchaser_num = "";//采购员工号(采购信息表)
|
|
|
+ srm_Pr.pr_rqty = returnlist.lack_qty;//需求数量
|
|
|
srm_Pr.pr_aqty = returnlist.lack_qty;//申请数量
|
|
|
srm_Pr.pr_sqty = returnlist.lack_qty;//建议数量
|
|
|
- srm_Pr.icitem_id =returnlist.item_id;//物料id
|
|
|
+ srm_Pr.icitem_id = returnlist.item_id;//物料id
|
|
|
srm_Pr.icitem_name = returnlist.item_name;//物料名称
|
|
|
srm_Pr.pr_order_type = 1;//单据类型
|
|
|
srm_Pr.pr_ssend_date = deliveryDate.AddDays((double)leadTime.order_leadtime * -1);//系统建议下单日期
|
|
|
@@ -2057,21 +2090,22 @@ namespace Business.ResourceExamineManagement
|
|
|
srm_Pr.pr_psend_date = deliveryDate.AddDays((double)leadTime.order_leadtime * -1);//计划下单日期
|
|
|
srm_Pr.pr_parrive_date = deliveryDate.AddDays((double)leadTime.transportation_leadtime * -1);//计划到达日期
|
|
|
srm_Pr.pr_psend_date = deliveryDate.AddDays((double)leadTime.order_leadtime * -1);//计划下单日期
|
|
|
- srm_Pr.pr_sysprice = returnlist.lack_qty* supplier.netpurchase_price*(1+ supplier.taxrate);//系统价格(含税)
|
|
|
+ srm_Pr.pr_sysprice = returnlist.lack_qty * supplier.netpurchase_price * (1 + supplier.taxrate);//系统价格(含税)
|
|
|
srm_Pr.pr_orderprice = returnlist.lack_qty * supplier.netpurchase_price * (1 + supplier.taxrate);//订单价格(含税)
|
|
|
- srm_Pr.pr_price =supplier.netpurchase_price;//采购净价(不含税)
|
|
|
- srm_Pr.pr_rate =supplier.taxrate;//税率
|
|
|
+ srm_Pr.pr_price = supplier.netpurchase_price;//采购净价(不含税)
|
|
|
+ srm_Pr.pr_rate = supplier.taxrate;//税率
|
|
|
srm_Pr.pr_unit = returnlist.unit;//单位
|
|
|
srm_Pr.state = 1;//状态
|
|
|
srm_Pr.old_apply_aqty = 0;//已申请数量
|
|
|
srm_Pr.pr_type = orderType;//申请类型
|
|
|
- srm_Pr.currencytype =supplier.currency_type;//币种
|
|
|
+ srm_Pr.currencytype = supplier.currency_type;//币种
|
|
|
srm_Pr.secInv_ratio = plan.secinv_ratio;//安全库存触发采购比例
|
|
|
srm_Pr.tenant_id = tenantId;
|
|
|
srm_Pr.factory_id = factoryid;
|
|
|
+ srm_Pr.bang_id = bangId;
|
|
|
_srm_pr_main.InsertOne(srm_Pr);
|
|
|
decimal? totalLeadTime = leadTime.transportation_leadtime + leadTime.stock_leadtime + leadTime.production_leadtime + leadTime.order_leadtime;
|
|
|
- return deliveryDate.AddDays((double)totalLeadTime*-1);//减去提前期
|
|
|
+ return deliveryDate.AddDays((double)totalLeadTime * -1);//减去提前期
|
|
|
}
|
|
|
|
|
|
// 生成订单编号 字母+年月日+8位随机数+时间戳
|