Ejemplo n.º 1
0
        public async Task <UpdateDepartmentOutput> UpdateDepartment(UpdateDepartmentInput input)
        {
            var department = await _departmentRepository.SingleOrDefaultAsync(p => p.Id == input.Id);

            if (department == null)
            {
                throw new BusinessException($"系统中不存在Id为{input.Id}的部门信息");
            }
            var orgInfo = await _organizationRepository.SingleOrDefaultAsync(p => p.Id == department.OrgId);

            if (orgInfo == null)
            {
                throw new BusinessException($"系统中不存在Id为{department.Id}的部门信息");
            }

            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不正确,请选择正确的部门类型");
            }
            department = input.MapTo(department);
            orgInfo    = input.MapTo(orgInfo);
            Debug.Assert(_session.UserId.HasValue, "登录用户的UserId不会为空");
            await UnitOfWorkAsync(async (conn, trans) => {
                await _organizationRepository.UpdateAsync(orgInfo, conn, trans);
                await _departmentRepository.UpdateAsync(department, conn, trans);

                if (input.Positions != null && input.Positions.Any())
                {
                    if (input.Positions.Count(p => p.IsLeadingOfficial) > 1)
                    {
                        throw new BusinessException($"部门只允许设置一个负责人岗位");
                    }
                    var positionIds       = input.Positions.Where(p => p.Id != 0 && p.Id.HasValue).Select(p => p.Id);
                    var deletePositionSql = "UPDATE `Position` SET IsDeleted=@IsDeleted,DeleteBy=@DeleteBy,DeleteTime=@DeleteTime WHERE DeptId=@DeptId AND Id NOT in @Id";
                    await conn.ExecuteAsync(deletePositionSql, new { IsDeleted = 1, DeleteBy = _session.UserId.Value, DeleteTime = DateTime.Now, DeptId = department.Id, @Id = positionIds }, trans);
                    var sort = 1;
                    foreach (var positionInput in input.Positions)
                    {
                        var positionCode = orgInfo.Code + HeroConstants.CodeRuleRestrain.CodeSeparator + sort.ToString().PadLeft(HeroConstants.CodeRuleRestrain.CodeCoverBit, HeroConstants.CodeRuleRestrain.CodeCoverSymbol);
                        if (positionInput.Id.HasValue && positionInput.Id != 0)
                        {
                            var position = await _positionRepository.GetAsync(positionInput.Id.Value);
                            position.CheckDataAnnotations().CheckValidResult();
                            position      = positionInput.MapTo(position);
                            position.Code = positionCode;
                            await _positionRepository.UpdateAsync(position, conn, trans);
                        }
                        else
                        {
                            var position    = positionInput.MapTo <Position>();
                            position.DeptId = department.Id;
                            position.CheckDataAnnotations().CheckValidResult();
                            position.Code = positionCode;
                            await _positionRepository.InsertAsync(position, conn, trans);
                        }

                        sort++;
                    }
                }
            }, Connection);

            return(new UpdateDepartmentOutput()
            {
                OrgId = orgInfo.Id,
                DeptId = department.Id,
                Tips = "更新部门信息成功"
            });
        }
Ejemplo n.º 2
0
 public async Task <DepartmentDto> UpdateDepartment([FromBody] UpdateDepartmentInput input)
 {
     return(await _DepartmentAppService.UpdateDepartmentAsync(input));
 }
Ejemplo n.º 3
0
 //[ValidateAntiForgeryToken]
 public ActionResult Update(UpdateDepartmentInput input)
 {
     this.CreateService <IDepartmentAppService>().Update(input);
     return(this.UpdateSuccessMsg());
 }
Ejemplo n.º 4
0
 public async Task <UpdateDepartmentOutput> Update(UpdateDepartmentInput input)
 {
     input.CheckDataAnnotations().CheckValidResult();
     return(await _departmentDomainService.UpdateDepartment(input));
 }
Ejemplo n.º 5
0
        public async Task <UpdateDepartmentOutput> UpdateDepartment(UpdateDepartmentInput input)
        {
            var department = await _departmentRepository.SingleOrDefaultAsync(p => p.Id == input.Id);

            if (department == null)
            {
                throw new BusinessException($"系统中不存在Id为{input.Id}的部门信息");
            }
            var orgInfo = await _organizationRepository.SingleOrDefaultAsync(p => p.Id == department.OrgId);

            if (orgInfo == null)
            {
                throw new BusinessException($"系统中不存在Id为{department.Id}的部门信息");
            }

            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不正确,请选择正确的部门类型");
            }
            department = input.MapTo(department);
            orgInfo    = input.MapTo(orgInfo);

            await UnitOfWorkAsync(async (conn, trans) => {
                await _organizationRepository.UpdateAsync(orgInfo, conn, trans);
                await _departmentRepository.UpdateAsync(department, conn, trans);
                await _positionRepository.DeleteAsync(p => p.DeptId == department.Id, conn, trans);
                if (input.Positions != null && input.Positions.Any())
                {
                    if (input.Positions.Count(p => p.IsLeadingOfficial) > 1)
                    {
                        throw new BusinessException($"部门只允许设置一个负责人岗位");
                    }
                    var sort = 1;
                    foreach (var positionInput in input.Positions)
                    {
                        var position    = positionInput.MapTo <Position>();
                        position.DeptId = department.Id;
                        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);

            return(new UpdateDepartmentOutput()
            {
                OrgId = orgInfo.Id,
                DeptId = department.Id,
                Tips = "更新部门信息成功"
            });
        }