Procházet zdrojové kódy

取消采购件资源检查齐套日期为过去默认当天

Pengxy před 10 měsíci
rodič
revize
0bd36ceea4

+ 11 - 9
MicroServices/Business/Business.Application/ResourceExamineManagement/CalcBomViewAppService.cs

@@ -1766,7 +1766,8 @@ namespace Business.ResourceExamineManagement
                         var timeSp = DateTime.Now - srm_Pr.pr_ssend_date.Value;
                         returnlist.pre_time = timeSp.Days + 1;
                         srm_Pr.pr_ssend_date = srm_Pr.pr_ssend_date.Value.AddDays(returnlist.pre_time.GetValueOrDefault());
-                        srm_Pr.pr_sarrive_date = srm_Pr.pr_sarrive_date.Value.AddDays(returnlist.pre_time.GetValueOrDefault());
+                        //修改逻辑为按实际计算结果取交货日期
+                        //srm_Pr.pr_sarrive_date = srm_Pr.pr_sarrive_date.Value.AddDays(returnlist.pre_time.GetValueOrDefault());
                     }
                 }
                 else
@@ -2265,14 +2266,15 @@ namespace Business.ResourceExamineManagement
                 item.purchase_qty += lack_qty;
                 item.purchase_list = new List<purchase>();
             }
-            if (LongPeriod)//虚拟计算不调整齐套时间
-            {
-                item.kitting_time = SRMPRDto.lastStartTmie;
-            }
-            else if (SRMPRDto.lastStartTmie > item.kitting_time || item.kitting_time is null)
-            {
-                item.kitting_time = SRMPRDto.lastStartTmie;
-            }
+            item.kitting_time = SRMPRDto.lastStartTmie;
+            //if (LongPeriod)//虚拟计算不调整齐套时间
+            //{
+            //    item.kitting_time = SRMPRDto.lastStartTmie;
+            //}
+            //else if (SRMPRDto.lastStartTmie > item.kitting_time || item.kitting_time is null)
+            //{
+            //    item.kitting_time = SRMPRDto.lastStartTmie;
+            //}
             SRMPRDtoList.Add(SRMPRDto);
             return SRMPRDto;
         }

+ 483 - 0
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -4454,7 +4454,490 @@ namespace Business.ResourceExamineManagement
             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>
         /// 物料数据计算前准备

+ 24 - 0
MicroServices/Business/QuartzSettings/logs/logs.txt

@@ -3688,3 +3688,27 @@
 {"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-06-04T13:39:18.1743565+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
 {"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-06-04T13:39:18.1794585+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
 {"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-06-04T13:39:18.1813518+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-06-04T14:05:00.669039+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-06-04T14:05:00.7038437+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-06-04T14:05:00.7068236+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-06-04T14:05:00.7084692+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-06-04T14:05:00.7124363+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-06-04T14:05:00.7141329+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-06-05T09:27:34.0946238+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-06-05T09:27:34.1330795+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-06-05T09:27:34.1359173+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-06-05T09:27:34.1377903+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-06-05T09:27:34.1421364+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-06-05T09:27:34.1445892+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-06-05T09:50:20.2056103+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-06-05T09:50:20.2375242+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-06-05T09:50:20.2409956+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-06-05T09:50:20.2425506+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-06-05T09:50:20.2473636+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-06-05T09:50:20.2490389+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-06-05T10:04:19.5322316+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-06-05T10:04:19.5640202+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-06-05T10:04:19.5668509+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-06-05T10:04:19.5687234+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-06-05T10:04:19.5730883+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-06-05T10:04:19.5748757+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}