From 8f9b9411ca279670bd85fcfa7763987295ed9abf Mon Sep 17 00:00:00 2001
From: zhanghonglin <zhanghonglin@hnkhzn.com>
Date: 星期五, 10 四月 2026 10:55:38 +0800
Subject: [PATCH] 空桶入出扩展开发

---
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs |  320 +++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 213 insertions(+), 107 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
index fca3355..0c5dff4 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
@@ -50,10 +50,9 @@
         private readonly IRepository<Dt_StockInfos> _IStockInfosRepository;
         private readonly IRepository<Dt_FillingOrder> _FillingOrderRepository;
         private readonly IRepository<Dt_OutboundOrder> _OutboundOrderRepository;
-        //WCS婊℃《鍑哄簱淇″彿
-        private static bool kk = false;
+        private readonly IRepository<Dt_OutboundOrder_Hty> _OutboundOrderHtyRepository;
 
-        public TaskService(IRepository<Dt_Task> BaseDal, IRepository<Dt_OutboundOrder> OutboundOrderRepository, IRepository<Dt_FillingOrder> FillingOrderRepository, IRepository<Dt_StockInfos> IStockInfosRepository, ILocationInfoService ILocationInfoService, IRepository<Dt_StockInfoDetail> IStockInfoDetailRepository, IRepository<Dt_StockInfo_hty> IStockInfohtyRepository, IRepository<Dt_StockInfoDetail_Hty> IStockInfoDetailHtyRepository, IRepository<Dt_Outstockinfo> IOutstockinfoService, IStockService IStockService, IRepository<Dt_Warehouse> WarehouseService, IRepository<Dt_Outstockinfo> OutstockinfoRepository, ILocationInfoService LocationInfoService, IRepository<Dt_StockInfo> StockInfoRepository, IRepository<Dt_LocationInfo> LocationInfoRepository, IRepository<Dt_Task_Hty> Task_HtyRepository, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        public TaskService(IRepository<Dt_Task> BaseDal, IRepository<Dt_OutboundOrder_Hty> OutboundOrderHtyRepository, IRepository<Dt_OutboundOrder> OutboundOrderRepository, IRepository<Dt_FillingOrder> FillingOrderRepository, IRepository<Dt_StockInfos> IStockInfosRepository, ILocationInfoService ILocationInfoService, IRepository<Dt_StockInfoDetail> IStockInfoDetailRepository, IRepository<Dt_StockInfo_hty> IStockInfohtyRepository, IRepository<Dt_StockInfoDetail_Hty> IStockInfoDetailHtyRepository, IRepository<Dt_Outstockinfo> IOutstockinfoService, IStockService IStockService, IRepository<Dt_Warehouse> WarehouseService, IRepository<Dt_Outstockinfo> OutstockinfoRepository, ILocationInfoService LocationInfoService, IRepository<Dt_StockInfo> StockInfoRepository, IRepository<Dt_LocationInfo> LocationInfoRepository, IRepository<Dt_Task_Hty> Task_HtyRepository, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
         {
             _LocationInfoService = LocationInfoService;
             _unitOfWorkManage = unitOfWorkManage;
@@ -71,6 +70,7 @@
             _IStockInfosRepository = IStockInfosRepository;
             _FillingOrderRepository = FillingOrderRepository;
             _OutboundOrderRepository = OutboundOrderRepository;
+            _OutboundOrderHtyRepository = OutboundOrderHtyRepository;
         }
 
         public IRepository<Dt_Task> Repository => BaseDal;
@@ -90,9 +90,12 @@
         {
             WebResponseContent content = new WebResponseContent();
             Dt_Task task = new Dt_Task();
+            //鏌ヨ褰撳墠鍏ュ簱绌烘《绫诲瀷
+            Dt_Outstockinfo Warehouse = _OutstockinfoRepository.QueryFirst(x => x.Id == 1);
             //鍏ュ簱鍒嗛厤璐т綅
             Dt_LocationInfo locations = _LocationInfoService.AllotLocationInfo(1);
             locations.LocationStatus = (int)LocationStatusEnum.Lock;
+            locations.Remark = Warehouse.EmptyOutSet;
 
             task.SourceAddress = location;
             task.TargetAddress = locations.LocationCode;
@@ -100,7 +103,7 @@
             task.Grade = 1;
             task.TaskType = (int)TaskTypeEnum.InEmpty;
             task.TaskState = (int)TaskStatusEnum.InNew;
-            task.TaskNum = DateTime.Now.ToString("mmss").ObjToInt();
+            task.TaskNum = TaskNum(DateTime.Now.ToString("mmss").ObjToInt());
 
             //寮�濮嬫暟鎹簱浜嬪姟
             _unitOfWorkManage.BeginTran();
@@ -148,12 +151,10 @@
 
             //鍏ュ簱鍒嗛厤璐т綅
             Dt_LocationInfo locations = _LocationInfoService.AllotLocationInfo(k);
-            locations.LocationStatus = (int)LocationStatusEnum.Lock;
 
             //鍒涘缓鐗╂枡缁勭洏
             Dt_StockInfo stockInfo = new Dt_StockInfo();
             stockInfo.LocationCode = locations.LocationCode;
-            stockInfo.StockStatus = (int)StockStatusEmun.缁勭洏鏆傚瓨;
             stockInfo.MaterielCode1 = stock.MaterialCode1;
             stockInfo.MaterielCode2 = stock.MaterialCode2;
             stockInfo.MaterielCode3 = stock.MaterialCode3;
@@ -167,24 +168,29 @@
             //姝e父鍏ュ簱
             if (outstockinfo.OutMode == 1)
             {
+                locations.LocationStatus = (int)LocationStatusEnum.Lock;
+                stockInfo.StockStatus = (int)StockStatusEmun.缁勭洏鏆傚瓨;
+
                 task.SourceAddress = stock.location;
                 task.TargetAddress = locations.LocationCode;
                 task.Roadway = "SC01";
                 task.Grade = 1;
                 task.TaskType = (int)TaskTypeEnum.Infull;
                 task.TaskState = (int)TaskStatusEnum.InNew;
-                task.TaskNum = DateTime.Now.ToString("mmss").ObjToInt();
+                task.TaskNum = TaskNum(DateTime.Now.ToString("mmss").ObjToInt());
             }
             //鐩存帴鍑哄簱
             else
             {
+                stockInfo.StockStatus = (int)StockStatusEmun.鐩存帴鍑哄簱;
+
                 task.SourceAddress = "1-52-1";
                 task.TargetAddress = locations.LocationCode;
                 task.Roadway = "SC01";
                 task.Grade = 1;
                 task.TaskType = (int)TaskTypeEnum.OutDirect;
                 task.TaskState = (int)TaskStatusEnum.InNew;
-                task.TaskNum = DateTime.Now.ToString("mmss").ObjToInt();
+                task.TaskNum = TaskNum(DateTime.Now.ToString("mmss").ObjToInt());
             }
 
             //寮�濮嬫暟鎹簱浜嬪姟
@@ -204,7 +210,7 @@
             return content;
         }
 
-        //WCS鍏ュ簱浠诲姟瀹屾垚
+        //WCS浠诲姟瀹屾垚
         public Stock WCSAccomplishIn(int TaskNum)
         {
             Stock content = new Stock();
@@ -293,6 +299,7 @@
                 //淇敼璐т綅鐘舵��
                 Dt_LocationInfo locationInfo = _LocationInfoRepository.QueryFirst(x => x.LocationCode == task.SourceAddress);
                 locationInfo.LocationStatus = (int)LocationStatusEnum.Free;
+                locationInfo.Remark = "";
 
                 //鐢熸垚鍘嗗彶浠诲姟
                 Dt_Task_Hty taskhty = new Dt_Task_Hty();
@@ -323,7 +330,6 @@
             {
                 //鍒犻櫎搴撳瓨淇℃伅
                 Dt_StockInfo stockInfo = _StockInfoRepository.QueryFirst(x => x.LocationCode == task.SourceAddress);
-                List<Dt_StockInfoDetail> stockInfoDetail = _IStockInfoDetailRepository.QueryData(x => x.MaterielDetailedid == stockInfo.MaterielDetailedid);
                 //鐢熸垚鍘嗗彶搴撳瓨淇℃伅
                 Dt_StockInfo_hty stockInfo_Hty = new Dt_StockInfo_hty();
                 stockInfo_Hty.PalletCode = stockInfo.PalletCode;
@@ -337,13 +343,6 @@
                 stockInfo_Hty.MaterielCode4 = stockInfo.MaterielCode4;
                 stockInfo_Hty.StockType = stockInfo.StockType;
                 stockInfo_Hty.MaterielDetailedid = stockInfo.MaterielDetailedid;
-                List<Dt_StockInfoDetail_Hty> stockInfoDetail_Hty = new List<Dt_StockInfoDetail_Hty>();
-                int k = stockInfoDetail.Count() - 1;
-                for (int i = 0; i <= k; i++)
-                {
-                    stockInfoDetail_Hty[i].MaterielCode = stockInfoDetail[i].MaterielCode;
-                    stockInfoDetail_Hty[i].MaterielDetailedid = stockInfoDetail[i].MaterielDetailedid;
-                }
 
                 //淇敼璐т綅鐘舵��
                 Dt_LocationInfo locationInfo = _LocationInfoRepository.QueryFirst(x => x.LocationCode == task.SourceAddress);
@@ -374,12 +373,12 @@
                 //寮�濮嬫暟鎹簱浜嬪姟
                 _unitOfWorkManage.BeginTran();
                 _StockInfoRepository.DeleteData(stockInfo);
-                _IStockInfoDetailRepository.DeleteData(stockInfoDetail);
                 _IStockInfohtyRepository.AddData(stockInfo_Hty);
-                _IStockInfoDetailHtyRepository.AddData(stockInfoDetail_Hty);
                 _LocationInfoRepository.UpdateData(locationInfo);
                 _Task_HtyRepository.AddData(taskhty);
                 BaseDal.DeleteData(task);
+                //鍒ゆ柇璁㈠崟浠诲姟鏄惁瀹屾垚
+                OrderTask(task, stockInfo);
                 //鎻愪氦浜嬪姟
                 _unitOfWorkManage.CommitTran();
             }
@@ -388,7 +387,6 @@
             {
                 //鍒犻櫎搴撳瓨淇℃伅
                 Dt_StockInfo stockInfo = _StockInfoRepository.QueryFirst(x => x.LocationCode == task.SourceAddress);
-                List<Dt_StockInfoDetail> stockInfoDetail = _IStockInfoDetailRepository.QueryData(x => x.MaterielDetailedid == stockInfo.MaterielDetailedid);
                 //鐢熸垚鍘嗗彶搴撳瓨淇℃伅
                 Dt_StockInfo_hty stockInfo_Hty = new Dt_StockInfo_hty();
                 stockInfo_Hty.PalletCode = stockInfo.PalletCode;
@@ -402,27 +400,6 @@
                 stockInfo_Hty.MaterielCode4 = stockInfo.MaterielCode4;
                 stockInfo_Hty.StockType = stockInfo.StockType;
                 stockInfo_Hty.MaterielDetailedid = stockInfo.MaterielDetailedid;
-                List<Dt_StockInfoDetail_Hty> stockInfoDetail_Hty = new List<Dt_StockInfoDetail_Hty>();
-                int k = stockInfoDetail.Count() - 1;
-                for (int i = 0; i <= k; i++)
-                {
-                    stockInfoDetail_Hty[i].MaterielCode = stockInfoDetail[i].MaterielCode;
-                    stockInfoDetail_Hty[i].MaterielDetailedid = stockInfoDetail[i].MaterielDetailedid;
-                    stockInfoDetail_Hty[i].BarcodeType = stockInfoDetail[i].BarcodeType;
-                    stockInfoDetail_Hty[i].AuxQty = stockInfoDetail[i].AuxQty;
-                    stockInfoDetail_Hty[i].Quantity = stockInfoDetail[i].Quantity;
-                    stockInfoDetail_Hty[i].MaxQty = stockInfoDetail[i].MaxQty;
-                    stockInfoDetail_Hty[i].BarWeight = stockInfoDetail[i].BarWeight;
-                    stockInfoDetail_Hty[i].PackageQty = stockInfoDetail[i].PackageQty;
-                    stockInfoDetail_Hty[i].QuantityIn = stockInfoDetail[i].QuantityIn;
-                    stockInfoDetail_Hty[i].QuantityOut = stockInfoDetail[i].QuantityOut;
-                    stockInfoDetail_Hty[i].Status = stockInfoDetail[i].Status;
-                    stockInfoDetail_Hty[i].Materialld = stockInfoDetail[i].Materialld;
-                    stockInfoDetail_Hty[i].BatchNum = stockInfoDetail[i].BatchNum;
-                    stockInfoDetail_Hty[i].CreateEmpld = stockInfoDetail[i].CreateEmpld;
-                    stockInfoDetail_Hty[i].Taskld = stockInfoDetail[i].Taskld;
-                    stockInfoDetail_Hty[i].TaskSubld = stockInfoDetail[i].TaskSubld;
-                }
 
                 //鐢熸垚鍘嗗彶浠诲姟
                 Dt_Task_Hty taskhty = new Dt_Task_Hty();
@@ -446,19 +423,81 @@
                 content.MaterialCode3 = stockInfo.MaterielCode3;
                 content.MaterialCode4 = stockInfo.MaterielCode4;
 
-                //寮�濮嬫暟鎹簱浜嬪姟
-                _unitOfWorkManage.BeginTran();
-                _StockInfoRepository.DeleteData(stockInfo);
-                _IStockInfoDetailRepository.DeleteData(stockInfoDetail);
-                _IStockInfohtyRepository.AddData(stockInfo_Hty);
-                _IStockInfoDetailHtyRepository.AddData(stockInfoDetail_Hty);
-                _Task_HtyRepository.AddData(taskhty);
-                BaseDal.DeleteData(task);
-                //鎻愪氦浜嬪姟
-                _unitOfWorkManage.CommitTran();
+                //鏌ヨ褰撳墠鎵ц鐨勮鍗�
+                Dt_OutboundOrder OutboundOrder = _OutboundOrderRepository.QueryFirst(x => x.BoundOrderStatue == (int)OutboundOrderEnum.Execute);
+                Dt_OutboundOrder_Hty OutboundOrder_Hty = new Dt_OutboundOrder_Hty();
+                int num = OutboundOrder.BoundTaskNum + 1;
+                OutboundOrder.BoundTaskNum = num;
+                //鍒ゆ柇璁㈠崟鏄惁鎵ц瀹屾垚
+                if (num == OutboundOrder.num)
+                {
+                    //鐢熸垚鍘嗗彶璁㈠崟
+                    OutboundOrder_Hty.MaterielName = OutboundOrder.MaterielName;
+                    OutboundOrder_Hty.num = OutboundOrder.num;
+                    OutboundOrder_Hty.BoundOrderType = OutboundOrder.BoundOrderType;
+                    OutboundOrder_Hty.BoundOrderCode = OutboundOrder.BoundOrderCode;
+                    OutboundOrder_Hty.BoundOrderStatue = (int)OutboundOrderEnum.Accomplish;
+
+                    //淇敼鍏ュ簱妯″紡
+                    Dt_Outstockinfo outstockinfo = _IOutstockinfoService.QueryFirst(x => x.Id == 1);
+                    outstockinfo.OutMode = 0;
+
+                    //寮�濮嬫暟鎹簱浜嬪姟
+                    _unitOfWorkManage.BeginTran();
+                    _StockInfoRepository.DeleteData(stockInfo);
+                    _IStockInfohtyRepository.AddData(stockInfo_Hty);
+                    _Task_HtyRepository.AddData(taskhty);
+                    BaseDal.DeleteData(task);
+                    _OutboundOrderRepository.DeleteData(OutboundOrder);
+                    _OutboundOrderHtyRepository.AddData(OutboundOrder_Hty);
+                    _IOutstockinfoService.UpdateData(outstockinfo);
+                    //鎻愪氦浜嬪姟
+                    _unitOfWorkManage.CommitTran();
+                }
+                else
+                {
+                    //寮�濮嬫暟鎹簱浜嬪姟
+                    _unitOfWorkManage.BeginTran();
+                    _StockInfoRepository.DeleteData(stockInfo);
+                    _IStockInfohtyRepository.AddData(stockInfo_Hty);
+                    _Task_HtyRepository.AddData(taskhty);
+                    BaseDal.DeleteData(task);
+                    _OutboundOrderRepository.UpdateData(OutboundOrder);
+                    //鎻愪氦浜嬪姟
+                    _unitOfWorkManage.CommitTran();
+                }
             }
 
             return content;
+        }
+        
+        //鍒ゆ柇璁㈠崟浠诲姟鏄惁瀹屾垚
+        public void OrderTask(Dt_Task task, Dt_StockInfo stock)
+        {
+            //鍒ゆ柇鏄惁涓鸿鍗曚换鍔�
+            if (task.Remark != null && task.Remark.Equals(""))
+            {
+                //鍒ゆ柇褰撳墠璁㈠崟浠诲姟鏄惁杩樻湁鏈墽琛屽畬鎴愮殑
+                Dt_Task tasks = BaseDal.QueryFirst(x => x.Remark == task.Remark);
+                if (tasks == null)
+                {
+                    Dt_OutboundOrder OutboundOrder =  _OutboundOrderRepository.QueryFirst(x=>x.MaterielName == stock.MaterielName && x.BoundOrderCode == task.Remark);
+                    //鐢熸垚鍘嗗彶璁㈠崟
+                    Dt_OutboundOrder_Hty OutboundOrder_Hty = new Dt_OutboundOrder_Hty();
+                    OutboundOrder_Hty.MaterielName = OutboundOrder.MaterielName;
+                    OutboundOrder_Hty.num = OutboundOrder.num;
+                    OutboundOrder_Hty.BoundOrderType = OutboundOrder.BoundOrderType;
+                    OutboundOrder_Hty.BoundOrderCode = OutboundOrder.BoundOrderCode;
+                    OutboundOrder_Hty.BoundOrderStatue = (int)OutboundOrderEnum.Accomplish;
+
+                    //寮�濮嬫暟鎹簱浜嬪姟
+                    _unitOfWorkManage.BeginTran();
+                    _OutboundOrderHtyRepository.AddData(OutboundOrder_Hty);
+                    _OutboundOrderRepository.UpdateData(OutboundOrder);
+                    //鎻愪氦浜嬪姟
+                    _unitOfWorkManage.CommitTran();
+                }
+            }
         }
 
         //鏍规嵁浠诲姟鍙锋煡璇换鍔�
@@ -510,7 +549,7 @@
             task.Grade = 1;
             task.TaskType = (int)TaskTypeEnum.OutEmpty;
             task.TaskState = (int)TaskStatusEnum.OutNew;
-            task.TaskNum = DateTime.Now.ToString("mmss").ObjToInt();
+            task.TaskNum = TaskNum(DateTime.Now.ToString("mmss").ObjToInt());
 
             //寮�濮嬫暟鎹簱浜嬪姟
             _unitOfWorkManage.BeginTran();
@@ -528,48 +567,83 @@
         }
 
         //鏍规嵁鏁伴噺鍜岀绫讳笅鍙戞弧妗跺嚭搴撲换鍔�
-        public WebResponseContent ArtificialTask(int Num, string Types)
+        public WebResponseContent ArtificialTask(int Num, string Types, string? remark)
         {
             WebResponseContent content = new WebResponseContent();
             List<Dt_Task> tasks = new List<Dt_Task>();
             List<Dt_LocationInfo> LocationInfo = new List<Dt_LocationInfo>();
             List<Dt_StockInfo> StockInfo = new List<Dt_StockInfo>();
 
-            if (Num > 0 && !Types.Equals("") && Types != null && kk == true)
+            if (Num > 0 && !Types.Equals("") && Types != null)
             {
-                Dt_Outstockinfo outstockinfo = _OutstockinfoRepository.QueryFirst(x => x.Id == 1);
-                //婊�
-                if (outstockinfo.BigOrLittle == 1)
+                Dt_Warehouse Warehouse = _WarehouseRepository.QueryFirst(x=>x.MateriaCode == Types);
+                //婊℃《鍑哄簱
+                if (Warehouse == null)
                 {
-                    //鑾峰彇骞堕攣瀹氱墿鏂�
-                    StockInfo = _IStockService.PriorityBig(Num, Types);
-                    if (StockInfo == null || StockInfo.Count <= 0)
+                    Dt_Outstockinfo outstockinfo = _OutstockinfoRepository.QueryFirst(x => x.Id == 1);
+                    //婊�
+                    if (outstockinfo.BigOrLittle == 1)
                     {
-                        StockInfo = _IStockService.PriorityLittle(Num, Types);
-                    }
-                }
-                //娈�
-                else
-                {
-                    //鑾峰彇骞堕攣瀹氱墿鏂�
-                    StockInfo = _IStockService.PriorityLittle(Num, Types);
-                    if (StockInfo == null || StockInfo.Count <= 0)
-                    {
+                        //鑾峰彇骞堕攣瀹氱墿鏂�
                         StockInfo = _IStockService.PriorityBig(Num, Types);
+                        if (StockInfo == null || StockInfo.Count <= 0)
+                        {
+                            StockInfo = _IStockService.PriorityLittle(Num, Types);
+                        }
+                    }
+                    //娈�
+                    else
+                    {
+                        //鑾峰彇骞堕攣瀹氱墿鏂�
+                        StockInfo = _IStockService.PriorityLittle(Num, Types);
+                        if (StockInfo == null || StockInfo.Count <= 0)
+                        {
+                            StockInfo = _IStockService.PriorityBig(Num, Types);
+                        }
+                    }
+
+                    //鍒涘缓浠诲姟
+                    if (StockInfo != null && StockInfo.Count > 0)
+                    {
+                        //鑾峰彇骞堕攣瀹氳揣浣�
+                        LocationInfo = _ILocationInfoService.StockLockLocation(StockInfo);
+                        //鍒涘缓浠诲姟
+                        tasks = StocksAddTasks(StockInfo, remark);
+                    }
+                    else
+                    {
+                        return content.Error("鐗╂枡涓嶈冻");
                     }
                 }
-
-                //鍒涘缓浠诲姟
-                if (StockInfo != null && StockInfo.Count > 0)
+                //绌烘《鍑哄簱
+                else
                 {
                     //鑾峰彇骞堕攣瀹氳揣浣�
-                    LocationInfo = _ILocationInfoService.StockLockLocation(StockInfo);
-                    //鍒涘缓浠诲姟
-                    tasks = StocksAddTasks(StockInfo);
-                }
-                else
-                {
-                    return content.Error("鐗╂枡涓嶈冻");
+                    LocationInfo = _LocationInfoRepository.QueryData(x => x.Remark == Types && x.LocationStatus == (int)LocationStatusEnum.EmptyBarrel).Take(Num).ToList();
+                    if (LocationInfo.Count() == Num)
+                    {
+                        string StationName = "婊℃《鍑�";
+                        string StationNames = SelectStationManger(StationName);
+                        foreach (var item in LocationInfo)
+                        {
+                            item.LocationStatus = (int)LocationStatusEnum.Lock;
+
+                            //鍒涘缓浠诲姟
+                            Dt_Task task = new Dt_Task();
+                            task.SourceAddress = item.LocationCode;
+                            task.TargetAddress = StationNames;
+                            task.Roadway = "SC01";
+                            task.Grade = 1;
+                            task.TaskType = (int)TaskTypeEnum.OutEmpty;
+                            task.TaskState = (int)TaskStatusEnum.OutNew;
+                            task.TaskNum = TaskNum(DateTime.Now.ToString("mmss").ObjToInt());
+                            tasks.Add(task);
+                        }
+                    }
+                    else
+                    {
+                        return content.Error("鐗╂枡涓嶈冻");
+                    }
                 }
 
                 //寮�濮嬫暟鎹簱浜嬪姟
@@ -588,14 +662,14 @@
             }
             else
             {
-                LogLock.OutLogAOP("鎺ュ彛鏃ュ織", new string[] { "涓嬪彂鏁伴噺銆佺绫绘垨淇″彿寮傚父" });
-                return content.Error("涓嬪彂鏁伴噺銆佺绫绘垨淇″彿寮傚父");
+                LogLock.OutLogAOP("鎺ュ彛鏃ュ織", new string[] { "涓嬪彂鏁伴噺鎴栫绫诲紓甯�" });
+                return content.Error("涓嬪彂鏁伴噺鎴栫绫诲紓甯�");
             }
             return content;
         }
 
         //鏍规嵁澶氭潯鐗╂枡鍒涘缓澶氭潯鍑哄簱浠诲姟
-        public List<Dt_Task> StocksAddTasks(List<Dt_StockInfo> StockInfo)
+        public List<Dt_Task> StocksAddTasks(List<Dt_StockInfo> StockInfo ,string? remark)
         {
             List<Dt_Task> tasks = new List<Dt_Task>();
             int k = StockInfo.Count() - 1;
@@ -611,7 +685,8 @@
                 task.Grade = 1;
                 task.TaskType = (int)TaskTypeEnum.Outfull;
                 task.TaskState = (int)TaskStatusEnum.OutNew;
-                task.TaskNum = DateTime.Now.ToString("mmss").ObjToInt() + i;
+                task.TaskNum = TaskNum(DateTime.Now.ToString("mmss").ObjToInt() + i);
+                task.Remark = remark;
                 tasks.Add(task);
             }
 
@@ -672,6 +747,7 @@
             {
                 Dt_LocationInfo locationInfo = _LocationInfoRepository.QueryFirst(x => x.LocationCode == task.SourceAddress);
                 locationInfo.LocationStatus = (int)LocationStatusEnum.Free;
+                locationInfo.Remark = "";
 
                 //寮�濮嬫暟鎹簱浜嬪姟
                 _unitOfWorkManage.BeginTran();
@@ -714,6 +790,8 @@
                 BaseDal.DeleteData(task);
                 WCSTaskDelete(task.TaskNum);
                 _Task_HtyRepository.AddData(taskhty);
+                //鍒ゆ柇璁㈠崟浠诲姟鏄惁瀹屾垚
+                OrderTask(task, stockInfo);
                 //鎻愪氦浜嬪姟
                 _unitOfWorkManage.CommitTran();
             }
@@ -744,37 +822,65 @@
             return task;
         }
 
