1
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
public class OnboardingPositionPageInput : BasePageInput
|
||||
{
|
||||
public long? CompanyId { get; set; }
|
||||
public virtual string PositionName { get; set; }
|
||||
public string Status { get; set; }
|
||||
}
|
||||
|
||||
public class OnboardingPositionAddInput : ObPosition
|
||||
{
|
||||
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "岗位编码不能为空")]
|
||||
public override string PositionCode { get; set; }
|
||||
|
||||
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "岗位名称不能为空")]
|
||||
public override string PositionName { get; set; }
|
||||
}
|
||||
|
||||
public class OnboardingPositionEditInput : OnboardingPositionAddInput
|
||||
{
|
||||
[IdNotNull(ErrorMessage = "岗位Id不能为空")]
|
||||
public override long Id { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
public interface IOnboardingPositionService : ITransient
|
||||
{
|
||||
Task<SqlSugarPagedList<ObPosition>> Page(OnboardingPositionPageInput input);
|
||||
Task<List<ObPosition>> ListEnabled(long companyId);
|
||||
Task<ObPosition> Detail(BaseIdInput input);
|
||||
Task Add(OnboardingPositionAddInput input);
|
||||
Task Edit(OnboardingPositionEditInput input);
|
||||
Task Delete(BaseIdListInput input);
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
public class OnboardingPositionService : DbRepository<ObPosition>, IOnboardingPositionService
|
||||
{
|
||||
public async Task<SqlSugarPagedList<ObPosition>> Page(OnboardingPositionPageInput input)
|
||||
{
|
||||
return await Context.Queryable<ObPosition>()
|
||||
.WhereIF(input.CompanyId.HasValue, it => it.CompanyId == input.CompanyId.Value)
|
||||
.WhereIF(!string.IsNullOrWhiteSpace(input.PositionName), it => it.PositionName.Contains(input.PositionName) || it.PositionCode.Contains(input.PositionName))
|
||||
.WhereIF(!string.IsNullOrWhiteSpace(input.Status), it => it.Status == input.Status)
|
||||
.OrderByIF(!string.IsNullOrWhiteSpace(input.SortField), $"{input.SortField} {input.SortOrder}")
|
||||
.OrderBy(it => it.PositionName)
|
||||
.ToPagedListAsync(input.PageNum, input.PageSize);
|
||||
}
|
||||
|
||||
public Task<List<ObPosition>> ListEnabled(long companyId) => Context.Queryable<ObPosition>().Where(it => it.CompanyId == companyId && it.Status == "enable").OrderBy(it => it.PositionName).ToListAsync();
|
||||
|
||||
public async Task<ObPosition> Detail(BaseIdInput input) => await GetByIdAsync(input.Id) ?? throw Oops.Bah("岗位不存在");
|
||||
|
||||
public async Task Add(OnboardingPositionAddInput input)
|
||||
{
|
||||
await EnsureCompanyExists(input.CompanyId);
|
||||
await EnsureCodeUnique(input.CompanyId, input.PositionCode, 0);
|
||||
await InsertAsync(input.Adapt<ObPosition>());
|
||||
}
|
||||
|
||||
public async Task Edit(OnboardingPositionEditInput input)
|
||||
{
|
||||
await Detail(new BaseIdInput { Id = input.Id });
|
||||
await EnsureCompanyExists(input.CompanyId);
|
||||
await EnsureCodeUnique(input.CompanyId, input.PositionCode, input.Id);
|
||||
await UpdateAsync(input.Adapt<ObPosition>());
|
||||
}
|
||||
|
||||
public async Task Delete(BaseIdListInput input)
|
||||
{
|
||||
if (input.Ids.Count == 0) return;
|
||||
if (await Context.Queryable<ObOnboardingTask>().AnyAsync(it => input.Ids.Contains(it.PositionId))) throw Oops.Bah("岗位已有入职任务,不能删除");
|
||||
if (await Context.Queryable<ObEmployee>().AnyAsync(it => input.Ids.Contains(it.PositionId))) throw Oops.Bah("岗位已有正式员工,不能删除");
|
||||
await DeleteByIdsAsync(input.Ids.Cast<object>().ToArray());
|
||||
}
|
||||
|
||||
private async Task EnsureCompanyExists(long companyId)
|
||||
{
|
||||
if (!await Context.Queryable<ObCompany>().AnyAsync(it => it.Id == companyId)) throw Oops.Bah("所属公司不存在或已删除");
|
||||
}
|
||||
|
||||
private async Task EnsureCodeUnique(long companyId, string code, long id)
|
||||
{
|
||||
if (await Context.Queryable<ObPosition>().AnyAsync(it => it.CompanyId == companyId && it.PositionCode == code && it.Id != id)) throw Oops.Bah("该公司下岗位编码已存在");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user