コード例 #1
0
        /// <summary>
        ///     采用命名通道发送消息
        /// </summary>
        /// <param name="strMsg">参数</param>
        /// <param name="flag">标记</param>
        /// <returns>是否成功</returns>
        public bool SendMessage(string[] strMsg, CommniucationFlag flag)
        {
            bool result = true;

            try
            {
                if (strMsg == null)
                {
                    return(false);
                }

                //组织发送实体
                var gm = new GenericMessage
                {
                    MessageId       = Guid.NewGuid(),
                    Recipient       = "TellerSystem",
                    Originator      = "ExamSystem",
                    MessageFlag     = flag,
                    MessageDateTime = DateTime.Now,
                    Payload         = Encoding.UTF8.GetBytes(strMsg.Aggregate((c1, c2) => c1 + "!@" + c2))
                };

                byte[] b = MessageSerializers.SerializeMessage(gm);
                pipeClient.SendMessage(b);
            }
            catch (Exception)
            {
                result = false;
            }

            return(result);
        }
コード例 #2
0
 public GenericMessage(Guid messageId, string originator, string recipient, DateTime messageDateTime,
                       CommniucationFlag flag, byte[] payload)
 {
     _messageId       = messageId;
     _originator      = originator;
     _recipient       = recipient;
     _messageDateTime = messageDateTime;
     MessageFlag      = flag;
     _payload         = payload;
 }
