|
@@ -4462,6 +4462,7 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <param name="input"></param>
|
|
/// <param name="input"></param>
|
|
|
public async Task<PschedDto> OrderDetailKittingCheck(string domain, string userAccount, List<mes_morder> mo_Mes_Morders = null)
|
|
public async Task<PschedDto> OrderDetailKittingCheck(string domain, string userAccount, List<mes_morder> mo_Mes_Morders = null)
|
|
|
{
|
|
{
|
|
|
|
|
+
|
|
|
// 调用优先级计算算法
|
|
// 调用优先级计算算法
|
|
|
//var workOrds = _replenishmentAppService.CalcPriority(mo_Mes_Morders.Select(p => p.morder_no).ToList(), param.factoryId.ToString());
|
|
//var workOrds = _replenishmentAppService.CalcPriority(mo_Mes_Morders.Select(p => p.morder_no).ToList(), param.factoryId.ToString());
|
|
|
List<string> tsWork = new List<string> { "test", "tcn", "rw" };
|
|
List<string> tsWork = new List<string> { "test", "tcn", "rw" };
|
|
@@ -4470,9 +4471,15 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
{
|
|
|
mo_Mes_Morders = _mysql_mes_morder.GetListAsync(x => domain == x.factory_id.ToString() && workOrds.Select(s => s.WorkOrd).Contains(x.morder_no) && (x.morder_state == MorderEnum.Initial_state || x.morder_state == MorderEnum.Xd_state) && !x.IsDeleted).Result;
|
|
mo_Mes_Morders = _mysql_mes_morder.GetListAsync(x => domain == x.factory_id.ToString() && workOrds.Select(s => s.WorkOrd).Contains(x.morder_no) && (x.morder_state == MorderEnum.Initial_state || x.morder_state == MorderEnum.Xd_state) && !x.IsDeleted).Result;
|
|
|
}
|
|
}
|
|
|
- var workOrdRoutings = _workOrdRouting.Select(a => mo_Mes_Morders.Select(p => p.morder_no).Contains(a.WorkOrd) && a.Domain == param.factoryId.ToString() && a.IsActive).ToList();
|
|
|
|
|
|
|
+ //资源检查入参全局变量赋值
|
|
|
|
|
+ param.company_id = mo_Mes_Morders[0].company_id;
|
|
|
|
|
+ param.factoryId = mo_Mes_Morders[0].factory_id.GetValueOrDefault();
|
|
|
|
|
+ param.checkflag = false;
|
|
|
|
|
+ param.checkPlan = false;
|
|
|
|
|
+ param.writeNum = true;
|
|
|
|
|
+ var workOrdRoutings = _workOrdRouting.Select(a => mo_Mes_Morders.Select(p => p.morder_no).Contains(a.WorkOrd) && a.Domain == domain && a.IsActive).ToList();
|
|
|
//清理工单物料明细
|
|
//清理工单物料明细
|
|
|
- var workOrdDetails = _workOrdDetail.Select(x => workOrds.Select(c => c.RecID).Contains((int)x.WorkOrdMasterRecID) && x.Domain == param.factoryId.ToString());
|
|
|
|
|
|
|
+ var workOrdDetails = _workOrdDetail.Select(x => workOrds.Select(c => c.WorkOrd).ToList().Contains(x.WorkOrd) && x.Domain == domain);
|
|
|
//资源检查结果
|
|
//资源检查结果
|
|
|
PschedDto rtn = new PschedDto();
|
|
PschedDto rtn = new PschedDto();
|
|
|
//资源检查明细list
|
|
//资源检查明细list
|
|
@@ -4483,12 +4490,7 @@ namespace Business.ResourceExamineManagement
|
|
|
}
|
|
}
|
|
|
List<mes_morder> db_mes_morder = new List<mes_morder>();
|
|
List<mes_morder> db_mes_morder = new List<mes_morder>();
|
|
|
db_mes_morder = mo_Mes_Morders;
|
|
db_mes_morder = mo_Mes_Morders;
|
|
|
- //资源检查入参全局变量赋值
|
|
|
|
|
- param.company_id = mo_Mes_Morders[0].company_id;
|
|
|
|
|
- param.factoryId = mo_Mes_Morders[0].factory_id.GetValueOrDefault();
|
|
|
|
|
- param.checkflag = false;
|
|
|
|
|
- param.checkPlan = false;
|
|
|
|
|
- param.writeNum = true;
|
|
|
|
|
|
|
+
|
|
|
//生成当前计算bangid
|
|
//生成当前计算bangid
|
|
|
long bangid = help.NextId();
|
|
long bangid = help.NextId();
|
|
|
|
|
|
|
@@ -4497,9 +4499,9 @@ namespace Business.ResourceExamineManagement
|
|
|
List<mes_moentry> mo_Mes_Moentries = _mysql_mes_moentry.GetListAsync(x => morderIdList.Contains(x.moentry_moid.Value)).Result;
|
|
List<mes_moentry> mo_Mes_Moentries = _mysql_mes_moentry.GetListAsync(x => morderIdList.Contains(x.moentry_moid.Value)).Result;
|
|
|
|
|
|
|
|
//获取订单行数据
|
|
//获取订单行数据
|
|
|
- List<crm_seorderentry> sentrys = _mysql_crm_seorderentry.GetListAsync(p => p.company_id == param.company_id && p.factory_id == param.factoryId && !p.IsDeleted && mo_Mes_Moentries.Select(x => x.soentry_id).Contains(p.Id)).Result;
|
|
|
|
|
|
|
+ List<crm_seorderentry> sentrys = _mysql_crm_seorderentry.GetListAsync(p => p.factory_id.ToString() == domain && !p.IsDeleted && mo_Mes_Moentries.Select(x => x.soentry_id).Contains(p.Id)).Result;
|
|
|
|
|
|
|
|
- List<mo_ic_bom> boms = _ic_bom.GetListAsync(p => mo_Mes_Morders.Select(m => m.bom_number).Contains(p.bom_number) && p.factory_id == param.factoryId && p.company_id == param.company_id && !p.IsDeleted).Result.ToList();
|
|
|
|
|
|
|
+ List<mo_ic_bom> boms = _ic_bom.GetListAsync(p => mo_Mes_Morders.Select(m => m.bom_number).Contains(p.bom_number) && p.factory_id.ToString() == domain && !p.IsDeleted).Result.ToList();
|
|
|
|
|
|
|
|
//List<mo_ic_item> Items = _ic_item.GetListAsync(p => mo_Mes_Morders.Select(m => m.bom_number).Contains(p.number) && !p.IsDeleted).Result;
|
|
//List<mo_ic_item> Items = _ic_item.GetListAsync(p => mo_Mes_Morders.Select(m => m.bom_number).Contains(p.number) && !p.IsDeleted).Result;
|
|
|
//删除同步Mysql后旧数据
|
|
//删除同步Mysql后旧数据
|
|
@@ -4515,15 +4517,15 @@ namespace Business.ResourceExamineManagement
|
|
|
//工单物料和领料信息组成bom清单
|
|
//工单物料和领料信息组成bom清单
|
|
|
var nbrDetails = _nbrDetail.Select(n=> workOrds.Select(s => s.WorkOrd).Contains(n.WorkOrd));
|
|
var nbrDetails = _nbrDetail.Select(n=> workOrds.Select(s => s.WorkOrd).Contains(n.WorkOrd));
|
|
|
//排除领料单已发料数量
|
|
//排除领料单已发料数量
|
|
|
- AutoCreateBomFromOrderDetail(boms, icitemlist, mo_Mes_Morders, workOrdDetails, nbrDetails);
|
|
|
|
|
|
|
+ var pretreatments = AutoCreateBomFromOrderDetail(boms, icitemlist, mo_Mes_Morders, workOrdDetails, nbrDetails);
|
|
|
//排除已发完料的工单
|
|
//排除已发完料的工单
|
|
|
- var pretreatments = _mysql_b_bom_pretreatment.GetListAsync(s => mo_Mes_Morders.Select(c => c.Id).ToList().Contains(s.sourceid) && s.version != "ok").Result;
|
|
|
|
|
|
|
+ pretreatments = pretreatments.Where(s => s.version != "ok").ToList();
|
|
|
|
|
|
|
|
await AsyncItemStockFromWMS(pretreatments);
|
|
await AsyncItemStockFromWMS(pretreatments);
|
|
|
//数据库快照-同步mysql库数据到mongoDB中
|
|
//数据库快照-同步mysql库数据到mongoDB中
|
|
|
await DbSnapShot(param.company_id, param.factoryId, bangid, pretreatments);
|
|
await DbSnapShot(param.company_id, param.factoryId, bangid, pretreatments);
|
|
|
|
|
|
|
|
- DataInitialization(boms, bangid, icitemlist, stocklist, pretreatments, sklist);
|
|
|
|
|
|
|
+ DetailDataInitialization(boms, bangid, icitemlist, stocklist, pretreatments, sklist);
|
|
|
|
|
|
|
|
List<mes_morder> priorityMorderList = new List<mes_morder>();
|
|
List<mes_morder> priorityMorderList = new List<mes_morder>();
|
|
|
foreach (var work in workOrds)
|
|
foreach (var work in workOrds)
|
|
@@ -4610,7 +4612,7 @@ namespace Business.ResourceExamineManagement
|
|
|
}
|
|
}
|
|
|
if (getBomList.Count == 1)
|
|
if (getBomList.Count == 1)
|
|
|
{
|
|
{
|
|
|
- var isy = 1;
|
|
|
|
|
|
|
+ continue;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
_CalcBomViewAppService.morder_type = item.morder_type;
|
|
_CalcBomViewAppService.morder_type = item.morder_type;
|
|
@@ -4658,18 +4660,11 @@ namespace Business.ResourceExamineManagement
|
|
|
return rtn;
|
|
return rtn;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public void AutoCreateBomFromOrderDetail(List<mo_ic_bom> boms, List<mo_ic_item> icitemlist, List<mes_morder> mo_Mes_Morders,List<WorkOrdDetail> workOrdDetails, List<NbrDetail> nbrDetails)
|
|
|
|
|
|
|
+ public List<b_bom_pretreatment> AutoCreateBomFromOrderDetail(List<mo_ic_bom> boms, List<mo_ic_item> icitemlist, List<mes_morder> mo_Mes_Morders,List<WorkOrdDetail> workOrdDetails, List<NbrDetail> nbrDetails)
|
|
|
{
|
|
{
|
|
|
- List<BomChildExamineDto> bomChildExamineDtos = new List<BomChildExamineDto>();
|
|
|
|
|
- List<b_bom_pretreatment> deleteList = new List<b_bom_pretreatment>();
|
|
|
|
|
List<b_bom_pretreatment> addList = new List<b_bom_pretreatment>();
|
|
List<b_bom_pretreatment> addList = new List<b_bom_pretreatment>();
|
|
|
- var pretreatment = _mysql_b_bom_pretreatment.GetListAsync(s => mo_Mes_Morders.Select(c => c.Id).ToList().Contains(s.sourceid)).Result;
|
|
|
|
|
- if (pretreatment.Any())
|
|
|
|
|
- {
|
|
|
|
|
- //版本不同则重新生成
|
|
|
|
|
- deleteList.AddRange(pretreatment);
|
|
|
|
|
- }
|
|
|
|
|
mo_Mes_Morders.ForEach(x => {
|
|
mo_Mes_Morders.ForEach(x => {
|
|
|
|
|
+ List<BomChildExamineDto> bomChildExamineDtos = new List<BomChildExamineDto>();
|
|
|
var curicbom = boms.Where(p => p.bom_number == x.product_code).FirstOrDefault();
|
|
var curicbom = boms.Where(p => p.bom_number == x.product_code).FirstOrDefault();
|
|
|
var curicitem = icitemlist.Where(p => p.number == x.product_code).FirstOrDefault();
|
|
var curicitem = icitemlist.Where(p => p.number == x.product_code).FirstOrDefault();
|
|
|
var fid= help.NextId();
|
|
var fid= help.NextId();
|
|
@@ -4681,7 +4676,7 @@ namespace Business.ResourceExamineManagement
|
|
|
bomChildExamineDto.bom_number = x.product_code;
|
|
bomChildExamineDto.bom_number = x.product_code;
|
|
|
bomChildExamineDto.qty = 1;
|
|
bomChildExamineDto.qty = 1;
|
|
|
bomChildExamineDto.erp_cls = curicitem == null ? 4 : curicitem.erp_cls.GetValueOrDefault();
|
|
bomChildExamineDto.erp_cls = curicitem == null ? 4 : curicitem.erp_cls.GetValueOrDefault();
|
|
|
- bomChildExamineDto.item_id = curicitem == null ? 0 : curicitem.Id;
|
|
|
|
|
|
|
+ bomChildExamineDto.item_id = curicitem == null ? 0 : curicitem.mysql_id;
|
|
|
bomChildExamineDto.item_name = curicitem == null ? "" : curicitem.name;
|
|
bomChildExamineDto.item_name = curicitem == null ? "" : curicitem.name;
|
|
|
bomChildExamineDto.item_number = x.product_code;
|
|
bomChildExamineDto.item_number = x.product_code;
|
|
|
bomChildExamineDto.level = 1;
|
|
bomChildExamineDto.level = 1;
|
|
@@ -4692,6 +4687,9 @@ namespace Business.ResourceExamineManagement
|
|
|
bomChildExamineDto.type = 0;
|
|
bomChildExamineDto.type = 0;
|
|
|
bomChildExamineDto.PurLT = curicitem == null ? 0 : curicitem.PurLT;
|
|
bomChildExamineDto.PurLT = curicitem == null ? 0 : curicitem.PurLT;
|
|
|
bomChildExamineDto.clean_leadtime = curicitem == null ? 0 : curicitem.clean_leadtime;
|
|
bomChildExamineDto.clean_leadtime = curicitem == null ? 0 : curicitem.clean_leadtime;
|
|
|
|
|
+
|
|
|
|
|
+ bomChildExamineDtos.Add(bomChildExamineDto);
|
|
|
|
|
+
|
|
|
var curworkOrdDetails = workOrdDetails.Where(w=>w.WorkOrd==x.morder_no).ToList();
|
|
var curworkOrdDetails = workOrdDetails.Where(w=>w.WorkOrd==x.morder_no).ToList();
|
|
|
if (curworkOrdDetails.Any())
|
|
if (curworkOrdDetails.Any())
|
|
|
{
|
|
{
|
|
@@ -4717,7 +4715,7 @@ namespace Business.ResourceExamineManagement
|
|
|
bomChildExamineDto.bom_number = "";
|
|
bomChildExamineDto.bom_number = "";
|
|
|
bomChildExamineDto.qty = x.morder_production_number.GetValueOrDefault() == 0 ? 1 : d.QtyOrd - d.QtyRec / x.morder_production_number.GetValueOrDefault();
|
|
bomChildExamineDto.qty = x.morder_production_number.GetValueOrDefault() == 0 ? 1 : d.QtyOrd - d.QtyRec / x.morder_production_number.GetValueOrDefault();
|
|
|
bomChildExamineDto.erp_cls = curicitem == null ? 4 : curicitem.erp_cls.GetValueOrDefault();
|
|
bomChildExamineDto.erp_cls = curicitem == null ? 4 : curicitem.erp_cls.GetValueOrDefault();
|
|
|
- bomChildExamineDto.item_id = curicitem == null ? 0 : curicitem.Id;
|
|
|
|
|
|
|
+ bomChildExamineDto.item_id = curicitem == null ? 0 : curicitem.mysql_id;
|
|
|
bomChildExamineDto.item_name = curicitem == null ? "" : curicitem.name;
|
|
bomChildExamineDto.item_name = curicitem == null ? "" : curicitem.name;
|
|
|
bomChildExamineDto.item_number = d.ItemNum;
|
|
bomChildExamineDto.item_number = d.ItemNum;
|
|
|
bomChildExamineDto.level = 2;
|
|
bomChildExamineDto.level = 2;
|
|
@@ -4745,7 +4743,7 @@ namespace Business.ResourceExamineManagement
|
|
|
bomChildExamineDto.bom_number = "";
|
|
bomChildExamineDto.bom_number = "";
|
|
|
bomChildExamineDto.qty = d.FrozenBOMQty;
|
|
bomChildExamineDto.qty = d.FrozenBOMQty;
|
|
|
bomChildExamineDto.erp_cls = curicitem == null ? 4 : curicitem.erp_cls.GetValueOrDefault();
|
|
bomChildExamineDto.erp_cls = curicitem == null ? 4 : curicitem.erp_cls.GetValueOrDefault();
|
|
|
- bomChildExamineDto.item_id = curicitem == null ? 0 : curicitem.Id;
|
|
|
|
|
|
|
+ bomChildExamineDto.item_id = curicitem == null ? 0 : curicitem.mysql_id;
|
|
|
bomChildExamineDto.item_name = curicitem == null ? "" : curicitem.name;
|
|
bomChildExamineDto.item_name = curicitem == null ? "" : curicitem.name;
|
|
|
bomChildExamineDto.item_number = d.ItemNum;
|
|
bomChildExamineDto.item_number = d.ItemNum;
|
|
|
bomChildExamineDto.level = 2;
|
|
bomChildExamineDto.level = 2;
|
|
@@ -4760,10 +4758,6 @@ namespace Business.ResourceExamineManagement
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
- bomChildExamineDtos.Add(bomChildExamineDto);
|
|
|
|
|
-
|
|
|
|
|
var list = ObjectMapper.Map<List<BomChildExamineDto>, List<b_bom_pretreatment>>(bomChildExamineDtos);
|
|
var list = ObjectMapper.Map<List<BomChildExamineDto>, List<b_bom_pretreatment>>(bomChildExamineDtos);
|
|
|
list.ForEach(s =>
|
|
list.ForEach(s =>
|
|
|
{
|
|
{
|
|
@@ -4774,104 +4768,77 @@ namespace Business.ResourceExamineManagement
|
|
|
});
|
|
});
|
|
|
addList.AddRange(list);
|
|
addList.AddRange(list);
|
|
|
});
|
|
});
|
|
|
- if (deleteList.Any())
|
|
|
|
|
- {
|
|
|
|
|
- _businessDbContext.BulkDelete(deleteList);
|
|
|
|
|
- }
|
|
|
|
|
- if (addList.Any())
|
|
|
|
|
- {
|
|
|
|
|
- _businessDbContext.BulkInsert(addList);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+
|
|
|
|
|
+ return addList;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- //public void DetailDataInitialization(List<mo_ic_bom> boms, long bangid, List<mo_ic_item> icitemlist, List<mo_ic_item_stock> stocklist, List<b_bom_pretreatment> pretreatments, List<mo_ic_item_stockoccupy> sklist, bool writeNum = false)
|
|
|
|
|
- //{
|
|
|
|
|
- // List<long> itemIds = pretreatments.Select(p => p.item_id.GetValueOrDefault()).Distinct().ToList();
|
|
|
|
|
- // icitemlist.AddRange(_ic_item.GetListAsync(p => itemIds.Contains(p.mysql_id) && !p.IsDeleted).Result);
|
|
|
|
|
- // #region 1、数据准备
|
|
|
|
|
- // //产线明细
|
|
|
|
|
- // prodLines = _prodLineDetail.Select(p => p.Domain == param.factoryId.ToString()).ToList();
|
|
|
|
|
- // //标准工序
|
|
|
|
|
- // routingOps = _routingOpDetail.Select(p => p.Domain == param.factoryId.ToString()).ToList();
|
|
|
|
|
- // List<string> lines = prodLines.Select(p => p.Line).Distinct().ToList();
|
|
|
|
|
- // //工作日历
|
|
|
|
|
- // calendarWorks = _shopCalendarWorkCtr.Select(p => lines.Contains(p.ProdLine)).ToList();
|
|
|
|
|
- // //休息日
|
|
|
|
|
- // qualityLineWorks = _qualityLineWorkDetail.Select(p => lines.Contains(p.ProdLine)).ToList();
|
|
|
|
|
- // //节假日
|
|
|
|
|
- // holidays = _holidayMaster.Select(p => p.Dated >= DateTime.Now.Date);
|
|
|
|
|
-
|
|
|
|
|
- // //主工单
|
|
|
|
|
- // var ordlist = _workOrdMaster.Select(x => x.Domain == param.factoryId.ToString() && string.IsNullOrEmpty(x.Typed) == true && !string.IsNullOrEmpty(x.Status) && x.Status.ToUpper() != "C" && x.Status.ToUpper() != "P").ToList();
|
|
|
|
|
- // List<mo_mes_morder> mo_Mes_Morders = _mes_morder.GetListAsync(x => ordlist.Select(c => c.WorkOrd).Contains(x.morder_no) && x.company_id == param.company_id && x.factory_id == param.factoryId && x.bang_id == bangid).Result;
|
|
|
|
|
- // List<long> moids = mo_Mes_Morders.Select(p => p.mysql_id).ToList();
|
|
|
|
|
- // List<mo_mes_moentry> mo_Mes_Moentry = _mes_moentry.GetListAsync(x => moids.Contains(x.moentry_moid)).Result;
|
|
|
|
|
- // //工单占用表
|
|
|
|
|
- // List<mo_mes_mooccupy> mes_mooccupyList = _mes_mooccupy.GetListAsync(x => x.moo_state == 1 && !x.IsDeleted && x.company_id == param.company_id
|
|
|
|
|
- // && boms.Select(p => p.item_number).Contains(x.fitem_number) && x.bang_id == bangid).Result;
|
|
|
|
|
-
|
|
|
|
|
- // List<long> occoupyRefId = new List<long>();
|
|
|
|
|
- // //物料采购订单明细
|
|
|
|
|
- // var poDetailList = _srm_po_list.GetListAsync(x => icitemlist.Select(p => p.mysql_id).ToList().Contains(x.icitem_id.Value) && x.bang_id == bangid && x.state == 1 && !x.IsDeleted).Result;
|
|
|
|
|
- // occoupyRefId.AddRange(poDetailList.Select(p => p.mysql_id).ToList());
|
|
|
|
|
- // var srm_pr_mains = _srm_pr_main.GetListAsync(x => icitemlist.Select(p => p.mysql_id).ToList().Contains(x.icitem_id.Value) && x.bang_id == bangid && x.state != 0 && x.state != 4 && !x.IsDeleted).Result;
|
|
|
|
|
- // occoupyRefId.AddRange(srm_pr_mains.Select(p => p.mysql_id).ToList());
|
|
|
|
|
- // //采购订单或采购申请占用数据
|
|
|
|
|
- // var poOccupys = _srm_po_occupy.GetListAsync(x => occoupyRefId.Contains(x.polist_id) && x.bang_id == bangid && !x.IsDeleted).Result;
|
|
|
|
|
- // #endregion
|
|
|
|
|
-
|
|
|
|
|
- // //物料库存
|
|
|
|
|
- // stocklist.AddRange(_ic_item_stock.GetListAsync(p => p.factory_id == param.factoryId && p.bang_id == bangid && itemIds.Contains(p.icitem_id)).Result);
|
|
|
|
|
- // //物料库存占用表
|
|
|
|
|
- // sklist.AddRange(_ic_item_stockoccupy.GetListAsync(x => x.bang_id == bangid && !x.IsDeleted && itemIds.Contains(x.icitem_id)).Result);
|
|
|
|
|
-
|
|
|
|
|
- // //物料提前期
|
|
|
|
|
- // leadTimeList = GetLeadTime(icitemlist, param.company_id, param.factoryId);//提前期列表
|
|
|
|
|
- // supplierList = GetSupplier(itemIds, param.company_id, param.factoryId);//供应商列表
|
|
|
|
|
-
|
|
|
|
|
- // //交期回复
|
|
|
|
|
- // var sql = $"select b.id as polist_id,b.po_id,a.id,a.wlbm,a.cgdd,a.ddhh,iif(a.jhdsl>c.QtyOrded,c.QtyOrded,a.jhdsl) as jhdsl,TRY_CONVERT(DATE,jqhf, 23) as jqhf,a.flag,a.gysdm,b.pr_purchase_id " +
|
|
|
|
|
- // $"from (select wlbm,cgdd,ddhh,flag,gysdm,sum(cast(isnull(jhdsl,0) as decimal(18,8))) as jhdsl,max(TRY_CONVERT(DATE,jqhf, 23)) as jqhf,max(id) as id from scm_jhjh_jq where flag =0 or (flag=2 and DATEDIFF(DAY, isnull(TRY_CONVERT(DATE,jqhf, 23),GETDATE()), GETDATE())>=1 ) group by wlbm,cgdd,ddhh,flag,gysdm) a " +
|
|
|
|
|
- // $"inner join srm_po_list b on a.cgdd=b.po_billno and a.ddhh=b.polist_row inner join PurOrdDetail c on b.po_billno=c.PurOrd and b.polist_row=c.Line where c.status!='C' and c.QtyOrded>c.RctQty";
|
|
|
|
|
- // _CalcBomViewAppService.scm_Jhjh_Jqs = _businessDbContext.scm_jhjh_jqDto.FromSqlRaw(sql).ToList();
|
|
|
|
|
- // //送货单子表所有未完成的数据,并且排除检验中数量
|
|
|
|
|
- // sql = $"select b.id,[po_billline],[jhdbh],isnull([shzt],'待收') shzt,[jhdhh] ,b.sh_material_code,b.sh_material_name,b.po_bill,b.sh_delivery_quantity-isnull(m.qty,0) as sh_delivery_quantity,a.sh_purchase_num,c.id as sh_purchase_id,CONVERT(DATE,a.jhshrq,23) jhshrq,CONVERT(DATE,a.yjdhrq,23) yjdhrq,d.id as polist_id " +
|
|
|
|
|
- // $"from scm_shd a INNER join scm_shdzb b on a.id=b.glid INNER join srm_po_list d on b.sh_material_code=d.ItemNum and b.po_bill=d.po_billno and b.po_billline=d.polist_row and d.state=1 left join srm_po_main e on d.po_id=e.id " +
|
|
|
|
|
- // $"left join srm_supplier c on a.sh_purchase_num=c.supplier_no left join (select PurOrd,PurLine,ShipperNbr,ShipperLine,sum(qty) as qty from MissedPrint where Status = 'I' GROUP BY PurOrd,PurLine,ShipperNbr,ShipperLine) m on b.po_bill=m.PurOrd AND b.po_billline=m.PurLine and m.ShipperNbr=a.shddh and m.ShipperLine=b.hh " +
|
|
|
|
|
- // $"where jhdbh!='' and e.state<>'3' and isnull([shzt],'待收')!='完成' and (isnull(m.qty,0)=0 or isnull(m.qty,0)<b.sh_delivery_quantity) ";
|
|
|
|
|
- // _CalcBomViewAppService.scm_Shdzbs = _businessDbContext.scm_shdzbDto.FromSqlRaw(sql).ToList();
|
|
|
|
|
-
|
|
|
|
|
- // //送货单子表所有待检验数据
|
|
|
|
|
- // sql = $"select b.id,[po_billline],[jhdbh],isnull([shzt],'待收') shzt,[jhdhh] ,b.sh_material_code,b.sh_material_name,b.po_bill,isnull(m.qty,0) as sh_delivery_quantity,a.sh_purchase_num,c.id as sh_purchase_id,CONVERT(DATE,a.jhshrq,23) jhshrq,CONVERT(DATE,a.yjdhrq,23) yjdhrq,d.id as polist_id " +
|
|
|
|
|
- // $"from scm_shd a INNER join scm_shdzb b on a.id=b.glid INNER join srm_po_list d on b.sh_material_code=d.ItemNum and b.po_bill=d.po_billno and b.po_billline=d.polist_row and d.state=1 left join srm_po_main e on d.po_id=e.id left join srm_supplier c on a.sh_purchase_num=c.supplier_no " +
|
|
|
|
|
- // $"left join (select PurOrd,PurLine,ShipperNbr,ShipperLine,sum(qty) as qty from MissedPrint where Status = 'I' GROUP BY PurOrd,PurLine,ShipperNbr,ShipperLine) m on b.po_bill=m.PurOrd AND b.po_billline=m.PurLine and m.ShipperNbr=a.shddh and m.ShipperLine=b.hh " +
|
|
|
|
|
- // $"where jhdbh!='' and isnull(m.qty,0)>=b.sh_delivery_quantity and isnull(m.qty,0)<>0 and e.state<>'3'";
|
|
|
|
|
- // _CalcBomViewAppService.scm_ShdzbJYs = _businessDbContext.scm_shdzbDto.FromSqlRaw(sql).ToList();
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
- // _CalcBomViewAppService.leadTimeList = leadTimeList;
|
|
|
|
|
- // _CalcBomViewAppService.supplierList = supplierList;
|
|
|
|
|
-
|
|
|
|
|
- // //资源检查添加产线工序等数据
|
|
|
|
|
- // _CalcBomViewAppService.prodLines = prodLines;
|
|
|
|
|
- // _CalcBomViewAppService.routingOps = routingOps;
|
|
|
|
|
- // _CalcBomViewAppService.calendarWorks = calendarWorks;
|
|
|
|
|
- // _CalcBomViewAppService.qualityLineWorks = qualityLineWorks;
|
|
|
|
|
- // _CalcBomViewAppService.holidays = holidays;
|
|
|
|
|
-
|
|
|
|
|
- // _CalcBomViewAppService.mordersList = mo_Mes_Morders;//工单
|
|
|
|
|
- // _CalcBomViewAppService.moentriesList = mo_Mes_Moentry;//工单子表
|
|
|
|
|
- // _CalcBomViewAppService.mooccupyAllList = mes_mooccupyList;//工单占用表
|
|
|
|
|
-
|
|
|
|
|
- // _CalcBomViewAppService.srm_Po_Lists = poDetailList; //采购明细
|
|
|
|
|
- // _CalcBomViewAppService.srm_Po_Occupies = poOccupys; //采购占用表
|
|
|
|
|
- // _CalcBomViewAppService.ic_item_List = icitemlist; //物料表
|
|
|
|
|
- // _CalcBomViewAppService.srm_Pr_Mains = srm_pr_mains.Where(s => s.state != 4).ToList();//PR
|
|
|
|
|
- // DateTime dt = DateTime.Now;
|
|
|
|
|
- // _CalcBomViewAppService.quarter_starttime = dt.AddMonths(0 - (dt.Month - 1) % 3).AddDays(1 - dt.Day).Date;
|
|
|
|
|
- // _CalcBomViewAppService.quarter_endtime = _CalcBomViewAppService.quarter_starttime.AddMonths(3);
|
|
|
|
|
- // _CalcBomViewAppService.quarter_srm_pr_mains = _srm_pr_main.GetListAsync(s => s.state != 0 && s.pr_psend_date >= _CalcBomViewAppService.quarter_starttime && s.pr_psend_date < _CalcBomViewAppService.quarter_endtime).Result;//本季度PR
|
|
|
|
|
- //}
|
|
|
|
|
|
|
+ public void DetailDataInitialization(List<mo_ic_bom> boms, long bangid, List<mo_ic_item> icitemlist, List<mo_ic_item_stock> stocklist, List<b_bom_pretreatment> pretreatments, List<mo_ic_item_stockoccupy> sklist, bool writeNum = false)
|
|
|
|
|
+ {
|
|
|
|
|
+ List<long> itemIds = pretreatments.Select(p => p.item_id.GetValueOrDefault()).Distinct().ToList();
|
|
|
|
|
+ icitemlist.AddRange(_ic_item.GetListAsync(p => itemIds.Contains(p.mysql_id) && !p.IsDeleted).Result);
|
|
|
|
|
+ #region 1、数据准备
|
|
|
|
|
+
|
|
|
|
|
+ //主工单
|
|
|
|
|
+ var ordlist = _workOrdMaster.Select(x => x.Domain == param.factoryId.ToString() && string.IsNullOrEmpty(x.Typed) == true && !string.IsNullOrEmpty(x.Status) && x.Status.ToUpper() != "C" && x.Status.ToUpper() != "P").ToList();
|
|
|
|
|
+ List<mo_mes_morder> mo_Mes_Morders = _mes_morder.GetListAsync(x => ordlist.Select(c => c.WorkOrd).Contains(x.morder_no) && x.company_id == param.company_id && x.factory_id == param.factoryId && x.bang_id == bangid).Result;
|
|
|
|
|
+ List<long> moids = mo_Mes_Morders.Select(p => p.mysql_id).ToList();
|
|
|
|
|
+ List<mo_mes_moentry> mo_Mes_Moentry = _mes_moentry.GetListAsync(x => moids.Contains(x.moentry_moid)).Result;
|
|
|
|
|
+ //工单占用表
|
|
|
|
|
+ List<mo_mes_mooccupy> mes_mooccupyList = _mes_mooccupy.GetListAsync(x => x.moo_state == 1 && !x.IsDeleted && x.company_id == param.company_id
|
|
|
|
|
+ && boms.Select(p => p.item_number).Contains(x.fitem_number) && x.bang_id == bangid).Result;
|
|
|
|
|
+
|
|
|
|
|
+ List<long> occoupyRefId = new List<long>();
|
|
|
|
|
+ //物料采购订单明细
|
|
|
|
|
+ var poDetailList = _srm_po_list.GetListAsync(x => icitemlist.Select(p => p.mysql_id).ToList().Contains(x.icitem_id.Value) && x.bang_id == bangid && x.state == 1 && !x.IsDeleted).Result;
|
|
|
|
|
+ occoupyRefId.AddRange(poDetailList.Select(p => p.mysql_id).ToList());
|
|
|
|
|
+ var srm_pr_mains = _srm_pr_main.GetListAsync(x => icitemlist.Select(p => p.mysql_id).ToList().Contains(x.icitem_id.Value) && x.bang_id == bangid && x.state != 0 && x.state != 4 && !x.IsDeleted).Result;
|
|
|
|
|
+ occoupyRefId.AddRange(srm_pr_mains.Select(p => p.mysql_id).ToList());
|
|
|
|
|
+ //采购订单或采购申请占用数据
|
|
|
|
|
+ var poOccupys = _srm_po_occupy.GetListAsync(x => occoupyRefId.Contains(x.polist_id) && x.bang_id == bangid && !x.IsDeleted).Result;
|
|
|
|
|
+ #endregion
|
|
|
|
|
+
|
|
|
|
|
+ //物料库存
|
|
|
|
|
+ stocklist.AddRange(_ic_item_stock.GetListAsync(p => p.factory_id == param.factoryId && p.bang_id == bangid && itemIds.Contains(p.icitem_id)).Result);
|
|
|
|
|
+ //物料库存占用表
|
|
|
|
|
+ sklist.AddRange(_ic_item_stockoccupy.GetListAsync(x => x.bang_id == bangid && !x.IsDeleted && itemIds.Contains(x.icitem_id)).Result);
|
|
|
|
|
+
|
|
|
|
|
+ //物料提前期
|
|
|
|
|
+ leadTimeList = GetLeadTime(icitemlist, param.company_id, param.factoryId);//提前期列表
|
|
|
|
|
+ supplierList = GetSupplier(itemIds, param.company_id, param.factoryId);//供应商列表
|
|
|
|
|
+
|
|
|
|
|
+ //交期回复
|
|
|
|
|
+ var sql = $"select b.id as polist_id,b.po_id,a.id,a.wlbm,a.cgdd,a.ddhh,iif(a.jhdsl>c.QtyOrded,c.QtyOrded,a.jhdsl) as jhdsl,TRY_CONVERT(DATE,jqhf, 23) as jqhf,a.flag,a.gysdm,b.pr_purchase_id " +
|
|
|
|
|
+ $"from (select wlbm,cgdd,ddhh,flag,gysdm,sum(cast(isnull(jhdsl,0) as decimal(18,8))) as jhdsl,max(TRY_CONVERT(DATE,jqhf, 23)) as jqhf,max(id) as id from scm_jhjh_jq where flag =0 or (flag=2 and DATEDIFF(DAY, isnull(TRY_CONVERT(DATE,jqhf, 23),GETDATE()), GETDATE())>=1 ) group by wlbm,cgdd,ddhh,flag,gysdm) a " +
|
|
|
|
|
+ $"inner join srm_po_list b on a.cgdd=b.po_billno and a.ddhh=b.polist_row inner join PurOrdDetail c on b.po_billno=c.PurOrd and b.polist_row=c.Line where c.status!='C' and c.QtyOrded>c.RctQty";
|
|
|
|
|
+ _CalcBomViewAppService.scm_Jhjh_Jqs = _businessDbContext.scm_jhjh_jqDto.FromSqlRaw(sql).ToList();
|
|
|
|
|
+ //送货单子表所有未完成的数据,并且排除检验中数量
|
|
|
|
|
+ sql = $"select b.id,[po_billline],[jhdbh],isnull([shzt],'待收') shzt,[jhdhh] ,b.sh_material_code,b.sh_material_name,b.po_bill,b.sh_delivery_quantity-isnull(m.qty,0) as sh_delivery_quantity,a.sh_purchase_num,c.id as sh_purchase_id,CONVERT(DATE,a.jhshrq,23) jhshrq,CONVERT(DATE,a.yjdhrq,23) yjdhrq,d.id as polist_id " +
|
|
|
|
|
+ $"from scm_shd a INNER join scm_shdzb b on a.id=b.glid INNER join srm_po_list d on b.sh_material_code=d.ItemNum and b.po_bill=d.po_billno and b.po_billline=d.polist_row and d.state=1 left join srm_po_main e on d.po_id=e.id " +
|
|
|
|
|
+ $"left join srm_supplier c on a.sh_purchase_num=c.supplier_no left join (select PurOrd,PurLine,ShipperNbr,ShipperLine,sum(qty) as qty from MissedPrint where Status = 'I' GROUP BY PurOrd,PurLine,ShipperNbr,ShipperLine) m on b.po_bill=m.PurOrd AND b.po_billline=m.PurLine and m.ShipperNbr=a.shddh and m.ShipperLine=b.hh " +
|
|
|
|
|
+ $"where jhdbh!='' and e.state<>'3' and isnull([shzt],'待收')!='完成' and (isnull(m.qty,0)=0 or isnull(m.qty,0)<b.sh_delivery_quantity) ";
|
|
|
|
|
+ _CalcBomViewAppService.scm_Shdzbs = _businessDbContext.scm_shdzbDto.FromSqlRaw(sql).ToList();
|
|
|
|
|
+
|
|
|
|
|
+ //送货单子表所有待检验数据
|
|
|
|
|
+ sql = $"select b.id,[po_billline],[jhdbh],isnull([shzt],'待收') shzt,[jhdhh] ,b.sh_material_code,b.sh_material_name,b.po_bill,isnull(m.qty,0) as sh_delivery_quantity,a.sh_purchase_num,c.id as sh_purchase_id,CONVERT(DATE,a.jhshrq,23) jhshrq,CONVERT(DATE,a.yjdhrq,23) yjdhrq,d.id as polist_id " +
|
|
|
|
|
+ $"from scm_shd a INNER join scm_shdzb b on a.id=b.glid INNER join srm_po_list d on b.sh_material_code=d.ItemNum and b.po_bill=d.po_billno and b.po_billline=d.polist_row and d.state=1 left join srm_po_main e on d.po_id=e.id left join srm_supplier c on a.sh_purchase_num=c.supplier_no " +
|
|
|
|
|
+ $"left join (select PurOrd,PurLine,ShipperNbr,ShipperLine,sum(qty) as qty from MissedPrint where Status = 'I' GROUP BY PurOrd,PurLine,ShipperNbr,ShipperLine) m on b.po_bill=m.PurOrd AND b.po_billline=m.PurLine and m.ShipperNbr=a.shddh and m.ShipperLine=b.hh " +
|
|
|
|
|
+ $"where jhdbh!='' and isnull(m.qty,0)>=b.sh_delivery_quantity and isnull(m.qty,0)<>0 and e.state<>'3'";
|
|
|
|
|
+ _CalcBomViewAppService.scm_ShdzbJYs = _businessDbContext.scm_shdzbDto.FromSqlRaw(sql).ToList();
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ _CalcBomViewAppService.leadTimeList = leadTimeList;
|
|
|
|
|
+ _CalcBomViewAppService.supplierList = supplierList;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ _CalcBomViewAppService.mordersList = mo_Mes_Morders;//工单
|
|
|
|
|
+ _CalcBomViewAppService.moentriesList = mo_Mes_Moentry;//工单子表
|
|
|
|
|
+ _CalcBomViewAppService.mooccupyAllList = mes_mooccupyList;//工单占用表
|
|
|
|
|
+
|
|
|
|
|
+ _CalcBomViewAppService.srm_Po_Lists = poDetailList; //采购明细
|
|
|
|
|
+ _CalcBomViewAppService.srm_Po_Occupies = poOccupys; //采购占用表
|
|
|
|
|
+ _CalcBomViewAppService.ic_item_List = icitemlist; //物料表
|
|
|
|
|
+ _CalcBomViewAppService.srm_Pr_Mains = srm_pr_mains.Where(s => s.state != 4).ToList();//PR
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
#endregion
|