From 4c7f2d26fd6041d32f4e291559bc443671493246 Mon Sep 17 00:00:00 2001
From: chengsc <11752@DESKTOP-DS49RCP>
Date: 星期四, 19 六月 2025 16:52:45 +0800
Subject: [PATCH] 修改问题

---
 Admin.NET/WCS.Application/Service/WcsTask/WcsTaskService.cs |   61 +++++++++++++++++++++---------
 1 files changed, 42 insertions(+), 19 deletions(-)

diff --git a/Admin.NET/WCS.Application/Service/WcsTask/WcsTaskService.cs b/Admin.NET/WCS.Application/Service/WcsTask/WcsTaskService.cs
index 96f193c..17c4fc0 100644
--- a/Admin.NET/WCS.Application/Service/WcsTask/WcsTaskService.cs
+++ b/Admin.NET/WCS.Application/Service/WcsTask/WcsTaskService.cs
@@ -10,6 +10,7 @@
 using NewLife;
 using WCS.Application.Entity;
 using WCS.Application.Service.WcsTask.Dto;
+using WCS.Application.Util;
 
 namespace WCS.Application;
 
@@ -25,6 +26,7 @@
     private readonly IHubContext<TaskLogHub, ITaskLogHub> _taskLogHubContext;
     private readonly SqlSugarRepository<WcsCheckTask> _wcsCheckTaskRep;
     private readonly SqlSugarRepository<WcsMateialPzInfo> _wcsMateialPzInfoRep;
+    private readonly object _lockObj = new object();
 
     public WcsTaskService(SqlSugarRepository<WcsTask> wcsTaskRep, IHubContext<TaskLogHub, ITaskLogHub> taskLogHubContext, SqlSugarRepository<WcsCheckTask> wcsCheckTaskRep, SqlSugarRepository<WcsMateialPzInfo> wcsMateialPzInfoRep)
     {
@@ -86,6 +88,13 @@
         {
             //鐢熸垚浠诲姟鍙�
             entity.TaskNo = GetTaskCode();
+            // 鍒ゆ柇鏄惁绌挎杞︿换鍔�
+            if (entity.Type != PLCTypeEnum.AGV) 
+            {
+                entity.TaskId = FourWayCarUtil.GetTaskId();
+            }
+
+
             if (string.IsNullOrEmpty(entity.TaskNo))
             {
                 throw Oops.Bah("浠诲姟鍙风敓鎴愬け璐�");
@@ -229,6 +238,16 @@
                 {
                     modTask.IsSuccess = TaskSuccessEnum.Fail;
                     modTask.CancelDate = DateTime.Now;//鍙栨秷鏃堕棿
+                }
+                //濡傛灉鏄洓鍚戣溅浠诲姟
+                if (modTask.Type == PLCTypeEnum.ShuttleCar) 
+                {
+                    var carTaskList = _db.Queryable<WcsCarTasks>().Where(m => m.Status <= TaskStatusEnum.Doing && m.IsDelete == false).ToList();
+                    foreach (var carTask in carTaskList)
+                    {
+                        carTask.Status = input.Status;
+                    }
+                    await _wcsTaskRep.Context.Updateable(carTaskList).ExecuteCommandAsync();
                 }
                 modTask.Status = input.Status;
                 modTask.Levels = 999;
@@ -422,31 +441,35 @@
     [NonAction]
     public string GetTaskCode(string codeFlag = "WCS")
     {
-        var list = _db.Queryable<WcsTask>().Where(m => m.TaskNo.StartsWith("WCS")).ToList();
-        string maxNo = list.Max(m => m.TaskNo);
-        if (!string.IsNullOrEmpty(maxNo))
+        lock (_lockObj)
         {
-            maxNo = maxNo.Substring(codeFlag.Length);
-        }
-        //鑾峰彇鏁版嵁搴撴椂闂村叓浣�
-        string date = DateTime.Now.ToString("yyyyMMdd").Trim();
-        string no = "";
-        if (string.IsNullOrEmpty(maxNo))
-        {
-            no = codeFlag + date + "0001";
-        }
-        else
-        {
-            if (maxNo.Length == 12 && maxNo.Substring(0, 8) == date)
+            var list = _db.Queryable<WcsTask>().Where(m => m.TaskNo.StartsWith("WCS")).ToList();
+            string maxNo = list.Max(m => m.TaskNo);
+            if (!string.IsNullOrEmpty(maxNo))
             {
-                int lastNo = Convert.ToInt32(maxNo.Substring(8, 4)) + 1;
-                no = codeFlag + date + (lastNo.ToString().PadLeft(4, '0'));
+                maxNo = maxNo.Substring(codeFlag.Length);
             }
-            else
+            //鑾峰彇鏁版嵁搴撴椂闂村叓浣�
+            string date = DateTime.Now.ToString("yyyyMMdd").Trim();
+            string no = "";
+            if (string.IsNullOrEmpty(maxNo))
             {
                 no = codeFlag + date + "0001";
             }
+            else
+            {
+                if (maxNo.Length == 12 && maxNo.Substring(0, 8) == date)
+                {
+                    int lastNo = Convert.ToInt32(maxNo.Substring(8, 4)) + 1;
+                    no = codeFlag + date + (lastNo.ToString().PadLeft(4, '0'));
+                }
+                else
+                {
+                    no = codeFlag + date + "0001";
+                }
+            }
+            return no;
         }
-        return no;
+        
     }
 }

--
Gitblit v1.8.0