コード例 #1
0
        public void ReplaceHelper_gettingThirdArray()
        {
            ReplaceHelper helper = new ReplaceHelper(textForTesting);

            string[] thirdArray = helper.getThirdWordsArray();
            Assert.AreEqual(3, thirdArray.Length);
        }
コード例 #2
0
        public void SearchNextElement(TextPointer pointer, bool fromReplace)
        {
            bool searchString = ReplaceHelper.SearchString(pointer, true, fromReplace);

            ReplaceHelper.CanReplace = !string.IsNullOrEmpty(SearcBox.Text) && searchString;

            ErrorProvider.Visibility = searchString ? Visibility.Collapsed : Visibility.Visible;
        }
コード例 #3
0
 private void ReplaceMe()
 {
     try
     {
         TextPointer test;
         ErrorProvider.Visibility = ReplaceHelper.ReplaceAndSelect(MainWindow.Global.Caretposition, false, out test, SearcBox.Text, ReplaceBox.Text)
             ? Visibility.Collapsed
             : Visibility.Visible;
     }
     catch (Exception e)
     {
         MainWindow.Global.AddException(e);
     }
 }
コード例 #4
0
        public void ReplaceHelper_gettingClearedTest()
        {
            ReplaceHelper helper        = new ReplaceHelper(textForTesting);
            string        clearingText  = helper.getClearedText();
            bool          containsDots  = clearingText.Contains('.');
            bool          containsZap   = clearingText.Contains(',');
            bool          containsAl    = clearingText.Contains('!');
            bool          containsQuest = clearingText.Contains('?');

            Assert.IsFalse(containsDots);
            Assert.IsFalse(containsZap);
            Assert.IsFalse(containsAl);
            Assert.IsFalse(containsQuest);
        }
コード例 #5
0
        public async Task <bool> IsHandable(Update update)
        {
            var a = update.Message?.Text?.Length > 0 &&
                    (update.Message?.ReplyToMessage?.Text?.Length > 0 ||
                     update.Message?.ReplyToMessage?.Caption?.Length > 0);

            if (!a)
            {
                return(false);
            }

            var patterns = update.Message.Text.Split('\n', '\r').ToList();

            return(ReplaceHelper.IsHandable(patterns));
        }
コード例 #6
0
        private void ReplaceAllMe(object sender, RoutedEventArgs e)
        {
            try
            {
                TextPointer contentStart = FlowDocument.ContentStart;
                int         counter      = 1;
                while (ReplaceHelper.ReplaceAndSelect(contentStart, false, out contentStart, SearcBox.Text, ReplaceBox.Text))
                {
                    counter++;
                }

                MessageBoxes.MessageBox.ShowMessage(MainWindow.Global,
                                                    string.Format("{0} Ersetzungen vorgenommen", counter), "Ersetzungen", MessageBoxImage.Information);
            }
            catch (Exception exception)
            {
                MainWindow.Global.AddException(exception);
            }
        }
コード例 #7
0
        public async Task HandleUpdate(Update update)
        {
            var input    = update.Message.ReplyToMessage.Text ?? update.Message.ReplyToMessage.Caption;
            var patterns = update.Message.Text.Split('\n', '\r').ToList();

            try
            {
                var reply = ReplaceHelper.Replace(input, patterns);

                await _client.SendTextMessageAsync(update.Message.Chat.Id,
                                                   reply,
                                                   replyToMessageId : update.Message.ReplyToMessage.MessageId);
            }
            catch (RegexParseException e)
            {
                await _client.SendTextMessageAsync(update.Message.Chat.Id,
                                                   "Regex parse error",
                                                   replyToMessageId : update.Message.MessageId);
            }
        }
コード例 #8
0
        public ActionResult Index2(int id = 120)
        {
            string dataDir = Server.MapPath("~/Format/Laporan/");
            Stream stream  = System.IO.File.OpenRead(dataDir + "SNI.docx");

            Aspose.Words.Document doc = new Aspose.Words.Document(stream);
            stream.Close();
            MemoryStream  dstStream = new MemoryStream();
            ReplaceHelper helper    = new ReplaceHelper(doc);
            //var mime = "";


            //MessageBox.Show(String.Format("Document has {0} pages", doc.BuiltInDocumentProperties.Pages));
            //helper.Replace("Data1", "wwww");
            StyleCollection styles = doc.Styles;

            //// Iterate through all paragraphs
            //foreach (Paragraph para in paragraphs)
            //{
            //    // If the paragraph has a page break before set then clear it.
            //    if (para.ParagraphFormat.PageBreakBefore)
            //        para.ParagraphFormat.PageBreakBefore = false;

            //    // Check all runs in the paragraph for page breaks and remove them.
            //    foreach (Run run in para.Runs)
            //    {
            //        if (run.Text.Contains(ControlChar.PageBreak))
            //            run.Text = run.Text.Replace(ControlChar.PageBreak, string.Empty);
            //    }

            //}
            // Define style names as they are specified in the Word document.
            const string paraStyle = "Heading 2";
            const string runStyle  = "Intense Emphasis";
            var          wew       = "";
            // Collect paragraphs with defined styles.
            // Show the number of collected paragraphs and display the text of this paragraphs.
            ArrayList paragraphs = ParagraphsByStyleName(doc, paraStyle);

            Console.WriteLine(string.Format("Paragraphs with \"{0}\" styles ({1}):", paraStyle, paragraphs.Count));
            foreach (Paragraph paragraph in paragraphs)
            {
                Console.Write(paragraph.ToString(SaveFormat.Text));
                wew += paragraph.ToString(SaveFormat.Text);
            }
            helper.Replace("Data1", wew);
            // Collect runs with defined styles.
            // Show the number of collected runs and display the text of this runs.
            ArrayList runs = RunsByStyleName(doc, runStyle);

            Console.WriteLine(string.Format("\nRuns with \"{0}\" styles ({1}):", runStyle, runs.Count));
            foreach (Run run in runs)
            {
                Console.WriteLine(run.Range.Text);
            }
            doc.ViewOptions.ZoomPercent = 100;


            doc.Save(dstStream, SaveFormat.Docx);
            var mime = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";

            byte[] byteInfo = dstStream.ToArray();
            dstStream.Write(byteInfo, 0, byteInfo.Length);
            dstStream.Position = 0;

            Response.ContentType = mime;

            Response.AddHeader("content-disposition", "attachment;  filename=SNI_" + id + ".docx");
            Response.BinaryWrite(byteInfo);
            Response.End();

            return(new FileStreamResult(dstStream, mime));
            //var JumlahHalaman = doc.BuiltInDocumentProperties.Pages;
            //return Json(new
            //{
            //    JumlahHalaman,
            //    style = styles[0].Name,
            //    runs
            //}, JsonRequestBehavior.AllowGet);
        }
コード例 #9
0
        public ActionResult Approval(int PROPOSAL_ID = 0, string PROPOSAL_PNPS_CODEZZ = "", int PROPOSAL_KOMTEK_ID = 0, int[] PROPOSAL_ICS_REF_ICS_ID = null)
        {
            var    DataProposal       = (from proposal in db.VIEW_PROPOSAL where proposal.PROPOSAL_ID == PROPOSAL_ID select proposal).SingleOrDefault();
            var    PROPOSAL_PNPS_CODE = db.Database.SqlQuery <string>("SELECT CAST(TO_CHAR (SYSDATE, 'YYYY') || '.' || KOMTEK_CODE || '.' || ( SELECT CAST ( ( CASE WHEN LENGTH (COUNT(PROPOSAL_ID) + 1) = 1 THEN '0' || CAST ( COUNT (PROPOSAL_ID) + 1 AS VARCHAR2 (255) ) ELSE CAST ( COUNT (PROPOSAL_ID) + 1 AS VARCHAR2 (255) ) END ) AS VARCHAR2 (255) ) PNPSCODE FROM TRX_PROPOSAL WHERE PROPOSAL_KOMTEK_ID = KOMTEK_ID ) AS VARCHAR2(255)) AS PNPSCODE FROM MASTER_KOMITE_TEKNIS WHERE KOMTEK_ID = " + PROPOSAL_KOMTEK_ID).SingleOrDefault();
            string test = "SELECT CAST(TO_CHAR (SYSDATE, 'YYYY') || '.' || KOMTEK_CODE || '.' || ( SELECT CAST ( ( CASE WHEN LENGTH (COUNT(PROPOSAL_ID) + 1) = 1 THEN '0' || CAST ( COUNT (PROPOSAL_ID) + 1 AS VARCHAR2 (255) ) ELSE CAST ( COUNT (PROPOSAL_ID) + 1 AS VARCHAR2 (255) ) END ) AS VARCHAR2 (255) ) PNPSCODE FROM TRX_PROPOSAL WHERE PROPOSAL_KOMTEK_ID = KOMTEK_ID ) AS VARCHAR2(255)) AS PNPSCODE FROM MASTER_KOMITE_TEKNIS WHERE KOMTEK_ID = " + PROPOSAL_KOMTEK_ID;

            var USER_ID = Convert.ToInt32(Session["USER_ID"]);
            var PROPOSAL_PNPS_CODE_FIXER = DataProposal.PROPOSAL_CODE;
            var DATENOW = MixHelper.ConvertDateNow();

            db.Database.ExecuteSqlCommand("UPDATE TRX_PROPOSAL SET PROPOSAL_STATUS = 3, PROPOSAL_STATUS_PROSES = 1,PROPOSAL_KOMTEK_ID = " + PROPOSAL_KOMTEK_ID + ", PROPOSAL_IS_POLLING = 0, PROPOSAL_POLLING_ID = NULL, PROPOSAL_UPDATE_DATE = " + DATENOW + ", PROPOSAL_UPDATE_BY = " + USER_ID + " WHERE PROPOSAL_ID = " + PROPOSAL_ID);
            var    PROPOSAL_LOG_CODE = db.Database.SqlQuery <string>("SELECT PROPOSAL_LOG_CODE FROM TRX_PROPOSAL WHERE PROPOSAL_ID = " + PROPOSAL_ID).SingleOrDefault();
            String objek1            = "UPDATE TRX_PROPOSAL SET PROPOSAL_STATUS = 3,PROPOSAL_KOMTEK_ID = " + PROPOSAL_KOMTEK_ID + ", PROPOSAL_STATUS_PROSES = 1, PROPOSAL_IS_POLLING = 0, PROPOSAL_POLLING_ID = NULL, PROPOSAL_UPDATE_DATE = " + DATENOW + ", PROPOSAL_UPDATE_BY = " + USER_ID + " WHERE PROPOSAL_ID = " + PROPOSAL_ID;

            MixHelper.InsertLog(PROPOSAL_LOG_CODE, objek1.Replace("'", "-"), 2);

            int APPROVAL_ID = MixHelper.GetSequence("TRX_PROPOSAL_APPROVAL");

            db.Database.ExecuteSqlCommand("UPDATE TRX_PROPOSAL_APPROVAL SET APPROVAL_STATUS = 0 WHERE APPROVAL_PROPOSAL_ID = " + PROPOSAL_ID);
            db.Database.ExecuteSqlCommand("INSERT INTO TRX_PROPOSAL_APPROVAL (APPROVAL_ID,APPROVAL_PROPOSAL_ID,APPROVAL_TYPE,APPROVAL_DATE,APPROVAL_BY,APPROVAL_STATUS,APPROVAL_STATUS_PROPOSAL,APPROVAL_STATUS_SESSION) VALUES (" + APPROVAL_ID + "," + PROPOSAL_ID + ",1," + DATENOW + "," + USER_ID + ",1,2,1)");

            db.Database.ExecuteSqlCommand("UPDATE TRX_MONITORING SET MONITORING_TGL_APP_MTPS = " + DATENOW + ", MONITORING_HASIL_APP_MTPS = 1 WHERE MONITORING_PROPOSAL_ID = " + PROPOSAL_ID);

            int    LASTID        = MixHelper.GetSequence("TRX_DOCUMENTS");
            var    TGL_SEKARANG  = DateTime.Now.ToString("yyyyMMddHHmmss");
            var    DataTanggapan = db.Database.SqlQuery <VIEW_POLLING_DETAIL>("SELECT * FROM VIEW_POLLING_DETAIL WHERE POLLING_DETAIL_POLLING_ID = " + DataProposal.PROPOSAL_POLLING_ID + " ORDER BY POLLING_DETAIL_INPUT_TYPE ASC,POLLING_DETAIL_CREATE_DATE DESC").ToList();
            string path          = Server.MapPath("~/Upload/Dokumen/RANCANGAN_SNI/MTPS/" + PROPOSAL_PNPS_CODE_FIXER + "/");
            string dataFormat    = Server.MapPath("~/Format/Laporan/");
            Stream stream        = System.IO.File.OpenRead(dataFormat + "FORMAT_TANGGAPAN_PUBLIKASI_MTPS.docx");

            Aspose.Words.Document Tanggapan = new Aspose.Words.Document(stream);
            ReplaceHelper         helper    = new ReplaceHelper(Tanggapan);

            helper.Replace("JudulPNPS", DataProposal.PROPOSAL_JUDUL_PNPS);
            DateTime dt = Convert.ToDateTime(DataProposal.POLLING_START_DATE);

            helper.Replace("TanggalJP", dt.ToString("dd/MM/yyyy"));
            helper.Replace("RuangLingkupPNPS", DataProposal.PROPOSAL_RUANG_LINGKUP);


            Paragraph paragraph = new Paragraph(Tanggapan);

            DocumentBuilder builder = new DocumentBuilder(Tanggapan);

            Aspose.Words.Font font = builder.Font;
            font.Bold   = false;
            font.Color  = System.Drawing.Color.Black;
            font.Italic = false;
            font.Name   = "Calibri";
            font.Size   = 11;
            builder.MoveToDocumentEnd();

            var    number = 0;
            string html   = "<table width='100%' border='1' bordercolor='#111111' cellpadding='2'  style='border-collapse: collapse' cellpadding='0' cellspacing='0'>" +
                            "<tr>" +
                            "<td width='5%' style='text-align:center'><b>No</b></td>" +
                            "<td width='15%' style='text-align:center'><b>Nama</b></td>" +
                            "<td width='15%' style='text-align:center'><b>Tipe tanggapan</b></td>" +
                            "<td width='65%' style='text-align:center'><b>Tanggapan</b></td>" +
                            "</tr>";

            foreach (var i in DataTanggapan)
            {
                number++;
                html += "<tr>" +
                        "<td>" + number + "</td>" +
                        "<td>" + i.USER_PUBLIC_NAMA + "</td>" +
                        "<td>" + i.POLLING_DETAIL_INPUT_TYPE_NAME + "</td>" +
                        "<td>" + i.POLLING_DETAIL_REASON + "</td>" +
                        "</tr>";
            }
            html += "</table>";
            builder.InsertHtml(html);
            Tanggapan.Save(@"" + path + "DAFTAR_TANGGAPAN_PUBLIKASI_USULAN_PNPS_" + PROPOSAL_PNPS_CODE_FIXER + "_" + TGL_SEKARANG + ".docx", Aspose.Words.SaveFormat.Docx);
            Tanggapan.Save(@"" + path + "DAFTAR_TANGGAPAN_PUBLIKASI_USULAN_PNPS_" + PROPOSAL_PNPS_CODE_FIXER + "_" + TGL_SEKARANG + ".pdf", Aspose.Words.SaveFormat.Pdf);
            Tanggapan.Save(@"" + path + "DAFTAR_TANGGAPAN_PUBLIKASI_USULAN_PNPS_" + PROPOSAL_PNPS_CODE_FIXER + "_" + TGL_SEKARANG + ".xml");

            var LOGCODE_TANGGAPAN_MTPS = MixHelper.GetLogCode();
            var FNAME_TANGGAPAN_MTPS   = "DOC_ID,DOC_FOLDER_ID,DOC_RELATED_TYPE,DOC_RELATED_ID,DOC_NAME,DOC_DESCRIPTION,DOC_FILE_PATH,DOC_FILE_NAME,DOC_FILETYPE,DOC_EDITABLE,DOC_CREATE_BY,DOC_CREATE_DATE,DOC_STATUS,DOC_LOG_CODE";
            var FVALUE_TANGGAPAN_MTPS  = "'" + LASTID + "', " +
                                         "'10', " +
                                         "'1', " +
                                         "'" + PROPOSAL_ID + "', " +
                                         "'" + "(" + PROPOSAL_PNPS_CODE_FIXER + ") Daftar Tanggapan Publikasi Usulan PNPS" + "', " +
                                         "'Daftar Tanggapan Hasil Publikasi Usulan PNPS dengan Judul PNPS : " + DataProposal.PROPOSAL_JUDUL_PNPS + "', " +
                                         "'" + "/Upload/Dokumen/RANCANGAN_SNI/MTPS/" + PROPOSAL_PNPS_CODE_FIXER + "/" + "', " +
                                         "'" + "DAFTAR_TANGGAPAN_PUBLIKASI_USULAN_PNPS_" + PROPOSAL_PNPS_CODE_FIXER + "_" + TGL_SEKARANG + "" + "', " +
                                         "'DOCX', " +
                                         "'0', " +
                                         "'" + USER_ID + "', " +
                                         DATENOW + "," +
                                         "'1', " +
                                         "'" + LOGCODE_TANGGAPAN_MTPS + "'";

            db.Database.ExecuteSqlCommand("INSERT INTO TRX_DOCUMENTS (" + FNAME_TANGGAPAN_MTPS + ") VALUES (" + FVALUE_TANGGAPAN_MTPS.Replace("''", "NULL") + ")");
            String objekTanggapan = FVALUE_TANGGAPAN_MTPS.Replace("'", "-");

            MixHelper.InsertLog(LOGCODE_TANGGAPAN_MTPS, objekTanggapan, 1);

            db.Database.ExecuteSqlCommand("UPDATE TRX_POLLING SET POLLING_IS_KUORUM = 1,POLLING_UPDATE_DATE = " + DATENOW + ", POLLING_UPDATE_BY = '" + USER_ID + "' WHERE POLLING_ID = " + DataProposal.PROPOSAL_POLLING_ID);

            TempData["Notifikasi"]     = 1;
            TempData["NotifikasiText"] = "Data Berhasil Disimpan";
            return(RedirectToAction("Index"));
        }
コード例 #10
0
        /// <summary>
        /// 生成rd中的支付信息
        /// </summary>
        /// <param name="xmlRd">rd字符串</param>
        /// <param name="payment">支付信息</param>
        /// <param name="seq">支付顺序</param>
        /// <returns></returns>
        private string dealwithPaymentRd(string xmlRd, PaymentInfo payment, int seq)
        {
            string ret = string.Empty;

            string error = string.Empty;
            var    acct  = payment.bankAcnt.acntNo.Trim(); //工行账户,支付方

            if (acct.Length < 19)
            {
                error = string.Format("账号长度错误!", payment.bankAcnt.acntNo);
                throw new Exception(error);
            }

            InstallContext ic = new InstallContext();

            //初始化数据
            string name = string.Empty;
            object obj  = null;

            //本方账户
            Type type = payment.bankAcnt.GetType();

            PropertyInfo[] ps = type.GetProperties();
            foreach (PropertyInfo i in ps)
            {
                obj  = i.GetValue(payment.bankAcnt, null);
                name = "bankAcnt_" + i.Name;
                if (obj != null)
                {
                    ic.Set(name, obj.ToString());
                }
                else
                {
                    ic.Set(name, " ");
                }
            }

            //对方账户
            type = payment.oppoBankAcnt.GetType();
            ps   = type.GetProperties();
            foreach (PropertyInfo i in ps)
            {
                obj  = i.GetValue(payment.oppoBankAcnt, null);
                name = "oppoBankAcnt_" + i.Name;
                if (obj != null)
                {
                    ic.Set(name, obj.ToString());
                }
                else
                {
                    ic.Set(name, " ");
                }
            }

            //付款单
            type = payment.GetType();
            ps   = type.GetProperties();

            foreach (PropertyInfo i in ps)
            {
                obj  = i.GetValue(payment, null);
                name = i.Name;
                if (obj != null)
                {
                    if (string.IsNullOrWhiteSpace(obj.ToString().Trim()))
                    {
                        ic.Set(name, " ");
                    }
                    else
                    {
                        ic.Set(name, obj.ToString());
                    }
                }
                else
                {
                    ic.Set(name, " ");
                }
            }

            //是否加绩
            if (payment.isUrgent == (int)enumYesNo.Yes)
            {
                ic.Set("isUrgent", "1"); //加急
            }
            else
            {
                ic.Set("isUrgent", "2"); //普通
            }

            //是否同城
            if (payment.sameCity == (int)enumYesNo.Yes)
            {
                ic.Set("sameCity", "1"); //同城
            }
            else
            {
                ic.Set("sameCity", "2"); //异地
            }

            //是否跨行
            if (payment.sameBank == (int)enumYesNo.Yes)
            {
                ic.Set("sameBank", "1"); //系统内,工行

                //把跨行数据置空
                ic.Set("oppoBankAcnt_city", " ");
                ic.Set("oppoBankAcnt_bankInfo_bankCode", " ");
                ic.Set("oppoBankAcnt_bankInfo_bankName", " ");
            }
            else
            {
                ic.Set("sameBank", "2"); //跨行

                //跨行数据
                ic.Set("oppoBankAcnt_city", payment.oppoBankAcnt.city);
                ic.Set("oppoBankAcnt_bankInfo_bankCode", payment.oppoBankAcnt.bankInfo.bankCode);
                ic.Set("oppoBankAcnt_bankInfo_bankName", payment.oppoBankAcnt.bankInfo.bankName);
            }

            //如果不写币种,则默认人民币
            string currency = payment.currency;

            if (string.IsNullOrEmpty(currency))
            {
                currency = "001"; //默认人名币
            }

            payment.amount = payment.amount * 100; //工行按分来计算,元转分要乘以100

            ic.Set("currency", currency);
            ic.Set("bankCode", payment.bankAcnt.swiftCode); //工行为 "102"
            ic.Set("cis", ConfigurationManager.AppSettings["cis"]);
            ic.Set("id", ConfigurationManager.AppSettings["id"]);

            ic.Set("iSeqno", seq.ToString()); //支付顺序号

            //替换模板中的键为对应的值
            var newXmlStr = ReplaceHelper.ReplaceStringVar(xmlRd, ic);

            _xmlTool.SetXML(newXmlStr);
            _xmlTool.SetXMLNode("PayAmt", payment.amount.ToString("f0")); //必须是整数
            newXmlStr = _xmlTool.GetXML();

            return(newXmlStr);
        }
コード例 #11
0
        /// <summary>
        /// 获得对应银行账号的当前余额
        /// </summary>
        /// <param name="caller">调用者</param>
        /// <param name="bankCnt">银行账户信息</param>
        /// <param name="currency">币种</param>
        /// <returns></returns>
        public BalanceInfo getBalance(CallerInfo caller, BankAcnt bankCnt, string currency)
        {
            string error = string.Empty;
            var    acct  = bankCnt.acntNo.Trim();

            if (acct.Length < 19)
            {
                error = "账号长度错误!";
                throw new Exception(error);
            }

            //ICBCNCHelper ncHelper = ICBCNCHelper.GetInstance();
            string xmlString = ICBCNCHelper.GetXmlString("QACCBAL");

            InstallContext ic = new InstallContext();

            //初始化数据
            Type type = bankCnt.GetType();

            PropertyInfo[] ps = type.GetProperties();
            foreach (PropertyInfo i in ps)
            {
                object obj  = i.GetValue(bankCnt, null);
                string name = i.Name;
                if (obj != null)
                {
                    ic.Set(i.Name, obj.ToString());
                }
                else
                {
                    ic.Set(name, " ");
                }
            }

            //如果不写币种,会使用账户的币种

            /*
             * if (string.IsNullOrEmpty(currency)) {
             *  currency = "001"; //默认人名币
             * }
             */

            ic.Set("currency", currency);
            ic.Set("bankCode", bankCnt.swiftCode);
            ic.Set("cis", ConfigurationManager.AppSettings["cis"]);
            ic.Set("id", ConfigurationManager.AppSettings["id"]);

            //替换模板中的键为对应的值
            var newXmlStr = ReplaceHelper.ReplaceStringVar(xmlString, ic);


            ICBC_NetSafeClient iCBC_NetSafeClient = CreateOneNC();
            XML_EASY           balString          = new XML_EASY(newXmlStr);//new XML_EASY(ResourceSet.TransCode_QACCBAL_0010);

            if (acct.Length == 19)
            {
                balString.SetXMLNode("AccNo", acct);
            }
            //else if (acct.Length == 29 && acct[19] == '-')
            //{
            //    balString.SetXMLNode("AccNo", acct.Substring(0, 19));
            //    balString.SetXMLNode("AcctSeq", acct.Substring(20, 9));
            //}

            string seqNo, seqResult;

            iCBC_NetSafeClient.Run(balString.GetXML(), out seqNo, out seqResult);
            iCBC_NetSafeClient = null;

            balString.SetXML(seqResult);
            if (balString.LocateString("<error>") >= 0)
            {
                error = balString.GetXMLNode("error");
                throw new Exception(error);
            }
            string balMoney = balString.GetXMLNode("Balance");

            if (balMoney != null && balMoney.Length > 0)
            {
                BalanceInfo balInfo = new BalanceInfo();

                //取余额
                decimal balance = Convert.ToDecimal(balMoney) / 100.0m; //以币种的最小单位为单位,人民币的单位为分,转换为元要除以100

                //昨日余额
                decimal accBalance = this.getYuanMoney(balString.GetXMLNode("AccBalance"));

                //可用余额
                decimal usableBalance = this.getYuanMoney(balString.GetXMLNode("UsableBalance"));

                balInfo.bankAcnt = bankCnt; //账户信息

                balInfo.balance      = balance;
                balInfo.hisBalance   = accBalance;
                balInfo.availBalance = usableBalance;
                balInfo.acntType     = balString.GetXMLNode("AcctProperty"); //账户属性
                balInfo.currency     = balString.GetXMLNode("CurrType");     //币种

                string retTime = balString.GetXMLNode("QueryTime");
                if (!string.IsNullOrEmpty(retTime))
                {
                    balInfo.balanceDate = this.convertToDateTime(retTime);
                }

                balInfo.fSeqno = seqNo; //balString.GetXMLNode("fSeqno"); //指令包序列号

                //error = "Name=" + balString.GetXMLNode("AccName") + "|Balance=" + accBalance.ToString() + "|银行应答时间=" + balString.GetXMLNode("QueryTime");
                return(balInfo);
            }

            error = "银行RetMsg:" + balString.GetXMLNode("RetMsg");
            throw new Exception(error);
        }
コード例 #12
0
        /// <summary>
        /// 检查前置机https服务以及签名服务状态
        /// </summary>
        /// <param name="httpsState"></param>
        /// <param name="signState"></param>
        /// <returns></returns>
        public string CheckNetSafeClient(out bool httpsState, out bool signState)
        {
            httpsState = false;
            signState  = false;
            string msg = string.Empty;

            #region 检查https服务
            string   error   = string.Empty;
            BankAcnt bankCnt = new BankAcnt {
                acntNo   = "1202022719927388888",
                acntName = "菌邢票董租氮蒸幻憨野该痼赴挥傻"
            };

            var acct = bankCnt.acntNo.Trim();
            if (acct.Length < 19)
            {
                error = "账号长度错误!";
                throw new Exception(error);
            }

            string xmlString = ICBCNCHelper.GetXmlString("QACCBAL");

            InstallContext ic = new InstallContext();

            //初始化数据
            Type           type = bankCnt.GetType();
            PropertyInfo[] ps   = type.GetProperties();
            foreach (PropertyInfo i in ps)
            {
                object obj  = i.GetValue(bankCnt, null);
                string name = i.Name;
                if (obj != null)
                {
                    ic.Set(i.Name, obj.ToString());
                }
                else
                {
                    ic.Set(name, " ");
                }
            }

            ic.Set("currency", "001");
            ic.Set("bankCode", "102");
            ic.Set("cis", ConfigurationManager.AppSettings["cis"]);
            ic.Set("id", ConfigurationManager.AppSettings["id"]);

            //替换模板中的键为对应的值
            var newXmlStr = ReplaceHelper.ReplaceStringVar(xmlString, ic);

            ICBC_NetSafeClient iCBC_NetSafeClient = CreateOneNC();
            XML_EASY           balString          = new XML_EASY(newXmlStr);
            if (acct.Length == 19)
            {
                balString.SetXMLNode("AccNo", acct);
            }

            string seqNo, seqResult;
            iCBC_NetSafeClient.Run(balString.GetXML(), out seqNo, out seqResult);


            balString.SetXML(seqResult);
            if (balString.LocateString("<error>") >= 0)
            {
                error      = balString.GetXMLNode("error");
                httpsState = false;
                msg        = "前置机Https服务有问题:" + error;
            }
            else
            {
                httpsState = true;
                msg        = "前置机Https服务OK";
            }
            #endregion

            #region 检查签名服务
            string signstr = iCBC_NetSafeClient.GetSignStr("www.gtdata.com");
            if (!string.IsNullOrEmpty(signstr) && signstr.IndexOf("<sign>") > 0)
            {
                signState = true;
                msg      += "  前置机签名服务OK.";
            }
            else
            {
                signState = false;
                msg      += "  前置机签名服务有问题.";
            }
            #endregion

            iCBC_NetSafeClient = null;

            return(msg);
        }
コード例 #13
0
 static void Main(string[] args)
 {
     ReplaceHelper.Run(args);
 }
コード例 #14
0
 public void ResetManager()
 {
     ReplaceHelper.ResetManager();
 }
コード例 #15
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="obj"></param>
 /// <param name="messageProperty"></param>
 public override void Build(object obj, ObjectMessageProperty messageProperty)
 {
     ReplaceHelper.Replace(messageProperty, obj);
     PropertyManager.BuildInnerProperties(obj, messageProperty);
 }