茫茫沧海

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
继续上面的想法:
如果采用上面所讲得到第五种方式,则设计分工清晰很多,也有利于提高重用性。

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        }

posted on 2007-08-24 11:16  varmc  阅读(324)  评论(0)    收藏  举报