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