海马汽车经销商管理系统技术解析(十一)前台接待模块的接车功能

本文详细解析了海马汽车经销商管理系统前台接待模块的接车功能,包括录入车辆维修信息、配件需求、附加项目及诊断记录,以及如何处理库存不足时新增配件订单。接车流程涉及多个数据库表的操作,如维修工单、配件、维修项目等,并介绍了如何提取车辆信息、折扣、套餐等关键步骤。
摘要由CSDN通过智能技术生成

前台接待

 

主界面,见下图:

 

接车

 

对直接来厂的车辆进行开维修工单见(图一)~(图五)。接车功能实现录入车辆需要维修的项目、维修需要的配件、附加项目、诊断记录等信息。点击保存,生成维修工单。输入车牌号,如果该客户是初次来厂就跳转到新增客户界面新增客户信息见(图六)。提取套餐功能是提取为了方便操作而定义好的维修项目和维修配件。

 

(图一)

 

(图二)

(图三)

(图四)

(图五)

(图六)

 

从接车界面可以看到控件有:

控件

说明

文本框(TextBox)

编辑控件可以在工具箱直接拖动至窗体,拖至窗体后右击属性可以修改控件的样式和各种属性,还可以事件。

下拉框(ComboBox)

(NumericUpDown)

单选框(RadioButton)

选项卡(TabControl)

(ToolStrip)

表格(DatagridView)

按钮(Button)

1、数据库功能实现

第一步:数据库

1、表和关系

 

 

 

表1、维修工单表(PW_ServiceWorkBillList)

列名

数据类型

主键/外键

说明

ServiceWorkBillID

int - Identity

主键

维修工单ID

WorkOddNumBer

nchar (20)

 

维修工单号

BespeakBillID

int

外键

预约单表,预约单ID

CarNewsID

int

外键

车辆信息表,车辆信息ID

EntranceMileage

decimal (18, 2)

 

进厂里程

BusinessSort

nchar (20)

 

业务类别

EntranceTime

datetime

 

进厂时间

CarryRepairPerson

nchar (20)

 

送修人

SurplusOilVolume

decimal (18, 2)

 

剩余油量

PlanGathering

decimal (18, 2)

 

预收款

BookingCarDeliveryTime

nchar (20)

 

预计交车时间

LastTimeInTheFactory

nchar (20)

 

上次进厂时间

BespeakOddNumBer

nchar (20)

 

预约单号

MemberSort

nchar (20)

 

会员类别

ServiceAdviser_StaffID

int

外键

员工表,员工ID_服务顾问

InsureCompanyID

nchar (20)

 

保险公司ID

AttributeMinuteID_CarStatus

int

外键

属性明细表,属性明细ID_车辆状态

IfWashCar

bit

 

海马汽车否

OldPieceDispose

nchar (20)

 

旧件处理

InspectRecord

nchar (100)

 

环检记录

ClientDescribe

nchar (100)

 

顾客陈述

Remarks

nchar (100)

 

备注

IfBespeak

bit

 

预约否

IfDebt

bit

 

欠款否

IfResourceRelease

bit

 

资源释放否

表2:维修需求配件表(PW_ServiceItemList)

列名

数据类型

主键/外键

说明

ServiceNeedPartsID

int - Identity

主键

维修需求配件ID

ServiceWorkBillID

int

外键

维修工单表,维修工单ID

PartsID

int

外键

配件表,配件ID

AttributeMinuteID_AccountType

int

外键

属性明细表,属性明细ID_帐类

NeedNumber

decimal (18, 2)

 

需求数量

SellPrice

decimal (18, 2)

 

销售单价

Remarks

nchar (100)

 

备注

表3、配件表(BM_PartsList)

列名

数据类型

主键/外键

说明

PartsID

int - Identity

主键

配件ID

PartsCoding

nchar (20)

 

配件代码

PartsName                 

nchar (20)

 

配件名称

CarModels

nchar (20)

 

车型

Specification

nchar (20)

 

规格

AttributeMinuteID_Unit

int

外键

属性明细表,属性明细ID_单位

SellPrice

nchar (20)

 

销售价格

表4:维修项目表(PW_ServiceItemList)

列名

数据类型

主键/外键

说明

ServiceItemID

int - Identity

主键

维修项目ID

ServiceWorkBillID

int

外键

维修工单表,维修工单ID

WorkHoursItemMinuteID

int

外键

工时项目明细表,工时项目明细ID

AttributeMinuteID_AccountType

int

外键

属性明细表,属性明细ID_帐类

WorkHours

decimal (18, 2)

 

工时

WorkHoursPrice

decimal (18, 2)

 

工时单价

ItemKindID

nchar (20)

外键

工种表,工种ID

AttributeMinuteID_ItemStatus

int

外键

属性明细表,属性明细ID_项目状态

FaultCauseCode

nchar (20)

 

故障原因代码

IfReleaseResource

bit

 

资源释放否

FaultCause

nchar (50)

 

故障原因

表5、工时项目表(BM_WorkHoursItemList)

列名

数据类型

主键/外键

说明

WorkHoursItemID

int - Identity

主键

工时项目ID

ItemCode

nchar (20)

 

项目代码

ItemName

nchar (20)

 

项目代码

WorkKindID

int

外键

工种表,工种ID

FirstKind

nchar (20)

 

第一类

SecondKind

nchar (20)

 

第二类

ForeignLanguageName

nchar (20)

 

外文名称

Remarks

nchar (100)

 

备注

AllSuitSign

bit

 

全适用标志

表6、工时项目明细表(BM_WorkHoursItemMinuteList)

列名

数据类型

主键/外键

说明

WorkHoursItemMinuteID

int - Identity

主键

工时项目明细ID

WorkHoursItemID

int

外键

工时项目表,工时项目ID

CarModels

nchar (20)

 

车型

GuestAccountWorkHours

decimal (18, 2)

 

客帐工时

InternalAccountWorkHours

decimal (18, 2)

 

内部帐工时

ParWorkHours

decimal (18, 2)

 

标准工时

InsureAccountWorkHours

decimal (18, 2)

 

保险帐工时

WorkHoursMoney

decimal (18, 2)

 

工时金额

IfWorkHoursMultiplyUnitPrice

bit

 

是否取工时乘单价

Remarks

nchar (100)

 

备注

TheOriginalPar

bit

 

原厂标准

表7、维修附加项目表(PW_ServiceAppendItemList)

列名

数据类型

主键/外键

说明

ServiceAppendItemID

int - Identity

主键

维修附加项目ID

ServiceWorkBillID

int

外键

维修工单ID

AdditionItemID

int

外键

附加项目ID

AttributeMinuteID_AccountType

