コード例 #1
0
        private void sbtnGetInfo_Click(object sender, EventArgs e)
        {
            IList <DevExpress.Spreadsheet.Range> selectedRange = spreadsheetControl1.GetSelectedRanges();

            DevExpress.Spreadsheet.Range curentRange = selectedRange[0];
            if (!(curentRange.TopRowIndex == curentRange.BottomRowIndex && curentRange.LeftColumnIndex == curentRange.RightColumnIndex))
            {
                //MessageBox.Show(curentRange.TopRowIndex.ToString());
                SearchOptions option = new SearchOptions();
                option.SearchBy = SearchBy.Columns;
                option.SearchIn = SearchIn.Values;
                option.MatchEntireCellContents = true;
                option.MatchCase = false;
                IEnumerable <Cell> searchResult;
                #region Tìm các cột
                // Tìm cột Crew ID
                searchResult = curentRange.Search("CREW ID", option);
                if (searchResult.Count() == 0)
                {
                    searchResult = curentRange.Search("CREWID", option);
                    if (searchResult.Count() == 0)
                    {
                        MessageBox.Show("Không tìm thấy cột Crew ID trong vùng dữ liệu được chọn");
                        return;
                    }
                }
                int colcrewid   = searchResult.First().LeftColumnIndex;
                int colflightid = colcrewid + 1;
                int colnote     = colcrewid + 2;
                // Dòng dữ liệu đầu tiên
                int firstRow = searchResult.First().TopRowIndex + 1;
                curentRange.Worksheet.Cells[firstRow - 1, colflightid].Value = "FLight ID";
                curentRange.Worksheet.Cells[firstRow - 1, colnote].Value     = "Note";
                curentRange.Worksheet.Cells[firstRow - 1, colnote + 1].Value = "Database";
                int colds, cols;
                colds = colnote + 2;
                cols  = colds + 2;
                //curentRange.Worksheet.Cells[firstRow - 1, colds].Value = "DS ID";
                //curentRange.Worksheet.Cells[firstRow - 1, colds+1].Value = "DS Name";
                //curentRange.Worksheet.Cells[firstRow - 1, cols].Value = "S ID";
                //curentRange.Worksheet.Cells[firstRow - 1, cols + 1].Value = "S Name";
                // Tìm cột Flight Date
                searchResult = curentRange.Search("Flight Date", option);
                if (searchResult.Count() == 0)
                {
                    searchResult = curentRange.Search("FlightDate", option);
                    if (searchResult.Count() == 0)
                    {
                        MessageBox.Show("Không tìm thấy cột Flight Date trong vùng dữ liệu được chọn");
                        return;
                    }
                }
                int colfltdate = searchResult.First().LeftColumnIndex;

                // Tìm cột Route
                searchResult = curentRange.Search("Route", option);
                if (searchResult.Count() == 0)
                {
                    MessageBox.Show("Không tìm thấy cột Route trong vùng dữ liệu được chọn");
                    return;
                }
                int colroute = searchResult.First().LeftColumnIndex;

                // Tìm cột FlightNo Flight No
                searchResult = curentRange.Search("FlightNo.", option);
                if (searchResult.Count() == 0)
                {
                    searchResult = curentRange.Search("Flight No.", option);
                    if (searchResult.Count() == 0)
                    {
                        MessageBox.Show("Không tìm thấy cột FlightNo trong vùng dữ liệu được chọn");
                        return;
                    }
                }
                int colfltno = searchResult.First().LeftColumnIndex;

                // Tìm cột CREW
                searchResult = curentRange.Search("CREW", option);
                if (searchResult.Count() == 0)
                {
                    searchResult = curentRange.Search("CREW NAME", option);
                    if (searchResult.Count() == 0)
                    {
                        MessageBox.Show("Không tìm thấy cột CREW trong vùng dữ liệu được chọn");
                        return;
                    }
                }
                int colcrew = searchResult.First().LeftColumnIndex;

                // Tìm cột KPT Revenue

                searchResult = curentRange.Search("KPT \nRevenue", option);
                if (searchResult.Count() == 0)
                {
                    searchResult = curentRange.Search("KPT\n Revenue", option);
                    if (searchResult.Count() == 0)
                    {
                        searchResult = curentRange.Search("KPT\nRevenue", option);
                        if (searchResult.Count() == 0)
                        {
                            MessageBox.Show("Không tìm thấy cột KPT Revenue trong vùng dữ liệu được chọn");
                            return;
                        }
                    }
                }
                int colrevenue = searchResult.First().LeftColumnIndex;

                // Tìm cột Discrepancy
                searchResult = curentRange.Search("Discrepancy", option);
                if (searchResult.Count() == 0)
                {
                    MessageBox.Show("Không tìm thấy cột Discrepancy trong vùng dữ liệu được chọn");
                    return;
                }
                int coldiscrepancy = searchResult.First().LeftColumnIndex;

                // Tìm cột Cashier Collected
                //string test = curentRange.Worksheet.Cells[1, 4].Value.ToString();
                searchResult = curentRange.Search("Cashier\n Collected", option);
                if (searchResult.Count() == 0)
                {
                    searchResult = curentRange.Search("Cashier \nCollected", option);
                    if (searchResult.Count() == 0)
                    {
                        searchResult = curentRange.Search("Cashier\nCollected", option);
                        if (searchResult.Count() == 0)
                        {
                            MessageBox.Show("Không tìm thấy cột Cashier Collected trong vùng dữ liệu được chọn");
                            return;
                        }
                    }
                }
                int colcashier = searchResult.First().LeftColumnIndex;

                // Tìm cột Card Settlement
                searchResult = curentRange.Search("Card \nSettlement", option);
                if (searchResult.Count() == 0)
                {
                    searchResult = curentRange.Search("Card\n Settlement", option);
                    if (searchResult.Count() == 0)
                    {
                        searchResult = curentRange.Search("Card\nSettlement", option);
                        if (searchResult.Count() == 0)
                        {
                            MessageBox.Show("Không tìm thấy cột Card Settlement trong vùng dữ liệu được chọn");
                            return;
                        }
                    }
                }
                int colcard = searchResult.First().LeftColumnIndex;

                // Tìm cột REMARK
                searchResult = curentRange.Search("REMARK", option);
                if (searchResult.Count() == 0)
                {
                    searchResult = curentRange.Search("REMARKS", option);
                    if (searchResult.Count() == 0)
                    {
                        MessageBox.Show("Không tìm thấy cột REMARK trong vùng dữ liệu được chọn");
                        return;
                    }
                }
                int colremark = searchResult.First().LeftColumnIndex;
                #endregion
                // Dòng và cột cuối của Range
                int lastcol = curentRange.RightColumnIndex;
                int lastrow = curentRange.BottomRowIndex;
                if (lastrow < firstRow)
                {
                    MessageBox.Show("Vùng chọn không có dữ liệu");
                    return;
                }
                HREntities    hr = new HREntities();
                ERMSEntities1 cb = new ERMSEntities1();

                //string filesource = @"\\10.100.8.108\phanbay\doantv\ddtvvfp6\solieu\lbaytv2.dbf";
                string     manv, hoten, tentv, route, flyno, remark, nametv = "";
                double     Discrepancy, KPTRevenue, CashierCollected, CardSettlement;
                DateTime   flydate;
                int        first_space, second_space, tt_ten, id_cb = -1;
                List <int> lstflightID = new List <int>();
                bool       flag_add;
                try {
                    for (int i = firstRow; i <= lastrow; i++)
                    {
                        flag_add = false;
                        var codetv = curentRange.Worksheet.Cells[i, colcrewid].Value;
                        if (!codetv.IsEmpty)
                        {
                            manv  = codetv.ToString().PadLeft(4, '0');
                            tentv = curentRange.Worksheet.Cells[i, colcrew].Value.ToString();
                        }
                        #region Tìm Crewid
                        else //Tìm Manv trong nhân sự dựa theo tên
                        {
                            tentv = curentRange.Worksheet.Cells[i, colcrew].Value.ToString().Trim();
                            manv  = "";
                            //Có khoảng trắng có thể là tên có số hoặc cả họ tên
                            if (tentv.Contains(" "))
                            {
                                first_space  = tentv.IndexOf(" ");
                                second_space = tentv.IndexOf(" ", first_space + 1);
                                if (second_space < 0) // Chỉ một khoản trằn có thể là tên và số trùng tên. Tìm trong Nhân sự theo hướng đó.
                                {
                                    var ns = hr.HoSoGocs.Where(x => x.Tenkd.Trim().ToUpper() == tentv.Trim().ToUpper()).FirstOrDefault();
                                    if (ns != null)
                                    {
                                        curentRange.Worksheet.Cells[i, colcrewid].Value = ns.mans.Trim();
                                        manv = ns.mans.Trim();
                                        curentRange.Worksheet.Cells[i, colnote].Value = "KPT không có CrewID";
                                    }
                                    else
                                    {
                                        curentRange.Worksheet.Cells[i, colnote].Value = "KPT không có CrewID";
                                    }
                                }
                                else //Có khoảng trắng thứ hai ==> Có phần họ và tên đệm
                                {
                                    string sotrung;
                                    sotrung = tentv.Substring(first_space + 1, second_space - first_space - 1);
                                    //Kiểm tra xem phải số trùng tên không
                                    if (Int32.TryParse(sotrung, out tt_ten))
                                    {
                                        hoten = tentv.Substring(second_space + 1).Trim() + " " + tentv.Substring(0, second_space);
                                    }
                                    else
                                    {
                                        hoten = tentv.Substring(first_space + 1).Trim() + " " + tentv.Substring(0, first_space);
                                    }
                                    var ns = hr.HoSoGocs.Where(x => x.tenkodau.Trim().ToUpper() == hoten.ToUpper()).FirstOrDefault();
                                    if (ns != null)
                                    {
                                        curentRange.Worksheet.Cells[i, colcrewid].Value = ns.mans.Trim();
                                        manv = ns.mans.Trim();
                                        curentRange.Worksheet.Cells[i, colnote].Value = "KPT không có CrewID";
                                    }
                                    else
                                    {
                                        curentRange.Worksheet.Cells[i, colnote].Value = "Không tìm được CrewID";
                                    }
                                }
                            }
                            // Nhập mỗi tên không có số trùng tên
                            else
                            {
                                curentRange.Worksheet.Cells[i, colnote].Value = "Không thể tìm được Crew ID";
                            }
                        }
                        #endregion
                        #region Tìm Chuyến Bay
                        if (curentRange.Worksheet.Cells[i, colfltdate].Value.IsDateTime)
                        {
                            ;
                        }
                        flydate = Convert.ToDateTime(curentRange.Worksheet.Cells[i, colfltdate].Value.ToString());
                        route   = curentRange.Worksheet.Cells[i, colroute].Value.ToString();
                        flyno   = "VN" + curentRange.Worksheet.Cells[i, colfltno].Value.ToString();

                        var flight = cb.CR_FlightInfo.Where(x => x.Routing == route && x.FlightNo == flyno && x.Date == flydate.Date).FirstOrDefault();
                        if (flight != null)
                        {
                            curentRange.Worksheet.Cells[i, colflightid].Value = flight.FlightID;
                            id_cb = flight.FlightID;
                            var fltid = lstflightID.Where(x => x == id_cb).FirstOrDefault();
                            if (fltid > 0)
                            {
                                flag_add = true;
                            }
                        }
                        //Tìm DS và S
                        var totv = cb.CR_Flight_Crew.Where(x => x.FlightID == id_cb && x.IsDeleted == false && x.Dutyfree != null && x.Dutyfree != "").OrderBy(z => z.Dutyfree).ToList();
                        if (totv != null)
                        {
                            int k = 0;
                            foreach (var tv in totv)
                            {
                                var hs = hr.HoSoGocs.Where(x => x.mans.Trim() == tv.CrewID).FirstOrDefault();
                                if (hs.mans.Trim() == manv)
                                {
                                    curentRange.Worksheet.Cells[i, colcrewid].Font.Color = System.Drawing.Color.Cyan;
                                }
                                if (hs != null)
                                {
                                    nametv = hs.tenkodau.Trim().ToUpper();
                                }
                                curentRange.Worksheet.Cells[i, colds + k].Value     = tv.CrewID;
                                curentRange.Worksheet.Cells[i, colds + k + 1].Value = nametv;
                                curentRange.Worksheet.Cells[i, colds + k + 2].Value = tv.Dutyfree;
                                k = k + 3;
                                //if(tv.Dutyfree=="S"){
                                //     curentRange.Worksheet.Cells[i,cols].Value=tv.CrewID;
                                //     curentRange.Worksheet.Cells[i,cols+1].Value=nametv;
                                //}
                                //else
                                //    if(tv.Dutyfree=="DS" || tv.Dutyfree=="D"){
                                //        curentRange.Worksheet.Cells[i,colds].Value=tv.CrewID;
                                //        curentRange.Worksheet.Cells[i,colds+1].Value=nametv;
                                //    }
                            }
                        }
                        else
                        {
                            curentRange.Worksheet.Cells[i, colnote].Value = "Không tìm được chuyến bay tương ứng";
                            id_cb = -1;
                        }

                        #endregion
                        #region Lấy thông tin khác
                        if (!curentRange.Worksheet.Cells[i, coldiscrepancy].Value.IsEmpty)
                        {
                            Discrepancy = Convert.ToDouble(curentRange.Worksheet.Cells[i, coldiscrepancy].Value.ToString());
                        }
                        else
                        {
                            Discrepancy = 0.0;
                        }
                        if (!curentRange.Worksheet.Cells[i, colrevenue].Value.IsEmpty)
                        {
                            KPTRevenue = Convert.ToDouble(curentRange.Worksheet.Cells[i, colrevenue].Value.ToString());
                        }
                        else
                        {
                            KPTRevenue = 0.0;
                        }
                        if (!curentRange.Worksheet.Cells[i, colcashier].Value.IsEmpty)
                        {
                            CashierCollected = Convert.ToDouble(curentRange.Worksheet.Cells[i, colcashier].Value.ToString());
                        }
                        else
                        {
                            CashierCollected = 0.0;
                        }
                        if (!curentRange.Worksheet.Cells[i, colcard].Value.IsEmpty)
                        {
                            CardSettlement = Convert.ToDouble(curentRange.Worksheet.Cells[i, colcard].Value.ToString());
                        }
                        else
                        {
                            CardSettlement = 0.0;
                        }
                        if (curentRange.Worksheet.Cells[i, colremark].Value.IsEmpty)
                        {
                            remark = "";
                        }
                        else
                        {
                            remark = curentRange.Worksheet.Cells[i, colremark].Value.ToString(); // ?? curentRange.Worksheet.Cells[i, colremark].Value.ToString(),"";
                        }
                        #endregion
                        #region Ghi vào CSDL
                        if (id_cb > 0)
                        {
                            var dt = cb.CR_Flight_Dutyfree.Where(x => x.FlightID == id_cb).FirstOrDefault();
                            if (dt != null) // Có rồi ==> Cập nhật Total và KPTinfo
                            {
                                if (!flag_add)
                                {
                                    if (Discrepancy > 0)
                                    {
                                        dt.Total = KPTRevenue;
                                    }
                                    else
                                    {
                                        dt.Total = CashierCollected + CardSettlement;
                                    }
                                }
                                else
                                if (Discrepancy > 0)
                                {
                                    dt.Total = dt.Total + KPTRevenue;
                                }
                                else
                                {
                                    dt.Total = dt.Total + CashierCollected + CardSettlement;
                                }

                                dt.KPTinfo    = "Flyno=" + flyno.Trim() + " Date=" + flydate.Date.ToString("dd/MM/yyyy") + " Route=" + route + " Discrepancy=" + Discrepancy.ToString() + " KPT Revenue=" + KPTRevenue.ToString() + " Cashier Collected=" + CashierCollected.ToString() + " Card Settlement " + CardSettlement.ToString() + " Crewid=" + manv + " Crewname=" + tentv + " Remark=" + remark;
                                dt.Modified   = DateTime.Now;
                                dt.Modifier   = "liembt";
                                dt.Modifierid = "1067";
                                cb.SaveChanges();
                                //curentRange.Worksheet.Cells[i, colnote + 1].Value = "Update";
                            }
                            else //Chưa có ==> Add vào
                            {
                                CR_Flight_Dutyfree newdt = new CR_Flight_Dutyfree();

                                newdt.FlightID = id_cb;

                                if (Discrepancy > 0)
                                {
                                    newdt.Total = KPTRevenue;
                                }
                                else
                                {
                                    newdt.Total = CashierCollected + CardSettlement;
                                }

                                newdt.KPTinfo   = "Flyno=" + flyno.Trim() + " Date=" + flydate.Date.ToString("dd/MM/yyyy") + " Route=" + route + " Discrepancy=" + Discrepancy.ToString() + " KPT Revenue=" + KPTRevenue.ToString() + " Cashier Collected=" + CashierCollected.ToString() + " Card Settlement " + CardSettlement.ToString() + " Crewid=" + manv + " Crewname=" + tentv + " Remark=" + remark;
                                newdt.Created   = DateTime.Now;
                                newdt.Creator   = "liembt";
                                newdt.Creatorid = "1067";

                                cb.CR_Flight_Dutyfree.Add(newdt);

                                cb.SaveChanges();
                                //curentRange.Worksheet.Cells[i, colnote + 1].Value = "Insert";
                            }
                        }
                        else
                        {
                            curentRange.Worksheet.Cells[i, colnote + 1].Value = "";
                        }

                        #endregion
                    }
                    #region Export Excel Kết quả xử lý
                    string filename;
                    filename = lblFilename.Text.Substring(0, lblFilename.Text.IndexOf(".")) + "_kqxl.xlsx";
                    IWorkbook workbook = spreadsheetControl1.Document;
                    using (FileStream stream = new FileStream(filename, FileMode.Create, FileAccess.ReadWrite))
                    {
                        workbook.SaveDocument(stream, DocumentFormat.Xlsx);
                    }
                    #endregion
                }
                //catch(Exception ex){
                //    //MessageBox.Show(ex.Message);
                //}
                finally{
                    hr.Dispose();
                    cb.Dispose();
                }
            }
            else
            {
                MessageBox.Show("Vui lòng chọn vùng dữ liệu");
            }

            MessageBox.Show("Complete!");
        }