private async Task <bool> ValidateOrganization(KpiItem KpiItem) { if (KpiItem.OrganizationId == 0) { KpiItem.AddError(nameof(KpiItemValidator), nameof(KpiItem.Organization), ErrorCode.OrganizationEmpty); } else { OrganizationFilter OrganizationFilter = new OrganizationFilter { Id = new IdFilter { Equal = KpiItem.OrganizationId } }; var count = await UOW.OrganizationRepository.Count(OrganizationFilter); if (count == 0) { KpiItem.AddError(nameof(KpiItemValidator), nameof(KpiItem.Organization), ErrorCode.OrganizationIdNotExisted); } } return(KpiItem.IsValidated); }
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); }
public async Task <bool> Delete(KpiItem KpiItem) { if (await ValidateId(KpiItem)) { } return(KpiItem.IsValidated); }
private async Task <bool> ValidateItem(KpiItem KpiItem) { if (KpiItem.KpiItemContents == null || !KpiItem.KpiItemContents.Any()) { KpiItem.AddError(nameof(KpiItemValidator), nameof(KpiItem.KpiItemContents), ErrorCode.KpiItemContentsEmpty); } else { var ItemIds = KpiItem.KpiItemContents.Select(x => x.ItemId).ToList(); ItemFilter ItemFilter = new ItemFilter { Skip = 0, Take = int.MaxValue, Selects = ItemSelect.Id, Id = new IdFilter { In = ItemIds } }; var ItemIdsInDB = (await UOW.ItemRepository.List(ItemFilter)).Select(x => x.Id).ToList(); var ItemIdsNotExisted = ItemIds.Except(ItemIdsInDB).ToList(); if (ItemIdsNotExisted != null && ItemIdsNotExisted.Any()) { foreach (var Id in ItemIdsNotExisted) { KpiItem.AddError(nameof(KpiItemValidator), nameof(KpiItem.KpiItemContents), ErrorCode.ItemIdNotExisted); } } } return(KpiItem.IsValidated); }
private async Task <bool> ValidateEmployees(KpiItem KpiItem) { if (KpiItem.EmployeeIds == null || !KpiItem.EmployeeIds.Any()) { KpiItem.AddError(nameof(KpiItemValidator), nameof(KpiItem.EmployeeIds), ErrorCode.EmployeeIdsEmpty); } else { AppUserFilter AppUserFilter = new AppUserFilter { Skip = 0, Take = int.MaxValue, Id = new IdFilter { In = KpiItem.EmployeeIds }, OrganizationId = new IdFilter(), Selects = AppUserSelect.Id }; var EmployeeIdsInDB = (await UOW.AppUserRepository.List(AppUserFilter)).Select(x => x.Id).ToList(); var listIdsNotExisted = KpiItem.EmployeeIds.Except(EmployeeIdsInDB).ToList(); if (listIdsNotExisted != null && listIdsNotExisted.Any()) { foreach (var Id in listIdsNotExisted) { KpiItem.AddError(nameof(KpiItemValidator), nameof(KpiItem.EmployeeIds), ErrorCode.IdNotExisted); } } } return(KpiItem.IsValidated); }
private async Task <bool> ValidateStatus(KpiItem KpiItem) { if (StatusEnum.ACTIVE.Id != KpiItem.StatusId && StatusEnum.INACTIVE.Id != KpiItem.StatusId) { KpiItem.AddError(nameof(KpiItemValidator), nameof(KpiItem.Status), ErrorCode.StatusNotExisted); } return(KpiItem.IsValidated); }
public async Task <KpiItem> Get(long Id) { KpiItem KpiItem = await UOW.KpiItemRepository.Get(Id); if (KpiItem == null) { return(null); } return(KpiItem); }
public async Task <bool> Update(KpiItem KpiItem) { if (await ValidateId(KpiItem)) { await ValidateTime(KpiItem); await ValidateOrganization(KpiItem); await ValidateStatus(KpiItem); await ValidateValue(KpiItem); } return(KpiItem.IsValidated); }
public async Task <bool> Create(KpiItem KpiItem) { await ValidateTime(KpiItem); await ValidateOrganization(KpiItem); await ValidateEmployees(KpiItem); await ValidateStatus(KpiItem); await ValidateItem(KpiItem); await ValidateValue(KpiItem); return(KpiItem.IsValidated); }
public async Task <bool> Delete(KpiItem KpiItem) { await DataContext.KpiItemContentKpiCriteriaItemMapping.Where(x => x.KpiItemContent.KpiItemId == KpiItem.Id).DeleteFromQueryAsync(); await DataContext.KpiItemContent.Where(x => x.KpiItemId == KpiItem.Id).DeleteFromQueryAsync(); await DataContext.KpiItem.Where(x => x.Id == KpiItem.Id).UpdateFromQueryAsync(x => new KpiItemDAO { DeletedAt = StaticParams.DateTimeNow }); return(true); }
public async Task <KpiItem> Create(KpiItem KpiItem) { if (!await KpiItemValidator.Create(KpiItem)) { return(KpiItem); } try { await UOW.Begin(); List <KpiItem> KpiItems = new List <KpiItem>(); if (KpiItem.EmployeeIds != null && KpiItem.EmployeeIds.Any()) { foreach (var EmployeeId in KpiItem.EmployeeIds) { var newObj = Utils.Clone(KpiItem); newObj.EmployeeId = EmployeeId; newObj.CreatorId = CurrentContext.UserId; newObj.RowId = Guid.NewGuid(); KpiItems.Add(newObj); } } await UOW.KpiItemRepository.BulkMerge(KpiItems); await UOW.Commit(); await Logging.CreateAuditLog(KpiItem, new { }, nameof(KpiItemService)); return(KpiItem); } catch (Exception ex) { await UOW.Rollback(); if (ex.InnerException == null) { await Logging.CreateSystemLog(ex, nameof(KpiItemService)); throw new MessageException(ex); } else { await Logging.CreateSystemLog(ex.InnerException, nameof(KpiItemService)); throw new MessageException(ex.InnerException); } } }
private async Task SaveReference(KpiItem KpiItem) { await DataContext.KpiItemContentKpiCriteriaItemMapping .Where(x => x.KpiItemContent.KpiItemId == KpiItem.Id) .DeleteFromQueryAsync(); await DataContext.KpiItemContent .Where(x => x.KpiItemId == KpiItem.Id) .DeleteFromQueryAsync(); List <KpiItemContentDAO> KpiItemContentDAOs = new List <KpiItemContentDAO>(); List <KpiItemContentKpiCriteriaItemMappingDAO> KpiItemContentKpiCriteriaItemMappingDAOs = new List <KpiItemContentKpiCriteriaItemMappingDAO>(); if (KpiItem.KpiItemContents != null) { KpiItem.KpiItemContents.ForEach(x => x.RowId = Guid.NewGuid()); foreach (KpiItemContent KpiItemContent in KpiItem.KpiItemContents) { KpiItemContentDAO KpiItemContentDAO = new KpiItemContentDAO(); //KpiItemContentDAO.Id = KpiItemContent.Id; KpiItemContentDAO.KpiItemId = KpiItem.Id; KpiItemContentDAO.ItemId = KpiItemContent.ItemId; KpiItemContentDAO.RowId = KpiItemContent.RowId; KpiItemContentDAOs.Add(KpiItemContentDAO); } await DataContext.KpiItemContent.BulkMergeAsync(KpiItemContentDAOs); foreach (KpiItemContent KpiItemContent in KpiItem.KpiItemContents) { KpiItemContent.Id = KpiItemContentDAOs.Where(x => x.RowId == KpiItemContent.RowId).Select(x => x.Id).FirstOrDefault(); if (KpiItemContent.KpiItemContentKpiCriteriaItemMappings != null) { foreach (KpiItemContentKpiCriteriaItemMapping KpiItemContentKpiCriteriaItemMapping in KpiItemContent.KpiItemContentKpiCriteriaItemMappings) { KpiItemContentKpiCriteriaItemMappingDAO KpiItemContentKpiCriteriaItemMappingDAO = new KpiItemContentKpiCriteriaItemMappingDAO { KpiItemContentId = KpiItemContent.Id, KpiCriteriaItemId = KpiItemContentKpiCriteriaItemMapping.KpiCriteriaItemId, Value = KpiItemContentKpiCriteriaItemMapping.Value }; KpiItemContentKpiCriteriaItemMappingDAOs.Add(KpiItemContentKpiCriteriaItemMappingDAO); } } } await DataContext.KpiItemContentKpiCriteriaItemMapping.BulkMergeAsync(KpiItemContentKpiCriteriaItemMappingDAOs); } }
private async Task <bool> ValidateKpiYear(KpiItem KpiItem) { KpiYearFilter KpiYearFilter = new KpiYearFilter { Id = new IdFilter { Equal = KpiItem.KpiYearId } }; int count = await UOW.KpiYearRepository.Count(KpiYearFilter); if (count == 0) { KpiItem.AddError(nameof(KpiItemValidator), nameof(KpiItem.KpiYear), ErrorCode.KpiYearIdNotExisted); } return(KpiItem.IsValidated); }
private async Task <bool> ValidateTime(KpiItem KpiItem) { await ValidateKpiPeriod(KpiItem); await ValidateKpiYear(KpiItem); if (!KpiItem.IsValidated) { return(false); } DateTime now = StaticParams.DateTimeNow; DateTime StartDate, EndDate; (StartDate, EndDate) = DateTimeConvert(KpiItem.KpiPeriodId, KpiItem.KpiYearId); if (now > EndDate) { KpiItem.AddError(nameof(KpiItemValidator), nameof(KpiItem.KpiYear), ErrorCode.KpiYearAndKpiPeriodMustInTheFuture); } return(KpiItem.IsValidated); }
public async Task <bool> ValidateId(KpiItem KpiItem) { KpiItemFilter KpiItemFilter = new KpiItemFilter { Skip = 0, Take = 10, Id = new IdFilter { Equal = KpiItem.Id }, Selects = KpiItemSelect.Id }; int count = await UOW.KpiItemRepository.Count(KpiItemFilter); if (count == 0) { KpiItem.AddError(nameof(KpiItemValidator), nameof(KpiItem.Id), ErrorCode.IdNotExisted); } return(count == 1); }
public async Task <KpiItem> Update(KpiItem KpiItem) { if (!await KpiItemValidator.Update(KpiItem)) { return(KpiItem); } try { var oldData = await UOW.KpiItemRepository.Get(KpiItem.Id); await UOW.Begin(); await UOW.KpiItemRepository.Update(KpiItem); await UOW.Commit(); var newData = await UOW.KpiItemRepository.Get(KpiItem.Id); await Logging.CreateAuditLog(newData, oldData, nameof(KpiItemService)); return(newData); } catch (Exception ex) { await UOW.Rollback(); if (ex.InnerException == null) { await Logging.CreateSystemLog(ex, nameof(KpiItemService)); throw new MessageException(ex); } else { await Logging.CreateSystemLog(ex.InnerException, nameof(KpiItemService)); throw new MessageException(ex.InnerException); } } }
public async Task <bool> Update(KpiItem KpiItem) { KpiItemDAO KpiItemDAO = DataContext.KpiItem.Where(x => x.Id == KpiItem.Id).FirstOrDefault(); if (KpiItemDAO == null) { return(false); } KpiItemDAO.Id = KpiItem.Id; KpiItemDAO.OrganizationId = KpiItem.OrganizationId; KpiItemDAO.KpiYearId = KpiItem.KpiYearId; KpiItemDAO.KpiPeriodId = KpiItem.KpiPeriodId; KpiItemDAO.StatusId = KpiItem.StatusId; KpiItemDAO.EmployeeId = KpiItem.EmployeeId; KpiItemDAO.CreatorId = KpiItem.CreatorId; KpiItemDAO.UpdatedAt = StaticParams.DateTimeNow; await DataContext.SaveChangesAsync(); await SaveReference(KpiItem); return(true); }
public KpiItem_KpiItemDTO(KpiItem KpiItem) { this.Id = KpiItem.Id; this.OrganizationId = KpiItem.OrganizationId; this.KpiPeriodId = KpiItem.KpiPeriodId; this.KpiYearId = KpiItem.KpiYearId; this.StatusId = KpiItem.StatusId; this.EmployeeId = KpiItem.EmployeeId; this.CreatorId = KpiItem.CreatorId; this.ReadOnly = KpiItem.ReadOnly; this.Creator = KpiItem.Creator == null ? null : new KpiItem_AppUserDTO(KpiItem.Creator); this.Employee = KpiItem.Employee == null ? null : new KpiItem_AppUserDTO(KpiItem.Employee); this.KpiPeriod = KpiItem.KpiPeriod == null ? null : new KpiItem_KpiPeriodDTO(KpiItem.KpiPeriod); this.KpiYear = KpiItem.KpiYear == null ? null : new KpiItem_KpiYearDTO(KpiItem.KpiYear); this.Organization = KpiItem.Organization == null ? null : new KpiItem_OrganizationDTO(KpiItem.Organization); this.Status = KpiItem.Status == null ? null : new KpiItem_StatusDTO(KpiItem.Status); this.KpiItemContents = KpiItem.KpiItemContents?.Select(x => new KpiItem_KpiItemContentDTO(x)).ToList(); this.EmployeeIds = KpiItem.EmployeeIds; // to do this.CreatedAt = KpiItem.CreatedAt; this.UpdatedAt = KpiItem.UpdatedAt; this.Errors = KpiItem.Errors; }
public async Task <bool> Create(KpiItem KpiItem) { KpiItemDAO KpiItemDAO = new KpiItemDAO(); KpiItemDAO.Id = KpiItem.Id; KpiItemDAO.OrganizationId = KpiItem.OrganizationId; KpiItemDAO.KpiYearId = KpiItem.KpiYearId; KpiItemDAO.KpiPeriodId = KpiItem.KpiPeriodId; KpiItemDAO.StatusId = KpiItem.StatusId; KpiItemDAO.EmployeeId = KpiItem.EmployeeId; KpiItemDAO.CreatorId = KpiItem.CreatorId; KpiItemDAO.CreatedAt = StaticParams.DateTimeNow; KpiItemDAO.UpdatedAt = StaticParams.DateTimeNow; KpiItemDAO.RowId = Guid.NewGuid(); DataContext.KpiItem.Add(KpiItemDAO); await DataContext.SaveChangesAsync(); KpiItem.Id = KpiItemDAO.Id; KpiItem.RowId = KpiItemDAO.RowId; await SaveReference(KpiItem); return(true); }
private async Task <bool> ValidateValue(KpiItem KpiItem) { bool flag = false; if (KpiItem.KpiItemContents != null) { foreach (var KpiItemContent in KpiItem.KpiItemContents) { foreach (var item in KpiItemContent.KpiItemContentKpiCriteriaItemMappings) { if (item.Value != null) { flag = true; } } } } if (!flag) { KpiItem.AddError(nameof(KpiItemValidator), nameof(KpiItem.Id), ErrorCode.ValueCannotBeNull); } return(KpiItem.IsValidated); }
public async Task <KpiItem> Delete(KpiItem KpiItem) { if (!await KpiItemValidator.Delete(KpiItem)) { return(KpiItem); } try { await UOW.Begin(); await UOW.KpiItemRepository.Delete(KpiItem); await UOW.Commit(); await Logging.CreateAuditLog(new { }, KpiItem, nameof(KpiItemService)); return(KpiItem); } catch (Exception ex) { await UOW.Rollback(); if (ex.InnerException == null) { await Logging.CreateSystemLog(ex, nameof(KpiItemService)); throw new MessageException(ex); } else { await Logging.CreateSystemLog(ex.InnerException, nameof(KpiItemService)); throw new MessageException(ex.InnerException); } } }
public async Task <KpiItem> Get(long Id) { KpiItem KpiItem = await DataContext.KpiItem.AsNoTracking() .Where(x => x.Id == Id).Select(x => new KpiItem() { CreatedAt = x.CreatedAt, UpdatedAt = x.UpdatedAt, Id = x.Id, OrganizationId = x.OrganizationId, KpiYearId = x.KpiYearId, KpiPeriodId = x.KpiPeriodId, StatusId = x.StatusId, EmployeeId = x.EmployeeId, CreatorId = x.CreatorId, Creator = x.Creator == null ? null : new AppUser { Id = x.Creator.Id, Username = x.Creator.Username, DisplayName = x.Creator.DisplayName, Address = x.Creator.Address, Email = x.Creator.Email, Phone = x.Creator.Phone, Department = x.Creator.Department, OrganizationId = x.Creator.OrganizationId, StatusId = x.Creator.StatusId, Avatar = x.Creator.Avatar, SexId = x.Creator.SexId, Birthday = x.Creator.Birthday, }, Employee = x.Employee == null ? null : new AppUser { Id = x.Employee.Id, Username = x.Employee.Username, DisplayName = x.Employee.DisplayName, Address = x.Employee.Address, Email = x.Employee.Email, Phone = x.Employee.Phone, Department = x.Employee.Department, OrganizationId = x.Employee.OrganizationId, StatusId = x.Employee.StatusId, Avatar = x.Employee.Avatar, SexId = x.Employee.SexId, Birthday = x.Employee.Birthday, }, KpiYear = x.KpiYear == null ? null : new KpiYear { Id = x.KpiYear.Id, Code = x.KpiYear.Code, Name = x.KpiYear.Name, }, KpiPeriod = x.KpiPeriod == null ? null : new KpiPeriod { Id = x.KpiPeriod.Id, Code = x.KpiPeriod.Code, Name = x.KpiPeriod.Name, }, Organization = x.Organization == null ? null : new Organization { Id = x.Organization.Id, Code = x.Organization.Code, Name = x.Organization.Name, ParentId = x.Organization.ParentId, Path = x.Organization.Path, Level = x.Organization.Level, StatusId = x.Organization.StatusId, Phone = x.Organization.Phone, Email = x.Organization.Email, Address = x.Organization.Address, }, Status = x.Status == null ? null : new Status { Id = x.Status.Id, Code = x.Status.Code, Name = x.Status.Name, }, }).FirstOrDefaultAsync(); if (KpiItem == null) { return(null); } KpiItem.KpiItemContents = await DataContext.KpiItemContent.AsNoTracking() .Where(x => x.KpiItemId == KpiItem.Id) .Select(x => new KpiItemContent { Id = x.Id, KpiItemId = x.KpiItemId, ItemId = x.ItemId, RowId = x.RowId, Item = new Item { Id = x.Item.Id, ProductId = x.Item.ProductId, Code = x.Item.Code, Name = x.Item.Name, ScanCode = x.Item.ScanCode, SalePrice = x.Item.SalePrice, RetailPrice = x.Item.RetailPrice, StatusId = x.Item.StatusId, }, }).ToListAsync(); var KpiItemContentIds = KpiItem.KpiItemContents.Select(x => x.Id).ToList(); List <KpiItemContentKpiCriteriaItemMapping> KpiItemContentKpiItemCriteriaMappings = await DataContext.KpiItemContentKpiCriteriaItemMapping .Where(x => KpiItemContentIds.Contains(x.KpiItemContentId)) .Select(x => new KpiItemContentKpiCriteriaItemMapping { KpiCriteriaItemId = x.KpiCriteriaItemId, KpiItemContentId = x.KpiItemContentId, Value = x.Value, KpiItemContent = new KpiItemContent { Id = x.KpiItemContent.Id, ItemId = x.KpiItemContent.ItemId, KpiItemId = x.KpiItemContent.KpiItemId, Item = new Item { Id = x.KpiItemContent.Item.Id, ProductId = x.KpiItemContent.Item.ProductId, Code = x.KpiItemContent.Item.Code, Name = x.KpiItemContent.Item.Name, ScanCode = x.KpiItemContent.Item.ScanCode, SalePrice = x.KpiItemContent.Item.SalePrice, RetailPrice = x.KpiItemContent.Item.RetailPrice, StatusId = x.KpiItemContent.Item.StatusId, }, } }).ToListAsync(); foreach (KpiItemContent KpiItemContent in KpiItem.KpiItemContents) { KpiItemContent.KpiItemContentKpiCriteriaItemMappings = KpiItemContentKpiItemCriteriaMappings.Where(x => x.KpiItemContentId == KpiItemContent.Id).ToList(); } return(KpiItem); }