public void DeleteShelfDef(DBConnection_EF conn, ShelfDef shelfdef) { try { conn.ShelfDef.Remove(shelfdef); conn.SaveChanges(); } catch (Exception ex) { logger.Warn(ex); throw; } }
public void insertShelfDef(DBConnection_EF conn, ShelfDef shelfdef) { try { conn.ShelfDef.Add(shelfdef); conn.SaveChanges(); } catch (Exception ex) { logger.Warn(ex); throw; } }
private bool IsBelongsZone(string shelfID, string zoneID) { try { ShelfDef shelfData = shelfDefBLL.loadShelfDataByID(shelfID); return(shelfData.ZoneID == zoneID); } catch (Exception ex) { logger.Error(ex, "Exception:"); emptyBoxLogger.Error(ex, "[IsBelongsZone]"); return(false); } }
private void GenerateNtbToShelf(AVEHICLE vh, List <CassetteData> cassetteDatas)//A0.01 { //1.找出所有CVport var all_cv_port = scApp.PortDefBLL.cache.loadCVPortDefs(); //2.嘗試找出在CVport 中目前是in mode 的所有port var all_cv_port_in_mode = all_cv_port.Where(port => IsGetReady(port)).ToList(); foreach (var in_mode_port in all_cv_port_in_mode) { //3. 若開頭為OHBLOOP的是連接LOOP的CV 而非NTB 故排除 var source_port_info = scApp.TransferService.GetPLC_PortData(in_mode_port.PLCPortID); if (in_mode_port.PLCPortID.StartsWith("B7_OHBLOOP")) { continue; } else { //找一份目前儲位的列表 if (shelfDefs == null || shelfDefs.Count == 0) { shelfDefs = scApp.ShelfDefBLL.LoadEnableShelf(); } //如果取完還是空的 就跳出去 if (shelfDefs == null || shelfDefs.Count == 0) { return; } //選出要放的shelf位置 ShelfDef target_shelf_def = FindRandomEmptyShelf(cassetteDatas); bool isSuccess = true; string box_id = SCUtility.isEmpty(source_port_info.BoxID) ? "BOX01" : SCUtility.Trim(source_port_info.BoxID); string cst_id = source_port_info.CassetteID.ToUpper().Contains("NO") ? "" : SCUtility.Trim(source_port_info.CassetteID); //從該選取的in mode plcPort 搬到要放置的shelf isSuccess &= scApp.CMDBLL.doCreatTransferCommand(vh.VEHICLE_ID, "", cst_id, E_CMD_TYPE.LoadUnload, in_mode_port.PLCPortID, target_shelf_def.ShelfID, 0, 0, box_id, "", in_mode_port.ADR_ID, target_shelf_def.ADR_ID); shelfDefs.Remove(target_shelf_def); } } }
public bool UpdateEnableByID(string shelfid, bool enable) { bool isSuccsess = true; try { using (DBConnection_EF con = DBConnection_EF.GetUContext()) { ShelfDef shelf = shelfdefDao.LoadShelfByID(con, shelfid); shelf.Enable = enable == true ? "Y" : "N"; shelfdefDao.UpdateShelfDef(con); } } catch (Exception ex) { logger.Error(ex, "Exception"); isSuccsess = false; } return(isSuccsess); }
public int GetDistance(string shelfID, string targetAddress) { ShelfDef targetShelf = loadShelfDataByID(shelfID); return(scApp.GuideBLL.GetDistance(targetShelf.ADR_ID, targetAddress)); }
private void ShelfTest() { List <AVEHICLE> vhs = scApp.VehicleBLL.cache.loadVhs(); foreach (AVEHICLE vh in vhs) { if (vh.isTcpIpConnect && vh.MODE_STATUS == ProtocolFormat.OHTMessage.VHModeStatus.AutoRemote && vh.ACT_STATUS == ProtocolFormat.OHTMessage.VHActionStatus.NoCommand && !SCUtility.isEmpty(vh.CUR_ADR_ID) && !scApp.CMDBLL.isCMD_OHTCExcuteByVh(vh.VEHICLE_ID)) { List <CassetteData> cassetteDatas = scApp.CassetteDataBLL.loadCassetteData(); if (cassetteDatas == null || cassetteDatas.Count() == 0) { return; } //找一份目前儲位的列表 if (shelfDefs == null || shelfDefs.Count == 0) { shelfDefs = scApp.ShelfDefBLL.LoadEnableShelf(); } //如果取完還是空的 就跳出去 if (shelfDefs == null || shelfDefs.Count == 0) { return; } //取得目前當前在線內的Carrier //找出在儲位中的Cassette cassetteDatas = cassetteDatas.Where(cst => cst.Carrier_LOC.StartsWith("10") || cst.Carrier_LOC.StartsWith("11") || cst.Carrier_LOC.StartsWith("21") || cst.Carrier_LOC.StartsWith("20")). ToList(); List <string> current_cst_at_shelf_id = cassetteDatas. Select(cst => SCUtility.Trim(cst.Carrier_LOC, true)). ToList(); //刪除目前cst所在的儲位,讓他排除在Cycle Run的列表中 foreach (var shelf in shelfDefs.ToList()) { if (current_cst_at_shelf_id.Contains(SCUtility.Trim(shelf.ShelfID))) { shelfDefs.Remove(shelf); } } //隨機找出一個要放置的shelf CassetteData process_cst = cassetteDatas[0]; int task_RandomIndex = rnd_Index.Next(shelfDefs.Count - 1); ShelfDef target_shelf_def = shelfDefs[task_RandomIndex]; scApp.MapBLL.getAddressID(process_cst.Carrier_LOC, out string from_adr); bool isSuccess = true; isSuccess &= scApp.CMDBLL.doCreatTransferCommand(vh.VEHICLE_ID, "", process_cst.CSTID.Trim(), E_CMD_TYPE.LoadUnload, process_cst.Carrier_LOC, target_shelf_def.ShelfID, 0, 0, process_cst.BOXID.Trim(), process_cst.LotID, from_adr, target_shelf_def.ADR_ID); shelfDefs.Remove(target_shelf_def); } } }