-        //WCS婊℃《鍑哄簱淇″彿
-        public WebResponseContent WCSSignal(int k)
-        {
-            WebResponseContent content = new WebResponseContent();
-            //鍙互鍑�
-            if (k == 1)
-            {
-                kk = true;
-            }
-            //涓嶅彲浠ュ嚭
-            else
-            {
-                kk = false;
-            }
-
-            return content;
-        }
-
         //鎵ц璁㈠崟
         public string ExecuteOrder(int k)
         {
             WebResponseContent content = new WebResponseContent();
             Dt_OutboundOrder OutboundOrder = _OutboundOrderRepository.QueryFirst(x => x.Id == k);
-            //涓嬪彂浠诲姟
-            content = ArtificialTask(OutboundOrder.num, OutboundOrder.MaterielName);
-            if (content.Message == null || content.Message.Equals(""))
+            //鐩存帴鍑哄簱璁㈠崟
+            if (OutboundOrder.BoundOrderType == 4)
             {
-                OutboundOrder.BoundOrderStatue = (int)OutboundOrderEnum.Execute;
-                _OutboundOrderRepository.UpdateData(OutboundOrder);
+                //闃叉澶氭潯璁㈠崟鎵ц
+                Dt_OutboundOrder OutboundOrders = _OutboundOrderRepository.QueryFirst(x => x.BoundOrderStatue == (int)OutboundOrderEnum.Execute);
+                if (OutboundOrders == null)
+                {
+                    //淇敼鍏ュ簱妯″紡
+                    Dt_Outstockinfo outstockinfo = _IOutstockinfoService.QueryFirst(x => x.Id == 1);
+                    outstockinfo.OutMode = 1;
+                    OutboundOrder.BoundOrderStatue = (int)OutboundOrderEnum.Execute;
+                    
+                    //寮�濮嬫暟鎹簱浜嬪姟
+                    _unitOfWorkManage.BeginTran();
+                    _IOutstockinfoService.UpdateData(outstockinfo);
+                    _OutboundOrderRepository.UpdateData(OutboundOrder);
+                    //鎻愪氦浜嬪姟
+                    _unitOfWorkManage.CommitTran();
+                }
+                else
+                {
+                    content.Message="璇风瓑寰呭叾浠栬鍗曟墽琛屽畬鎴�";
+                }
+            }
+            //鍏朵粬姝e父鍑哄簱
+            else
+            {
+                content = ArtificialTask(OutboundOrder.num, OutboundOrder.MaterielName, OutboundOrder.BoundOrderCode);
+                if (content.Message == null || content.Message.Equals(""))
+                {
+                    OutboundOrder.BoundOrderStatue = (int)OutboundOrderEnum.Execute;
+                    _OutboundOrderRepository.UpdateData(OutboundOrder);
+                }
             }
             return content.Message;
         }
+
+        //闃叉浠诲姟鍙烽噸澶�
+        public int TaskNum(int num)
+        {
+            int k = num;
+            while (true)
+            {
+                Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == k);
+                if (task == null)
+                {
+                    return k;
+                }
+                else
+                {
+                    k = DateTime.Now.ToString("mmss").ObjToInt();
+                    continue;
+                }
+            }
+        }
     }
 }

--
Gitblit v1.9.3