int

外键

属性明细表,属性明细ID_帐类

表8、附加项目表(BM_AdditionItemList)

列名

数据类型

主键/外键

说明

AdditionItemID

int - Identity

主键

附加项目ID

ItemCode

nchar (20)

 

项目代码

ItemName

nchar (20)

 

项目名称

AttributeMinuteID_ItemKind

int

外键

属性明细表,属性明细ID_项目类别

TeamID

int

外键

班组ID

Price

decimal (18, 2)

 

单价

表9、建议维修项目表  (PW_SuggestServiceItemList)

列名

数据类型

主键/外键

说明

SuggestServiceItemID

int

主键

建议维修项目ID

ServiceWorkBillID

int

外键

维修工单表,维修工单ID

WorkHoursItemMinuteID

int

外键

工时项目明细表,工时项目明细ID

AttributeMinuteID_AccountType

int

外键

属性明细表,属性明细ID_帐类

WorkHours

decimal (18, 2)

 

工时

WorkHoursPrice

decimal (18, 2)

 

工时单价

Remarks

nchar (100)

 

备注

表10:诊断记录表(DiagnosisRecordList)

列名

数据类型

主键/外键

说明

DiagnosisRecordID

int

主键

诊断记录ID

ServiceWorkBillID

int

外键

维修工单表,维修工单ID

DiagnosisRecordName

nchar (20)

 

诊断记录名称

DiagnosisRecordContent

nchar (100)

 

诊断记录内容

ServicemanID

int

外键

维修技工表,维修技工ID

DiagnosisTime

datetime

 

诊断时间

