Kaynağa Gözat

中间件逻辑补充。

tangdi 2 yıl önce
ebeveyn
işleme
f4aeb49610

+ 1 - 1
MicroServices/Business/Business.Application/ReplenishmentManagement/ReplenishmentAppService.cs

@@ -3738,7 +3738,7 @@ namespace Business.Replenishment
                 workOrd.IsConfirm = true;
                 workOrd.CreateTime = DateTime.Now;
                 workOrd.Typed = "";
-                workOrd.SalesJob = item.morder_no;
+                //workOrd.SalesJob = item.morder_no;
                 workOrds.Add(workOrd);
 
                 //添加工单工艺路线数据

+ 1 - 0
MicroServices/Business/Business.Application/ResourceExamineManagement/CalcBomViewAppService.cs

@@ -232,6 +232,7 @@ namespace Business.ResourceExamineManagement
                 _morderAppService.mo_Mes_Morders = mordersList;//工单
                 _morderAppService.mo_Mes_Moentry = moentriesList;//工单子表
                 _morderAppService.mo_Mes_Mooccupies = mooccupyAllList;//工单占用
+                _morderAppService.param = param;
                 List<mo_mes_mooccupy> mooccupylist = new List<mo_mes_mooccupy>();
                 if (param.checkflag && morder_type == MorderEnum.XsMorder && !LongPeriod)
                 {

+ 99 - 61
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -1336,10 +1336,10 @@ namespace Business.ResourceExamineManagement
             //按要求推送四周数据
             DateTime toTime = DateTime.Now;
             DateTime starttime = toTime.Date.AddDays(1);
-            //DateTime endtime = toTime.Date.AddDays(28);
+            DateTime endtime = toTime.Date.AddDays(28);
             //取出采购申请数据
-            //List<srm_pr_main> prapplyList = _mysql_srm_pr_main.GetListAsync(s => s.company_id.ToString() == companyid && s.pr_ssend_date >= starttime && s.pr_ssend_date <= endtime && s.state == 1 && s.IsRequireGoods == 0).Result;
-            List<srm_pr_main> prapplyList = _mysql_srm_pr_main.GetListAsync(s => s.company_id.ToString() == companyid && s.pr_ssend_date <= starttime && s.state == 1 && s.IsRequireGoods == 0).Result;
+            List<srm_pr_main> prapplyList = _mysql_srm_pr_main.GetListAsync(s => s.company_id.ToString() == companyid && s.pr_ssend_date >= starttime && s.pr_ssend_date <= endtime && s.state == 1 && s.IsRequireGoods == 0).Result;
+            //List<srm_pr_main> prapplyList = _mysql_srm_pr_main.GetListAsync(s => s.company_id.ToString() == companyid && s.pr_ssend_date <= starttime && s.state == 1 && s.IsRequireGoods == 0).Result;
             string seqSql = "";
             if (prapplyList.Any())
             {
@@ -3455,63 +3455,8 @@ namespace Business.ResourceExamineManagement
                 examines.Add(dtl);
             }
             rtn.examines = examines;
-            List<WorkOrdDetail> workOrdDetails = new List<WorkOrdDetail>();
-            //成品虚拟件对应关系
-            var productOpList = _productStructureOp.Select(x => workOrds.Select(c => c.ItemNum).Contains(x.ProductItem) && x.Domain == param.factoryId.ToString());
-            foreach (var workord in workOrds)
-            {
-                var exm = examines.Find(s => s.morder_no == workord.WorkOrd);
-                if (exm != null)
-                {
-                    var childs = exm.BomChildExamineList.Where(s => s.is_use == true).ToList();
-
-                    var child = childs.Find(s => s.item_number == workord.ItemNum);
-                    if (child == null)
-                    {
-                        continue;
-                    }
-                    List<BomChildExamineDto> returnList = new List<BomChildExamineDto>();
-                    var productOps = productOpList.Where(x => x.ProductItem == workord.ItemNum).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();
-                        short num = 1;
-                        foreach (var caleNumber in calereturnList)
-                        {
-                            var caleList = returnList.Where(x => x.item_number == caleNumber).ToList();
-
-                            //添加工单的物料信息
-                            woDetail = new WorkOrdDetail();
-                            woDetail.Domain = workord.Domain;
-                            woDetail.WorkOrd = workord.WorkOrd;
-                            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 = workord.RecID;
-                            if (workord.QtyOrded != 0)
-                            {
-                                woDetail.FrozenBOMQty = Math.Round(woDetail.QtyRequired / workord.QtyOrded, 10);
-                            }
-                            workOrdDetails.Add(woDetail);
-                            num++;
-                        }
-                    }
-                }
-            }
             
