WA.cs
上传用户:cha0314
上传日期:2014-03-02
资源大小:12522k
文件大小:9k
源码类别:

C#编程

开发平台:

C#

  1. using System;
  2. using System.Data;
  3. using System.Data.SqlClient;
  4. namespace UDS.Components
  5. {
  6. /// <summary>
  7. /// 上下班时间
  8. /// </summary>
  9. public struct DutyTime
  10. {
  11. private DateTime ondutytime;//上班时间
  12. private DateTime offdutytime;//下班时间
  13. public DateTime OnDutyTime
  14. {
  15. get
  16. {
  17. return ondutytime;
  18. }
  19. set
  20. {
  21. ondutytime = value;
  22. }
  23. }
  24. public DateTime OffDutyTime
  25. {
  26. get
  27. {
  28. return offdutytime;
  29. }
  30. set
  31. {
  32. offdutytime = value;
  33. }
  34. }
  35. }
  36. /// <summary>
  37. /// 得到相关考勤的设置数据
  38. /// </summary>
  39. public class WA_Setting
  40. {
  41. private int staffid=0;//人员id
  42. public WA_Setting()
  43. {
  44. }
  45. public WA_Setting(int StaffID)
  46. {
  47. staffid = StaffID;
  48. }
  49. /// <summary>
  50. /// 员工的id值
  51. /// </summary>
  52. public int StaffID{
  53. get{
  54. return staffid;
  55. }
  56. set{
  57. staffid = value;
  58. }
  59. }
  60. /// <summary>
  61. /// 得到员工上下班时间
  62. /// </summary>
  63. public DutyTime GetDutyTime(){
  64. UDS.Components.Database db = new UDS.Components.Database();
  65. DutyTime dt = new DutyTime();
  66. System.Data.SqlClient.SqlParameter[] prams = {
  67.    db.MakeInParam("@staffid",System.Data.SqlDbType.Int,4,staffid),
  68.    db.MakeOutParam("@ondutytime",System.Data.SqlDbType.SmallDateTime,8),
  69.    db.MakeOutParam("@offdutytime",System.Data.SqlDbType.SmallDateTime,8)
  70. };
  71. if(db.RunProc("sp_WA_GetDutyTime",prams)!=0)
  72. {
  73. throw(new Exception("读取人员上下班时间出错"));
  74. }
  75. else
  76. {
  77. dt.OnDutyTime = (System.DateTime)prams[1].Value;
  78. dt.OffDutyTime = (System.DateTime)prams[2].Value;
  79. return dt;
  80. }
  81. }
  82. /// <summary>
  83. /// 得到员工上下班时间
  84. /// </summary>
  85. /// <param name="Staffid">员工id</param>
  86. public DutyTime GetDutyTime(int Staffid)
  87. {
  88. staffid = Staffid;
  89. UDS.Components.Database db = new UDS.Components.Database();
  90. DutyTime dt = new DutyTime();
  91. System.Data.SqlClient.SqlParameter[] prams = {
  92.    db.MakeInParam("@staffid",System.Data.SqlDbType.Int,4,staffid),
  93.    db.MakeOutParam("@ondutytime",System.Data.SqlDbType.DateTime,8),
  94.    db.MakeOutParam("@offdutytime",System.Data.SqlDbType.DateTime,8)
  95.    };
  96. if(db.RunProc("sp_WA_GetDutyTime",prams)!=0)
  97. {
  98. throw(new Exception("读取人员上下班时间出错"));
  99. }
  100. else
  101. {
  102. dt.OnDutyTime = (System.DateTime)prams[1].Value;
  103. dt.OffDutyTime = (System.DateTime)prams[2].Value;
  104. return dt;
  105. }
  106. }
  107. }
  108. /// <summary>
  109. /// 上下班的动作
  110. /// </summary>
  111. public enum DutyAction
  112. {
  113. OnDuty=1,
  114. OffDuty=2
  115. }
  116. /// <summary>
  117. /// 代表上班,岗位信息的类
  118. /// </summary>
  119. public class WA_Duty
  120. {
  121. private int staffid;//人员id
  122. private TimeSpan ondutyflexibilitytime = new TimeSpan(0,0,0);//上班迟到弹性时间
  123. private TimeSpan offdutyflexibilitytime = new TimeSpan(0,0,0);//下班弹性时间
  124. /// <summary>
  125. /// 人员id
  126. /// </summary>
  127. public int StaffID
  128. {
  129. get
  130. {
  131. return staffid;
  132. }
  133. set
  134. {
  135. staffid = value;
  136. }
  137. }
  138. /// <summary>
  139. /// 上班弹性时间
  140. /// </summary>
  141. public TimeSpan OnDutyFTime
  142. {
  143. get
  144. {
  145. return ondutyflexibilitytime;
  146. }
  147. set
  148. {
  149. ondutyflexibilitytime = value;
  150. }
  151. }
  152. /// <summary>
  153. /// 下班弹性时间
  154. /// </summary>
  155. public TimeSpan OffDutyFTime
  156. {
  157. get
  158. {
  159. return offdutyflexibilitytime;
  160. }
  161. set
  162. {
  163. offdutyflexibilitytime = value;
  164. }
  165. }
  166. public WA_Duty()
  167. {
  168. }
  169. public  WA_Duty(int StaffID)
  170. {
  171. staffid = StaffID;
  172. }
  173. /// <summary>
  174. /// 检查人员是否已经完成上班考勤
  175. /// </summary>
  176. /// <param name="day">日期</param>
  177. /// <param name="staffid">人员id</param>
  178. /// <returns>true 考过勤 false没考过</return>
  179. public bool HaveCheckedDuty(DateTime day,int staffid)
  180. {
  181. Database db = new Database();
  182. this.staffid = staffid;
  183. SqlParameter[] prams = {
  184.     db.MakeInParam("@day",SqlDbType.DateTime,8,day),
  185. db.MakeInParam("@staffid",SqlDbType.VarChar,50,staffid.ToString())
  186. };
  187. return((db.RunProc("sp_WA_HaveChecked",prams)==1)?true:false);
  188. }
  189. /// <summary>
  190. /// 检查人员是否已经完成上班考勤
  191. /// </summary>
  192. /// <param name="day">日期</param>
  193. /// <returns>true 考过勤 false没考过</return>
  194. public bool HaveCheckedDuty(DateTime day)
  195. {
  196. Database db = new Database();
  197. SqlParameter[] prams = {
  198.    db.MakeInParam("@day",SqlDbType.DateTime,8,day),
  199.    db.MakeInParam("@staffid",SqlDbType.VarChar,50,staffid.ToString())
  200.    };
  201. return((db.RunProc("sp_WA_HaveChecked",prams)==1)?true:false);
  202. }
  203. /// <summary>
  204. /// 检查人员是否完成考勤
  205. /// </summary>
  206. /// <param name="day"></param>
  207. /// <returns>考勤记录的id</returns>
  208. public int HaveCompletedDuty(DateTime day)
  209. {
  210. Database db = new Database();
  211. SqlParameter[] prams = {
  212.    db.MakeInParam("@day",SqlDbType.DateTime,8,day),
  213.    db.MakeInParam("@staffid",SqlDbType.VarChar,50,staffid.ToString())
  214.    };
  215. return(db.RunProc("sp_WA_HaveCompleteDuty",prams));
  216. }
  217. /// <summary>
  218. /// 检查上下班状态是否迟到早退
  219. /// </summary>
  220. /// <param name="action">动作DutyAction</param>
  221. /// <param name="staffid">人员id</param>
  222. /// <returns>返回值</returns>
  223. public bool CheckStatus(DutyAction action,int staffid)
  224. {
  225. this.staffid = staffid;
  226. WA_Setting was = new WA_Setting();
  227. DutyTime dutytime = was.GetDutyTime(staffid);
  228. //如果是上班
  229. if(action==DutyAction.OnDuty)
  230. {
  231. if((DateTime.Now.TimeOfDay - ondutyflexibilitytime) > dutytime.OnDutyTime.TimeOfDay)
  232. return false;
  233. else
  234. return true;
  235. }
  236. //如果下班
  237. else
  238. {
  239. if((DateTime.Now.TimeOfDay + offdutyflexibilitytime) < dutytime.OffDutyTime.TimeOfDay)
  240. return false;
  241. else
  242. return true;
  243. }
  244. }
  245. /// <summary>
  246. /// 检查上下班状态是否迟到早退
  247. /// </summary>
  248. /// <param name="action">动作DutyAction</param>
  249. /// <returns>返回值</returns>
  250. public bool CheckStatus(DutyAction action)
  251. {
  252. WA_Setting was = new WA_Setting();
  253. DutyTime dutytime = was.GetDutyTime(staffid);
  254. //如果是上班
  255. if(action==DutyAction.OnDuty)
  256. {
  257. if((DateTime.Now - ondutyflexibilitytime)> (DateTime.Today + dutytime.OnDutyTime.TimeOfDay))
  258. return false;
  259. else
  260. return true;
  261. }
  262. //如果下班
  263. else
  264. {
  265. if((DateTime.Now + offdutyflexibilitytime) < (DateTime.Today + dutytime.OffDutyTime.TimeOfDay))
  266. return false;
  267. else
  268. return true;
  269. }
  270. }
  271. /// <summary>
  272. /// 将考勤数据存入数据库
  273. /// </summary>
  274. /// <param name="staffid">人员id</param>
  275. /// <param name="dutytime">上班时间</param>
  276. /// <param name="dutystat">上班状态</param>
  277. /// <param name="memo">描述</param>
  278. /// <returns>返回数据库记录id</returns>
  279. public long RecordOnDutyData(int staffid,DateTime dutytime,bool dutystat,string memo)
  280. {
  281. Database db = new Database();
  282. this.staffid = staffid;
  283. SqlParameter[] prams = {
  284.    db.MakeInParam("@staffid",SqlDbType.Int,4,staffid),
  285.    db.MakeInParam("@dutytime",SqlDbType.DateTime,8,dutytime),
  286.    db.MakeInParam("@dutystatus",SqlDbType.Bit,1,dutystat),
  287.    db.MakeInParam("@memo",SqlDbType.VarChar,400,memo)
  288.    };
  289. try
  290. {
  291. return(db.RunProc("sp_WA_RecordOnDutyData",prams));
  292. }
  293. catch(Exception  e)
  294. {
  295. throw e;
  296. }
  297. }
  298. /// <summary>
  299. /// 将考勤数据存入数据库
  300. /// </summary>
  301. /// <param name="dutytime">上班时间</param>
  302. /// <param name="dutystat">上班状态</param>
  303. /// <param name="memo">描述</param>
  304. /// <returns>返回数据库记录id</returns>
  305. public long RecordOnDutyData(DateTime dutytime,bool dutystat,string memo)
  306. {
  307. Database db = new Database();
  308.             int dutystatus = (dutystat)?0:1;
  309. SqlParameter[] prams = {
  310.    db.MakeInParam("@staffid",SqlDbType.Int,4,staffid),
  311.    db.MakeInParam("@dutytime",SqlDbType.DateTime,8,dutytime),
  312.    db.MakeInParam("@dutystatus",SqlDbType.Bit,1,dutystatus),
  313.    db.MakeInParam("@memo",SqlDbType.VarChar,400,memo)
  314.    };
  315. try
  316. {
  317. return(db.RunProc("sp_WA_RecordOnDutyData",prams));
  318. }
  319. catch(Exception e)
  320. {
  321. throw e;
  322. }
  323. }
  324. /// <summary>
  325. /// 记录下班数据
  326. /// </summary>
  327. /// <param name="dataid">上班的id</param>
  328. /// <param name="dutytime">下班的时间</param>
  329. /// <param name="dutystat">下班状态</param>
  330. /// <param name="memo">描述</param>
  331. /// <returns>是否出错</returns>
  332. public int RecordOffDutyData(long dataid,DateTime dutytime,bool dutystat,string memo)
  333. {
  334. Database db = new Database();
  335. int dutystatus = (dutystat)?0:1;
  336. SqlParameter[] prams = {
  337.    db.MakeInParam("@dataid",SqlDbType.BigInt,8,dataid),
  338.    db.MakeInParam("@dutytime",SqlDbType.DateTime,8,dutytime),
  339.    db.MakeInParam("@dutystatus",SqlDbType.Bit,1,dutystatus),
  340.    db.MakeInParam("@memo",SqlDbType.VarChar,400,memo)
  341.    };
  342. try
  343. {
  344. return(db.RunProc("sp_WA_RecordOffDutyData",prams));
  345. }
  346. catch(Exception e)
  347. {
  348. throw e;
  349. }
  350. }
  351. #region 得到预设的日期年分
  352. /// <summary>
  353. /// 得到预设的日期年分
  354. /// </summary>
  355. /// <returns></returns>
  356. public SqlDataReader GetYeasOfSetting()
  357. {
  358. Database db = new Database();
  359. SqlDataReader dr = null;
  360. try
  361. {
  362. db.RunProc("sp_WA_GetYearsOfDaySetting",out dr);
  363. return(dr);
  364. }
  365. catch(Exception e)
  366. {
  367. throw e;
  368. }
  369. }
  370. #endregion
  371. }
  372. }