public void ArrayRowsToDSCheck_A(DataRow[] arrRows) //cấu trúc datatble là cấu trúc bảng checkinout { #region reset lại các danh sách if (ds_CheckInn_A == null) { ds_CheckInn_A = new List <cChk>(); } else { ds_CheckInn_A.Clear(); } if (ds_CheckOut_A == null) { ds_CheckOut_A = new List <cChk>(); } else { ds_CheckOut_A.Clear(); } if (ds_Check_A == null) { ds_Check_A = new List <cChk>(); } else { ds_Check_A.Clear(); } #endregion if (arrRows.Length != 0) { foreach (DataRow row in arrRows) { int MachineNo = (int)row["MachineNo"]; string Source = (string)row["Source"]; DateTime TimeStr = (DateTime)row["TimeStr"]; if (MachineNo % 2 == 1) { cChkInn_A check = new cChkInn_A() { TimeStr = TimeStr, Source = Source, GioLienQuan = null, MachineNo = MachineNo }; ds_CheckInn_A.Add(check); } else { cChkOut_A check = new cChkOut_A() { TimeStr = TimeStr, Source = Source, GioLienQuan = null, MachineNo = MachineNo }; ds_CheckOut_A.Add(check); } } LoaiBoCheck30phut(ds_CheckInn_A); //dataTable lấy lên đã sort sẵn nên dùng hàm này ko tích hợp sort LoaiBoCheck30phut(ds_CheckOut_A); } }
public void XetCa(List <cChkInOut_A> dsCIO, List <cShift> dsca) { for (int i = 0; i < dsCIO.Count; i++) { cChkInOut_A CIO = dsCIO[i]; cShift ca = XetCa_1(CIO, dsca); if (ca != null) { if (ca.Workingday == 2f && ca.OnnDutyTS > ThamSo._20h00) { cChk raaca3 = new cChkOut_A() { GioLienQuan = null, MachineNo = 22, Source = "O", TimeStr = CIO.Vao.TimeStr.Date.Add(ca.OnnDutyTS).Add(ThamSo._8gio) }; cChk vaoca1 = new cChkInn_A() { GioLienQuan = null, MachineNo = 21, Source = "I", TimeStr = CIO.Vao.TimeStr.Date.Add(ca.OnnDutyTS).Add(ThamSo._8gio1giay) }; CIO.Raa = raaca3; i = i - 1; cChkInOut_A newCIO = new cChkInOut_A() { Vao = vaoca1, Raa = CIO.Raa, HaveINOUT = 1, }; dsCIO.Insert(i, newCIO); } else { CIO.ThuocCa = ca; } } else { ca = new cShift() { ShiftID = int.MinValue, ShiftCode = "Ca 8 tiếng" }; TaoCaTuDo(ca, CIO.Vao.TimeStr, ThamSo._8gio, ThamSo._05phut, ThamSo._10phut, ThamSo._30phut, 1f); CIO.ThuocCa = ca; } } }
public void XetCa(List <cChkInOut_A> dsCIO, List <cShift> dsca, bool macdinhtinhPC150) { int i = 0; while (i < dsCIO.Count) { cChkInOut_A CIO = dsCIO[i]; if (CIO.HaveINOUT < 0) { if (CIO.HaveINOUT == -1) { //CIO.kiem } else { } i++; continue; } cShift ca = KiemtraThuocKhoangHieuCa(CIO, dsca); if (ca != null) { if (ca.Workingday == 2f && ca.OnnDutyTS > ThamSo._20h00) { List <cChk> gioLQvaoca3 = (CIO.Vao.GioLienQuan != null) ? new List <cChk>(CIO.Vao.GioLienQuan) : new List <cChk>(); List <cChk> gioLQraaca1 = (CIO.Raa.GioLienQuan != null) ? new List <cChk>(CIO.Raa.GioLienQuan) : new List <cChk>(); cChk raaca3 = new cChkOut_A() { GioLienQuan = null, MachineNo = 22, Source = "PC", TimeStr = CIO.Vao.TimeStr.Date.Add(ca.OnnDutyTS).Add(ThamSo._8gio) }; cChk vaoca1 = new cChkInn_A() { GioLienQuan = null, MachineNo = 21, Source = "PC", TimeStr = CIO.Vao.TimeStr.Date.Add(ca.OnnDutyTS).Add(ThamSo._8gio1giay) }; cChk vaoca3 = new cChkInn_A() { GioLienQuan = gioLQvaoca3, MachineNo = CIO.Vao.MachineNo, Source = CIO.Vao.Source, TimeStr = CIO.Vao.TimeStr }; cChk raaca1 = new cChkInn_A() { GioLienQuan = gioLQraaca1, MachineNo = CIO.Raa.MachineNo, Source = CIO.Raa.Source, TimeStr = CIO.Raa.TimeStr }; dsCIO[i] = new cChkInOut_A() { TinhPC150 = macdinhtinhPC150, Vao = vaoca3, Raa = raaca3, TG = new ThoiGian(), HaveINOUT = 1, TongGioThuc = raaca3.TimeStr - vaoca3.TimeStr, ThuocNgayCong = vaoca3.TimeStr.Date, TimeStrDaiDien = vaoca3.TimeStr }; cShift ca3 = dsca.Find(o => o.OnnDutyTS > ThamSo._20h00 && o.Workingday == 1f); dsCIO[i].ThuocCa = ca3; dsCIO[i].QuaDem = true; cChkInOut_A newCIO = new cChkInOut_A() { TinhPC150 = macdinhtinhPC150, Vao = vaoca1, Raa = raaca1, TG = new ThoiGian(), HaveINOUT = 1, TongGioThuc = raaca1.TimeStr - vaoca1.TimeStr, ThuocNgayCong = vaoca1.TimeStr.Date, TimeStrDaiDien = vaoca1.TimeStr }; cShift ca1 = dsca.Find(o => o.OnnDutyTS <= ThamSo._05h45 && o.Workingday == 1f); newCIO.ThuocCa = ca1; newCIO.QuaDem = false; // vì hàm insert ko cho phép chèn ở vị trí > số lượng phần tử // => nên nếu i là phần tử cuối thì add vào cuối danh sách, ngược lại thì insert vào vị trí i+1 if (i == (dsCIO.Count - 1)) { dsCIO.Add(newCIO); } else { dsCIO.Insert(i + 1, newCIO); } i = i + 2; // +2 vì i là ca3, i+1 là ca 1 } else { CIO.TinhPC150 = macdinhtinhPC150; CIO.ThuocCa = ca; i++; } } else { ca = new cShift() { ShiftID = int.MinValue, ShiftCode = "Ca 8 tiếng" }; TaoCaTuDo(ca, CIO.Vao.TimeStr, ThamSo._8gio, ThamSo._05phut, ThamSo._10phut, ThamSo._30phut, 1f); CIO.TinhPC150 = macdinhtinhPC150; CIO.ThuocCa = ca; i++; } } }