您的位置:首页 > 其它

海马汽车经销商管理系统技术解析(四)保养管理

2015-05-30 18:57 447 查看

海马汽车经销商管理系统技术解析(四)保养管理

保养管理包括提取、支店保养、审核等功能。根据维修单号提取信息,完善相关保养信息,进行保存,生成保养单,然后对保养单进行审核。支店保养需要先选择支店然后根据条件查询相关信息,完善相关保养信息,进行保存生成保养单,然后对保养单进行审核。还可进行删除、修改未审核的保养单。还有上页、下页等功能。
保养管理主界面如图(图1)所示:
显示所有的保养单。



(图1)

提取工单界面如图(图2)所示:

根据工单号提取车辆信息。



(图2)

支店保养选择支店界面如图(图3)所示:

先选择支店,然后提取车辆信息。



(图3)

支店保养提取车辆信息界面如图(图4)所示:

可以根据不同的条件提取车辆信息。



(图4)

审核界面如图(图5)、(图6)所示:

先提示该车已经保养的次数,然后保养次序会已经保养的次数上 +1。



(图5)



(图6)

从界面上可以看到我们这里用到的控件有

控件名称

说明
(ToolStrip)

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

表格(DataGridView)

按钮(toolStripButton)
/(Button)
复选框(CheckBox)

下拉框(ComBoBox)

文本框(TextBox)

日期控件(DateTimePicker)

显示功能实现:

第一步:数据库

1、表和关系



(图7)

表1:维修工单表(PW_ServiceWorkBillList)

用于存放维修工单录入的信息

列名

数据类型

主键/外键

说明

ServiceWorkBillID

int

主键

维修工单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: 保养单表(BM_UpkeepBillList)

用于存放保养单录入的信息

列名

数据类型

主键/外键

说明

UpkeepBillID

int

主键

保养单ID

UpkeepOddNumbers

nchar (20)

保养单号

ServiceWorkOddNumBer

nchar (20)

维修工单号

AttributeMinuteID_UpkeepPar

int

外键

属性明细ID_保养标准

UpkeepOrder

nchar (20)

保养次序

UpkeepSite

nchar (50)

保养地址

SteerMileage

decimal (18, 2)

保养里程

VerifyDate

datetime

审核日期

UpkeepDate

datetime

保养日期

UpkeepBatch

nchar (20)

保养批次

VerifyResult

nchar (100)

审核结果

VerifyOpinion

nchar (20)

审核意见

IfVerify

bit

核准否

CarNewsID

int

外键

车辆信息ID

AttributeMinuteID_VerifyResult

int

外键

属性明细ID_审核结果

表3:车辆信息表(BM_CarNewsList)

用于存放车辆录入的信息

列名

数据类型

主键/外键

说明

CarNewsID

int

主键

车辆信息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

有效否

表4:车主信息表(BM_CarOwnerNewsList)

用于存放车主录入的信息

列名

数据类型

主键/外键

说明

CarOwnerNewsID

int

主键

车主信息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

有效否

第二步:技术解析
1、删除功能:
第一步:数据库存储过程
IF(@TYPE ='btnDelete_Click_Delete_ShanChuBangYangDan')
BEGIN
DELETE BM_UpkeepBillList
WHERE BM_UpkeepBillList.UpkeepBillID =@UpkeepBillID
END

第二步:逻辑层(BLL)代码
[OperationContract]
public int btnDelete_Click_Delete_ShanChuBangYangDan(int intUpkeepBillID)
{
SqlParameter[] mySqlParameters = {
new SqlParameter ("@TYPE",SqlDbType.Char),
new SqlParameter ("@UpkeepBillID",SqlDbType.Int),
};
mySqlParameters[0].Value = "btnDelete_Click_Delete_ShanChuBangYangDan";
mySqlParameters[1].Value = intUpkeepBillID;
return myDALMethod.UpdateData("理赔管理_FRM_BaoYangGuanLi", mySqlParameters);
}

第三步:界面层(UIL)代码,写进Button单击事件

