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;
         }
     }
 }
예제 #3
0
        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++;
                }
            }
        }