예제 #1
0
        /// <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;
            }
        }
예제 #2
0
        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);
            }
        }