From 8c8532db8fc7fa76b7fe4c254a36d67c6af24ace Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期三, 11 六月 2025 14:46:33 +0800
Subject: [PATCH] 添加物料编码字段并更新查询逻辑

---
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/RequestInTaskAsync.cs |  159 +++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 107 insertions(+), 52 deletions(-)

diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/RequestInTaskAsync.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/RequestInTaskAsync.cs
index 4e9a194..2e8dd63 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/RequestInTaskAsync.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/RequestInTaskAsync.cs
@@ -1,21 +1,13 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Reflection.Metadata;
-using System.Text;
-using System.Threading.Tasks;
+锘縰sing Masuit.Tools;
+using SqlSugar;
 using WIDESEA_Core.Const;
-using WIDESEA_Core.DB.Models;
 using WIDESEA_DTO.MOM;
 using WIDESEA_DTO.WMS;
-using WIDESEA_DTO;
-using WIDESEA_Model.Models;
-using WIDESEA_Repository;
-using WIDESEAWCS_BasicInfoRepository;
-using Masuit.Tools;
+using WIDESEA_StorageTaskRepository;
+
+//using WIDESEAWCS_Model.Models;
 
 namespace WIDESEA_StorageTaskServices;
-
 
 public partial class Dt_TaskService : ServiceBase<Dt_Task, IDt_TaskRepository>, IDt_TaskService
 {
@@ -50,36 +42,75 @@
     private async Task<WebResponseContent> ProcessOCVB(DtBoxingInfo boxing, Dt_AreaInfo area, RequestTaskDto input)
     {
         WebResponseContent content = new WebResponseContent();
-        // 鍒ゆ柇闇�涓嶉渶瑕佸幓鍖呰锛屼笉闇�瑕佸氨鍘诲父娓╀笁
-        var stationManagers = _stationManagerRepository.QueryData(x => x.stationPLC == "1018" && x.stationArea == "Cache");
-        var station = stationManagers.Select(x => x.stationChildCode).ToList();
+        try
+        {
+            // 鍒ゆ柇闇�涓嶉渶瑕佸幓鍖呰锛屼笉闇�瑕佸氨鍘诲父娓╀笁
+            var stationManagers = _stationManagerRepository.QueryData(x => x.stationPLC == "1018" && x.stationArea == "Cache" && x.productLine == input.ProductionLine);
 
-        // 鑾峰彇WCSip鍦板潃鐩稿叧閰嶇疆
-        var wcsIpAddrss = GetWCSIpAddress();
-        if (wcsIpAddrss == null)
-        {
-            throw new InvalidOperationException("WCS IP 鏈厤缃�");
-        }
+            var STATION = _stationManagerRepository.QueryFirst(x => x.stationChildCode == input.Position);
 
-        var abc = HttpHelper.PostAsync(wcsIpAddrss, station.ToJsonString()).Result;
-        content = JsonConvert.DeserializeObject<WebResponseContent>(abc);
-        if (content.Data.ObjToInt() > 0)
-        {
-            // 閫佽嚦鍖呰
-            List<string> strings = stationManagers.Where(x => x.stationType == 0).Select(x => x.Roadway).ToList();
-            return await CreateNewTask(input, strings, 3);
-        }
-        else
-        {
-            var config = _configService.GetByConfigKey("SYS_InStacker", "CW3InStacker");
-            var strings = config.ConfigValue.Split(',').ToList();
-            // 鍏ュ簱閫佽嚦甯告俯3
-            var resultContent = await CreateNewTask(input, strings);
-            if (resultContent.Status)
+            //var station = stationManagers.Select(x => x.stationChildCode).ToList();
+
+            //// 鑾峰彇WCSip鍦板潃鐩稿叧閰嶇疆
+            var wcsIpAddrss = GetWCSIpAddress();
+            //if (wcsIpAddrss == null)
+            //{
+            //    throw new InvalidOperationException("WCS IP 鏈厤缃�");
+            //}
+
+            //var abc = HttpHelper.PostAsync(wcsIpAddrss, station.ToJsonString()).Result;
+            //content = JsonConvert.DeserializeObject<WebResponseContent>(abc);
+            //var num = content.Data.ObjToInt();
+
+            //濡傛灉褰撳墠搴撳唴瀛樺湪姣斿綋鍓嶆椂闂寸殑瀵瑰簲浜х嚎鐨勬枡 鍒欏叆搴撹嚦甯告俯3
+            DtStockInfo stockInfo = _stockInfoRepository.QueryFirst(x => x.AreaCode == "CWSC3" && x.IsFull == true && x.ProductionLine == STATION.productLine && x.OutboundTime < DateTime.Now);
+            if (stockInfo != null)
             {
-                await _boxingInfoRepository.AddDataNavAsync(boxing);
+                var config = _configService.GetByConfigKey("SYS_InStacker", "CW3InStacker");
+                var strings = config.ConfigValue.Split(',').ToList();
+                // 鍏ュ簱閫佽嚦甯告俯3
+                var resultContent = await CreateNewTask(input, input.ProductionLine, boxing.ProcessCode, strings);
+                if (resultContent.Status)
+                {
+                    await _boxingInfoRepository.AddDataNavAsync(boxing);
+                }
+                return resultContent;
             }
-            return resultContent;
+
+            // TODO 鍒ゆ柇鍦ㄩ�旀暟閲�
+
+            var needBarcode = await SqlSugarHelper.DbWCS.Queryable<dt_needBarcode>().FirstAsync(x => x.productLine == STATION.productLine && x.fromArea == "CW");
+            var needCount =  BaseDal.QueryData(x => x.TargetAddress == needBarcode.toArea).Count();
+            //var count = BaseDal.QueryData(x => x.TargetAddress == stationManagers[0].Roadway).Count;
+            if (needCount < needBarcode.cacheNum)
+            {
+                // 閫佽嚦鍖呰
+                List<string> strings = stationManagers.Where(x => x.stationType == 0 && x.productLine == input.ProductionLine).Select(x => x.Roadway).ToList();
+                var x = await SqlSugarHelper.DbWCS.Updateable<dt_needBarcode>()
+                    .SetColumns(x => x.inLineNum == x.inLineNum + 1)
+                    .Where(x => x.id == needBarcode.id).ExecuteCommandHasChangeAsync();
+                ConsoleHelper.WriteSuccessLine($"鍦ㄩ�旀暟閲忔坊鍔爗(x ? "鎴愬姛" : "澶辫触")}鏁伴噺+1,褰撳墠宸ュ簭{boxing.ProcessCode},浜х嚎{input.ProductionLine}");
+                LogFactory.GetLog("OCVB").InfoFormat(true, $"鍦ㄩ�旀暟閲忔坊鍔爗(x ? "鎴愬姛" : "澶辫触")}鏁伴噺+1,褰撳墠宸ュ簭{boxing.ProcessCode},浜х嚎{input.ProductionLine}", "鏃犲弬鏁�");
+                return await CreateNewTask(input, input.ProductionLine, boxing.ProcessCode, strings, 3);
+            }
+            else
+            {
+                var config = _configService.GetByConfigKey("SYS_InStacker", "CW3InStacker");
+                var strings = config.ConfigValue.Split(',').ToList();
+                // 鍏ュ簱閫佽嚦甯告俯3
+                var resultContent = await CreateNewTask(input, input.ProductionLine, boxing.ProcessCode, strings);
+                if (resultContent.Status)
+                {
+                    await _boxingInfoRepository.AddDataNavAsync(boxing);
+                }
+                return resultContent;
+            }
+        }
+        catch (Exception ex)
+        {
+            ConsoleHelper.WriteErrorLine(ex.Message);
+            LogFactory.GetLog("OCVB").InfoFormat(true, $"锛屽紓甯镐俊鎭細{ex.Message},{ex.StackTrace}", "鏃犲弬鏁�");
+            return content.Error(ex.Message);
         }
     }
 
@@ -107,9 +138,13 @@
         if (!content.Status) return content.Error("宸ヨ壓鐢宠澶辫触");
 
         var resultProcessApply = JsonConvert.DeserializeObject<ResultProcessApply>(content.Data.ToString());
-        if (!resultProcessApply.Success) return content.Error("宸ヨ壓鐢宠澶辫触");
+        if (!resultProcessApply.Success)
+        {
+            return await HandleErrorCells(input, area);
+            //return content.Error("宸ヨ壓鐢宠澶辫触");
+        }
 
-        var number = resultProcessApply.ProcessInfo.Where(x => x.ProcessCode == boxing.ProcessCode).FirstOrDefault().Number.ToInt32();
+        var number = resultProcessApply.ProcessInfo.Where(x => x.ProcessCode.Contains(boxing.ProcessCode)).FirstOrDefault().Number.ToInt32();
         foreach (var item in resultProcessApply.ProcessInfo)
         {
             if (item.Number.ToInt32() == number + 1)
@@ -124,9 +159,22 @@
         {
             throw new Exception("鏈壘鍒板叆搴撶珯鍙伴厤缃�");
         }
+        //List<string> strings;
+        //if (areaIn == "GWSC1")
+        //{
+        //    strings = new List<string>
+        //    {
+        //        (boxing.ProductionLine != null && boxing.ProductionLine == "ZJ-7") ? "GWSC1" : "GWSC2"
+        //    };
+        //}
+        //else
+        //{
+        //    strings = stationManagers.Roadway.Split(',').ToList();
+        //}
+
         List<string> strings = stationManagers.Roadway.Split(',').ToList();
 
-        var resultContent = await CreateNewTask(input, strings);
+        var resultContent = await CreateNewTask(input, result.ProductionLine, boxing.ProcessCode, strings);
         if (resultContent.Status)
         {
             var isBox = await _boxingInfoRepository.AddDataNavAsync(boxing);
@@ -140,14 +188,19 @@
         {
             case "CH01":
                 return "CH001";
+
             case "JZ01":
                 return "JZ001";
+
             case "GW01":
                 return "GWSC1";
+
             case "CW01":
                 return "CWSC1";
+
             case "CW02":
                 return "CWSC2";
+
             default:
                 return string.Empty;
         }
@@ -168,21 +221,22 @@
     /// <summary>
     /// 鐢佃姱NG閫佽嚦NG鍙�
     /// </summary>
-    private async Task<WebResponseContent> HandleErrorCells(RequestTaskDto input, Dt_AreaInfo area, List<SerialNoDto> serialNosError)
+    private async Task<WebResponseContent> HandleErrorCells(RequestTaskDto input, Dt_AreaInfo area, List<SerialNoDto> serialNosError = null)
     {
         WebResponseContent content = new WebResponseContent();
         // TODO 鍒涘缓浠诲姟閫佽嚦NG鎺掑嚭鍙�
         var stationManagers = _stationManagerRepository.QueryData(x => x.stationType == 1 && x.stationChildCode == input.Position && x.stationArea == area.AreaCode).FirstOrDefault();
-        if (stationManagers == null) 
+        if (stationManagers == null)
         {
             throw new Exception("鏈壘鍒癗G鍏ュ簱绔欏彴閰嶇疆");
         }
-        List<string> NGStation = stationManagers.Roadway.Split(',').ToList();
-        if (NGStation.Count <= 0)
-        {
-            NGStation = stationManagers.stationNGChildCode.Split(',').ToList();
-        }
-        content = await CreateNewTask(input, NGStation, 2);
+        //List<string> NGStation = stationManagers.Roadway.Split(',').ToList();
+        //if (NGStation.Count <= 0)
+        //{
+        //    NGStation = stationManagers.stationNGChildCode.Split(',').ToList();
+        //}
+        List<string> NGStation = stationManagers.stationNGChildCode.Split(',').ToList();
+        content = await CreateNewTask(input, input.ProductionLine, "", NGStation, 2);
         return content.Error("瀛樺湪寮傚父鐢佃姱");
     }
 
@@ -212,7 +266,8 @@
             TargetAddress = task.Roadway,
             TaskState = task.TaskState.Value,
             Id = 0,
-            TaskType = task.TaskType
+            TaskType = task.TaskType,
+            ProductionLine = task.ProductionLine,
         };
         return new WebResponseContent().OK(data: taskDTO);
     }
@@ -240,4 +295,4 @@
     {
         return await _areaInfoRepository.QueryFirstAsync(x => x.Spare1.Contains(position));
     }
-}
+}
\ No newline at end of file

--
Gitblit v1.9.3