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/OutboundTask.cs |  195 ++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 152 insertions(+), 43 deletions(-)

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"
index 63bafd4..ff73eea 100644
--- "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"
@@ -31,53 +31,162 @@
                 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)
+                    #region 鏍规嵁搴撳瓨鍏ュ簱鏃堕棿鏈�鏅氭煡璇�
+                    var inventory = freeDB.Select<dt_inventory>().Where(x => x.FigureNumber == mes_head.drawingNo).OrderByDescending(x => x.OnlineTime).First();
+                    if (inventory != null)
                     {
-                        var SNS = station.bindSN.Split(",");
-                        foreach (var SN in SNS)
+                        var Station = stationinfoRepository.Find(x => x.stationCode == inventory.stationCode).FirstOrDefault();
+                        if (Station != null)
                         {
-                            if (!string.IsNullOrEmpty(SN))
-                                list.Add(SN);
+                            var stationinfo = stationinfoRepository.Find(x => x.line == Station.line && x.area == Station.area && x.enable).OrderByDescending(x => x.column).FirstOrDefault();
+                            if (stationinfo != null)
+                            {
+                                if (stationinfo.bindSN == null)
+                                    throw new Exception(stationinfo.stationCode + "杞﹁疆SN鍙蜂俊鎭紓甯�!");
+                                List<string> lists = new List<string>();
+                                var SNS = stationinfo.bindSN.Split(",");
+                                foreach (var SN in SNS)
+                                {
+                                    if (!string.IsNullOrEmpty(SN))
+                                        lists.Add(SN);
+                                }
+                                foreach (var item in lists)
+                                {
+                                    if (freeDB.Select<dt_mes_detail>().Where(x => x.jobID == mes_head.jobID && x.SN == item).Any())
+                                    {
+                                        dt_agvtask agvtask = new dt_agvtask()
+                                        {
+                                            agv_fromaddress = stationinfo.stationCode,
+                                            agv_id = Guid.NewGuid(),
+                                            agv_tasknum = IdenxManager.GetTaskNo("KH-", "WMS"),
+                                            agv_grade = 1,
+                                            agv_createtime = DateTime.Now,
+                                            agv_taskstate = "Queue",
+                                            agv_materielid = stationinfo.stationType,
+                                            agv_qty = stationinfo.quantity,
+                                            agv_tasktype = "TaskType_Outbound",
+                                            agv_toaddress = "",
+                                            agv_userid = "绯荤粺",
+                                            bindSN = stationinfo.bindSN,
+                                            agv_worktype = Convert.ToInt32(mes_head.processCode),
+                                            agv_materbarcode = mes_head.materialCode,
+                                            agv_Traytype = stationinfo.tray_type,
+                                            agv_TrayStatus = stationinfo.tray_status
+                                        };
+                                        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);
+                                        return;
+                                    }
+                                }
+                            }
+                            stationinfo = stationinfoRepository.Find(x => x.stationType == mes_head.drawingNo && x.line != Station.line).OrderBy(x => x.line).ThenByDescending(x => x.column).FirstOrDefault();
+                            if (stationinfo != null && stationinfo.enable)
+                            {
+                                if (stationinfo.bindSN == null)
+                                    throw new Exception(stationinfo.stationCode + "杞﹁疆SN鍙蜂俊鎭紓甯�!");
+                                List<string> lists = new List<string>();
+                                var SNS = stationinfo.bindSN.Split(",");
+                                foreach (var SN in SNS)
+                                {
+                                    if (!string.IsNullOrEmpty(SN))
+                                        lists.Add(SN);
+                                }
+                                foreach (var item in lists)
+                                {
+                                    if (freeDB.Select<dt_mes_detail>().Where(x => x.jobID == mes_head.jobID && x.SN == item).Any())
+                                    {
+                                        dt_agvtask agvtask = new dt_agvtask()
+                                        {
+                                            agv_fromaddress = stationinfo.stationCode,
+                                            agv_id = Guid.NewGuid(),
+                                            agv_tasknum = IdenxManager.GetTaskNo("KH-", "WMS"),
+                                            agv_grade = 1,
+                                            agv_createtime = DateTime.Now,
+                                            agv_taskstate = "Queue",
+                                            agv_materielid = stationinfo.stationType,
+                                            agv_qty = stationinfo.quantity,
+                                            agv_tasktype = "TaskType_Outbound",
+                                            agv_toaddress = "",
+                                            agv_userid = "绯荤粺",
+                                            bindSN = stationinfo.bindSN,
+                                            agv_worktype = Convert.ToInt32(mes_head.processCode),
+                                            agv_materbarcode = mes_head.materialCode,
+                                            agv_Traytype = stationinfo.tray_type,
+                                            agv_TrayStatus = stationinfo.tray_status
+                                        };
+                                        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);
+                                        return;
+                                    }
+                                }
+                            }
                         }
                     }
-                    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);
-                    }
+                    #endregion
+
+                    #region MyRegion
+                    //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);
+                    //}
+                    #endregion
+
                 }
             }
             catch (Exception)

--
Gitblit v1.9.3