订单管理_03查询订单信息流程

 WCF物流管理系统(三)


订单管理_03查询订单信息流程

订单管理_03查询订单信息流程

图3-1整体效果图

业务介绍:

                  物流系统是指:用以管理运输货物和运输的软件系统,功能一般包括了:填写运输订单、分包、配载、发车、运输、收货几个主要部分。

                  查看已经录入数据库的订单信息是订单管理的主要功能之一,其作用是查看某一条订单的详细信息和状态,以及该订单中的运输货物列表、货物运输信息。

控件列表:

控件名

控件类型

控件说明

只读否

dttmpkQiShiShiJian

DateTimePicker

用于选择订单的起始时间,为根据时间查询的条件之一,当   rdbtnRiQi 被选中时,本控件内的值为条件。

 

dttmpkDaoDaShiJian

DateTimePicker

用于选择订单的结束时间,为根据时间查询的条件之一,当   rdbtnRiQi 被选中时,本控件内的值为条件。

 

rdbtnRiQi

RadioButton

用于选择查询类型为根据时间查询,当被选中时为根据时间查询,当不被选中时为根据另一个其他条件进行查询。

 

cboShouHuoFang

ComboBox

用于选择收货方,并根据收货方进行查询,当  rdbtnShouHuoFang 被选中时,本控件内的值为条件。

 

rdbtnShouHuoFang

 

RadioButton

用于选择查询类型为根据收货方名称进行查询,当被选中时为根据收货方名称进行查询,当不被选中时为根据其他另一个被选中的条件进行查询。

 

 

rdbtnDingDanHao

 

RadioButton

用于选择查询方式为根据订单编号进行查询,当被选中时为根据订单编号进行查询,当不被选中时为根据其他另一个被选中的条件进行查询。

 

txtDingDanHao

TextBox

用于输入订单编号,当 rdbtnDingDanHao被选中时,本控件内的值为条件。

 

 

rdbtnZhuangTai

 

RadioButton

用于选择查询类型为根据订单状态进行查询,当被选中时为根据订单状态进行查询,当不被选中时为根据其他另一个被选中的条件进行查询。

 

cboZhuangTai

ComboBox

用于选择订单状态,并根据订单状态进行查询,当   rdbtnZhuangTai 被选中时,本控件内的值为条件。

 

rdbtnTuoYunFang

 

RadioButton

用于选择查询类型为根据托运方名称进行查询,当被选中时为根据托运方名称进行查询,当不被选中时为根据其他另一个被选中的条件进行查询。

 

cboTuoYunFang

ComboBox

用于选择托运方名称,并根据托运方名称进行查询,当    rdbtnTuoYunFang 被选中时,本控件内的值为条件。

 

rdbtnHuoMing

 

RadioButton

用于选择查询类型为根据托运货物名称进行查询,当被选中时为根据托运货物名称进行查询,当不被选中时为根据其他另一个被选中的条件进行查询。

 

cboHuoMing

ComboBox

用于选择托运货物名称,并根据托运货物名称进行查询,当rdbtnHuoMing被选中时,本控件内的值为条件。

 

chkShenHeFou

 

CheckBox

用于进行选择查询的类型,当本控件被选中的时候为查询已经审核的满足前面任意一个条件的查询结果,若没有选择本控件,则为根据前面任意一个条件进行全部查询。

 

btnChaXun

ToolStripButton

用于确定查询,当点击本控件是根据左侧的条件进行对应的查询,并将查询结果显示在 dgvHuoYunDan中。

 

lblDanJuShu

Label

用于显示当前条件下的查询结果一共有多少条。

 

 

dgvHuoYunDan

 

 

DataGridView

用于显示根据条件查询到的订单的信息。其中包括:订单编号、提单编号、寄件地址、收件地址、寄件网点、收件网点、结算方式、收货人、联系人名称、联系人电话、揽收状态、运单状态、接单时间、送达时间、运费总价、员工姓名、制单人、修单人信息。

 

 

tsbShangYiYe

ToolStripButton

用于使得 dgvHuoYunDan进行翻页,本控件是下一页操作。

 

tsbXiaYiYe

ToolStripButton

用于使得 dgvHuoYunDan进行翻页,本控件是上一页操作。

 

lblCurrentPage

Label

用于显示当前页码。

