瀏覽代碼

修改采购订单表

Pengxy 1 月之前
父節點
當前提交
53bff18c89

+ 73 - 30
MicroServices/Business/Business.Application/ReplenishmentManagement/ReplenishmentAppService.cs

@@ -128,14 +128,12 @@ namespace Business.Replenishment
         private readonly IRepository<mes_moentry, long> _mysql_mes_moentry;
         private readonly ISqlRepository<WorkOrdDetail> _workOrdDetail;
         private readonly IRepository<mo_srm_po_list, long> _srm_po_list;
-        private readonly IRepository<srm_po_list, long> _mysql_srm_po_list;
         private readonly ISqlRepository<RoutingOpDetail> _routingOpDetail;
         private readonly ISqlRepository<ProductStructureMaster> _productStructureMaster;
         private readonly ISqlRepository<ShopCalendarWorkCtr> _shopCalendarWorkCtr;
         private readonly ISqlRepository<QualityLineWorkDetail> _qualityLineWorkDetail;
         private readonly ISqlRepository<CustMaster> _custMaster;
         private readonly IRepository<mo_srm_po_main, long> _srm_po_main;
-        private readonly IRepository<srm_po_main, long> _mysql_srm_po_main;
         private readonly IRepository<mo_srm_purchase, long> _srm_purchase;
         private readonly IRepository<srm_purchase, long> _mysql_srm_purchase;
         private readonly IRepository<mes_morder, long> _mysql_mes_morder;
@@ -326,7 +324,6 @@ namespace Business.Replenishment
             IRepository<mes_moentry, long> mysql_mes_moentry,
             ISqlRepository<WorkOrdDetail> workOrdDetail,
             IRepository<mo_srm_po_list, long> srm_po_list,
-            IRepository<srm_po_list, long> mysql_srm_po_list,
             ISqlRepository<RoutingOpDetail> routingOpDetail,
             ISqlRepository<ProductStructureMaster> productStructureMaster,
             ISqlRepository<ShopCalendarWorkCtr> shopCalendarWorkCtr,
@@ -334,7 +331,6 @@ namespace Business.Replenishment
             ISqlRepository<QualityLineWorkDetail> qualityLineWorkDetail,
             ISqlRepository<ScheduleResultOpMaster> scheduleResultOpMaster,
             IRepository<mo_srm_po_main, long> srm_po_main,
-            IRepository<srm_po_main, long> mysql_srm_po_main,
             IRepository<mo_srm_purchase, long> srm_purchase,
             IRepository<srm_purchase, long> mysql_srm_purchase,
             IRepository<mes_morder, long> mysql_mes_morder,
@@ -431,13 +427,11 @@ namespace Business.Replenishment
             _mysql_mes_moentry = mysql_mes_moentry;
             _workOrdDetail = workOrdDetail;
             _srm_po_list = srm_po_list;
-            _mysql_srm_po_list = mysql_srm_po_list;
             _routingOpDetail = routingOpDetail;
             _productStructureMaster = productStructureMaster;
             _shopCalendarWorkCtr = shopCalendarWorkCtr;
             _qualityLineWorkDetail = qualityLineWorkDetail;
             _srm_po_main = srm_po_main;
-            _mysql_srm_po_main = mysql_srm_po_main;
             _srm_purchase = srm_purchase;
             _mysql_srm_purchase = mysql_srm_purchase;
             _mysql_mes_morder = mysql_mes_morder;
@@ -3786,26 +3780,27 @@ namespace Business.Replenishment
                 }
             }
             //通过要删除的要货令明细,删除采购申请,然后根据删除的采购申请,删除srm_po_list
