private bool HasNullPayInfo(PayInfo payInfo)
        {
            if (string.IsNullOrEmpty(payInfo.Name.Trim()))
            {
                return(true);
            }
            if (0 == payInfo.PayDay)
            {
                return(true);
            }
            if (0 == payInfo.BillDay)
            {
                return(true);
            }
            if (0.0 == payInfo.PayLimit)
            {
                return(true);
            }
            if (0.0 == payInfo.CostBase)
            {
                return(true);
            }

            return(false);
        }
        private void btPreView_Click(object sender, RoutedEventArgs e)
        {
            if (false == CheckPayInfoOK())
            {
                return;
            }

            SavePayInfo();

            List <PayInfo> listNotNullPayInfo = new List <PayInfo>();

            foreach (object item in dataGridPayInfo.Items)
            {
                if ((item as PayInfo) != null)
                {
                    PayInfo payInfo = item as PayInfo;
                    if (false == HasNullPayInfo(payInfo))
                    {
                        listNotNullPayInfo.Add(payInfo);
                    }
                }
            }
            if (listNotNullPayInfo.Count == 0)
            {
                MessageBox.Show("没有可预览的记录");
                return;
            }



            string        strFailReason = "";
            List <double> listSum       = PreViewHelper.GetSumList(
                Convert.ToInt32(comboPayDayCount.SelectedValue),
                Convert.ToInt32(comboPayMode.SelectedIndex),
                listNotNullPayInfo,
                listCompanyInfo,
                radomHelper,
                ref strFailReason);


            List <double> listCard = new List <double>();

            foreach (PayInfo payInfo in listNotNullPayInfo)
            {
                listCard.Add(payInfo.PayLimit);
            }

            listPreViewInfo             = PreViewHelper.ProductPreViewList(listSum, listCard);
            dataGridPreView.ItemsSource = listPreViewInfo;
        }
 private void comboCostBase_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     for (int i = 0; i < dataGridPayInfo.Items.Count; i++)
     {
         if (dataGridPayInfo.Items[i] is PayInfo)
         {
             PayInfo payInfo = (PayInfo)dataGridPayInfo.Items[i];
             if (0.0 != payInfo.CostBase)
             {
                 payInfo.CostBase = Convert.ToDouble(comboCostBase.SelectedValue);
             }
         }
     }
 }
        private void dataGridExcel_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (dataGridPayInfo.SelectedItems.Count == 1)
            {
                cbTrunCostExtForSafe.IsChecked = false;

                if ((dataGridPayInfo.SelectedItems[0] as PayInfo) != null)
                {
                    CurrentPayInfo        = dataGridPayInfo.SelectedItems[0] as PayInfo;
                    tbCostExtForSafe.Text = CurrentPayInfo.CostExtForSafe.ToString();
                }
            }
            else
            {
                CurrentPayInfo = null;
            }
        }
 private void btClean_Click(object sender, RoutedEventArgs e)
 {
     if (dataGridPayInfo.SelectedItems.Count > 0)
     {
         foreach (object item in dataGridPayInfo.SelectedItems)
         {
             if ((item as PayInfo) != null)
             {
                 PayInfo payInfo = item as PayInfo;
                 payInfo.Name     = "";
                 payInfo.PayDay   = 0;
                 payInfo.BillDay  = 0;
                 payInfo.PayLimit = 0.0;
                 payInfo.CostBase = 0.0;
             }
         }
         SavePayInfo();
     }
     else
     {
         return;
     }
 }
        private void SavePayInfo()
        {
            using (StreamWriter SW = new StreamWriter(iniPayFileName))
            {
                string line = null;

                for (int i = 0; i < dataGridPayInfo.Items.Count; i++)
                {
                    if (dataGridPayInfo.Items[i] is PayInfo)
                    {
                        PayInfo  payInfo   = (PayInfo)dataGridPayInfo.Items[i];
                        string[] rgPayInfo = new string[payInfoMemberCount];
                        rgPayInfo[0] = payInfo.Name;
                        rgPayInfo[1] = payInfo.BillDay.ToString();
                        rgPayInfo[2] = payInfo.PayDay.ToString();
                        rgPayInfo[3] = payInfo.PayLimit.ToString();
                        rgPayInfo[4] = payInfo.CostBase.ToString();
                        rgPayInfo[5] = payInfo.CostExtForSafe.ToString();
                        line         = string.Join(",", rgPayInfo);
                        SW.WriteLine(line);
                    }
                }
            }
        }
        void initINI()
        {
            #region 公司文件存在
            if (System.IO.File.Exists(iniCompanyFileName) == true)
            {
                using (StreamReader SR = new StreamReader(iniCompanyFileName))
                {
                    string line = null;
                    while ((line = SR.ReadLine()) != null)
                    {
                        string[] pms = line.Split(',');

                        if (pms.Length < companyInfoMemberCount)
                        {
                            break;
                        }

                        CompanyInfo companyInfo = new CompanyInfo();
                        companyInfo.LiveliHood       = pms[0];
                        companyInfo.Normal           = pms[1];
                        companyInfo.HightConsumption = pms[2];

                        listCompanyInfo.Add(companyInfo);

                        if (listCompanyInfo.Count == MaxLineCompanyInfo)
                        {
                            break;
                        }
                    }
                }
            }
            #endregion

            #region 信用卡信息存在
            if (System.IO.File.Exists(iniPayFileName) == true)
            {
                using (StreamReader SR = new StreamReader(iniPayFileName))
                {
                    string line = null;

                    while ((line = SR.ReadLine()) != null)
                    {
                        string[] pms = line.Split(',');

                        if (pms.Length < payInfoMemberCount)
                        {
                            break;
                        }

                        PayInfo payInfo = new PayInfo();
                        payInfo.Name           = pms[0];
                        payInfo.BillDay        = Convert.ToInt32(pms[1]);
                        payInfo.PayDay         = Convert.ToInt32(pms[2]);
                        payInfo.PayLimit       = Convert.ToDouble(pms[3]);
                        payInfo.CostBase       = Convert.ToDouble(pms[4]);
                        payInfo.CostExtForSafe = Convert.ToDouble(pms[5]);

                        listPayInfo.Add(payInfo);

                        if (listPayInfo.Count == MaxLinePayInfo)
                        {
                            break;
                        }
                    }
                }
            }
            #endregion

            #region 补充空行
            while (listPayInfo.Count < MaxLinePayInfo)
            {
                PayInfo payInfo = new PayInfo();
                listPayInfo.Add(payInfo);
            }
            while (listCompanyInfo.Count < MaxLineCompanyInfo)
            {
                CompanyInfo companyInfo = new CompanyInfo();
                listCompanyInfo.Add(companyInfo);
            }
            #endregion
        }
        private void dataGridPayInfo_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            if (
                e.Key == Key.V &&
                (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control
                )
            {
                IDataObject ido = Clipboard.GetDataObject();

                if (ido == null)
                {
                    return;
                }
                string[] formats = ido.GetFormats();
                string   format  = formats[0].ToString();
                object   data    = ido.GetData(format);

                string   strPaste = data.ToString();
                string[] rows     = strPaste.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);

                if (rows.Length <= 0)
                {
                    return;
                }

                int startIndex = dataGridPayInfo.SelectedIndex;
                if (-1 == startIndex)    //未选中
                {
                    return;
                }

                int index = 0;
                for (int i = 0; i < rows.Count(); i++)
                {
                    if (index + startIndex >= MaxLinePayInfo)
                    {
                        return;
                    }

                    string[] rgParam    = rows[i].Split(',');;
                    int      paramCount = 5;
                    if (rgParam.Length != paramCount)
                    {
                        return;
                    }

                    int    billDay  = 0;
                    int    payDay   = 0;
                    double payLimit = 0.0;
                    double costBase = 0.0;


                    bool fBillDay  = int.TryParse(rgParam[1], out billDay);
                    bool fPayDay   = int.TryParse(rgParam[2], out payDay);
                    bool fPayLimit = double.TryParse(rgParam[3], out payLimit);
                    bool fCostBase = double.TryParse(rgParam[4], out costBase);
                    if (
                        fBillDay &&
                        fPayDay &&
                        fPayLimit &&
                        fCostBase
                        )
                    {    //全部可解析
                        if (dataGridPayInfo.Items[index + startIndex] is PayInfo)
                        {
                            int     sub     = index + startIndex;
                            PayInfo payInfo = dataGridPayInfo.Items[sub] as PayInfo;
                            if (null != payInfo)
                            {
                                payInfo.Name     = rgParam[0];
                                payInfo.BillDay  = billDay;
                                payInfo.PayDay   = payDay;
                                payInfo.PayLimit = payLimit;
                                payInfo.CostBase = costBase;
                                index++;
                            }
                        }
                    }
                    else    //部分可解析
                    {
                        if (dataGridPayInfo.Items[index + startIndex] is PayInfo)
                        {
                            int     sub     = index + startIndex;
                            PayInfo payInfo = dataGridPayInfo.Items[sub] as PayInfo;
                            if (null != payInfo)
                            {
                                payInfo.Name     = rgParam[0];
                                payInfo.BillDay  = billDay;
                                payInfo.PayDay   = payDay;
                                payInfo.PayLimit = payLimit;
                                payInfo.CostBase = costBase;
                                index++;
                            }
                        }
                    }
                }
            }
        }
        private void btOutPutExcel_Click(object sender, RoutedEventArgs e)
        {
            if (false == CheckPayInfoOK())
            {
                return;
            }

            SavePayInfo();

            List <PayInfo> listNotNullPayInfo = new List <PayInfo>();

            foreach (object item in dataGridPayInfo.Items)
            {
                if ((item as PayInfo) != null)
                {
                    PayInfo payInfo = item as PayInfo;
                    if (false == HasNullPayInfo(payInfo))
                    {
                        listNotNullPayInfo.Add(payInfo);
                    }
                }
            }
            if (listNotNullPayInfo.Count == 0)
            {
                MessageBox.Show("没有可导出的记录");
                return;
            }

            string singleName = @"z整月安排.xls";
            string fullName   = System.IO.Path.Combine(
                Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory),
                singleName);

            int index = 1;

            while (true)
            {
                if (System.IO.File.Exists(fullName) == true)
                {
                    singleName = string.Format("z整月安排{0}.xls", index);
                    fullName   = System.IO.Path.Combine(
                        Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory),
                        singleName);
                    index++;
                }
                else
                {
                    break;
                }
            }

            string strFailReason = "";

            if (ExcelHelper.OutPutExcel(excelTempFieName,
                                        fullName,
                                        Convert.ToInt32(comboPayDayCount.SelectedValue),
                                        Convert.ToInt32(comboPayMode.SelectedIndex),
                                        listNotNullPayInfo,
                                        listCompanyInfo,
                                        radomHelper,
                                        ref strFailReason))
            {
                MessageBox.Show("导出完成");
            }
            else
            {
                MessageBox.Show(string.Format("导出失败。原因为:{0}", strFailReason));
            }
        }
        void initINI()
        {
            #region 公司文件存在
            if (System.IO.File.Exists(iniCompanyFileName) == true)
            {
                using (StreamReader SR = new StreamReader(iniCompanyFileName))
                {
                    string line = null;
                    while ((line = SR.ReadLine()) != null)
                    {
                        string[] pms = line.Split(',');

                        if (pms.Length < companyInfoMemberCount)
                        {
                            break;
                        }

                        CompanyInfo companyInfo = new CompanyInfo();
                        companyInfo.LiveliHood = pms[0];
                        companyInfo.Normal = pms[1];
                        companyInfo.HightConsumption = pms[2];

                        listCompanyInfo.Add(companyInfo);

                        if (listCompanyInfo.Count == MaxLineCompanyInfo)
                        {
                            break;
                        }
                    }
                }
            }
            #endregion

            #region 信用卡信息存在
            if (System.IO.File.Exists(iniPayFileName) == true)
            {
                using (StreamReader SR = new StreamReader(iniPayFileName))
                {
                    string line = null;

                    while ((line = SR.ReadLine()) != null)
                    {
                        string[] pms = line.Split(',');

                        if (pms.Length < payInfoMemberCount)
                        {
                            break;
                        }

                        PayInfo payInfo = new PayInfo();
                        payInfo.Name = pms[0];
                        payInfo.BillDay = Convert.ToInt32(pms[1]);
                        payInfo.PayDay = Convert.ToInt32(pms[2]);
                        payInfo.PayLimit = Convert.ToDouble(pms[3]);
                        payInfo.CostBase = Convert.ToDouble(pms[4]);
                        payInfo.CostExtForSafe = Convert.ToDouble(pms[5]);

                        listPayInfo.Add(payInfo);

                        if (listPayInfo.Count == MaxLinePayInfo)
                        {
                            break;
                        }
                    }
                }
            }
            #endregion

            #region 补充空行
            while (listPayInfo.Count < MaxLinePayInfo)
            {
                PayInfo payInfo = new PayInfo();
                listPayInfo.Add(payInfo);
            }
            while (listCompanyInfo.Count < MaxLineCompanyInfo)
            {
                CompanyInfo companyInfo = new CompanyInfo();
                listCompanyInfo.Add(companyInfo);
            }
            #endregion
        }
        private bool HasNullPayInfo(PayInfo payInfo)
        {
            if (string.IsNullOrEmpty(payInfo.Name.Trim()))
            {
                return true;
            }
            if (0 == payInfo.PayDay)
            {
                return true;
            }
            if (0 == payInfo.BillDay)
            {
                return true;
            }
            if (0.0 == payInfo.PayLimit)
            {
                return true;
            }
            if (0.0 == payInfo.CostBase)
            {
                return true;
            }

            return false;
        }
        private void dataGridExcel_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (dataGridPayInfo.SelectedItems.Count == 1)
            {
                cbTrunCostExtForSafe.IsChecked = false;

                if ((dataGridPayInfo.SelectedItems[0] as PayInfo) != null)
                {
                    CurrentPayInfo = dataGridPayInfo.SelectedItems[0] as PayInfo;
                    tbCostExtForSafe.Text = CurrentPayInfo.CostExtForSafe.ToString();
                }
            }
            else
            {
                CurrentPayInfo = null;
            }
        }