예제 #1
0
        public string sPathBD;     // путь к таблицам

        // загрузка одной таблицы
        public bool Read1NSI(TableDef xT, int nReg)
        {
            bool
                   bWasRead = false;
            int    tc1, nE = 0;
            string sPath = "";
            object dg    = null;

            //xT.sDTStat = float.MinValue.ToString();
            xT.sDTStat = "0";
            if ((xT.dt != null) &&
                ((xT.nType & TBLTYPE.NSI) == TBLTYPE.NSI) &&
                (((xT.nType & TBLTYPE.LOAD) == TBLTYPE.LOAD) ||
                 ((xT.nType & TBLTYPE.INTERN) == TBLTYPE.INTERN) ||
                 (nReg == LOAD_ANY)))     // НСИ загружаемое
            {
                if ((xT.nState == DT_STATE_INIT) || (nReg == LOAD_ANY))
                {
                    if (xT.dg != null)
                    {
                        dg = xT.dg.DataSource;
                        xT.dg.DataSource = null;
                    }

                    xT.nErr = 0;
                    tc1     = Environment.TickCount;
                    try
                    {
                        sPath = sPathNSI + xT.sXML;
                        xT.dt.BeginLoadData();
                        nE = 1;
                        xT.dt.Clear();
                        nE = 2;

                        xT.dt.ReadXml(sPath);

                        nE = 3;
                        xT.dt.EndLoadData();
                        xT.nState  = DT_STATE_READ;
                        xT.sDTStat = Srv.TimeDiff(tc1, Environment.TickCount);
                        bWasRead   = true;
                    }
                    catch (Exception ee)
                    {
                        xT.nErr   = nE;
                        xT.nState = DT_STATE_READ_ERR;
                    }
                    if (dg != null)
                    {
                        xT.dg.DataSource = dg;
                    }
                    dg = null;
                }
            }
            return(bWasRead);
        }
예제 #2
0
        // загрузка справочников с сервера
        private int LoadAllNSISrv(string[] aI, bool bMD5, bool xShow)
        {
            int    nErr = 0, nGood = 0, nRet = 0, tc1 = Environment.TickCount;
            string i, sFull = "", sT = "";
            int    j;

            xNSI.dsNSI.EnforceConstraints = false;

            if (aI.Length == 0)
            {
                List <string> lT = new List <string>();

                foreach (KeyValuePair <string, NSI.TableDef> td in xNSI.DT)
                {
                    if (((td.Value.nType & NSI.TBLTYPE.NSI) == NSI.TBLTYPE.NSI) &&
                        ((td.Value.nType & NSI.TBLTYPE.LOAD) == NSI.TBLTYPE.LOAD))   // НСИ загружаемое
                    {
                        lT.Add(td.Key);
                    }
                }
                lT.CopyTo(aI);
            }

            for (j = 0; j < aI.Length; j++)
            {
                nRet = 0;
                i    = aI[j];
                LoadNSISrv lnsi = new LoadNSISrv(xNSI, i, bMD5);
                sT = ExchgSrv(AppC.COM_ZSPR, i, lnsi.sDop, lnsi.dgL, null, ref nRet);
                if (nRet == 0)
                {
                    nGood++;
                }
                else
                {
                    nErr++;
                }
                sT     = xNSI.DT[i].Text + "..." + sT + "\r\n";
                sFull += sT;

                if (xShow == true)
                {
                    xFPan.UpdateReg(sT);
                }
            }
            try
            {
                xNSI.dsNSI.EnforceConstraints = true;
            }
            catch
            {
                nErr = 1;
            }
            if (nErr == 0)
            {
                xSm.dtLoadNS = DateTime.Now;
            }

            sT = Srv.TimeDiff(tc1, Environment.TickCount);
            if (bMD5 == false)
            {
                MessageBox.Show(sFull, "Время-" + sT);
            }
            return(nRet);
        }
