فهرست منبع

销售发货数据同步、订单检查

Pengxy 10 ماه پیش
والد
کامیت
23be7ab380

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

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

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

@@ -851,7 +851,8 @@ namespace Business.ResourceExamineManagement
                     dtl.kitting_times = getBomList.Where(p => p.is_use).OrderByDescending(m => m.kitting_time).First().kitting_time.GetValueOrDefault();
                     //TODO:最早开始时间默认3天后(后期调整,因为要计算排产,计算产能这一类,才能得到开工时间)
                     dtl.earliest_times = dtl.kitting_times.AddDays(1);
-                    item.progress = "2";
+                    //再评审状态改为确认
+                    item.progress = item.progress=="0"?"3": "2";
                     //替代关系展开list
                     dtl.BomChildExamineList = getBomList;
                     //添加订单行开工信息

+ 68 - 16
MicroServices/Business/Business.Application/SystemJobManagement/SystemJobAppService.cs

@@ -407,7 +407,7 @@ namespace Business.SystemJobManagement
                             currency = custList[i].Curr,
                             employee_name = custList[i].Salesperson1,
                             factory_id = factory_id,
-                            tenant_id=tenant_id,
+                            tenant_id = tenant_id,
                             company_id = tenant_id
                         };
                         customer.GenerateNewId(help.NextId());
@@ -494,10 +494,10 @@ namespace Business.SystemJobManagement
                 return;
             }
             var daystr = DateTime.Now.Year.ToString() + "-01-01";
-            var seorderList = _mysql_crm_seorder.GetListAsync(m=>m.create_time>= DateTime.Parse(daystr)).Result;
-            var seorderentryList = _mysql_crm_seorderentry.GetListAsync(m=> seorderList.Select(s=>s.Id).ToList().Contains(m.seorder_id.Value)).Result;
+            var seorderList = _mysql_crm_seorder.GetListAsync(m => m.create_time >= DateTime.Parse(daystr)).Result;
+            var seorderentryList = _mysql_crm_seorderentry.GetListAsync(m => seorderList.Select(s => s.Id).ToList().Contains(m.seorder_id.Value)).Result;
 
-            var salesOrdList = _salesOrdMaster.Select(x => x.Domain == domain && seorderList.Select(s=>s.bill_no).ToList().Contains(x.SalesOrd)).ToList();
+            var salesOrdList = _salesOrdMaster.Select(x => x.Domain == domain && seorderList.Select(s => s.bill_no).ToList().Contains(x.SalesOrd)).ToList();
             var salesDtlList = _salesOrdDetail.Select(x => x.Domain == domain && salesOrdList.Select(x => x.SalesOrd).ToList().Contains(x.SalesOrd)).ToList();
 
             var itemList = _itemMaster.Select(x => x.Domain == domain && seorderentryList.Select(c => c.item_number).Contains(x.ItemNum)).ToList();
@@ -516,14 +516,14 @@ namespace Business.SystemJobManagement
                     {
                         so = new SalesOrdMaster();
                         so.SalesOrd = sale.bill_no;
-                        so.SOType =  "SO";
+                        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;
+                        so.IsActive = true;
+                        so.IsConfirm = true;
                         ItemsAdd.Add(so);
                     }
                     else
@@ -555,7 +555,7 @@ namespace Business.SystemJobManagement
                             se.SalesOrd = sale.bill_no;
                             se.SOType = "SO";
                             se.QtyOrded = dtl.qty.GetValueOrDefault();
-                            se.Descr=item.Descr;
+                            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;
@@ -592,6 +592,58 @@ namespace Business.SystemJobManagement
             }
         }
 
+        public string SyncASNBOLShipperMaster()
+        {
+            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 "未配置组织编号";
+            }
+            var daystr = DateTime.Now.Year.ToString() + "-01-01";
+            //发货
+            var asblList = _ASNBOLShipperDetail.Select(x => x.CreateTime >= DateTime.Parse(daystr));
+            //销售明细
+            var seorderentryList = _mysql_crm_seorderentry.GetListAsync(m => asblList.Select(s => s.OrdNbr).ToList().Contains(m.bill_no)).Result;
+            //销售明细
+            var salesDtlList = _salesOrdDetail.Select(x => x.Domain == domain && asblList.Select(x => x.OrdNbr).ToList().Contains(x.SalesOrd)).ToList();
+            try
+            {
+                List<crm_seorderentry> CItemsUpdate = new List<crm_seorderentry>();
+                List<SalesOrdDetail> SItemsUpdate = new List<SalesOrdDetail>();
+                foreach (var asbl in asblList)
+                {
+                    var seo = seorderentryList.Find(s => s.bill_no == asbl.OrdNbr && s.item_number == asbl.ContainerItem);
+                    var sal = salesDtlList.Find(s => s.SalesOrd == asbl.OrdNbr && s.ItemNum == asbl.ContainerItem);
+                    if (seo != null)
+                    {
+                        //发货时间
+                        seo.date = asbl.CreateTime;
+                        seo.update_by_name = "sync";
+                        seo.update_time = DateTime.Now;
+                        CItemsUpdate.Add(seo);
+                    }
+                    if (sal != null)
+                    {
+                        //发货数量
+                        sal.QtyShipped = asbl.RealQty;
+                        sal.UpdateTime = DateTime.Now;
+                        sal.UpdateUser = "sync";
+                        SItemsUpdate.Add(sal);
+                    }
+                }
+                _businessDbContext.BulkUpdate(CItemsUpdate);
+                _businessDbContext.BulkUpdate(SItemsUpdate);
+
+            }
+            catch (Exception ex)
+            {
+                return ex.Message;
+            }
+            return "任务执行成功";
+        }
+
         //////同步销售订单
         ////public void SyncSalesOrdMaster()
         ////{
