WvPrint.cs 12.1 KB
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CsbrHcgClient
{
    public partial class WvPrint : Form
    {
        public WvPrint()
        {
            InitializeComponent();
        }
        private WvControl wvControl = new WvControl();
        private DataTable printInfoTable = new DataTable();
        private DataTable printedInfoTable = new DataTable();

        PrintHelper printHelper = new PrintHelper();
        private void tableLayoutPanel1_Paint(object sender, PaintEventArgs e)
        {
           
        }
        private bool jobRunFlg = false;
        private pub_handle pubhandle = new pub_handle();
        DataSet ds = new DataSet();
        private List<JobConroller> listJobController = null;
        private void InitJob()
        {
            try
            {
                StringBuilder smess = new StringBuilder();
                ds = pubhandle.Init("Jobconfig.xml", ref smess);
                if (ds != null && ds.Tables.Count > 0)
                {
                    listJobController = new List<JobConroller>();
                    if (listJobController.Count == 0)
                    {
                        for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                        {
                            DataRow row = ds.Tables[0].Rows[i];
                            if (row["RunFlg"].ToString() == "是")
                            {
                                JobConroller controller = new JobConroller(row);
                            
                                listJobController.Add(controller);
                                controller.StartTimer();

                            }

                        }
                    }
                }
                else
                {
                    MessageBox.Show(smess.ToString(), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        private void WvPrint_Load(object sender, EventArgs e)
        {
            string configpath = AppDomain.CurrentDomain.BaseDirectory + "config.ini";
            if (!File.Exists(configpath))
            {
                FileStream fs = new FileStream(configpath, FileMode.OpenOrCreate);
            }
            //写入配置
           // WinAPI.ProfileWriteValue("hcgclient", "update", DateTime.Now.ToString(), configpath);
            InitJob();
            cbx_deptBindTable();
            //cbx_deptedBindTable();
            InitPrintInfo();
            DeleteLog();


        }

        private void cbx_deptBindTable()
        {
            DataTable dt = wvControl.GetDept();
            cbx_dept.DisplayMember = dt.Columns[1].ColumnName;
            cbx_dept.ValueMember = dt.Columns[0].ColumnName;
            cbx_dept.DataSource = dt.DefaultView;
        }

        private void cbx_deptedBindTable()
        {
            DataTable dt = wvControl.GetDepted();
            cxb_depted.DisplayMember = dt.Columns[1].ColumnName;
            cxb_depted.ValueMember = dt.Columns[0].ColumnName;
            cxb_depted.DataSource = dt.DefaultView;
        }
        private void InitPrintInfo()
        {
            try
            {
                
                string configpath = AppDomain.CurrentDomain.BaseDirectory + "config.ini";

               this.lbl_uptime.Text= WinAPI.ProfileReadValue("hcgclient", "update", configpath);

                DataTable table = wvControl.GetPrintCount();
                lbl_count.Text = table.Rows[0]["allcount"].ToString();
                lbl_printnum.Text = table.Rows[0]["printcount"].ToString();
                lbl_printednum.Text= table.Rows[0]["printedcount"].ToString();
                printInfoTable = wvControl.GetPrintInfo(cbx_dept.SelectedValue.ToString());
                this.dgv_Detail.DataSource = printInfoTable;
            }
            catch (Exception ex)
            { MessageBox.Show(ex.Message); }
        }

        private void InitPrintedInfo()
        {
            try
            {
                printedInfoTable = wvControl.GetPrintedInfo(cxb_depted.SelectedValue.ToString());
                this.dgv_Detailed.DataSource = printedInfoTable;
            }
            catch (Exception ex)
            { MessageBox.Show(ex.Message); }
        }

        private void dgv_Detail_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex < 0)
                return;
            if (dgv_Detail.Columns[e.ColumnIndex].Name == "Print")
            {
               DataTable dd = printInfoTable.Clone();//赋值结构
               
               DataRow dr = dd.NewRow();
               dr = (dgv_Detail.Rows[e.RowIndex].DataBoundItem as DataRowView).Row;//微软提供的唯一的转换DataRow
               
                try
                {
                    printHelper.Print(dr);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally { InitPrintInfo(); }
            }

        }

        private void chk_SelectAll_CheckedChanged(object sender, EventArgs e)
        {
            if (chk_SelectAll.Checked == true)
            {
                //选中全部
                for (int i = 0; i < dgv_Detail.Rows.Count; i++)
                {
                   dgv_Detail.Rows[i].Cells["选择"].Value = true;
                }
            }
            //全选的复选框取消
            else
            {
                //全部取消
                for (int i = 0; i < dgv_Detail.Rows.Count; i++)
                {
                    dgv_Detail.Rows[i].Cells["选择"].Value = false;
                }
            }
        }

        private void btn_manyprint_Click(object sender, EventArgs e)
        {
          
            for (int i = 0; i < dgv_Detail.Rows.Count; i++)
            {
                if (dgv_Detail.Rows[i].Cells["选择"].Value.ToString().ToUpper()=="True".ToUpper())
                {
                    DataTable dd = printInfoTable.Clone();//赋值结构

                    DataRow dr = dd.NewRow();
                    dr = (dgv_Detail.Rows[i].DataBoundItem as DataRowView).Row;//微软提供的唯一的转换DataRow
                    try
                    {
                        printHelper.Print(dr);
                    }
                    catch (Exception ex)
                    {
                        InitPrintInfo();
                        MessageBox.Show(ex.Message);
                        
                        return;
                    }
                   
                }
            }
            InitPrintInfo();
        }

        private void DeleteLog()
        {
            try
            {
                string strFolderPath = System.Environment.CurrentDirectory + @"\Log\";
                DirectoryInfo dyInfo = new DirectoryInfo(strFolderPath);
                //获取文件夹下所有的文件
                foreach (DirectoryInfo dirInfo in dyInfo.GetDirectories())
                {
                    //判断文件日期是否小于七天,是则删除
                    if (dirInfo.CreationTime < DateTime.Now.AddDays(-7))
                    {
                        foreach (FileInfo feInfo in dirInfo.GetFiles())
                        {
                            feInfo.Delete();
                        }
                        dirInfo.Delete();
                    }
                }
            }
            catch (Exception ex)
            { }
        }
        private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (tabControl1.SelectedIndex==0)
            {
                cbx_deptBindTable();
                InitPrintInfo();

            }
            else {
                cbx_deptedBindTable();
                InitPrintedInfo();
            }
            
        }

        private void dgv_Detailed_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex < 0)
                return;
            if (dgv_Detailed.Columns[e.ColumnIndex].Name == "Print1")
            {
                DataTable dd = printedInfoTable.Clone();//赋值结构

                DataRow dr = dd.NewRow();
                dr = (dgv_Detailed.Rows[e.RowIndex].DataBoundItem as DataRowView).Row;//微软提供的唯一的转换DataRow
               
                try
                {
                    printHelper.RePrint(dr);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);

                }
            }
        }
        private void chked_SelectAll_CheckedChanged(object sender, EventArgs e)
        {
            if (chked_SelectAll.Checked == true)
            {
                //选中全部
                for (int i = 0; i < dgv_Detailed.Rows.Count; i++)
                {
                    dgv_Detailed.Rows[i].Cells["选择1"].Value = true;
                }
            }
            //全选的复选框取消
            else
            {
                //全部取消
                for (int i = 0; i < dgv_Detailed.Rows.Count; i++)
                {
                    dgv_Detailed.Rows[i].Cells["选择1"].Value = false;
                }
            }
        }

        private void btn_printed_Click(object sender, EventArgs e)
        {
            int count = 0;
            for (int i = 0; i < dgv_Detailed.Rows.Count; i++)
            {
                if (dgv_Detailed.Rows[i].Cells["选择1"].Value.ToString().ToUpper() == "True".ToUpper())
                {
                    
                     try
                    {
                        wvControl.UpdateSts(dgv_Detailed.Rows[i].Cells["单据号1"].Value.ToString(), dgv_Detailed.Rows[i].Cells["行号1"].Value.ToString());
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                        return;
                    }

                }
            }
            InitPrintedInfo();
        }

        private void btn_refresh_Click(object sender, EventArgs e)
        {
            InitPrintInfo();
        }

        private void WvPrint_FormClosing(object sender, FormClosingEventArgs e)
        {
           
            for (int i = 0; i < listJobController.Count; i++)
            {
                if (listJobController[i].runflg)
                {
                    try
                    {
                        if (!listJobController[i].StopTimer())
                        {  }

                    }
                    catch (Exception ex)
                    { }
                }


            }


            jobRunFlg = false;

            if (jobRunFlg == true)
            {
                MessageBox.Show("后台获取数据任务正在执行,请稍等");
                e.Cancel=true;
            }
            else
            {
                if (listJobController != null)
                {
                    for (int i = 0; i < listJobController.Count; i++)
                    {
                        if (!(listJobController[i].runflg == false && listJobController[i].stopflg == true))
                        {
                            MessageBox.Show(listJobController[i].jobName + "任务正在运行,请稍等");
                            return;
                        }

                    }
                }
            }
            Application.Exit();
        }

        private void btn_search_Click(object sender, EventArgs e)
        {
            InitPrintedInfo();
        }

        private void dgv_Detail_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
        {

        }

        private void dgv_Detailed_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
        {
                      
        }

        private void dgv_Detailed_RowStateChanged(object sender, DataGridViewRowStateChangedEventArgs e)
        {

        }
    }
}