/// <summary>
        /// 解析任务结果文件,获取结果信息
        /// </summary>
        /// <param name="filename"></param>
        /// <param name="tasktype"></param>
        /// <param name="refundtaskinfo"></param>
        /// <param name="disassemblytaskinfo"></param>
        /// <returns></returns>
        public static Boolean ParseTaskReslutFile(String filename, ref eTaskType tasktype,
                                                  ref RefundTaskResultInfo refundtaskinfo, ref MeterDisassemblyTaskResultInfo disassemblytaskinfo)
        {
            //首先,初始化解密任务文件的密钥
            InitKey(EncryptKey_ResultFile);

            //取出全部的文件内容
            String  encryptstr = String.Empty;
            Boolean bl         = FileProcessor.ReadFileString(filename, out encryptstr, false);

            if (!bl || String.IsNullOrEmpty(encryptstr))
            {
                return(false);
            }

            //解析
            String filestr = DencryptTaskFileInfo(encryptstr);

            if (String.IsNullOrEmpty(filestr))
            {
                return(false);
            }

            //获取任务类型
            bl = GetTaskType(filestr, ref tasktype);
            if (!bl)
            {
                return(false);
            }

            //根据不同的任务类型获取任务信息类数据
            bl = GetTaskResultInfo(tasktype, ref refundtaskinfo, ref disassemblytaskinfo);
            return(bl);
        }
        /// <summary>
        ///  创建任务结果文件
        /// </summary>
        /// <param name="tasktype"></param>
        /// <param name="refundtaskinfo"></param>
        /// <param name="resultinfo"></param>
        /// <param name="filenamestr"></param>
        /// <returns></returns>
        public static Boolean BuildTaskReslutFile(eTaskType tasktype,
                                                  RefundTaskResultInfo refundtaskinfo, MeterDisassemblyTaskResultInfo resultinfo, ref String filenamestr)
        {
            //首先,初始化解密任务文件的密钥
            InitKey(EncryptKey_ResultFile);

            //先获取结果文件名
            String filename = GetFileName(tasktype, refundtaskinfo, resultinfo);

            if (String.IsNullOrEmpty(filename))
            {
                return(false);
            }
            filename    = ResultFileFolderPath + filename;
            filenamestr = filename;

            //构建文件具体的内容
            String filecontentstr = GetResultFileContent(tasktype, refundtaskinfo, resultinfo);

            if (String.IsNullOrEmpty(filecontentstr))
            {
                return(false);
            }

            //加密文件内容
            String encryptresfilestr = EncryptInfo(filecontentstr);

            //创建文件
            Boolean bl = FileProcessor.WriteFileString(filename, encryptresfilestr, false);

            return(true);
        }
        /// <summary>
        /// 获取退购的任务结果信息
        /// </summary>
        /// <param name="type"></param>
        /// <param name="refundtaskinfo"></param>
        /// <returns></returns>
        private static Boolean GetTaskResultInfo_Refund(eTaskType type, ref RefundTaskResultInfo refundtaskinfo)
        {
            if (m_dicFileCon == null)
            {
                return(false);
            }
            //判断任务类型,获取弹出的处理界面
            refundtaskinfo = new RefundTaskResultInfo {
            };
            //TaskID
            if (!m_dicFileCon.Keys.Contains(Const_TaskID))
            {
                return(false);
            }
            refundtaskinfo.TaskID = Convert.ToInt32(m_dicFileCon[Const_TaskID]);

            //RefundTradeID
            if (!m_dicFileCon.Keys.Contains(Const_RefundTradeID))
            {
                return(false);
            }
            refundtaskinfo.RefundTradeID = Convert.ToInt32(m_dicFileCon[Const_RefundTradeID]);

            //TechnicianID
            if (!m_dicFileCon.Keys.Contains(Const_TechnicianID))
            {
                return(false);
            }
            refundtaskinfo.TechnicianID = Convert.ToInt32(m_dicFileCon[Const_TechnicianID]);

            //MeterAddress
            if (!m_dicFileCon.Keys.Contains(Const_MeterAddress))
            {
                return(false);
            }
            refundtaskinfo.MeterAddress = m_dicFileCon[Const_MeterAddress];

            //TaskFinished
            if (!m_dicFileCon.Keys.Contains(Const_TaskFinished))
            {
                return(false);
            }
            refundtaskinfo.TaskFinished = (m_dicFileCon[Const_TaskFinished] == "1") ? true : false;

            //AllowRefund
            if (!m_dicFileCon.Keys.Contains(Const_AllowRefund))
            {
                return(false);
            }
            refundtaskinfo.EnableRefund = (m_dicFileCon[Const_AllowRefund] == "1") ? true : false;

            //TaskProcess
            if (!m_dicFileCon.Keys.Contains(Const_TaskProcess))
            {
                return(false);
            }
            refundtaskinfo.TaskProcess = m_dicFileCon[Const_TaskProcess];
            return(true);
        }
        /// <summary>
        /// 组合成任务结果文件内容
        /// </summary>
        /// <param name="resultinfo"></param>
        /// <returns></returns>
        private static String GetResultFileContent(eTaskType type, RefundTaskResultInfo refundtaskinfo, MeterDisassemblyTaskResultInfo resultinfo)
        {
            //根据任务类型
            switch (type)
            {
            case eTaskType.CloseCustomer:
            case eTaskType.ReplaceMeter:
                return(GetResultFileContent_Replase(resultinfo));

            case eTaskType.Refund:
                return(GetResultFileContent_Refund(refundtaskinfo));

            default:
                return(null);
            }
        }
        /// <summary>
        /// 解密任务结果文件
        /// </summary>
        /// <param name="type"></param>
        /// <param name="refundtaskinfo"></param>
        /// <param name="disassemblytaskinfo"></param>
        /// <returns></returns>
        private static Boolean GetTaskResultInfo(eTaskType type, ref RefundTaskResultInfo refundtaskinfo, ref MeterDisassemblyTaskResultInfo disassemblytaskinfo)
        {
            refundtaskinfo      = null;
            disassemblytaskinfo = null;
            switch (type)
            {
            case eTaskType.Refund:
                return(GetTaskResultInfo_Refund(type, ref refundtaskinfo));

            case eTaskType.CloseCustomer:
            case eTaskType.ReplaceMeter:
                return(GetTaskResultInfo_Replace(type, ref disassemblytaskinfo));

            default:
                return(false);
            }
        }
        /// <summary>
        /// 根据RefundTaskInfo组合成任务结果文件内容
        /// 仅退购的任务结果
        /// </summary>
        /// <param name="resultinfo"></param>
        /// <returns></returns>
        private static String GetResultFileContent_Refund(RefundTaskResultInfo refundtaskinfo)
        {
            if (refundtaskinfo == null)
            {
                return(null);
            }
            List <String> contentlist = new List <string> {
            };

            /*TaskID=XX(当前的任务ID)
             * TaskType=0:退购,1:换表,2:销户
             * TechnicianID =XX(上门工程师的ID)
             * MeterAddress=012017062001(表通信地址)
             * TaskFinished=0/1 (任务是否完成)
             * AllowRefund=0/1 (是否允许退购,0:禁止,1:允许)
             * TaskProcess=FinishedStep;Step1Value;Step2Value;………. (以分号划分,第一个数据为总完成的步骤数,后面数据为每个步骤的值)
             */
            String filestr = Const_TaskID + "=" + refundtaskinfo.TaskID.ToString();

            contentlist.Add(filestr);
            filestr = Const_TaskType + "=0";
            contentlist.Add(filestr);

            filestr = Const_RefundTradeID + "=" + refundtaskinfo.RefundTradeID.ToString();
            contentlist.Add(filestr);

            filestr = Const_TechnicianID + "=" + refundtaskinfo.TechnicianID.ToString();
            contentlist.Add(filestr);

            filestr = Const_MeterAddress + "=" + refundtaskinfo.MeterAddress;
            contentlist.Add(filestr);

            filestr = Const_TaskFinished + "=" + (refundtaskinfo.TaskFinished ? "1" : "0");
            contentlist.Add(filestr);

            filestr = Const_AllowRefund + "=" + (refundtaskinfo.EnableRefund ? "1" : "0");
            contentlist.Add(filestr);

            filestr = Const_TaskProcess + "=" + refundtaskinfo.TaskProcess;
            contentlist.Add(filestr);

            String reslutfile = DataFormatProcessor.ListToString(contentlist, Environment.NewLine);

            return(reslutfile);
        }