/// <summary>
        /// 根据MeterDisassemblyTaskResultInfo组合成任务结果文件内容
        /// 换表和销户的任务结果
        /// </summary>
        /// <param name="resultinfo"></param>
        /// <returns></returns>
        private static String GetResultFileContent_Replase(MeterDisassemblyTaskResultInfo resultinfo)
        {
            List <String> contentlist = new List <string> {
            };

            /*TaskID=XX(当前的任务ID)
             * TaskType=1(0-退购,1-换表,2-销户)
             * TechnicianID =XX(上门工程师的ID)
             * MeterAddress=012017062001(表通信地址,射频卡表是LAPIS中的meterbasicinfo里面的communicationaddress)
             * MeterStatue=0/1 (表计的状态,0-损坏,1-正常)
             * UsedValue=XX (配合MeterStatue,如果表计正常,则UsedValue指总使用金额/量。如果表计损坏,则UsedValue指当前机械读数)
             * RemainValue=XX(配合MeterStatue,如果表计正常,则RemainValue指剩余金额/量。如果表计损坏,保持为0,返回LAPIS由系统计算)
             * OldMeterTotalDialReading=XX(表计中的总使用量,如果表计正常,则表示标识00000010总使用量。如果表计损坏,则指当前机械读数)
             * Result=0/1 (任务是否成功,0-失败,1-成功)
             * Feedback= (工程师反馈的任务结果信息)
             * Date=20XX-XX-XX (操作日期)*/
            String filestr = Const_TaskID + "=" + resultinfo.TaskID.ToString();

            contentlist.Add(filestr);
            filestr = Const_TaskType + "=" + ((Int32)resultinfo.TaskType).ToString();
            contentlist.Add(filestr);
            filestr = Const_TechnicianID + "=" + resultinfo.TechnicianID.ToString();
            contentlist.Add(filestr);

            filestr = Const_MeterAddress + "=" + resultinfo.MeterAddress;
            contentlist.Add(filestr);
            String resstr = (resultinfo.MeterStatue) ? "1" : "0";

            filestr = Const_MeterStatue + "=" + resstr;
            contentlist.Add(filestr);

            filestr = Const_UsedValue + "=" + resultinfo.TotalComsumedValue.ToString("F2");
            contentlist.Add(filestr);
            filestr = Const_RemainValue + "=" + resultinfo.RemainValue.ToString("F2");
            contentlist.Add(filestr);

            filestr = Const_OldMeterTotalDialReading + "=" + resultinfo.OldMeterTotalDialReading.ToString("F2");
            contentlist.Add(filestr);


            resstr  = (resultinfo.TaskResult == (Int32)eTaskResult.Failed) ? "0" : "1";
            filestr = Const_Result + "=" + resstr;
            contentlist.Add(filestr);

            filestr = Const_Feedback + "=" + resultinfo.Feedback;
            contentlist.Add(filestr);

            resstr  = resultinfo.OperateFinishTime.ToString("yyyy-MM-dd");
            filestr = Const_Date + "=" + resstr;
            contentlist.Add(filestr);

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

            return(reslutfile);
        }
        /// <summary>
        /// 获取换表、销户的任务结果信息
        /// </summary>
        /// <param name="type"></param>
        /// <param name="disassemblytaskinfo"></param>
        /// <returns></returns>
        private static Boolean GetTaskResultInfo_Replace(eTaskType type, ref MeterDisassemblyTaskResultInfo disassemblytaskinfo)
        {
            if (m_dicFileCon == null)
            {
                return(false);
            }
            //判断任务类型,获取弹出的处理界面
            disassemblytaskinfo = new MeterDisassemblyTaskResultInfo {
            };
            //TaskID
            if (!m_dicFileCon.Keys.Contains(Const_TaskID))
            {
                return(false);
            }
            disassemblytaskinfo.TaskID = Convert.ToInt32(m_dicFileCon[Const_TaskID]);

            //TaskType
            disassemblytaskinfo.TaskType = (Int32)type;

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

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

            //MeterStatue
            if (!m_dicFileCon.Keys.Contains(Const_MeterStatue))
            {
                return(false);
            }
            disassemblytaskinfo.MeterStatue = (m_dicFileCon[Const_MeterStatue] == "1") ? true : false;

            //UsedValue
            if (!m_dicFileCon.Keys.Contains(Const_UsedValue))
            {
                return(false);
            }
            disassemblytaskinfo.TotalComsumedValue = Convert.ToDouble(m_dicFileCon[Const_UsedValue]);

            //RemainValue
            if (!m_dicFileCon.Keys.Contains(Const_RemainValue))
            {
                return(false);
            }
            disassemblytaskinfo.RemainValue = Convert.ToDouble(m_dicFileCon[Const_RemainValue]);

            //OldMeterTotalDialReading
            if (!m_dicFileCon.Keys.Contains(Const_OldMeterTotalDialReading))
            {
                return(false);
            }
            disassemblytaskinfo.OldMeterTotalDialReading = Convert.ToDouble(m_dicFileCon[Const_OldMeterTotalDialReading]);

            //Result
            if (!m_dicFileCon.Keys.Contains(Const_Result))
            {
                return(false);
            }
            disassemblytaskinfo.TaskResult = (m_dicFileCon[Const_Result] == "1") ? (Int32)eTaskResult.Success : (Int32)eTaskResult.Failed;

            //Feedback
            if (!m_dicFileCon.Keys.Contains(Const_Feedback))
            {
                return(false);
            }
            disassemblytaskinfo.Feedback = m_dicFileCon[Const_Feedback];

            //Date
            if (!m_dicFileCon.Keys.Contains(Const_Date))
            {
                return(false);
            }
            disassemblytaskinfo.OperateFinishTime = DateTime.Now;
            DateTime.TryParse(m_dicFileCon[Const_Date], out disassemblytaskinfo.OperateFinishTime);

            return(true);
        }
        /// <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>
        /// 解析任务结果文件,获取结果信息
        /// </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="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);
            }
        }
 public void CopyFrom(MeterDisassemblyTaskResultInfo src)
 {
     base.CopyFrom((MeterDisassemblyTaskBase)src);
     MeterAddress      = src.MeterAddress;
     OperateFinishTime = src.OperateFinishTime;
 }