+
             if (planCheck)
             {
                 //如果有计划工单,则需要生成pr po oo
@@ -3557,7 +3502,100 @@ namespace Business.ResourceExamineManagement
                         }
                     }
                 }
+                if (_CalcBomViewAppService.mordersInsertList.Any())
+                {
+                    var molist = ObjectMapper.Map<List<mo_mes_morder>, List<mes_morder>>(_CalcBomViewAppService.mordersInsertList);
+                    _businessDbContext.BulkInsert(molist);
+
+                    List<WorkOrdMaster> workOrdSave = new List<WorkOrdMaster>();
+                    List<WorkOrdRouting> workOrdRoutingSave = new List<WorkOrdRouting>();
+                    List<WorkOrdDetail> workOrdDetails = new List<WorkOrdDetail>();
+                    if (molist.Any())
+                    {
+                        molist.ForEach(s => { s.create_time = DateTime.Now; s.factory_id = param.factoryId; s.company_id = param.company_id; });
+                        //同步工单
+                        CreateWorkOrdDates(molist, _CalcBomViewAppService.moentriesInsertList, routingOps, workOrdSave, workOrdRoutingSave, workOrdDetails, new List<b_examine_result>(), new List<b_bom_child_examine>());
+                        if (workOrdSave.Any())
+                        {
+                            _businessDbContext.BulkInsert(workOrdSave);
+                        }
+                        var DBworkOrdList = _workOrdMaster.Select(a => workOrdSave.Count > 0 && a.Domain == workOrdSave[0].Domain && workOrdSave.Select(c => c.WorkOrd).Contains(a.WorkOrd));
+                        if (workOrdRoutingSave.Any())
+                        {
+                            workOrds.AddRange(DBworkOrdList);
+                            workOrdRoutingSave.ForEach(c =>
+                            {
+                                c.WorkOrdMasterRecID = DBworkOrdList.Where(a => a.WorkOrd == c.WorkOrd).First().RecID;
+                            });
+                            _businessDbContext.BulkInsert(workOrdRoutingSave);
+                        }
+                        priorityMorderList.AddRange(molist);
+                    }
+                }
 
+                List<WorkOrdDetail> mainWorkOrdDetails = new List<WorkOrdDetail>();
+                //成品虚拟件对应关系
+                var productOpList = _productStructureOp.Select(x => priorityMorderList.Select(c => c.product_code).Contains(x.ProductItem) && x.Domain == param.factoryId.ToString());
+                foreach (var workord in priorityMorderList)
+                {
+                    long fid = GetParentMo(priorityMorderList, workord);
+                    var exm = examines.Find(s => s.morder_id == fid);
+                    //var exm = examines.Find(s => s.morder_no == workord.morder_no);
+                    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 (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();
+
+                                //添加工单的物料信息
+                                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;
+                                if (workord.need_number != 0)
+                                {
+                                    woDetail.FrozenBOMQty = Math.Round(woDetail.QtyRequired / workord.need_number.GetValueOrDefault(), 10);
+                                }
+                                mainWorkOrdDetails.Add(woDetail);
+                                num++;
+                            }
+                        }
+                    }
+                }
                 //获取工单数据
                 /*var workOrdMasters = _workOrdMaster.Select(p => mo_Mes_Morders.Select(c => c.morder_no).Contains(p.WorkOrd) && p.Domain == param.factoryId.ToString());
                 workOrdMasters.ForEach(s => {
@@ -3599,9 +3637,9 @@ namespace Business.ResourceExamineManagement
                         {
                             _businessDbContext.BulkDelete(delWorkOrddetails);
                         }
-                        if (workOrdDetails.Any())
+                        if (mainWorkOrdDetails.Any())
                         {
-                            _businessDbContext.BulkInsert(workOrdDetails);
+                            _businessDbContext.BulkInsert(mainWorkOrdDetails);
                         }
                         await unitOfWork.CompleteAsync();
                     }