继续上面的想法:
如果采用上面所讲得到第五种方式,则设计分工清晰很多,也有利于提高重用性。
1、 BusinessConsignController类的方法实现:
1 /**//// <summary>
2 /// 获取薪酬清单
3 /// </summary>
4 /// <remarks>通过plid获取一个PayList对象</remarks>
5 /// <returns>薪酬清单PayList</returns>
6 public static PayList GetPayList(int plid)
7 {
8 PayList pl = null;
9 try
10 {
11 pl = pl = new PayList(plid);
12 }
13 catch
14 {
15 throw new System.NotImplementedException("创建pl失败了!!");
16 }
17 return pl;
18
19 }
2、 PayList类的方法实现:
1 /**//// <summary>
2 /// 构造函数
3 /// </summary>
4 /// <param name="id">Id</param>
5 public PayList(int id)
6 {
7 PayList pl = null;
8 try
9 {
10 pl = PayListDAL.GetPayList(plid);
11 }
12 catch
13 {
14 throw new System.NotImplementedException("创建pl失败了!!");
15 }
16 return pl;
17 }
3、 PayListDAL类的方法实现:
1 /**//// <summary>
2 /// 通过PayListID获取对应的PayList
3 /// </summary>
4 /// <param name="plid">要获取的PayList的id号</param>
5 public static PayList GetPayList(int plid)
6 {
7 Database db = DatabaseFactory.CreateDatabase("SqlServerExternal");
8 string sqlCommand = "GetPayList";
9 DbCommand dbCommand = db.GetStoredProcCommand(sqlCommand);
10 db.AddInParameter(dbCommand, "PayListId", DbType.Int32, plid);
11
12 DataSet dataSet = db.ExecuteDataSet(dbCommand); //通过存储过程获取的三个DataTable
13 DataTable plDataTable = dataSet.Tables[0]; //包含了对应PayList的信息,只有一条记录
14 DataTable pepiDataTable = dataSet.Tables[1]; //包含了对应PayList的所有PayEntry的编号
15 DataTable plcDataTable = dataSet.Tables[2]; //包含了对应PayList的合并信息,也只有编号
16
17 if (plDataTable.Rows.Count != 1)
18 return null;
19 PayList pl = new PayList(); //初始化PayList
20 pl.name = plDataTable.Rows[0]["name"].ToString(); //为PayList所有的属性赋值
21 pl.createDateTime = (DateTime)plDataTable.Rows[0]["CreateDateTime"];
22 pl.payDateTime = (DateTime)plDataTable.Rows[0]["PayDateTime"];
23 pl.owner = OrganizationController.GetPerson((int)plDataTable.Rows[0]["ownerId"]);
24 pl.payTemplate = PayTypeController.GetPayTemplate((int)plDataTable.Rows[0]["PayTemplateId"]);
25 pl.state = (PayListState)plDataTable.Rows[0]["state"];
26
27 PayEntry pe;
28
29 int rowNum = 0;
30 while (rowNum < pepiDataTable.Rows.Count) //此循环为了构造PayList的payEntries属性
31 {
32 pe = new PayEntry((int)pepiDataTable.Rows[rowNum]["PayEntry.ID"]); //初始化PayEntry
33 pl.payEntries.Add(pe.Id, pe); //将新的PayEntry赋予PayList的payEntrys
34 rowNum++;
35 }
36
37 PayListCombine payListCombine;
38
39 for (rowNum = 0; rowNum < plcDataTable.Rows.Count; rowNum++) //此循环为了构造PayList的payListCombines属性
40 {
41 payListCombine = new PayListCombine((int)plcDataTable.Rows[rowNum]["Id"]); //初始化payListCombine
42 pl.payListCombines.Add(payListCombineId, payListCombine); //将新的payListCombine赋予PayList的payListCombines
43 }
44 return pl;
45
46 }
4、 PayEntry类的方法实现:
1 /**//// <summary>
2 /// 构造函数
3 /// </summary>
4 /// <param name="id">Id</param>
5 public PayEntry(int id)
6 {
7 PayEntry pe = null;
8 try
9 {
10 pe = PayEntryDAL.GetPayEntry(id);
11 }
12 catch
13 {
14 throw new System.NotImplementedException("创建pe失败了!!");
15 }
16 return pe;
17 }
5、 PayEntryDAL类的方法实现:
1 /**//// <summary>
2 /// 通过PayEntryID获取对应的PayEntry
3 /// </summary>
4 /// <param name="peid">要获取的PayEntry的id号</param>
5 public static PayEntry GetPayEntry(int peid)
6 {
7 Database db = DatabaseFactory.CreateDatabase("SqlServerExternal");
8 string sqlCommand = "GetPayEntry";
9 DbCommand dbCommand = db.GetStoredProcCommand(sqlCommand);
10 db.AddInParameter(dbCommand, "PayEntryId", DbType.Int32, peid);
11
12 DataSet dataSet = db.ExecuteDataSet(dbCommand); //通过存储过程获取的两个DataTable
13 DataTable peDataTable = dataSet.Tables[0]; //包含了对应PayEntry的信息,只有一条记录
14 DataTable piDataTable = dataSet.Tables[1]; //包含了对应PayEntry的所有PayItem的编号
15
16 if (peDataTable.Rows.Count != 1)
17 return null;
18 PayEntry pe = new PayEntry(); //初始化PayEntry
19 pe.peid = peid; //为PayEntry所有的属性赋值
20 pe.personal = OrganizationController.GetPerson((int)peDataTable.Rows[rowNum]["PersonalId"]);
21
22 PayItem pi;
23
24 int rowNum = 0;
25 while (rowNum < pepiDataTable.Rows.Count) //此循环为了构造PayEntry的payPayItems属性
26 {
27 pi = new PayItem((int)piDataTable.Rows[rowNum]["PayItemID"]); //初始化PayItem
28 pe.payPayItems.Add(pi.Id, pi); //将新的PayItem赋予PayEntry的payPayItems
29 rowNum++;
30 }
31 return pe;
32
33 }
6、 PayItem类的方法实现:
1 /**//// <summary>
2 /// 构造函数
3 /// </summary>
4 /// <param name="id">Id</param>
5 public PayItem(int id)
6 {
7 PayItem pi = null;
8 try
9 {
10 pi = PayItemDAL.GetPayItem(id);
11 }
12 catch
13 {
14 throw new System.NotImplementedException("创建pi失败了!!");
15 }
16 return pi;
17 }
7、 PayItemDAL类的方法实现:
1 /**//// <summary>
2 /// 通过PayItemID获取对应的PayItem
3 /// </summary>
4 /// <param name="piid">要获取的PayItem的id号</param>
5 public static PayItem GetPayItem(int piid)
6 {
7 Database db = DatabaseFactory.CreateDatabase("SqlServerExternal");
8 string sqlCommand = "GetPayItem";
9 DbCommand dbCommand = db.GetStoredProcCommand(sqlCommand);
10 db.AddInParameter(dbCommand, "PayItemId", DbType.Int32, piid);
11
12 DataSet dataSet = db.ExecuteDataSet(dbCommand); //通过存储过程获取的两个DataTable
13 DataTable piDataTable = dataSet.Tables[0]; //包含了对应PayItem的信息,只有一条记录
14
15 if (piDataTable.Rows.Count != 1)
16 return null;
17 PayItem pi = new PayItem(); //初始化PayItem
18 pi.financedept = (Department)pepiDataTable.Rows[rowNum]["FinanceDeptId"]; //为PayItem的所有属性赋值
19 pi.piid = (int)pepiDataTable.Rows[rowNum]["id"];
20 pi.money = (decimal)pepiDataTable.Rows[rowNum]["money"];
21 pi.project = (Project)pepiDataTable.Rows[rowNum]["projectId"];
22 pi.payItemTemplate = payTemplate.PayItemTemplates[(int)pepiDataTable.Rows[rowNum]["PayItemTemplateId"]];
23 pi.RemarkInfo = pepiDataTable.Rows[rowNum]["RemarkInfo"].ToString();
24 pi.ResponseInfo = (decimal)pepiDataTable.Rows[rowNum]["ResponseInfo"];
25 return pi;
26
27 }
|