From 5662395113163ac87425f23aa0bff8853be92462 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期三, 06 三月 2024 10:46:27 +0800
Subject: [PATCH] 优化逻辑

---
 代码管理/WMS/WMS_Server/WIDESEA_Entity/DomainModels/System/dt_stationinfo.cs         |    8 +
 代码管理/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/OutboundTask.cs                  |  106 +++++++++++++++++
 代码管理/PCS/WCS_Server/WIDESEA_Entity/DomainModels/System/dt_stationinfo.cs         |    7 +
 代码管理/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/StationTask.cs                   |  147 ++++++++++++++++--------
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Jobs/Task/AutoTaskJob.cs                         |    3 
 项目资料/通信协议/新增设备协议/太重交互-库口状态_V1.xlsx                                               |    0 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Common/Gantry.cs                                 |   46 ++++---
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/PipelineJob.cs                    |    8 
 代码管理/WMS/WMS_Server/WIDESEA_WMS/Common/Gantry/QueryData.cs                       |    2 
 代码管理/WMS/WMS_Client/src/views/widesea_wms/system/dt_stationinfo.vue              |    5 
 代码管理/WMS/WMS_Client/src/views/widesea_wms/system/dt_inventory.vue                |    2 
 代码管理/WMS/WMS_Server/WIDESEA_WMS/Services/system/Partial/dt_stationinfoService.cs |   20 +++
 12 files changed, 275 insertions(+), 79 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/System/dt_stationinfo.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/System/dt_stationinfo.cs"
index 3c02acd..607e5ac 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/System/dt_stationinfo.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/System/dt_stationinfo.cs"
@@ -144,5 +144,12 @@
         [Column(TypeName = "nvarchar(50)")]
         public string heatNumber { get; set; }
 
+        /// <summary>
+        ///鎵樼洏绫诲瀷
+        /// </summary>
+        [Display(Name = "鎵樼洏绫诲瀷")]
+        [MaxLength(100)]
+        [Column(TypeName = "nvarchar(100)")]
+        public string tray_type { get; set; }
     }
 }
\ No newline at end of file
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/Gantry.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/Gantry.cs"
index 54e0f69..7b6af49 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/Gantry.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/Gantry.cs"
@@ -221,37 +221,44 @@
                     if (!Request) continue;
 
                     var Stations = stationinfoRepository.Find(x => x.area == PipelineJob.area_code(name));
-                    foreach (var station in Stations)
-                    {
-                        if (!station.enable)
-                            client.WriteByOrder("W_Enabl_Load", false, name);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
-                    }
+
                     var NGStation = "X01001003";
                     if (name == "2鍗曞厓涓嬫枡鍖�") NGStation = "X02001003";
                     if (name == "3鍗曞厓涓嬫枡鍖�") NGStation = "X03001002";
-                    var Wheel_Type = (Int32)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_Wheel_Type").First(), client);//杞﹁疆绫诲瀷
-                    var Wheel_id = DBExtension.Read(details.Where(x => x.plcdetail_name == "R_Wheel_id").First(), client).ToString();//杞﹁疆SN鍙�
+                    foreach (var station in Stations)
+                    {
+                        if (!station.enable || station.location_state == LocationStateEnum.Empty.ToString())
+                            client.WriteByOrder("W_Enabl_Load", false, name);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
+                    }
+                    var Wheel_Type = DBExtension.Read(details.Where(x => x.plcdetail_name == "R_Wheel_Type").First(), client);//杞﹁疆绫诲瀷
+                    var Wheel_id = client.ReadByOrder<string>("R_Wheel_id", name);//杞﹁疆SN鍙�
+                    //var Wheel_id = DBExtension.Read(details.Where(x => x.plcdetail_name == "R_Wheel_id").First(), client).ToString();
 
                     var mes_Detail = mes_DetailRepository.FindFirst(x => x.SN == Wheel_id);
                     var mes_Head = mes_HeadRepository.FindFirst(x => x.jobID == mes_Detail.jobID);
+                    var wheel = PipelineJob.QueryMateriel(mes_Head.drawingNo);
 
