private void ClearFields() { OperationText = ""; mResultSalaryDateChanged = true; mResultSalary = 0m; mSelectedEmployeesItem = null; mLastName = null; mFirstName = null; mMiddleName = null; mSalarySubjectName = (mResultSalaryForAll) ? TEXT_SALARY_FOR_ALL_EMPLOYEES : null; mEmploymentDate = DateTime.Now; mEmploymentDateString = null; mSelectedManagerItem = null; mSelectedSalaryPlanItem = null; RaisePropertyChanged("EmployeesItemsSource"); RaisePropertyChanged("SelectedEmployeesItem"); RaisePropertyChanged("SubordinatesItemsSource"); RaisePropertyChanged("LastName"); RaisePropertyChanged("FirstName"); RaisePropertyChanged("MiddleName"); RaisePropertyChanged("EmploymentDate"); RaisePropertyChanged("SelectedManagerItem"); RaisePropertyChanged("SelectedSalaryPlanItem"); RaisePropertyChanged("SubordinatesFieldVisible"); RaisePropertyChanged("SalarySubjectName"); RaisePropertyChanged("ResultSalary"); }
static void Main(string[] args) { //连接数据库 SqlConnection conn = MyHelper.GetConnection(); DevExpress.Xpo.XpoDefault.DataLayer = CreateThreadSafeDataLayer(conn); DevExpress.Xpo.Session.DefaultSession.Connection = conn; Console.WriteLine("正在同步薪酬体系...."); SalaryPlan.SychSalaryPlan(); Console.WriteLine("正在同步薪等...."); SalaryGrade.SychSalaryGrade(); Console.WriteLine("正在同步薪级...."); SalaryStep.SychSalaryStep(); Console.WriteLine("正在同步员工基本信息...."); EmployeeInfo.SychEmployeeInfo(); Console.WriteLine("正在同步工资表...."); SalaryResult.SychSalaryResult(); Console.WriteLine("正在清理无效的月薪记录...."); MonthlySalary.ClearInvalidRecord(); Console.WriteLine("正在同步绩效考核结果...."); KpiItem.SychKpiItem(); Console.WriteLine("同步完毕!"); //Console.WriteLine("按任意键退出..."); //Console.ReadKey(true); }
/// <summary> /// Updates Employee entity performing all necessary validations. /// </summary> /// <param name="aEmployee">Employee entity to update</param> /// <param name="aUpdateOption">Do nothing, Do SaveChanges</param> /// <param name="aSalaryPlanId">SalaryPlan Id, if <= 0 then unchanged</param> /// <param name="aLastName">Last name, if null then unchanged</param> /// <param name="aFirstName">First name, if null then unchanged</param> /// <param name="aMiddleName">Middle name, if null then unchanged, if empty then set to null</param> /// <param name="aEmploymentDate">Employment date, if zero then unchanged</param> /// <param name="aManager">Manager entity, if null then set to null</param> /// <returns>Success, A required field is incorrect, EmployeeType is Employee but this Employee has subordinates, Manager is already this Employee's subordinate</returns> public EEmployeeUpdateResult UpdateEmployee(Employee aEmployee, EEmployeeUpdateOption aUpdateOption, int aSalaryPlanId, string aLastName, string aFirstName, string aMiddleName, DateTime aEmploymentDate, Employee aManager) { if (aSalaryPlanId <= 0) { aSalaryPlanId = aEmployee.SalaryPlanId; } aLastName ??= aEmployee.LastName; aFirstName ??= aEmployee.FirstName; if (aMiddleName == null) { aMiddleName = aEmployee.MiddleName; } else if (aMiddleName.Length == 0) { aMiddleName = null; } if (aEmploymentDate.Ticks <= 0L) { aEmploymentDate = aEmployee.EmploymentDate; } EEmployeeUpdateResult res = EEmployeeUpdateResult.FailRequiredField; if ((aSalaryPlanId > 0) && !string.IsNullOrWhiteSpace(aLastName) && !string.IsNullOrWhiteSpace(aFirstName) && (aEmploymentDate >= CompanyDateOfEstablishment)) { SalaryPlan aSalaryPlan = EmployeeListDB.SalaryPlans.Find(aSalaryPlanId); if (aSalaryPlan != null) { res = EEmployeeUpdateResult.FailEmployeeType; if ((aSalaryPlan.EmployeeType > SalaryPlan.EEmployeeType.Employee) || (aEmployee.Subordinates == null) || !aEmployee.Subordinates.Any()) { res = EEmployeeUpdateResult.FailManagerIsSubordinate; if ((aManager == null) || !EmployeeHelper.IsSubordinate(aEmployee, aManager)) { aEmployee.LastName = aLastName; aEmployee.FirstName = aFirstName; aEmployee.MiddleName = aMiddleName; aEmployee.EmploymentDate = aEmploymentDate; aEmployee.SalaryPlanId = aSalaryPlanId; aEmployee.Manager = aManager; if (aUpdateOption == EEmployeeUpdateOption.SaveChanges) { EmployeeListDB.SaveChanges(); } res = EEmployeeUpdateResult.Success; } } } } return(res); }
private void btn同步员工信息_Click(object sender, EventArgs e) { if (MessageBox.Show("同步需要几分钟甚至更长,过程中请不可进行其他操作,确实要立即同步吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2, 0, false) == DialogResult.Yes) { CreateWaitDialog("正在同步薪酬体系....", "请稍等"); SalaryPlan.SychSalaryPlan(); CreateWaitDialog("正在同步薪等....", "请稍等"); SalaryGrade.SychSalaryGrade(); CreateWaitDialog("正在同步薪级....", "请稍等"); SalaryStep.SychSalaryStep(); CreateWaitDialog("正在同步员工基本信息....", "请耐心等待"); EmployeeInfo.SychEmployeeInfo(); CloseWaitDialog(); } }
/// <summary> /// Creates a new Employee entity performing all necessary validations. /// </summary> /// <param name="aNewEmployee">Newly created Employee</param> /// <param name="aUpdateOption">Do nothing, Add to table Employees, Add to table Employees and do SaveChanges</param> /// <param name="aSalaryPlanId">SalaryPlan Id</param> /// <param name="aLastName">Last name</param> /// <param name="aFirstName">First name</param> /// <param name="aMiddleName">Middle name</param> /// <param name="aEmploymentDate">Employment date</param> /// <param name="aManager">Manager entity</param> /// <returns>Success, A required field is incorrect, Employee with the same name already exists</returns> public EEmployeeUpdateResult CreateNewEmployee(out Employee aNewEmployee, EEmployeeUpdateOption aUpdateOption, int aSalaryPlanId, string aLastName, string aFirstName, string aMiddleName, DateTime aEmploymentDate, Employee aManager = null) { EEmployeeUpdateResult res = EEmployeeUpdateResult.FailRequiredField; aNewEmployee = null; if ((aSalaryPlanId > 0) && !string.IsNullOrWhiteSpace(aLastName) && !string.IsNullOrWhiteSpace(aFirstName) && (aEmploymentDate >= CompanyDateOfEstablishment)) { SalaryPlan aSalaryPlan = EmployeeListDB.SalaryPlans.Find(aSalaryPlanId); if (aSalaryPlan != null) { res = EEmployeeUpdateResult.FailAlreadyExists; var aEmployee = new Employee { LastName = aLastName, FirstName = aFirstName, MiddleName = aMiddleName, EmploymentDate = aEmploymentDate, SalaryPlanId = aSalaryPlanId }; if (!EmployeeListDB.Employees.Any(v => v.Equals(aEmployee))) { aEmployee.Manager = aManager; aNewEmployee = aEmployee; if (aUpdateOption > EEmployeeUpdateOption.None) { EmployeeListDB.Employees.Add(aEmployee); if (aUpdateOption == EEmployeeUpdateOption.SaveChanges) { EmployeeListDB.SaveChanges(); } } res = EEmployeeUpdateResult.Success; } } } return(res); }
public EmployeeListDBConfiguration(SalaryPlanConfiguration aSalaryConfig = null, string aDatabaseName = null) { if (string.IsNullOrWhiteSpace(aDatabaseName)) { aDatabaseName = DATABASE_NAME_DEFAULT; } if (aSalaryConfig == null) { aSalaryConfig = new SalaryPlanConfiguration(); } var aSalaryPlan1 = new SalaryPlan { Name = "Employee", EmployeeType = SalaryPlan.EEmployeeType.Employee, BaseRate = aSalaryConfig.BaseRateEmployee, PercentAnnual = aSalaryConfig.PercentAnnualEmployee, PercentAnnualLimit = aSalaryConfig.PercentAnnualLimitEmployee, PercentSubs = 0, PercentSubsLevel = 0 }; var aSalaryPlan2 = new SalaryPlan { Name = "Manager", EmployeeType = SalaryPlan.EEmployeeType.Manager, BaseRate = aSalaryConfig.BaseRateManager, PercentAnnual = aSalaryConfig.PercentAnnualManager, PercentAnnualLimit = aSalaryConfig.PercentAnnualLimitManager, PercentSubs = aSalaryConfig.PercentSubsManager, PercentSubsLevel = aSalaryConfig.PercentSubsLevelManager }; var aSalaryPlan3 = new SalaryPlan { Name = "Sales", EmployeeType = SalaryPlan.EEmployeeType.Sales, BaseRate = aSalaryConfig.BaseRateSales, PercentAnnual = aSalaryConfig.PercentAnnualSales, PercentAnnualLimit = aSalaryConfig.PercentAnnualLimitSales, PercentSubs = aSalaryConfig.PercentSubsSales, PercentSubsLevel = aSalaryConfig.PercentSubsLevelSales }; #if USE_INMEMORY_DATABASE var options = new DbContextOptionsBuilder <EmployeeListDBContext>() .UseInMemoryDatabase(databaseName: aDatabaseName) .Options; EmployeeListDB = new EmployeeListDBContext(options); EmployeeListDB.SalaryPlans.Add(aSalaryPlan1); EmployeeListDB.SalaryPlans.Add(aSalaryPlan2); EmployeeListDB.SalaryPlans.Add(aSalaryPlan3); EmployeeListDB.SaveChanges(); #else EmployeeListDB = new EmployeeListDBContext(aDatabaseName); EmployeeListDB.Database.EnsureCreated(); var aSalaryPlans = EmployeeListDB.SalaryPlans; bool aRes = aSalaryPlans.Any(v => v.EmployeeType == SalaryPlan.EEmployeeType.Employee) && aSalaryPlans.Any(v => v.EmployeeType == SalaryPlan.EEmployeeType.Manager) && aSalaryPlans.Any(v => v.EmployeeType == SalaryPlan.EEmployeeType.Sales); if (!aRes) { EmployeeListDB.SalaryPlans.Add(aSalaryPlan1); EmployeeListDB.SalaryPlans.Add(aSalaryPlan2); EmployeeListDB.SalaryPlans.Add(aSalaryPlan3); EmployeeListDB.SaveChanges(); } #endif }