lblTotalPage

Label

用于显示总页码。

 

dgvHuoYunDanMingXi

 

DataGridView

用于显示dgvHuoYunDan中被选中的行所对应的订单中的货物列表,其中包括:货物名称、货物类别、计量单位、运费单价、数量、揽收否。

 

tspbtnXinZengDingDan

ToolStripButton

用于打开新增订单信息页面。

 

tspbtnXiuGaiDingDan

ToolStripButton

用于打开修改订单信息页面。并将dgvHuoYunDan中选中的订单信息传递到修改页面中进行显示。

 

tspBtnShanChuDingDan

ToolStripButton

用于删除dgvHuoYunDan中选中的订单信息。

 

tsbWuLiu

ToolStripButton

用于打开物流跟踪查询页面。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

表3-1控件列表

功能布局划分:

根据图3-1整体布局可以分析出,本界面的功能主要三部分,筛选条件、订单信息、系统操作按钮,其中筛选条件是根据选定的条件进行查询并绑定在订单信息中,操作系统按钮是对订单信息的操作。

第一部分:筛选条件,本部分的有两个日期控件、四个下拉框、一个文本框、一个复选框、六个单选框、一个按钮共十五个控件构成,其中单选框用于选择根据某种条件进行查询,其余控件为查询条件的值。

 

订单管理_03查询订单信息流程
图3-2筛选条件

本部分的查询条件为单选条件,每次查询按照在本部分内的单选框中某个单选框被选中,则根据被选中的单选框后面的条件的值为条件点击查询按钮进行查询。

关于日期条件查询:日期查询条件为订单生成介于两个日期之间的订单信息,根据数据库中订单信息中的数据生成时间为条件进行查询,查询某个时间段内的订单信息,因此两个日期控件中的日期默认相差一天。

关于状态条件查询:状态条件查询为根据货物的揽收状态为条件进行查询,查询已经揽收货物的订单信息和未揽收货物的订单信息。

关于收货方条件查询:托运方条件查询为根据订单中托运方名称为条件进行查询,查询此托运方的所有订单信息。

关于收货方条件查询:收货方条件查询为根据订单中收货方名称为条件进行查询,查询此托运方的所有订单信息。

关于订单号条件查询:订单号条件查询为根据订单编号为条件进行查询,每个订单的订单号为唯一标识,根据订单号查询为查询特定的某个订单信息。

关于货名条件查询:货名条件查询为根据货名条件查询为条件进行查询,查询同种货物的运输订单信息。

关于提取已审核数据查询:提取已审核数据查询为查询所有已经审核的数据并绑定。

订单管理_03查询订单信息流程

图3-3订单信息和货物信息

本部分为订单信息和订单对应的货物信息,其中包含两个DataGridView和一个菜单栏。

本部分主要功能为根据第一部分的查询条件查询后将查询到的订单信息进行绑定显示,绑定之后根据选定的订单信息,进行查询其所对应的货物信息,并将查询到的货物信息绑定在货物信息DGV中。

关于订单信息:此处查询的订单信息默认为全部信息,根据条件进行查询后重新绑定为部分信息。

关于货物信息:此处查询的货物信息为订单中包含的货物信息,并非全部货物信息。

关于分页:此处的分页查询为根据特定的数量将数据进行分页,此时默认为10条为一页,若需要修改需要进入代码中设置。

订单管理_03查询订单信息流程
图3-4系统操作按钮

本部分为系统操作按钮,其中为五个菜单栏按钮。

关于新增订单:点击新增订单跳转到新增订单界面进行新增,新增结束刷新本界面。

关于修改订单:选择某一条订单信息点击修改订单跳转到修改订单界面进行修改,修改结束刷新本界面。

关于删除订单:选择某一条订单信息点击删除订单,提示是否删除,确定删除删除订单信息,删除成功刷新本界面。

关于物流跟踪查询:物流跟踪查询为查询特定的订单(根据订单号查询)的订单物流信息,本功能与手机物流信息扫描相关联。

关于关闭:退出本模块,推出前提示是否退出,确认退出

功能区域详细实现:

