Exemplo n.º 1
0
        public async Task <string> Create(CreatePositionInput input)
        {
            input.CheckDataAnnotations().CheckValidResult();
            await _positionDomainService.CreatePosition(input);

            return("新增职位信息成功");
        }
Exemplo n.º 2
0
        public async Task CreateDepartment(CreateDepartmentInput input)
        {
            var parentOrg = await _organizationRepository.SingleOrDefaultAsync(p => p.Id == input.ParentId);

            if (parentOrg == null)
            {
                throw new BusinessException($"不存在Id为{input.ParentId}的上级信息");
            }

            if (input.DeptTypeId == 0)
            {
                throw new BusinessException($"请选择部门类型");
            }
            var workbookAppServiceProxy = GetService <IWordbookAppService>();
            var checkDeptTypeResult     = await workbookAppServiceProxy.Check(new CheckWordbookInput()
            {
                WordbookCode = SystemPresetWordbookCode.Organization.DeptType, WordbookItemId = input.DeptTypeId
            });

            if (!checkDeptTypeResult)
            {
                throw new BusinessException($"部门类型Id不正确,请选择正确的部门类型");
            }
            var department = input.MapTo <Department>();
            var orgInfo    = input.MapTo <Organization>();

            var orgCode     = string.Empty;
            var maxLevelOrg = (await _organizationRepository.GetAllAsync(p => p.ParentId == parentOrg.Id)).OrderByDescending(p => p.Id).FirstOrDefault();

            if (maxLevelOrg == null)
            {
                orgCode = "1".PadLeft(HeroConstants.CodeRuleRestrain.CodeCoverBit, HeroConstants.CodeRuleRestrain.CodeCoverSymbol);
            }
            else
            {
                orgCode = (Convert.ToInt32(maxLevelOrg.Code.Split(HeroConstants.CodeRuleRestrain.CodeCoverSymbol).Last().TrimStart('0')) + 1).ToString().PadLeft(HeroConstants.CodeRuleRestrain.CodeCoverBit, HeroConstants.CodeRuleRestrain.CodeCoverSymbol);
            }

            orgInfo.Level = parentOrg.Level + 1;
            orgInfo.Code  = parentOrg.Code + HeroConstants.CodeRuleRestrain.CodeSeparator + orgCode;

            await UnitOfWorkAsync(async (conn, trans) =>
            {
                var orgId        = await _organizationRepository.InsertAndGetIdAsync(orgInfo, conn, trans);
                department.OrgId = orgId;
                var deptId       = await _departmentRepository.InsertAndGetIdAsync(department, conn, trans);
                if (input.Postions != null && input.Postions.Any())
                {
                    if (input.Postions.Count(p => p.IsLeadingOfficial) > 1)
                    {
                        throw new BusinessException($"部门只允许设置一个负责人岗位");
                    }
                    var sort = 1;
                    foreach (var position in input.Postions)
                    {
                        position.DeptId = deptId;
                        position.CheckDataAnnotations().CheckValidResult();
                        var positionCode = orgInfo.Code + HeroConstants.CodeRuleRestrain.CodeSeparator + sort.ToString().PadLeft(HeroConstants.CodeRuleRestrain.CodeCoverBit, HeroConstants.CodeRuleRestrain.CodeCoverSymbol);
                        await _positionDomainService.CreatePosition(position, positionCode, conn, trans);
                        sort++;
                    }
                }
            }, Connection);
        }