コード例 #3
0
        /// <summary>
        ///     收到前端系统发过来的消息
        /// </summary>
        /// <param name="flag"></param>
        /// <param name="receiveString"></param>
        private void messageObject_ReceiveMessage(CommniucationFlag flag, string[] receiveString)
        {
            switch (flag)
            {
            case CommniucationFlag.A:
            {
                if (receiveString.Length != 5)
                {
                    Messenger.Default.Send("从前端系统参数传递过来的参数错误。");
                    return;
                }

                string questionkey = receiveString[0];    // 题主键
                string MenuNo      = receiveString[1];    // 交易号
                string serialid    = receiveString[2];    // 前端系统交易的前端流水号

                /*Temp0918
                 * string ciphertext1 = MessageDeal(receiveString[3].Split(new string[] { "@KSXT#" }, StringSplitOptions.RemoveEmptyEntries)[0]); // 提交报文
                 * string ciphertext2 = MessageDeal(receiveString[4].Split(new string[] { "@KSXT#" }, StringSplitOptions.RemoveEmptyEntries)[0]); // 返回报文
                 *
                 * var msg1 = new TellerSystemMessage(ciphertext1);
                 * var msg2 = new TellerSystemMessage(ciphertext2);
                 *
                 * // 取附件file1是发送报文的附件,file2是接收报文的附件
                 * var file1 = new TellerSystemFileData(receiveString[3].Split(new string[] { "@KSXT#" }, StringSplitOptions.None)[1]);
                 * var file2 = new TellerSystemFileData(receiveString[4].Split(new string[] { "@KSXT#" }, StringSplitOptions.None)[1]);
                 */

                Dictionary <string, string> DicMainPageData = new Dictionary <string, string>();
                Dictionary <string, Dictionary <string, string> > DicChildrenPageData = new Dictionary <string, Dictionary <string, string> >();
                Dictionary <string, Dictionary <string, string> > DicPrintPageData    = new Dictionary <string, Dictionary <string, string> >();
                {
                    var arraySendData = receiveString[3].Split(new string[] { "%*%" }, StringSplitOptions.RemoveEmptyEntries);
                    if (arraySendData != null && arraySendData.Length == 2)
                    {
                        var arrayMainPageData = arraySendData[0].Split(new string[] { "]*]" }, StringSplitOptions.RemoveEmptyEntries);
                        if (arrayMainPageData != null && arrayMainPageData.Length > 0)
                        {
                            foreach (var item in arrayMainPageData)
                            {
                                var arrayItem = item.Split(new string[] { "=*=" }, StringSplitOptions.None);
                                var tempKey   = arrayItem[0];
                                var tempValue = arrayItem[1];
                                if (!DicMainPageData.Keys.Contains(tempKey))
                                {
                                    DicMainPageData.Add(tempKey, tempValue);
                                }
                            }
                        }
                        var arrayChildrenPageData = arraySendData[1].Split(new string[] { "#*#" }, StringSplitOptions.RemoveEmptyEntries);

                        if (arrayChildrenPageData != null && arraySendData.Length > 0)
                        {
                            foreach (var OneChildPageData in arrayChildrenPageData)
                            {
                                var arrayOneChildPageData = OneChildPageData.Split(new string[] { ":*:" }, StringSplitOptions.RemoveEmptyEntries);
                                if (arrayOneChildPageData != null && arrayOneChildPageData.Length == 2)
                                {
                                    var ChildPageIndex                = arrayOneChildPageData[0];
                                    var OneChildPageElementDatas      = arrayOneChildPageData[1];
                                    var arrayOneChildPageElementDatas = OneChildPageElementDatas.Split(new string[] { "]*]" }, StringSplitOptions.RemoveEmptyEntries);
                                    Dictionary <string, string> OneChildPageDataDic = new Dictionary <string, string>();
                                    if (arrayOneChildPageElementDatas != null && arrayOneChildPageElementDatas.Length > 0)
                                    {
                                        foreach (var OneChildElementGroup in arrayOneChildPageElementDatas)
                                        {
                                            var arrayOneChildElementGroup = OneChildElementGroup.Split(new string[] { "=*=" }, StringSplitOptions.None);
                                            var tempKey   = arrayOneChildElementGroup[0];
                                            var tempValue = arrayOneChildElementGroup[1];
                                            if (!OneChildPageDataDic.Keys.Contains(tempKey))
                                            {
                                                OneChildPageDataDic.Add(tempKey, tempValue);
                                            }
                                        }
                                    }
                                    DicChildrenPageData.Add(ChildPageIndex, OneChildPageDataDic);
                                }
                            }
                        }
                    }
                }

                {
                    var arrayChildrenPageData = receiveString[4].Split(new string[] { "#*#" }, StringSplitOptions.RemoveEmptyEntries);

                    if (arrayChildrenPageData != null && arrayChildrenPageData.Length > 0)
                    {
                        foreach (var OneChildPageData in arrayChildrenPageData)
                        {
                            var arrayOneChildPageData = OneChildPageData.Split(new string[] { ":*:" }, StringSplitOptions.RemoveEmptyEntries);
                            if (arrayOneChildPageData != null && arrayOneChildPageData.Length == 2)
                            {
                                var ChildPageIndex                = arrayOneChildPageData[0];
                                var OneChildPageElementDatas      = arrayOneChildPageData[1];
                                var arrayOneChildPageElementDatas = OneChildPageElementDatas.Split(new string[] { "]*]" }, StringSplitOptions.RemoveEmptyEntries);
                                Dictionary <string, string> OneChildPageDataDic = new Dictionary <string, string>();
                                if (arrayOneChildPageElementDatas != null && arrayOneChildPageElementDatas.Length > 0)
                                {
                                    foreach (var OneChildElementGroup in arrayOneChildPageElementDatas)
                                    {
                                        var arrayOneChildElementGroup = OneChildElementGroup.Split(new string[] { "=*=" }, StringSplitOptions.None);
                                        var tempKey   = arrayOneChildElementGroup[0];
                                        var tempValue = arrayOneChildElementGroup[1];
                                        if (!OneChildPageDataDic.Keys.Contains(tempKey))
                                        {
                                            OneChildPageDataDic.Add(tempKey, tempValue);
                                        }
                                    }
                                }
                                DicPrintPageData.Add(ChildPageIndex, OneChildPageDataDic);
                            }
                        }
                    }
                }

                T_TradeQuestion tq = PaperData.QuestionCollection.SingleOrDefault(c => c.Key == questionkey);

                if (tq != null)
                {
                    string   sql   = @"INSERT INTO T_PAPER_ANSWER (F_KEY, F_QUESTION_KEY, F_PAPER_KEY, F_TRADE_NO, F_CIPHERTEXT1, F_CIPHERTEXT2, F_TELLERSYS_SERIAL) VALUES (SYS_GUID(), ?, ?, ?, ?, ?, ?)";
                    string[] param = new string[] { questionkey, PaperData.Key, MenuNo, receiveString[3], receiveString[4], serialid };
                    if (!ExamHandle.TryExecute(sql, param))
                    {
                        Messenger.Default.Send("保存交易答案失败");
                        return;
                    }
                    T_Sta_Answer[] an = tq.Sta_Answer.Where(c => { return(c.MenuNo == MenuNo && c.IsCreate); }).ToArray();

                    if (an.Length > 0)
                    {
                        foreach (T_Sta_Answer item in an)
                        {
                            Variable v = PaperData.Variables.Single(c => { return(c.Name == item.FldValue); });
                            if (item.Location == "主界面")
                            {
                                v.Value = DicMainPageData.Keys.Contains(item.FldCode) ? DicMainPageData[item.FldCode] : "";
                            }
                            else if (item.Location == "弹出页")
                            {
                                foreach (var eletempp in DicChildrenPageData)
                                {
                                    v.Value = eletempp.Value.Keys.Contains(item.FldCode) ? eletempp.Value[item.FldCode] : "";
                                    if (v.Value != "")
                                    {
                                        break;
                                    }
                                }
                            }
                            else if (item.Location == "打印页")
                            {
                                foreach (var eletempp in DicPrintPageData)
                                {
                                    v.Value = eletempp.Value.Keys.Contains(item.FldCode) ? eletempp.Value[item.FldCode] : "";
                                    if (v.Value != "")
                                    {
                                        break;
                                    }
                                }
                            }

                            //if (item.Location == 0)        // 0是提交报文
                            //    v.Value = msg1.GetValue("Fd" + item.FldCode);
                            //else if (item.Location == 1)   // 1是接受报文
                            //    v.Value = msg2.GetValue("Fd" + item.FldCode);
                            //else if (item.Location == 4)   // 4是提交附件
                            //    v.Value = file1.GetValue(int.Parse(item.FldCode));
                            //else if (item.Location == 5)   // 5是回收附件
                            //    v.Value = file2.GetValue(int.Parse(item.FldCode));
                        }
                    }

                    string variable = string.Empty;
                    for (int i = 0; i < PaperData.Variables.Count; i++)
                    {
                        variable += PaperData.Variables[i].Name + "=" + PaperData.Variables[i].Value;
                        variable += i == PaperData.Variables.Count - 1 ? "" : "]";
                    }

                    if (!ExamHandle.TryExecute(Sql.UPDATE_PAPERVARIABLE, variable, PaperData.Key))
                    {
                        Messenger.Default.Send("更新答案时出现异常");
                    }

                    // 只要走到这里就已经保存此题的答案了,就可以标记它的状态为已做过的状态
                    T_TradeQuestion question = PaperData.QuestionCollection.SingleOrDefault(c => c.Key == questionkey);

                    if (question != null)
                    {
                        question.State = QuestionState.Complete;
                        PaperData.CompletedQuestion += 1;
                    }
                }
            }
            break;

            case CommniucationFlag.B:
            {
                Messenger.Default.Send(Visibility.Visible, MessageToken.PaperVisibilityToken);

                if (receiveString.Length != 1)
                {
                    Messenger.Default.Send("从前端系统参数传递过来的参数错误");
                    return;
                }

                //string questionkey = receiveString[0]; // 题主键

                //T_TradeQuestion item = PaperData.QuestionCollection.SingleOrDefault(c => c.Key == questionkey);

                //if (item != null)
                //{
                //    item.State = QuestionState.Complete;
                //    PaperData.CompletedQuestion += 1;
                //}
            }
            break;
            }
        }