代码管理/PCS/WCS_Server/WIDESEA_Comm/StateEnum/LocationStateEnum.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
代码管理/PCS/WCS_Server/WIDESEA_WCS/Common/Gantry.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
代码管理/PCS/WCS_Server/WIDESEA_WCS/Jobs/Task/AutoTaskJob.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
代码管理/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/ReplaceTray.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
代码管理/WMS/WMS_Server/WIDESEA_Comm/StateEnum/LocationStateEnum.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
代码管理/WMS/WMS_Server/WIDESEA_WMS/Common/AGVTask/AGVServer.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
代码管理/WMS/WMS_Server/WIDESEA_WMS/Common/QueueTask/ReplaceTray.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
代码管理/WMS/WMS_Server/WIDESEA_WMS/Services/system/Partial/dt_stationinfoService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
代码管理/WMS/WMS_Server/WIDESEA_WebApi/Controllers/JobQueueTask.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
代码管理/WMS/WMS_Server/WIDESEA_WebApi/Controllers/JobSendTask.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
´úÂë¹ÜÀí/PCS/WCS_Server/WIDESEA_Comm/StateEnum/LocationStateEnum.cs
@@ -35,6 +35,10 @@ /// <summary> /// æ¡æ¶ä¸æ /// </summary> Load Load, /// <summary> /// æç忢 /// </summary> Trayswitching } } ´úÂë¹ÜÀí/PCS/WCS_Server/WIDESEA_WCS/Common/Gantry.cs
@@ -590,8 +590,6 @@ WriteLog.Write_Log(name + "ç³è¯·æ¾æå¼å¸¸", "车轮SNå·ä¸ºç©º", "", $"è¯»åæ¡æ¶ä¿¡æ¯ï¼\n车轮SNå·ï¼{Wheel_id}为空"); continue; } var Work = workinfoRepository.Find(x => x.SN == Wheel_id && x.processCode == "17").FirstOrDefault(); if (Work == null) { @@ -600,22 +598,7 @@ WriteLog.Write_Log(name + "ç³è¯·æ¾æå¼å¸¸", Wheel_id, "æ¥è¯¢æºå 工工å", $"è¯»åæ¡æ¶ä¿¡æ¯ï¼\n车轮SNå·ï¼{Wheel_id}æªæ¥è¯¢å°å·¥åä¿¡æ¯\nåå ¥æ¡æ¶ä¿¡æ¯ï¼\næ¯å¦å è®¸ä¸æï¼{false}"); continue; } #endregion #region MyRegion //var currentAreaNr = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "W_Are00aNr").First(), client); //var currentAreaCode = PipelineJob.area_code(name); //æ ¹æ®ä¸æå£åå åè·ååºå代ç //var currentStation = stationinfoRepository.FindFirst(x => x.area == currentAreaCode && x.stationCode.Substring(x.stationCode.Length - 1, 1) == currentAreaNr.ToString()); //if (!currentStation.enable || currentStation.location_state == LocationStateEnum.Empty.ToString()) // client.WriteByOrder("W_Enabl_Load", false, name);//ä¿¡å·ä¸ºfalseæ¡æ¶åæ¢è¿å ¥ #endregion var wheel = Pipeline.QueryMateriel(Work.drawingNo); var wheel1 = Pipeline.QueryMateriel1(Work.drawingNo); @@ -639,6 +622,21 @@ agvtask(stationinfoRepository, station, Work, "TaskType_Inbound"); } #endregion #region æçç±»åä¸ä¸è´éæ´æ¢æç foreach (var Stationinfo in Stations) { if (Stationinfo.tray_type != "LargeTray" && (wheel == null ? wheel1.e : wheel.e) > 1100) { client.WriteByOrder("W_Enabl_Load", false, name);//ä¿¡å·ä¸ºfalseæ¡æ¶åæ¢è¿å ¥ Stationinfo.location_state = LocationStateEnum.Trayswitching.ToString(); Stationinfo.remark = "æçç±»åä¸ä¸è´éæ´æ¢æç"; stationinfoRepository.Update(Stationinfo, x => new { x.location_state }, true); } } #endregion Stations = stationinfoRepository.Find(x => x.area == Pipeline.area_code(name)).OrderBy(x => x.lastUpdateTime).ToList(); var PartStatus = DBExtension.Read(details.Where(x => x.plcdetail_name == "R_PartStatus").First(), client);//1:ok;2:nok @@ -708,18 +706,6 @@ agvtask(stationinfoRepository, stationinfo, Work, name == "3åå 䏿åº" ? "TaskType_OutsourceInbound" : "TaskType_Inbound"); } #endregion #region æçç±»åä¸ä¸è´éæ´æ¢æç if (Stationinfo.tray_type != "LargeTray" && (wheel == null ? wheel1.e : wheel.e) > 1100) { client.WriteByOrder("W_Enabl_Load", false, name);//ä¿¡å·ä¸ºfalseæ¡æ¶åæ¢è¿å ¥ Stationinfo.location_state = LocationStateEnum.Abnormal.ToString(); Stationinfo.tray_type = Stationinfo.tray_type == "SmallTray" ? "SmallTray/LargeTray" : "LargeTray/SmallTray"; Stationinfo.remark = "æçç±»åä¸ä¸è´éæ´æ¢æç"; stationinfoRepository.Update(Stationinfo, true); continue; } #endregion var Pipelinedetails = plcRepository.Find(x => x.plcdetail_iotype == Pipelineplc.plcinfo_iotyep && x.plcdetail_number == Stationinfo.stationCode).ToList(); @@ -831,17 +817,6 @@ } if (Stationinfo != null) { #region æçç±»åä¸ä¸è´éæ´æ¢æç //if (Stationinfo.tray_type != ((wheel == null ? wheel1.e : wheel.e) < 1100 ? "SmallTray" : "LargeTray")) if (Stationinfo.tray_type != "LargeTray" && (wheel == null ? wheel1.e : wheel.e) > 1100) { Stationinfo.location_state = LocationStateEnum.Abnormal.ToString(); Stationinfo.tray_type = Stationinfo.tray_type == "SmallTray" ? "SmallTray/LargeTray" : "LargeTray/SmallTray"; Stationinfo.remark = "æçç±»åä¸ä¸è´éæ´æ¢æç"; stationinfoRepository.Update(Stationinfo, true); continue; } #endregion 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(), Pipeline_client);//读åæçä¿¡å·:1:æ,2æ var MaterialSignal = (Int16)DBExtension.Read(Pipelinedetails.Where(x => x.plcdetail_name == "R_MaterialSignal").First(), Pipeline_client);//读åè´§ç©ä¿¡å·:1:æ,2æ ´úÂë¹ÜÀí/PCS/WCS_Server/WIDESEA_WCS/Jobs/Task/AutoTaskJob.cs
@@ -30,10 +30,9 @@ private void DoAction(IJobExecutionContext context) { //EmptyTray.EmptyTrayIn();//空æå çå ¥åº StationTask.CreateTask();//å ¥åº OutboundTask.CreateOutboundTask();//åºåº ReplaceTray.ReplaceTrayTask();//æ´æ¢æç //ReplaceTray.ReplaceTrayTask();//æ´æ¢æç RestockHCJ.HCJGetBarcode();//æ´æ°éå EmptyTrayTask.CreateEmptyTrayTask();//å建补空æ AutoUpdateWork.FinishMesWork();//å¤çå·¥å ´úÂë¹ÜÀí/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/ReplaceTray.cs
@@ -58,7 +58,7 @@ VOLContext context = new VOLContext(); Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(context); Idt_agvtaskRepository agvtaskRepository = new dt_agvtaskRepository(context);//"Abnormal" var stations = stationinfoRepository.Find(x => (x.stationCode.Contains("X") || x.stationCode.Contains("W01001004") || x.stationCode.Contains("W01001005")) && x.location_state == LocationStateEnum.Abnormal.ToString() && (x.tray_type == "SmallTray/LargeTray" || x.tray_type == "LargeTray/SmallTray") && x.enable).ToList(); var stations = stationinfoRepository.Find(x => (x.stationCode.Contains("X") || x.stationCode.Contains("W01001004") || x.stationCode.Contains("W01001005")) && x.location_state == LocationStateEnum.Trayswitching.ToString() && x.enable).ToList(); foreach (var station in stations) { if (agvtaskRepository.Find(x => x.agv_fromaddress == station.stationCode || x.agv_toaddress == station.stationCode).Any()) continue; ´úÂë¹ÜÀí/WMS/WMS_Server/WIDESEA_Comm/StateEnum/LocationStateEnum.cs
@@ -31,6 +31,14 @@ /// <summary> /// å¼å¸¸ /// </summary> Abnormal Abnormal, /// <summary> /// æ¡æ¶ä¸æ /// </summary> Load, /// <summary> /// æç忢 /// </summary> Trayswitching } } ´úÂë¹ÜÀí/WMS/WMS_Server/WIDESEA_WMS/Common/AGVTask/AGVServer.cs
@@ -25,7 +25,6 @@ /// </summary> public static void SendAgvTask() { WriteLog.Write_Log("èªå¨ä¸åä»»å¡", "SendAgvTask", ""); Respone respone = new Respone(); RequestTask requestTask = new RequestTask(); string postJson = string.Empty; ´úÂë¹ÜÀí/WMS/WMS_Server/WIDESEA_WMS/Common/QueueTask/ReplaceTray.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,143 @@ using 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.LogInfo; using WIDESEA_Comm.TaskNo; using WIDESEA_Common; using WIDESEA_Core.BaseProvider; using WIDESEA_Core.EFDbContext; using WIDESEA_Core.ManageUser; using WIDESEA_Entity.DomainModels; using WIDESEA_WCS.IRepositories; using WIDESEA_WCS.Repositories; using WIDESEA_WMS.IRepositories; using WIDESEA_WMS.Repositories; using static FreeSql.Internal.GlobalFilter; using static System.Collections.Specialized.BitVector32; namespace WIDESEA_WMS.Common { public class QueueTask { /// <summary> /// åå»ºæ´æ¢æçä»»å¡,éä¿®æ¹ /// </summary> public static void ReplaceTrayTask() { try { VOLContext context = new VOLContext(); Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(context); Idt_agvtaskRepository agvtaskRepository = new dt_agvtaskRepository(context); IVV_Mes_WorkinfoRepository workinfoRepository = new VV_Mes_WorkinfoRepository(context); var stations = stationinfoRepository.Find(x => (x.stationCode.Contains("X") || x.stationCode.Contains("W01001004") || x.stationCode.Contains("W01001005")) && x.location_state == LocationStateEnum.Trayswitching.ToString() && x.enable).ToList(); foreach (var station in stations) { var task = agvtaskRepository.Find(x => x.agv_toaddress == station.stationCode).FirstOrDefault(); if (task != null) { if (task.agv_taskstate != AGVTaskStateEnum.Queue.ToString()) continue; task.agv_Traytype = station.tray_type == TrayTypeEnum.SmallTray.ToString() ? TrayTypeEnum.LargeTray.ToString() : TrayTypeEnum.SmallTray.ToString(); agvtaskRepository.Update(task, x => new { x.agv_Traytype }, true); } else if (!agvtaskRepository.Find(x => x.agv_fromaddress == station.stationCode).Any()) { #region 为空æå¹¶ä¸æ°é为0,å建å空æä»»å¡ if (station.tray_status == TrayStateEnum.EmptyTray.ToString() && station.quantity == 0) { 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 = AGVTaskStateEnum.Queue.ToString(), agv_qty = 1, StarQuantity = 0, EndQuantity = 0, agv_tasktype = AGVTaskTypeEnum.TaskType_EmptyPallet.ToString(), agv_toaddress = "", agv_userid = "WMS", agv_TrayStatus = station.tray_status, agv_Traytype = station.tray_type }; agvtaskRepository.Add(agvtask, true); station.location_state = LocationStateEnum.Busy.ToString(); } #endregion #region åå»ºå ¥åºä»»å¡ else if (station.location_state == LocationStateEnum.Stroge.ToString() && station.quantity > 0) { var Work = workinfoRepository.Find(x => x.workOrder == station.Number && x.processCode == "17").FirstOrDefault(); if (Work == null) throw new Exception($"æªæ¾å°è´§ä½{station.stationCode}çæºå 工工åä¿¡æ¯ï¼"); 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 = AGVTaskStateEnum.Queue.ToString(), agv_materielid = station.stationType, agv_qty = station.quantity, agv_tasktype = station.stationCode.Contains("3") ? AGVTaskTypeEnum.TaskType_OutsourceInbound.ToString() : AGVTaskTypeEnum.TaskType_Inbound.ToString(), agv_toaddress = "", agv_userid = "WMS", bindSN = station.bindSN, agv_worktype = Convert.ToInt32(Work.processCode), agv_materbarcode = Work.materialCode, agv_Traytype = station.tray_type, jobID = station.Number, agv_TrayStatus = station.tray_status }; agvtaskRepository.Add(agvtask, true); station.location_state = LocationStateEnum.InBusy.ToString(); } #endregion } station.tray_type = station.tray_type == TrayTypeEnum.SmallTray.ToString() ? TrayTypeEnum.LargeTray.ToString() : TrayTypeEnum.SmallTray.ToString(); stationinfoRepository.Update(station, x => new { x.location_state, x.tray_type }, true); } } catch (Exception ex) { WriteDBLog.Error("åå»ºæ´æ¢ç©ºçä»»å¡", $"é误信æ¯ï¼{ex.Message}", "PCS"); } } /// <summary> /// åå»ºå®æ´ç补空æä»»å¡ /// </summary> /// <param name="agvtask"></param> public static void CreatePartQueue(Idt_agvtaskRepository agvtaskRepository, dt_agvtask agvtask, string type = "") { //if (agvtask.agv_fromaddress.Contains("X") || agvtask.agv_fromaddress.Contains("W01001004") || agvtask.agv_fromaddress.Contains("W01001005")) //{ dt_agvtask taskPart = new dt_agvtask() { agv_fromaddress = "", agv_id = Guid.NewGuid(), agv_tasknum = agvtask.agv_tasknum + "_1", agv_grade = 1, agv_createtime = DateTime.Now, agv_taskstate = "Queue", agv_qty = 1, agv_tasktype = "TaskType_EmptyPallet", agv_toaddress = agvtask.agv_fromaddress, agv_userid = "ç³»ç»", agv_TrayStatus = agvtask.agv_TrayStatus, agv_Traytype = type, }; agvtaskRepository.Add(taskPart, true); WriteDBLog.Success("åå»ºæ´æ¢ç©ºçä»»å¡", $"ä»»å¡ç¼å·ï¼{taskPart.agv_tasknum}", "PCS"); //} } } } ´úÂë¹ÜÀí/WMS/WMS_Server/WIDESEA_WMS/Services/system/Partial/dt_stationinfoService.cs
@@ -111,20 +111,25 @@ VOLContext context = new VOLContext(); Idt_agvtaskRepository agvtaskRepository = new dt_agvtaskRepository(context); IVV_Mes_WorkinfoRepository workinfoRepository = new VV_Mes_WorkinfoRepository(context); string completor = UserContext.Current.UserName; foreach (var Key in saveModel.DelKeys) { try { var station = repository.Find(x => x.id.ToString() == Key.ToString()).FirstOrDefault(); if (!station.stationCode.Contains("X")) throw new Exception($"æ {station.stationCode}ä½¿ç¨æéï¼"); if (!station.stationCode.Contains("X") && !station.stationCode.Contains("W01001004") && !station.stationCode.Contains("W01001005")) throw new Exception($"æ {station.stationCode}ä½¿ç¨æéï¼"); if (!station.enable) throw new Exception($"{station.stationCode}æªå¯ç¨ï¼"); if (station.location_state == LocationStateEnum.Abnormal.ToString()) throw new Exception($"{station.stationCode}ç¶æå¼å¸¸ï¼"); if (station.location_state == LocationStateEnum.Empty.ToString()) throw new Exception($"{station.stationCode}ç¶æä¸ºç©ºï¼"); if (station.remark == "æ¡æ¶ä¸æ") throw new Exception($"{station.stationCode}æ¡æ¶æ£å¨ä¸æï¼"); if (agvtaskRepository.Find(x => x.agv_toaddress == station.stationCode).Any()) throw new Exception($"{station.stationCode}åå¨ä»»å¡ï¼"); if (!agvtaskRepository.Find(x => x.agv_fromaddress == station.stationCode).Any()) var task = agvtaskRepository.Find(x => x.agv_toaddress == station.stationCode).FirstOrDefault(); if (task != null) { if (task.agv_taskstate != AGVTaskStateEnum.Queue.ToString()) throw new Exception($"{station.stationCode}åå¨ä»»å¡ï¼"); task.agv_Traytype = station.tray_type == TrayTypeEnum.SmallTray.ToString() ? TrayTypeEnum.LargeTray.ToString() : TrayTypeEnum.SmallTray.ToString(); agvtaskRepository.Update(task, x => new { x.agv_Traytype }, true); } else if (!agvtaskRepository.Find(x => x.agv_fromaddress == station.stationCode).Any()) { #region 为空æå¹¶ä¸æ°é为0,å建å空æä»»å¡ if (station.tray_status == TrayStateEnum.EmptyTray.ToString() && station.quantity == 0) ´úÂë¹ÜÀí/WMS/WMS_Server/WIDESEA_WebApi/Controllers/JobQueueTask.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,14 @@ using Pomelo.AspNetCore.TimedJob; using WIDESEA_WMS.Common; namespace WIDESEA_WebApi.Controllers { public class JobQueueTask : Job { [Invoke(Begin = "2024-01-01 00:00", Interval = 1000 * 2, /*IsEnabled = true,*/ SkipWhileExecuting = true)] public void QueueTaskTiem() { QueueTask.ReplaceTrayTask(); } } } ´úÂë¹ÜÀí/WMS/WMS_Server/WIDESEA_WebApi/Controllers/JobSendTask.cs
ÎļþÃû´Ó ´úÂë¹ÜÀí/WMS/WMS_Server/WIDESEA_WebApi/Controllers/JobTask.cs ÐÞ¸Ä @@ -7,10 +7,10 @@ namespace WIDESEA_WebApi.Controllers { public class JobTask : Job public class JobSendTask : Job { [Invoke(Begin = "2024-01-01 00:00", Interval = 1000 * 5, /*IsEnabled = true,*/ SkipWhileExecuting = true)] public void TaskTime() public void SendTaskTime() { AGVServer.SendFromaddress(); AGVServer.SendToaddress();