-                    var PartStatus = (Int32)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_PartStatus").First(), client);//1:ok;2:nok
-                    if (PartStatus == 1)
+                    var PartStatus = DBExtension.Read(details.Where(x => x.plcdetail_name == "R_PartStatus").First(), client);//1:ok;2:nok
+                    if ((Int16)PartStatus == 1)
                     {
                         var Stationinfo = Stations
                         .Where(x => x.enable
                         && x.stationCode != NGStation
                         && x.location_state == LocationStateEnum.Stroge.ToString()
                         && x.quantity < 5
-                        && x.stationType == PipelineJob.QueryMateriel(Wheel_Type)
+                        && x.stationType == mes_Head.drawingNo
+                        && x.tray_type == (wheel.e < 1100 ? "SmallTray" : "LargeTray")
                         && x.Number == mes_Detail.jobID
-                        && x.heatNumber == mes_Detail.heatID).FirstOrDefault();
+                        && x.heatNumber == mes_Detail.heatID)
+                        .OrderByDescending(x => x.quantity)
+                        .FirstOrDefault();
                         if (Stationinfo == null)
                             Stationinfo = Stations.Where(x => x.enable && x.stationCode != NGStation && x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity == 0).FirstOrDefault();
                         if (Stationinfo != null)
                         {
                             var Pipelinedetails = plcRepository.Find(x => x.plcdetail_iotype == Pipelineplc.plcinfo_iotyep && x.plcdetail_number == Stationinfo.stationCode).ToList();
-                            var PalletSignal = (Int16)DBExtension.Read(Pipelinedetails.Where(x => x.plcdetail_name == "R_PalletSignal").First(), client);//璇诲彇鎵樼洏淇″彿:1:鏈�,2鏃�
+                            var PalletSignal = (Int16)DBExtension.Read(Pipelinedetails.Where(x => x.plcdetail_name == "R_PalletSignal").First(), Pipeline_client);//璇诲彇鎵樼洏淇″彿:1:鏈�,2鏃�
+                            //var Wheel_id = client.ReadByOrder<string>("R_Wheel_id", name);
                             if (PalletSignal == 1)
                             {
                                 var SNS = Stationinfo.bindSN.Split(",");
@@ -271,21 +278,22 @@
                                 }
                                 var area = Convert.ToInt16(Stationinfo.stationCode.Substring(Stationinfo.stationCode.Length - 1, 1));
                                 client.WriteByOrder("W_AreaNr", (Int16)area, name);//鍖哄煙璐т綅鍙�
-                                client.WriteByOrder("W_IndexNr", (Int16)Stationinfo.quantity + 1, name);//鎵樼洏涓婄殑绗嚑涓溅杞�
+                                client.WriteByOrder("W_IndexNr", (Int16)(Stationinfo.quantity + 1), name);//鎵樼洏涓婄殑绗嚑涓溅杞�
                                 client.WriteByOrder("W_Storage_Type", (Int16)1, name);//鎵樼洏绫诲瀷1-妯斁;2-绔栨斁(鏆傛椂鍙湁妯斁鎵樼洏)
                                 client.WriteByOrder("W_Enabl_Load", true, name);//鏄惁鍏佽
                                 return;
                             }
                         }
                     }
-                    else if (PartStatus == 2)
+                    else if ((Int16)PartStatus == 2)
                     {
                         var Stationinfo = Stations
                         .Where(x => x.enable
                         && x.stationCode == NGStation
                         && x.location_state == LocationStateEnum.Stroge.ToString()
                         && x.quantity < 5
-                        && x.stationType == PipelineJob.QueryMateriel(Wheel_Type)
+                        && x.stationType == mes_Head.drawingNo
+                        && x.tray_type == (wheel.e < 1100 ? "SmallTray" : "LargeTray")
                         && x.Number == mes_Detail.jobID
                         && x.heatNumber == mes_Detail.heatID).FirstOrDefault();
                         if (Stationinfo != null)
@@ -311,7 +319,7 @@
                                 }
                                 var area = Convert.ToInt16(Stationinfo.stationCode.Substring(Stationinfo.stationCode.Length - 1, 1));
                                 client.WriteByOrder("W_AreaNr", (Int16)area, name);//鍖哄煙璐т綅鍙�
-                                client.WriteByOrder("W_IndexNr", (Int16)Stationinfo.quantity + 1, name);//鎵樼洏涓婄殑绗嚑涓溅杞�
+                                client.WriteByOrder("W_IndexNr", (Int16)(Stationinfo.quantity + 1), name);//鎵樼洏涓婄殑绗嚑涓溅杞�
                                 client.WriteByOrder("W_Storage_Type", (Int16)1, name);//鎵樼洏绫诲瀷1-妯斁;2-绔栨斁(鏆傛椂鍙湁妯斁鎵樼洏)
                                 client.WriteByOrder("W_Enabl_Load", true, name);//鏄惁鍏佽
                                 return;
@@ -352,9 +360,9 @@
                         station.bindSN = station.bindSN == string.Empty ? Wheel_id : station.bindSN + "," + Wheel_id;
                         if (station.quantity == 0)
                         {
-                            station.stationType = Wheel_id;
-                            station.Number = Wheel_id;
-                            station.heatNumber = Wheel_id;
+                            station.stationType = mes_Head.drawingNo;
+                            station.Number = mes_Head.jobID;
+                            station.heatNumber = mes_Detail.heatID;
                         }
                         var count = stationinfoRepository.Update(station);
                         if (count < 1)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/Task/AutoTaskJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/Task/AutoTaskJob.cs"
index fe04fe0..3fa6f0b 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/Task/AutoTaskJob.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/Task/AutoTaskJob.cs"
@@ -34,7 +34,8 @@
             //Creation.HCJCreation();
             //Creation.PLCinfodetail();
 
-            StationTask.CreateTask();
+            //StationTask.CreateTask();
+            //OutboundTask.CreateOutboundTask();
 
         }
     }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/PipelineJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/PipelineJob.cs"
index 788360d..3323394 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/PipelineJob.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/PipelineJob.cs"
@@ -121,7 +121,7 @@
                         Gantry_client.WriteByOrder("W_AreaNr", (Int16)area, number);//鍖哄煙璐т綅鍙�
                         Gantry_client.WriteByOrder("W_IndexNr", (Int16)SNS.Length, number);//鎵樼洏涓婄殑绗嚑涓溅杞�
                         Gantry_client.WriteByOrder("W_Storage_Type", (Int16)1, number); //鎵樼洏绫诲瀷1-妯斁;2-绔栨斁
-                        Gantry_client.WriteByOrder("W_Wheel_Type", (Int16)Convert.ToInt16(QueryMateriel(Station.stationType)), number);//杞﹁疆绫诲瀷
+                        Gantry_client.WriteByOrder("W_Wheel_Type", (Int16)Convert.ToInt16(QueryMateriel(Station.stationType).TypeId), number);//杞﹁疆绫诲瀷
                         Gantry_client.WriteByOrder("W_Wheel_id", SNS[SNS.Length - 1], number);//杞﹁疆SN鍙�
                         Gantry_client.WriteByOrder("W_RequestUnload", true, number);
                     }
@@ -196,12 +196,12 @@
 
             return Newsn;
         }