예제 #3
0
파일: PanelNSI.cs 프로젝트: TabVV/SkladDisp
        // загрузка справочников с сервера
        //private int LoadAllNSISrv(string[] aI, bool bMD5, bool xShow)
        //{
        //    return (nRet);
        //}

        //// групповая операция (проверка/загрузка)
        //private void LoadNsiMenu(bool bTestByMD5, string[] aTables)
        //{
        //    LoadNsiMenu(bTestByMD5, aTables, true);
        //}


        // групповая операция (проверка/загрузка)
        private void LoadNsiMenu(bool bTestByMD5, string[] aTables)
        {
            bool
                xShow = true;
            ServerExchange
                xSE = new ServerExchange(this);

            //xBCScanner.WiFi.IsEnabled = true;
            xBCScanner.WiFi.ShowWiFi(pnLoadDocG, true);

            xFPan.ShowP(6, 45, "Обновление НСИ", (bTestByMD5 == true) ? "Проверка" : "Загрузка");
            xFPan.UpdateHelp("Соединение с сервером");

            //bool bOldNsi;
            int j,
                nErr  = 0,
                nGood = 0,
                nRet  = 0,
                tc1   = Environment.TickCount;
            string
                i,
                sFull = "",
                sStat,
                sT = "";

            xNSI.dsNSI.EnforceConstraints = false;

            try
            {
                if (aTables.Length == 0)
                {
                    List <string> lT = new List <string>();

                    foreach (KeyValuePair <string, NSI.TableDef> td in xNSI.DT)
                    {
                        if (((td.Value.nType & NSI.TBLTYPE.NSI) == NSI.TBLTYPE.NSI) &&
                            ((td.Value.nType & NSI.TBLTYPE.LOAD) == NSI.TBLTYPE.LOAD))   // НСИ загружаемое
                        {
                            lT.Add(td.Key);
                        }
                    }
                    aTables = lT.ToArray();
                }

                for (j = 0; j < aTables.Length; j++)
                {
                    nRet = 0;
                    i    = aTables[j];

                    if (xNSI.DT.ContainsKey(i))
                    {
                        if (xShow == true)
                        {
                            xFPan.UpdateReg(xNSI.DT[i].Text + "...");
                        }

                        LoadNSISrv lnsi = new LoadNSISrv(xNSI, i, bTestByMD5);
                        xNSI.DT[i].nCount = Environment.TickCount;
                        sT = xSE.ExchgSrv(AppC.COM_ZSPR, i, lnsi.sDop, lnsi.dgL, null, ref nRet);
                        if (nRet == 0)
                        {
                            nGood++;
                        }
                        else
                        {
                            nErr++;
                        }

                        //sT = String.Format("{0}...{1}\n({2})", xNSI.DT[i].Text, sT, xNSI.DT[i].sDTStat);
                        sT    = String.Format("{0}...{1}", xNSI.DT[i].Text, sT);
                        sStat = String.Format("{0} ({1})", sT, xNSI.DT[i].sDTStat);
                        //xSE.TraiceWiFi(sStat);
                        sFull += ((aTables.Length == 1) ? sStat : sT + "\n");

                        if (xShow == true)
                        {
                            xFPan.UpdateReg(sT);
                        }
                    }
                }

                xNSI.dsNSI.EnforceConstraints = true;

                sT = Srv.TimeDiff(tc1, Environment.TickCount);
                if (bTestByMD5 == false)
                {
                    MessageBox.Show(sFull, "Время-" + sT);
                }
            }
            catch
            {
                nErr = 1;
            }
            finally
            {
                xFPan.HideP();
            }
        }