#region 构造方法

        public FRM_DingDanGuanLi()

        {

            InitializeComponent();

        }

        #endregion

 

        #region 参数设置

        BLL物流管理系统.订单管理.DingDanGuanLi.DingDanGuanLiClient myDingDanGuanLi =

            new BLL物流管理系统.订单管理.DingDanGuanLi.DingDanGuanLiClient();

        int 页面大小 = 10;

        int 页码 = 1;

        int 最大页码 = 0;

        int 货运单总数 = 0;

        #endregion

 

        #region Load事件,设置窗体位置和窗体大小,并绑定数据

        private void FRM_DingDanGuanLi_Load(object sender, EventArgs e)

        {

            try

            {

                #region 设置窗体位置和窗体大小

                    dgvDingDanXinXi.AutoGenerateColumns = false;

                    this.Left = PublicStaticObject.MainLeft;

                    this.Top = PublicStaticObject.MainTop;

                    this.Width = PublicStaticObject.MainWidth;

                    this.Height = PublicStaticObject.MainHeight;

                #endregion

 

                #region 绑定数据

                    dttmpkDaoDaShiJian.Value = dttmpkQiShiShiJian.Value.AddDays(1);

                    //绑定到达时间为起始时间加一天

                    this.dgvDingDanXinXi = PublicStaticMothd.SetDgv(dgvDingDanXinXi);

                    //绑定订单信息DGV

                    this.dgvDingDanXinXiMingXi = PublicStaticMothd.SetDgv(dgvDingDanXinXiMingXi);

                    //绑定订单明细信息DGV

                    #region 绑定货物名称、揽收状态、收件客户名称、寄件客户名称

                        //绑定货物名称下拉框

                        cboHuoMing.DataSource = myDingDanGuanLi.FRM_DingDanGuanLi_Load_SelectHuoMing().Tables[0];

                        cboHuoMing.DisplayMember = "货物名称";

                        cboHuoMing.ValueMember = "货物ID";

                        //绑定货物揽收状态下拉框

                        cboZhuangTai.DataSource = myDingDanGuanLi.FRM_DingDanGuanLi_Load_SelectZhuangTai().Tables[0];

                        cboZhuangTai.DisplayMember = "货物揽收状态";

                        cboZhuangTai.ValueMember = "货物揽收状态ID";

                        //绑定收货方客户名称

                        DataTable dtKeHu = myDingDanGuanLi.FRM_DingDanGuanLi_Load_SelectKeHu().Tables[0];

                        cboShouHuoFang.DataSource = dtKeHu;

                        cboShouHuoFang.DisplayMember = "客户全称";

                        cboShouHuoFang.ValueMember = "客户ID";

                        //绑定托运方客户名称

                        cboTuoYunFang.DataSource = dtKeHu.Copy();

                        //cboTuoYunFang.DataSource = myDingDanGuanLi.FRM_DingDanGuanLi_Load_SelectKeHu().Tables[0];

                        cboTuoYunFang.DisplayMember = "客户全称";

                        cboTuoYunFang.ValueMember = "客户ID";

                #endregion

                #endregion

 

                #region 初始化查询全部订单信息,并根据页面大小进行分页

                //查询全部订单

                DataTable dt =

                        myDingDanGuanLi.FRM_DingDanGuanLi_Load_SelectHuoYunDanByFenYe(页面大小, 页码).Tables[0];

                dgvDingDanXinXi.DataSource = dt;

                    货运单总数 = myDingDanGuanLi.FRM_DingDanGuanLi_Load_SelectHuoYunDanCount();

                    最大页码 = 货运单总数 / 页面大小;

                    if (货运单总数 % 页面大小 > 0)

                    {

                        最大页码++;

                    }

                    lblTotalPage.Text = 最大页码.ToString();

                    lblCurrentPage.Text = 页码.ToString();

                    lblDanJuShu.Text = 货运单总数.ToString();

                    SheZhiSuoDingAnNiu();

                #endregion

            }

            catch

            {

            }

        }

        #endregion

 

        #region 关闭按钮

        private void toolStripButton1_Click(object sender, EventArgs e)

        {

            this.Close();

        }

        #endregion

 

        #region 打开订单管理模块中的新增订单信息

        private void tspbtnXinZengDingDan_Click(object sender, EventArgs e)

        {

            PublicStaticObject.Pub_FRM_DingDanGuanLi_Insert = new 订单管理.FRM_DingDanGuanLi_Insert();

            PublicStaticObject.Pub_FRM_DingDanGuanLi_Insert.ShowDialog();

        }

        #endregion

 

        #region 订单DGV中审核订单信息

        private void dgvHuoYunDan_CellClick(object sender, DataGridViewCellEventArgs e)

        {

            if (e.RowIndex >= 0)

            {

                if (e.ColumnIndex == 0)

                {

                    if (dgvDingDanXinXi.CurrentRow.Cells["锁定"].Value.ToString() == "未审核")

                    {

                        int countSuccess = 0;

                        //更新货运单的审核否字段,设置为真

                        int 货运单ID = Convert.ToInt32(dgvDingDanXinXi.CurrentRow.Cells["货运单ID"].Value);

                        if (myDingDanGuanLi.dgvHuoYunDan_CellClick_UpdateShenHe(货运单ID) > 0)

                        {

                            //审核之后,针对每一个明细,生成一条默认的分包数据

                            foreach (DataGridViewRow dgvr in dgvDingDanXinXiMingXi.Rows)

                            {

                                int 货运单明细ID = Convert.ToInt32(dgvr.Cells["货运单明细ID"].Value);

                                decimal 分包数量 = Convert.ToDecimal(dgvr.Cells["数量"].Value);

                    countSuccess += myDingDanGuanLi.dgvHuoYunDan_CellClick_InsertFenBao(货运单明细ID,分包数量);

                            }

                        }

                        if (countSuccess == dgvDingDanXinXiMingXi.RowCount)

                        {

                            MessageBox.Show("审核成功!");

                            FRM_DingDanGuanLi_Load(null, null);

                        }

                        else

                        {

                            MessageBox.Show("审核失败!");

                        }

                    }

                    else

                    {

                        MessageBox.Show("订单已经审核!");

                    }

                }

            }

        }

        #endregion

 

        #region 打开订单管理模块中的修改订单信息

        private void tspbtnXiuGaiDingDan_Click(object sender, EventArgs e)

        {

            if (dgvDingDanXinXi.CurrentRow.Cells["锁定"].Value.ToString() == "未审核")

            {

                PublicStaticObject.Pub_FRM_DingDanGuanLi_Update = new 订单管理.FRM_DingDanGuanLi_Update(Convert.ToInt32(dgvDingDanXinXi.CurrentRow.Cells["货运单ID"].Value));

                PublicStaticObject.Pub_FRM_DingDanGuanLi_Update.ShowDialog();//修改订单之后的刷新数据操作。

            }

            else

            {

                MessageBox.Show("已审核的货物无法修改!");

            }

        }

        #endregion

 

        #region 删除订单信息

        private void tspBtnShanChuDingDan_Click(object sender, EventArgs e)

        {

            if (dgvDingDanXinXi.CurrentRow.Cells["锁定"].Value.ToString() == "未审核")

            {

                int countSuccess = 0;

                //删除货运单

                int 货运单ID = Convert.ToInt32(dgvDingDanXinXi.CurrentRow.Cells["货运单ID"].Value);

                if (myDingDanGuanLi.tspBtnShanChuDingDan_Click_DeleteHuoYunDan(货运单ID) > 0)

                {

                    //删除货运单明细

                    countSuccess = myDingDanGuanLi.tspBtnShanChuDingDan_Click_DeleteHuoYunDanMingXi(货运单ID);

                }

 

                if (countSuccess == dgvDingDanXinXiMingXi.RowCount)

                {

                    MessageBox.Show("删除成功!");

                    FRM_DingDanGuanLi_Load(null, null);

                }

                else

                {

                    MessageBox.Show("删除失败!");

                }

            }

            else

            {

                MessageBox.Show("已审核的货物无法修改!");

            }

 

        }

        #endregion

 

        #region 订单管理DGV行标题添加序号

        private void dgvHuoYunDan_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)

        {

            DataGridViewRow CurrentRow = this.dgvDingDanXinXi.Rows[e.RowIndex];

            CurrentRow.HeaderCell.Value = Convert.ToString(e.RowIndex + 1);

        }

        #endregion

 

        #region 货物信息DGV行标题添加序号

        private void dgvHuoYunDanMingXi_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)

        {

            DataGridViewRow CurrentRow = this.dgvDingDanXinXiMingXi.Rows[e.RowIndex];

            CurrentRow.HeaderCell.Value = Convert.ToString(e.RowIndex + 1);

        }

        #endregion

 

        #region 设置订单管理DGV中审核否按钮信息

        void SheZhiSuoDingAnNiu()

        {

            if (dgvDingDanXinXi.DataSource != null)

            {

                foreach (DataGridViewRow dgvr in dgvDingDanXinXi.Rows)

                {

                    if (Convert.ToBoolean(dgvr.Cells["审核否"].FormattedValue))

                    {

                        dgvr.Cells["锁定"].Value = "已审核";

                    }

                    else

                    {

                        dgvr.Cells["锁定"].Value = "未审核";

                    }

                }

            }

        }

        #endregion

 

        #region 查询按钮

        private void btnChaXun_Click(object sender, EventArgs e)

        {

            if (rdbtnRiQi.Checked)

            {

                DateTime 开始日期 = dttmpkQiShiShiJian.Value;

                DateTime 结束日期 = dttmpkDaoDaShiJian.Value;

                bool 审核否 = chkShenHeFou.Checked;

                dgvDingDanXinXi.DataSource =

                    myDingDanGuanLi.FRM_DingDanGuanLi_Load_SelectDingDanByRiQi(开始日期,结束日期,审核否).Tables[0];

            }

            if (rdbtnHuoMing.Checked)

            {

                int 货物ID = Convert.ToInt32(cboHuoMing.SelectedValue);

                bool 审核否 = chkShenHeFou.Checked;

                dgvDingDanXinXi.DataSource = myDingDanGuanLi.FRM_DingDanGuanLi_Load_SelectDingDanByHuoWuID(货物ID,审核否).Tables[0];

            }

 

            SheZhiSuoDingAnNiu();

            if (dgvDingDanXinXi.Rows.Count <= 0)

            {

                dgvDingDanXinXiMingXi.DataSource = null;

            }

            tspCaiDan.Visible = false;

        }

        #endregion

 

        #region DGV订单管理翻页——下一页

        private void tsbXiaYiYe_Click(object sender, EventArgs e)

        {

            if (页码 < 最大页码)

            {

                页码++;

                dgvDingDanXinXi.DataSource =

                    myDingDanGuanLi.FRM_DingDanGuanLi_Load_SelectHuoYunDanByFenYe(页面大小, 页码).Tables[0];

                lblCurrentPage.Text = 页码.ToString();

                SheZhiSuoDingAnNiu();

            }

            else

            {

                MessageBox.Show("已经是尾页了!!!!");

            }

        }

        #endregion

 

        #region DGV订单管理翻页——上一页

        private void tsbShangYiYe_Click(object sender, EventArgs e)

        {

            if (页码 > 1)

            {

                页码--;

                dgvDingDanXinXi.DataSource =

                    myDingDanGuanLi.FRM_DingDanGuanLi_Load_SelectHuoYunDanByFenYe(页面大小, 页码).Tables[0];

                lblCurrentPage.Text = 页码.ToString();

                SheZhiSuoDingAnNiu();

            }

            else

            {

                MessageBox.Show("已经是首页了!!!!");

            }

        }

        #endregion

 

        #region 根据DGV订单管理中选中的订单信息查询对应的货物信息并绑定在DGV货物中

        private void dgvHuoYunDan_SelectionChanged(object sender, EventArgs e)

        {

            //查询明细

            if (dgvDingDanXinXi.CurrentRow != null)

            {

                int 货运单ID = Convert.ToInt32(dgvDingDanXinXi.CurrentRow.Cells["货运单ID"].Value);

                dgvDingDanXinXiMingXi.DataSource =

                    myDingDanGuanLi.dgvHuoYunDan_SelectionChanged_SelectHuoYunDanMingXi(货运单ID).Tables[0];

            }

            else

            {

                dgvDingDanXinXiMingXi.DataSource = null;

            }

        }

        #endregion

 

        #region 弹出物流信息查询模块

        private void tsbWuLiu_Click(object sender, EventArgs e)

        {

            PublicStaticObject.Pub_FRM_WuLiuXinXiChaXun = new FRM_WuLiuXinXiChaXun();

            PublicStaticObject.Pub_FRM_WuLiuXinXiChaXun.ShowDialog();

        }

        #endregion