public static void UpdateJobMove(string JobId) { try { Form form = Application.OpenForms["FormRunningScreen"]; CheckBox tb; if (form == null) { return; } tb = form.Controls.Find("use_loadport01_ck", true).FirstOrDefault() as CheckBox; if (tb == null) { return; } if (tb.InvokeRequired) { UpdatePresent ph = new UpdatePresent(UpdateJobMove); tb.BeginInvoke(ph, JobId); } else { Job Job = JobManagement.Get(JobId); if (Job != null) { Node LastNode = NodeManagement.Get(Job.LastNode); Node CurrentNode = NodeManagement.Get(Job.Position); if (LastNode != null) { Label present = form.Controls.Find(Job.LastNode + "_Slot_" + Job.LastSlot, true).FirstOrDefault() as Label; if (present != null) { present.Text = "No wafer"; present.BackColor = Color.DimGray; present.ForeColor = Color.White; } } if (CurrentNode != null) { Label present = form.Controls.Find(Job.Position + "_Slot_" + Job.Slot, true).FirstOrDefault() as Label; if (present != null) { present.Text = Job.Host_Job_Id; present.BackColor = Color.Green; present.ForeColor = Color.White; } } } } } catch { logger.Error("UpdateJobMove: Update fail."); } }
private void FormWafer_Layout(object sender, LayoutEventArgs e) { WaferList_tv.Nodes.Clear(); Position_cb.Items.Clear(); foreach (Node node in NodeManagement.GetList()) { if (!node.Type.Equals("OCR")) { TreeNode each = new TreeNode(node.Name); Position_cb.Items.Add(node.Name); List <Job> jobList = node.JobList.Values.ToList(); jobList.Sort((x, y) => { return(Convert.ToInt16(x.Slot).CompareTo(Convert.ToInt16(y.Slot))); }); foreach (Job j in jobList) { if (JobManagement.Get(j.Job_Id) != null) { each.Nodes.Add(j.Job_Id, j.Job_Id + "(Slot-" + j.Slot + ")"); } } WaferList_tv.Nodes.Add(each); } } }
private void UnAssignPort(object sender, EventArgs e) { if ((CurrentSelected as DataGridView).SelectedRows.Count == 0) { MessageBox.Show("請選擇來源Slot"); } else if ((CurrentSelected as DataGridView).SelectedRows.Count == 1) { string waferId = (CurrentSelected as DataGridView).SelectedRows[0].Cells["Job_Id"].Value.ToString(); string OrgDest = (CurrentSelected as DataGridView).SelectedRows[0].Cells["Destination"].Value.ToString(); string OrgDestSlot = (CurrentSelected as DataGridView).SelectedRows[0].Cells["DestinationSlot"].Value.ToString(); Job wafer = JobManagement.Get(waferId); if (wafer != null) { wafer.UnAssignPort(); wafer.NeedProcess = false; //wafer.Position = PortName; if (!OrgDest.Equals("")) { NodeManagement.Get(OrgDest).RemoveReserve(OrgDestSlot); } (CurrentSelected as DataGridView).Refresh(); } else { MessageBox.Show("找不到此Wafer資料:" + wafer.Job_Id); } } else if ((CurrentSelected as DataGridView).SelectedRows.Count > 1) { foreach (DataGridViewRow each in (CurrentSelected as DataGridView).SelectedRows) { string waferId = each.Cells["Job_Id"].Value.ToString(); string OrgDest = each.Cells["Destination"].Value.ToString(); string OrgDestSlot = each.Cells["DestinationSlot"].Value.ToString(); Job wafer = JobManagement.Get(waferId); if (wafer != null) { wafer.UnAssignPort(); wafer.NeedProcess = false; if (!OrgDest.Equals("")) { NodeManagement.Get(OrgDest).RemoveReserve(OrgDestSlot); } } } (CurrentSelected as DataGridView).Refresh(); MonitoringUpdate.UpdateNodesJob((CurrentSelected as DataGridView).Name.Replace("Assign_Gv", "")); } }
private void btnSave_Click(object sender, EventArgs e) { Job job = JobManagement.Get(WaferID_tb.Text); if (job != null) { //job.Job_Id = WaferID_tb.Text; job.NeedProcess = NeedProcess_ck.Checked; job.ProcessFlag = ProcessFlag_ck.Checked; job.AlignerFlag = AlignFlag_ck.Checked; job.OCRFlag = OCRFlag_ck.Checked; Node NewPosition = NodeManagement.Get(Position_cb.Text); if (NewPosition != null) { Job tmp; if (!job.Position.ToUpper().Equals(Position_cb.Text) || !job.Slot.Equals(Slot_cb.Text)) { if (NewPosition.JobList.TryAdd(Slot_cb.Text, job)) { Node OrgPosition = NodeManagement.Get(job.Position); if (OrgPosition != null) { OrgPosition.JobList.TryRemove(job.Slot, out tmp); job.LastNode = job.Position; job.LastSlot = job.Slot; job.Position = Position_cb.Text; job.Slot = Slot_cb.Text; MonitoringUpdate.UpdateJobMove(job.Job_Id); } } else { MessageBox.Show("Wafer is Exist in new Position"); Position_cb.Text = job.Position; Slot_cb.Text = job.Slot; } } } job.Host_Job_Id = OCRResult_tb.Text; MessageBox.Show("成功"); } }
private void WaferList_tv_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { Job job = JobManagement.Get(e.Node.Name); if (job != null) { WaferID_tb.Text = job.Job_Id; NeedProcess_ck.Checked = job.NeedProcess; ProcessFlag_ck.Checked = job.ProcessFlag; AlignFlag_ck.Checked = job.AlignerFlag; OCRFlag_ck.Checked = job.OCRFlag; Position_cb.Text = job.Position.ToUpper(); Slot_cb.Text = job.Slot; OCRResult_tb.Text = job.Host_Job_Id; List <Job> tmp = new List <Job>(); tmp.Add(job); WaferInfo_gv.DataSource = tmp; } }
private void btnDelete_Click(object sender, EventArgs e) { Job job = JobManagement.Get(WaferID_tb.Text); if (job != null) { Node OrgPosition = NodeManagement.Get(job.Position); Job tmp; OrgPosition.JobList.TryRemove(job.Slot, out tmp); job.LastNode = job.Position; job.LastSlot = job.Slot; job.Position = ""; job.Slot = ""; MonitoringUpdate.UpdateJobMove(job.Job_Id); JobManagement.Remove(tmp.Job_Id); ClearForm(); MessageBox.Show("成功"); } }
private void Assign_Gv_MouseClick(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { ContextMenu m = new ContextMenu(); string PortName = (sender as DataGridView).Name.Replace("Assign_Gv", ""); //if (NodeManagement.Get(PortName).Mode.Equals("LD")) // { if (!NodeManagement.Get(PortName).IsMapping) { return; } CurrentSelected = sender; foreach (Node eachPort in NodeManagement.GetLoadPortList()) { if (!eachPort.IsMapping) { continue; } List <MenuItem> tmpAry = new List <MenuItem>(); bool findFirst = false; for (int i = 1; i <= 25; i++) { MenuItem tmp = new MenuItem(); if (eachPort.Name.Equals(PortName.ToUpper())) { tmp = new MenuItem(eachPort.Name + "-" + i.ToString(), AssignPort); if (!findFirst) { List <DataGridViewRow> JobList = new List <DataGridViewRow>(); foreach (DataGridViewRow each in (CurrentSelected as DataGridView).SelectedRows) { JobList.Add(each); } JobList.Sort((x, y) => { return(-x.Index.CompareTo(y.Index)); }); foreach (DataGridViewRow each in JobList) { string waferId = each.Cells["Job_Id"].Value.ToString(); Job wafer = JobManagement.Get(waferId); if (wafer == null) { MessageBox.Show("請選擇Wafer"); return; } if (!eachPort.ReserveList.ContainsKey(i.ToString())) { if (wafer.Slot.Equals(i.ToString())) { tmp.Enabled = true; findFirst = true; break; } else { tmp.Enabled = false; } } else { tmp.Enabled = false; } } } else { tmp.Enabled = false; } } else { if (!eachPort.ReserveList.ContainsKey(i.ToString())) { if (eachPort.JobList.ContainsKey(i.ToString())) { if (eachPort.JobList[i.ToString()].MapFlag) { tmp = new MenuItem(eachPort.Name + "-" + i.ToString(), AssignPort); tmp.Enabled = false; } else { tmp = new MenuItem(eachPort.Name + "-" + i.ToString(), AssignPort); } } else { tmp = new MenuItem(eachPort.Name + "-" + i.ToString(), AssignPort); } } else { tmp = new MenuItem(eachPort.Name + "-" + i.ToString(), AssignPort); tmp.Enabled = false; } } tmpAry.Add(tmp); } m.MenuItems.Add(eachPort.Name, tmpAry.ToArray()); } m.MenuItems.Add(new MenuItem("取消", UnAssignPort)); //} m.Show((DataGridView)sender, new Point(e.X, e.Y)); } }
private void AssignPort(object sender, EventArgs e) { string PortName = (sender as MenuItem).Text.Split('-')[0]; string LDPort = (CurrentSelected as DataGridView).Name.Replace("Assign_Gv", ""); Node UD = NodeManagement.Get(PortName); Node LD = NodeManagement.Get(LDPort); UD.Mode = "UD"; LD.Mode = "LD"; LD.DestPort = UD.Name; WaferAssignUpdate.UpdateLoadPortMode(UD.Name, UD.Mode); WaferAssignUpdate.UpdateLoadPortMode(LD.Name, LD.Mode); string Slot = (sender as MenuItem).Text.Split('-')[1]; if ((CurrentSelected as DataGridView).SelectedRows.Count == 0) { MessageBox.Show("請選擇來源Slot"); } else if ((CurrentSelected as DataGridView).SelectedRows.Count == 1) { string waferId = (CurrentSelected as DataGridView).SelectedRows[0].Cells["Job_Id"].Value.ToString(); string OrgDest = (CurrentSelected as DataGridView).SelectedRows[0].Cells["Destination"].Value.ToString(); string OrgDestSlot = (CurrentSelected as DataGridView).SelectedRows[0].Cells["DestinationSlot"].Value.ToString(); Job UDSlot = UD.GetJob(Slot); if (UDSlot == null) { MessageBox.Show(PortName + "沒有FOUP或是尚未進行Mapping"); return; } if (UDSlot.MapFlag == false || LD.Name.Equals(UD.Name)) { Job wafer = JobManagement.Get(waferId); if (wafer != null) { wafer.AssignPort(PortName, Slot); wafer.NeedProcess = true; wafer.ProcessFlag = false; //wafer.Position = PortName; if (!OrgDest.Equals("")) { NodeManagement.Get(OrgDest).RemoveReserve(OrgDestSlot); } NodeManagement.Get(PortName).AddReserve(Slot, wafer); (CurrentSelected as DataGridView).Refresh(); MonitoringUpdate.UpdateNodesJob((CurrentSelected as DataGridView).Name.Replace("Assign_Gv", "")); } else { MessageBox.Show("找不到此Wafer資料"); } } } else if ((CurrentSelected as DataGridView).SelectedRows.Count > 1) { int StartSlot = Convert.ToInt32(Slot); List <DataGridViewRow> tmp = new List <DataGridViewRow>(); foreach (DataGridViewRow each in (CurrentSelected as DataGridView).SelectedRows) { tmp.Add(each); } tmp.Sort((x, y) => { return(-x.Index.CompareTo(y.Index)); }); foreach (DataGridViewRow each in tmp) { string waferId = each.Cells["Job_Id"].Value.ToString(); string OrgDest = each.Cells["Destination"].Value.ToString(); string OrgDestSlot = each.Cells["DestinationSlot"].Value.ToString(); Job wafer = JobManagement.Get(waferId); if (wafer != null) { while (true) { if (NodeManagement.Get(PortName).GetJob(StartSlot.ToString()).MapFlag == false || LD.Name.Equals(UD.Name)) { wafer.AssignPort(PortName, StartSlot.ToString()); //wafer.Position = PortName; wafer.NeedProcess = true; wafer.ProcessFlag = false; if (!OrgDest.Equals("")) { NodeManagement.Get(OrgDest).RemoveReserve(OrgDestSlot); } NodeManagement.Get(PortName).AddReserve(StartSlot.ToString(), wafer); break; } else { StartSlot++; if (StartSlot > 25) { break; } } } StartSlot++; if (StartSlot > 25) { break; } } } (CurrentSelected as DataGridView).Refresh(); MonitoringUpdate.UpdateNodesJob((CurrentSelected as DataGridView).Name.Replace("Assign_Gv", "")); } }