F_HR_1002.cs 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762
  1. /*******************************************************************************
  2. * Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential
  3. * 类的信息:
  4. * 1.程序名称:F_HR_1002.cs
  5. * 2.功能描述:员工考勤编辑
  6. * 编辑履历:
  7. * 作者 日期 版本 修改内容
  8. * 任海 2014/09/24 1.00 新建
  9. *******************************************************************************/
  10. using System;
  11. using System.Data;
  12. using System.Windows.Forms;
  13. using Dongke.IBOSS.PRD.Basics.BaseResources;
  14. using Dongke.IBOSS.PRD.Basics.DockPanel;
  15. using Dongke.IBOSS.PRD.Client.CommonModule;
  16. using Dongke.IBOSS.PRD.Client.DataModels;
  17. using Dongke.IBOSS.PRD.WCF.Proxys;
  18. using Dongke.IBOSS.PRD.WCF.Proxys.HRModuleService;
  19. using Dongke.IBOSS.PRD.Client.Controls.FormCommon;
  20. using Dongke.IBOSS.PRD.Basics.BaseControls;
  21. using Dongke.IBOSS.PRD.Basics.Library;
  22. using Dongke.IBOSS.PRD.WCF.DataModels;
  23. using Dongke.IBOSS.PRD.WCF.DataModels.HRModule;
  24. namespace Dongke.IBOSS.PRD.Client.HRModule
  25. {
  26. /// <summary>
  27. /// 员工考勤编辑
  28. /// </summary>
  29. public partial class F_HR_1002 : FormBase
  30. {
  31. #region 成员变量
  32. // 单例模式
  33. private static F_HR_1002 _instance;
  34. //// 最后选择行
  35. //private int _selecedRow;
  36. //// 员工ID
  37. //private int _staffID;
  38. // Grid当前选中的行
  39. private int _selectedRowIndex;
  40. // 用户编辑的ID集合
  41. int[] _staffIDList;
  42. // 查询条件实体
  43. private HR_CMN_StaffEntity _staffEntity = new HR_CMN_StaffEntity();
  44. // 格式刷是否开启
  45. private bool _isBrushIsOpen = false;
  46. // 记录考勤卡号
  47. private string _cardNumber;
  48. // 记录出勤状态
  49. private string _attendanceStatus;
  50. // 记录缺勤原因
  51. private string _absenceReason;
  52. // 记录迟到次数
  53. private string _tardinessTimes;
  54. // 记录备注
  55. private string _remarks;
  56. // 列索引
  57. private int _columnIndex = -1;
  58. #endregion
  59. #region 构造函数
  60. public F_HR_1002()
  61. {
  62. InitializeComponent();
  63. this.Text = FormTitles.F_HR_1002;
  64. this.tsbtnImport.Text = ButtonText.TSBTN_IMPORT;
  65. this.tsbtnBrush.Text = ButtonText.TSBTN_BRUSH;
  66. this.tsbtnAdaptive.Text = ButtonText.TSBTN_ADAPTIVE;
  67. this.tsbtnClose.Text = ButtonText.TSBTN_CLOSE;
  68. this.btnSearch.Text = ButtonText.BTN_SEARCH;
  69. this.btnClearCondition.Text = ButtonText.BTN_CLEARCONDITION;
  70. this.btnSave.Text = ButtonText.BTN_SAVE;
  71. this.btnCancel.Text = ButtonText.BTN_CANCEL;
  72. this.gbxCondition.Text = Constant.LABEL_QUERY_CONDITIONS;
  73. }
  74. #endregion
  75. #region 单例模式
  76. /// <summary>
  77. /// 单例模式,防止重复创建窗体
  78. /// </summary>
  79. public static F_HR_1002 Instance
  80. {
  81. get
  82. {
  83. if (_instance == null)
  84. {
  85. _instance = new F_HR_1002();
  86. }
  87. return _instance;
  88. }
  89. }
  90. #endregion
  91. #region 事件
  92. /// <summary>
  93. /// 窗体加载事件
  94. /// </summary>
  95. /// <param name="sender"></param>
  96. /// <param name="e"></param>
  97. private void F_HR_1002_Load(object sender, EventArgs e)
  98. {
  99. try
  100. {
  101. #region 绑定数据源
  102. this.dkStaffName.WhereCondition = "(StaffStatus = 1 Or StaffStatus = 2) AND ValueFlag = 1";
  103. //dtpmonth
  104. this.dtpmonth.Value = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
  105. //获取出勤状态数据源
  106. this.AttendanceStatusName.DisplayMember = "AttendanceStatusName";
  107. this.AttendanceStatusName.ValueMember = "AttendanceStatus";
  108. this.AttendanceStatusName.DataSource = this.GetAttendanceStatusInfo();
  109. //获取缺勤原因数据源
  110. this.AbsenceReasonName.ValueMember = "AbsenceReason";
  111. this.AbsenceReasonName.DisplayMember = "AbsenceReasonName";
  112. this.AbsenceReasonName.DataSource = this.GetAbsenceReasonInfo();
  113. //获取迟到早退次数数据源
  114. this.TardinessTimes.ValueMember = "TardinessTimes";
  115. this.TardinessTimes.DisplayMember = "TardinessTimesName";
  116. this.TardinessTimes.DataSource = this.GetTardinessTimesInfo();
  117. FormPermissionManager.FormPermissionControl(this.Name, this,
  118. LogInUserInfo.CurrentUser.CurrentUserEntity.UserRightData, LogInUserInfo.CurrentUser.CurrentUserEntity.FunctionData);
  119. this.dgvStaffAttendance.SelectionMode = DataGridViewSelectionMode.RowHeaderSelect;
  120. this.btnSave.Enabled = false;
  121. #endregion
  122. }
  123. catch (Exception ex)
  124. {
  125. // 对异常进行共通处理
  126. ExceptionManager.HandleEventException(this.ToString(),
  127. System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex);
  128. }
  129. }
  130. /// <summary>
  131. /// 导入按钮
  132. /// </summary>
  133. /// <param name="sender"></param>
  134. /// <param name="e"></param>
  135. private void tsbtnImport_Click(object sender, EventArgs e)
  136. {
  137. try
  138. {
  139. this.oFileDialog.Filter = "Excel文件(*.xlsx)|*.xlsx";
  140. this.oFileDialog.FileName = string.Empty;
  141. if (this.oFileDialog.ShowDialog() == DialogResult.OK)
  142. {
  143. DataTable dtStaffMeal = ExcelLayer.GetDataTable(this.oFileDialog.FileName, 1);
  144. #region 对数据进行验证
  145. if (dtStaffMeal == null && dtStaffMeal.Rows.Count <= 0)
  146. {
  147. // 提示信息
  148. MessageBox.Show(string.Format(Messages.MSG_CMN_W007, "数据表中没有数据!"),
  149. this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);
  150. return;
  151. }
  152. #endregion
  153. DataSet dsResultStaff = (DataSet)DoAsync(new BaseAsyncMethod(() =>
  154. {
  155. return HRModuleProxy.Service.GetStaffAttendanceInfoForExcel(dtStaffMeal);
  156. }));
  157. if (dsResultStaff != null)
  158. {
  159. base.DataSource = dsResultStaff;
  160. if (this.DataSource != null && this.DataSource.Tables.Count > Constant.INT_IS_ZERO)
  161. {
  162. this.dgvStaffAttendance.DataSource = this.DataSource.Tables[0];
  163. if (this.DataSource.Tables[0].Rows.Count <= Constant.INT_IS_ZERO)
  164. {
  165. // 提示未查找到数据
  166. MessageBox.Show(Messages.MSG_CMN_I002, this.Text,
  167. MessageBoxButtons.OK, MessageBoxIcon.Warning);
  168. }
  169. }
  170. }
  171. }
  172. }
  173. catch (Exception ex)
  174. {
  175. // 对异常进行共通处理
  176. ExceptionManager.HandleEventException(this.ToString(),
  177. System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex);
  178. }
  179. }
  180. /// <summary>
  181. /// 数据刷
  182. /// </summary>
  183. /// <param name="sender"></param>
  184. /// <param name="e"></param>
  185. private void tsbtnBrush_Click(object sender, EventArgs e)
  186. {
  187. try
  188. {
  189. if (this.dgvStaffAttendance.CurrentCell == null
  190. || this.dgvStaffAttendance.Rows.Count < Constant.INT_IS_ONE)
  191. {
  192. return;
  193. }
  194. DataGridViewCell currentCell = this.dgvStaffAttendance.CurrentCell;
  195. if ("CardNumber".Equals(dgvStaffAttendance.Columns[currentCell.ColumnIndex].Name))
  196. {
  197. if (!_isBrushIsOpen)
  198. {
  199. this.tsbtnBrush.Checked = true;
  200. this._isBrushIsOpen = true;
  201. this.dgvStaffAttendance.Cursor = Cursors.Hand;
  202. this.dgvStaffAttendance.MultiSelect = true;
  203. this._cardNumber = dgvStaffAttendance.CurrentRow.Cells[currentCell.ColumnIndex].Value + "";
  204. }
  205. else
  206. {
  207. this.dgvStaffAttendance.Cursor = Cursors.Default;
  208. this.dgvStaffAttendance.MultiSelect = false;
  209. this.tsbtnBrush.Checked = false;
  210. this._isBrushIsOpen = false;
  211. }
  212. }
  213. else if ("AttendanceStatusName".Equals(dgvStaffAttendance.Columns[currentCell.ColumnIndex].Name))
  214. {
  215. if (!_isBrushIsOpen)
  216. {
  217. this.tsbtnBrush.Checked = true;
  218. this._isBrushIsOpen = true;
  219. this.dgvStaffAttendance.Cursor = Cursors.Hand;
  220. this.dgvStaffAttendance.MultiSelect = true;
  221. this._attendanceStatus = dgvStaffAttendance.CurrentRow.Cells[currentCell.ColumnIndex].Value + "";
  222. }
  223. else
  224. {
  225. this.dgvStaffAttendance.Cursor = Cursors.Default;
  226. this.dgvStaffAttendance.MultiSelect = false;
  227. this.tsbtnBrush.Checked = false;
  228. this._isBrushIsOpen = false;
  229. }
  230. }
  231. else if ("AbsenceReasonName".Equals(dgvStaffAttendance.Columns[currentCell.ColumnIndex].Name))
  232. {
  233. if (!_isBrushIsOpen)
  234. {
  235. this.tsbtnBrush.Checked = true;
  236. this._isBrushIsOpen = true;
  237. this.dgvStaffAttendance.Cursor = Cursors.Hand;
  238. this.dgvStaffAttendance.MultiSelect = true;
  239. this._absenceReason = dgvStaffAttendance.CurrentRow.Cells[currentCell.ColumnIndex].Value + "";
  240. }
  241. else
  242. {
  243. this.dgvStaffAttendance.Cursor = Cursors.Default;
  244. this.dgvStaffAttendance.MultiSelect = false;
  245. this.tsbtnBrush.Checked = false;
  246. this._isBrushIsOpen = false;
  247. }
  248. }
  249. else if ("TardinessTimes".Equals(dgvStaffAttendance.Columns[currentCell.ColumnIndex].Name))
  250. {
  251. if (!_isBrushIsOpen)
  252. {
  253. this.tsbtnBrush.Checked = true;
  254. this._isBrushIsOpen = true;
  255. this.dgvStaffAttendance.Cursor = Cursors.Hand;
  256. this.dgvStaffAttendance.MultiSelect = true;
  257. this._tardinessTimes = dgvStaffAttendance.CurrentRow.Cells[currentCell.ColumnIndex].Value + "";
  258. }
  259. else
  260. {
  261. this.dgvStaffAttendance.Cursor = Cursors.Default;
  262. this.dgvStaffAttendance.MultiSelect = false;
  263. this.tsbtnBrush.Checked = false;
  264. this._isBrushIsOpen = false;
  265. }
  266. }
  267. else if ("Remarks".Equals(dgvStaffAttendance.Columns[currentCell.ColumnIndex].Name))
  268. {
  269. if (!_isBrushIsOpen)
  270. {
  271. this.tsbtnBrush.Checked = true;
  272. this._isBrushIsOpen = true;
  273. this.dgvStaffAttendance.Cursor = Cursors.Hand;
  274. this.dgvStaffAttendance.MultiSelect = true;
  275. this._remarks = dgvStaffAttendance.CurrentRow.Cells[currentCell.ColumnIndex].Value + "";
  276. }
  277. else
  278. {
  279. this.dgvStaffAttendance.Cursor = Cursors.Default;
  280. this.dgvStaffAttendance.MultiSelect = false;
  281. this.tsbtnBrush.Checked = false;
  282. this._isBrushIsOpen = false;
  283. }
  284. }
  285. }
  286. catch (Exception ex)
  287. {
  288. // 对异常进行共通处理
  289. ExceptionManager.HandleEventException(this.ToString(),
  290. System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex);
  291. }
  292. }
  293. /// <summary>
  294. /// 数据刷刷数据
  295. /// </summary>
  296. /// <param name="sender"></param>
  297. /// <param name="e"></param>
  298. private void dgvStaffAttendance_CellMouseMove(object sender, DataGridViewCellMouseEventArgs e)
  299. {
  300. try
  301. {
  302. if (this.dgvStaffAttendance.CurrentCell == null
  303. || this.dgvStaffAttendance.Rows.Count < Constant.INT_IS_ONE)
  304. {
  305. return;
  306. }
  307. DataGridViewCell currentCell = this.dgvStaffAttendance.CurrentCell;
  308. if (_columnIndex != -Constant.INT_IS_ONE && _columnIndex != currentCell.ColumnIndex)
  309. {
  310. this.SetBrushNotEnable();
  311. }
  312. if ("CardNumber".Equals(dgvStaffAttendance.Columns[currentCell.ColumnIndex].Name))
  313. {
  314. if (_isBrushIsOpen)
  315. {
  316. dgvStaffAttendance.CurrentRow.Cells[currentCell.ColumnIndex].Value = _cardNumber;
  317. }
  318. this._columnIndex = currentCell.ColumnIndex;
  319. }
  320. else if ("AttendanceStatusName".Equals(dgvStaffAttendance.Columns[currentCell.ColumnIndex].Name))
  321. {
  322. if (_isBrushIsOpen && !dgvStaffAttendance.CurrentRow.Cells[currentCell.ColumnIndex].ReadOnly)
  323. {
  324. dgvStaffAttendance.CurrentRow.Cells[currentCell.ColumnIndex].Value = _attendanceStatus;
  325. }
  326. this._columnIndex = currentCell.ColumnIndex;
  327. }
  328. else if ("AbsenceReasonName".Equals(dgvStaffAttendance.Columns[currentCell.ColumnIndex].Name))
  329. {
  330. if (_isBrushIsOpen && !dgvStaffAttendance.CurrentRow.Cells[currentCell.ColumnIndex].ReadOnly)
  331. {
  332. dgvStaffAttendance.CurrentRow.Cells[currentCell.ColumnIndex].Value = _absenceReason;
  333. }
  334. this._columnIndex = currentCell.ColumnIndex;
  335. }
  336. else if ("TardinessTimes".Equals(dgvStaffAttendance.Columns[currentCell.ColumnIndex].Name))
  337. {
  338. if (_isBrushIsOpen && !dgvStaffAttendance.CurrentRow.Cells[currentCell.ColumnIndex].ReadOnly)
  339. {
  340. dgvStaffAttendance.CurrentRow.Cells[currentCell.ColumnIndex].Value = _tardinessTimes;
  341. }
  342. this._columnIndex = currentCell.ColumnIndex;
  343. }
  344. else if ("Remarks".Equals(dgvStaffAttendance.Columns[currentCell.ColumnIndex].Name))
  345. {
  346. if (_isBrushIsOpen && !dgvStaffAttendance.CurrentRow.Cells[currentCell.ColumnIndex].ReadOnly)
  347. {
  348. dgvStaffAttendance.CurrentRow.Cells[currentCell.ColumnIndex].Value = _remarks;
  349. }
  350. this._columnIndex = currentCell.ColumnIndex;
  351. }
  352. this.btnSave.Enabled = true;
  353. }
  354. catch (Exception ex)
  355. {
  356. // 对异常进行共通处理
  357. ExceptionManager.HandleEventException(this.ToString(),
  358. System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex);
  359. }
  360. }
  361. /// <summary>
  362. /// 窗体关闭事件
  363. /// </summary>
  364. /// <param name="sender"></param>
  365. /// <param name="e"></param>
  366. private void F_HR_1002_FormClosed(object sender, FormClosedEventArgs e)
  367. {
  368. _instance = null;
  369. }
  370. /// <summary>
  371. /// 关闭按钮事件
  372. /// </summary>
  373. /// <param name="sender"></param>
  374. /// <param name="e"></param>
  375. private void tsbtnClose_Click(object sender, EventArgs e)
  376. {
  377. this.Close();
  378. }
  379. /// <summary>
  380. /// 自动适应列宽
  381. /// </summary>
  382. /// <param name="sender"></param>
  383. /// <param name="e"></param>
  384. private void tsbtnAdaptive_Click(object sender, EventArgs e)
  385. {
  386. this.dgvStaffAttendance.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
  387. }
  388. /// <summary>
  389. /// 清空条件
  390. /// </summary>
  391. /// <param name="sender"></param>
  392. /// <param name="e"></param>
  393. private void btnClearCondition_Click(object sender, EventArgs e)
  394. {
  395. this.dkStaffName.UserID = null;
  396. this.dkStaffName.UserCode = string.Empty;
  397. this.dkStaffName.UserName = string.Empty;
  398. this.dkStaffName.StaffEntity = null;
  399. }
  400. /// <summary>
  401. /// 查询按钮事件
  402. /// </summary>
  403. /// <param name="sender"></param>
  404. /// <param name="e"></param>
  405. private void btnSearch_Click(object sender, EventArgs e)
  406. {
  407. try
  408. {
  409. if (this.dkStaffName.StaffEntity.StaffCode == null)
  410. {
  411. MessageBox.Show(string.Format(Messages.MSG_CMN_W005, "员工名称"),
  412. this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
  413. return;
  414. }
  415. this._staffIDList = null;
  416. // 记录当前选中行
  417. int selectRowIndex = this._selectedRowIndex;
  418. SearchAttendanceEntity SearchAttendanceEntity = SetSearchAttendanceEntity();
  419. //DataTable dtResultStaff = GetStaffAttendance();
  420. DataSet dsResultStaff = (DataSet)DoAsync(new BaseAsyncMethod(() =>
  421. {
  422. return HRModuleProxy.Service.SearcStaffAttendanceForEdit(SearchAttendanceEntity);
  423. }));
  424. if (dsResultStaff != null)
  425. {
  426. base.DataSource = dsResultStaff;
  427. if (this.DataSource != null && this.DataSource.Tables.Count > Constant.INT_IS_ZERO)
  428. {
  429. this.dgvStaffAttendance.DataSource = this.DataSource.Tables[0];
  430. if (this.DataSource.Tables[0].Rows.Count <= Constant.INT_IS_ZERO)
  431. {
  432. // 提示未查找到数据
  433. MessageBox.Show(Messages.MSG_CMN_I002, this.Text,
  434. MessageBoxButtons.OK, MessageBoxIcon.Warning);
  435. }
  436. }
  437. }
  438. }
  439. catch (Exception ex)
  440. {
  441. // 对异常进行共通处理
  442. ExceptionManager.HandleEventException(this.ToString(),
  443. System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex);
  444. }
  445. }
  446. /// <summary>
  447. /// 保存按钮事件
  448. /// </summary>
  449. /// <param name="sender"></param>
  450. /// <param name="e"></param>
  451. private void btnSave_Click(object sender, EventArgs e)
  452. {
  453. try
  454. {
  455. DataGridViewRow row = dgvStaffAttendance.CurrentRow;
  456. if (row.Cells["CardNumber"].Value == null
  457. || string.IsNullOrEmpty(row.Cells["CardNumber"].Value + string.Empty))
  458. {
  459. // 单元格的错误消息
  460. MessageBox.Show(string.Format(Messages.MSG_CMN_W005, "考勤卡号"),
  461. this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
  462. this.btnSave.Enabled = false;
  463. return;
  464. }
  465. // 保存
  466. this.btnSave.Enabled = false;
  467. this.btnCancel.Enabled = false;
  468. DataTable dTable = (DataTable)this.dgvStaffAttendance.DataSource;
  469. dTable.AcceptChanges();
  470. HRResultEntity resultEntity = (HRResultEntity)DoAsync(new BaseAsyncMethod(() =>
  471. {
  472. return HRModuleProxy.Service.SaveStaffAttendanceInfo(dTable);
  473. }));
  474. this.btnSave.Enabled = true;
  475. this.btnCancel.Enabled = true;
  476. if (!string.IsNullOrEmpty(resultEntity.OperateLogInfo))
  477. {
  478. MessageBox.Show(resultEntity.OperateLogInfo,
  479. this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
  480. this.btnSave.Enabled = false;
  481. }
  482. else if (resultEntity.OperateStatus > Constant.INT_IS_ZERO)
  483. {
  484. // 保存成功提示信息
  485. MessageBox.Show(string.Format(Messages.MSG_CMN_I001, "员工考勤", "保存"),
  486. this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
  487. this.btnSave.Enabled = false;
  488. }
  489. else
  490. {
  491. MessageBox.Show(string.Format(Messages.MSG_CMN_W001, "员工考勤", "保存"),
  492. this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);
  493. }
  494. }
  495. catch (Exception ex)
  496. {
  497. // 对异常进行共通处理
  498. ExceptionManager.HandleEventException(this.ToString(),
  499. System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex);
  500. }
  501. }
  502. /// <summary>
  503. /// 关闭按钮事件
  504. /// </summary>
  505. /// <param name="sender"></param>
  506. /// <param name="e"></param>
  507. private void btnCancel_Click(object sender, EventArgs e)
  508. {
  509. this.DialogResult = DialogResult.Cancel;
  510. this.Close();
  511. }
  512. #endregion
  513. #region 私有方法
  514. /// <summary>
  515. /// 设置窗体按钮的文本信息
  516. /// </summary>
  517. private void SetFromTitleInfo()
  518. {
  519. this.tsbtnImport.Text = ButtonText.TSBTN_IMPORT;
  520. this.tsbtnBrush.Text = ButtonText.TSBTN_BRUSH;
  521. this.tsbtnAdaptive.Text = ButtonText.TSBTN_ADAPTIVE;
  522. this.tsbtnClose.Text = ButtonText.TSBTN_CLOSE;
  523. this.btnSearch.Text = ButtonText.BTN_SEARCH;
  524. this.btnClearCondition.Text = ButtonText.BTN_CLEARCONDITION;
  525. this.btnSave.Text = ButtonText.BTN_SAVE;
  526. this.btnCancel.Text = ButtonText.BTN_CANCEL;
  527. this.gbxCondition.Text = Constant.LABEL_QUERY_CONDITIONS;
  528. this.Text = FormTitles.F_HR_1002;
  529. // 设置表格不自动创建列
  530. this.dgvStaffAttendance.AutoGenerateColumns = false;
  531. }
  532. /// <summary>
  533. /// 根据查询条件 形成查询实体
  534. /// </summary>
  535. /// <returns></returns>
  536. public SearchAttendanceEntity SetSearchAttendanceEntity()
  537. {
  538. SearchAttendanceEntity searchAttendanceEntity = new SearchAttendanceEntity();
  539. if (this.dkStaffName.UserID != null)
  540. {
  541. searchAttendanceEntity.StaffID = this.dkStaffName.UserID;
  542. }
  543. DateTime time = this.dtpmonth.Value;
  544. searchAttendanceEntity.StartAttendanceDate = new DateTime(time.Year, time.Month, 1);
  545. searchAttendanceEntity.EndAttendanceDate = new DateTime(time.Year, time.Month, DateTime.DaysInMonth(time.Year, time.Month));
  546. return searchAttendanceEntity;
  547. }
  548. /// <summary>
  549. /// 工资结算标识数据源
  550. /// </summary>
  551. /// <returns></returns>
  552. private DataTable GetSettlementFlagInfo()
  553. {
  554. //1:已经结算 0:未结算
  555. DataTable dtRAPType = new DataTable();
  556. dtRAPType.Columns.Add("SettlementFlag");
  557. dtRAPType.Columns.Add("SettlementFlagName");
  558. DataRow newRowType = dtRAPType.NewRow();
  559. newRowType = dtRAPType.NewRow();
  560. newRowType["SettlementFlag"] = "0";
  561. newRowType["SettlementFlagName"] = "未结算";
  562. dtRAPType.Rows.Add(newRowType);
  563. newRowType = dtRAPType.NewRow();
  564. newRowType["SettlementFlag"] = "1";
  565. newRowType["SettlementFlagName"] = "已经结算";
  566. dtRAPType.Rows.Add(newRowType);
  567. return dtRAPType;
  568. }
  569. /// <summary>
  570. /// 出勤状态数据源
  571. /// </summary>
  572. /// <returns></returns>
  573. private DataTable GetAttendanceStatusInfo()
  574. {
  575. DataTable dtAttendanceStatus = new DataTable();
  576. dtAttendanceStatus.Columns.Add("AttendanceStatus");
  577. dtAttendanceStatus.Columns.Add("AttendanceStatusName");
  578. DataRow rowAttendanceStatus = dtAttendanceStatus.NewRow();
  579. rowAttendanceStatus["AttendanceStatus"] = "1";
  580. rowAttendanceStatus["AttendanceStatusName"] = "全天";
  581. dtAttendanceStatus.Rows.Add(rowAttendanceStatus);
  582. rowAttendanceStatus = dtAttendanceStatus.NewRow();
  583. rowAttendanceStatus["AttendanceStatus"] = "2";
  584. rowAttendanceStatus["AttendanceStatusName"] = "半天";
  585. dtAttendanceStatus.Rows.Add(rowAttendanceStatus);
  586. rowAttendanceStatus = dtAttendanceStatus.NewRow();
  587. rowAttendanceStatus["AttendanceStatus"] = "3";
  588. rowAttendanceStatus["AttendanceStatusName"] = "缺勤";
  589. dtAttendanceStatus.Rows.Add(rowAttendanceStatus);
  590. return dtAttendanceStatus;
  591. }
  592. /// <summary>
  593. /// 缺勤原因数据源
  594. /// </summary>
  595. /// <returns></returns>
  596. private DataTable GetAbsenceReasonInfo()
  597. {
  598. DataTable dtAbsenceReason = new DataTable();
  599. dtAbsenceReason.Columns.Add("AbsenceReason");
  600. dtAbsenceReason.Columns.Add("AbsenceReasonName");
  601. DataRow rowAbsenceReason = dtAbsenceReason.NewRow();
  602. rowAbsenceReason["AbsenceReason"] = "0";
  603. rowAbsenceReason["AbsenceReasonName"] = "休息";
  604. dtAbsenceReason.Rows.Add(rowAbsenceReason);
  605. rowAbsenceReason = dtAbsenceReason.NewRow();
  606. rowAbsenceReason["AbsenceReason"] = "1";
  607. rowAbsenceReason["AbsenceReasonName"] = "病假";
  608. dtAbsenceReason.Rows.Add(rowAbsenceReason);
  609. rowAbsenceReason = dtAbsenceReason.NewRow();
  610. rowAbsenceReason["AbsenceReason"] = "2";
  611. rowAbsenceReason["AbsenceReasonName"] = "事假";
  612. dtAbsenceReason.Rows.Add(rowAbsenceReason);
  613. rowAbsenceReason = dtAbsenceReason.NewRow();
  614. rowAbsenceReason["AbsenceReason"] = "3";
  615. rowAbsenceReason["AbsenceReasonName"] = "旷工";
  616. dtAbsenceReason.Rows.Add(rowAbsenceReason);
  617. //缺勤原因可为空
  618. rowAbsenceReason = dtAbsenceReason.NewRow();
  619. rowAbsenceReason["AbsenceReason"] = "4";
  620. rowAbsenceReason["AbsenceReasonName"] = "其它";
  621. dtAbsenceReason.Rows.Add(rowAbsenceReason);
  622. return dtAbsenceReason;
  623. }
  624. /// <summary>
  625. /// 迟到早退次数数据源
  626. /// </summary>
  627. /// <returns></returns>
  628. private DataTable GetTardinessTimesInfo()
  629. {
  630. DataTable dtTardinessTimes = new DataTable();
  631. dtTardinessTimes.Columns.Add("TardinessTimes");
  632. dtTardinessTimes.Columns.Add("TardinessTimesName");
  633. DataRow rowTardinessTimes = dtTardinessTimes.NewRow();
  634. rowTardinessTimes["TardinessTimes"] = "0";
  635. rowTardinessTimes["TardinessTimesName"] = "0";
  636. dtTardinessTimes.Rows.Add(rowTardinessTimes);
  637. rowTardinessTimes = dtTardinessTimes.NewRow();
  638. rowTardinessTimes["TardinessTimes"] = "1";
  639. rowTardinessTimes["TardinessTimesName"] = "1";
  640. dtTardinessTimes.Rows.Add(rowTardinessTimes);
  641. rowTardinessTimes = dtTardinessTimes.NewRow();
  642. rowTardinessTimes["TardinessTimes"] = "2";
  643. rowTardinessTimes["TardinessTimesName"] = "2";
  644. dtTardinessTimes.Rows.Add(rowTardinessTimes);
  645. rowTardinessTimes = dtTardinessTimes.NewRow();
  646. rowTardinessTimes["TardinessTimes"] = "3";
  647. rowTardinessTimes["TardinessTimesName"] = "3";
  648. dtTardinessTimes.Rows.Add(rowTardinessTimes);
  649. rowTardinessTimes = dtTardinessTimes.NewRow();
  650. rowTardinessTimes["TardinessTimes"] = "4";
  651. rowTardinessTimes["TardinessTimesName"] = "4";
  652. dtTardinessTimes.Rows.Add(rowTardinessTimes);
  653. return dtTardinessTimes;
  654. }
  655. /// <summary>
  656. /// 获取员工考勤
  657. /// </summary>
  658. /// <returns></returns>
  659. private DataTable GetStaffAttendance()
  660. {
  661. SearchAttendanceEntity searchAttendanceEntity = SetSearchAttendanceEntity();
  662. DataSet staffAttendance = (DataSet)DoAsync(new BaseAsyncMethod(() =>
  663. {
  664. return HRModuleProxy.Service.SearcStaffAttendance(searchAttendanceEntity);
  665. }));
  666. SearchStaffEntity searchStaff = new SearchStaffEntity();
  667. if (this.dkStaffName.UserID != null)
  668. {
  669. searchStaff.StaffID = this.dkStaffName.UserID;
  670. }
  671. DataSet resultStaff = (DataSet)DoAsync(new BaseAsyncMethod(() =>
  672. {
  673. return HRModuleProxy.Service.SearchHrStaff(searchStaff);
  674. }));
  675. DateTime dtBegin = searchAttendanceEntity.StartAttendanceDate.Value;
  676. DateTime dtEnd = searchAttendanceEntity.EndAttendanceDate.Value;
  677. if (dtEnd >= DateTime.Now)
  678. {
  679. dtEnd = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
  680. }
  681. DataTable dtStaffAtt = staffAttendance.Tables[0].Clone();
  682. for (DateTime dtItem = dtBegin; dtItem <= dtEnd; dtItem = dtItem.AddDays(1))
  683. {
  684. DataRow newRowAtt = dtStaffAtt.NewRow();
  685. newRowAtt["StaffID"] = resultStaff.Tables[0].Rows[0]["StaffID"].ToString();
  686. newRowAtt["StaffCode"] = resultStaff.Tables[0].Rows[0]["StaffCode"].ToString();
  687. newRowAtt["StaffName"] = resultStaff.Tables[0].Rows[0]["StaffName"].ToString();
  688. newRowAtt["IDCardNo"] = resultStaff.Tables[0].Rows[0]["IDCardNo"].ToString();
  689. newRowAtt["AttendanceDate"] = dtItem;
  690. newRowAtt["CardNumber"] = 1;
  691. newRowAtt["AttendanceStatus"] = 1;
  692. newRowAtt["AbsenceReason"] = 4;
  693. newRowAtt["TardinessTimes"] = 0;
  694. newRowAtt["SettlementFlag"] = "未结算";
  695. if (staffAttendance != null && staffAttendance.Tables.Count > Constant.INT_IS_ZERO)
  696. {
  697. string strWhere = "StaffID = " + resultStaff.Tables[0].Rows[0]["StaffID"].ToString()
  698. + " And AttendanceDate = '" + dtItem + "'";
  699. DataRow[] rowAttendances = staffAttendance.Tables[0].Select(strWhere);
  700. if (rowAttendances != null & rowAttendances.Length > Constant.INT_IS_ZERO)
  701. {
  702. newRowAtt["CardNumber"] = rowAttendances[0]["CardNumber"].ToString();
  703. newRowAtt["AttendanceStatus"] = rowAttendances[0]["AttendanceStatus"].ToString();
  704. newRowAtt["AbsenceReason"] = rowAttendances[0]["AbsenceReason"].ToString();
  705. newRowAtt["TardinessTimes"] = rowAttendances[0]["TardinessTimes"].ToString();
  706. newRowAtt["SettlementFlag"] = rowAttendances[0]["SettlementFlag"].ToString() == "0" ? "未结算" : "已结算";
  707. }
  708. }
  709. dtStaffAtt.Rows.Add(newRowAtt);
  710. }
  711. return dtStaffAtt;
  712. }
  713. /// <summary>
  714. /// 使格式刷不可用
  715. /// </summary>
  716. private void SetBrushNotEnable()
  717. {
  718. this._isBrushIsOpen = false;
  719. this.tsbtnBrush.Checked = false;
  720. this.dgvStaffAttendance.Cursor = Cursors.Default;
  721. this.dgvStaffAttendance.MultiSelect = false;
  722. }
  723. #endregion
  724. }
  725. }