Exemplo n.º 1
0
        public void Handle(string url)
        {
            List <Base_Towns> towns = new List <Base_Towns>();

            using (IDbConnection conn = DBHelper.Connection)
            {
                string sQuery = "SELECT Id,Code,TownId,TownName,CountyId,County_Id,CountyName,CityId,City_Id,CityName,ProvinceId,Province_Id,ProvinceName FROM Base_Towns where IsCompleted!=1";
                conn.Open();
                towns = conn.Query <Base_Towns>(sQuery).ToList();
                Parallel.ForEach(towns, new ParallelOptions {
                    MaxDegreeOfParallelism = 4
                }, (town) =>
                {
                    List <Base_Villages> villages = new List <Base_Villages>();
                    var getUrl = string.Empty;
                    if (string.IsNullOrWhiteSpace(town.County_Id))
                    {
                        getUrl = $"{url}{town.ProvinceId}/{town.CityId.Substring(2, 2)}/{town.Id}.html";
                    }
                    else
                    {
                        getUrl = $"{url}{town.ProvinceId}/{town.City_Id.Substring(2, 2)}/{town.County_Id.Substring(4, 2)}/{town.Id}.html";
                    }
                    Console.WriteLine($"villageUrl:{getUrl}");
                    HtmlDocument doc = new HtmlDocument();
                    var html         = HttpServiceHelper.PolicyGet(getUrl);
                    doc.LoadHtml(html);
                    HtmlNode rootNode = doc.DocumentNode;
                    var villagetrs    = rootNode.SelectNodes("//tr[@class='villagetr']");
                    foreach (var tr in villagetrs)
                    {
                        var tds  = tr.SelectNodes("./td");
                        var code = tds[0].InnerText;
                        var name = tds[2].InnerText;
                        Console.WriteLine($"village:{code},{name}");
                        villages.Add(new Base_Villages
                        {
                            VillageId    = code,
                            VillageName  = name,
                            TownId       = town.TownId,
                            TownName     = town.TownName,
                            CountyId     = town.CountyId,
                            CountyName   = town.CountyName,
                            CityId       = town.CityId,
                            CityName     = town.CityName,
                            ProvinceId   = town.ProvinceId,
                            ProvinceName = town.ProvinceName
                        });
                    }
                    if (villages.Count > 0)
                    {
                        SqlBulkCopyHelper db = new SqlBulkCopyHelper();
                        db.CommonBulkCopy(villages, null);
                        string updateTown = $"update Base_Towns set IsCompleted =1 where TownId= '{town.TownId}'";
                        conn.Execute(updateTown);
                    }
                });
                Console.WriteLine("村结束");
            }
        }
Exemplo n.º 2
0
        public void Handle(string url)
        {
            List <Base_Provinces> provinces = new List <Base_Provinces>();

            using (IDbConnection conn = DBHelper.Connection)
            {
                string sQuery = "SELECT Id,Code,ProvinceId,ProvinceName FROM Base_Provinces where IsCompleted!=1";
                conn.Open();
                provinces = conn.Query <Base_Provinces>(sQuery).ToList();
                Parallel.ForEach(provinces, new ParallelOptions {
                    MaxDegreeOfParallelism = 4
                }, (province) =>
                {
                    List <Base_Cities> citys = new List <Base_Cities>();
                    var getUrl = $"{url}{province.Id}.html";
                    Console.WriteLine($"cityUrl:{getUrl}");
                    HtmlDocument doc = new HtmlDocument();
                    var html         = HttpServiceHelper.PolicyGet(getUrl);
                    doc.LoadHtml(html);
                    HtmlNode rootNode = doc.DocumentNode;
                    var citytrs       = rootNode.SelectNodes("//tr[@class='citytr']");
                    foreach (var citytr in citytrs)
                    {
                        var cityas = citytr.SelectNodes("./td/a[@href]");
                        var href   = cityas[0].Attributes["href"].Value;
                        var id     = Regex.Match(href, @"[0-9]{4}").Value;
                        var code   = cityas[0].InnerText;
                        var name   = cityas[1].InnerText;
                        Console.WriteLine($"city:{id},{code},{name}");
                        citys.Add(new Base_Cities
                        {
                            Id           = id,
                            Code         = code,
                            CityId       = code,
                            CityName     = name,
                            ProvinceId   = province.ProvinceId,
                            Province_Id  = province.Id,
                            ProvinceName = province.ProvinceName,
                            IsCompleted  = false
                        });
                    }
                    if (citys.Count > 0)
                    {
                        SqlBulkCopyHelper db = new SqlBulkCopyHelper();
                        db.CommonBulkCopy(citys, null);
                        string udpateProvince = $"update Base_Provinces set IsCompleted =1 where provinceId= '{province.ProvinceId}'";
                        conn.Execute(udpateProvince);
                    }
                });
                Console.WriteLine("城市结束");
            }
        }