-        private int QueryMateriel(string type)
-        {
+        public static dt_geometry_data QueryMateriel(string type)
+        { 
             VOLContext Context = new VOLContext();
             Idt_geometry_dataRepository dataRepository = new dt_geometry_dataRepository(Context);
             var materielinfo = dataRepository.FindFirst(x => x.Description == type);
-            return materielinfo.TypeId;
+            return materielinfo;
         }
         public static string QueryMateriel(int  typeId)
         {
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/OutboundTask.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/OutboundTask.cs"
new file mode 100644
index 0000000..63bafd4
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/OutboundTask.cs"
@@ -0,0 +1,106 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Security.Cryptography.Xml;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Comm;
+using WIDESEA_Comm.TaskNo;
+using WIDESEA_Core.EFDbContext;
+using WIDESEA_Core.FreeDB;
+using WIDESEA_Entity.DomainModels;
+using WIDESEA_WCS.IRepositories;
+using WIDESEA_WCS.Repositories;
+using static FreeSql.Internal.GlobalFilter;
+using static System.Collections.Specialized.BitVector32;
+
+namespace WIDESEA_WCS.JobsPart.Common
+{
+    public class OutboundTask
+    {
+        static FreeDB freeDB = new FreeDB();
+        /// <summary>
+        /// 鍒涘缓鍑哄簱浠诲姟
+        /// </summary>
+        public static void CreateOutboundTask()
+        {
+            try
+            {
+                VOLContext context = new VOLContext();
+                Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(context);
+                var mes_heads = freeDB.Select<dt_mes_head>().Where(x => x.processCode == "28").OrderBy(x => x.expectedStartTime).ToList();
+                foreach (var mes_head in mes_heads)
+                {
+                    //var inventorys = freeDB.Select<dt_inventory>().Where(x => x.FigureNumber == mes_head.drawingNo).OrderBy.ToList();
+                    var station = stationinfoRepository.Find(x => x.stationType == mes_head.drawingNo && x.line != x.line).OrderBy(x => x.line).ThenByDescending(x => x.column).FirstOrDefault();
+                    bool ok = false;
+                    List<string> list = new List<string>();
+                    if (station != null && station.location_state == LocationStateEnum.Stroge.ToString() && station.enable)
+                    {
+                        var SNS = station.bindSN.Split(",");
+                        foreach (var SN in SNS)
+                        {
+                            if (!string.IsNullOrEmpty(SN))
+                                list.Add(SN);
+                        }
+                    }
+                    foreach (var SN in list)
+                    {
+                        if (ok = freeDB.Select<dt_mes_detail>().Where(x => x.jobID == mes_head.jobID && x.SN == SN).Any()) continue;
+                    }
+                    if (ok)
+                    {
+                        dt_agvtask agvtask = new dt_agvtask()
+                        {
+                            agv_fromaddress = station.stationCode,
+                            agv_id = Guid.NewGuid(),
+                            agv_tasknum = IdenxManager.GetTaskNo("KH-", "WMS"),
+                            agv_grade = 1,
+                            agv_createtime = DateTime.Now,
+                            agv_taskstate = "Queue",
+                            agv_materielid = station.stationType,
+                            agv_qty = station.quantity,
+                            agv_tasktype = "TaskType_Outbound",
+                            agv_toaddress = "",
+                            agv_userid = "绯荤粺",
+                            bindSN = station.bindSN,
+                            agv_worktype = Convert.ToInt32(mes_head.processCode),
+                            agv_materbarcode = mes_head.materialCode,
+                            agv_barcode = station.tray_type
+                        };
+                        dt_stationinfo TargetLocation = GetEmptyLocation(stationinfoRepository);
+                        if (TargetLocation != null)
+                        {
+                            agvtask.agv_taskstate = "Create";
+                            agvtask.agv_toaddress = TargetLocation.stationCode;
+                            TargetLocation.location_state = LocationStateEnum.Busy.ToString();
+                            freeDB.Update(TargetLocation);
+                        }
+                        freeDB.Add(agvtask);
+                    }
+                }
+            }
+            catch (Exception)
+            {
+
+                throw;
+            }
+        }
+        private static dt_stationinfo GetEmptyLocation(Idt_stationinfoRepository stationinfoRepository)
+        {
+            dt_stationinfo TargetLocation = null;
+            var stations = stationinfoRepository.Find(x => x.stationCode.Contains("S01001"));
+            foreach (var station in stations)
+            {
+                TargetLocation = stationinfoRepository.FindFirst(x => x.stationCode == station.stationCode && x.location_state == LocationStateEnum.Empty.ToString() && x.enable);
+                if (TargetLocation != null) continue;
+            }
+
+            if (TargetLocation == null)
+            {
+                throw new Exception("妫�娴嬬嚎涓婃枡浣嶅凡婊�");
+            }
+            return TargetLocation;
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/StationTask.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/StationTask.cs"
index 33de533..5159d0f 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/StationTask.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/StationTask.cs"
@@ -10,6 +10,7 @@
 using WIDESEA_Entity.DomainModels;
 using WIDESEA_Comm;
 using static System.Collections.Specialized.BitVector32;
+using WIDESEA_Comm.TaskNo;
 
 namespace WIDESEA_WCS.JobsPart.Common
 {
@@ -17,73 +18,105 @@
     {
 
         static FreeDB freeDB = new FreeDB();
+        /// <summary>
+        /// 鍒涘缓鍏ュ簱浠诲姟
+        /// </summary>
         public static void CreateTask()
         {
-            VOLContext context = new VOLContext();
-            Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(context);
-            Idt_WorkinfoRepository workinfoRepository = new dt_WorkinfoRepository(context);
-
-            List<dt_stationinfo> stationinfos = stationinfoRepository.Find(x => x.stationCode.Contains('X'));
-
-            foreach (var item in stationinfos)
+            try
             {
-                //鏍规嵁涓嬫枡鍙g殑缁戝畾淇℃伅鏌ヨ瀵瑰簲宸ュ崟锛屾娴嬫宸ュ崟鏄惁宸插畬鎴�  瀹屾垚鍗冲彲灏嗗叾閫佸叆搴�
+                VOLContext context = new VOLContext();
+                Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(context);
+                Idt_WorkinfoRepository workinfoRepository = new dt_WorkinfoRepository(context);
 
-                dt_mes_head mesinfo = freeDB.Select<dt_mes_head>().Where(x => x.jobID == item.Number).First();
-                dt_geometry_data dt_Geometry_Data = freeDB.Select<dt_geometry_data>().Where(x => x.Description == mesinfo.drawingNo).First();
-                int CompeletedNum = Convert.ToInt32(mesinfo.quantity) - Convert.ToInt32(mesinfo.finishNum);
+                List<dt_stationinfo> stationinfos = stationinfoRepository.Find(x => x.stationCode.Contains('X'));
 
-
-                //鍒ゅ畾浠诲姟鏄惁宸插垱寤�//濡傚凡瀛樺湪  
-                if (freeDB.Select<dt_agvtask>().Where(x => x.agv_fromaddress == item.stationCode).Count() > 0)
-                    continue;
-
-                if (item.quantity == 5 || CompeletedNum == 0)  //寰幆璇诲彇杞﹁疆鏁颁负5鎴栬�呰鍗曞凡瀹屾垚鏁伴噺鐨勪笅鏂欏彛    鈫掑伐鍗曚汉宸ュ叧闂殑宸ュ崟
+                foreach (var item in stationinfos)
                 {
+                    //鏍规嵁涓嬫枡鍙g殑缁戝畾淇℃伅鏌ヨ瀵瑰簲宸ュ崟锛屾娴嬫宸ュ崟鏄惁宸插畬鎴�  瀹屾垚鍗冲彲灏嗗叾閫佸叆搴�
+
+                    dt_mes_head mesinfo = freeDB.Select<dt_mes_head>().Where(x => x.jobID == item.Number).First();
+                    dt_geometry_data dt_Geometry_Data = freeDB.Select<dt_geometry_data>().Where(x => x.Description == mesinfo.drawingNo).First();
+                    int CompeletedNum = Convert.ToInt32(mesinfo.quantity) - Convert.ToInt32(mesinfo.finishNum);
 
 
-                    if (mesinfo.quantity <= 50 || item.stationCode.Contains("3"))    //灏忎簬50浠剁洿鎺ュ嚭搴�
+                    //鍒ゅ畾浠诲姟鏄惁宸插垱寤�//濡傚凡瀛樺湪  
+                    if (freeDB.Select<dt_agvtask>().Where(x => x.agv_fromaddress == item.stationCode).Count() > 0)
+                        continue;
+
+                    if (item.quantity == 5 || CompeletedNum == 0)  //寰幆璇诲彇杞﹁疆鏁颁负5鎴栬�呰鍗曞凡瀹屾垚鏁伴噺鐨勪笅鏂欏彛    鈫掑伐鍗曚汉宸ュ叧闂殑宸ュ崟
                     {
-                        //var station =
-                        //todo 瀵绘壘鍙斁璐у鍗忔斁璐у彴
-                        dt_agvtask agvtask = new dt_agvtask()
-                        {
-                            agv_fromaddress = item.stationCode,
-                            agv_id = Guid.NewGuid(),
-                            agv_grade = 0,
-                            agv_barcode = "",
-                            agv_createtime = DateTime.Now,
-                            agv_taskstate = TaskStatus.Created.ToString(),
-                            //agv_toaddress = ,
 
-                        };
-                        freeDB.Add(agvtask);
-                    }
-                    else
-                    {
-                        dt_stationinfo TargetLocation = GetEmptyLocation(stationinfoRepository, mesinfo, item, CompeletedNum, dt_Geometry_Data.e);
 
-                        if (TargetLocation != null)
+                        if (mesinfo.quantity <= 50 || item.stationCode.Contains("3"))    //灏忎簬50浠剁洿鎺ュ嚭搴�
                         {
-                            //todo:  璋冪敤WMS鎺ュ彛鍒涘缓浠诲姟
-                            dt_agvtask agvtask = new dt_agvtask()
+                            dt_stationinfo TargetLocation = GetEmptyLocation(stationinfoRepository);
+                            //todo 瀵绘壘鍙斁璐у鍗忔斁璐у彴
+                            if (TargetLocation != null)
                             {
-                                agv_fromaddress = item.stationCode,
-                                agv_id = Guid.NewGuid(),
-                                agv_grade = 0,
-                                agv_barcode = "",
-                                agv_createtime = DateTime.Now,
-                                agv_taskstate = TaskStatus.Created.ToString(),
-                                agv_toaddress = TargetLocation.stationCode,
-                            };
+                                dt_agvtask agvtask = new dt_agvtask()
+                                {
+                                    agv_fromaddress = item.stationCode,
+                                    agv_id = Guid.NewGuid(),
+                                    agv_tasknum = IdenxManager.GetTaskNo("KH-", "WMS"),
+                                    agv_grade = 1,
+                                    agv_createtime = DateTime.Now,
+                                    agv_taskstate = "Create",
+                                    agv_materielid = item.stationType,
+                                    agv_qty = item.quantity,
+                                    agv_tasktype = "TaskType_OutsourceInbound",
+                                    agv_toaddress = TargetLocation.stationCode,
+                                    agv_userid = "绯荤粺",
+                                    bindSN = item.bindSN,
+                                    agv_worktype = Convert.ToInt32(mesinfo.processCode),
+                                    agv_materbarcode = mesinfo.materialCode,
+                                    agv_barcode=item.tray_type
+                                };
 
-                            freeDB.Add(agvtask);
-                            TargetLocation.location_state = LocationStateEnum.Busy.ToString();
-                            freeDB.Update(TargetLocation);
+                                freeDB.Add(agvtask);
+                                TargetLocation.location_state = LocationStateEnum.Busy.ToString();
+                                freeDB.Update(TargetLocation);
+                            }
+                        }
+                        else
+                        {
+                            dt_stationinfo TargetLocation = GetEmptyLocation(stationinfoRepository, mesinfo, item, CompeletedNum, dt_Geometry_Data.e);
+
+                            if (TargetLocation != null)
+                            {
+                                //todo:  璋冪敤WMS鎺ュ彛鍒涘缓浠诲姟
+                                dt_agvtask agvtask = new dt_agvtask()
+                                {
+                                    agv_fromaddress = item.stationCode,
+                                    agv_id = Guid.NewGuid(),
+                                    agv_tasknum = IdenxManager.GetTaskNo("KH-", "WMS"),
+                                    agv_grade = 1,
+                                    agv_createtime = DateTime.Now,
+                                    agv_taskstate = "Create",
+                                    agv_materielid = item.stationType,
+                                    agv_qty = item.quantity,
+                                    agv_tasktype = "TaskType_Inbound",
+                                    agv_toaddress = TargetLocation.stationCode,
+                                    agv_userid = "绯荤粺",
+                                    bindSN = item.bindSN,
+                                    agv_worktype = Convert.ToInt32(mesinfo.processCode),
+                                    agv_materbarcode = mesinfo.materialCode,
+                                    agv_barcode=item.tray_type
+                                };
+
+                                freeDB.Add(agvtask);
+                                TargetLocation.location_state = LocationStateEnum.Busy.ToString();
+                                freeDB.Update(TargetLocation);
+                            }
                         }
                     }
                 }
             }
+            catch (Exception ex)
+            {
+
+            }
+
         }
 
         /// <summary>
@@ -248,6 +281,22 @@
             return TargetLocation;
         }
 
+        private static dt_stationinfo GetEmptyLocation(Idt_stationinfoRepository stationinfoRepository)
+        {
+            dt_stationinfo TargetLocation = null;
+            List<string> target = new List<string>() { "W01001001", "W01001002", "W01001003" };
+            foreach (var item in target)
+            {
+                TargetLocation = stationinfoRepository.FindFirst(x => x.stationCode == item && x.location_state == LocationStateEnum.Empty.ToString() && x.enable);
+                if (TargetLocation != null) continue;
+            }
+
+            if (TargetLocation == null)
+            {
+                throw new Exception("澶栧崗鍏ュ簱鍙e凡婊�");
+            }
+            return TargetLocation;
+        }
         /// <summary>
         /// 鏍规嵁璁㈠崟鏁伴噺杩斿洖搴撳尯(鏆傛椂寮冪敤)   //鏇存崲涓哄簱浣嶇被鍨嬪尮閰�
         /// </summary>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Client/src/views/widesea_wms/system/dt_inventory.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Client/src/views/widesea_wms/system/dt_inventory.vue"
index 17d002c..fd653eb 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Client/src/views/widesea_wms/system/dt_inventory.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Client/src/views/widesea_wms/system/dt_inventory.vue"
@@ -36,7 +36,7 @@
             const columns = ref([{field:'SN',title:'杞﹁疆SN鍙�',type:'string',width:220,align:'left',sort:true},
                        {field:'Name',title:'浜у搧鍚嶇О',type:'string',width:220,align:'left'},
                        {field:'FigureNumber',title:'浜у搧鍥惧彿',type:'string',width:220,align:'left'},
-                       {field:'HearthNumber',title:'鐔旂偧鐐夊彿',type:'string',width:220,align:'left'},
+                       {field:'area',title:'鍖哄煙浠g爜',type:'string',width:220,align:'left'},
                        {field:'HeatNumber',title:'鐐変唬鍙�',type:'string',width:110,align:'left'},
                        {field:'BilletNumber',title:'閽㈠澂鍙�',type:'int',width:110,align:'left'},
                        {field:'OnlineTime',title:'鍏ュ簱鏃堕棿',type:'datetime',width:150,align:'left',sort:true},
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Client/src/views/widesea_wms/system/dt_stationinfo.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Client/src/views/widesea_wms/system/dt_stationinfo.vue"
index 29a767b..a496c7b 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Client/src/views/widesea_wms/system/dt_stationinfo.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Client/src/views/widesea_wms/system/dt_stationinfo.vue"
@@ -34,7 +34,7 @@
                               [{"title":"鍥惧彿","field":"stationType"}],
                               [{"dataKey":"location_states","data":[],"title":"璐т綅鐘舵��","field":"location_state","type":"select"}],
                               [{"title":"杞﹁疆SN鍙�","field":"bindSN"}],
-                              [{"dataKey":"tray_status","data":[],"title":"鎵樼洏鐘舵��","field":"tray_status","type":"select"}],
+                              [{"dataKey":"tray_types","data":[],"title":"鎵樼洏绫诲瀷","field":"tray_type","type":"select"}],
                               [{"title":"宸ュ崟缂栧彿","field":"Number"}],
                               [{"title":"鐐夊彿","field":"heatNumber","type":"text"}],
                               [{"title":"澶囨敞","field":"remark"}]]);
@@ -49,7 +49,8 @@
                     //    {field:'lastUpdateTime',title:'鏈�鍚庣姸鎬佹敼鍙樻椂闂�',type:'datetime',width:150,align:'left',sort:true},
                        {field:'quantity',title:'杞﹁疆鏁伴噺',type:'int',width:80,align:'left'},
                        {field:'bindSN',title:'杞﹁疆SN鍙�',type:'string',width:220,align:'left'},
-                       {field:'tray_status',title:'鎵樼洏绫诲瀷',type:'string',bind:{ key:'tray_status',data:[]},width:110,align:'left'},
+                       {field:'tray_status',title:'鎵樼洏鐘舵��',type:'string',bind:{ key:'tray_status',data:[]},width:110,align:'left'},
+                       {field:'tray_type',title:'鎵樼洏绫诲瀷',type:'string',bind:{ key:'tray_types',data:[]},width:110,align:'left'},
                     //    {field:'line',title:'琛�',type:'int',width:80,align:'left'},
                     //    {field:'column',title:'鍒�',type:'int',width:80,align:'left'},
                     {field:'heatNumber',title:'鐐夊彿',type:'int',width:80,align:'left'},
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_Entity/DomainModels/System/dt_stationinfo.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_Entity/DomainModels/System/dt_stationinfo.cs"
index 01f083e..82ff0c0 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_Entity/DomainModels/System/dt_stationinfo.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_Entity/DomainModels/System/dt_stationinfo.cs"
@@ -143,6 +143,12 @@
         [Column(TypeName = "nvarchar(50)")]
         public string heatNumber { get; set; }
 
-
+        /// <summary>
+        ///鎵樼洏绫诲瀷
+        /// </summary>
+        [Display(Name = "鎵樼洏绫诲瀷")]
+        [MaxLength(100)]
+        [Column(TypeName = "nvarchar(100)")]
+        public string tray_type { get; set; }
     }
 }
\ No newline at end of file
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Common/Gantry/QueryData.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Common/Gantry/QueryData.cs"
index 5ab2751..b31c90b 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Common/Gantry/QueryData.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Common/Gantry/QueryData.cs"
@@ -18,7 +18,7 @@
         /// <returns></returns>
         public static dt_geometry_data QueryMateriel(string type)
         {
-            var materielinfo = freeDB.Select<dt_geometry_data>().Where(x => x.Description.ToString() == type).First();
+            var materielinfo = freeDB.Select<dt_geometry_data>().Where(x => x.Description == type).First();
             return materielinfo;
         }
         /// <summary>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Services/system/Partial/dt_stationinfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Services/system/Partial/dt_stationinfoService.cs"
index c7891fa..cb05024 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Services/system/Partial/dt_stationinfoService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Services/system/Partial/dt_stationinfoService.cs"
@@ -120,7 +120,25 @@
             station.heatNumber = saveModel.MainData["heatNumber"].ToString();
             station.Number = saveModel.MainData["Number"].ToString();
             station.remark = saveModel.MainData["remark"].ToString();
-            station.tray_status= saveModel.MainData["tray_status"].ToString();
+            station.tray_type = saveModel.MainData["tray_type"].ToString();
+            if (list.Count == 0)
+            {
+                //station.tray_status = "EmptyTray";
+                station.stationType = string.Empty;
+                station.heatNumber = string.Empty;
+                station.Number = string.Empty;
+            }
+            station.tray_status = list.Count == 0 ? "EmptyTray" : "StrogeTray";
+            if (station.location_state == "Empty")
+            {
+                station.stationType = string.Empty;
+                station.heatNumber = string.Empty;
+                station.Number = string.Empty;
+                station.tray_status = string.Empty;
+                station.bindSN = string.Empty;
+                station.quantity = 0;
+                station.tray_type=string.Empty;
+            }
             var count = _repository.Update(station, true);
             if (count > 0)
                 webResponse.OK();
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\346\226\260\345\242\236\350\256\276\345\244\207\345\215\217\350\256\256/\345\244\252\351\207\215\344\272\244\344\272\222-\345\272\223\345\217\243\347\212\266\346\200\201_V1.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\346\226\260\345\242\236\350\256\276\345\244\207\345\215\217\350\256\256/\345\244\252\351\207\215\344\272\244\344\272\222-\345\272\223\345\217\243\347\212\266\346\200\201_V1.xlsx"
index 28d7d14..516b02b 100644
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\346\226\260\345\242\236\350\256\276\345\244\207\345\215\217\350\256\256/\345\244\252\351\207\215\344\272\244\344\272\222-\345\272\223\345\217\243\347\212\266\346\200\201_V1.xlsx"
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\346\226\260\345\242\236\350\256\276\345\244\207\345\215\217\350\256\256/\345\244\252\351\207\215\344\272\244\344\272\222-\345\272\223\345\217\243\347\212\266\346\200\201_V1.xlsx"
Binary files differ

--
Gitblit v1.9.3