Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
 public async Task <bool> Delete(KpiItem KpiItem)
 {
     if (await ValidateId(KpiItem))
     {
     }
     return(KpiItem.IsValidated);
 }
Example #4
0
        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);
        }
Example #5
0
        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);
        }
Example #6
0
 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);
 }
Example #7
0
        public async Task <KpiItem> Get(long Id)
        {
            KpiItem KpiItem = await UOW.KpiItemRepository.Get(Id);

            if (KpiItem == null)
            {
                return(null);
            }
            return(KpiItem);
        }
Example #8
0
 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);
 }
Example #9
0
        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);
        }
Example #10
0
        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);
        }
Example #11
0
        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);
                }
            }
        }
Example #12
0
        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);
            }
        }
Example #13
0
        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);
        }
Example #14
0
        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);
        }
Example #15
0
        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);
        }
Example #16
0
        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);
                }
            }
        }
Example #17
0
        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);
        }
Example #18
0
 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;
 }
Example #19
0
        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);
        }
Example #20
0
        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);
        }
Example #21
0
        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);
                }
            }
        }
Example #22
0
        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);
        }