/// <summary> /// 导入数据 /// </summary> /// <param name="lstDate">HR_AttendanceMachineDataList对象列表</param> /// <returns>成功返回true失败返回False</returns> public void InsertAttendanceMachine(List <HR_AttendanceMachineDataList> lstDate) { string error = null; try { DepotManagementDataContext dataContxt = CommentParameter.DepotDataContext; foreach (HR_AttendanceMachineDataList machineDataList in lstDate) { error = machineDataList.WorkID; var result = from a in dataContxt.HR_AttendanceMachineDataList where a.WorkID == machineDataList.WorkID && a.Date == machineDataList.Date select a; dataContxt.HR_AttendanceMachineDataList.DeleteAllOnSubmit(result); HR_AttendanceMachineDataList dataList = new HR_AttendanceMachineDataList(); dataList.WorkID = machineDataList.WorkID; dataList.Date = machineDataList.Date; dataList.RecordTime = machineDataList.RecordTime; dataList.Remark = machineDataList.Remark; dataContxt.HR_AttendanceMachineDataList.InsertOnSubmit(dataList); } dataContxt.SubmitChanges(); } catch (Exception ex) { throw ex; } }
private void 导入toolStripButton_Click(object sender, EventArgs e) { try { DataTable dtTemp = ExcelHelperP.RenderFromExcel(openFileDialog1); if (dtTemp == null) { return; } if (CheckTable(dtTemp)) { #region 分析排班人员的打卡时间 List <HR_AttendanceMachineDataList> lstMachineDate = new List <HR_AttendanceMachineDataList>(); for (int i = 0; i < dtTemp.Rows.Count; i++) { string workID = ""; string recordTime = ""; string beforTime = ""; string afterTime = ""; if (dtTemp.Columns.Contains("工号")) { workID = dtTemp.Rows[i]["工号"].ToString(); if (workID == "") { continue; } } else { if (GlobalObject.GeneralFunction.IsNullOrEmptyObject(dtTemp.Rows[i]["日期"]) || GlobalObject.GeneralFunction.IsNullOrEmptyObject(dtTemp.Rows[i]["时间"])) { continue; } if (dtTemp.Rows[i]["登记号码"].ToString() == "") { continue; } string str = m_attendanceMachineServer.GetCardIDWorkIDMapping(dtTemp.Rows[i]["登记号码"].ToString()); if (str.Equals("0")) { //MessageDialog.ShowPromptMessage("【" + dtTemp.Rows[i]["登记号码"].ToString() + "】登记号码没有在映射表中!"); //return; continue; } workID = str; } DateTime date = Convert.ToDateTime(dtTemp.Rows[i]["日期"].ToString()); DateTime beforTimeTemp = date.AddDays(-1); DateTime afterTimeTemp = Convert.ToDateTime(dtTemp.Rows[i]["日期"].ToString()).AddDays(1); string[] recordTimeTemp = dtTemp.Rows[i]["时间"].ToString().Split(' '); HR_AttendanceSetting attendanceSet = m_attendanceSchemeServer.GetAttendanceSettingByWorkID(workID); string[] schemeCode = attendanceSet.SchemeCode.Split(' '); string mode = m_attendanceSchemeServer.GetAttendanceSchemeByCode(schemeCode[0]).AttendanceMode; if (mode.Contains("自然月排班考勤")) { DataTable dtWorkSchedule = m_workSchedulingServer.GetWorkSchedulingByWorkIDAndDate(workID, Convert.ToDateTime(dtTemp.Rows[i]["日期"].ToString())); if (dtWorkSchedule != null && dtWorkSchedule.Rows.Count > 0) { if (!Convert.ToBoolean(dtWorkSchedule.Rows[0]["isholiday"].ToString())) { string beginTime = Convert.ToDateTime(dtWorkSchedule.Rows[0]["beginTime"].ToString()).ToShortTimeString(); string punchInBegin = Convert.ToDateTime(dtWorkSchedule.Rows[0]["punchInBeginTime"].ToString()).ToShortTimeString(); string punchInEnd = Convert.ToDateTime(dtWorkSchedule.Rows[0]["punchInEndTime"].ToString()).ToShortTimeString(); string punchOutBegin = Convert.ToDateTime(dtWorkSchedule.Rows[0]["punchOutBeginTime"].ToString()).ToShortTimeString(); string punchOutEnd = Convert.ToDateTime(dtWorkSchedule.Rows[0]["punchOutEndTime"].ToString()).ToShortTimeString(); if ((Convert.ToDateTime(beginTime) - Convert.ToDateTime(punchInBegin)).Hours < 0) { if (i != dtTemp.Rows.Count - 1) { string str = dtTemp.Rows[i + 1]["时间"].ToString(); if (!str.Equals("0")) { string[] timeTemp = str.Split(' '); if (recordTimeTemp.Length == 0) { beforTime = afterTimeTemp.Year + "年" + afterTimeTemp.Month + "月" + afterTimeTemp.Day + "日" + timeTemp[0]; afterTime = timeTemp[1]; } else { afterTime = timeTemp[0]; } } } } if (Convert.ToInt32(dtWorkSchedule.Rows[0]["endOffSetDays"].ToString()) > 0) { afterTimeTemp = Convert.ToDateTime(dtTemp.Rows[i]["日期"].ToString()).AddDays( Convert.ToInt32(dtWorkSchedule.Rows[0]["endOffSetDays"].ToString())); string str = dtTemp.Rows[i + Convert.ToInt32(dtWorkSchedule.Rows[0]["endOffSetDays"].ToString())]["时间"].ToString(); if (!str.Equals("0")) { string[] timeTemp = str.Split(' '); if (timeTemp[0] != "") { if (Convert.ToDateTime(timeTemp[0]) < Convert.ToDateTime(punchOutEnd)) { afterTime = timeTemp[0]; } } } } if (beforTime != "") { if (!recordTime.Contains(beforTime)) { recordTime = beforTime + " "; } } for (int j = 0; j < recordTimeTemp.Length; j++) { if (recordTimeTemp[j] != "") { if (j != 0) { if (recordTimeTemp[j - 1] == recordTimeTemp[j]) { continue; } if (Convert.ToDateTime(recordTimeTemp[j]).Hour - Convert.ToDateTime(recordTimeTemp[j - 1]).Hour == 0 && Convert.ToDateTime(recordTimeTemp[j]).Minute - Convert.ToDateTime(recordTimeTemp[j - 1]).Minute < 5) { continue; } } recordTime += date.Year + "年" + date.Month + "月" + date.Day + "日" + recordTimeTemp[j] + " "; } } if (afterTime != "") { string strAfter = afterTimeTemp.Year + "年" + afterTimeTemp.Month + "月" + afterTimeTemp.Day + "日" + afterTime; if (!recordTime.Contains(strAfter)) { recordTime += afterTimeTemp.Year + "年" + afterTimeTemp.Month + "月" + afterTimeTemp.Day + "日" + afterTime + " "; } } } else { for (int j = 0; j < recordTimeTemp.Length; j++) { if (recordTimeTemp[j] != "") { if (j != 0) { if (recordTimeTemp[j - 1] == recordTimeTemp[j]) { continue; } if (Convert.ToDateTime(recordTimeTemp[j]).Hour - Convert.ToDateTime(recordTimeTemp[j - 1]).Hour == 0 && Convert.ToDateTime(recordTimeTemp[j]).Minute - Convert.ToDateTime(recordTimeTemp[j - 1]).Minute < 5) { continue; } } recordTime += date.Year + "年" + date.Month + "月" + date.Day + "日" + recordTimeTemp[j] + " "; } } } } else { for (int j = 0; j < recordTimeTemp.Length; j++) { if (recordTimeTemp[j] != "") { if (j != 0) { if (recordTimeTemp[j - 1] == recordTimeTemp[j]) { continue; } if (Convert.ToDateTime(recordTimeTemp[j]).Hour - Convert.ToDateTime(recordTimeTemp[j - 1]).Hour == 0 && Convert.ToDateTime(recordTimeTemp[j]).Minute - Convert.ToDateTime(recordTimeTemp[j - 1]).Minute < 5) { continue; } } recordTime += date.Year + "年" + date.Month + "月" + date.Day + "日" + recordTimeTemp[j] + " "; } } } } else { for (int j = 0; j < recordTimeTemp.Length; j++) { if (recordTimeTemp[j] != "") { if (j != 0) { if (recordTimeTemp[j - 1] == recordTimeTemp[j]) { continue; } if (Convert.ToDateTime(recordTimeTemp[j]).Hour - Convert.ToDateTime(recordTimeTemp[j - 1]).Hour == 0 && Convert.ToDateTime(recordTimeTemp[j]).Minute - Convert.ToDateTime(recordTimeTemp[j - 1]).Minute < 5) { continue; } } recordTime += date.Year + "年" + date.Month + "月" + date.Day + "日" + recordTimeTemp[j] + " "; } } } HR_AttendanceMachineDataList machineDataList = new HR_AttendanceMachineDataList(); machineDataList.Date = date; machineDataList.RecordTime = recordTime; machineDataList.WorkID = workID; machineDataList.Remark = ""; lstMachineDate.Add(machineDataList); } #endregion m_attendanceMachineServer.InsertAttendanceMachine(lstMachineDate); MessageDialog.ShowPromptMessage("导入成功!"); } RefreshDataGridView(); if (dataGridView1.Rows.Count > 0) { dataGridView1.Columns["单据号"].Visible = false; } } catch (Exception ex) { MessageDialog.ShowPromptMessage(ex.Message); } }