예제 #4
0
파일: PanelNSI.cs 프로젝트: TabVV/SkladDisp
            private void NsiFromSrv(SocketStream stmX, Dictionary <string, string> aC, DataSet ds,
                                    ref string sErr, int nRetSrv)
            {
                int
                    nFullEnd   = 0,
                    nStartRead = 0,
                    nEndRead   = 0;
                string
                    sMD5New = aC["MD5"],
                    sP      = xNSI.sPathNSI + xNSI.DT[sTName].sXML;

                SocketStream.ASRWERROR
                    nRErr;

                if ((bMD_5 == true) && (sMD5New == (string)xNSI.BD_TINF_RW(sTName)["MD5"]))
                {
                    sErr = "OK-No Load";
                    xNSI.BD_TINF_RW(sTName)["LASTLOAD"] = DateTime.Now;
                }
                else
                {
                    sErr = "Ошибка чтения XML";
                    string sXMLFile = "";

                    if (stmX.ASReadS.OutFile.Length == 0)
                    {
                        stmX.ASReadS.TermDat = AppC.baTermMsg;
                        nStartRead           = Environment.TickCount;
                        nRErr    = stmX.ASReadS.BeginARead(true, 1000 * 300);
                        nEndRead = Environment.TickCount;
                        switch (nRErr)
                        {
                        case SocketStream.ASRWERROR.RET_FULLMSG:       // сообщение полностью получено
                            break;

                        default:
                            throw new System.Net.Sockets.SocketException(10061);
                        }
                    }
                    sXMLFile = stmX.ASReadS.OutFile;
                    stmX.Disconnect();

                    try
                    {
                        xNSI.DT[sTName].dt.BeginLoadData();
                        xNSI.DT[sTName].dt.Clear();
                        System.Xml.XmlReader xmlRd = System.Xml.XmlReader.Create(sXMLFile);
                        xNSI.DT[sTName].dt.ReadXml(xmlRd);
                        xmlRd.Close();

                        xNSI.DT[sTName].dt.EndLoadData();

                        if (File.Exists(sP))
                        {
                            File.Delete(sP);
                        }

                        if (xNSI.AfterLoadNSI(sTName, true, sXMLFile) == AppC.RC_OK)
                        {
                            File.Move(sXMLFile, sP);
                        }

                        xNSI.BD_TINF_RW(sTName)["MD5"]      = sMD5New;
                        xNSI.BD_TINF_RW(sTName)["LASTLOAD"] = DateTime.Now;
                    }
                    finally
                    {
                        if (File.Exists(sXMLFile))
                        {// возникла ошибка при загрузке, иначе отработал бы Move
                            sErr = "Ошибка загрузки XML";
                            File.Delete(sXMLFile);
                        }
                        else
                        {// ошибок не было
                            sErr = "OK";
                        }
                        nFullEnd = Environment.TickCount;
                        //xNSI.DT[sTName].sDTStat = String.Format("{0(сокет)}-{1(XML)}-{2(Full)}",
                        //    Srv.TimeDiff(nStartRead, nEndRead, 1),
                        //    Srv.TimeDiff(nEndRead, nFullEnd, 1),
                        //    Srv.TimeDiff(xNSI.DT[sTName].nCount, nFullEnd, 1));
                        xNSI.DT[sTName].sDTStat = String.Format("{0}(сокет)-{1}(XML)-{2}(Full)",
                                                                Srv.TimeDiff(nStartRead, nEndRead, 1),
                                                                Srv.TimeDiff(nEndRead, nFullEnd, 1),
                                                                Srv.TimeDiff(xNSI.DT[sTName].nCount, nFullEnd, 1));
                    }
                }
            }
예제 #5
0
        // загрузка справочников с сервера
        //private int LoadAllNSISrv(string[] aI, bool bMD5, bool xShow)
        //{
        //    return (nRet);
        //}

        // групповая операция (проверка/загрузка)
        private void LoadNsiMenu(bool bTestByMD5, string[] aTables)
        {
            bool
                xShow = true,
                bOldNsi;
            string i,
                   sFull = "",
                   sT    = "";

            ServerExchange
                xSE = new ServerExchange(this);

            //xBCScanner.WiFi.IsEnabled = true;
            xBCScanner.WiFi.ShowWiFi(pnLoadDocG, true);
            xFPan.UpdateSrv(xPars.sHostSrv);
            xFPan.ShowP(6, 45, "Обновление НСИ", (bTestByMD5 == true) ? "Проверка" : "Загрузка");
            xFPan.UpdateHelp("Соединение с сервером");

            int j,
                nErr  = 0,
                nGood = 0,
                nRet  = 0,
                tc1   = Environment.TickCount;

            xNSI.dsNSI.EnforceConstraints = false;

            if (aTables.Length == 0)
            {
                //aTables = new string[xNSI.DT.Keys.Count];
                //xNSI.DT.Keys.CopyTo(aTables, 0);

                List <string> lT = new List <string>();

                foreach (KeyValuePair <string, NSI.TableDef> td in xNSI.DT)
                {
                    if (((td.Value.nType & NSI.TBLTYPE.NSI) == NSI.TBLTYPE.NSI) &&
                        ((td.Value.nType & NSI.TBLTYPE.LOAD) == NSI.TBLTYPE.LOAD))   // НСИ загружаемое
                    {
                        lT.Add(td.Key);
                    }
                }
                aTables = lT.ToArray();
            }

            for (j = 0; j < aTables.Length; j++)
            {
                nRet = 0;
                i    = aTables[j];
                //if (((bTestByMD5) && (((DateTime)xNSI.BD_TINF_RW(i)["LASTLOAD"]).Date < DateTime.Now.Date)) ||
                //    (!bTestByMD5))
                try
                {
                    bOldNsi = (((DateTime)xNSI.BD_TINF_RW(i)["LASTLOAD"]).Date < DateTime.Now.Date);
                }
                catch
                {
                    bOldNsi = true;
                }


                if ((bTestByMD5 && bOldNsi) ||
                    (!bTestByMD5))
                {
                    LoadNSISrv lnsi = new LoadNSISrv(xNSI, i, bTestByMD5);
                    sT = xSE.ExchgSrv(AppC.COM_ZSPR, i, lnsi.sDop, lnsi.dgL, null, ref nRet);
                    if (nRet == 0)
                    {
                        nGood++;
                    }
                    else
                    {
                        nErr++;
                    }
                    sT     = xNSI.DT[i].Text + "..." + sT + "\r\n";
                    sFull += sT;

                    if (xShow == true)
                    {
                        xFPan.UpdateReg(sT);
                    }
                }
            }

            try
            {
                xNSI.dsNSI.EnforceConstraints = true;
            }
            catch
            {
                nErr = 1;
            }
            if (nErr == 0)
            {
                //xSm.dtLoadNS = DateTime.Now;
            }

            sT = Srv.TimeDiff(tc1, Environment.TickCount);
            if (bTestByMD5 == false)
            {
                MessageBox.Show(sFull, "Время-" + sT);
            }
            xFPan.HideP();
        }
