private void KhoitaoDSNV(DataTable TableDSNV, List <cUserInfo> dsnv) { if (TableDSNV == null || TableDSNV.Rows.Count == 0) { return; } foreach (DataRow row in TableDSNV.Rows) { cShiftSchedule tmpLichTrinh = ThamSo.DSLichTrinh.Find(item => item.SchID == (int)row["SchID"]); List <cShift> tmpDSCa = tmpLichTrinh.ListT1; //List<cShift> tmpDSCaChonGio = new List<cShift>(ThamSo.DSCa); cUserInfo nhanvien = new cUserInfo() { UserEnrollNumber = (int)row["UserEnrollNumber"], UserFullName = row["UserFullName"].ToString(), LichTrinhLV = tmpLichTrinh, DSCa = tmpDSCa, HeSoLuongCB = (Single)row["HeSoLuongCB"], HeSoLuongSP = (Single)row["HeSoLuongSP"], BoPhan = new cPhongBan() { ID = (int)row["UserIDD"], TenPhongBan = row["Description"].ToString() }, }; dsnv.Add(nhanvien); } }
private void KhoitaoDSNV(DataTable TableDSNV, List <cUserInfo> dsnv) { if (TableDSNV == null || TableDSNV.Rows.Count == 0) { return; } foreach (DataRow row in TableDSNV.Rows) { cShiftSchedule tmpLichTrinh = ThamSo.DSLichTrinh.Find(item => item.SchID == (int)row["SchID"]); List <cShift> tmpDSCa = tmpLichTrinh.ListT1; List <cShift> tmpDSCaMoRong = ThamSo.TaoDSCaMoRong(tmpDSCa); // đã bao gồm Khác(int.Minvalue) //List<cShift> tmpDSCaChonGio = new List<cShift>(ThamSo.DSCa); cUserInfo nhanvien = new cUserInfo() { UserEnrollNumber = (int)row["UserEnrollNumber"], UserFullName = row["UserFullName"].ToString(), LichTrinhLV = tmpLichTrinh, DSCa = tmpDSCa, DSCaMoRong = tmpDSCaMoRong, HeSoLuongCB = (Single)row["HeSoLuongCB"], HeSoLuongSP = (Single)row["HeSoLuongSP"], //BoPhan = new cPhongBan() { ID = (int)row["UserIDD"], TenPhongBan = row["Description"].ToString() }, MacDinhTinhPC150 = (bool)row["TinhPC150"], Luong = new cLuongThang(), }; nhanvien.ClearAll(); dsnv.Add(nhanvien); } }
private void KhoitaoDSNV(DataTable fTableDSNV, List <cUserInfo> dsnv) { if (fTableDSNV == null || fTableDSNV.Rows.Count == 0) { return; } foreach (DataRow row in fTableDSNV.Rows) { cShiftSchedule tmpLichTrinh = ThamSo.DSLichTrinh.Find(item => item.SchID == (int)row["SchID"]); List <cShift> tmpDSCa = tmpLichTrinh.ListT1; List <cShift> tmpDSCaMoRong = ThamSo.TaoDSCaMoRong(tmpDSCa); // đã bao gồm Khác(int.Minvalue) cUserInfo nhanvien = new cUserInfo() { UserEnrollNumber = (int)row["UserEnrollNumber"], UserFullName = row["UserFullName"].ToString(), HeSoLuongCB = (Single)row["HeSoLuongCB"], HeSoLuongSP = (Single)row["HeSoLuongSP"], LichTrinhLV = tmpLichTrinh, DSCa = tmpDSCa, DSCaMoRong = tmpDSCaMoRong }; dsnv.Add(nhanvien); } }
private void ChuanBiDSLichTrinh() { if (ThamSo.DSLichTrinh == null) { ThamSo.DSLichTrinh = new List <cShiftSchedule>(); } else { ThamSo.DSLichTrinh.Clear(); } List <cShift> tmpDSCa = ThamSo.DSCa; DataTable table = SqlDataAccessHelper.ExecuteQueryString(ThamSo.queryDSLichTrinh, null, null); int tempScheduleID = -1; foreach (DataRow dataRow in table.Rows) { if (tempScheduleID == -1) { tempScheduleID = (int)dataRow["SchID"]; } else { if (tempScheduleID == (int)dataRow["SchID"]) { continue; } else { tempScheduleID = (int)dataRow["SchID"]; } } //= (int)dataRow["SchID"]; // tempT1, tempT2, tempT3, tempT4, tempT5, tempT6, tempT7; DataRow[] arrSubRecord = table.Select("SchID = " + tempScheduleID, string.Empty, DataViewRowState.CurrentRows); cShiftSchedule tmpLichTrinh = new cShiftSchedule() { SchID = tempScheduleID }; tmpLichTrinh.ListT1 = new List <cShift>(); tmpLichTrinh.ListT2 = new List <cShift>(); tmpLichTrinh.ListT3 = new List <cShift>(); tmpLichTrinh.ListT4 = new List <cShift>(); tmpLichTrinh.ListT5 = new List <cShift>(); tmpLichTrinh.ListT6 = new List <cShift>(); tmpLichTrinh.ListT7 = new List <cShift>(); foreach (DataRow subRecord in arrSubRecord) { int tempTChungCho1Hang = (int)subRecord["T1"]; // tempT1, tempT2, tempT3, tempT4, tempT5, tempT6, tempT7; cShift tempShift = tmpDSCa.Find(item => item.ShiftID == tempTChungCho1Hang); tmpLichTrinh.ListT1.Add(tempShift); tmpLichTrinh.ListT2.Add(tempShift); tmpLichTrinh.ListT3.Add(tempShift); tmpLichTrinh.ListT4.Add(tempShift); tmpLichTrinh.ListT5.Add(tempShift); tmpLichTrinh.ListT6.Add(tempShift); tmpLichTrinh.ListT7.Add(tempShift); } ThamSo.DSLichTrinh.Add(tmpLichTrinh); } }
public static void XetCa_1_CIO_V(cCheckInOut chkInOutV, cShiftSchedule lichtrinh) { }
public static void ChuanBiDSLichTrinhVaCa() { XL.DSCaMoRong.Clear(); XL.DSCa.Clear(); //lấy danh sách tất cả các ca var tableDSCa = DAO5.LayDSCa(); List <cCa> tempList = new List <cCa>(); foreach (DataRow row in tableDSCa.Rows) { #region transfer dữ liệu từ row sang đối tượng var iShiftID = (int)row["ShiftID"]; var sShiftCode = row["ShiftCode"].ToString(); TimeSpan tsOnDuty; TimeSpan.TryParse(row["Onduty"].ToString(), out tsOnDuty); TimeSpan tOffDuty; TimeSpan.TryParse(row["Offduty"].ToString(), out tOffDuty); var iDayCount = (int)row["DayCount"]; tOffDuty = tOffDuty.Add(new TimeSpan(iDayCount, 0, 0, 0)); TimeSpan timespanStartNightTime, timespanEndddNightTime; if (row["StartNT"] == DBNull.Value || TimeSpan.TryParse(row["StartNT"].ToString(), out timespanStartNightTime) == false) { timespanStartNightTime = XL2._22h00; //ver 4.0.0.4 } if (row["EndNT"] == DBNull.Value || TimeSpan.TryParse(row["EndNT"].ToString(), out timespanEndddNightTime) == false) { timespanEndddNightTime = XL2._06h00; //ver 4.0.0.4 } var tOnLunch = XL2._0gio; var tOffLunch = XL2._0gio; if (row["OnLunch"] != DBNull.Value && row["OffLunch"] != DBNull.Value) { TimeSpan.TryParse(row["OnLunch"].ToString(), out tOnLunch); TimeSpan.TryParse(row["OffLunch"].ToString(), out tOffLunch); } var LunchMin = tOffLunch.Subtract(tOnLunch); var tempWorkingTime = int.Parse(row["WorkingTime"].ToString()); var kyhieucc = row["KyHieuCC"].ToString(); var tachcadem = (row["IsSplited"] != DBNull.Value) && (bool)row["IsSplited"]; var idCaTruoc = (row["ShiftID1"] != DBNull.Value) ? (int)row["ShiftID1"] : -1; var idCaSauuu = (row["ShiftID2"] != DBNull.Value) ? (int)row["ShiftID2"] : -1; var isextend = (row["IsExtended"] != DBNull.Value) && (bool)row["IsExtended"]; var tempShift = new cCa { ID = iShiftID, Code = sShiftCode, TOD_Duty = new TS { Onn = tsOnDuty, Off = tOffDuty }, PhutOnnInn = (int)row["OnTimeIn"], PhutCutInn = (int)row["CutIn"], PhutOnnOut = (int)row["OnTimeOut"], PhutCutOut = (int)row["CutOut"], PhutToiThieuTinhOT = (int)row["AfterOT"], PhutChoTre = (int)row["LateGrace"], PhutChoSom = (int)row["EarlyGrace"], //LateeMin = tLateGrace, //EarlyMin = tEarlyGrace, Workingday = (Single)row["Workingday"], WorkingTimeTS = new TimeSpan(0, tempWorkingTime, 0), PhutNghiTrua = Convert.ToInt32(LunchMin.TotalMinutes), TachCaDem = tachcadem, idCaTruoc = idCaTruoc, idCaSauuu = idCaSauuu, KyHieuCC = kyhieucc, MoTa = row["Description"].ToString(), IsExtended = isextend, TOD_NightTime = new TS { Onn = timespanStartNightTime, Off = timespanEndddNightTime } }; //tempShift.TOD_NhanDienVao = new TS { Onn = tempShift.ThoiDiemOnnInn(), Off = tod_CutIn }, //tempShift.TOD_NhanDienRaa = new TS { Onn = tod_OnTimeOut, Off = tod_CutOut }, #endregion tempList.Add(tempShift); } // ra khỏi vòng lặp,ca 3&1, ca 3&1A chưa cập nhật ca trước, ca sau--> cập nhật #region update lại ca tách qua đêm trong ds ca foreach (cCa ca in tempList.Where(item => item.TachCaDem)) { var catruoc = tempList.Find(item => item.ID == ca.idCaTruoc); var casauuu = tempList.Find(item => item.ID == ca.idCaSauuu); ca.catruoc = catruoc; ca.casauuu = casauuu; } #endregion // có được toàn bộ ds ca --> gán cho DSCa toàn cục, DSCaMR toàn cục XL.DSCa = tempList; XL.DSCaMoRong = tempList.Where(item => item.IsExtended).ToList(); //DSCaMoRong chỉ bao gồm các ca ghép Ca1&2A, Ca1B&2, mỗi ca có caTrước caSau // gán lịch trình XL.DSLichTrinh.Clear(); // lấy danh sách lịch trình, mỗi dòng là 1 ca thuộc lịch trình => để duyệt từng lịch trình thì phải lấy dicstint var tableLichTrinh = DAO5.LayDSLichTrinh(); var arrRows_Distinct = (from DataRow row in tableLichTrinh.Rows select new { SchID = (int)(row["SchID"]), SchName = row["SchName"].ToString() }) .Distinct(); foreach (var row in arrRows_Distinct) { var arrRows1 = tableLichTrinh.Select("SchID=" + row.SchID, ""); var lichtrinh = new cShiftSchedule { SchID = row.SchID, TenLichTrinh = row.SchName, DSCaThu = new List <List <cCa> >(7), DSCaMRThu = new List <List <cCa> >(7), }; // mỗi lịch trình chứa 7T, mỗi T là 1 danh sách ca for (int i = 0; i < 7; i++) { lichtrinh.DSCaThu.Add(new List <cCa>()); lichtrinh.DSCaMRThu.Add(new List <cCa>()); } foreach (var row1 in arrRows1) { for (int i = 0; i < 7; i++) { if (row1["T" + (i + 1)] == DBNull.Value) { continue; } var shiftid = (int)row1["T" + (i + 1)]; var ca = XL.DSCa.Find(o => o.ID == shiftid); if (ca != null) { lichtrinh.DSCaThu[i].Add(ca); } } } for (int i = 0; i < 7; i++) { List <cCa> dscathu = lichtrinh.DSCaThu[i]; foreach (var ca in from ca in XL.DSCaMoRong let catruoc = ca.catruoc let casauuu = ca.casauuu where dscathu.Exists(item => item.ID == catruoc.ID) && dscathu.Exists(item => item.ID == casauuu.ID) select ca) { lichtrinh.DSCaMRThu[i].Add(ca); } } //var ca3 = lichtrinh.DSCaThu[0].FirstOrDefault(o => o.QuaDem && Math.Abs(o.Workingday - 1f) < 0.01f);//ver 4.0.0.4 //xác định ca 3 có giờ qua đêm 21h45 hay 22 giờ để gán //if (ca3 == null) lichtrinh.TGLamDemTheoQuyDinh = TGLamDemTheoQuyDinh._22h00;//ver 4.0.0.4 //else if (ca3.StartNT == XL2._21h45) lichtrinh.TGLamDemTheoQuyDinh = TGLamDemTheoQuyDinh._21h45;//ver 4.0.0.4 //else lichtrinh.TGLamDemTheoQuyDinh = TGLamDemTheoQuyDinh._22h00;//ver 4.0.0.4 XL.DSLichTrinh.Add(lichtrinh); } if (XL.DSLichTrinh.Count == 0) { throw new NullReferenceException("Không có ds lịch trình"); } }
public static void XetCa_1_CIO_A_KoTachCa(cCheckInOut CIO, cShiftSchedule lichtrinh) { }
public static void XetCa_ListCIO_A3(List <cCheckInOut> ds_CIO_A, cShiftSchedule lichtrinh, List <cCheck> ds_raa3_vao1, List <cCheck> ds_check_A) { }
private void ChuanBiDSLichTrinhVaCa() { XL.DSLichTrinh.Clear(); XL.DSCa.Clear(); XL.DSCaMoRong.Clear(); // lấy danh sách lịch trình, mỗi dòng là 1 ca thuộc lịch trình => để duyệt từng lịch trình thì phải lấy dicstint var tableLichTrinh = DAL.LayDSLichTrinh(); var tableDSCa = DAL.LayDSCa(); foreach (DataRow row in tableDSCa.Rows) { #region transfer dữ liệu từ row sang đối tượng var iShiftID = (int)row["ShiftID"]; var sShiftCode = row["ShiftCode"].ToString(); TimeSpan tsOnDuty; TimeSpan.TryParse(row["Onduty"].ToString(), out tsOnDuty); TimeSpan tOffDuty; TimeSpan.TryParse(row["Offduty"].ToString(), out tOffDuty); var iDayCount = (int)row["DayCount"]; tOffDuty = tOffDuty.Add(new TimeSpan(iDayCount, 0, 0, 0)); var tOnTimeIn = tsOnDuty.Subtract(new TimeSpan(0, (int)row["OnTimeIn"], 0)); var tCutIn = tsOnDuty.Add(new TimeSpan(0, (int)row["CutIn"], 0)); // phải add thêm 1 ngày daycount vì trong dữ liệu chỉ có chuỗi giờ thô : 05:45 không có ngày var tOnTimeOut = tOffDuty.Subtract(new TimeSpan(0, (int)row["OnTimeOut"], 0)); var tCutOut = tOffDuty.Add(new TimeSpan(0, (int)row["CutOut"], 0)); var tAfterOT = new TimeSpan(0, (int)row["AfterOT"], 0); var tLateGrace = new TimeSpan(0, (int)row["LateGrace"], 0); var tEarlyGrace = new TimeSpan(0, (int)row["EarlyGrace"], 0); var tOnLunch = XL2._0gio; var tOffLunch = XL2._0gio; if (row["OnLunch"] != DBNull.Value && row["OffLunch"] != DBNull.Value) { TimeSpan.TryParse(row["OnLunch"].ToString(), out tOnLunch); TimeSpan.TryParse(row["OffLunch"].ToString(), out tOffLunch); } var iShowPosition = (int)row["ShowPosition"]; var tempWorkingTime = int.Parse(row["WorkingTime"].ToString()); var kyhieucc = row["KyHieuCC"].ToString(); var tempShift = new cCaChuan { ID = iShiftID, Code = sShiftCode, DayCount = iDayCount, QuaDem = (iDayCount == 1), OnnTS = tsOnDuty, OffTS = tOffDuty, OnnInnTS = tOnTimeIn, CutInnTS = tCutIn, OnnOutTS = tOnTimeOut, CutOutTS = tCutOut, AfterOTMin = tAfterOT, LateeMin = tLateGrace, EarlyMin = tEarlyGrace, Workingday = (Single)row["Workingday"], ShowPosition = iShowPosition, WorkingTimeTS = new TimeSpan(0, tempWorkingTime, 0), chophepTreTS = tsOnDuty.Add(tLateGrace), chophepSomTS = tOffDuty - tEarlyGrace, batdaulamthemTS = tOffDuty + tAfterOT, //[TBD] thay tOffDuty + XL2._30phut thành tempOffDuty + tempAfterOT --> đã thay LunchMin = tOffLunch.Subtract(tOnLunch), KyHieuCC = kyhieucc, }; #endregion XL.DSCa.Add(tempShift); } var ca3va1 = XL.DSCa.Find(o => o.OnnTS == XL2._21h45 && o.Workingday == 2f); if (ca3va1 != null) { ca3va1.TachCa = true; var ca3 = XL.DSCa.Find(o => o.OnnTS == XL2._21h45 && o.Workingday == 1f); var ca1 = XL.DSCa.Find(o => o.OnnTS == XL2._05h45 && o.Workingday == 1f); ((cCaChuan)ca3va1).catruoc = ca3 as cCaChuan; ((cCaChuan)ca3va1).casauuu = ca1 as cCaChuan; } IEnumerable <DataRow> arrRows = tableLichTrinh.Rows.Cast <DataRow>(); var arrRows_Distinct = (from row in arrRows select new { a = (int)(row["SchID"]), b = row["SchName"].ToString() }).Distinct(); foreach (var row in arrRows_Distinct) { var arrRows1 = tableLichTrinh.Select("SchID=" + row.a, ""); var lichtrinh = new cShiftSchedule { SchID = row.a, TenLichTrinh = row.b, DSCa = new List <cCaAbs>(), DSCaMoRong = new List <cCaAbs>() }; foreach (var row1 in arrRows1) { var shiftid = (int)row1["T1"]; var ca = XL.DSCa.Find(o => o.ID == shiftid); if (ca != null) { lichtrinh.DSCa.Add(ca); } } lichtrinh.DSCaMoRong = XL.TaoDSCaMoRong(lichtrinh.DSCa); XL.DSLichTrinh.Add(lichtrinh); } if (XL.DSLichTrinh.Count == 0) { throw new NullReferenceException("Không có ds lịch trình"); } }