From dda095e27b535d5748340f127c5f83c0d1324226 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期三, 29 十月 2025 17:30:58 +0800
Subject: [PATCH] 1

---
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/AspNetCoreSchedule.cs |  104 +++++++++++++++++++++++++++++++---------------------
 1 files changed, 62 insertions(+), 42 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/AspNetCoreSchedule.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/AspNetCoreSchedule.cs"
index d2824f8..f938292 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/AspNetCoreSchedule.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/AspNetCoreSchedule.cs"
@@ -6,13 +6,16 @@
 using SixLabors.Fonts;
 using SqlSugar;
 using System;
+using System.Data;
 using System.Net;
 using System.Net.Mail;
 using System.Text;
+using System.Xml.Linq;
 using WIDESEA_Cache;
 using WIDESEA_Core.Const;
 using WIDESEA_DTO.WMS;
 using WIDESEA_IOrderRepository;
+using WIDESEA_IOrderServices;
 using WIDESEA_IServices;
 using WIDESEA_Model.Models.ERP;
 using WIDESEA_Model.Models.Order;
@@ -25,36 +28,35 @@
     {
         private readonly ILogger<MyBackgroundService> _logger;
         private readonly IStockInfoRepository _stockInfoRepository;
-        private readonly IDt_AreaInfoRepository _areaInfoRepository; //鍖哄煙
         private readonly IDt_TaskRepository _taskRepository;
-        private readonly IDt_StationManagerRepository _stationManagerRepository;
         private readonly ISys_ConfigService _configService;
         private readonly ILocationInfoRepository _locationRepository;
         private readonly IDt_InboundOrderRepository _inboundOrderRepository;
         private readonly IDt_ProductionOutboundOrderRepository _productionoutboundorderRepository;
         private readonly IDt_AllocateOutboundOrderRepository _allocateoutboundorderRepository;
         private readonly IUnitOfWorkManage _unitOfWorkManage;
-
+        private readonly IDt_ProductionOutboundOrderService _productionOutboundOrderService;
+        private readonly IDt_AllocateOutboundOrderService _allocateOutboundOrderService;
         private Timer _timer;
 
-        public MyBackgroundService(ILogger<MyBackgroundService> logger, ILocationInfoRepository locationRepository, IStockInfoRepository stockInfoRepository, IDt_AreaInfoRepository areaInfoRepository, IDt_TaskRepository taskRepository, IDt_StationManagerRepository stationManagerRepository, ISys_ConfigService configService,IDt_InboundOrderRepository inboundOrderRepository,IDt_AllocateOutboundOrderRepository allocateoutboundorderRepository,IDt_ProductionOutboundOrderRepository productionOutboundOrderRepository,IUnitOfWorkManage unitOfWorkManage)
+        public MyBackgroundService(ILogger<MyBackgroundService> logger, ILocationInfoRepository locationRepository, IStockInfoRepository stockInfoRepository,IDt_TaskRepository taskRepository,ISys_ConfigService configService,IDt_InboundOrderRepository inboundOrderRepository,IDt_AllocateOutboundOrderRepository allocateoutboundorderRepository,IDt_ProductionOutboundOrderRepository productionOutboundOrderRepository,IUnitOfWorkManage unitOfWorkManage, IDt_ProductionOutboundOrderService productionOutboundOrderService, IDt_AllocateOutboundOrderService allocateOutboundOrderService)
         {
             _logger = logger;
             _locationRepository = locationRepository;
             _stockInfoRepository = stockInfoRepository;
-            _areaInfoRepository = areaInfoRepository;
             _taskRepository = taskRepository;
-            _stationManagerRepository = stationManagerRepository;
             _configService = configService;
             _inboundOrderRepository = inboundOrderRepository;
             _allocateoutboundorderRepository = allocateoutboundorderRepository;
             _productionoutboundorderRepository = productionOutboundOrderRepository;
             _unitOfWorkManage = unitOfWorkManage;
+            _productionOutboundOrderService = productionOutboundOrderService;
+            _allocateOutboundOrderService = allocateOutboundOrderService;
         }
 
         public Task StartAsync(CancellationToken cancellationToken)
         {
-            _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromMinutes(5));
+            _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromMinutes(10));
             return Task.CompletedTask;
         }
 
@@ -63,8 +65,8 @@
             try
             {
                 #region 鍏ュ簱鍗曟嵁鍚屾
-                List<WMS_閲囪喘鍏ユ垚鍝佸叆搴撹嚜鍔ㄦ墦鍗版竻鍗昣ST> ERPPrintChecklist =SqlSugarHelper.DBERP.Queryable<WMS_閲囪喘鍏ユ垚鍝佸叆搴撹嚜鍔ㄦ墦鍗版竻鍗昣ST>().Where(x => true).ToList();
-                
+                List<WMS_閲囪喘鍏ユ垚鍝佸叆搴撹嚜鍔ㄦ墦鍗版竻鍗昣ST> ERPPrintChecklist = SqlSugarHelper.DBERP.Queryable<WMS_閲囪喘鍏ユ垚鍝佸叆搴撹嚜鍔ㄦ墦鍗版竻鍗昣ST>().Where(x => true).ToList();
+
                 var printCheckList = _inboundOrderRepository.QueryData(x => true);
                 List<Dt_InboundOrder> inboundOrderAdd = new List<Dt_InboundOrder>();
                 List<Dt_InboundOrder> inboundOrderUpdate = new List<Dt_InboundOrder>();
@@ -86,6 +88,7 @@
                             MaterialNo = item.鏂欏彿,
                             MaterialName = item.鍝佸悕,
                             Weight = item.鍗曢噸,
+                            WareHouseId = item.瀛樺偍鍦扮偣ID,
                             Specs = item.瑙勬牸,
                             Unit = item.鍗曚綅,
                             Texture = item.鐢ㄥ弸鏉愯川,
@@ -119,14 +122,6 @@
                         }
                     }
                 }
-                if (inboundOrderAdd.Count > 0)
-                {
-                    _inboundOrderRepository.AddData(inboundOrderAdd);
-                }
-                if (inboundOrderUpdate.Count > 0)
-                {
-                    _inboundOrderRepository.UpdateData(inboundOrderUpdate);
-                }
                 #endregion
 
                 #region ERP鐢熶骇棰嗘枡鍗曞悓姝�
@@ -138,19 +133,18 @@
                 List<WMS_鐢ㄥ弸鐢熶骇棰嗘枡鍗曚竴瑙堣〃_ST> productERP = SqlSugarHelper.DBERP.Queryable<WMS_鐢ㄥ弸鐢熶骇棰嗘枡鍗曚竴瑙堣〃_ST>().Where(x => true).ToList();
                 foreach (var item in EngineeringERP)
                 {
-                    var x = productionOutOrder.Where(x => x.UpperOrderNo == item.鍗曞彿 && x.DemandClassification == item.闇�姹傚悕绉� && x.OrderPartNumber == item.璁㈠崟鏂欏彿 && x.OrderSpec == item.璁㈠崟瑙勬牸).FirstOrDefault();
+                    var x = productionOutOrder.Where(x => x.UpperOrderNo == item.鍗曞彿 && x.DemandClassification == item.闇�姹傚悕绉� && x.OrderPartNumber == item.璁㈠崟鏂欏彿).FirstOrDefault();
                     if (x == null)
                     {
-                        if(productionoutboundOrderAdd.Where(x => x.UpperOrderNo == item.鍗曞彿 && x.DemandClassification == item.闇�姹傚悕绉� && x.OrderPartNumber == item.璁㈠崟鏂欏彿 && x.OrderSpec == item.璁㈠崟瑙勬牸).FirstOrDefault()==null)
+                        if (productionoutboundOrderAdd.Where(x => x.UpperOrderNo == item.鍗曞彿 && x.DemandClassification == item.闇�姹傚悕绉� && x.OrderPartNumber == item.璁㈠崟鏂欏彿 ).FirstOrDefault() == null)
                         {
                             Dt_ProductionOutboundOrder outOrder = new Dt_ProductionOutboundOrder()
                             {
-                                OrderNo = GetOrderPintCode("OrderNoOut"),
+                                OrderNo = item.鍗曞彿,
                                 UpperOrderNo = item.鍗曞彿,
                                 OrderName = item.璁㈠崟鍝佸悕,
                                 DemandClassification = item.闇�姹傚悕绉�,
                                 OrderPartNumber = item.璁㈠崟鏂欏彿,
-                                OrderSpec = item.璁㈠崟瑙勬牸,
                                 OrderStatus = (int)OrderStateEmun.鏈紑濮�,
                                 OrderType = (int)OrderTypeEmun.鐢熶骇棰嗘枡鍗�,
                                 CreateType = (int)OrderCreateTypeEmun.ERP鎺ㄩ��,
@@ -162,6 +156,8 @@
                                         MaterielName = item.瀛愪欢鍝佸悕,
                                         Specs = item.瀛愪欢瑙勬牸,
                                         Weight = item.瀛愪欢鍗曢噸,
+                                        ERPOrderId = item.澶囨枡鍗旾D,
+                                        WareHouseId =item.瀛樺偍鍦扮偣ID,
                                         OrderQuantity = item.瀛愪欢瀹為檯鐢ㄩ噺,
                                         NotOutQuantity = item.瀛愪欢鏈彂鏁伴噺,
                                         OverOutQuantity = item.瀛愪欢鍙戞斁鏁伴噺,
@@ -179,6 +175,8 @@
                                 MaterielName = item.瀛愪欢鍝佸悕,
                                 Specs = item.瀛愪欢瑙勬牸,
                                 Weight = item.瀛愪欢鍗曢噸,
+                                ERPOrderId = item.澶囨枡鍗旾D,
+                                WareHouseId = item.瀛樺偍鍦扮偣ID,
                                 OrderQuantity = item.瀛愪欢瀹為檯鐢ㄩ噺,
                                 NotOutQuantity = item.瀛愪欢鏈彂鏁伴噺,
                                 OverOutQuantity = item.瀛愪欢鍙戞斁鏁伴噺,
@@ -195,12 +193,11 @@
                         {
                             Dt_ProductionOutboundOrder outOrder = new Dt_ProductionOutboundOrder()
                             {
-                                OrderNo = GetOrderPintCode("OrderNoOut"),
+                                OrderNo = item.鍗曞彿,
                                 UpperOrderNo = item.鍗曞彿,
                                 OrderName = item.璁㈠崟鍝佸悕,
                                 DemandClassification = item.闇�姹傚悕绉�,
                                 OrderPartNumber = item.璁㈠崟鏂欏彿,
-                                //OrderSpec = item.璁㈠崟瑙勬牸,
                                 OrderStatus = (int)OrderStateEmun.鏈紑濮�,
                                 OrderType = (int)OrderTypeEmun.鐢熶骇棰嗘枡鍗�,
                                 CreateType = (int)OrderCreateTypeEmun.ERP鎺ㄩ��,
@@ -212,6 +209,8 @@
                                         MaterielName = item.瀛愪欢鍝佸悕,
                                         Specs = item.瀛愪欢瑙勬牸,
                                         Weight = item.瀛愪欢鍗曢噸,
+                                        ERPOrderId = item.澶囨枡鍗旾D,
+                                        WareHouseId =item.瀛樺偍鍦扮偣ID,
                                         OrderQuantity = item.瀛愪欢瀹為檯鐢ㄩ噺,
                                         NotOutQuantity = item.瀛愪欢鏈彂鏁伴噺,
                                         OverOutQuantity = item.瀛愪欢鍙戞斁鏁伴噺,
@@ -229,15 +228,17 @@
                                 MaterielName = item.瀛愪欢鍝佸悕,
                                 Specs = item.瀛愪欢瑙勬牸,
                                 Weight = item.瀛愪欢鍗曢噸,
+                                ERPOrderId = item.澶囨枡鍗旾D,
+                                WareHouseId = item.瀛樺偍鍦扮偣ID,
                                 OrderQuantity = item.瀛愪欢瀹為檯鐢ㄩ噺,
                                 NotOutQuantity = item.瀛愪欢鏈彂鏁伴噺,
                                 OverOutQuantity = item.瀛愪欢鍙戞斁鏁伴噺,
                             });
                         }
                     }
-                    
+
                 }
-                
+
                 #endregion
 
                 #region ERP璋冩嫧鍑哄簱鍗曞悓姝�
@@ -249,19 +250,18 @@
                 List<WMS_鐢ㄥ弸鐢垫帶鏌滆皟鎷ㄤ竴瑙堣〃_ST> ERPallocateOrder = SqlSugarHelper.DBERP.Queryable<WMS_鐢ㄥ弸鐢垫帶鏌滆皟鎷ㄤ竴瑙堣〃_ST>().Where(x => true).ToList();
                 foreach (var item in ERPallocateOrder)
                 {
-                    var x = allocateoutboundorder.Where(x => x.UpperOrderNo == item.鍗曞彿 && x.DemandClassification == item.闇�姹傚悕绉� && x.OrderPartNumber == item.璁㈠崟鏂欏彿 && x.OrderSpec == item.璁㈠崟瑙勬牸).FirstOrDefault();
+                    var x = allocateoutboundorder.Where(x => x.UpperOrderNo == item.鍗曞彿 && x.DemandClassification == item.闇�姹傚悕绉� && x.OrderPartNumber == item.璁㈠崟鏂欏彿).FirstOrDefault();
                     if (x == null)
                     {
                         if (allocateoutboundorderAdd.Where(x => x.UpperOrderNo == item.鍗曞彿).FirstOrDefault() == null)
                         {
                             Dt_AllocateOutboundOrder outOrder = new Dt_AllocateOutboundOrder()
                             {
-                                OrderNo = GetOrderPintCode("OrderNoOut"),
+                                OrderNo = item.鍗曞彿,
                                 UpperOrderNo = item.鍗曞彿,
-                                OrderName=item.璁㈠崟鍝佸悕,
-                                DemandClassification=item.闇�姹傚悕绉�,
-                                OrderPartNumber =item.璁㈠崟鏂欏彿,
-                                OrderSpec =item.璁㈠崟瑙勬牸,
+                                OrderName = item.璁㈠崟鍝佸悕,
+                                DemandClassification = item.闇�姹傚悕绉�,
+                                OrderPartNumber = item.璁㈠崟鏂欏彿,
                                 OrderStatus = (int)OrderStateEmun.鏈紑濮�,
                                 OrderType = (int)OrderTypeEmun.璋冩嫧鍑哄簱鍗�,
                                 CreateType = (int)OrderCreateTypeEmun.ERP鎺ㄩ��,
@@ -273,6 +273,8 @@
                                         MaterielName = item.瀛愪欢鍝佸悕,
                                         Specs = item.瀛愪欢瑙勬牸,
                                         Weight = item.瀛愪欢鍗曢噸,
+                                        ERPOrderId = item.澶囨枡鍗旾D,
+                                        WareHouseId =item.瀛樺偍鍦扮偣ID,
                                         OrderQuantity = item.瀛愪欢瀹為檯鐢ㄩ噺,
                                         NotOutQuantity = item.瀛愪欢鏈彂鏁伴噺,
                                         OverOutQuantity = item.瀛愪欢鍙戞斁鏁伴噺,
@@ -283,13 +285,15 @@
                         }
                         else
                         {
-                            var existingOrder = allocateoutboundorderAdd.Where(x => x.UpperOrderNo == item.鍗曞彿 && x.DemandClassification == item.闇�姹傚悕绉� && x.OrderPartNumber == item.璁㈠崟鏂欏彿 && x.OrderSpec == item.璁㈠崟瑙勬牸).FirstOrDefault();
+                            var existingOrder = allocateoutboundorderAdd.Where(x => x.UpperOrderNo == item.鍗曞彿 && x.DemandClassification == item.闇�姹傚悕绉� && x.OrderPartNumber == item.璁㈠崟鏂欏彿).FirstOrDefault();
                             existingOrder.Details.Add(new Dt_AllocateOutboundOrderDetail()
                             {
                                 MaterielCode = item.瀛愪欢鏂欏彿,
                                 MaterielName = item.瀛愪欢鍝佸悕,
                                 Specs = item.瀛愪欢瑙勬牸,
                                 Weight = item.瀛愪欢鍗曢噸,
+                                ERPOrderId = item.澶囨枡鍗旾D,
+                                WareHouseId = item.瀛樺偍鍦扮偣ID,
                                 OrderQuantity = item.瀛愪欢瀹為檯鐢ㄩ噺,
                                 NotOutQuantity = item.瀛愪欢鏈彂鏁伴噺,
                                 OverOutQuantity = item.瀛愪欢鍙戞斁鏁伴噺,
@@ -300,29 +304,32 @@
                 #endregion
 
                 #region 鏁版嵁澶勭悊
-                _unitOfWorkManage.BeginTran();
+
+                if (inboundOrderAdd.Count > 0)
+                {
+                    PrintInbound(inboundOrderAdd);
+                    _inboundOrderRepository.AddData(inboundOrderAdd);
+                }
+                if (inboundOrderUpdate.Count > 0)
+                {
+                    PrintInbound(inboundOrderUpdate);
+                    _inboundOrderRepository.UpdateData(inboundOrderUpdate);
+                }
 
                 if (productionoutboundOrderAdd.Count > 0)
                 {
-                    //foreach (var order in productionoutboundOrderAdd)
-                    //{
-                    //    _productionoutboundorderRepository.AddDataNavAsync(order);
-                    //}
-                    SqlSugarHelper.DbWMS.InsertNav(productionoutboundOrderAdd).Include(x => x.Details).ExecuteCommandAsync();
+                    SqlSugarHelper.DbWMS.InsertNav(productionoutboundOrderAdd).Include(x => x.Details).ExecuteCommand();
                 }
                 if (allocateoutboundorderAdd.Count > 0)
                 {
-                    SqlSugarHelper.DbWMS.InsertNav(allocateoutboundorderAdd).Include(x=>x.Details).ExecuteCommandAsync();
+                    SqlSugarHelper.DbWMS.InsertNav(allocateoutboundorderAdd).Include(x => x.Details).ExecuteCommand();
                 }
-                _unitOfWorkManage.CommitTran();
-                
 
                 #endregion
 
             }
             catch (Exception ex)
             {
-                _unitOfWorkManage.RollbackTran();
                 ConsoleHelper.WriteErrorLine($"閿欒淇℃伅锛�" + ex.Message);
             }
         }
@@ -354,6 +361,19 @@
             return Task.CompletedTask;
         }
 
+        public void PrintInbound(List<Dt_InboundOrder> orders)
+        {
+            var configs = _configService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
+            var Base = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.PrintIPAddress)?.ConfigValue;
+            var ipAddress = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.PrintInboundOrder)?.ConfigValue;
+            if (Base == null || ipAddress == null)
+            {
+                throw new InvalidOperationException("WMS IP 鏈厤缃�");
+            }
+            var IpAddress = Base + ipAddress;
+            var result = HttpHelper.PostAsync(IpAddress, orders.ToJsonString()).Result;
+        }
+
         public void Dispose()
         {
             _timer?.Dispose();

--
Gitblit v1.9.3