From e2655143a06ee42eec06a97b045f33a09fbb3a3f Mon Sep 17 00:00:00 2001
From: 肖洋 <cathay_xy@163.com>
Date: 星期二, 24 十二月 2024 17:40:18 +0800
Subject: [PATCH] 合并更改

---
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs |  173 ++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 116 insertions(+), 57 deletions(-)

diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
index 000de4c..b19f3b0 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
@@ -1,6 +1,8 @@
 锘縰sing Mapster;
 using Masuit.Tools;
+using SixLabors.Fonts.Tables.AdvancedTypographic;
 using System.Text.RegularExpressions;
+using System.Threading.Tasks;
 using WIDESEA_Core.Const;
 using WIDESEA_DTO.MOM;
 using WIDESEA_DTO.WMS;
@@ -285,7 +287,7 @@
         WebResponseContent content = new WebResponseContent();
         try
         {
-            if (task.TaskType == (int)TaskInboundTypeEnum.InNG)
+            if (task.TaskType == (int)TaskInboundTypeEnum.InNG || task.TaskType == (int)TaskInboundTypeEnum.InQuality)
             {
                 task.TaskState = (int)TaskInStatusEnum.SC_InFinish;
                 // 鍒涘缓鍘嗗彶浠诲姟瀹炰緥妯″瀷
@@ -430,6 +432,8 @@
                 area = _areaInfoRepository.QueryFirst(x => x.AreaID == 6);
             else if (boxing.ProcessCode == "OCVB")
                 area = _areaInfoRepository.QueryFirst(x => x.AreaID == 7);
+            else
+                area = _areaInfoRepository.QueryFirst(x => x.AreaID == loation.AreaId);
 
             if (area == null)
                 throw new Exception("鏈壘鍒板搴斿尯鍩熶俊鎭�");
@@ -452,7 +456,7 @@
             Remark = boxing.BoxingInfoDetails.Count().ToString(),
         };
 
-        if (boxing.ProcessCode != "OCVB")
+        if (boxing.ProcessCode != "OCVB" && !task.Roadway.Contains("FR"))
         {
             // 澶勭悊璇锋眰鍙傛暟
             AgingInputDto agingInputDto = new AgingInputDto()
@@ -537,6 +541,7 @@
             case (int)TaskInboundTypeEnum.Inbound:
             case (int)TaskInboundTypeEnum.InTray:
             case (int)TaskInboundTypeEnum.InNG:
+            case (int)TaskInboundTypeEnum.InQuality:
                 LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍏ュ簱浠诲姟", "");
                 return await CompleteInboundTaskAsync(task);
 
@@ -1024,7 +1029,7 @@
         {
             // 鏍规嵁鎵樼洏绫诲瀷鏌ヨ搴撳瓨淇℃伅
             DtStockInfo stockInfo = tag == (int)TaskOutboundTypeEnum.Outbound
-                ? areaCodes == null ? await QueryStockInfoForRealTrayAsync(areaCode, productionLine) : await QueryStockInfoForRealTrayCWAsync(areaCodes, productionLine)
+                ? areaCode != "CWSC1" ? await QueryStockInfoForRealTrayAsync(areaCode, areaCodes, productionLine) : await QueryStockInfoForRealTrayCWAsync(areaCodes, productionLine)
                 : await QueryStockInfoForEmptyTrayAsync(areaCode);
 
             if (stockInfo == null)
@@ -1072,7 +1077,7 @@
     /// <summary>
     /// 鏌ヨ瀹炵洏搴撳瓨淇℃伅
     /// </summary>
-    private async Task<DtStockInfo> QueryStockInfoForRealTrayAsync(string areaCode, string productionLine)
+    private async Task<DtStockInfo> QueryStockInfoForRealTrayAsync(string areaCode, List<string> devices, string productionLine)
     {
         var area = await _areaInfoRepository.QueryFirstAsync(x => x.AreaCode == areaCode);
 
@@ -1082,6 +1087,7 @@
             .Where(x => x.AreaCode == areaCode && x.OutboundTime < DateTime.Now && x.IsFull == true) // 杩囨护鏉′欢
             .WhereIF(!productionLine.IsNullOrEmpty(), x => x.ProductionLine == productionLine)
             .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.AreaId == area.AreaID) // 杩囨护鏉′欢
+            .WhereIF(!devices.IsNullOrEmpty(), x => devices.Contains(x.LocationInfo.RoadwayNo))
             .OrderBy(x => x.OutboundTime) // 鎺掑簭
             .FirstAsync(); // 鑾峰彇绗竴涓厓绱�
 
@@ -1092,7 +1098,7 @@
     }
 
     /// <summary>
-    /// 鏌ヨ瀹炵洏搴撳瓨淇℃伅
+    /// 鏌ヨ甯告俯瀹炵洏搴撳瓨淇℃伅
     /// </summary>
     private async Task<DtStockInfo> QueryStockInfoForRealTrayCWAsync(List<string> areaCodes, string productionLine)
     {
@@ -1141,7 +1147,7 @@
     {
         return new Dt_Task
         {
-            Grade = 1,
+            Grade = tag == 104 ? 2 : 1,
             Roadway = stockInfo.LocationInfo.RoadwayNo,
             TargetAddress = position,
             Dispatchertime = DateTime.Now,
@@ -1168,7 +1174,7 @@
         return new WMSTaskDTO
         {
             TaskNum = task.TaskNum.Value,
-            Grade = 1,
+            Grade = task.Grade.Value,
             PalletCode = task.PalletCode,
             RoadWay = task.Roadway,
             SourceAddress = task.SourceAddress,
@@ -1323,7 +1329,7 @@
 
     #region 闈欑疆寮傚父鍙e叆搴�
 
-    public async Task<WebResponseContent> CreateAndSendInboundTask(string locationCode, string palletCode, string position)
+    public async Task<WebResponseContent> CreateAndSendInboundTask(string palletCode, string position)
     {
         WebResponseContent content = new WebResponseContent();
         try
@@ -1332,65 +1338,82 @@
             var stockInfo = await _stockInfoRepository.QueryFirstNavAsync(x => x.PalletCode == palletCode);
             if (stockInfo == null)
             {
+                var taskOld = BaseDal.QueryFirst(x => x.PalletCode == palletCode);
+                if (!taskOld.IsNullOrEmpty())
+                {// 鍒涘缓WMS浠诲姟
+                    WMSTaskDTO taskDTO = new WMSTaskDTO()
+                    {
+                        TaskNum = taskOld.TaskNum.Value,
+                        Grade = 1,
+                        PalletCode = taskOld.PalletCode,
+                        RoadWay = taskOld.Roadway,
+                        SourceAddress = taskOld.CurrentAddress,
+                        TargetAddress = taskOld.TargetAddress,
+                        TaskState = taskOld.TaskState.Value,
+                        Id = 0,
+                        TaskType = taskOld.TaskType,
+                    };
+                    return content.OK(data: taskDTO);
+                }
                 var area = _areaInfoRepository.QueryFirst(x => x.AreaID == 2);
                 var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == position);
                 TrayCellsStatusDto trayCells = CreateTrayCellsStatusDto(area, palletCode);
                 content = await GetTrayCellStatusAsync(trayCells);
                 if (!content.Status) return content;
 
+                ConsoleHelper.WriteErrorLine(content.ToJsonString());
                 var result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(content.Data.ToString());
-                if (!result.Success)
+                if (result.SerialNos.Count > 0)
                 {
-                    if (result.SerialNos.Count <= 0)
+                    var location = await GetLocationDistributeAsync(station.Roadway);
+
+                    ConsoleHelper.WriteErrorLine(location.ToJsonString());
+                    // 鍒涘缓鏂颁换鍔″疄渚�
+                    var task = new Dt_Task
                     {
-                        var location = await GetLocationDistributeAsync(station.Roadway);
-                        // 鍒涘缓鏂颁换鍔″疄渚�
-                        var task = new Dt_Task
-                        {
-                            CurrentAddress = locationCode,
-                            Grade = 1,
-                            Roadway = station.Roadway,
-                            TargetAddress = location.LocationCode,
-                            Dispatchertime = DateTime.Now,
-                            MaterialNo = "",
-                            NextAddress = location.LocationCode,
-                            OrderNo = null,
-                            PalletCode = palletCode,
-                            SourceAddress = locationCode,
-                            TaskState = (int)TaskInStatusEnum.Line_InFinish,
-                            TaskType = (int)TaskInboundTypeEnum.Inbound,
-                            TaskNum = await BaseDal.GetTaskNo(),
-                            Creater = "Systeam"
-                        };
+                        CurrentAddress = station.stationLocation,
+                        Grade = 1,
+                        Roadway = station.Roadway,
+                        TargetAddress = location.LocationCode,
+                        Dispatchertime = DateTime.Now,
+                        MaterialNo = "",
+                        NextAddress = location.LocationCode,
+                        OrderNo = null,
+                        PalletCode = palletCode,
+                        SourceAddress = position,
+                        TaskState = (int)TaskInStatusEnum.Line_InFinish,
+                        TaskType = (int)TaskInboundTypeEnum.Inbound,
+                        TaskNum = await BaseDal.GetTaskNo(),
+                        Creater = "Systeam"
+                    };
 
-                        // 鍒涘缓WMS浠诲姟
-                        WMSTaskDTO taskDTO = new WMSTaskDTO()
-                        {
-                            TaskNum = task.TaskNum.Value,
-                            Grade = 1,
-                            PalletCode = task.PalletCode,
-                            RoadWay = task.Roadway,
-                            SourceAddress = task.SourceAddress,
-                            TargetAddress = task.Roadway,
-                            TaskState = task.TaskState.Value,
-                            Id = 0,
-                            TaskType = task.TaskType,
-                        };
+                    // 鍒涘缓WMS浠诲姟
+                    WMSTaskDTO taskDTO = new WMSTaskDTO()
+                    {
+                        TaskNum = task.TaskNum.Value,
+                        Grade = 1,
+                        PalletCode = task.PalletCode,
+                        RoadWay = task.Roadway,
+                        SourceAddress = task.SourceAddress,
+                        TargetAddress = task.TargetAddress,
+                        TaskState = task.TaskState.Value,
+                        Id = 0,
+                        TaskType = task.TaskType,
+                    };
 
-                        await _unitOfWorkManage.UseTranAsync(async () =>
-                        {
-                            // 娣诲姞浠诲姟鍒版暟鎹簱
-                            await BaseDal.AddDataAsync(task);
-                            // 鏇存柊搴撳瓨浣嶇疆鐘舵�佷负涓嶅彲鐢�
-                            location.LocationStatus = (int)LocationEnum.InStockDisable;
-                            await _locationRepository.UpdateDataAsync(location);
-                        });
+                    await _unitOfWorkManage.UseTranAsync(async () =>
+                    {
+                        // 娣诲姞浠诲姟鍒版暟鎹簱
+                        await BaseDal.AddDataAsync(task);
+                        // 鏇存柊搴撳瓨浣嶇疆鐘舵�佷负涓嶅彲鐢�
+                        location.LocationStatus = (int)LocationEnum.InStockDisable;
+                        await _locationRepository.UpdateDataAsync(location);
+                    });
 
-                        content.OK(data: taskDTO);
-                    }
-                    else
-                        content.Error(result.MOMMessage);
+                    content.OK(data: taskDTO);
                 }
+                else
+                    content.Error(result.MOMMessage);
             }
             else
             {
@@ -1450,7 +1473,35 @@
     {
         return await BaseDal.Delete(ids);
     }
+    public override WebResponseContent DeleteData(object[] key)
+    {
+        WebResponseContent content = new WebResponseContent();
+        // 鍒涘缓鍘嗗彶浠诲姟瀹炰緥妯″瀷
+        try
+        {
+            Dt_Task task = BaseDal.QueryFirst(x => x.TaskId == Convert.ToInt32(key[0]));
+            if (task == null)
+            {
+                return content.Error("鏈壘鍒颁换鍔′俊鎭�!");
+            }
+            var taskHtyNG = CreateHistoricalTask(task, true);
 
+            // 鎵ц鏁版嵁搴撲簨鍔�
+
+            // 娣诲姞鍘嗗彶浠诲姟
+            var isTaskHtyAdd = _task_HtyRepository.AddData(taskHtyNG) > 0;
+
+            // 鍒犻櫎浠诲姟鏁版嵁
+            var isTaskDelete = BaseDal.Delete(task.TaskId);
+
+            return content.OK("鍒犻櫎鎴愬姛!");
+        }
+        catch (Exception ex)
+        {
+            return content.Error("鍒犻櫎浠诲姟寮傚父锛�" + ex.Message);
+        }
+
+    }
     /// <summary>
     /// 閫氳繃ID鑾峰彇浠诲姟
     /// </summary>
@@ -1560,7 +1611,7 @@
     /// </summary>
     /// <param name="task"></param>
     /// <returns></returns>
-    private Dt_Task_Hty CreateHistoricalTask(Dt_Task task)
+    private Dt_Task_Hty CreateHistoricalTask(Dt_Task task, bool isHand = false)
     {
         // 鏇存柊浠诲姟鐘舵��
         task.TaskState = TaskOutStatusEnum.OutFinish.ObjToInt();
@@ -1570,7 +1621,7 @@
         var taskHty = _mapper.Map<Dt_Task_Hty>(task);
         taskHty.FinishTime = DateTime.Now;
         taskHty.TaskId = 0;
-        taskHty.OperateType = (int)OperateTypeEnum.鑷姩瀹屾垚;
+        taskHty.OperateType = isHand ? (int)OperateTypeEnum.浜哄伐鍒犻櫎 : (int)OperateTypeEnum.鑷姩瀹屾垚;
         taskHty.SourceId = task.TaskId;
         taskHty.TaskState = TaskOutStatusEnum.OutFinish.ObjToInt();
         return taskHty;
@@ -1688,6 +1739,14 @@
             var content = new WebResponseContent();
 
             // 鑾峰彇鐩爣鍦板潃鍜屾洿鏂颁换鍔$姸鎬�
+
+
+            input.Position = Regex.Replace(input.Position, @"-(\d+)", "");
+            if (Convert.ToInt32(input.Position) > 1999)
+            {
+                input.Position = (Convert.ToInt32(input.Position) - 1000).ToString();
+            }
+
             if (task.TaskType == (int)TaskInboundTypeEnum.InNG)
             {
                 // TODO 鏍规嵁宸烽亾鏌ユ壘瀵瑰簲NG鍙o紝鐜板湪榛樿鍘婚潤缃爢鍨涙満鐨勫紓甯稿彛璐т綅鍙�
@@ -1700,7 +1759,7 @@
             }
             else if (task.TaskType == (int)TaskInboundTypeEnum.InQuality)
             {
-                var stockInfo = _stockInfoRepository.QueryFirst(x => x.PalletCode == input.PalletCode);
+                var stockInfo = await _stockInfoRepository.QueryFirstNavAsync(x => x.PalletCode == input.PalletCode);
                 task.CurrentAddress = input.Position;
                 task.TargetAddress = stockInfo.LocationInfo.LocationCode;
                 task.NextAddress = stockInfo.LocationInfo.LocationCode;

--
Gitblit v1.9.3