예제 #6
0
        // обработка выполненного сканирования
        private void OnScan(object sender, BarcodeScannerEventArgs e)
        {
            bool
                bRet = true,
                bDupScan;
            int
                t1, t2,
                nRet = AppC.RC_CANCEL;
            string
                sP, sP1,
                sErr = "";

            // началась обработка сканирования
            bInScanProceed = true;
            if (e.nID != BCId.NoData)
            {
                try
                {
                    PSC_Types.ScDat sc = new PSC_Types.ScDat(e);
                    xScan    = new ScanVarGP(e, xNSI.DT["NS_AI"].dt);
                    bDupScan = ((xScanPrev != null) && (xScanPrev.Dat == xScan.Dat)) ? true : false;

                    sc.sN = e.Data + "-???";
                    #region Обработка скана
                    do
                    {
                        if (xScan.Dat.StartsWith("91E"))
                        {// адрес ID-точки
                            MainCycleStart(xScan.Dat.Substring(4), true);
                            break;
                        }

                        if (sDevID.Length == 0)
                        {
                            Srv.ErrorMsg("Введите или\nотсканируйте № точки!", "Ошибка", true);
                            break;
                        }

                        xMark.NumberOfScans++;
                        xMark.SrcInfo = NSI.SRCDET.SCAN;

                        //if (((xScan.bcFlags & ScanVarGP.BCTyp.SP_SSCC_EXT) == ScanVarGP.BCTyp.SP_SSCC_EXT) ||
                        //    ((xScan.bcFlags & ScanVarGP.BCTyp.SP_SSCC_PRT) == ScanVarGP.BCTyp.SP_SSCC_PRT) ||
                        //    ((xScan.bcFlags & ScanVarGP.BCTyp.SP_SSCC_INT) == ScanVarGP.BCTyp.SP_SSCC_INT))
                        if (((xScan.bcFlags & ScanVarGP.BCTyp.SP_SSCC) > 0) ||
                            ((xScan.bcFlags & ScanVarGP.BCTyp.SP_SSCC_PRT) > 0))
                        {
                            int nRetSSCC = ProceedSSCC(xScan, ref sc, aEd.Current);
                            if (nRetSSCC == AppC.RC_QUIT)
                            {// SSCC привязан, новый поддон
                                xScan = null;
                                break;
                            }
                            if (nRetSSCC != AppC.RC_HALFOK)
                            {// не было удачной трансляции SSCC
                                xScan = null;
                                break;
                            }
                            // далее будет вывод удачной трансляции SSCC
                            if ((xScan.bcFlags & ScanVarGP.BCTyp.SP_SSCC_PRT) > 0)
                            {
                                // SSCC для ящиков
                                bRet = (ProceedProd(xScan, ref sc, bDupScan, false) == AppC.RC_OK) ? true : false;
                            }
                        }
                        else
                        {// должна быть продукция
                            if (((xScan.bcFlags & ScanVarGP.BCTyp.SP_OLD_ETIK) == ScanVarGP.BCTyp.SP_OLD_ETIK) ||
                                (xScan.Id != BCId.Code128))
                            {// старая этикетка или EAN13
                                bRet = xMF.TranslSCode(ref sc, ref sErr);
                                if ((sc.ci == BCId.EAN13) || (sc.ci == BCId.Interleaved25) ||
                                    ((sc.s.Length >= 13) && (sc.s.Length <= 14)))
                                {
                                    sc.tTyp = AppC.TYP_TARA.TARA_POTREB;
                                }
                            }
                            else
                            {// новая этикетка
                                if (((xScan.bcFlags & ScanVarGP.BCTyp.SP_MT_PRDV) == ScanVarGP.BCTyp.SP_MT_PRDV))
                                {
                                    bRet = xMF.TranslMT(ref sc);
                                }
                                else if (((xScan.bcFlags & ScanVarGP.BCTyp.SP_MT_PRDVN) == ScanVarGP.BCTyp.SP_MT_PRDVN))
                                {
                                    bRet = xMF.TranslMTNew(ref sc);
                                }
                                else
                                {
                                    // разбор этикетки стандартным способом по AI
                                    t1   = Environment.TickCount;
                                    bRet = xMF.NewTranslSCode(ref sc, xScan);
                                    t2   = Environment.TickCount;
                                    sP   = Srv.TimeDiff(t1, t2, 3);
                                }
                            }
                            if (bRet)
                            {
                                t1 = Environment.TickCount;
                                // возможно, контрольное сканирование

                                if ((xMark.ScanFirst.ci != BCId.Unknown) && (xMark.ScanFirst.s is string))
                                {
                                    if (xMark.ScanFirst.sEAN == sc.sEAN)
                                    {
                                        break;
                                    }
                                    // не совпали коды
                                    Srv.ErrorMsg(xMark.ScanFirst.sEAN + "\n" + sc.sEAN, "Разные EAN!", true);
                                }

                                bRet = (ProceedProd(xScan, ref sc, bDupScan, false) == AppC.RC_OK) ? true : false;
                                t2   = Environment.TickCount;
                                sP1  = Srv.TimeDiff(t1, t2, 3);
                            }
                            //aEd.SetCur( (sc.tTyp == AppC.TYP_TARA.TARA_PODDON) ? tSSCC : tMest );
                            //tMest.Enabled = true;
                        }

                        if (!bRet)
                        {
                            throw new Exception("Ошибка сканирования!");
                        }
                        //aEd.SetCur((sc.tTyp == AppC.TYP_TARA.TARA_PODDON) ? tSSCC : tMest);
                        aEd.SetCur(tSSCC);
                        tMest.Enabled  = true;
                        tKrKMC.Enabled = false;

                        if (xMark.ScanFirst.bVes)
                        {
                            tVes.Visible   = true;
                            tVsego.Enabled = true;
                        }
                        if (xMark.ScanFirst.tTyp != AppC.TYP_TARA.TARA_PODDON)
                        {
                            if (xMark.ScanFirst.bVes)
                            {
                                tVes.Enabled = true;
                            }

                            if (xMark.ScanFirst.tTyp == AppC.TYP_TARA.TARA_POTREB)
                            {
                                tParty.Enabled = tDTV.Enabled = true;
                                aEd.SetCur(tParty);
                            }
                        }

                        SetDetFields(ref xMark.ScanFirst, false);
                        if (enWrapMode.CurMode == AppC.WRAP_MODES.WRP_BY_NSI)
                        {
                            chWrapp.Checked = WrappSet(xNSI.DT[NSI.NS_MC].dt, xMark.ScanFirst, 0);
                        }

                        xScanPrev = xScan;
                    } while (false);
                    #endregion
                }
                catch (Exception ex)
                {
                    string sE = String.Format("{0}({1}){2}", xScan.Id.ToString(), xScan.Dat.Length, xScan.Dat);
                    Srv.ErrorMsg(sE + "\n" + ex.Message, "Ошибка сканирования", true);
                }
            }
            // обработка сканирования окончена
            bInScanProceed = false;
        }