表11、车辆信息表(BM_CarNewsList

列名

数据类型

主键/外键

说明

CarNewsID

int - Identity

主键

车辆信息ID

CarOwnerNewsID

int

外键

车主信息ID

RecordNumber

nchar (20)

 

档案号

LicensePlateNumber

nchar (20)

 

车牌号

CarModelsCode

nchar (20)

 

车型代码

VINCode

nchar (20)

 

VIN码

MotorModel

nchar (20)

 

发动机型号

Transmissiontype

nchar (20)

 

变速器型式

MotorNumber

nchar (20)

 

发动机号

TransmissionNumber

nchar (20)

 

变速箱号码

KeyNumber

nchar (20)

 

钥匙号

ShiftWay

nchar (20)

 

换挡方式

CarModelsYearFund

nchar (20)

 

车型年款

Displacement

nchar (20)

 

排量

EquipmentCode

nchar (20)

 

装备代码

BodyworkColour

nchar (10)

 

车身颜色

LeaveFactoryDate

datetime

 

出厂日期

FuelKind

nchar (20)

 

燃料种类

BuyCarDate

datetime

 

购车日期

BuyCarMileage

decimal (18, 2)

 

购车里程

Purpose

nchar (20)

 

用途

SellUnit

nchar (20)

 

销售单位

CarBrand

nchar (20)

 

车辆品牌

CarModelsSimpleCode

nchar (20)

 

车型简码

IfInWarrantyperiod

bit

 

是否在保修期内

UserManage

bit

 

用户管理

IfEffective

bit

 

有效否

表12、车主信息表(BM_CarOwnerNewsList

列名

数据类型

说明

说明

CarOwnerNewsID

int - Identity

主键

车主信息ID

CarOwnerCode

nchar (20)

 

车主代码

CarOwnerName

nchar (20)

 

车主名称

AttributeMinuteID_ClientTypeOne

int

外键

属性明细表,属性明细ID_客户类型一

AttributeMinuteID_ClientTypeTwo

int

外键

属性明细表,属性明细ID_客户类型二

AttributeMinuteID_Sex

int

外键

属性明细表,属性明细ID_性别

Site

nchar (100)

 

地址

MobilePhone

nchar (20)

 

手机号码

HousePhone

nchar (20)

 

住宅电话

OfficePhone

nchar (20)

 

办公电话

AddressPostcode

nchar (20)

 

住址邮编

TheGenusCountiesAndCities

nchar (50)

 

所属县市

WorkUnit

nchar (50)

 

工作单位

Job

nchar (50)

 

职位

AttributeMinuteID_MaritalStatus

int

外键

属性明细表,属性明细ID_婚姻状况

IDCard

nchar (30)

 

身份证

Birthday

datetime

 

生日

Hobby

nchar (100)

 

爱好

ChangeSite

nchar (100)

 

变跟地址

Postcode

nchar (20)

 

邮编

Nationality

nchar (50)

 

国籍

Email

nchar (50)

 

Email

FacilitateTheReturnTime

datetime

 

方便回访时间

CarOwnerPicture

nchar (3000)

 

车主照片

Remarks

nchar (50)

 

备注

IfEffective

bit

 

有效否

2、功能实现

1、提取车辆信息,输入车牌号后按回车键。

第一步:数据库存储过程

IF(@TYPE='FRM_QianTaiJieDai_JieChe_CheLiangXinXi')
BEGIN
SELECT     BM_CarNewsList.CarNewsID, BM_CarNewsList.LicensePlateNumber, BM_CarNewsList.CarModelsCode, BM_CarNewsList.VINCode, BM_CarNewsList.MotorNumber, 
                      BM_CarNewsList.BodyworkColour, BM_CarNewsList.BuyCarDate, BM_CarNewsList.CarBrand, BM_CarOwnerNewsList.CarOwnerCode, BM_CarOwnerNewsList.MobilePhone, 
                      BM_CarOwnerNewsList.CarOwnerName
FROM         BM_CarNewsList INNER JOIN
                      BM_CarOwnerNewsList ON BM_CarNewsList.CarOwnerNewsID = BM_CarOwnerNewsList.CarOwnerNewsID                      
                      
WHERE      BM_CarNewsList.LicensePlateNumber=LTRIM(RTRIM(@LicensePlateNumber))                 
END
IF(@TYPE='FRM_QianTaiJieDai_JieChe_SelectLastTimeInTheFactory')
    BEGIN
    SELECT     PW_ServiceWorkBillList.ServiceWorkBillID, PW_ServiceWorkBillList.CarNewsID, PW_ServiceWorkBillList.EntranceTime
    FROM         PW_ServiceWorkBillList INNER JOIN
                      BM_CarNewsList ON PW_ServiceWorkBillList.CarNewsID = BM_CarNewsList.CarNewsID
    WHERE     PW_ServiceWorkBillList.CarNewsID=@CarNewsID AND PW_ServiceWorkBillList.AttributeMinuteID_CarStatus=84               
END
IF(@TYPE='FRM_QianTaiJieDai_JieChe_txtChePaiHao_Leave')
BEGIN
SELECT     BM_CarNewsList.CarNewsID, BM_CarNewsList.LicensePlateNumber, BM_CarNewsList.CarModelsCode, BM_CarNewsList.VINCode, BM_CarNewsList.MotorNumber, 
                      BM_CarNewsList.BodyworkColour, BM_CarNewsList.BuyCarDate, BM_CarNewsList.CarBrand, BM_CarOwnerNewsList.CarOwnerCode, BM_CarOwnerNewsList.MobilePhone, 
                      BM_CarOwnerNewsList.CarOwnerName
FROM         BM_CarNewsList INNER JOIN
                      BM_CarOwnerNewsList ON BM_CarNewsList.CarOwnerNewsID = BM_CarOwnerNewsList.CarOwnerNewsID                      
                      
WHERE      BM_CarNewsList.CarNewsID=@CarNewsID
END

第二步:逻辑层(BLL)

 

//查询车辆信息
[OperationContract]
        public DataSet FRM_QianTaiJieDai_JieChe_CheLiangXinXi(string strChePaiHao)
        {
            SqlParameter[] mySqlParameters =
       {
            new SqlParameter("@TYPE",SqlDbType.Char),
            new SqlParameter("@LicensePlateNumber",SqlDbType.NChar),
       };
            mySqlParameters[0].Value = "FRM_QianTaiJieDai_JieChe_CheLiangXinXi";
            mySqlParameters[1].Value = strChePaiHao;
            DataTable dt= myDALMethod.QueryDataTable ("前台接待_FRM_QianTaiJieDai_JieChe", mySqlParameters);
            DataSet ds = new DataSet();
            ds.Tables.Add(dt);
            return ds; //返回一个数据集
        }
//查询车辆历史维修信息
        [OperationContract]
        public DataSet FRM_QianTaiJieDai_JieChe_SelectLastTimeInTheFactory(int intCarNewsID)
        {
            SqlParameter[] mySqlParameters =
        {
        new SqlParameter("@TYPE",SqlDbType.Char),
        new SqlParameter("@CarNewsID",SqlDbType.Int),
        };
            mySqlParameters[0].Value = "FRM_QianTaiJieDai_JieChe_SelectLastTimeInTheFactory";
            mySqlParameters[1].Value = intCarNewsID;
            DataTable dt = myDALMethod.QueryDataTable("前台接待_FRM_QianTaiJieDai_JieChe", mySqlParameters);
            DataSet ds = new DataSet();
            ds.Tables.Add(dt);
            return ds;//返回一个数据集
        }
//查询车辆信息
        [OperationContract]
        public DataSet FRM_QianTaiJieDai_JieChe_txtChePaiHao_Leave(int intCarNewsID)
        {
            SqlParameter[] mySqlParameters =
       {
            new SqlParameter("@TYPE",SqlDbType.Char),
            new SqlParameter("@CarNewsID",SqlDbType.Int),
       };
            mySqlParameters[0].Value = "FRM_QianTaiJieDai_JieChe_txtChePaiHao_Leave";
            mySqlParameters[1].Value = intCarNewsID;
            DataTable dt = myDALMethod.QueryDataTable("前台接待_FRM_QianTaiJieDai_JieChe", mySqlParameters);
            DataSet ds = new DataSet();
            ds.Tables.Add(dt);
            return ds;//返回一个数据集
        }

 

 

 

 

 

第三步:界面层(UIL)

BLL海马汽车销售系统.前台接待.FRM_QianTaiJieDai_JieChe.FRM_QianTaiJieDai_JieCheClient myFRM_QianTaiJieDai_JieCheClient = 
            new BLL海马汽车销售系统.前台接待.FRM_QianTaiJieDai_JieChe.FRM_QianTaiJieDai_JieCheClient();
private void txtLicensePlateNumber_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter) //如果按了回车键
            {
//根据车牌号提取车辆信息
            DataTable dtCheLiangXinXi = myFRM_QianTaiJieDai_JieCheClient.FRM_QianTaiJieDai_JieChe_CheLiangXinXi(txtLicensePlateNumber.Text).Tables[0];
            if (dtCheLiangXinXi.Rows.Count > 0)//如果系统有记录
            {
                //给各个相应控件赋值
                txtCarOwnerName.Text = dtCheLiangXinXi.Rows[0]["CarOwnerName"].ToString();
                txtLicensePlateNumber.Text = dtCheLiangXinXi.Rows[0]["LicensePlateNumber"].ToString();
                txtCarBrand.Text = dtCheLiangXinXi.Rows[0]["CarBrand"].ToString();
                txtBuyCarDate.Text = dtCheLiangXinXi.Rows[0]["BuyCarDate"].ToString();
                txtCarModels.Text = dtCheLiangXinXi.Rows[0]["CarModelsCode"].ToString();
                txtMobilePhone.Text = dtCheLiangXinXi.Rows[0]["MobilePhone"].ToString();
                txtVINCode.Text = dtCheLiangXinXi.Rows[0]["VINCode"].ToString();
                txtBodyworkColour.Text = dtCheLiangXinXi.Rows[0]["BodyworkColour"].ToString();
                txtMotorNumber.Text = dtCheLiangXinXi.Rows[0]["MotorNumber"].ToString();
                txtCarryRepairPerson.Text = dtCheLiangXinXi.Rows[0]["CarOwnerName"].ToString();
                intChePaiXinXi = Convert.ToInt32(dtCheLiangXinXi.Rows[0]["CarNewsID"]);
                //查询该车辆历史维修信息
                DataTable dtLastTimeInTheFactory = myFRM_QianTaiJieDai_JieCheClient.FRM_QianTaiJieDai_JieChe_SelectLastTimeInTheFactory(intChePaiXinXi).Tables[0];
                if (dtLastTimeInTheFactory.Rows.Count > 0)//如果有历史信息
                {
                    //提取上次进厂时间
                    txtLastTimeInTheFactory.Text = dtLastTimeInTheFactory.Rows[dtLastTimeInTheFactory.Rows.Count - 1]["EntranceTime"].ToString();
                }
            }
            else//如果系统没有记录
            {
                if (MessageBox.Show("当前车辆不存在" + "\n是否新增?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
                {
                    blnKuanGuan = true;
                    strLicensePlateNumber = txtLicensePlateNumber.Text;
                    PublicStaticObject.Pub_FRM_KeHuDangAn_Insert = new 顾客关系.FRM_KeHuDangAn_Insert();
                    PublicStaticObject.Pub_FRM_KeHuDangAn_Insert.ShowDialog();
                    顾客关系.FRM_KeHuDangAn_Insert myFRM_KeHuDangAn_Insert = new 顾客关系.FRM_KeHuDangAn_Insert();
                    myFRM_KeHuDangAn_Insert.ShowDialog();//显示客户档案新增界面
                    //查询新增车辆信息
                    DataTable dtCarNews = myFRM_QianTaiJieDai_JieCheClient.FRM_QianTaiJieDai_JieChe_txtChePaiHao_Leave(顾客关系.FRM_KeHuDangAn_Insert.intCarNews).Tables[0];
                    if (dtCarNews.Rows.Count > 0)
                    {
                        //给各个相应控件赋值
                        txtCarOwnerName.Text = dtCarNews.Rows[0]["CarOwnerName"].ToString();
                        txtLicensePlateNumber.Text = dtCarNews.Rows[0]["LicensePlateNumber"].ToString();
                        txtCarBrand.Text = dtCarNews.Rows[0]["CarBrand"].ToString();
                        txtBuyCarDate.Text = dtCarNews.Rows[0]["BuyCarDate"].ToString();
                        txtCarModels.Text = dtCarNews.Rows[0]["CarModelsCode"].ToString();
                        txtMobilePhone.Text = dtCarNews.Rows[0]["MobilePhone"].ToString();
                        txtVINCode.Text = dtCarNews.Rows[0]["VINCode"].ToString();
                        txtBodyworkColour.Text = dtCarNews.Rows[0]["BodyworkColour"].ToString();
                        txtMotorNumber.Text = dtCarNews.Rows[0]["MotorNumber"].ToString();
                        txtCarryRepairPerson.Text = dtCarNews.Rows[0]["CarOwnerName"].ToString();
                        intChePaiXinXi = Convert.ToInt32(dtCarNews.Rows[0]["CarNewsID"]);
                    }
                    else
                    { }
                }
            }
              }
        }

 

2、提取折扣

第一步:数据库存储过程

 

 

IF(@TYPE='FRM_QianTaiJieDai_JieChe_SelectAttributeMinuteListRemark')
    BEGIN
    SELECT     AttributeMinuteID, Remark
    FROM         AttributeMinuteList
    WHERE AttributeMinuteList.AttributeMinuteID=@AttributeMinuteID
END

第二步:逻辑层(BLL)

//查询折扣信息
[OperationContract]
        public DataSet FRM_QianTaiJieDai_JieChe_SelectAttributeMinuteListRemark(int intAttributeMinuteID)
        {
            SqlParameter[] mySqlParameters =
       {
       new SqlParameter("@TYPE",SqlDbType.Char),
       new SqlParameter("@AttributeMinuteID",SqlDbType.Int),
       };
            mySqlParameters[0].Value = "FRM_QianTaiJieDai_JieChe_SelectAttributeMinuteListRemark";
            mySqlParameters[1].Value = intAttributeMinuteID;
            DataTable dt = myDALMethod.QueryDataTable("前台接待_FRM_QianTaiJieDai_JieChe", mySqlParameters);
            DataSet ds = new DataSet();
            ds.Tables.Add(dt);
            return ds; //返回数据集
        }

第三步:界面层(UIL),帐类选择索引改变事件。

BLL海马汽车销售系统.前台接待.FRM_QianTaiJieDai_JieChe.FRM_QianTaiJieDai_JieCheClient myFRM_QianTaiJieDai_JieCheClient = 
            new BLL海马汽车销售系统.前台接待.FRM_QianTaiJieDai_JieChe.FRM_QianTaiJieDai_JieCheClient();

private void cboAccountType_SelectedIndexChanged(object sender, EventArgs e)
        {            
                //根据帐类查询折扣
                DataTable dtAttributeMinuteListRemark = myFRM_QianTaiJieDai_JieCheClient.FRM_QianTaiJieDai_JieChe_SelectAttributeMinuteListRemark(Convert.ToInt32(cboAccountType.SelectedValue)).Tables[0];
                //把折扣赋值给相应的控件
                nudDisCount0.Text = dtAttributeMinuteListRemark.Rows[0]["Remark"].ToString().Trim();
                    }

 

3、提取套餐信息

 

第一步:数据库存储过程

IF(@TYPE='FRM_QianTaiJieDai_JieChe_SelectSetMealItems')
    BEGIN
   SELECT     AttributeMinuteList.AttributeMinuteID, BM_SetMealItemList.SetMealItemID, BM_SetMealItemList.WorkHoursMoney, BM_SetMealItemList.AttributeMinuteID_AccountType AS AccountTypeID, 
                      AttributeMinuteList.AttributeMinuteName AS AccountType, BM_SetMealItemList.WorkHoursItemMinuteID, BM_WorkHoursItemList.ItemCode, BM_WorkHoursItemList.ItemName, 
                      BM_WorkHoursItemList.WorkKindID, BM_WorkKindList.WorkKindName, BM_WorkHoursItemMinuteList.GuestAccountWorkHours, BM_WorkHoursItemMinuteList.ParWorkHours, 
                      BM_WorkHoursItemMinuteList.IfWorkHoursMultiplyUnitPrice, BM_WorkHoursItemList.WorkHoursItemID
FROM         BM_SetMealItemList INNER JOIN
                      AttributeMinuteList ON BM_SetMealItemList.AttributeMinuteID_AccountType = AttributeMinuteList.AttributeMinuteID INNER JOIN
                      BM_WorkHoursItemMinuteList ON BM_SetMealItemList.WorkHoursItemMinuteID = BM_WorkHoursItemMinuteList.WorkHoursItemMinuteID INNER JOIN
                      BM_WorkHoursItemList ON BM_WorkHoursItemMinuteList.WorkHoursItemID = BM_WorkHoursItemList.WorkHoursItemID INNER JOIN
                      BM_WorkKindList ON BM_WorkHoursItemList.WorkKindID = BM_WorkKindList.WorkKindID

 WHERE      BM_SetMealItemList.SetMealID=@SetMealID           
    END
    IF(@TYPE='FRM_QianTaiJieDai_JieChe_SelectSetMealParts')
    BEGIN
    SELECT     BM_SetMealMinutePartsList.SetMealPatrsID, BM_SetMealMinutePartsList.PartsID, BM_SetMealMinutePartsList.Number, BM_SetMealMinutePartsList.SellPrice, 
                      BM_SetMealMinutePartsList.AttributeMinuteID_AccountType AS AccountTypeID, AttributeMinuteList_1.AttributeMinuteName AS AccountType, BM_PartsList.PartsCoding, BM_PartsList.PartsName, 
                      AttributeMinuteList.AttributeMinuteName AS Unit, BM_PartsList.AttributeMinuteID_Unit AS UnitID, BM_PartsList.CarModels
FROM         AttributeMinuteList INNER JOIN
                      BM_SetMealMinutePartsList INNER JOIN
                      BM_PartsList ON BM_SetMealMinutePartsList.PartsID = BM_PartsList.PartsID ON AttributeMinuteList.AttributeMinuteID = BM_PartsList.AttributeMinuteID_Unit INNER JOIN
                      AttributeMinuteList AS AttributeMinuteList_1 ON BM_SetMealMinutePartsList.AttributeMinuteID_AccountType = AttributeMinuteList_1.AttributeMinuteID    
   
    WHERE      BM_SetMealMinutePartsList.SetMealID=@SetMealID                     
END

第二步:逻辑层(BLL)

//查询套餐的项目信息
[OperationContract]
        public DataSet FRM_QianTaiJieDai_JieChe_SelectSetMealItems(int intSetMealID)
        {
            SqlParameter[] mySqlParameters =
        {
        new SqlParameter("@TYPE",SqlDbType.Char),
        new SqlParameter("@SetMealID",SqlDbType.Int),
        };
            mySqlParameters[0].Value = "FRM_QianTaiJieDai_JieChe_SelectSetMealItems";
            mySqlParameters[1].Value = intSetMealID;
            DataTable dt = myDALMethod.QueryDataTable("前台接待_FRM_QianTaiJieDai_JieChe", mySqlParameters);
            DataSet ds = new DataSet();
            ds.Tables.Add(dt);
            return ds; //返回数据集
        }
//查询套餐的配件信息
        [OperationContract]
        public DataSet FRM_QianTaiJieDai_JieChe_SelectSetMealParts(int intSetMealID)
        {
            SqlParameter[] mySqlParameters =
        {
        new SqlParameter("@TYPE",SqlDbType.Char),
        new SqlParameter("@SetMealID",SqlDbType.Int),
        };
            mySqlParameters[0].Value = "FRM_QianTaiJieDai_JieChe_SelectSetMealParts";
            mySqlParameters[1].Value = intSetMealID;
            DataTable dt = myDALMethod.QueryDataTable("前台接待_FRM_QianTaiJieDai_JieChe", mySqlParameters);
            DataSet ds = new DataSet();
            ds.Tables.Add(dt);
            return ds; //返回数据集
        }

第三步:界面层(UIL),dgv(套餐)的点击事件

BLL海马汽车销售系统.前台接待.FRM_QianTaiJieDai_JieChe.FRM_QianTaiJieDai_JieCheClient myFRM_QianTaiJieDai_JieCheClient = 
            new BLL海马汽车销售系统.前台接待.FRM_QianTaiJieDai_JieChe.FRM_QianTaiJieDai_JieCheClient();
private void dgvSettel_MouseDoubleClick(object sender, MouseEventArgs e)
        {            
            //根据套餐ID查询套餐设定的项目
            DataTable dtSettelItems=myFRM_QianTaiJieDai_JieCheClient.FRM_QianTaiJieDai_JieChe_SelectSetMealItems(Convert.ToInt32(dgvSettel.CurrentRow.Cells["套餐ID"].Value)).Tables[0];
            if (dgvServiceItem.Rows.Count > 0)//如果dgv(维修项目)不为空
            {
                for (int i = 0; i < dgvServiceItem.Rows.Count; i++)//循环dgv
                {
                    if (dtSettelItems.Rows.Count > 0)//如果套餐项目不为空
                    {
                        for (int j = 0; j < dtSettelItems.Rows.Count; j++)//循环表
                        {
                            //如果dgv(维修项目)中,已存在
                            if (Convert.ToInt32(dgvServiceItem.Rows[i].Cells["工时项目ID"].Value) == Convert.ToInt32(dtSettelItems.Rows[j]["WorkHoursItemID"]))
                            {
                                dtSettelItems.Rows.Remove(dtSettelItems.Rows[j]);//从表中移除该工时项目,留下没有的
                            }
                            else
                            {

                            }
                        }
                    }
                }
            }
            if (dtSettelItems.Rows.Count > 0)//如果表不为空
            {
                for (int i = 0; i < dtSettelItems.Rows.Count; i++)//循环表
                {
                    //dgv(维修项目)增加一行
                    dgvServiceItem.Rows.Add();
                    //赋值给dgv(维修项目)各列
                    dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["工时项目明细ID1"].Value = Convert.ToInt32(dtSettelItems.Rows[i]["WorkHoursItemMinuteID"]);
                    dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["工时项目ID"].Value = Convert.ToInt32(dtSettelItems.Rows[i]["WorkHoursItemID"]);
                    dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["项目代码1"].Value = dtSettelItems.Rows[i]["ItemCode"];
                    dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["项目名称"].Value = dtSettelItems.Rows[i]["ItemName"];
                    dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["工种"].Value = dtSettelItems.Rows[i]["WorkKindName"];
                    dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["帐类"].Value = dtSettelItems.Rows[i]["AccountType"];
                    dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["帐类ID"].Value = Convert.ToInt32(dtSettelItems.Rows[i]["AccountTypeID"]);
                    dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["工时单价"].Value = dtSettelItems.Rows[i]["WorkHoursMoney"];
                    dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["标准工时"].Value = dtSettelItems.Rows[i]["ParWorkHours"];
                    dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["优惠前工时金额"].Value = Convert.ToDecimal(dtSettelItems.Rows[i]["WorkHoursMoney"]) * Convert.ToDecimal(dtSettelItems.Rows[i]["ParWorkHours"]);
                    dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["项目状态ID"].Value = "20";
                    dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["项目状态"].Value = "待派";
                    //根据帐类查询折扣
                    DataTable dtAttributeMinuteListRemark = myFRM_QianTaiJieDai_JieCheClient.FRM_QianTaiJieDai_JieChe_SelectAttributeMinuteListRemark(Convert.ToInt32(dtSettelItems.Rows[i]["AccountTypeID"])).Tables[0];
                    decimal decZheKo = Convert.ToDecimal(dtAttributeMinuteListRemark.Rows[0]["Remark"]);
                    //计算优惠后工时金额
                    dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["优惠后工时金额"].Value = Convert.ToDecimal(dtSettelItems.Rows[i]["WorkHoursMoney"]) * Convert.ToDecimal(dtSettelItems.Rows[i]["ParWorkHours"]) * decZheKo / 100;
                    dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["工时乘单价"].Value = Convert.ToBoolean(dtSettelItems.Rows[i]["IfWorkHoursMultiplyUnitPrice"]);
                    dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["折扣2"].Value = dtAttributeMinuteListRemark.Rows[0]["Remark"].ToString(); 

                }
            }
            //根据套餐ID查询套餐设定的配件
            DataTable dtSettelParts=myFRM_QianTaiJieDai_JieCheClient.FRM_QianTaiJieDai_JieChe_SelectSetMealParts(Convert.ToInt32(dgvSettel.CurrentRow.Cells["套餐ID"].Value)).Tables[0];
            if (dgvNeedParts.Rows.Count > 0)//如果dgv(需求配件)不为空
            {
                for (int j = 0; j < dgvNeedParts.Rows.Count; j++)//循环dgv
                {
                    if (dtSettelParts.Rows.Count > 0)//如果套餐配件不为空
                    {
                        for (int k = 0; k < dtSettelParts.Rows.Count; k++)//循环表
                        {
                            //如果dgv(维修项目)中,已存在
                            if (Convert.ToInt32(dgvNeedParts.Rows[j].Cells["配件ID"].Value) == Convert.ToInt32(dtSettelParts.Rows[k]["PartsID"]))
                            {
                                dtSettelParts.Rows.Remove(dtSettelParts.Rows[k]);//从表中移除该配件,留下没有的
                            }
                            else
                            {

                            }
                        }
                    }
                }
            }
            if (dtSettelParts.Rows.Count > 0)//如果表不为空
            {
                for (int j = 0; j < dtSettelParts.Rows.Count; j++)//循环表
                {
                    //dgv(维修项目)增加一行
                    dgvNeedParts.Rows.Add();
                    //赋值给dgv(维修项目)各列
                    dgvNeedParts.Rows[dgvNeedParts.Rows.Count - 1].Cells["配件编码"].Value = dtSettelParts.Rows[j]["PartsCoding"];
                    dgvNeedParts.Rows[dgvNeedParts.Rows.Count - 1].Cells["配件名称"].Value = dtSettelParts.Rows[j]["PartsName"];
                    dgvNeedParts.Rows[dgvNeedParts.Rows.Count - 1].Cells["车型"].Value = dtSettelParts.Rows[j]["CarModels"];
                    dgvNeedParts.Rows[dgvNeedParts.Rows.Count - 1].Cells["帐类2"].Value = dtSettelParts.Rows[j]["AccountType"];
                    dgvNeedParts.Rows[dgvNeedParts.Rows.Count - 1].Cells["帐类ID2"].Value = Convert.ToInt32(dtSettelParts.Rows[j]["AccountTypeID"]);
                    dgvNeedParts.Rows[dgvNeedParts.Rows.Count - 1].Cells["需求数量"].Value = dtSettelParts.Rows[j]["Number"];
                    dgvNeedParts.Rows[dgvNeedParts.Rows.Count - 1].Cells["销售单价"].Value = dtSettelParts.Rows[j]["SellPrice"];
                    dgvNeedParts.Rows[dgvNeedParts.Rows.Count - 1].Cells["单位"].Value = dtSettelParts.Rows[j]["Unit"];
                    dgvNeedParts.Rows[dgvNeedParts.Rows.Count - 1].Cells["配件ID"].Value = Convert.ToInt32(dtSettelParts.Rows[j]["PartsID"]);
                    dgvNeedParts.Rows[dgvNeedParts.Rows.Count - 1].Cells["备注"].Value = "";
                    //根据帐类查询折扣
                    DataTable dtAttributeMinuteListRemark = myFRM_QianTaiJieDai_JieCheClient.FRM_QianTaiJieDai_JieChe_SelectAttributeMinuteListRemark(Convert.ToInt32(dtSettelParts.Rows[j]["AccountTypeID"])).Tables[0];
                    decimal decZheKo = Convert.ToDecimal(dtAttributeMinuteListRemark.Rows[0]["Remark"]);
                    //计算优惠后金额
                    dgvNeedParts.Rows[dgvNeedParts.Rows.Count - 1].Cells["优惠后金额"].Value = Convert.ToDecimal(dtSettelParts.Rows[j]["Number"]) * Convert.ToDecimal(dtSettelParts.Rows[j]["SellPrice"]) * decZheKo / 100;
                    dgvNeedParts.Rows[dgvNeedParts.Rows.Count - 1].Cells["折扣1"].Value = dtAttributeMinuteListRemark.Rows[0]["Remark"].ToString();
                }
            }
            dgvSettel.Visible = false;//dgv(套餐)不可见
        }

4、转维修项目

 

第一步:界面层(UIL),(图四)dgv(建议维修项目)中的【转维修项目】按钮的点击事件。

private void btnShiftServiceItems_Click(object sender, EventArgs e)
        {
            if (dgvSuggestServiceItem.SelectedRows.Count > 0)//dgv(建议维修项目)不为空
            {
                if (dgvServiceItem.Rows.Count > 0)//dgv(维修项目)不为空
                {
                    for (int i = 0; i < dgvServiceItem.Rows.Count; i++)//循环dgv(维修项目)
                    {
                        //如果该项目已存在
                        if (Convert.ToInt32(dgvSuggestServiceItem.CurrentRow.Cells["工时项目ID1"].Value) == Convert.ToInt32(dgvServiceItem.Rows[i].Cells["工时项目ID"].Value))
                        {
                            MessageBox.Show("已存在该项目,不能转!");
                            return;
                        }
                    }
                }
                //dgv(维修项目)增加一行
                dgvServiceItem.Rows.Add();
                //赋值给dgv(维修项目)各列
                dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["工时项目明细ID1"].Value = dgvSuggestServiceItem.CurrentRow.Cells["工时项目明细ID2"].Value;
                dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["项目代码1"].Value = dgvSuggestServiceItem.CurrentRow.Cells["项目代号"].Value;
                dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["项目名称"].Value = dgvSuggestServiceItem.CurrentRow.Cells["项目名称3"].Value;
                dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["工种"].Value = dgvSuggestServiceItem.CurrentRow.Cells["工种3"].Value;
                dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["帐类"].Value = dgvSuggestServiceItem.CurrentRow.Cells["帐类3"].Value;
                dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["帐类ID"].Value = Convert.ToInt32(dgvSuggestServiceItem.CurrentRow.Cells["帐类ID3"].Value);
                dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["工时单价"].Value = dgvSuggestServiceItem.CurrentRow.Cells["工时单价2"].Value;
                dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["标准工时"].Value = dgvSuggestServiceItem.CurrentRow.Cells["工时3"].Value;
                dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["优惠前工时金额"].Value = Convert.ToDecimal(dgvSuggestServiceItem.CurrentRow.Cells["工时单价2"].Value) * Convert.ToDecimal(dgvSuggestServiceItem.CurrentRow.Cells["工时3"].Value);
                dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["项目状态ID"].Value = "20";
                dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["项目状态"].Value = "待派";                              
                dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["工时乘单价"].Value = true;
                //根据帐类查询折扣
                DataTable dtAttributeMinuteListRemark = myFRM_QianTaiJieDai_JieCheClient.FRM_QianTaiJieDai_JieChe_SelectAttributeMinuteListRemark(Convert.ToInt32(dgvSuggestServiceItem.CurrentRow.Cells["帐类ID3"].Value)).Tables[0];
                decimal decZheKo = Convert.ToDecimal(dtAttributeMinuteListRemark.Rows[0]["Remark"]);
                //计算优惠后工时金额
                dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["优惠后工时金额"].Value = Convert.ToDecimal(dgvSuggestServiceItem.CurrentRow.Cells["工时单价2"].Value) * Convert.ToDecimal(dgvSuggestServiceItem.CurrentRow.Cells["工时3"].Value)*decZheKo /100;
                
                dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["折扣2"].Value = Convert.ToDecimal(dtAttributeMinuteListRemark.Rows[0]["Remark"]);
                dgvSuggestServiceItem.Rows.RemoveAt(dgvSuggestServiceItem.CurrentRow.Index);
            }
            else
            {
                MessageBox.Show("请选择数据!");
            }
        }
private void btnShiftServiceItems_Click(object sender, EventArgs e)
        {
            if (dgvSuggestServiceItem.SelectedRows.Count > 0)//dgv(建议维修项目)不为空
            {
                if (dgvServiceItem.Rows.Count > 0)//dgv(维修项目)不为空
                {
                    for (int i = 0; i < dgvServiceItem.Rows.Count; i++)//循环dgv(维修项目)
                    {
                        //如果该项目已存在
                        if (Convert.ToInt32(dgvSuggestServiceItem.CurrentRow.Cells["工时项目ID1"].Value) == Convert.ToInt32(dgvServiceItem.Rows[i].Cells["工时项目ID"].Value))
                        {
                            MessageBox.Show("已存在该项目,不能转!");
                            return;
                        }
                    }
                }
                //dgv(维修项目)增加一行
                dgvServiceItem.Rows.Add();
                //赋值给dgv(维修项目)各列
                dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["工时项目明细ID1"].Value = dgvSuggestServiceItem.CurrentRow.Cells["工时项目明细ID2"].Value;
                dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["项目代码1"].Value = dgvSuggestServiceItem.CurrentRow.Cells["项目代号"].Value;
                dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["项目名称"].Value = dgvSuggestServiceItem.CurrentRow.Cells["项目名称3"].Value;
                dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["工种"].Value = dgvSuggestServiceItem.CurrentRow.Cells["工种3"].Value;
                dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["帐类"].Value = dgvSuggestServiceItem.CurrentRow.Cells["帐类3"].Value;
                dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["帐类ID"].Value = Convert.ToInt32(dgvSuggestServiceItem.CurrentRow.Cells["帐类ID3"].Value);
                dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["工时单价"].Value = dgvSuggestServiceItem.CurrentRow.Cells["工时单价2"].Value;
                dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["标准工时"].Value = dgvSuggestServiceItem.CurrentRow.Cells["工时3"].Value;
                dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["优惠前工时金额"].Value = Convert.ToDecimal(dgvSuggestServiceItem.CurrentRow.Cells["工时单价2"].Value) * Convert.ToDecimal(dgvSuggestServiceItem.CurrentRow.Cells["工时3"].Value);
                dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["项目状态ID"].Value = "20";
                dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["项目状态"].Value = "待派";                              
                dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["工时乘单价"].Value = true;
                //根据帐类查询折扣
                DataTable dtAttributeMinuteListRemark = myFRM_QianTaiJieDai_JieCheClient.FRM_QianTaiJieDai_JieChe_SelectAttributeMinuteListRemark(Convert.ToInt32(dgvSuggestServiceItem.CurrentRow.Cells["帐类ID3"].Value)).Tables[0];
                decimal decZheKo = Convert.ToDecimal(dtAttributeMinuteListRemark.Rows[0]["Remark"]);
                //计算优惠后工时金额
                dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["优惠后工时金额"].Value = Convert.ToDecimal(dgvSuggestServiceItem.CurrentRow.Cells["工时单价2"].Value) * Convert.ToDecimal(dgvSuggestServiceItem.CurrentRow.Cells["工时3"].Value)*decZheKo /100;
                
                dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["折扣2"].Value = Convert.ToDecimal(dtAttributeMinuteListRemark.Rows[0]["Remark"]);
                dgvSuggestServiceItem.Rows.RemoveAt(dgvSuggestServiceItem.CurrentRow.Index);
            }
            else
            {
                MessageBox.Show("请选择数据!");
            }
        }

5、库存不足时,新增配件订单,(图二)中【数量】的值改变事件。【新增订单】界面见下图:

第一步:数据库存储过程

 

IF(@TYPE='FRM_YuYueGuanLi_Insert_SelectKuCunShu')    
   BEGIN
   SELECT     PartsID,LTRIM(RTRIM(StockNumber))AS StockNumber
    FROM         BM_StockList
    WHERE PartsID=@PartsID
   END
   IF(@TYPE='FRM_YuYueGuanLi_Insert_YuYuePeiJianShu')
   BEGIN
   SELECT     PW_BespeakBillList.BespeakBillID, PW_BespeakPartsList.NeedNumber, BM_PartsList.PartsID
   FROM         PW_BespeakBillList INNER JOIN
                  PW_BespeakPartsList ON PW_BespeakBillList.BespeakBillID = PW_BespeakPartsList.BespeakBillID INNER JOIN
                  BM_PartsList ON PW_BespeakPartsList.PartsID = BM_PartsList.PartsID
   WHERE     (PW_BespeakBillList.IfEffective = 1 and PW_BespeakBillList.IfResourceRelease=0 AND PW_BespeakBillList.IfResourceRelease=0)
   END
   IF(@TYPE='FRM_YuYueGuanLi_Insert_WeiXiuXuQiuPeiJianShu')
   BEGIN
   SELECT     PW_ServiceWorkBillList.ServiceWorkBillID, PW_ServiceNeedPartsList.NeedNumber, BM_PartsList.PartsID
   FROM         PW_ServiceWorkBillList INNER JOIN
              PW_ServiceNeedPartsList ON PW_ServiceWorkBillList.ServiceWorkBillID = PW_ServiceNeedPartsList.ServiceWorkBillID INNER JOIN
              BM_PartsList ON PW_ServiceNeedPartsList.PartsID = BM_PartsList.PartsID
   WHERE  PW_ServiceWorkBillList.IfResourceRelease=0
   END

 

 

 

 

 

第二步:逻辑层(BLL)

//根据配件查询库存
[OperationContract]
         public DataSet FRM_YuYueGuanLi_Insert_SelectKuCunShu(int intPeiJianID)
         {
             SqlParameter[] mySqlParameters =
        {
        new SqlParameter("@TYPE",SqlDbType.Char),
        new SqlParameter("@PartsID",SqlDbType.Int),
        };
             mySqlParameters[0].Value = "FRM_YuYueGuanLi_Insert_SelectKuCunShu";
             mySqlParameters[1].Value=intPeiJianID;
             DataTable dt = myDALMethod.QueryDataTable("预约管理_FRM_YuYueGuanLi_Insert", mySqlParameters);
             DataSet ds = new DataSet();
             ds.Tables.Add(dt);
             return ds; //返回数据集
         }
//查询预约配件数
         [OperationContract]
         public DataSet FRM_YuYueGuanLi_Insert_YuYuePeiJianShu()
         {
             SqlParameter[] mySqlParameters =
        {
        new SqlParameter("@TYPE",SqlDbType.Char),
        };
             mySqlParameters[0].Value = "FRM_YuYueGuanLi_Insert_YuYuePeiJianShu";
             DataTable dt = myDALMethod.QueryDataTable("预约管理_FRM_YuYueGuanLi_Insert", mySqlParameters);
             DataSet ds = new DataSet();
             ds.Tables.Add(dt);
             return ds; //返回数据集
         }
//查询维修工单配件数
         [OperationContract]
         public DataSet FRM_YuYueGuanLi_Insert_WeiXiuXuQiuPeiJianShu()
         {
             SqlParameter[] mySqlParameters =
        {
        new SqlParameter("@TYPE",SqlDbType.Char),
        };
             mySqlParameters[0].Value = "FRM_YuYueGuanLi_Insert_WeiXiuXuQiuPeiJianShu";
             DataTable dt = myDALMethod.QueryDataTable("预约管理_FRM_YuYueGuanLi_Insert", mySqlParameters);
             DataSet ds = new DataSet();
             ds.Tables.Add(dt);
             return ds; //返回数据集
         }

第三步:界面层(UIL)

BLL海马汽车销售系统.预约管理.FRM_YuYueGuanLi_Insert.FRM_YuYueGuanLi_InsertClient myFRM_YuYueGuanLi_InsertClient =
            new BLL海马汽车销售系统.预约管理.FRM_YuYueGuanLi_Insert.FRM_YuYueGuanLi_InsertClient();
private void txtNeedNumber_TextChanged(object sender, EventArgs e)
        {
            decimal decKuCun = 0;
            decimal decYuYuePeiJianShu = 0;
            decimal decWeiXiuXuQiuPeiJianShu = 0;
            if (i == 1)
            {
                //DataTable dtPeiJianXuanZe = myFRM_YuYueGuanLi_InsertClient.FRM_YuYueGuanLi_Insert_cboPeiJianBianMa_SelectedIndexChanged(Convert.ToInt32(cboPartsCoding.SelectedValue)).Tables[0];
                //txtPartsName.Text = dtPeiJianXuanZe.Rows[0]["PartsName"].ToString();
                //txtCarModels.Text = dtPeiJianXuanZe.Rows[0]["CarModels"].ToString();
                //txtPrice.Text = dtPeiJianXuanZe.Rows[0]["SellPrice"].ToString();
                //根据配件查询库存
                DataTable dtKuCun = myFRM_YuYueGuanLi_InsertClient.FRM_YuYueGuanLi_Insert_SelectKuCunShu(Convert.ToInt32(cboPeiJianBianMa.SelectedValue)).Tables[0];
                for (int j = 0; j < dtKuCun.Rows.Count; j++)
                {
                    //计算所有仓库的该配件总量
                    decKuCun += Convert.ToDecimal(dtKuCun.Rows[j]["StockNumber"]);
                }
                //查询预约配件数
                DataTable dtYuYuePeiJianShu = myFRM_YuYueGuanLi_InsertClient.FRM_YuYueGuanLi_Insert_YuYuePeiJianShu().Tables[0];
                for (int J = 0; J < dtYuYuePeiJianShu.Rows.Count; J++)
                {
                    if (Convert.ToInt32(cboPeiJianBianMa.SelectedValue) == Convert.ToInt32(dtYuYuePeiJianShu.Rows[J]["NeedNumber"]))
                    {
                        //合计预约配件数
                        decYuYuePeiJianShu += Convert.ToInt32(dtYuYuePeiJianShu.Rows[J]["NeedNumber"]);
                    }
                }
                //查询维修工单配件数
                DataTable dtWeiXiuXuQiuPeiJianShu = myFRM_YuYueGuanLi_InsertClient.FRM_YuYueGuanLi_Insert_WeiXiuXuQiuPeiJianShu().Tables[0];
                for (int k = 0; k < dtWeiXiuXuQiuPeiJianShu.Rows.Count; k++)
                {
                    if (Convert.ToInt32(cboPeiJianBianMa.SelectedValue) == Convert.ToInt32(dtWeiXiuXuQiuPeiJianShu.Rows[0]["NeedNumber"]))
                    {
                        //合计维修工单配件数
                        decWeiXiuXuQiuPeiJianShu += Convert.ToInt32(dtWeiXiuXuQiuPeiJianShu.Rows[0]["NeedNumber"]);
                    }
                }
                //计算可用配件数
                decimal  decKoXianShu = Convert.ToInt32(decKuCun - decYuYuePeiJianShu - decWeiXiuXuQiuPeiJianShu);
                if (Convert.ToDecimal(txtNeedNumber.Text) > decKoXianShu)//如果库存不足
                {
                    if (MessageBox.Show("库存不足,是否生成配件订单表!", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
                    {
                        blnShiFouDingGouPeiJian = true;//给公共变量赋值
                        intPeiJianID = Convert.ToInt32(cboPeiJianBianMa.SelectedValue);//给公共变量赋值
                        strPeiJianMingCheng = txtPartsCoding.Text;//给公共变量赋值
                        PublicStaticObject.Pub_FRM_DingDanGuanLi_Insert = new 库存管理.FRM_DingDanGuanLi_Insert();
                        PublicStaticObject.Pub_FRM_DingDanGuanLi_Insert.ShowDialog();
                        库存管理.FRM_DingDanGuanLi_Insert myFRM_DingDanGuanLi_Insert = new 库存管理.FRM_DingDanGuanLi_Insert();
                        myFRM_DingDanGuanLi_Insert.ShowDialog();//打开订单新增界面
                    }
                    else
                    {
                       
                    }
                }
            }
        }

 

 

 

 

 

 

 

 

 

以上仅供学习参考,禁止用于商业用途!!!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值