Exemplo n.º 3
0
        public void Handle(string url)
        {
            List <Models.Base_Provinces> provinces = new List <Base_Provinces>();

            using (IDbConnection conn = DBHelper.Connection)
            {
                string sQuery = "SELECT Id,Code,ProvinceId,ProvinceName FROM Base_Provinces";
                conn.Open();
                provinces = conn.Query <Base_Provinces>(sQuery).ToList();
            }
            if (provinces.Count == 0)
            {
                HtmlDocument doc  = new HtmlDocument();
                var          html = HttpServiceHelper.PolicyGet($"{url}index.html");
                doc.LoadHtml(html);
                HtmlNode rootNode   = doc.DocumentNode;
                var      provinceas = rootNode.SelectNodes("//tr[@class='provincetr']/td/a[@href]");
                foreach (var provincea in provinceas)
                {
                    var href = provincea.Attributes["href"].Value;
                    var id   = Regex.Match(href, @"[0-9]{2}").Value;
                    var name = provincea.InnerText;
                    var code = id;
                    Console.WriteLine($"province:{id},{code},{name}");
                    provinces.Add(new Base_Provinces
                    {
                        Id           = id,
                        Code         = code,
                        ProvinceId   = code,
                        ProvinceName = name,
                        IsCompleted  = false
                    });
                }
                SqlBulkCopyHelper db = new SqlBulkCopyHelper();
                db.CommonBulkCopy(provinces, null);
                Console.WriteLine("省份结束");
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// Compute Payroll New
        /// </summary>
        /// <param name="ProfileID"></param>
        /// <param name="CutOffDuration"></param>
        /// <param name="Sys_AsynTaskID"></param>
        public void ComputePayroll_Progress(ComputePayrollDataModel TotalData, List<Hre_ProfileEntity> ProfileID, Att_CutOffDurationEntity CutOffDuration, Guid Sys_AsynTaskID, int totalProfile, TraceLogManager FileLog, bool ComputeOrderNumber, bool Settlement = false)
        {
            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork = new UnitOfWork(context);
                DateTime DatetimeStart = new DateTime();

                #region Init Repo
                var repoSys_AsynTask = new CustomBaseRepository<Sys_AsynTask>(unitOfWork);
                var repoHre_profile = new CustomBaseRepository<Hre_ProfileEntity>(unitOfWork);
                var repoCat_Element = new CustomBaseRepository<Cat_ElementEntity>(unitOfWork);
                var repoSal_BasicSalary = new CustomBaseRepository<Sal_BasicSalaryEntity>(unitOfWork);
                //var repoPayrollTable = new CustomBaseRepository<Sal_PayrollTable>(unitOfWork);
                //var repoPayrollTableItem = new CustomBaseRepository<Sal_PayrollTableItem>(unitOfWork);

                var repoCat_OvertimeType = new CustomBaseRepository<Cat_OvertimeTypeEntity>(unitOfWork);
                var repoCat_LeaveDayType = new CustomBaseRepository<Cat_LeaveDayTypeEntity>(unitOfWork);
                var repoCat_UsualAllowanceEntity = new CustomBaseRepository<Cat_UsualAllowanceEntity>(unitOfWork);
                var repoCat_GradePayroll = new CustomBaseRepository<Cat_GradePayrollEntity>(unitOfWork);
                var repoCat_UnusualAllowanceCfg = new CustomBaseRepository<Cat_UnusualAllowanceCfgEntity>(unitOfWork);
                var repoSal_PayrollTable = new CustomBaseRepository<Sal_PayrollTable>(unitOfWork);
                #endregion

                //Các biến xử dụng chung
                Sys_AsynTask asynTask = new Sys_AsynTask();

                //[SCV] list lưu tiền khấu nhân viên chưa đủ thâm niên của shop
                Dictionary<Guid, ValueCount> listTmpDeduction = new Dictionary<Guid, ValueCount>();
                List<Sal_PayrollTableItem> listPayrollTableItem = new List<Sal_PayrollTableItem>();
                List<Sal_PayrollTable> listPayrollTable = new List<Sal_PayrollTable>();

                //Get asynTask
                asynTask = repoSys_AsynTask.FindBy(m => m.ID == Sys_AsynTaskID).FirstOrDefault();

                //Order By theo ngày vào làm để tính trường hợp nhân viên không đủ thâm niên của dự án SCV
                ProfileID = ProfileID.OrderBy(m => m.DateHire).ToList();
                ParallelOptions parallelOptions = new ParallelOptions();

                #region Duyệt Profile

                //Parallel.For(0, ProfileID.Count, parallelOptions, d =>
                //{

                //});

                for (int i = 0; i < ProfileID.Count; i++)
                {
                    TraceLogItemInfo logItem = new TraceLogItemInfo();
                    DatetimeStart = DateTime.Now;
                    var profileItem = ProfileID[i];
                    bool isCancled = false;

                    //Biến tổng lưu tất cả các value của Formula
                    List<ElementFormula> listElementFormula = new List<ElementFormula>();

                    //Lấy các phần tử tính lương nằm trong Grade của nhân viên
                    Sal_GradeEntity Grade = FindGradePayrollByProfileAndMonthYear(TotalData.listGrade, profileItem.ID, CutOffDuration.DateStart, CutOffDuration.DateEnd);
                    List<Cat_ElementEntity> listElement = new List<Cat_ElementEntity>();
                    if (Grade.GradePayrollID != null && Grade.GradePayrollID != Guid.Empty)
                    {
                        listElement = new List<Cat_ElementEntity>(TotalData.listElement_All.Where(m => (m.GradePayrollID != null && (Guid)m.GradePayrollID == Grade.GradePayrollID) || m.IsApplyGradeAll == true));
                    }

                    //loại bỏ nhân viên có ngày vào làm sau ngày chốt lương
                    Cat_GradePayrollEntity CatGrade = TotalData.listCat_GradePayroll.Where(m => m.ID == Grade.GradePayrollID).FirstOrDefault();
                    if (CatGrade != null && CatGrade.SalaryTimeTypeClose != null)
                    {
                        DateTime DateClose = new DateTime();
                        if (CatGrade.SalaryTimeTypeClose == SalaryTimeTypeClose.E_CURRENTMONTH.ToString())
                        {
                            DateClose = new DateTime(CutOffDuration.MonthYear.Year, CutOffDuration.MonthYear.Month, CatGrade.SalaryDayClose != null ? (int)CatGrade.SalaryDayClose > 30 && CutOffDuration.MonthYear.Month % 2 == 0 ? 30 : (int)CatGrade.SalaryDayClose : 1);
                        }
                        else if (CatGrade.SalaryTimeTypeClose == SalaryTimeTypeClose.E_LASTMONTH.ToString())
                        {
                            DateClose = new DateTime(CutOffDuration.MonthYear.Year, CutOffDuration.MonthYear.Month, CatGrade.SalaryDayClose != null ? (int)CatGrade.SalaryDayClose > 30 && CutOffDuration.MonthYear.Month % 2 == 0 ? 30 : (int)CatGrade.SalaryDayClose : 1).AddMonths(-1);
                        }

                        if (profileItem.DateHire != null && (DateTime)profileItem.DateHire > DateClose)
                        {
                            isCancled = true;
                            FileLog.WriteLog("NV có ngày vào làm sau ngày chốt lương của tháng", "", "");
                        }
                    }

                    if (!isCancled)
                    {
                        #region tạo mới PayrollTable
                        Sal_PayrollTable PayrollTable_Model = new Sal_PayrollTable();
                        if (Settlement == true)
                        {
                            if (repoSal_PayrollTable.FindBy(m => m.CutOffDurationID == CutOffDuration.ID && m.ProfileID == profileItem.ID).FirstOrDefault() != null)
                            {
                                Att_CutOffDurationEntity CutOff = TotalData.listCutOffDuration.Where(m => m.MonthYear >= CutOffDuration.MonthYear).OrderBy(m => m.MonthYear).FirstOrDefault();
                                PayrollTable_Model = new Sal_PayrollTable()
                                {
                                    ID = Guid.NewGuid(),
                                    ProfileID = profileItem.ID,
                                    CutOffDurationID = CutOff.ID,
                                    MonthYear = CutOff.MonthYear,
                                    OrgStructureID = profileItem.OrgStructureID,
                                    PositionID = profileItem.PositionID,
                                    JobTitleID = profileItem.JobTitleID,
                                    EmployeeTypeID = profileItem.EmpTypeID,
                                    PayrollGroupID = profileItem.PayrollGroupID,
                                    CostCentreID = profileItem.CostCentreID,
                                    IncomeBeforeTax = 0,
                                    IsCash = profileItem.IsCash,
                                    DependantCount = 0,
                                    IncomeTaxable = 0,
                                    AmountPaidPITCom = 0,
                                    AmountPaidPITEmp = 0,
                                    IncomeNET = 0,
                                    BankID = profileItem.BankID,
                                    AccountNo = profileItem.AccountNo,
                                    Status = FileLog.GetFullPath(FileLog.FileName).Replace(".XML", "_" + DateTime.Now.ToString("yyyyMMdd") + ".XML"),
                                };
                            }
                            else
                            {
                                PayrollTable_Model = new Sal_PayrollTable()
                                {
                                    ID = Guid.NewGuid(),
                                    ProfileID = profileItem.ID,
                                    CutOffDurationID = CutOffDuration.ID,
                                    MonthYear = CutOffDuration.MonthYear,
                                    OrgStructureID = profileItem.OrgStructureID,
                                    PositionID = profileItem.PositionID,
                                    JobTitleID = profileItem.JobTitleID,
                                    EmployeeTypeID = profileItem.EmpTypeID,
                                    PayrollGroupID = profileItem.PayrollGroupID,
                                    CostCentreID = profileItem.CostCentreID,
                                    IncomeBeforeTax = 0,
                                    DependantCount = 0,
                                    IncomeTaxable = 0,
                                    AmountPaidPITCom = 0,
                                    AmountPaidPITEmp = 0,
                                    IncomeNET = 0,
                                    BankID = profileItem.BankID,
                                    AccountNo = profileItem.AccountNo,
                                    Status = FileLog.GetFullPath(FileLog.FileName).Replace(".XML", "_" + DateTime.Now.ToString("yyyyMMdd") + ".XML"),
                                };
                            }
                        }
                        else
                        {
                            PayrollTable_Model = new Sal_PayrollTable()
                            {
                                ID = Guid.NewGuid(),
                                ProfileID = profileItem.ID,
                                CutOffDurationID = CutOffDuration.ID,
                                MonthYear = CutOffDuration.MonthYear,
                                OrgStructureID = profileItem.OrgStructureID,
                                PositionID = profileItem.PositionID,
                                JobTitleID = profileItem.JobTitleID,
                                EmployeeTypeID = profileItem.EmpTypeID,
                                PayrollGroupID = profileItem.PayrollGroupID,
                                CostCentreID = profileItem.CostCentreID,
                                IncomeBeforeTax = 0,
                                DependantCount = 0,
                                IncomeTaxable = 0,
                                AmountPaidPITCom = 0,
                                AmountPaidPITEmp = 0,
                                IncomeNET = 0,
                                BankID = profileItem.BankID,
                                AccountNo = profileItem.AccountNo,
                                //Status = FileLog.GetFullPath(FileLog.FileName).Replace(".XML", "_" + DateTime.Now.ToString("yyyyMMdd") + ".XML"),
                            };
                        }

                        lock (listPayrollTable)
                        {
                            listPayrollTable.Add(PayrollTable_Model);
                        }

                        #endregion

                        //bắt lỗi tính công thức có giá trị nào null hay không
                        try
                        {
                            //DatetimeStart = DateTime.Now;
                            listElementFormula = ParseElementFormula(listElementFormula, listElement, TotalData, profileItem, CutOffDuration, listTmpDeduction, ComputeOrderNumber, FileLog);
                            //FileLog.WriteLog("", "Compute Formula", Common.ComputeTime(DatetimeStart, DateTime.Now));

                            listElement = listElement.OrderBy(m => m.OrderNumber).ToList();//sắp xếp lại

                            //Duyệt qua các phần tử tính lương 
                            foreach (var elementItem in listElement)
                            {
                                Sal_PayrollTableItem tableItem = new Sal_PayrollTableItem();
                                tableItem.ID = Guid.NewGuid();
                                tableItem.PayrollTableID = PayrollTable_Model.ID;
                                tableItem.Name = elementItem.ElementName;
                                tableItem.Code = elementItem.ElementCode;
                                tableItem.MonthYear = CutOffDuration.MonthYear;
                                tableItem.IsDecrypt = false;
                                tableItem.IsAddToHourlyRate = false;
                                tableItem.IsChargePIT = false;
                                tableItem.OrderNo = elementItem.OrderNumber != null ? (int)elementItem.OrderNumber : 0;
                                tableItem.ElementType = elementItem.TabType;
                                tableItem.ValueType = elementItem.Type;
                                tableItem.IsShow = elementItem.Invisible != null ? !elementItem.Invisible : true;
                                if (elementItem.IsBold == true)
                                {
                                    tableItem.Description4 += "E_BOLD,";
                                }
                                tableItem.Description4 += elementItem.ElementLevel + "," + elementItem.Type;
                                var ElementResult = listElementFormula.Where(m => m.VariableName.Trim() == elementItem.ElementCode.Trim());
                                if (ElementResult != null)
                                {
                                    tableItem.Value = ElementResult.LastOrDefault().Value.ToString();
                                    tableItem.Description1 = ElementResult.LastOrDefault().ErrorMessage;
                                }
                                else
                                {
                                    tableItem.Value = "0";
                                    tableItem.Description1 = "Không Tìm Thấy Phần Tử !";
                                }

                                lock (listPayrollTableItem)
                                {
                                    listPayrollTableItem.Add(tableItem);
                                }
                            }
                            logItem.Summary += profileItem.CodeEmp + "-" + profileItem.ProfileName + "-" + Common.ComputeTime(DatetimeStart, DateTime.Now) + "-" + listElement.Count.ToString() + "Element Formula";
                            logItem.Source = "Sucess";
                            FileLog.WriteLog(logItem);
                        }
                        catch (Exception ex)
                        {
                            logItem.Summary += profileItem.CodeEmp + "-" + profileItem.ProfileName + "-" + Common.ComputeTime(DatetimeStart, DateTime.Now) + "-" + listElement.Count.ToString() + " Element Formula";
                            logItem.Description = ex.Message;
                            logItem.Source = "Error";
                            FileLog.WriteLog(logItem);
                            //FileLog.WriteLog("Error", "Error Compute Profle " + ProfileID[i].CodeEmp + "-" + ProfileID[i].ProfileName, Common.ComputeTime(DatetimeStart, DateTime.Now));

                            Sal_PayrollTableItem tableItem = new Sal_PayrollTableItem();
                            tableItem.ID = Guid.NewGuid();
                            tableItem.PayrollTableID = PayrollTable_Model.ID;
                            tableItem.Name = "Lỗi, không thể tính được phần tử " + ex.Message;
                            tableItem.Code = "Error";
                            tableItem.MonthYear = CutOffDuration.MonthYear;
                            tableItem.IsDecrypt = false;
                            tableItem.IsAddToHourlyRate = false;
                            tableItem.IsChargePIT = false;
                            tableItem.OrderNo = 0;
                            tableItem.ElementType = "Payroll";
                            tableItem.ValueType = "Double";
                            tableItem.Description4 = "Double";
                            tableItem.Value = "0";
                            tableItem.Description1 = ex.Message;

                            lock (listPayrollTableItem)
                            {
                                listPayrollTableItem.Add(tableItem);
                            }
                        }
                    }
                }

                #endregion

                asynTask = repoSys_AsynTask.FindBy(m => m.ID == Sys_AsynTaskID).FirstOrDefault();
                asynTask.PercentComplete += ((double)ProfileID.Count / (double)totalProfile);
                asynTask.Description = FileLog.GetFullPath(FileLog.FileName).Replace(".XML", "_" + DateTime.Now.ToString("yyyyMMdd") + ".XML");
                asynTask.TimeEnd = DateTime.Now;

                if (asynTask.PercentComplete >= 1)
                {
                    asynTask.Status = AsynTaskStatus.Done.ToString();
                    asynTask.PercentComplete = 1D;
                }

                //if (dataErrorCode == DataErrorCode.Locked)
                //{
                //    asynTask.PercentComplete = 1D;
                //    asynTask.Description = "Dữ Liệu Tính Lương Đã Bị Khóa";
                //    FileLog.WriteLog("Dữ liệu tính lương bị khóa", "--------------------", "--------------------");
                //}

                DatetimeStart = DateTime.Now;

                var connection = context.Database.Connection.GetAdoConnection();

                using (DbCommander commander = new DbCommander(connection))
                {
                    if (connection.IsSqlConnection())
                    {
                        var bulkCopyHelper = new SqlBulkCopyHelper(connection.ConnectionString);
                        var dtPayrollTable = commander.GetSchema("Columns", new string[] { null, null, typeof(Sal_PayrollTable).Name });
                        var dtPayrollTableItem = commander.GetSchema("Columns", new string[] { null, null, typeof(Sal_PayrollTableItem).Name });
                        var payrollTableFields = dtPayrollTable.Rows.OfType<System.Data.DataRow>().Select(d => d["Column_Name"].GetString()).ToArray();
                        var payrollTableItemFields = dtPayrollTableItem.Rows.OfType<System.Data.DataRow>().Select(d => d["Column_Name"].GetString()).ToArray();
                        bulkCopyHelper.WriteToServer(listPayrollTable, typeof(Sal_PayrollTable).Name, payrollTableFields);

                        foreach (var listPayrollTableItemBySize in listPayrollTableItem.Chunk(2000))
                        {
                            try
                            {
                                bulkCopyHelper.WriteToServer(listPayrollTableItemBySize.ToList(),
                                       typeof(Sal_PayrollTableItem).Name, payrollTableItemFields);
                            }
                            catch (Exception ex)
                            {
                                FileLog.WriteLog(ex.Message, "", "");
                            }
                        }
                    }
                    else
                    {
                        var dtPayrollTable = commander.GetSchema("Columns", new string[] { null, typeof(Sal_PayrollTable).Name });
                        var dtPayrollTableItem = commander.GetSchema("Columns", new string[] { null, typeof(Sal_PayrollTableItem).Name });
                        var payrollTableFields = dtPayrollTable.Rows.OfType<System.Data.DataRow>().Select(d => d["Name"].GetString()).ToArray();
                        var payrollTableItemFields = dtPayrollTableItem.Rows.OfType<System.Data.DataRow>().Select(d => d["Name"].GetString()).ToArray();

                        commander.InsertList(typeof(Sal_PayrollTable).Name, listPayrollTable, payrollTableFields);

                        foreach (var listPayrollTableItemBySize in listPayrollTableItem.Chunk(2000))
                        {
                            commander.InsertList(typeof(Sal_PayrollTableItem).Name, listPayrollTableItemBySize.ToList(), payrollTableItemFields);
                        }
                    }
                }
                FileLog.WriteLog("", "", "Save Change 100 Profile-" + Common.ComputeTime(DatetimeStart, DateTime.Now));

                //repoPayrollTableItem.Add(listPayrollTableItem);
                //repoPayrollTable.Add(listPayrollTable);
                unitOfWork.SaveChanges();
            }
        }
Exemplo n.º 5
0
        public void ComputeCommission_Progress(ComputePayrollDataModel TotalData, List<Hre_ProfileEntity> ProfileID, Att_CutOffDurationEntity CutOffDuration, Guid Sys_AsynTaskID, int totalProfile, string methodPayroll, Guid CutOffDuration2ID)
        {
            using (var context = new VnrHrmDataContext())
            {
                TraceLogManager FileLog = new TraceLogManager();
                var unitOfWork = new UnitOfWork(context);

                #region Init Repo
                var repoSys_AsynTask = new CustomBaseRepository<Sys_AsynTask>(unitOfWork);
                var repoHre_profile = new CustomBaseRepository<Hre_ProfileEntity>(unitOfWork);
                var repoCat_Element = new CustomBaseRepository<Cat_ElementEntity>(unitOfWork);
                var repoSal_BasicSalary = new CustomBaseRepository<Sal_BasicSalaryEntity>(unitOfWork);
                //var repoPayrollTable = new CustomBaseRepository<Sal_PayrollTable>(unitOfWork);
                //var repoPayrollTableItem = new CustomBaseRepository<Sal_PayrollTableItem>(unitOfWork);

                var repoCat_OvertimeType = new CustomBaseRepository<Cat_OvertimeTypeEntity>(unitOfWork);
                var repoCat_LeaveDayType = new CustomBaseRepository<Cat_LeaveDayTypeEntity>(unitOfWork);
                var repoCat_UsualAllowanceEntity = new CustomBaseRepository<Cat_UsualAllowanceEntity>(unitOfWork);
                var repoCat_GradePayroll = new CustomBaseRepository<Cat_GradePayrollEntity>(unitOfWork);
                var repoCat_UnusualAllowanceCfg = new CustomBaseRepository<Cat_UnusualAllowanceCfgEntity>(unitOfWork);
                var repoSal_PayrollTable = new CustomBaseRepository<Sal_PayrollTable>(unitOfWork);
                #endregion

                //Các biến xử dụng chung
                Sys_AsynTask asynTask = new Sys_AsynTask();

                //[SCV] list lưu tiền khấu nhân viên chưa đủ thâm niên của shop
                Dictionary<Guid, ValueCount> listTmpDeduction = new Dictionary<Guid, ValueCount>();
                List<Sal_PayCommissionItem> listPayrollTableItem = new List<Sal_PayCommissionItem>();
                List<Sal_PayCommission> listPayrollTable = new List<Sal_PayCommission>();

                //Get asynTask
                asynTask = repoSys_AsynTask.FindBy(m => m.ID == Sys_AsynTaskID).FirstOrDefault();

                //Order By theo ngày vào làm để tính trường hợp nhân viên không đủ thâm niên của dự án SCV
                ProfileID = ProfileID.OrderBy(m => m.DateHire).ToList();
                ParallelOptions parallelOptions = new ParallelOptions();

                #region Duyệt Profile

                Parallel.For(0, ProfileID.Count, parallelOptions, d =>
                {
                    var profileItem = ProfileID[d];
                    bool isCancled = false;

                    //Biến tổng lưu tất cả các value của Formula
                    List<ElementFormula> listElementFormula = new List<ElementFormula>();

                    //Lấy các phần tử tính lương nằm trong Grade của nhân viên
                    Sal_GradeEntity Grade = PayrollServices.FindGradePayrollByProfileAndMonthYear(TotalData.listGrade, profileItem.ID, CutOffDuration.DateStart, CutOffDuration.DateEnd);
      
                    //lấy phần tử tính lương theo grade
                    List<Cat_ElementEntity> listElement = TotalData.listElement_All.Where(m => m.GradePayrollID != null && (Guid)m.GradePayrollID == Grade.GradePayrollID && m.MethodPayroll != null && m.MethodPayroll == methodPayroll).ToList();
                   
                    if (!isCancled)
                    {
                        #region tạo mới PayrollTable
                        Sal_PayCommission PayrollTable_Model = new Sal_PayCommission()
                        {
                            ID = Guid.NewGuid(),
                            ProfileID = profileItem.ID,
                            CutoffDurationID = CutOffDuration.ID,
                            MonthYear = CutOffDuration.MonthYear,
                            CutoffDuration2ID = CutOffDuration2ID,
                            //OrgStructureID = profileItem.OrgStructureID,
                            //PositionID = profileItem.PositionID,
                            //JobTitleID = profileItem.JobTitleID,
                            //EmployeeTypeID = profileItem.EmpTypeID,
                            //PayrollGroupID = profileItem.PayrollGroupID,
                            //CostCentreID = profileItem.CostCentreID,
                            //IncomeBeforeTax = 0,
                            //DependantCount = 0,
                            //IncomeTaxable = 0,
                            //AmountPaidPITCom = 0,
                            //AmountPaidPITEmp = 0,
                            //IncomeNET = 0,
                            //BankID = profileItem.BankID,
                            //AccountNo = profileItem.AccountNo,
                        };

                        lock (listPayrollTable)
                        {
                            listPayrollTable.Add(PayrollTable_Model);
                        }

                        #endregion

                        //bắt lỗi tính công thức có giá trị nào null hay không
                        try
                        {
                            listElementFormula = PayrollServices.ParseElementFormula(listElementFormula, listElement, TotalData, profileItem, CutOffDuration, listTmpDeduction,false, FileLog);

                            listElement = listElement.OrderBy(m => m.OrderNumber).ToList();//sắp xếp lại

                            //Duyệt qua các phần tử tính lương 
                            foreach (var elementItem in listElement)
                            {
                                Sal_PayCommissionItem tableItem = new Sal_PayCommissionItem();
                                tableItem.ID = Guid.NewGuid();
                                tableItem.PayCommissionID = PayrollTable_Model.ID;
                                tableItem.Name = elementItem.ElementName;
                                tableItem.Code = elementItem.ElementCode;
                                tableItem.OrderNo = elementItem.OrderNumber != null ? (int)elementItem.OrderNumber : 0;
                                tableItem.ElementType = elementItem.TabType;
                                tableItem.ValueType = elementItem.Type;
                                tableItem.IsShow = elementItem.Invisible != null ? !elementItem.Invisible : true;
                                if (elementItem.IsBold == true)
                                {
                                    tableItem.Description += "E_BOLD,";
                                }
                                tableItem.Description += elementItem.ElementLevel + "," + elementItem.Type;
                                var ElementResult = listElementFormula.Where(m => m.VariableName.Trim() == elementItem.ElementCode.Trim()).FirstOrDefault();
                                if (ElementResult != null)
                                {
                                    tableItem.Value = ElementResult.Value.ToString();
                                    tableItem.Description = ElementResult.ErrorMessage;
                                }
                                else
                                {
                                    tableItem.Value = "0";
                                    tableItem.Description = "Không Tìm Thấy Phần Tử !";
                                }

                                lock (listPayrollTableItem)
                                {
                                    listPayrollTableItem.Add(tableItem);
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            Sal_PayCommissionItem tableItem = new Sal_PayCommissionItem();
                            tableItem.ID = Guid.NewGuid();
                            tableItem.PayCommissionID = PayrollTable_Model.ID;
                            tableItem.Name = "Lỗi, không thể tính được phần tử " + ex.Message;
                            tableItem.Code = "Error";
                            tableItem.OrderNo = 0;
                            tableItem.ElementType = "Payroll";
                            tableItem.ValueType = "Double";
                            tableItem.Value = "0";
                            tableItem.Description = ex.Message;

                            lock (listPayrollTableItem)
                            {
                                listPayrollTableItem.Add(tableItem);
                            }
                        }
                    }
                });

                #endregion

                asynTask = repoSys_AsynTask.FindBy(m => m.ID == Sys_AsynTaskID).FirstOrDefault();
                asynTask.PercentComplete += ((double)ProfileID.Count / (double)totalProfile);
                asynTask.Description = FileLog.GetFullPath(FileLog.FileName);
                asynTask.TimeEnd = DateTime.Now;

                if (asynTask.PercentComplete >= 1)
                {
                    asynTask.Status = AsynTaskStatus.Done.ToString();
                    asynTask.PercentComplete = 1D;
                }

                var connection = context.Database.Connection.GetAdoConnection();

                using (DbCommander commander = new DbCommander(connection))
                {
                    if (connection.IsSqlConnection())
                    {
                        var bulkCopyHelper = new SqlBulkCopyHelper(connection.ConnectionString);
                        var dtPayrollTable = commander.GetSchema("Columns", new string[] { null, null, typeof(Sal_PayCommission).Name });
                        var dtPayrollTableItem = commander.GetSchema("Columns", new string[] { null, null, typeof(Sal_PayCommissionItem).Name });
                        var payrollTableFields = dtPayrollTable.Rows.OfType<System.Data.DataRow>().Select(d => d["Column_Name"].GetString()).ToArray();
                        var payrollTableItemFields = dtPayrollTableItem.Rows.OfType<System.Data.DataRow>().Select(d => d["Column_Name"].GetString()).ToArray();
                        bulkCopyHelper.WriteToServer(listPayrollTable, typeof(Sal_PayCommission).Name, payrollTableFields);

                        foreach (var listPayrollTableItemBySize in listPayrollTableItem.Chunk(2000))
                        {
                            bulkCopyHelper.WriteToServer(listPayrollTableItemBySize.ToList(),
                                typeof(Sal_PayCommissionItem).Name, payrollTableItemFields);
                        }
                    }
                    else
                    {
                        var dtPayrollTable = commander.GetSchema("Columns", new string[] { null, typeof(Sal_PayCommission).Name });
                        var dtPayrollTableItem = commander.GetSchema("Columns", new string[] { null, typeof(Sal_PayCommissionItem).Name });
                        var payrollTableFields = dtPayrollTable.Rows.OfType<System.Data.DataRow>().Select(d => d["Name"].GetString()).ToArray();
                        var payrollTableItemFields = dtPayrollTableItem.Rows.OfType<System.Data.DataRow>().Select(d => d["Name"].GetString()).ToArray();

                        commander.InsertList(typeof(Sal_PayCommission).Name, listPayrollTable, payrollTableFields);

                        foreach (var listPayrollTableItemBySize in listPayrollTableItem.Chunk(2000))
                        {
                            commander.InsertList(typeof(Sal_PayCommissionItem).Name, listPayrollTableItemBySize.ToList(), payrollTableItemFields);
                        }
                    }
                }

                //repoPayrollTableItem.Add(listPayrollTableItem);
                //repoPayrollTable.Add(listPayrollTable);
                unitOfWork.SaveChanges();
            }
        }
Exemplo n.º 6
0
        public void Handle(string url)
        {
            List <Base_Cities> citys = new List <Base_Cities>();

            using (IDbConnection conn = DBHelper.Connection)
            {
                string sQuery = "SELECT Id,Code,CityId,CityName,ProvinceId,Province_Id,ProvinceName FROM Base_Cities where IsCompleted!=1";
                conn.Open();
                citys = conn.Query <Base_Cities>(sQuery).ToList();
                Parallel.ForEach(citys, new ParallelOptions {
                    MaxDegreeOfParallelism = 4
                }, (city) =>
                {
                    List <Base_Counties> countys = new List <Base_Counties>();
                    var getUrl = $"{url}{city.ProvinceId}/{city.Id}.html";
                    Console.WriteLine($"countyUrl:{getUrl}");
                    HtmlDocument doc = new HtmlDocument();
                    var html         = HttpServiceHelper.PolicyGet(getUrl);
                    doc.LoadHtml(html);
                    HtmlNode rootNode = doc.DocumentNode;
                    var countytrs     = rootNode.SelectNodes("//tr[@class='countytr']");
                    var towntrs       = rootNode.SelectNodes("//tr[@class='towntr']");
                    if (countytrs != null)
                    {
                        foreach (var tr in countytrs)
                        {
                            var tdas = tr.SelectNodes("./td/a[@href]");
                            if (tdas != null)
                            {
                                var href = tdas[0].Attributes["href"].Value;
                                var id   = Regex.Match(href, @"[0-9]{6}").Value;
                                var code = tdas[0].InnerText;
                                var name = tdas[1].InnerText;
                                Console.WriteLine($"county:{id},{code},{name}");
                                countys.Add(new Base_Counties
                                {
                                    Id            = id,
                                    Code          = code,
                                    CountyId      = code,
                                    CountyName    = name,
                                    ProvinceId    = city.ProvinceId,
                                    Province_Id   = city.Province_Id,
                                    ProvinceName  = city.ProvinceName,
                                    CityId        = city.CityId,
                                    City_Id       = city.Id,
                                    CityName      = city.CityName,
                                    IsHasChildren = true,
                                    IsCompleted   = false
                                });
                            }
                            else
                            {
                                var code = tr.ChildNodes[0].InnerText;
                                var name = tr.ChildNodes[1].InnerText;
                                Console.WriteLine($"county:{code},{name}");
                                countys.Add(new Base_Counties
                                {
                                    Id            = "",
                                    Code          = code,
                                    CountyId      = code,
                                    CountyName    = name,
                                    ProvinceId    = city.ProvinceId,
                                    Province_Id   = city.Province_Id,
                                    ProvinceName  = city.ProvinceName,
                                    CityId        = city.CityId,
                                    City_Id       = city.Id,
                                    CityName      = city.CityName,
                                    IsHasChildren = false,
                                    IsCompleted   = false
                                });
                            }
                        }
                    }
                    else if (towntrs != null)
                    {
                        var code = $"{city.Id}01000000";
                        var name = "市辖区";
                        Console.WriteLine($"county:{code},市辖区");
                        countys.Add(new Base_Counties
                        {
                            Id            = "",
                            Code          = code,
                            CountyId      = code,
                            CountyName    = name,
                            ProvinceId    = city.ProvinceId,
                            Province_Id   = city.Province_Id,
                            ProvinceName  = city.ProvinceName,
                            CityId        = city.CityId,
                            City_Id       = city.Id,
                            CityName      = city.CityName,
                            IsHasChildren = true,
                            IsCompleted   = false
                        });
                    }
                    if (countys.Count > 0)
                    {
                        SqlBulkCopyHelper db = new SqlBulkCopyHelper();
                        db.CommonBulkCopy(countys, null);
                        string updateCity = $"update Base_Cities set IsCompleted =1 where CityId= '{city.CityId}'";
                        conn.Execute(updateCity);
                    }
                });
                Console.WriteLine("区县结束");
            }
        }
Exemplo n.º 7
0
        public void ComputeCommission_Progress(ComputePayrollDataModel TotalData, List <Hre_ProfileEntity> ProfileID, Att_CutOffDurationEntity CutOffDuration, Guid Sys_AsynTaskID, int totalProfile, string methodPayroll, Guid CutOffDuration2ID)
        {
            using (var context = new VnrHrmDataContext())
            {
                TraceLogManager FileLog    = new TraceLogManager();
                var             unitOfWork = new UnitOfWork(context);

                #region Init Repo
                var repoSys_AsynTask    = new CustomBaseRepository <Sys_AsynTask>(unitOfWork);
                var repoHre_profile     = new CustomBaseRepository <Hre_ProfileEntity>(unitOfWork);
                var repoCat_Element     = new CustomBaseRepository <Cat_ElementEntity>(unitOfWork);
                var repoSal_BasicSalary = new CustomBaseRepository <Sal_BasicSalaryEntity>(unitOfWork);
                //var repoPayrollTable = new CustomBaseRepository<Sal_PayrollTable>(unitOfWork);
                //var repoPayrollTableItem = new CustomBaseRepository<Sal_PayrollTableItem>(unitOfWork);

                var repoCat_OvertimeType         = new CustomBaseRepository <Cat_OvertimeTypeEntity>(unitOfWork);
                var repoCat_LeaveDayType         = new CustomBaseRepository <Cat_LeaveDayTypeEntity>(unitOfWork);
                var repoCat_UsualAllowanceEntity = new CustomBaseRepository <Cat_UsualAllowanceEntity>(unitOfWork);
                var repoCat_GradePayroll         = new CustomBaseRepository <Cat_GradePayrollEntity>(unitOfWork);
                var repoCat_UnusualAllowanceCfg  = new CustomBaseRepository <Cat_UnusualAllowanceCfgEntity>(unitOfWork);
                var repoSal_PayrollTable         = new CustomBaseRepository <Sal_PayrollTable>(unitOfWork);
                #endregion

                //Các biến xử dụng chung
                Sys_AsynTask asynTask = new Sys_AsynTask();

                //[SCV] list lưu tiền khấu nhân viên chưa đủ thâm niên của shop
                Dictionary <Guid, ValueCount> listTmpDeduction     = new Dictionary <Guid, ValueCount>();
                List <Sal_PayCommissionItem>  listPayrollTableItem = new List <Sal_PayCommissionItem>();
                List <Sal_PayCommission>      listPayrollTable     = new List <Sal_PayCommission>();

                //Get asynTask
                asynTask = repoSys_AsynTask.FindBy(m => m.ID == Sys_AsynTaskID).FirstOrDefault();

                //Order By theo ngày vào làm để tính trường hợp nhân viên không đủ thâm niên của dự án SCV
                ProfileID = ProfileID.OrderBy(m => m.DateHire).ToList();
                ParallelOptions parallelOptions = new ParallelOptions();

                #region Duyệt Profile

                Parallel.For(0, ProfileID.Count, parallelOptions, d =>
                {
                    var profileItem = ProfileID[d];
                    bool isCancled  = false;

                    //Biến tổng lưu tất cả các value của Formula
                    List <ElementFormula> listElementFormula = new List <ElementFormula>();

                    //Lấy các phần tử tính lương nằm trong Grade của nhân viên
                    Sal_GradeEntity Grade = PayrollServices.FindGradePayrollByProfileAndMonthYear(TotalData.listGrade, profileItem.ID, CutOffDuration.DateStart, CutOffDuration.DateEnd);

                    //lấy phần tử tính lương theo grade
                    List <Cat_ElementEntity> listElement = TotalData.listElement_All.Where(m => m.GradePayrollID != null && (Guid)m.GradePayrollID == Grade.GradePayrollID && m.MethodPayroll != null && m.MethodPayroll == methodPayroll).ToList();

                    if (!isCancled)
                    {
                        #region tạo mới PayrollTable
                        Sal_PayCommission PayrollTable_Model = new Sal_PayCommission()
                        {
                            ID                = Guid.NewGuid(),
                            ProfileID         = profileItem.ID,
                            CutoffDurationID  = CutOffDuration.ID,
                            MonthYear         = CutOffDuration.MonthYear,
                            CutoffDuration2ID = CutOffDuration2ID,
                            //OrgStructureID = profileItem.OrgStructureID,
                            //PositionID = profileItem.PositionID,
                            //JobTitleID = profileItem.JobTitleID,
                            //EmployeeTypeID = profileItem.EmpTypeID,
                            //PayrollGroupID = profileItem.PayrollGroupID,
                            //CostCentreID = profileItem.CostCentreID,
                            //IncomeBeforeTax = 0,
                            //DependantCount = 0,
                            //IncomeTaxable = 0,
                            //AmountPaidPITCom = 0,
                            //AmountPaidPITEmp = 0,
                            //IncomeNET = 0,
                            //BankID = profileItem.BankID,
                            //AccountNo = profileItem.AccountNo,
                        };

                        lock (listPayrollTable)
                        {
                            listPayrollTable.Add(PayrollTable_Model);
                        }

                        #endregion

                        //bắt lỗi tính công thức có giá trị nào null hay không
                        try
                        {
                            listElementFormula = PayrollServices.ParseElementFormula(listElementFormula, listElement, TotalData, profileItem, CutOffDuration, listTmpDeduction, false, FileLog);

                            listElement = listElement.OrderBy(m => m.OrderNumber).ToList();//sắp xếp lại

                            //Duyệt qua các phần tử tính lương
                            foreach (var elementItem in listElement)
                            {
                                Sal_PayCommissionItem tableItem = new Sal_PayCommissionItem();
                                tableItem.ID = Guid.NewGuid();
                                tableItem.PayCommissionID = PayrollTable_Model.ID;
                                tableItem.Name            = elementItem.ElementName;
                                tableItem.Code            = elementItem.ElementCode;
                                tableItem.OrderNo         = elementItem.OrderNumber != null ? (int)elementItem.OrderNumber : 0;
                                tableItem.ElementType     = elementItem.TabType;
                                tableItem.ValueType       = elementItem.Type;
                                tableItem.IsShow          = elementItem.Invisible != null ? !elementItem.Invisible : true;
                                if (elementItem.IsBold == true)
                                {
                                    tableItem.Description += "E_BOLD,";
                                }
                                tableItem.Description += elementItem.ElementLevel + "," + elementItem.Type;
                                var ElementResult      = listElementFormula.Where(m => m.VariableName.Trim() == elementItem.ElementCode.Trim()).FirstOrDefault();
                                if (ElementResult != null)
                                {
                                    tableItem.Value       = ElementResult.Value.ToString();
                                    tableItem.Description = ElementResult.ErrorMessage;
                                }
                                else
                                {
                                    tableItem.Value       = "0";
                                    tableItem.Description = "Không Tìm Thấy Phần Tử !";
                                }

                                lock (listPayrollTableItem)
                                {
                                    listPayrollTableItem.Add(tableItem);
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            Sal_PayCommissionItem tableItem = new Sal_PayCommissionItem();
                            tableItem.ID = Guid.NewGuid();
                            tableItem.PayCommissionID = PayrollTable_Model.ID;
                            tableItem.Name            = "Lỗi, không thể tính được phần tử " + ex.Message;
                            tableItem.Code            = "Error";
                            tableItem.OrderNo         = 0;
                            tableItem.ElementType     = "Payroll";
                            tableItem.ValueType       = "Double";
                            tableItem.Value           = "0";
                            tableItem.Description     = ex.Message;

                            lock (listPayrollTableItem)
                            {
                                listPayrollTableItem.Add(tableItem);
                            }
                        }
                    }
                });

                #endregion

                asynTask = repoSys_AsynTask.FindBy(m => m.ID == Sys_AsynTaskID).FirstOrDefault();
                asynTask.PercentComplete += ((double)ProfileID.Count / (double)totalProfile);
                asynTask.Description      = FileLog.GetFullPath(FileLog.FileName);
                asynTask.TimeEnd          = DateTime.Now;

                if (asynTask.PercentComplete >= 1)
                {
                    asynTask.Status          = AsynTaskStatus.Done.ToString();
                    asynTask.PercentComplete = 1D;
                }

                var connection = context.Database.Connection.GetAdoConnection();

                using (DbCommander commander = new DbCommander(connection))
                {
                    if (connection.IsSqlConnection())
                    {
                        var bulkCopyHelper         = new SqlBulkCopyHelper(connection.ConnectionString);
                        var dtPayrollTable         = commander.GetSchema("Columns", new string[] { null, null, typeof(Sal_PayCommission).Name });
                        var dtPayrollTableItem     = commander.GetSchema("Columns", new string[] { null, null, typeof(Sal_PayCommissionItem).Name });
                        var payrollTableFields     = dtPayrollTable.Rows.OfType <System.Data.DataRow>().Select(d => d["Column_Name"].GetString()).ToArray();
                        var payrollTableItemFields = dtPayrollTableItem.Rows.OfType <System.Data.DataRow>().Select(d => d["Column_Name"].GetString()).ToArray();
                        bulkCopyHelper.WriteToServer(listPayrollTable, typeof(Sal_PayCommission).Name, payrollTableFields);

                        foreach (var listPayrollTableItemBySize in listPayrollTableItem.Chunk(2000))
                        {
                            bulkCopyHelper.WriteToServer(listPayrollTableItemBySize.ToList(),
                                                         typeof(Sal_PayCommissionItem).Name, payrollTableItemFields);
                        }
                    }
                    else
                    {
                        var dtPayrollTable         = commander.GetSchema("Columns", new string[] { null, typeof(Sal_PayCommission).Name });
                        var dtPayrollTableItem     = commander.GetSchema("Columns", new string[] { null, typeof(Sal_PayCommissionItem).Name });
                        var payrollTableFields     = dtPayrollTable.Rows.OfType <System.Data.DataRow>().Select(d => d["Name"].GetString()).ToArray();
                        var payrollTableItemFields = dtPayrollTableItem.Rows.OfType <System.Data.DataRow>().Select(d => d["Name"].GetString()).ToArray();

                        commander.InsertList(typeof(Sal_PayCommission).Name, listPayrollTable, payrollTableFields);

                        foreach (var listPayrollTableItemBySize in listPayrollTableItem.Chunk(2000))
                        {
                            commander.InsertList(typeof(Sal_PayCommissionItem).Name, listPayrollTableItemBySize.ToList(), payrollTableItemFields);
                        }
                    }
                }

                //repoPayrollTableItem.Add(listPayrollTableItem);
                //repoPayrollTable.Add(listPayrollTable);
                unitOfWork.SaveChanges();
            }
        }
 public IHttpActionResult ExcelLinkMailboxQuery()
 {
     try
     {
         string uid      = HttpContext.Current.Session["UserId"].ToString();
         int    s        = 0;
         int    sum      = 0;
         var    pric     = entities.NavBySubmeun.Where(e => e.ModularId == 12).Select(e => e.Price).FirstOrDefault();
         var    filelist = HttpContext.Current.Request.Files;
         var    bad      = new List <ExcelLinkMailboxQueryModel>();
         var    linkMail = new List <LinkMailboxQuery>();
         if (filelist.Count > 0)
         {
             for (var i = 0; i < filelist.Count; i++)
             {
                 var file      = filelist[i];
                 var dataTable = ExcelHelp.ExcelToTableForXLSX(file.InputStream);                 //excel转成datatable
                 bad = dataTable.ToDataList <ExcelLinkMailboxQueryModel>();                       //datatable转成list
             }
         }
         sum = bad.Count();
         foreach (var item in bad)
         {
             int cname = entities.Country.Where(e => e.CountryName == item.国家.Trim()).Select(e => e.Id).FirstOrDefault();
             if (cname > 0 && uid != null)
             {
                 var box = new LinkMailboxQuery
                 {
                     UserId     = Convert.ToInt32(uid),
                     State      = 1,
                     Price      = pric,
                     ReviewLink = item.Review,
                     CountryId  = cname,
                     SubTime    = DateTime.Now
                 };
                 linkMail.Add(box);
                 s++;
             }
             else
             {
                 return(Ok(Respone.No("EXCEL数据有误")));
             }
         }
         if (s == sum)
         {
             var dt = linkMail.ToDataTable();
             if (string.IsNullOrWhiteSpace(dt.TableName))
             {
                 dt.TableName = "LinkMailboxQuery";
             }
             SqlBulkCopyHelper.SaveTable(dt);                    //批量插入
             var list = new { succeed = linkMail.Take(100).ToList() };
             return(Ok(Respone.Success("导入成功")));
         }
         else
         {
             return(Ok(Respone.No("导入失败")));
         }
     }
     catch (Exception ex)
     {
         return(Ok(ex.ToString()));
     }
 }
Exemplo n.º 9
0
 public override void InsertBulk <T>(IDatabase db, IEnumerable <T> pocos)
 {
     SqlBulkCopyHelper.BulkInsert(db, pocos);
 }
Exemplo n.º 10
0
 /// <summary>
 ///     将指定的excel的SheetName写入数据库
 /// </summary>
 /// <param name="excelFile"></param>
 /// <param name="sheetName"></param>
 /// <param name="dicMap"></param>
 /// <param name="connStr"></param>
 /// <param name="toTableName"></param>
 public static void InsertDBFromSheetName(string excelFile, string sheetName, Dictionary<string, string> dicMap,
     string connStr, string toTableName) {
     var excelDT = ExcelDataSource(excelFile, sheetName);
     var copyHelper = new SqlBulkCopyHelper(connStr, toTableName, dicMap);
     copyHelper.StartWrite(excelDT);
 }
Exemplo n.º 11
0
 public override Task InsertBulkAsync <T>(IDatabase db, IEnumerable <T> pocos, InsertBulkOptions options)
 {
     return(SqlBulkCopyHelper.BulkInsertAsync(db, pocos, options));
 }