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); }
// загрузка справочников с сервера 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); }
// загрузка справочников с сервера //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(); } }
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)); } } }
// загрузка справочников с сервера //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(); }
// обработка выполненного сканирования 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; }