From 6cc35000a6e138cfad96e7b02f8aeddcdb4ba6bf Mon Sep 17 00:00:00 2001
From: wankeda <Administrator@DESKTOP-HAU3ST3>
Date: 星期二, 24 六月 2025 09:57:25 +0800
Subject: [PATCH] 代码提交

---
 代码管理/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGVJob/SendTaskAGV.cs |  105 +++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 99 insertions(+), 6 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGVJob/SendTaskAGV.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGVJob/SendTaskAGV.cs"
index 4814dca..44c3ffc 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGVJob/SendTaskAGV.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGVJob/SendTaskAGV.cs"
@@ -1,8 +1,15 @@
 锘縰sing System.Diagnostics;
 using System.Text;
 using Microsoft.Data.SqlClient;
+using Newtonsoft.Json;
+using WIDESEA_Core.Enums;
 using WIDESEAWCS_Common.AGVEnum;
 using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_Core.Tool;
+using WIDESEAWCS_DTO.TaskInfo;
+using WIDESEAWCS_ISystemRepository;
 using WIDESEAWCS_ITaskInfoRepository;
 using WIDESEAWCS_Model.Models;
 using WIDESEAWCS_QuartzJob;
@@ -14,8 +21,98 @@
         private static int _readSendAGVTaskSignalso = 0;
         private static bool isTrue1 = false;
         private static string name1 = "";
+        public static string url = AppSettings.Configuration["AGVTaskGeneration"];
+        public static void SendAGVTask1(ITaskRepository _taskRepository, IDt_StationinfoRepository _stationinfoRepository)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                Dt_Task task = _taskRepository.QueryData(x => x.TaskState == (int)TaskInStatusEnum.InNew).OrderBy(r => r.CreateDate).FirstOrDefault(); //.ThenByDescending(r => r.Grade)
+                if (task != null)
+                {
+                    TaskGenerationDto taskGenerationDto = new TaskGenerationDto();
+                    {
+                        taskGenerationDto.taskid = task.TaskNum.ToString();
+                        taskGenerationDto.taskType = task.TaskType.ToString();
+                        taskGenerationDto.floor = task.Floor.ToString();
+                        taskGenerationDto.param1 = task.SourceAddress.ToString();
+                        taskGenerationDto.param2 = task.TargetAddress.ToString();
+                        taskGenerationDto.param3 = "";
+                        taskGenerationDto.param4 = "";
+                        taskGenerationDto.param5 = "";
+                        taskGenerationDto.param6 = "";
+                        taskGenerationDto.param7 = "";
+                        taskGenerationDto.param8 = "";
+                        taskGenerationDto.param9 = "";
+                    }
+                    var ResultData = HttpHelper.Post(url, taskGenerationDto.ToJson(), headers: new Dictionary<string, string>());
+                    var res = JsonConvert.DeserializeObject<WebResponseContent>(ResultData);
+                    if (res.code == 200)
+                    {
+                        WriteLog.Info("浠诲姟涓嬪彂鎴愬姛").Write($"浠诲姟鍙穥task.TaskNum}", "浠诲姟涓嬪彂鎴愬姛");
+                        int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>();
+                        task.TaskState = nextStatus;
+                        task.Dispatchertime = DateTime.Now;
+                        _taskRepository.UpdateData(task);
+                    }
+                    else
+                    {
+                        WriteLog.Info("浠诲姟涓嬪彂澶辫触").Write($"浠诲姟鍙穥task.TaskNum}锛屼俊鎭瘂res.Message}", "浠诲姟涓嬪彂澶辫触");
+                        //_unitOfWorkManage.RollbackTran();
+                        content = WebResponseContent.Instance.Error($"{res.Message}");
+                    }
+                }
+                Thread.Sleep(100);
+                Dt_Task dt_Task = _taskRepository.QueryData(x => x.TaskState == (int)TaskInStatusEnum.AGV_Queue).OrderBy(r => r.CreateDate).FirstOrDefault();
+                if (dt_Task != null)
+                {
+                    var station = _stationinfoRepository.QueryFirst(x => x.StationCode == dt_Task.SourceAddress);
+                    // 鏌ユ壘涓や釜鍙敤鐨勭┖缂撳瓨鏋�
+                    var freeStations = _stationinfoRepository
+                        .QueryData(x => x.Location_state == LocationStatusEnum.Free.ObjToInt() && x.Enable && x.Remark == station.Remark && x.Area == station.Area)//  && x.Stationtype == station.Stationtype
+                        .Take(2) // 鍙彇鍓嶄袱涓�
+                        .ToList();
 
-        public static void SendAGVTask1(ITaskRepository _taskRepository)
+                    int floor = 0;
+                    if (station.Area.Contains("A鍖�"))
+                    {
+                        floor = 32;
+                    }
+                    else
+                    {
+                        floor = 128;
+                    }
+                    if (freeStations.Count < 2)
+                    {
+                        throw new Exception("鏈壘鍒颁袱涓彲鐢ㄧ殑绌虹紦瀛樻灦");
+                    }
+                    // 妫�鏌ヨ繖涓や釜缂撳瓨鏋舵槸鍚﹁浠诲姟鍗犵敤
+                    var stationCodes = freeStations.Select(s => s.StationCode).ToList();
+                    freeStations[0].Location_state = LocationStatusEnum.Lock.ObjToInt();
+                    _stationinfoRepository.UpdateData(freeStations[0]);
+                    freeStations[1].Location_state = LocationStatusEnum.Lock.ObjToInt();
+                    _stationinfoRepository.UpdateData(freeStations[1]);
+                    //stationCodes.
+                    var tasks = _taskRepository.QueryData(x => stationCodes.Contains(x.SourceAddress) || stationCodes.Contains(x.TargetAddress)).ToList();
+                    if (tasks.Any())
+                    {
+                        throw new Exception("缂撳瓨鏋跺凡鏈変换鍔�");
+                    }
+                    dt_Task.TargetAddress = string.Join("||", freeStations.Select(s => s.StationCode));
+                    dt_Task.NextAddress = string.Join("||", freeStations.Select(s => s.StationCode));
+                    dt_Task.TaskState = (int)TaskInStatusEnum.InNew;
+                    dt_Task.TaskType = floor;
+                    _taskRepository.UpdateData(dt_Task);
+                }
+            }
+            catch (Exception ex)
+            {
+
+            }
+
+        }
+
+        public static void SendAGVTask(AGV agv, ITaskRepository _taskRepository)
         {
 
             // 杩炴帴瀛楃涓� - 鏍规嵁浣犵殑鏈嶅姟鍣ㄤ俊鎭慨鏀�
@@ -30,7 +127,7 @@
                 {
                     using (SqlConnection connection = new SqlConnection(connectionString))
                     {
-                        connection.Open(); 
+                        connection.Open();
 
                         using (SqlCommand command = new SqlCommand(insertSql, connection))
                         {
@@ -55,10 +152,6 @@
                 }
             }
 
-        }
-
-        public static void SendAGVTask(AGV agv, ITaskRepository _taskRepository)
-        {
             // 妫�鏌GV鏄惁涓虹┖
             if (agv == null)
             {

--
Gitblit v1.9.3