@@ -837,7 +889,7 @@ namespace Business.SystemJobManagement
                             erpcls = 1;
                             erpclsText = "自制";
                         }
-                        
+
                     }
                     else
                     {
@@ -901,7 +953,7 @@ namespace Business.SystemJobManagement
                             total_tqq = 1,
                             order_point = 1,
                             secinv = custList[i].SafetyStk,
-                            item_type= custList[i].ItemType,
+                            item_type = custList[i].ItemType,
                             secinv_ratio = 1,
                             self_inspection_date = custList[i].InsLT,
                             Warehousing_date = 1,
@@ -998,7 +1050,7 @@ namespace Business.SystemJobManagement
                             var itemchild = ic_itemList.Find(a => a.number == child.ComponentItem);
                             if (itemchild == null) { continue; }
                             var itemMaster = custList.Find(a => a.ItemNum == child.ComponentItem);
-                            if (itemMaster == null || itemMaster.MRPRequired==0) { continue; }
+                            if (itemMaster == null || itemMaster.MRPRequired == 0) { continue; }
                             decimal scrap = child.QtyExchd + child.Scrap;
                             /*//如果当前明细是BOM,则使用组件报废率
                             if (wmsBomList.Where(c => c.ParentItem == child.ComponentItem).Any())
@@ -1092,7 +1144,7 @@ namespace Business.SystemJobManagement
                                 icbomchild.Op = child.Op;
                                 //icbomchild.scrap = child.Scrap;
                                 icbomchild.scrap = scrap;
-                                
+
                                 icbomchild.wastage = child.QtyConsumed;
                                 childItemsUpd.Add(icbomchild);
                             }
@@ -1147,7 +1199,7 @@ namespace Business.SystemJobManagement
                 {
                     return "请检查配置文件中公司和工厂编码是否维护。";
                 }
-                var sysResult =  SyncOrder(domain).Result;
+                var sysResult = SyncOrder(domain).Result;
                 if (sysResult == "ok")
                 {
                     sysResult = SyncPurOrd(domain, companyid).Result;
@@ -1226,7 +1278,7 @@ namespace Business.SystemJobManagement
             return "ok";
         }
 
-        private async Task<string> SyncPurOrd(string domain,string companyid)
+        private async Task<string> SyncPurOrd(string domain, string companyid)
         {
             //可以直接更新数据状态,留个记录
             _businessDbContext.Database.ExecuteSqlRaw("DELETE P FROM srm_po_main p LEFT JOIN PurOrdMaster m on p.po_billno=m.PurOrd WHERE m.PurOrd is null;" +
@@ -1397,7 +1449,7 @@ namespace Business.SystemJobManagement
                     await _businessDbContext.BulkUpdateAsync(updatePolist);
                 }
             }
-            catch(Exception ex)
+            catch (Exception ex)
             {
                 return ex.Message;
             }
@@ -1483,7 +1535,7 @@ namespace Business.SystemJobManagement
                 }*/
                 //工单按领料单已出库完成记录,清理掉库存占用记录
                 List<NbrMaster> nbrlist = _nbrMaster.Select(x => x.Domain == domain && x.Type.ToUpper() == "SM" && x.UpdateTime >= start).ToList();
-               
+
                 var workords = nbrlist.Select(x => x.WorkOrd).Distinct();
                 var occupy = _ic_item_stockoccupy.GetListAsync(x => workords.Contains(x.morder_mo)).Result;
                 var nbrDtls = _nbrDetail.Select(x => x.Domain == domain && nbrlist.Select(c => c.RecID).Contains(x.NbrRecID)).ToList();

+ 5 - 0
MicroServices/Business/Business.Domain/StructuredDB/MES/SalesOrdDetail.cs

@@ -58,6 +58,11 @@ namespace Business.StructuredDB.MES
         public decimal? QtyOrded { get; set; }
 
         /// <summary>
+        /// 已发数
+        /// </summary>
+        public decimal? QtyShipped { get; set; }
+
+        /// <summary>
         /// 日期
         /// </summary>
         public DateTime? DueDate { get; set; }

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

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

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

@@ -3538,3 +3538,33 @@
 {"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-05-26T17:42:39.7403972+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
 {"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-05-26T17:42:39.7446786+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
 {"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-05-26T17:42:39.7471977+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-05-26T17:53:44.6071364+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-05-26T17:53:44.6394247+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-05-26T17:53:44.6422982+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-05-26T17:53:44.6438478+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-05-26T17:53:44.6484216+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-05-26T17:53:44.6509094+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-05-26T17:54:50.7163719+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-05-26T17:54:50.7487204+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-05-26T17:54:50.7513152+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-05-26T17:54:50.7529977+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-05-26T17:54:50.7573056+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-05-26T17:54:50.7597592+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-05-27T13:41:15.9361602+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-05-27T13:41:15.9802192+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-05-27T13:41:15.983356+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-05-27T13:41:15.9850739+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-05-27T13:41:15.9906448+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-05-27T13:41:15.9931242+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-05-28T14:53:06.8729927+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-05-28T14:53:06.9227835+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-05-28T14:53:06.9277217+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-05-28T14:53:06.9300091+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-05-28T14:53:06.9354248+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-05-28T14:53:06.9376409+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-05-28T14:56:30.9586968+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-05-28T14:56:31.0042563+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-05-28T14:56:31.0085052+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-05-28T14:56:31.0102283+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-05-28T14:56:31.0163669+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-05-28T14:56:31.0186143+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}