From 53d6a24cb335b0c9b4449e1211ce8ea644d68d67 Mon Sep 17 00:00:00 2001 From: dengjunjie <dengjunjie@hnkhzn.com> Date: 星期五, 31 五月 2024 20:48:53 +0800 Subject: [PATCH] 可根据图号更改下料口车轮数量入库条件 --- 代码管理/PCS/WCS_Server/WIDESEA_WCS/Common/Pipeline.cs | 191 ++++++++++++++++++++++++++++++----------------- 1 files changed, 122 insertions(+), 69 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/Pipeline.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/Pipeline.cs" index 6cbb4af..948272b 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/Pipeline.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/Pipeline.cs" @@ -16,6 +16,7 @@ using WIDESEA_Comm.TaskNo; using WIDESEA_WCS.JobsPart.Common; using System.Xml.Linq; +using WIDESEA_Common; namespace WIDESEA_WCS { @@ -84,9 +85,9 @@ { #region 鍒ゆ柇鍖哄煙鍙锋槸鍚︿竴鑷� - var area = Gantry_client.ReadByOrder<Int16>("place_prog", number);//鏀炬枡瀹屾垚鐨勫尯鍩熷彿 + //var area = Gantry_client.ReadByOrder<Int16>("place_prog", number);//鏀炬枡瀹屾垚鐨勫尯鍩熷彿 - WriteLog.Write_Log(number + "鍙栨枡瀹屾垚鍑洪敊", bindSNS[bindSNS.Length - 1], "鍒ゆ柇鍖哄煙鍙锋槸鍚︿竴鑷�", $"PCS鍖哄煙鍙凤細{AreaNr}锛沑n妗佹灦鍖哄煙鍙凤細{area}\n閿欒淇℃伅锛歅CS鍖哄煙鍙蜂笌妗佹灦鍖哄煙鍙蜂笉涓�鑷达紒"); + //WriteLog.Write_Log(number + "鍙栨枡瀹屾垚鍑洪敊", bindSNS[bindSNS.Length - 1], "鍒ゆ柇鍖哄煙鍙锋槸鍚︿竴鑷�", $"PCS鍖哄煙鍙凤細{AreaNr}锛沑n妗佹灦鍖哄煙鍙凤細{area}\n閿欒淇℃伅锛歅CS鍖哄煙鍙蜂笌妗佹灦鍖哄煙鍙蜂笉涓�鑷达紒"); //if (AreaNr != area) //{ // client.WriteByOrder("W_AlarmSignal", (Int16)2, number);//鎶ヨ @@ -97,9 +98,9 @@ #endregion #region 鍒ゆ柇杞﹁疆鏁伴噺鏄惁涓�鑷� - var quantity = Gantry_client.ReadByOrder<Int16>("pos_prog", number);//妗佹灦璁板綍鐨勮溅杞暟閲� + //var quantity = Gantry_client.ReadByOrder<Int16>("pos_prog", number);//妗佹灦璁板綍鐨勮溅杞暟閲� - WriteLog.Write_Log(number + "鍙栨枡瀹屾垚鍑洪敊", bindSNS[bindSNS.Length - 1], "鍒ゆ柇杞﹁疆鏁伴噺鏄惁涓�鑷�", $"鍖哄煙鍙凤細{AreaNr}锛沑n妗佹灦杞﹁疆鏁帮細{quantity}\nPCS杞﹁疆鏁帮細{station.quantity}\n閿欒淇℃伅锛歅CS鍖哄煙鍙蜂笌妗佹灦鍖哄煙鍙蜂笉涓�鑷达紒"); + //WriteLog.Write_Log(number + "鍙栨枡瀹屾垚鍑洪敊", bindSNS[bindSNS.Length - 1], "鍒ゆ柇杞﹁疆鏁伴噺鏄惁涓�鑷�", $"鍖哄煙鍙凤細{AreaNr}锛沑n妗佹灦杞﹁疆鏁帮細{quantity}\nPCS杞﹁疆鏁帮細{station.quantity}\n閿欒淇℃伅锛歅CS鍖哄煙鍙蜂笌妗佹灦鍖哄煙鍙蜂笉涓�鑷达紒"); //if (quantity != station.quantity) //{ // client.WriteByOrder("W_AlarmSignal", (Int16)2, number);//鎶ヨ @@ -146,10 +147,10 @@ #region 鐢宠涓婃枡 - if (!Gantry_client.ReadByOrder<bool>("W_RequestUnload", number)) + var Station = stationinfoRepository.Find(x => x.area == area_code(number) && x.enable && x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity > 0).OrderBy(x => x.lastUpdateTime).FirstOrDefault(); + if (Station != null) { - var Station = stationinfoRepository.Find(x => x.area == area_code(number) && x.enable && x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity > 0).OrderBy(x => x.lastUpdateTime).FirstOrDefault(); - if (Station != null) + if (!Gantry_client.ReadByOrder<bool>("W_RequestUnload", number)) { var SNS = Station.bindSN.Split(","); List<string> list = new List<string>(); @@ -163,10 +164,10 @@ { Station.location_state = LocationStateEnum.Abnormal.ToString(); Station.remark = "杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�"; - stationinfoRepository.Update(Station, true); + stationinfoRepository.Update(Station, x => new { x.location_state, x.remark }, true); Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆 #region 鏃ュ織璁板綍 - WriteDBLog.Error("涓婃枡鍖�", $"鍐欏叆妗佹灦淇℃伅锛歕nW_RequestUnload锛歠alse\n\n{Station.stationCode}杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�", "PCS"); + //WriteDBLog.Error("涓婃枡鍖�", $"鍐欏叆妗佹灦淇℃伅锛歕nW_RequestUnload锛歠alse\n\n{Station.stationCode}杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�", "PCS"); #endregion return; } @@ -177,7 +178,15 @@ if (PalletSignal == 1 && MaterialSignal == 1) { - Gantry_client.WriteByOrder("W_Wheel_Type", (Int16)Convert.ToInt16(QueryMateriel(Station.stationType) == null ? QueryMateriel1(Station.stationType).TypeId : QueryMateriel(Station.stationType).TypeId), number);//杞﹁疆绫诲瀷 + var geometry = QueryMateriel(Station.stationType); + if (geometry == null) + { + Station.remark = "鏈壘鍒拌溅杞俊鎭�"; + stationinfoRepository.Update(Station, x => new { x.remark }, true); + Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆 + return; + } + Gantry_client.WriteByOrder("W_Wheel_Type", (Int16)Convert.ToInt16(geometry.TypeId), number);//杞﹁疆绫诲瀷 var area = Convert.ToInt16(Station.stationCode.Substring(Station.stationCode.Length - 1, 1)); Gantry_client.WriteByOrder("W_AreaNr", (Int16)area, number);//鍖哄煙璐т綅鍙� Gantry_client.WriteByOrder("W_IndexNr", (Int16)SNS.Length, number);//鎵樼洏涓婄殑绗嚑涓溅杞� @@ -186,7 +195,7 @@ Gantry_client.WriteByOrder("W_RequestUnload", true, number); #region 鏃ュ織璁板綍 WriteDBLog.Success("涓婃枡鍖虹敵璇�", $"璇诲彇鎵樼洏鍏夌數淇″彿锛歿PalletSignal}\n璇诲彇绗竴涓溅杞厜鐢典俊鍙凤細{MaterialSignal}\n\n" + - $"鍐欏叆妗佹灦淇℃伅锛歕n鍖哄煙璐т綅鍙凤細{area}\n鎵樼洏涓婄殑绗嚑涓溅杞細{SNS.Length}\n鎵樼洏绫诲瀷锛歿1}\n杞﹁疆绫诲瀷锛歿(QueryMateriel(Station.stationType) == null ? QueryMateriel1(Station.stationType).TypeId : QueryMateriel(Station.stationType).TypeId)}" + + $"鍐欏叆妗佹灦淇℃伅锛歕n鍖哄煙璐т綅鍙凤細{area}\n鎵樼洏涓婄殑绗嚑涓溅杞細{SNS.Length}\n鎵樼洏绫诲瀷锛歿1}\n杞﹁疆绫诲瀷锛歿geometry.TypeId}" + $"\n杞﹁疆SN鍙凤細{SNS[SNS.Length - 1]}\nW_RequestUnload锛歵rue", "PCS"); #endregion } @@ -196,20 +205,24 @@ } #region 鏇存柊涓�涓娴嬩笂鏂欎换鍔� - Idt_agvtaskRepository agvtaskService = new dt_agvtaskRepository(Context); - if (!agvtaskService.Find(x => x.agv_toaddress == Station.stationCode).Any()) - { - var task = agvtaskService.Find(x => x.agv_taskstate == "Queue" && (x.agv_tasktype == "TaskType_OutsourceOutbound" || x.agv_tasktype == "TaskType_Outbound") && x.agv_toaddress == "").OrderByDescending(x => x.agv_grade).ThenBy(x => x.agv_createtime).FirstOrDefault(); - if (task != null) - { - task.agv_taskstate = "Create"; - task.agv_toaddress = Station.stationCode; - agvtaskService.Update(task, true); - WriteDBLog.Success("鏇存柊涓�涓娴嬩笂鏂欎换鍔�", $"浠诲姟缂栧彿锛歿task.agv_tasknum}", "PCS"); - } - } + //Idt_agvtaskRepository agvtaskService = new dt_agvtaskRepository(Context); + //if (!agvtaskService.Find(x => x.agv_toaddress == Station.stationCode).Any()) + //{ + // var task = agvtaskService.Find(x => x.agv_taskstate == "Queue" && (x.agv_tasktype == "TaskType_OutsourceOutbound" || x.agv_tasktype == "TaskType_Outbound") && x.agv_toaddress == "").OrderByDescending(x => x.agv_grade).ThenBy(x => x.agv_createtime).FirstOrDefault(); + // if (task != null) + // { + // task.agv_taskstate = "Create"; + // task.agv_toaddress = Station.stationCode; + // agvtaskService.Update(task, true); + // WriteDBLog.Success("鏇存柊涓�涓娴嬩笂鏂欎换鍔�", $"浠诲姟缂栧彿锛歿task.agv_tasknum}", "PCS"); + // } + //} #endregion } + } + else + { + Gantry_client.WriteByOrder("W_RequestUnload", false, number); } #endregion @@ -373,6 +386,7 @@ Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(Context); var plc = repository.FindFirst(x => x.plcinfo_name == client.PLCName); List<string> stationCodes = new List<string>() { "S01001001", "S01001002", "W01001001", "W01001002", "W01001003" }; + dt_stationinfo EmptyStation = null; string remark = ""; foreach (var stationCode in stationCodes) { @@ -406,66 +420,105 @@ agvtaskService.Update(task, true); station.location_state = LocationStateEnum.Busy.ToString(); stationinfoRepository.Update(station, true); - WriteDBLog.Success("鏇存柊绌烘墭闃熷垪浠诲姟", $"浠诲姟缂栧彿锛歿task.agv_tasknum}锛屾墭鐩樹俊鍙�:{PalletSignal},璐х墿淇″彿:{MaterialSignal}", "PCS"); + WriteDBLog.Success("鏇存柊琛ョ┖鎵橀槦鍒椾换鍔�", $"浠诲姟缂栧彿锛歿task.agv_tasknum}锛屾墭鐩樹俊鍙�:{PalletSignal},璐х墿淇″彿:{MaterialSignal}", "PCS"); continue; } - remark = "鏌ヨ绌烘墭鍙犵洏浣�"; - #region 绌烘墭鍙犵洏 - var EmptyStations = stationinfoRepository.Find(x => x.stationCode.Contains("DD") && x.quantity < 5 && x.enable).ToList(); - var EmptyStation = EmptyStations.Where(x => x.tray_type == station.tray_type && x.location_state == LocationStateEnum.Stroge.ToString()).FirstOrDefault(); - if (EmptyStation == null) - EmptyStation = EmptyStations.Where(x => x.location_state == LocationStateEnum.Empty.ToString() && x.quantity == 0).FirstOrDefault(); + #region 妫�娴嬩笂鏂欑殑绌烘墭鍙犵洏 + //remark = "鏌ヨ绌烘墭鍙犵洏浣�"; + //var EmptyStations = stationinfoRepository.Find(x => x.stationCode.Contains("DD") && x.enable).ToList(); + //if (stationCode.Contains("S")) + //{ + // //var EmptyStations = stationinfoRepository.Find(x => x.stationCode.Contains("DD") && x.quantity < 5 && x.enable).ToList(); + // EmptyStation = EmptyStations.Where(x => x.tray_type == station.tray_type && x.quantity < 5 && x.location_state == LocationStateEnum.Stroge.ToString()).FirstOrDefault(); + // if (EmptyStation == null) + // EmptyStation = EmptyStations.Where(x => x.location_state == LocationStateEnum.Empty.ToString() && x.quantity == 0).FirstOrDefault(); + // if (EmptyStation == null) + // { + // EmptyStation = EmptyStations.Where(x => x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity > 0).OrderByDescending(x => x.quantity).FirstOrDefault(); + // if (EmptyStation != null) EmptyTray.CreateEmptyTrayIn(stationinfoRepository, EmptyStation); + // } + //} + //EmptyStation = EmptyStations.Where(x => x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity == 5).FirstOrDefault(); + //if (EmptyStation != null) EmptyTray.CreateEmptyTrayIn(stationinfoRepository, EmptyStation); #endregion - remark = "鏌ユ壘搴撳唴绌烘墭浣�"; - if (EmptyStation == null)//鏌ユ壘搴撳唴绌烘墭鐩� - EmptyStation = GetStation.EmptyPalletStation(area); - - if (EmptyStation != null) + #region 鍒涘缓鍙栫┖鎵橀槦鍒椾换鍔� + dt_agvtask agvtask = new dt_agvtask() { - #region 鍚屼竴涓┖鎵樹綅鍙兘鍚屾椂鐢熸垚涓�涓┖鎵樹换鍔� - remark = "鏌ヨ绌烘墭浣嶆槸鍚﹀瓨鍦ㄤ换鍔�"; - if (agvtaskService.Find(x => x.agv_fromaddress == EmptyStation.stationCode || x.agv_toaddress == EmptyStation.stationCode).Any()) - return; - #endregion - dt_agvtask agvtask = new dt_agvtask() - { - agv_fromaddress = station.stationCode, - agv_id = Guid.NewGuid(), - agv_tasknum = IdenxManager.GetTaskNo("KH-", "WMS"), - agv_grade = station.stationCode.Contains("S0100100") ? 3 : 1, - agv_createtime = DateTime.Now, - agv_taskstate = "Create", - //agv_materielid = station.stationType, - agv_qty = 1, - StarQuantity = 0, - EndQuantity = EmptyStation.quantity, - agv_tasktype = "TaskType_EmptyPallet", - agv_toaddress = EmptyStation.stationCode, - agv_userid = "绯荤粺", - agv_TrayStatus = "EmptyTray",//station.tray_status, - agv_Traytype = station.tray_type, - }; - agvtaskService.Add(agvtask, true); - station.location_state = LocationStateEnum.Busy.ToString(); - stationinfoRepository.Update(station, true); - EmptyStation.location_state = LocationStateEnum.Busy.ToString(); - stationinfoRepository.Update(EmptyStation, true); - WriteDBLog.Success("鍒涘缓鑷姩鍙栫┖鎵樹换鍔�", $"浠诲姟缂栧彿锛歿agvtask.agv_tasknum}锛屾墭鐩樹俊鍙�:{PalletSignal},璐х墿淇″彿:{MaterialSignal}", "PCS"); - } + agv_fromaddress = station.stationCode, + agv_id = Guid.NewGuid(), + agv_tasknum = IdenxManager.GetTaskNo("KH-", "WMS"), + agv_grade = station.stationCode.Contains("S0100100") ? 3 : 1, + agv_createtime = DateTime.Now, + agv_taskstate = AGVTaskStateEnum.Queue.ToString(), + //agv_materielid = station.stationType, + agv_qty = 1, + StarQuantity = 0, + EndQuantity = 0,//EmptyStation.quantity, + agv_tasktype = AGVTaskTypeEnum.TaskType_EmptyPallet.ToString(), + agv_toaddress = "",//EmptyStation.stationCode, + agv_userid = "绯荤粺", + agv_TrayStatus = "EmptyTray",//station.tray_status, + agv_Traytype = station.tray_type, + }; + agvtaskService.Add(agvtask, true); + station.location_state = LocationStateEnum.Busy.ToString(); + stationinfoRepository.Update(station, true); + //EmptyStation.location_state = LocationStateEnum.Busy.ToString(); + //stationinfoRepository.Update(EmptyStation, true); + WriteDBLog.Success("鍒涘缓鑷姩鍙栫┖鎵橀槦鍒椾换鍔�", $"浠诲姟缂栧彿锛歿agvtask.agv_tasknum}锛屾墭鐩樹俊鍙�:{PalletSignal},璐х墿淇″彿:{MaterialSignal}", "PCS"); + #endregion + + #region 鍒涘缓鍙栫┖鎵樻柊寤轰换鍔� + //else + //{ + // remark = "鏌ユ壘搴撳唴绌烘墭浣�"; + // EmptyStation = GetStation.EmptyPalletStation(area); + // if (EmptyStation != null) + // if (agvtaskService.Find(x => x.agv_fromaddress == EmptyStation.stationCode || x.agv_toaddress == EmptyStation.stationCode).Any()) return; + //} + + + //if (EmptyStation != null) + //{ + // dt_agvtask agvtask = new dt_agvtask() + // { + // agv_fromaddress = station.stationCode, + // agv_id = Guid.NewGuid(), + // agv_tasknum = IdenxManager.GetTaskNo("KH-", "WMS"), + // agv_grade = station.stationCode.Contains("S0100100") ? 3 : 1, + // agv_createtime = DateTime.Now, + // agv_taskstate = AGVTaskStateEnum.Create.ToString(), + // //agv_materielid = station.stationType, + // agv_qty = 1, + // StarQuantity = 0, + // EndQuantity = EmptyStation.quantity, + // agv_tasktype = "TaskType_EmptyPallet", + // agv_toaddress = EmptyStation.stationCode, + // agv_userid = "绯荤粺", + // agv_TrayStatus = "EmptyTray",//station.tray_status, + // agv_Traytype = station.tray_type, + // }; + // agvtaskService.Add(agvtask, true); + // station.location_state = LocationStateEnum.Busy.ToString(); + // stationinfoRepository.Update(station, true); + // EmptyStation.location_state = LocationStateEnum.Busy.ToString(); + // stationinfoRepository.Update(EmptyStation, true); + // WriteDBLog.Success("鍒涘缓鑷姩鍙栫┖鎵樹换鍔�", $"浠诲姟缂栧彿锛歿agvtask.agv_tasknum}锛屾墭鐩樹俊鍙�:{PalletSignal},璐х墿淇″彿:{MaterialSignal}", "PCS"); + //} + #endregion } } catch (Exception ex) { - //WriteDBLog.Error("鍒涘缓鑷姩鍙栫┖鎵樹换鍔�", $"{stationCode}锛歿remark}閿欒淇℃伅锛歿ex.Message}", "PCS"); - WriteLog.Write_Log("鎶ラ敊鏃ュ織", "鍒涘缓鑷姩鍙栫┖鎵樹换鍔�", "閿欒淇℃伅锛�", $"{stationCode}锛歿remark}閿欒淇℃伅锛歿ex.Message}"); + WriteLog.Write_Log("鎶ラ敊鏃ュ織", "鍒涘缓鑷姩鍙栫┖鎵橀槦鍒椾换鍔�", "閿欒淇℃伅锛�", $"{stationCode}锛歿remark}閿欒淇℃伅锛歿ex.Message}"); } } } catch (Exception ex) { //WriteDBLog.Error("鍒涘缓鑷姩鍙栫┖鎵樹换鍔�", $"閿欒淇℃伅锛歿ex.Message}", "PCS"); - WriteLog.Write_Log("鎶ラ敊鏃ュ織", "鍒涘缓鑷姩鍙栫┖鎵樹换鍔�", "閿欒淇℃伅锛�", $"閿欒淇℃伅锛歿ex.Message}"); + WriteLog.Write_Log("鎶ラ敊鏃ュ織", "鍒涘缓鑷姩鍙栫┖鎵橀槦鍒椾换鍔�", "閿欒淇℃伅锛�", $"閿欒淇℃伅锛歿ex.Message}"); } } @@ -591,7 +644,7 @@ if (mes_Head != null) { mes_Head.finishNum = mes_Head.finishNum + 1; - //freeDB.DataBase.Update<dt_mes_head>().SetSource(mes_Head).UpdateColumns(x => new { x.finishNum }).ExecuteAffrows(); + if (mes_Head.finishNum == mes_Head.quantity) mes_Head.FinishTime = DateTime.Now; mes_HeadRepository.Update(mes_Head, true); } } -- Gitblit v1.9.3