コード例 #1
0
ファイル: VtwinInspection.cs プロジェクト: deeze307/IA
        public void HandlePendientInspection()
        {
            List <Pendiente> pendList = Pendiente.Download(aoiConfig.machineNameKey);

            aoiLog.info("Verificando inspecciones pendientes. Total: " + pendList.Count);
            string queryy = OracleQuery.ListLastInspections(0, "", null);

            if (pendList.Count > 0)
            {
                int count = 0;
                aoiWorker.SetProgressTotal(pendList.Count);

                foreach (Pendiente pend in pendList)
                {
                    // Busco ultimo estado del barcode en ORACLE.
                    string    query     = OracleQuery.ListLastInspections(0, "", pend);
                    DataTable dt        = oracle.Query(query);
                    int       totalRows = dt.Rows.Count;

                    if (totalRows > 0)
                    {
                        count++;

                        DataRow oracleLastRow = dt.Rows[totalRows - 1];
                        int     oracle_id     = int.Parse(oracleLastRow["TEST_MACHINE_ID"].ToString());
                        Machine inspMachine   = Machine.list.Single(obj => obj.tipo == aoiConfig.machineNameKey && obj.oracle_id == oracle_id);

                        if (Config.isByPassMode(inspMachine))
                        {
                            // SKIP MACHINE
                            inspMachine.LogBroadcast("warning",
                                                     string.Format("{0} {1} | En ByPass, no se analiza modo pendiente de {2}",
                                                                   inspMachine.maquina,
                                                                   inspMachine.smd,
                                                                   pend.barcode)
                                                     );
                        }
                        else
                        {
                            VtwinPanel panel = new VtwinPanel(oracle, oracleLastRow, inspMachine);

                            if (panel.pendiente)
                            {
                                inspMachine.LogBroadcast("info",
                                                         string.Format("+ Sigue pendiente Programa: [{0}] | Barcode: {1} | Bloques: {2} | Pendiente: {3}", panel.programa, panel.barcode, panel.totalBloques, panel.pendiente)
                                                         );
                            }
                            else
                            {
                                inspMachine.LogBroadcast("info",
                                                         string.Format("+ Inspeccion detectada! Programa: [{0}] | Barcode: {1} | Bloques: {2} | Pendiente: {3}", panel.programa, panel.barcode, panel.totalBloques, panel.pendiente)
                                                         );
                                panel.pendienteDelete = true;

                                panel.TrazaSave(aoiConfig.xmlExportPath);
                            }

                            aoiWorker.SetProgressWorking(count);
                        }
                    }
                    else
                    {
                        aoiLog.debug("No se detectaron actualizaciones de estado");
                    }
                }
            }
        }
コード例 #2
0
ファイル: VtwinInspection.cs プロジェクト: deeze307/IA
        public void HandleInspection(Machine inspMachine)
        {
            DateTime last_oracle_inspection = new DateTime(1, 1, 1);

            inspMachine.LogBroadcast("info",
                                     string.Format("{0} | Maquina {1} | Ultima inspeccion {2}",
                                                   inspMachine.smd,
                                                   inspMachine.line_barcode,
                                                   inspMachine.ultima_inspeccion
                                                   )
                                     );

            string    query     = OracleQuery.ListLastInspections(inspMachine.oracle_id, inspMachine.ultima_inspeccion);
            DataTable dt        = oracle.Query(query);
            int       totalRows = dt.Rows.Count;

            aoiWorker.SetProgressTotal(totalRows);

            if (totalRows > 0)
            {
                inspMachine.LogBroadcast("notify",
                                         string.Format("Se encontraron({0}) inspecciones.", totalRows)
                                         );

                int count = 0;

                #region CREATE_INSPECTION_OBJECT
                foreach (DataRow r in dt.Rows)
                {
                    count++;
                    VtwinPanel panel = new VtwinPanel(oracle, r, inspMachine);

                    inspMachine.LogBroadcast("info",
                                             string.Format("+ Programa: [{0}] | Barcode: {1} | Bloques: {2} | Pendiente: {3}", panel.programa, panel.barcode, panel.totalBloques, panel.pendiente)
                                             );

                    panel.TrazaSave(aoiConfig.xmlExportPath);
                    aoiWorker.SetProgressWorking(count);

                    // Ultima inspeccion realizada en la maquina ORACLE.
                    last_oracle_inspection = DateTime.Parse(panel.fecha + " " + panel.hora);
                }

                if (last_oracle_inspection.Year.Equals(1))
                {
                    last_oracle_inspection = oracle.GetSysDate();
                }
                #endregion

                inspMachine.LogBroadcast("debug",
                                         string.Format("Actualizando horario de ultima inspeccion de maquina {0}", last_oracle_inspection.ToString("HH:mm:ss"))
                                         );

                if (!Config.debugMode)
                {
                    Machine.UpdateInspectionDate(inspMachine.mysql_id, last_oracle_inspection);
                }
            }
            else
            {
                inspMachine.LogBroadcast("notify",
                                         string.Format("{0} No se encontraron inspecciones", inspMachine.smd)
                                         );
            }

            inspMachine.Ping();
        }