-            var delpolist = _mysql_srm_po_main.GetListAsync(x => delMstlist.Select(c => c.PurOrd).Contains(x.po_billno) && x.factory_id.ToString() == domain).Result;
-            var podtllist = _mysql_srm_po_list.GetListAsync(x => delDtllist.Select(c => c.PurOrd).Contains(x.po_billno) && x.factory_id.ToString() == domain).Result;
-            List<srm_po_list> delpllist = new List<srm_po_list>();
-            foreach (var pl in podtllist)
-            {
-                if (delDtllist.Exists(x => x.PurOrd == pl.po_billno && x.ItemNum == pl.ItemNum && x.Line == pl.polist_row.GetValueOrDefault()))
-                {
-                    delpllist.Add(pl);
-                }
-            }
-            var delocclist = _mysql_srm_po_occupy.GetListAsync(x => delpllist.Select(c => c.Id).Contains(x.polist_id.GetValueOrDefault())).Result;
-            var delprlist = _mysql_srm_pr_main.GetListAsync(x => delpllist.Select(c => c.pr_id).Contains(x.Id)).Result;
+            //var delpolist = _PurOrdMaster.Select(x => delMstlist.Select(c => c.PurOrd).Contains(x.PurOrd) && x.Domain == domain).ToList();
+            //var podtllist = _PurOrdDetail.Select(x => delDtllist.Select(c => c.PurOrd).Contains(x.PurOrd) && x.Domain == domain).ToList();
+            //List<PurOrdDetail> delpllist = new List<PurOrdDetail>();
+            //foreach (var pl in podtllist)
+            //{
+            //    if (delDtllist.Exists(x => x.PurOrd == pl.PurOrd && x.ItemNum == pl.ItemNum && x.Line == pl.Line))
+            //    {
+            //        delpllist.Add(pl);
+            //    }
+            //}
+            var delocclist = _mysql_srm_po_occupy.GetListAsync(x => delMstlist.Select(c => (long)c.RecID).Contains(x.polist_id.GetValueOrDefault())).Result;
+            var delPrBillnos = delDtllist.Where(c => !string.IsNullOrEmpty(c.Req)).Select(c => c.Req).Distinct().ToList();
+            var delprlist = _mysql_srm_pr_main.GetListAsync(x => delPrBillnos.Contains(x.pr_billno)).Result;
             using (var unitOfWork = _unitOfWorkManager.Begin(false, true))
             {
                 try
                 {
                     _businessDbContext.RemoveRange(delMstlist); _businessDbContext.SaveChanges();
                     _businessDbContext.RemoveRange(delDtllist); _businessDbContext.SaveChanges();
-                    _businessDbContext.RemoveRange(delpolist); _businessDbContext.SaveChanges();
-                    _businessDbContext.RemoveRange(delpllist); _businessDbContext.SaveChanges();
+                    //_businessDbContext.RemoveRange(delpolist); _businessDbContext.SaveChanges();
+                    //_businessDbContext.RemoveRange(delpllist); _businessDbContext.SaveChanges();
                     _businessDbContext.RemoveRange(delocclist); _businessDbContext.SaveChanges();
                     _businessDbContext.RemoveRange(delprlist); _businessDbContext.SaveChanges();
                     await unitOfWork.CompleteAsync();
@@ -6447,27 +6442,75 @@ namespace Business.Replenishment
                     await MongoHelper<mo_mes_mooccupy>.InsertManyAsync(moMes_mooccupy);
                 }
             }
-            //根据物料信息只同步在途未关闭的采购订单和采购申请
+            //根据物料信息,只同步在途未关闭的采购订单和采购申请
 
-            //采购订单明细
-            var srm_po_list = _mysql_srm_po_list.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId && itemIds.Contains(x.icitem_id.GetValueOrDefault())).Result;
-            if (srm_po_list.Count > 0)
+            //采购订单明细 - 需要通过ItemNum关联ic_item获取物料ID
+            var itemList = _mysql_ic_item.GetListAsync(x => x.factory_id == factoryId && x.company_id == companyId && itemIds.Contains(x.Id)).Result;
+            var itemNumbers = itemList.Select(x => x.number).ToList();
+            var purOrdDetails = _PurOrdDetail.Select(x => x.Domain == factoryId.ToString() && itemNumbers.Contains(x.ItemNum)).ToList();
+            if (purOrdDetails.Count > 0)
             {
                 //采购订单--取出状态为在途的PO
-                var srm_po_main = _mysql_srm_po_main.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId && srm_po_list.Select(c => c.po_id).Contains(x.Id) && x.state != 3).Result;
-                if (srm_po_main.Count > 0)
+                var purOrdMasters = _PurOrdMaster.Select(x => x.Domain == factoryId.ToString() && purOrdDetails.Select(c => c.PurOrdRecID).Contains(x.RecID) && (x.Status == null || x.Status.ToUpper() != "C")).ToList();
+                if (purOrdMasters.Count > 0)
                 {
-                    var moSrm_po_main = ObjectMapper.Map<List<srm_po_main>, List<mo_srm_po_main>>(srm_po_main);
+                    List<srm_po_main> srm_po_main_list = new List<srm_po_main>();
+                    foreach (var master in purOrdMasters)
+                    {
+                        srm_po_main_list.Add(new srm_po_main
+                        {
+                            po_billno = master.PurOrd,
+                            supplier_no = master.Supp,
+                            po_ssend_date = master.OrdDate,
+                            po_tax_rate = master.Tax1,
+                            supplier_type = master.USAGE,
+                            currency = master.Curr == "CNY" ? 1 : 0,
+                            suppliertelephone = master.CustPhone,
+                            supplierdddress = master.CustAddress,
+                            state = master.Status == null || master.Status.ToUpper() != "C" ? 1 : 3,
+                            factory_id = factoryId,
+                            company_id = companyId,
+                            tenant_id = companyId
+                        });
+                    }
+                    var moSrm_po_main = ObjectMapper.Map<List<srm_po_main>, List<mo_srm_po_main>>(srm_po_main_list);
                     moSrm_po_main.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
                     await MongoHelper<mo_srm_po_main>.InsertManyAsync(moSrm_po_main);
                     //订单明细--根据在途PO过滤出有效的Po_list
-                    srm_po_list = srm_po_list.Where(s => srm_po_main.Select(x => x.Id).Contains(s.po_id.GetValueOrDefault())).ToList();
-                    var moSrm_po_list = ObjectMapper.Map<List<srm_po_list>, List<mo_srm_po_list>>(srm_po_list);
+                    purOrdDetails = purOrdDetails.Where(s => purOrdMasters.Select(x => x.RecID).Contains(s.PurOrdRecID)).ToList();
+                    List<srm_po_list> srm_po_list_data = new List<srm_po_list>();
+                    foreach (var detail in purOrdDetails)
+                    {
+                        var icitem = itemList.Find(a => a.number == detail.ItemNum);
+                        srm_po_list_data.Add(new srm_po_list
+                        {
+                            po_id = detail.PurOrdRecID,
+                            po_billno = detail.PurOrd,
+                            polist_row = detail.Line,
+                            ItemNum = detail.ItemNum,
+                            qty = detail.QtyOrded,
+                            plan_qty = detail.QtyOrded,
+                            rqty = detail.RctQty,
+                            rarrdate = detail.DueDate,
+                            price = detail.PurCost.GetValueOrDefault(),
+                            netprice = detail.PurCost.GetValueOrDefault(),
+                            total_price = detail.QtyOrded * detail.PurCost.GetValueOrDefault(),
+                            netmoney = detail.QtyOrded * detail.PurCost.GetValueOrDefault(),
+                            rate = detail.TaxRate,
+                            state = detail.Status == null || detail.Status.ToUpper() != "C" ? 1 : 0,
+                            pr_billno = detail.Req,
+                            icitem_id = icitem?.Id,
+                            factory_id = factoryId,
+                            company_id = companyId,
+                            tenant_id = companyId
+                        });
+                    }
+                    var moSrm_po_list = ObjectMapper.Map<List<srm_po_list>, List<mo_srm_po_list>>(srm_po_list_data);
                     moSrm_po_list.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; item.create_time = DateTime.Now; });
                     await MongoHelper<mo_srm_po_list>.InsertManyAsync(moSrm_po_list);
                 }
                 //采购订单明细占用详情
-                var srm_po_occupy = _mysql_srm_po_occupy.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId && srm_po_list.Select(c => c.Id).Contains(x.polist_id.GetValueOrDefault())).Result;
+                var srm_po_occupy = _mysql_srm_po_occupy.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId && purOrdDetails.Select(c => (long)c.RecID).Contains(x.polist_id.GetValueOrDefault())).Result;
                 if (srm_po_occupy.Count > 0)
                 {
                     var moSrm_po_occupy = ObjectMapper.Map<List<srm_po_occupy>, List<mo_srm_po_occupy>>(srm_po_occupy);

+ 1 - 1
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -2033,7 +2033,7 @@ namespace Business.ResourceExamineManagement
                         {
                             _workOrdMaster.Insert(workOrds);
                         }
-                        var DBworkOrdList = _workOrdMaster.Select(a => workOrds.Count > 0 && a.Domain == workOrds[0].Domain && workOrds.Select(c => c.WorkOrd).Contains(a.WorkOrd));
+                        var DBworkOrdList = _workOrdMaster.Select(a => workOrds.Count > 0 && workOrds.Select(c => c.WorkOrd).Contains(a.WorkOrd));
                         if (workOrdRoutings.Any())
                         {
                             workOrdRoutings.ForEach(c =>

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

@@ -4984,3 +4984,9 @@
 {"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2026-02-05T16:06:23.025564+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
 {"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2026-02-05T16:06:23.0296966+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
 {"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2026-02-05T16:06:23.032303+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2026-02-05T16:10:20.9587082+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2026-02-05T16:10:20.9935674+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2026-02-05T16:10:20.9970017+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2026-02-05T16:10:20.9985004+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2026-02-05T16:10:21.0036105+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2026-02-05T16:10:21.0054559+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}