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);
                }
            }
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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);
                }
            }
        }