Pengxy 10 ماه پیش
والد
کامیت
4ba192968d

+ 7 - 0
MicroServices/Business/Business.Application.Contracts/SystemJob/ISystemJobAppService.cs

@@ -44,6 +44,13 @@ namespace Business.SystemJob
         Task<string> SyncBaseDataToMongoDBJob();
 
         /// <summary>
+        /// 定时同步订单数据
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        string SyncSalesOrdMaster();
+
+        /// <summary>
         /// 定时同步发货数据
         /// </summary>
         /// <param name="id"></param>

+ 84 - 76
MicroServices/Business/Business.Application/SystemJobManagement/SystemJobAppService.cs

@@ -247,7 +247,7 @@ namespace Business.SystemJobManagement
             {
                 SyncCustMaster();
                 SyncSuppMaster();
-                SyncSalesOrdMaster();
+                //SyncSalesOrdMaster();
                 //SyncSalesOrdMasterEntry();
                 SyncItemMaster();
                 SyncBom();
@@ -484,14 +484,14 @@ namespace Business.SystemJobManagement
         }
 
         //同步销售订单
-        public void SyncSalesOrdMaster()
+        public string SyncSalesOrdMaster()
         {
             IConfiguration configuration = new ConfigurationBuilder().AddJsonFile("appsettings.json", optional: true, reloadOnChange: true).Build();
             string domain = configuration.GetConnectionString("Factory_id");
             string companyid = configuration.GetConnectionString("Company_id");
             if (string.IsNullOrEmpty(domain) || string.IsNullOrEmpty(companyid))
             {
-                return;
+                return "未配置组织编号";
             }
             var daystr = DateTime.Now.Year.ToString() + "-01-01";
             var seorderList = _mysql_crm_seorder.GetListAsync(m => m.create_time >= DateTime.Parse(daystr)).Result;
@@ -507,89 +507,97 @@ namespace Business.SystemJobManagement
 
             List<SalesOrdDetail> seAdd = new List<SalesOrdDetail>();
             List<SalesOrdDetail> seUpdate = new List<SalesOrdDetail>();
-            if (seorderList.Any())
+            try
             {
-                foreach (var sale in seorderList)
+                if (seorderList.Any())
                 {
-                    var so = salesOrdList.Find(x => x.SalesOrd == sale.bill_no);
-                    if (so == null)
+                    foreach (var sale in seorderList)
                     {
-                        so = new SalesOrdMaster();
-                        so.SalesOrd = sale.bill_no;
-                        so.SOType = "SO";
-                        so.ShipTo = sale.custom_no;
-                        so.OrdDate = sale.rdate;
-                        so.Domain = domain;
-                        so.CreateTime = DateTime.Now;
-                        so.CreateUser = "sync";
-                        so.IsActive = true;
-                        so.IsConfirm = true;
-                        ItemsAdd.Add(so);
-                    }
-                    else
-                    {
-                        so.SOType = "SO";
-                        so.ShipTo = sale.custom_no;
-                        so.OrdDate = sale.rdate;
-                        so.Domain = domain;
-                        so.UpdateTime = DateTime.Now;
-                        so.UpdateUser = "sync";
-                        ItemsUpdate.Add(so);
-                    }
-
-                    var saleDtl = seorderentryList.Where(x => x.seorder_id == sale.Id).ToList();
-                    foreach (var dtl in saleDtl)
-                    {
-                        var se = salesDtlList.Find(x => x.SalesOrd == so.SalesOrd && x.Line == dtl.entry_seq);
-                        var item = itemList.Find(x => x.ItemNum == dtl.item_number);
-                        if (item == null)
+                        var so = salesOrdList.Find(x => x.SalesOrd == sale.bill_no);
+                        if (so == null)
                         {
-                            continue;
+                            so = new SalesOrdMaster();
+                            so.SalesOrd = sale.bill_no;
+                            so.SOType = "SO";
+                            so.ShipTo = sale.custom_no;
+                            so.OrdDate = sale.rdate;
+                            so.Domain = domain;
+                            so.CreateTime = DateTime.Now;
+                            so.CreateUser = "sync";
+                            so.IsActive = true;
+                            so.IsConfirm = true;
+                            ItemsAdd.Add(so);
                         }
-                        if (se == null)
+                        else
                         {
-                            se = new SalesOrdDetail();
-                            se.SalesOrdRecID = so.RecID;
-                            se.ItemNum = item.ItemNum;
-                            se.UM = item.UM;
-                            se.SalesOrd = sale.bill_no;
-                            se.SOType = "SO";
-                            se.QtyOrded = dtl.qty.GetValueOrDefault();
-                            se.Descr = item.Descr;
-                            se.DueDate = dtl.plan_date != null ? dtl.plan_date : DateTime.Now;
-                            se.Remark = dtl.remark;
-                            se.CreateUser = dtl.create_by_name;
-                            se.CreateTime = dtl.create_time;
-                            se.UpdateUser = dtl.update_by_name;
-                            se.UpdateTime = dtl.update_time;
-                            se.Domain = so.Domain;
-                            se.Line = dtl.entry_seq.GetValueOrDefault();
-                            se.IsConfirm = true;
-                            se.IsActive = true;
-                            seAdd.Add(se);
+                            so.SOType = "SO";
+                            so.ShipTo = sale.custom_no;
+                            so.OrdDate = sale.rdate;
+                            so.Domain = domain;
+                            so.UpdateTime = DateTime.Now;
+                            so.UpdateUser = "sync";
+                            ItemsUpdate.Add(so);
                         }
-                        else
+
+                        var saleDtl = seorderentryList.Where(x => x.seorder_id == sale.Id).ToList();
+                        foreach (var dtl in saleDtl)
                         {
-                            se.SalesOrdRecID = so.RecID;
-                            se.ItemNum = item.ItemNum;
-                            se.Descr = item.Descr;
-                            se.UM = item.UM;
-                            se.QtyOrded = dtl.qty.GetValueOrDefault();
-                            se.DueDate = dtl.plan_date != null ? dtl.plan_date : DateTime.Now;
-                            se.Remark = dtl.remark;
-                            se.UpdateUser = dtl.update_by_name;
-                            se.UpdateTime = dtl.update_time;
-                            se.Domain = so.Domain;
-                            se.Line = dtl.entry_seq.GetValueOrDefault();
-                            seUpdate.Add(se);
+                            var se = salesDtlList.Find(x => x.SalesOrd == so.SalesOrd && x.Line == dtl.entry_seq);
+                            var item = itemList.Find(x => x.ItemNum == dtl.item_number);
+                            if (item == null)
+                            {
+                                continue;
+                            }
+                            if (se == null)
+                            {
+                                se = new SalesOrdDetail();
+                                se.SalesOrdRecID = so.RecID;
+                                se.ItemNum = item.ItemNum;
+                                se.UM = item.UM;
+                                se.SalesOrd = sale.bill_no;
+                                se.SOType = "SO";
+                                se.QtyOrded = dtl.qty.GetValueOrDefault();
+                                se.Descr = item.Descr;
+                                se.DueDate = dtl.plan_date != null ? dtl.plan_date : DateTime.Now;
+                                se.Remark = dtl.remark;
+                                se.CreateUser = dtl.create_by_name;
+                                se.CreateTime = dtl.create_time;
+                                se.UpdateUser = dtl.update_by_name;
+                                se.UpdateTime = dtl.update_time;
+                                se.Domain = so.Domain;
+                                se.Line = dtl.entry_seq.GetValueOrDefault();
+                                se.IsConfirm = true;
+                                se.IsActive = true;
+                                seAdd.Add(se);
+                            }
+                            else
+                            {
+                                se.SalesOrdRecID = so.RecID;
+                                se.ItemNum = item.ItemNum;
+                                se.Descr = item.Descr;
+                                se.UM = item.UM;
+                                se.QtyOrded = dtl.qty.GetValueOrDefault();
+                                se.DueDate = dtl.plan_date != null ? dtl.plan_date : DateTime.Now;
+                                se.Remark = dtl.remark;
+                                se.UpdateUser = dtl.update_by_name;
+                                se.UpdateTime = dtl.update_time;
+                                se.Domain = so.Domain;
+                                se.Line = dtl.entry_seq.GetValueOrDefault();
+                                seUpdate.Add(se);
+                            }
                         }
                     }
+                    _businessDbContext.BulkInsert(ItemsAdd);
+                    _businessDbContext.BulkUpdate(ItemsUpdate);
+                    _businessDbContext.BulkInsert(seAdd);
+                    _businessDbContext.BulkUpdate(seUpdate);
                 }
-                _businessDbContext.BulkInsert(ItemsAdd);
-                _businessDbContext.BulkUpdate(ItemsUpdate);
-                _businessDbContext.BulkInsert(seAdd);
-                _businessDbContext.BulkUpdate(seUpdate);
             }
+            catch (Exception ex)
+            {
+                return ex.Message;
+            }
+            return "任务执行成功";
         }
 
         public string SyncASNBOLShipperMaster()
@@ -604,11 +612,11 @@ namespace Business.SystemJobManagement
             var daystr = DateTime.Now.Year.ToString() + "-01-01";
             //发货
             var asblDList = _ASNBOLShipperDetail.Select(x => x.CreateTime >= DateTime.Parse(daystr));
-            var asblList = asblDList.GroupBy(s=>s.OrdNbr).Select(list => new ASNBOLShipperDetail  //也可以写成new GroupList<Student> 实体见下面
+            var asblList = asblDList.GroupBy(s => s.OrdNbr).Select(list => new ASNBOLShipperDetail  //也可以写成new GroupList<Student> 实体见下面
             {
                 OrdNbr = list.Key.ToString(),
                 RealQty = list.Sum(x => x.RealQty),
-                CreateTime = list.Max(x=>x.CreateTime)  //查此组Ident字段最大值
+                CreateTime = list.Max(x => x.CreateTime)  //查此组Ident字段最大值
             });
             //销售明细
             var seorderentryList = _mysql_crm_seorderentry.GetListAsync(m => asblList.Select(s => s.OrdNbr).ToList().Contains(m.bill_no)).Result;

+ 11 - 0
MicroServices/Business/Business.HttpApi/Controllers/SystemJobController.cs

@@ -66,6 +66,17 @@ namespace Business.Controllers
         }
 
         /// <summary>
+        /// 定时同步订单数据
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet]
+        [Route("SyncSalesOrdMaster")]
+        public string SyncSalesOrdMaster()
+        {
+            return _SystemJobAppService.SyncSalesOrdMaster();
+        }
+
+        /// <summary>
         /// 定时同步发货数据
         /// </summary>
         /// <returns></returns>