相关bug调整

This commit is contained in:
fuenmao
2026-08-24 16:36:47 +08:00
parent 22a7df5bec
commit 0931e1f343
6 changed files with 57 additions and 9 deletions
@@ -5,6 +5,11 @@ namespace SimpleAdmin.Application;
/// </summary> /// </summary>
public class OnboardingCompanyPageInput : BasePageInput public class OnboardingCompanyPageInput : BasePageInput
{ {
/// <summary>
/// 公司业务编码。
/// </summary>
public virtual string CompanyCode { get; set; }
/// <summary> /// <summary>
/// 公司名称。 /// 公司名称。
/// </summary> /// </summary>
@@ -11,9 +11,8 @@ public class OnboardingCompanyService : DbRepository<ObCompany>, IOnboardingComp
public async Task<SqlSugarPagedList<ObCompany>> Page(OnboardingCompanyPageInput input) public async Task<SqlSugarPagedList<ObCompany>> Page(OnboardingCompanyPageInput input)
{ {
return await Context.Queryable<ObCompany>() return await Context.Queryable<ObCompany>()
.WhereIF( .WhereIF(!string.IsNullOrWhiteSpace(input.CompanyCode), it => it.CompanyCode.Contains(input.CompanyCode))
!string.IsNullOrWhiteSpace(input.CompanyName), .WhereIF(!string.IsNullOrWhiteSpace(input.CompanyName), it => it.CompanyName.Contains(input.CompanyName))
it => it.CompanyName.Contains(input.CompanyName) || it.CompanyCode.Contains(input.CompanyName))
.WhereIF(!string.IsNullOrWhiteSpace(input.Status), it => it.Status == input.Status) .WhereIF(!string.IsNullOrWhiteSpace(input.Status), it => it.Status == input.Status)
.OrderByIF(!string.IsNullOrWhiteSpace(input.SortField), $"{input.SortField} {input.SortOrder}") .OrderByIF(!string.IsNullOrWhiteSpace(input.SortField), $"{input.SortField} {input.SortOrder}")
.OrderBy(it => it.CreateTime) .OrderBy(it => it.CreateTime)
@@ -27,8 +27,12 @@ public class OnboardingEntryConfigService : IOnboardingEntryConfigService
/// </summary> /// </summary>
public async Task SaveFormField(OnboardingFormFieldSaveInput input) public async Task SaveFormField(OnboardingFormFieldSaveInput input)
{ {
var fieldCodeExists = await _db.Queryable<ObFormField>() var fieldCodeQuery = _db.Queryable<ObFormField>()
.AnyAsync(x => x.FieldCode == input.FieldCode && x.Id != input.Id); .Where(x => x.FieldCode == input.FieldCode);
if (input.Id.HasValue)
fieldCodeQuery = fieldCodeQuery.Where(x => x.Id != input.Id.Value);
var fieldCodeExists = await fieldCodeQuery.AnyAsync();
if (fieldCodeExists) if (fieldCodeExists)
throw Oops.Bah("字段编码已存在"); throw Oops.Bah("字段编码已存在");
@@ -38,7 +42,7 @@ public class OnboardingEntryConfigService : IOnboardingEntryConfigService
FieldCode = input.FieldCode, FieldCode = input.FieldCode,
FieldName = input.FieldName, FieldName = input.FieldName,
DataType = input.DataType, DataType = input.DataType,
OptionsJson = input.OptionsJson, OptionsJson = NormalizeOptionsJson(input.OptionsJson),
ValidationRule = input.ValidationRule, ValidationRule = input.ValidationRule,
Placeholder = input.Placeholder, Placeholder = input.Placeholder,
Status = input.Status Status = input.Status
@@ -57,6 +61,27 @@ public class OnboardingEntryConfigService : IOnboardingEntryConfigService
await _db.Insertable(entity).ExecuteCommandAsync(); await _db.Insertable(entity).ExecuteCommandAsync();
} }
/// <summary>
/// 将空白的可选项转换为 null,避免 MySQL JSON 字段写入空字符串时报错。
/// </summary>
private static string NormalizeOptionsJson(string optionsJson)
{
if (string.IsNullOrWhiteSpace(optionsJson))
return null;
var normalizedJson = optionsJson.Trim();
try
{
using var jsonDocument = global::System.Text.Json.JsonDocument.Parse(normalizedJson);
return normalizedJson;
}
catch (global::System.Text.Json.JsonException)
{
throw Oops.Bah("可选项不是有效的 JSON 格式");
}
}
/// <summary> /// <summary>
/// 删除未被填写要求引用的动态字段。 /// 删除未被填写要求引用的动态字段。
/// </summary> /// </summary>
@@ -10,6 +10,11 @@ public class OnboardingPositionPageInput : BasePageInput
/// </summary> /// </summary>
public long? CompanyId { get; set; } public long? CompanyId { get; set; }
/// <summary>
/// 岗位编码。
/// </summary>
public virtual string PositionCode { get; set; }
/// <summary> /// <summary>
/// 岗位名称。 /// 岗位名称。
/// </summary> /// </summary>
@@ -12,9 +12,8 @@ public class OnboardingPositionService : DbRepository<ObPosition>, IOnboardingPo
{ {
return await Context.Queryable<ObPosition>() return await Context.Queryable<ObPosition>()
.WhereIF(input.CompanyId.HasValue, it => it.CompanyId == input.CompanyId.Value) .WhereIF(input.CompanyId.HasValue, it => it.CompanyId == input.CompanyId.Value)
.WhereIF( .WhereIF(!string.IsNullOrWhiteSpace(input.PositionCode), it => it.PositionCode.Contains(input.PositionCode))
!string.IsNullOrWhiteSpace(input.PositionName), .WhereIF(!string.IsNullOrWhiteSpace(input.PositionName), it => it.PositionName.Contains(input.PositionName))
it => it.PositionName.Contains(input.PositionName) || it.PositionCode.Contains(input.PositionName))
.WhereIF(!string.IsNullOrWhiteSpace(input.Status), it => it.Status == input.Status) .WhereIF(!string.IsNullOrWhiteSpace(input.Status), it => it.Status == input.Status)
.OrderByIF(!string.IsNullOrWhiteSpace(input.SortField), $"{input.SortField} {input.SortOrder}") .OrderByIF(!string.IsNullOrWhiteSpace(input.SortField), $"{input.SortField} {input.SortOrder}")
.OrderBy(it => it.PositionName) .OrderBy(it => it.PositionName)
@@ -1399,6 +1399,11 @@
入职业务公司分页查询参数。 入职业务公司分页查询参数。
</summary> </summary>
</member> </member>
<member name="P:SimpleAdmin.Application.OnboardingCompanyPageInput.CompanyCode">
<summary>
公司业务编码。
</summary>
</member>
<member name="P:SimpleAdmin.Application.OnboardingCompanyPageInput.CompanyName"> <member name="P:SimpleAdmin.Application.OnboardingCompanyPageInput.CompanyName">
<summary> <summary>
公司名称。 公司名称。
@@ -2327,6 +2332,11 @@
新增或编辑动态入职字段。 新增或编辑动态入职字段。
</summary> </summary>
</member> </member>
<member name="M:SimpleAdmin.Application.OnboardingEntryConfigService.NormalizeOptionsJson(System.String)">
<summary>
将空白的可选项转换为 null,避免 MySQL JSON 字段写入空字符串时报错。
</summary>
</member>
<member name="M:SimpleAdmin.Application.OnboardingEntryConfigService.DeleteFormFields(SimpleAdmin.Core.BaseIdListInput)"> <member name="M:SimpleAdmin.Application.OnboardingEntryConfigService.DeleteFormFields(SimpleAdmin.Core.BaseIdListInput)">
<summary> <summary>
删除未被填写要求引用的动态字段。 删除未被填写要求引用的动态字段。
@@ -2457,6 +2467,11 @@
入职业务公司 Id。 入职业务公司 Id。
</summary> </summary>
</member> </member>
<member name="P:SimpleAdmin.Application.OnboardingPositionPageInput.PositionCode">
<summary>
岗位编码。
</summary>
</member>
<member name="P:SimpleAdmin.Application.OnboardingPositionPageInput.PositionName"> <member name="P:SimpleAdmin.Application.OnboardingPositionPageInput.PositionName">
<summary> <summary>
岗位名称。 岗位名称。