|
@@ -4454,7 +4454,490 @@ namespace Business.ResourceExamineManagement
|
|
|
return rtn;
|
|
return rtn;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ #region 齐套检查测试
|
|
|
|
|
+ ///// <summary>
|
|
|
|
|
+ ///// 工单物料齐套检查
|
|
|
|
|
+ ///// </summary>
|
|
|
|
|
+ ///// <param name="input"></param>
|
|
|
|
|
+ //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());
|
|
|
|
|
+ // List<string> tsWork = new List<string> { "test", "tcn", "rw" };
|
|
|
|
|
+ // var workOrds = _workOrdMaster.Select(x => x.Domain == domain && x.IsActive && (string.IsNullOrEmpty(x.Typed) == true || tsWork.Contains(x.Typed)) && (x.Status.ToLower() == "p" || x.Status.ToLower() == "r")).OrderBy(c => c.Priority).ToList();
|
|
|
|
|
+ // if (mo_Mes_Morders == null)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // 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();
|
|
|
|
|
+ // //清理工单物料明细
|
|
|
|
|
+ // var delWorkOrddetails = _workOrdDetail.Select(x => workOrds.Select(c => c.RecID).Contains((int)x.WorkOrdMasterRecID) && x.Domain == param.factoryId.ToString());
|
|
|
|
|
+ // //资源检查结果
|
|
|
|
|
+ // PschedDto rtn = new PschedDto();
|
|
|
|
|
+ // //资源检查明细list
|
|
|
|
|
+ // List<ExamineResult> examines = new List<ExamineResult>();
|
|
|
|
|
+ // if (!mo_Mes_Morders.Any())
|
|
|
|
|
+ // {
|
|
|
|
|
+ // return rtn;
|
|
|
|
|
+ // }
|
|
|
|
|
+ // List<mes_morder> db_mes_morder = new List<mes_morder>();
|
|
|
|
|
+ // 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
|
|
|
|
|
+ // long bangid = help.NextId();
|
|
|
|
|
+
|
|
|
|
|
+ // var morderIdList = mo_Mes_Morders.Select(s => s.Id).ToList();
|
|
|
|
|
+
|
|
|
|
|
+ // 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;
|
|
|
|
|
+
|
|
|
|
|
+ // //删除同步Mysql后旧数据
|
|
|
|
|
+ // await DeleteMySqlOldData(sentrys);
|
|
|
|
|
+ // //物料信息
|
|
|
|
|
+ // List<mo_ic_item> icitemlist = new List<mo_ic_item>();
|
|
|
|
|
+
|
|
|
|
|
+ // //物料库存表
|
|
|
|
|
+ // List<mo_ic_item_stock> stocklist = new List<mo_ic_item_stock>();
|
|
|
|
|
+ // //物料占用记录
|
|
|
|
|
+ // List<mo_ic_item_stockoccupy> sklist = new List<mo_ic_item_stockoccupy>();
|
|
|
|
|
+
|
|
|
|
|
+ // //sorder=null 是因为齐套检查不需要生成工单、采购、委外等信息,所以不需要关联的工单信息传递进去。
|
|
|
|
|
+ // var pretreatments = _mysql_b_bom_pretreatment.GetListAsync(s => boms.Select(c => c.mysql_id).ToList().Contains(s.sourceid)).Result;
|
|
|
|
|
+ // //List<mo_ic_bom> autoCreates = new List<mo_ic_bom>();
|
|
|
|
|
+ // //boms.ForEach(p =>
|
|
|
|
|
+ // //{
|
|
|
|
|
+ // // if (!pretreatments.Where(s => s.sourceid == p.mysql_id).Any())
|
|
|
|
|
+ // // {
|
|
|
|
|
+ // // autoCreates.Add(p);
|
|
|
|
|
+ // // }
|
|
|
|
|
+ // //});
|
|
|
|
|
+ // //if (autoCreates.Any())
|
|
|
|
|
+ // //{
|
|
|
|
|
+ // // AutoCreateBomBill(param.company_id.ToString(), autoCreates);
|
|
|
|
|
+ // // pretreatments = _mysql_b_bom_pretreatment.GetListAsync(s => boms.Select(c => c.mysql_id).ToList().Contains(s.sourceid)).Result;
|
|
|
|
|
+ // //}
|
|
|
|
|
+ // //增加特殊工单的预处理结果,因为特殊工单是自定义物料清单
|
|
|
|
|
+ // //List<string> tsWork = new List<string> { "试制工单", "返工工单" };
|
|
|
|
|
+ // var specialWork = mo_Mes_Morders.Where(x => tsWork.Contains(x.morder_type)).ToList();
|
|
|
|
|
+ // pretreatments.AddRange(_mysql_b_bom_pretreatment.GetListAsync(s => specialWork.Select(c => c.Id).ToList().Contains(s.sourceid)).Result);
|
|
|
|
|
+
|
|
|
|
|
+ // await AsyncItemStockFromWMS(pretreatments);
|
|
|
|
|
+ // //数据库快照-同步mysql库数据到mongoDB中
|
|
|
|
|
+ // await DbSnapShot(param.company_id, param.factoryId, bangid, pretreatments);
|
|
|
|
|
+
|
|
|
|
|
+ // DetailDataInitialization(boms, bangid, icitemlist, stocklist, pretreatments, sklist);
|
|
|
|
|
+
|
|
|
|
|
+ // List<mes_morder> priorityMorderList = new List<mes_morder>();
|
|
|
|
|
+ // foreach (var work in workOrds)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // var mo = mo_Mes_Morders.Find(s => s.morder_no == work.WorkOrd);
|
|
|
|
|
+
|
|
|
|
|
+ // var routings = workOrdRoutings.Where(r => r.WorkOrd == work.WorkOrd).ToList();
|
|
|
|
|
+ // if (routings.Any() && mo != null)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // //最大生产数量
|
|
|
|
|
+ // var QtyComplete = routings.Max(r => r.QtyComplete);
|
|
|
|
|
+ // //修改订单需求数为在制数量
|
|
|
|
|
+ // mo.need_number = mo.need_number - QtyComplete;
|
|
|
|
|
+ // work.OpQtyCompleted = QtyComplete;
|
|
|
|
|
+ // work.InProdcutQty = mo.need_number;
|
|
|
|
|
+ // }
|
|
|
|
|
+
|
|
|
|
|
+ // if (mo != null)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // if (mo.need_number > 0)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // priorityMorderList.Add(mo);
|
|
|
|
|
+ // }
|
|
|
|
|
+ // }
|
|
|
|
|
+ // }
|
|
|
|
|
+ // if (!priorityMorderList.Any())
|
|
|
|
|
+ // {
|
|
|
|
|
+ // priorityMorderList = mo_Mes_Morders;
|
|
|
|
|
+ // }
|
|
|
|
|
+ // _morderAppService.param = param;
|
|
|
|
|
+ // _purchaseOrderAppService.param = param;
|
|
|
|
|
+ // _CalcBomViewAppService.param = param;
|
|
|
|
|
+
|
|
|
|
|
+ // List<string> GenerateMoList = new List<string>();
|
|
|
|
|
+ // _CalcBomViewAppService.GenerateMoList = GenerateMoList;
|
|
|
|
|
+ // _CalcBomViewAppService.newStockOccList = new List<mo_ic_item_stockoccupy>();
|
|
|
|
|
+ // sklist = sklist.Where(s => !priorityMorderList.Select(p => p.morder_no).Contains(s.morder_mo)).ToList();
|
|
|
|
|
+ // foreach (var item in priorityMorderList)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // var moentry = mo_Mes_Moentries.Find(s => s.moentry_moid == item.Id);
|
|
|
|
|
+ // if (moentry == null)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // continue;
|
|
|
|
|
+ // }
|
|
|
|
|
+ // var sentry = sentrys.Find(s => s.Id == moentry.soentry_id);
|
|
|
|
|
+
|
|
|
|
|
+ // //工单资源检查信息
|
|
|
|
|
+ // 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();
|
|
|
|
|
+ // dtl.prd_code = item.product_code;
|
|
|
|
|
+
|
|
|
|
|
+ // //获取当前物料bom数据
|
|
|
|
|
+ // List<b_bom_pretreatment> itemPrelist = new List<b_bom_pretreatment>();
|
|
|
|
|
+ // //通过工单ID读取,考虑特殊工单的预处理
|
|
|
|
|
+ // itemPrelist = pretreatments.Where(s => s.sourceid == item.Id).ToList();
|
|
|
|
|
+ // if (!itemPrelist.Any())
|
|
|
|
|
+ // {
|
|
|
|
|
+ // var childBom = boms.Where(p => p.bom_number == item.bom_number).FirstOrDefault();
|
|
|
|
|
+ // if (childBom != null)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // itemPrelist = pretreatments.Where(s => s.sourceid == childBom.mysql_id).ToList();
|
|
|
|
|
+ // }
|
|
|
|
|
+ // else
|
|
|
|
|
+ // {
|
|
|
|
|
+ // continue;
|
|
|
|
|
+ // }
|
|
|
|
|
+ // }
|
|
|
|
|
+ // if (!itemPrelist.Any())
|
|
|
|
|
+ // {
|
|
|
|
|
+ // continue;
|
|
|
|
|
+ // }
|
|
|
|
|
+
|
|
|
|
|
+ // var getBomList = ObjectMapper.Map<List<b_bom_pretreatment>, List<BomChildExamineDto>>(itemPrelist);
|
|
|
|
|
+
|
|
|
|
|
+ // if (sentry != null)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // dtl.sentry_id = sentry.Id;
|
|
|
|
|
+ // getBomList.ForEach(s => s.sentry_id = item.Id);
|
|
|
|
|
+ // }
|
|
|
|
|
+ // if (getBomList.Count == 1)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // var isy = 1;
|
|
|
|
|
+ // }
|
|
|
|
|
+
|
|
|
|
|
+ // _CalcBomViewAppService.morder_type = item.morder_type;
|
|
|
|
|
+ // _CalcBomViewAppService.mes_morder = item;
|
|
|
|
|
+ // //库存初始化
|
|
|
|
|
+ // _CalcBomViewAppService.BomStock(getBomList, stocklist, bangid);
|
|
|
|
|
+
|
|
|
|
|
+ // //计算
|
|
|
|
|
+ // _CalcBomViewAppService.CalcView(getBomList, bangid, item.need_number.GetValueOrDefault(), item.moentry_sys_stime, sklist, sentry, icitemlist);
|
|
|
|
|
+
|
|
|
|
|
+ // //TODO:最晚开始时间
|
|
|
|
|
+ // //var curFacDtl = leadTimeList.FirstOrDefault(p => p.item_id == childBom.icitem_id);
|
|
|
|
|
+ // //物料齐套时间
|
|
|
|
|
+ // dtl.kitting_times = getBomList.Where(p => p.is_use && p.kitting_time != null).OrderByDescending(m => m.kitting_time).First().kitting_time.GetValueOrDefault();
|
|
|
|
|
+ // //kitting_time=null为自制组件跳过数据未进行计算,kitting_state=0的数据未参与计算
|
|
|
|
|
+ // var qllist = getBomList.Where(x => x.use_qty == 0 && x.kitting_time != null && x.needCount != 0 && x.erp_cls != 4 && x.level != 1 && x.kitting_state != 0).ToList();
|
|
|
|
|
+ // var work = workOrds.Find(x => x.WorkOrd == item.morder_no);
|
|
|
|
|
+ // if (qllist.Any())
|
|
|
|
|
+ // {
|
|
|
|
|
+ // work.LocationStock = 0;
|
|
|
|
|
+ // }
|
|
|
|
|
+ // else
|
|
|
|
|
+ // {
|
|
|
|
|
+ // qllist = getBomList.Where(x => x.use_qty > 0 && x.kitting_time != null && x.needCount != 0 && x.erp_cls != 4 && x.level == 2 && x.kitting_state == 1).ToList();
|
|
|
|
|
+ // if (qllist.Any())
|
|
|
|
|
+ // {
|
|
|
|
|
+ // //按比例计算成品齐套个数
|
|
|
|
|
+ // work.LocationStock = qllist.Min(b => b.use_qty / b.qty) > work.QtyOrded ? work.QtyOrded : qllist.Min(b => b.use_qty / b.qty);
|
|
|
|
|
+ // }
|
|
|
|
|
+ // else
|
|
|
|
|
+ // {
|
|
|
|
|
+ // work.LocationStock = 0;
|
|
|
|
|
+ // }
|
|
|
|
|
+ // }
|
|
|
|
|
+ // //替代关系展开list
|
|
|
|
|
+ // dtl.BomChildExamineList = getBomList;
|
|
|
|
|
+ // //添加订单行开工信息
|
|
|
|
|
+ // examines.Add(dtl);
|
|
|
|
|
+ // }
|
|
|
|
|
+ // rtn.examines = examines;
|
|
|
|
|
+ // if (writeNum)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // //回写工单需求数
|
|
|
|
|
+ // foreach (var item in mo_Mes_Morders)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // var curInfo = db_mes_morder.FirstOrDefault(p => p.morder_no == item.morder_no);
|
|
|
|
|
+ // if (curInfo != null)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // item.need_number = curInfo.need_number;
|
|
|
|
|
+ // }
|
|
|
|
|
+ // }
|
|
|
|
|
+ // _businessDbContext.BulkUpdate(workOrds);
|
|
|
|
|
+ // }
|
|
|
|
|
+ // List<WorkOrdDetail> mainWorkOrdDetails = new List<WorkOrdDetail>();
|
|
|
|
|
+ // if (!writeNum)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // if (moentryList == null)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // //成品虚拟件对应关系
|
|
|
|
|
+ // var productOpList = _productStructureOp.Select(x => priorityMorderList.Select(c => c.product_code).Contains(x.ProductItem) && x.Domain == param.factoryId.ToString());
|
|
|
|
|
+ // List<ItemMaster> itemMasterList = _itemMaster.Select(p => p.Domain == param.factoryId.ToString()).ToList();
|
|
|
|
|
+ // foreach (var workord in priorityMorderList)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // long fid = GetParentMo(priorityMorderList, workord);
|
|
|
|
|
+ // var exm = examines.Find(s => s.morder_id == fid);
|
|
|
|
|
+ // if (exm != null)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // var childs = exm.BomChildExamineList.Where(s => s.is_use == true).ToList();
|
|
|
|
|
+ // var child = childs.Find(s => s.item_number == workord.product_code);
|
|
|
|
|
+ // if (workord.morder_type == "返工工单")
|
|
|
|
|
+ // {
|
|
|
|
|
+ // child = childs.Find(s => s.item_number == workord.product_code && s.level == 1);
|
|
|
|
|
+ // }
|
|
|
|
|
+ // if (child == null)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // continue;
|
|
|
|
|
+ // }
|
|
|
|
|
+ // List<BomChildExamineDto> returnList = new List<BomChildExamineDto>();
|
|
|
|
|
+ // var productOps = productOpList.Where(x => x.ProductItem == workord.product_code).ToList();
|
|
|
|
|
+ // GetWorkDetalis(childs.Where(s => s.parent_id == child.fid).ToList(), returnList, childs, productOps);
|
|
|
|
|
+ // if (returnList.Any())
|
|
|
|
|
+ // {
|
|
|
|
|
+ // WorkOrdDetail woDetail = null;
|
|
|
|
|
+ // var calereturnList = returnList.OrderBy(c => c.item_number).Select(x => x.item_number).Distinct().ToList();
|
|
|
|
|
+ // var work = workOrds.Find(x => x.WorkOrd == workord.morder_no);
|
|
|
|
|
+ // if (work == null)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // continue;
|
|
|
|
|
+ // }
|
|
|
|
|
+ // short num = 1;
|
|
|
|
|
+ // foreach (var caleNumber in calereturnList)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // var caleList = returnList.Where(x => x.item_number == caleNumber).ToList();
|
|
|
|
|
+ // var itemMst = itemMasterList.Find(x => x.ItemNum == caleNumber);
|
|
|
|
|
+ // //添加工单的物料信息
|
|
|
|
|
+ // woDetail = new WorkOrdDetail();
|
|
|
|
|
+ // woDetail.Domain = workord.factory_id.ToString();
|
|
|
|
|
+ // woDetail.WorkOrd = workord.morder_no;
|
|
|
|
|
+ // var oplist = caleList.Where(x => x.Op > 0).ToList();
|
|
|
|
|
+ // woDetail.Op = 0;
|
|
|
|
|
+ // if (oplist.Any())
|
|
|
|
|
+ // {
|
|
|
|
|
+ // woDetail.Op = oplist.Min(f => f.Op);
|
|
|
|
|
+ // }
|
|
|
|
|
+ // woDetail.ItemNum = caleNumber;
|
|
|
|
|
+ // woDetail.QtyPosted = 0m;
|
|
|
|
|
+ // woDetail.QtyReturned = 0m;
|
|
|
|
|
+ // woDetail.Status = "";
|
|
|
|
|
+ // woDetail.IsActive = true;
|
|
|
|
|
+ // woDetail.CreateTime = DateTime.Now;
|
|
|
|
|
+ // woDetail.Line = num;
|
|
|
|
|
+ // woDetail.QtyRequired = caleList.Sum(c => c.needCount);
|
|
|
|
|
+ // woDetail.WorkOrdMasterRecID = work.RecID;
|
|
|
|
|
+ // woDetail.Location = itemMst == null ? "" : itemMst.Location;
|
|
|
|
|
+ // if (workord.need_number != 0)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // woDetail.FrozenBOMQty = Math.Round(woDetail.QtyRequired / workord.need_number.GetValueOrDefault(), 10);
|
|
|
|
|
+ // }
|
|
|
|
|
+ // mainWorkOrdDetails.Add(woDetail);
|
|
|
|
|
+ // num++;
|
|
|
|
|
+ // }
|
|
|
|
|
+ // }
|
|
|
|
|
+ // }
|
|
|
|
|
+ // }
|
|
|
|
|
+ // if (delWorkOrddetails.Any())
|
|
|
|
|
+ // {
|
|
|
|
|
+ // _businessDbContext.BulkDelete(delWorkOrddetails);
|
|
|
|
|
+ // }
|
|
|
|
|
+ // if (mainWorkOrdDetails.Any())
|
|
|
|
|
+ // {
|
|
|
|
|
+ // _businessDbContext.BulkInsert(mainWorkOrdDetails);
|
|
|
|
|
+ // }
|
|
|
|
|
+ // }
|
|
|
|
|
+ // }
|
|
|
|
|
+ // if (planCheck)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // //如果有计划工单,则需要生成pr po oo
|
|
|
|
|
+ // List<mo_srm_pr_main> prmainlist = new List<mo_srm_pr_main>();
|
|
|
|
|
+ // if (_CalcBomViewAppService.SRMPRDtoList.Any())
|
|
|
|
|
+ // {
|
|
|
|
|
+ // List<List<mo_srm_pr_main>> prlist = _CalcBomViewAppService.SRMPRDtoList.Where(f => f.srm_Pr_Main != null).Select(s => s.srm_Pr_Main).ToList();
|
|
|
|
|
+ // List<mo_srm_pr_main> list = new List<mo_srm_pr_main>();
|
|
|
|
|
+
|
|
|
|
|
+ // foreach (var pr in prlist)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // foreach (var item in pr)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // list.Add(item);
|
|
|
|
|
+ // prmainlist.Add(item);
|
|
|
|
|
+ // }
|
|
|
|
|
+ // }
|
|
|
|
|
+ // if (list.Any())
|
|
|
|
|
+ // rtn.srm_pr_list = _CalcBomViewAppService.SRMPRDtoList;
|
|
|
|
|
+ // }
|
|
|
|
|
+ // if (prmainlist.Any())
|
|
|
|
|
+ // {
|
|
|
|
|
+ // var nbrlistDto = _serialNumberAppService.GetBillNo(prmainlist[0].factory_id.ToString(), "PR", prmainlist.Count, "admin", 1);
|
|
|
|
|
+ // int index = 0;
|
|
|
|
|
+ // foreach (var p in prmainlist)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // if (nbrlistDto[index] != null)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // p.pr_billno = nbrlistDto[index].NbrResult.ToString();
|
|
|
|
|
+ // }
|
|
|
|
|
+ // index++;
|
|
|
|
|
+ // if (p.pr_purchaseid.GetValueOrDefault() == 0)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // //数据丢失
|
|
|
|
|
+ // var list = _mysql_srm_purchase.GetListAsync(s => s.icitem_id == p.icitem_id).Result;
|
|
|
|
|
+ // if (list.Any())
|
|
|
|
|
+ // {
|
|
|
|
|
+ // var purchase = list.OrderBy(s => s.quota_priority).FirstOrDefault();
|
|
|
|
|
+ // p.pr_purchaseid = purchase.supplier_id;
|
|
|
|
|
+ // p.pr_purchasename = purchase.supplier_name;
|
|
|
|
|
+ // p.pr_purchasenumber = purchase.supplier_number;
|
|
|
|
|
+ // }
|
|
|
|
|
+ // }
|
|
|
|
|
+ // }
|
|
|
|
|
+ // }
|
|
|
|
|
+ // using (var unitOfWork = _unitOfWorkManager.Begin(false, true))
|
|
|
|
|
+ // {
|
|
|
|
|
+ // try
|
|
|
|
|
+ // {
|
|
|
|
|
+ // _businessDbContext.BulkUpdate(mo_Mes_Morders);
|
|
|
|
|
+ // /*if (workOrdMasters.Any())
|
|
|
|
|
+ // {
|
|
|
|
|
+ // _workOrdMaster.Update(workOrdMasters);
|
|
|
|
|
+ // }*/
|
|
|
|
|
+ // if (prmainlist.Any())
|
|
|
|
|
+ // {
|
|
|
|
|
+ // var pr_mainlist = ObjectMapper.Map<List<mo_srm_pr_main>, List<srm_pr_main>>(prmainlist);
|
|
|
|
|
+ // _businessDbContext.BulkInsert(pr_mainlist);
|
|
|
|
|
+ // }
|
|
|
|
|
+ // if (_CalcBomViewAppService.newStockOccList.Any())
|
|
|
|
|
+ // {
|
|
|
|
|
+ // var stockoccupylist = ObjectMapper.Map<List<mo_ic_item_stockoccupy>, List<ic_item_stockoccupy>>(_CalcBomViewAppService.newStockOccList);
|
|
|
|
|
+ // stockoccupylist.ForEach(s => { s.GenerateNewId(help.NextId()); s.create_time = DateTime.Now; s.tenant_id = param.company_id.GetValueOrDefault(); s.company_id = param.company_id; s.factory_id = param.factoryId; });
|
|
|
|
|
+ // _businessDbContext.BulkInsert(stockoccupylist);
|
|
|
|
|
+ // }
|
|
|
|
|
+ // if (_CalcBomViewAppService.srm_Po_OccupiesInsert.Any())
|
|
|
|
|
+ // {
|
|
|
|
|
+ // _CalcBomViewAppService.srm_Po_OccupiesInsert.ForEach(s => { s.company_id = param.company_id; s.factory_id = param.factoryId; });
|
|
|
|
|
+ // var srmpooccupyInsert = ObjectMapper.Map<List<mo_srm_po_occupy>, List<srm_po_occupy>>(_CalcBomViewAppService.srm_Po_OccupiesInsert);
|
|
|
|
|
+ // srmpooccupyInsert.ForEach(x => { x.GenerateNewId(help.NextId()); });
|
|
|
|
|
+ // _businessDbContext.BulkInsert(srmpooccupyInsert);
|
|
|
|
|
+ // }
|
|
|
|
|
+
|
|
|
|
|
+ // await unitOfWork.CompleteAsync();
|
|
|
|
|
+ // }
|
|
|
|
|
+ // catch (Exception e)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // unitOfWork.Dispose();
|
|
|
|
|
+ // new NLogHelper("ResourceExamineAppService").WriteLog("OrderKittingCheck", "工单检查数据更新失败:" + e.Message, _currentTenant.Id.ToString());
|
|
|
|
|
+ // }
|
|
|
|
|
+ // }
|
|
|
|
|
+
|
|
|
|
|
+ // }
|
|
|
|
|
+ // if (!writeNum)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // //检查结果写入数据库
|
|
|
|
|
+ // await ExamineResultInsertDBAsync(examines);
|
|
|
|
|
+ // }
|
|
|
|
|
+ // //清空快照数据
|
|
|
|
|
+ // await ClearSnapShot(bangid);
|
|
|
|
|
+ // return rtn;
|
|
|
|
|
+ //}
|
|
|
|
|
|
|
|
|
|
+ //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
|
|
|
|
|
+ //}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ #endregion
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
|
/// 物料数据计算前准备
|
|
/// 物料数据计算前准备
|