From 73a926018601d9a5a5a3d3f4c051537f45a8eff4 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期四, 14 三月 2024 09:33:38 +0800
Subject: [PATCH] 优化代码逻辑

---
 代码管理/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/StationTask.cs |  149 +++++++++++++++++++++++++++++++++----------------
 1 files changed, 100 insertions(+), 49 deletions(-)

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..414efc7 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,107 @@
     {
 
         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 = freeDB.Select<dt_stationinfo>().Where(x => x.stationCode.Contains("X") && x.quantity > 0 && !string.IsNullOrEmpty(x.stationType)).ToList();
 
-
-                //鍒ゅ畾浠诲姟鏄惁宸插垱寤�//濡傚凡瀛樺湪  
-                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_Traytype = item.tray_type,
+                                    agv_TrayStatus = item.tray_status
+                                };
 
-                            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_Traytype = item.tray_type,
+                                    agv_TrayStatus = item.tray_status
+                                };
+
+                                freeDB.Add(agvtask);
+                                TargetLocation.location_state = LocationStateEnum.Busy.ToString();
+                                freeDB.Update(TargetLocation);
+                            }
                         }
                     }
                 }
             }
+            catch (Exception ex)
+            {
+
+            }
+
         }
 
         /// <summary>
@@ -248,6 +283,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>

--
Gitblit v1.9.3