/// <summary>
/// 只能删除未审核的保养单,已审核的不能删除
/// </summary>
/// <param name="sender">触发者</param>
/// <param name="e">触发事件</param>
private void btnDelete_Click(object sender, EventArgs e)
{
if (UpkeepBillID > 0)//判断是否选择保养单
{
if (IfVerify == false )//判断保养单审核否
{
if (MessageBox.Show("确定删除" + txtUpkeepOddNumbers.Text + "这保养单??", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
myFRM_BaoYangGuanLiClient.btnDelete_Click_Delete_ShanChuBangYangDan(UpkeepBillID);
MessageBox.Show("删除成功!!!");
FRM_BaoYangDanGuanLi_Load(null, null);//重新加载Load事件,刷新
}
}
else { MessageBox.Show("已审核的保养单不能删除!!!"); }
}
else { MessageBox.Show("请先选择需要删除的保养单!!!"); }
}

2、修改功能

第一步:数据库存储过程

IF(@TYPE ='btnUpdate_Click_Update_XiuGaiBaoYangXinXi')
BEGIN
UPDATE BM_UpkeepBillList
SET ServiceWorkOddNumBer=@ServiceWorkOddNumBer,AttributeMinuteID_UpkeepPar=@AttributeMinuteID_UpkeepPar,
SteerMileage=@SteerMileage,UpkeepDate=@UpkeepDate
WHERE BM_UpkeepBillList.UpkeepBillID =@UpkeepBillID
END

第二步:逻辑层(BLL)代码
[OperationContract]
public int btnUpdate_Click_Update_XiuGaiBaoYangXinXi(string strServiceWorkOddNumBer, int intAttributeMinuteID_UpkeepPar,
decimal decSteerMileage, DateTime dtmUpkeepDate, int intUpkeepBillID)
{
SqlParameter[] mySqlParameters = {
new SqlParameter ("@TYPE",SqlDbType.Char),
new SqlParameter ("@ServiceWorkOddNumBer",SqlDbType.Char),
new SqlParameter ("@AttributeMinuteID_UpkeepPar",SqlDbType.Int),
new SqlParameter ("@SteerMileage",SqlDbType.Decimal),
new SqlParameter ("@UpkeepDate",SqlDbType.DateTime),
new SqlParameter ("@UpkeepBillID",SqlDbType.Int),
};
mySqlParameters[0].Value = "btnUpdate_Click_Update_XiuGaiBaoYangXinXi";
mySqlParameters[1].Value = strServiceWorkOddNumBer;
mySqlParameters[2].Value = intAttributeMinuteID_UpkeepPar;
mySqlParameters[3].Value = decSteerMileage;
mySqlParameters[4].Value = dtmUpkeepDate;
mySqlParameters[5].Value = intUpkeepBillID;
return myDALMethod.UpdateData("理赔管理_FRM_BaoYangGuanLi", mySqlParameters);
}

第三步:界面层(UIL)代码,写进Button单击事件

/// <summary>
/// 未审核的保养单才可以修改,已审核的保养单不能修改
/// </summary>
/// <param name="sender">触发者</param>
/// <param name="e">触发事件</param>
private void btnUpdate_Click(object sender, EventArgs e)
{
if (UpkeepBillID > 0)//判断是否选择保养单
{
if (IfVerify == false)//判断保养单审核否
{
if (MessageBox.Show("确定修改" + txtUpkeepOddNumbers.Text + "这保养单??", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
string strServiceWorkOddNumBer = txtServiceOddNumBer.Text.ToString ().Trim ();
int intAttributeMinuteID_UpkeepPar = Convert.ToInt32(cboUpkeepPar .SelectedValue.ToString ().Trim ());
decimal decSteerMileage = Convert.ToDecimal(txtSteerMileage.Text.Trim ());
DateTime dtmUpkeepDate = Convert.ToDateTime(dtpUpkeepDate.Text.Trim ());
int intUpkeepBillID = UpkeepBillID;
int i = myFRM_BaoYangGuanLiClient.btnUpdate_Click_Update_XiuGaiBaoYangXinXi(strServiceWorkOddNumBer,
intAttributeMinuteID_UpkeepPar, decSteerMileage, dtmUpkeepDate, intUpkeepBillID);
if (i > 0)
{
MessageBox.Show("修改成功!!!");
FRM_BaoYangDanGuanLi_Load(null, null);//重新加载Load事件,刷新
}
}
}
else { MessageBox.Show("已审核的保养单不能修改!!!"); }
}
else { MessageBox.Show("请先选择需要修改的保养单!!!"); }
}

3、审核前提示已保养次数

第一步:数据库存储过程

IF(@TYPE ='FRM_BaoYangDanGuanLi_Load_Select_ChePaiHaoChaXunCheLiangBaoYangCiShu')
BEGIN
SELECT     BM_UpkeepBillList.IfVerify, BM_UpkeepBillList.CarNewsID, BM_CarNewsList.LicensePlateNumber
FROM         BM_UpkeepBillList INNER JOIN
BM_CarNewsList ON BM_UpkeepBillList.CarNewsID = BM_CarNewsList.CarNewsID
WHERE BM_CarNewsList.LicensePlateNumber=@LicensePlateNumber AND  BM_UpkeepBillList.IfVerify=1
AND BM_UpkeepBillList.AttributeMinuteID_VerifyResult=35
END

第二步:逻辑层(BLL)代码
[OperationContract]
public DataSet FRM_BaoYangDanGuanLi_Load_Select_ChePaiHaoChaXunCheLiangBaoYangCiShu(string strLicensePlateNumber)
{
SqlParameter[] mySqlParameters ={
new SqlParameter("@TYPE",SqlDbType.Char),
new SqlParameter("@LicensePlateNumber",SqlDbType.Char),
};
mySqlParameters[0].Value = "FRM_BaoYangDanGuanLi_Load_Select_ChePaiHaoChaXunCheLiangBaoYangCiShu";
mySqlParameters[1].Value =strLicensePlateNumber;
DataTable dt = myDALMethod.QueryDataTable("理赔管理_FRM_BaoYangGuanLi", mySqlParameters);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
return ds;
}

第三步:界面层(UIL)代码,写进界面Load事件

/// <summary>
/// 若该车已经保养过的,就提示已保养次数,若是首次保养则不需要提示
/// </summary>
/// <param name="sender">触发者</param>
/// <param name="e">触发事件</param>
private void FRM_BaoYangGuanLi_ShenHe_Load(object sender, EventArgs e)
{
DataTable dtVerifyResult = myFRM_BaoYangGuanLi_ShenHeClient.cboVerifyResult_Select_ChaXunShenHeJieGuo().Tables[0];
PublicStaticMothd.SetZhiXiaLaKuang(cboVerifyResult, dtVerifyResult, "AttributeMinuteID", "VerifyResult");//绑定下拉框数据
DataTable dtCar = myFRM_BaoYangGuanLiClient.FRM_BaoYangDanGuanLi_Load_Select_ChePaiHaoChaXunCheLiangBaoYangCiShu
(FRM_BaoYangGuanLi.LicensePlateNumber).Tables[0];//根据车牌号码查询该车进行保养的所有数据
decimal decCount = 0;//定义一个次数变量
if (dtCar.Rows.Count > 0)//如果该车存在的行数>0
{
MessageBox.Show("此车辆已了进行" + dtCar.Rows.Count + "次保养");//提示该车已进行N次保养
decCount = dtCar.Rows.Count + 1;//次数+1
txtUpkeepOrder.Text = "第" + decCount + "次";
}
else
{
decCount = decCount + 1;
txtUpkeepOrder.Text = "第" + decCount + "次";//否则次数为1
}
}

4、审核功能

第一步:数据库存储过程

IF(@TYPE ='btnConfirm_Click_Update_XiuGaiBaoYangShenHeXinXi')
BEGIN
UPDATE BM_UpkeepBillList
SET  VerifyDate=@VerifyDate, AttributeMinuteID_VerifyResult=@AttributeMinuteID_VerifyResult,
VerifyOpinion=@VerifyOpinion, IfVerify=@IfVerify, UpkeepOrder=@UpkeepOrder,
UpkeepBatch=@UpkeepBatch
WHERE BM_UpkeepBillList.UpkeepBillID=@UpkeepBillID
END

第二步:逻辑层(BLL)代码
[OperationContract]
public int btnConfirm_Click_Update_XiuGaiBaoYangShenHeXinXi(DateTime dtmVerifyDate,
int intAttributeMinuteID_VerifyResult, string strVerifyOpinion, bool blnIfVerify,
int intUpkeepBillID, string strUpkeepOrder, string strUpkeepBatch)
{
SqlParameter[] mySqlParameters ={
new SqlParameter("@TYPE",SqlDbType.Char),
new SqlParameter("@VerifyDate",SqlDbType.DateTime),
new SqlParameter("@AttributeMinuteID_VerifyResult",SqlDbType.Int),
new SqlParameter("@VerifyOpinion",SqlDbType.Char),
new SqlParameter("@IfVerify",SqlDbType.Bit),
new SqlParameter("@UpkeepBillID",SqlDbType.Int),
new SqlParameter("@UpkeepOrder",SqlDbType.Char),
new SqlParameter("@UpkeepBatch",SqlDbType.Char),
};
mySqlParameters[0].Value = "btnConfirm_Click_Update_XiuGaiBaoYangShenHeXinXi";
mySqlParameters[1].Value = dtmVerifyDate;
mySqlParameters[2].Value = intAttributeMinuteID_VerifyResult;
mySqlParameters[3].Value = strVerifyOpinion;
mySqlParameters[4].Value = blnIfVerify;
mySqlParameters[5].Value = intUpkeepBillID;
mySqlParameters[6].Value = strUpkeepOrder;
mySqlParameters[7].Value = strUpkeepBatch;
return myDALMethod.UpdateData("理赔管理_FRM_BaoYangGuanLi_ShenHe", mySqlParameters);
}

第三步:界面层(UIL)代码,写进Button单击事件

/// <summary>
///
/// </summary>
/// <param name="sender">触发者</param>
/// <param name="e">触发事件</param>
private void btnConfirm_Click(object sender, EventArgs e)
{
DateTime dtmVerifyDate = Convert.ToDateTime(dtpVerifyDate.Text.Trim ());
int intAttributeMinuteID_VerifyResult = Convert.ToInt32(cboVerifyResult.SelectedValue.ToString ().Trim ());
string strVerifyOpinion = txtVerifyOpinion.Text.ToString ().Trim ();
bool blnIfVerify = true;
int intUpkeepBillID = FRM_BaoYangGuanLi.UpkeepBillID;
string strUpkeepOrder = txtUpkeepOrder.Text.ToString().Trim();
string strUpkeepBatch = txtUpkeepBatch.Text.ToString().Trim();
int i = myFRM_BaoYangGuanLi_ShenHeClient.btnConfirm_Click_Update_XiuGaiBaoYangShenHeXinXi(dtmVerifyDate,
intAttributeMinuteID_VerifyResult, strVerifyOpinion, blnIfVerify, intUpkeepBillID, strUpkeepOrder,
strUpkeepBatch);
BaoCunFou = true;
if (i > 0)
{
MessageBox.Show("审核成功!!!");
this.Close();
}
else { MessageBox.Show("审核失败!!!"); }
}

5、提取功能

第一步:数据库存储过程

IF(@TYPE ='btnConfirm_Click_Select_GongDanHaoChaXunXinXi')
BEGIN
SELECT     PW_ServiceWorkBillList.ServiceWorkBillID, PW_ServiceWorkBillList.WorkOddNumBer, PW_ServiceWorkBillList.CarNewsID, BM_CarNewsList.CarOwnerNewsID,
BM_CarNewsList.LicensePlateNumber, BM_CarNewsList.CarModelsCode, BM_CarNewsList.VINCode, BM_CarNewsList.MotorNumber, BM_CarNewsList.BuyCarDate,
BM_CarOwnerNewsList.CarOwnerName, BM_CarOwnerNewsList.Site, BM_CarOwnerNewsList.MobilePhone
FROM         PW_ServiceWorkBillList INNER JOIN
BM_CarNewsList ON PW_ServiceWorkBillList.CarNewsID = BM_CarNewsList.CarNewsID INNER JOIN
BM_CarOwnerNewsList ON BM_CarNewsList.CarOwnerNewsID = BM_CarOwnerNewsList.CarOwnerNewsID
WHERE 		PW_ServiceWorkBillList.WorkOddNumBer=@WorkOddNumBer
END
第二步:逻辑层(BLL)代码

[OperationContract]
public DataSet btnConfirm_Click_Select_GongDanHaoChaXunXinXi(string strWorkOddNumBer)
{
SqlParameter[] mySqlParameters ={
new SqlParameter("@TYPE",SqlDbType.Char),
new SqlParameter("@WorkOddNumBer",SqlDbType.Char),
};
mySqlParameters[0].Value = "btnConfirm_Click_Select_GongDanHaoChaXunXinXi";
mySqlParameters[1].Value = strWorkOddNumBer;
DataTable dt = myDALMethod.QueryDataTable("理赔管理_FRM_BaoYangGuanLi_TiQu", mySqlParameters);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
return ds;
}

第三步:界面层(UIL)代码

先把提取的数据放进数据表,再在主界面逐一显示出来

提取数据:

public static DataTable dtWorkBillNews = new DataTable();
private bool BaoCunFou;
private void btnConfirm_Click(object sender, EventArgs e)
{
dtWorkBillNews = myFRM_BaoYangGuanLi_TiQuClient.btnConfirm_Click_Select_GongDanHaoChaXunXinXi(txtWorkOddNumBer .Text).Tables[0];//提取数据放进数据表
BaoCunFou = true;
this.Close();
}

主界面显示数据:

private void btnExtract_Click(object sender, EventArgs e)
{
PublicStaticObject.Pub_FRM_BaoYangGuanLi_TiQu = new FRM_BaoYangGuanLi_TiQu();
PublicStaticObject.Pub_FRM_BaoYangGuanLi_TiQu.ShowDialog();
txtBuyCarDate.Text = "";
txtCarModels.Text = "";
txtCarOwnerName.Text = "";
txtLicensePlateNumber.Text = "";
txtMotorNumber.Text = "";
txtPhone.Text = "";
txtServiceOddNumBer.Text = "";
txtSite.Text = "";
txtSteerMileage.Text = "";
txtUpkeepBatch.Text = "";
txtUpkeepOrder.Text = "";
txtUpkeepSite.Text = "";
txtVINCode.Text = "";
txtUpkeepOddNumbers.Text = "";
txtVerifyDate.Text = "";
txtVerifyResult.Text = "";
dtpUpkeepDate.Text = DateTime.Now.ToString();
if (FRM_BaoYangGuanLi_TiQu.dtWorkBillNews.Rows.Count > 0)
{
txtBuyCarDate.Text = FRM_BaoYangGuanLi_TiQu.dtWorkBillNews.Rows[0]["BuyCarDate"].ToString().Trim();
txtCarModels.Text = FRM_BaoYangGuanLi_TiQu.dtWorkBillNews.Rows[0]["CarModelsCode"].ToString().Trim();
txtCarOwnerName.Text = FRM_BaoYangGuanLi_TiQu.dtWorkBillNews.Rows[0]["CarOwnerName"].ToString().Trim();
txtLicensePlateNumber.Text = FRM_BaoYangGuanLi_TiQu.dtWorkBillNews.Rows[0]["LicensePlateNumber"].ToString().Trim();
txtMotorNumber.Text = FRM_BaoYangGuanLi_TiQu.dtWorkBillNews.Rows[0]["CarModelsCode"].ToString().Trim();
txtPhone.Text = FRM_BaoYangGuanLi_TiQu.dtWorkBillNews.Rows[0]["MobilePhone"].ToString().Trim();
txtServiceOddNumBer.Text = FRM_BaoYangGuanLi_TiQu.dtWorkBillNews.Rows[0]["WorkOddNumBer"].ToString().Trim();
txtSite.Text = FRM_BaoYangGuanLi_TiQu.dtWorkBillNews.Rows[0]["Site"].ToString().Trim();
txtVINCode.Text = FRM_BaoYangGuanLi_TiQu.dtWorkBillNews.Rows[0]["VINCode"].ToString().Trim();
ServiceWorkBillID = Convert.ToInt32(FRM_BaoYangGuanLi_TiQu.dtWorkBillNews.Rows[0]["ServiceWorkBillID"]);
CarNewsID = Convert.ToInt32(FRM_BaoYangGuanLi_TiQu.dtWorkBillNews.Rows[0]["CarNewsID"]);
CarOwnerNewsID = Convert.ToInt32(FRM_BaoYangGuanLi_TiQu.dtWorkBillNews.Rows[0]["CarOwnerNewsID"]);
txtUpkeepSite.Text = "总店";

}
}

仅用于学习参考,禁止用于商业用途!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: