1111
This commit is contained in:
@@ -42,6 +42,11 @@ public class ObTaskContractVariable : BaseEntity
|
||||
/// </summary>
|
||||
public string DataType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 变量在任务合同中的展示顺序,创建任务时从模板变量复制并固定。
|
||||
/// </summary>
|
||||
public int SortCode { get; set; } = 100;
|
||||
|
||||
/// <summary>
|
||||
/// 合同生成时使用的最终变量值。
|
||||
/// </summary>
|
||||
|
||||
+1
@@ -53,6 +53,7 @@ public class OnboardingContractSnapshotService : IOnboardingContractSnapshotServ
|
||||
VariableName = definition.VariableName,
|
||||
VariableType = definition.VariableType,
|
||||
DataType = definition.DataType,
|
||||
SortCode = definition.SortCode ?? 100,
|
||||
VariableValue = preserveManual
|
||||
? old.VariableValue
|
||||
: ResolveValue(definition, employeeInfo, dynamicValueMap, company, task),
|
||||
|
||||
+3
-1
@@ -411,9 +411,11 @@ public class OnboardingContractTemplateService : DbRepository<ObContractTemplate
|
||||
EmployeeField = variableType is ContractVariableType.Employee or ContractVariableType.Company
|
||||
? sourceField
|
||||
: null,
|
||||
DefaultValue = def?.DefaultValue,
|
||||
Required = def?.Required ?? true,
|
||||
HrEditable = variableType == ContractVariableType.Contract,
|
||||
SortCode = (index + 1) * 10,
|
||||
// 合同版本首次识别时继承全局变量字典排序;未登记排序时才使用识别顺序兜底。
|
||||
SortCode = def?.SortCode ?? (index + 1) * 10,
|
||||
Remark = def?.Remark
|
||||
};
|
||||
}
|
||||
|
||||
+5
@@ -103,6 +103,11 @@ public class OnboardingTaskContractVariableItemOutput
|
||||
/// </summary>
|
||||
public string DataType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 任务创建时保存的变量展示顺序。
|
||||
/// </summary>
|
||||
public int SortCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 任务合同变量最终值。
|
||||
/// </summary>
|
||||
|
||||
+3
-1
@@ -43,7 +43,8 @@ public class OnboardingTaskContractVariableService : IOnboardingTaskContractVari
|
||||
|
||||
Variables = variables
|
||||
.Where(variable => variable.TaskContractId == contract.Id)
|
||||
.OrderBy(variable => variable.VariableCode)
|
||||
.OrderBy(variable => variable.SortCode)
|
||||
.ThenBy(variable => variable.VariableCode)
|
||||
.Select(variable =>
|
||||
{
|
||||
var definition = definitions.FirstOrDefault(x =>
|
||||
@@ -59,6 +60,7 @@ public class OnboardingTaskContractVariableService : IOnboardingTaskContractVari
|
||||
VariableName = variable.VariableName,
|
||||
VariableType = variable.VariableType,
|
||||
DataType = variable.DataType,
|
||||
SortCode = variable.SortCode,
|
||||
VariableValue = variable.VariableValue,
|
||||
Required = definition?.Required == true,
|
||||
HrEditable = hrEditable,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
|
||||
// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
|
||||
//
|
||||
// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
|
||||
// 1.请不要删除和修改根目录下的LICENSE文件。
|
||||
@@ -183,15 +183,18 @@ public class ResourceService : DbRepository<SysResource>, IResourceService
|
||||
foreach (var controller in controllerTypes)
|
||||
{
|
||||
var apiAttribute = controller.GetCustomAttribute<ApiDescriptionSettingsAttribute>();//获取接口描述特性
|
||||
var tag = apiAttribute.Tag;//获取标签
|
||||
var tag = apiAttribute?.Tag;//获取标签
|
||||
//获取数据权限特性
|
||||
var routeAttributes = controller.GetCustomAttributes<RouteAttribute>().ToList();
|
||||
if (routeAttributes == null)
|
||||
if (routeAttributes == null || routeAttributes.Count == 0)
|
||||
continue;
|
||||
var route = routeAttributes[0];//取第一个值
|
||||
var route = routeAttributes[0];//取第一个值作为生成接口路由的基础
|
||||
var routeName = GetRouteName(controller.Name, route.Template);//赋值路由名称
|
||||
//如果路由包含在路由列表中
|
||||
if (routes.Contains(routeName))
|
||||
//如果路由包含在路由列表中,或支持前缀/多路由匹配
|
||||
var isMatched = routeAttributes.Any(ra => routes.Contains(GetRouteName(controller.Name, ra.Template)))
|
||||
|| routes.Contains(routeName)
|
||||
|| routes.Any(r => !string.IsNullOrEmpty(r) && routeName.StartsWith(r));
|
||||
if (isMatched)
|
||||
{
|
||||
//获取所有方法
|
||||
var methods = controller.GetMethods();
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using System.ComponentModel;
|
||||
namespace SimpleAdmin.Web.Core;
|
||||
|
||||
/// <summary>
|
||||
@@ -5,6 +6,7 @@ namespace SimpleAdmin.Web.Core;
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings("Application", Tag = "入职审核")]
|
||||
[Route("biz/onboarding/audit")]
|
||||
[Route("biz/onboarding/task")]
|
||||
[RolePermission]
|
||||
public class OnboardingAuditController
|
||||
{
|
||||
@@ -19,6 +21,7 @@ public class OnboardingAuditController
|
||||
/// 审核通过任务并创建正式员工档案。
|
||||
/// </summary>
|
||||
[HttpPost("approve")]
|
||||
[DisplayName("审核通过入职任务")]
|
||||
public async Task Approve([FromBody] OnboardingAuditActionInput input)
|
||||
{
|
||||
await _service.Approve(input);
|
||||
@@ -28,6 +31,7 @@ public class OnboardingAuditController
|
||||
/// 退回任务并要求候选人补充资料。
|
||||
/// </summary>
|
||||
[HttpPost("reject")]
|
||||
[DisplayName("退回修改入职任务")]
|
||||
public async Task Reject([FromBody] OnboardingAuditActionInput input)
|
||||
{
|
||||
await _service.Reject(input);
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using System.ComponentModel;
|
||||
namespace SimpleAdmin.Web.Core;
|
||||
|
||||
/// <summary>
|
||||
@@ -5,6 +6,7 @@ namespace SimpleAdmin.Web.Core;
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings("Application", Tag = "入职公司管理")]
|
||||
[Route("biz/onboarding/company")]
|
||||
[Route("biz/onboarding/setup")]
|
||||
[RolePermission]
|
||||
public class OnboardingCompanyController
|
||||
{
|
||||
@@ -19,6 +21,7 @@ public class OnboardingCompanyController
|
||||
/// 分页查询入职业务公司。
|
||||
/// </summary>
|
||||
[HttpGet("page")]
|
||||
[DisplayName("分页查询入职公司")]
|
||||
public async Task<dynamic> Page([FromQuery] OnboardingCompanyPageInput input)
|
||||
{
|
||||
return await _service.Page(input);
|
||||
@@ -28,6 +31,7 @@ public class OnboardingCompanyController
|
||||
/// 查询已启用公司列表。
|
||||
/// </summary>
|
||||
[HttpGet("list-enabled")]
|
||||
[DisplayName("查询已启用公司列表")]
|
||||
public async Task<dynamic> ListEnabled()
|
||||
{
|
||||
return await _service.ListEnabled();
|
||||
@@ -37,6 +41,7 @@ public class OnboardingCompanyController
|
||||
/// 查询公司详情。
|
||||
/// </summary>
|
||||
[HttpGet("detail")]
|
||||
[DisplayName("查询入职公司详情")]
|
||||
public async Task<dynamic> Detail([FromQuery] BaseIdInput input)
|
||||
{
|
||||
return await _service.Detail(input);
|
||||
@@ -46,6 +51,7 @@ public class OnboardingCompanyController
|
||||
/// 新增入职业务公司。
|
||||
/// </summary>
|
||||
[HttpPost("add")]
|
||||
[DisplayName("新增入职业务公司")]
|
||||
public async Task Add([FromBody] OnboardingCompanyAddInput input)
|
||||
{
|
||||
await _service.Add(input);
|
||||
@@ -55,6 +61,7 @@ public class OnboardingCompanyController
|
||||
/// 编辑入职业务公司。
|
||||
/// </summary>
|
||||
[HttpPost("edit")]
|
||||
[DisplayName("编辑入职业务公司")]
|
||||
public async Task Edit([FromBody] OnboardingCompanyEditInput input)
|
||||
{
|
||||
await _service.Edit(input);
|
||||
@@ -64,6 +71,7 @@ public class OnboardingCompanyController
|
||||
/// 删除入职业务公司。
|
||||
/// </summary>
|
||||
[HttpPost("delete")]
|
||||
[DisplayName("删除入职业务公司")]
|
||||
public async Task Delete([FromBody] BaseIdListInput input)
|
||||
{
|
||||
await _service.Delete(input);
|
||||
|
||||
+3
@@ -1,3 +1,4 @@
|
||||
using System.ComponentModel;
|
||||
namespace SimpleAdmin.Web.Core;
|
||||
|
||||
/// <summary>
|
||||
@@ -5,6 +6,7 @@ namespace SimpleAdmin.Web.Core;
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings("Application", Tag = "入职合同文件")]
|
||||
[Route("biz/onboarding/contract-document")]
|
||||
[Route("biz/onboarding/task")]
|
||||
[RolePermission]
|
||||
public class OnboardingContractDocumentController
|
||||
{
|
||||
@@ -20,6 +22,7 @@ public class OnboardingContractDocumentController
|
||||
/// 生成入职合同文件
|
||||
/// </summary>
|
||||
[HttpPost("generate")]
|
||||
[DisplayName("手动生成合同文件")]
|
||||
public async Task<long> Generate(
|
||||
[FromBody] OnboardingGenerateContractInput input)
|
||||
{
|
||||
|
||||
+10
@@ -1,3 +1,4 @@
|
||||
using System.ComponentModel;
|
||||
namespace SimpleAdmin.Web.Core;
|
||||
|
||||
/// <summary>
|
||||
@@ -5,6 +6,7 @@ namespace SimpleAdmin.Web.Core;
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings("Application", Tag = "入职合同模板")]
|
||||
[Route("biz/onboarding/contract-template")]
|
||||
[Route("biz/onboarding/contract")]
|
||||
[RolePermission]
|
||||
public class OnboardingContractTemplateController
|
||||
{
|
||||
@@ -25,6 +27,7 @@ public class OnboardingContractTemplateController
|
||||
[HttpPost("file/upload-docx")]
|
||||
[Consumes("multipart/form-data")]
|
||||
[RequestSizeLimit(20 * 1024 * 1024)]
|
||||
[DisplayName("上传合同DOCX模板")]
|
||||
public async Task<long> UploadDocx([FromForm] IFormFile file)
|
||||
{
|
||||
if (file == null || file.Length == 0)
|
||||
@@ -41,6 +44,7 @@ public class OnboardingContractTemplateController
|
||||
/// 分页查询合同模板。
|
||||
/// </summary>
|
||||
[HttpGet("page")]
|
||||
[DisplayName("分页查询合同模板")]
|
||||
public async Task<dynamic> Page([FromQuery] OnboardingContractTemplatePageInput input)
|
||||
{
|
||||
return await _service.Page(input);
|
||||
@@ -50,6 +54,7 @@ public class OnboardingContractTemplateController
|
||||
/// 查询合同模板详情。
|
||||
/// </summary>
|
||||
[HttpGet("detail")]
|
||||
[DisplayName("查询合同模板详情")]
|
||||
public async Task<dynamic> Detail([FromQuery] BaseIdInput input)
|
||||
{
|
||||
return await _service.Detail(input);
|
||||
@@ -68,6 +73,7 @@ public class OnboardingContractTemplateController
|
||||
/// 新增合同模板。
|
||||
/// </summary>
|
||||
[HttpPost("add")]
|
||||
[DisplayName("新增合同业务模板")]
|
||||
public async Task Add([FromBody] OnboardingContractTemplateAddInput input)
|
||||
{
|
||||
await _service.Add(input);
|
||||
@@ -77,6 +83,7 @@ public class OnboardingContractTemplateController
|
||||
/// 编辑合同模板。
|
||||
/// </summary>
|
||||
[HttpPost("edit")]
|
||||
[DisplayName("编辑合同业务模板")]
|
||||
public async Task Edit([FromBody] OnboardingContractTemplateEditInput input)
|
||||
{
|
||||
await _service.Edit(input);
|
||||
@@ -86,6 +93,7 @@ public class OnboardingContractTemplateController
|
||||
/// 删除合同模板。
|
||||
/// </summary>
|
||||
[HttpPost("delete")]
|
||||
[DisplayName("删除合同业务模板")]
|
||||
public async Task Delete([FromBody] BaseIdListInput input)
|
||||
{
|
||||
await _service.Delete(input);
|
||||
@@ -95,6 +103,7 @@ public class OnboardingContractTemplateController
|
||||
/// 分页查询合同模板版本。
|
||||
/// </summary>
|
||||
[HttpGet("version/page")]
|
||||
[DisplayName("分页查询合同版本")]
|
||||
public async Task<dynamic> VersionPage([FromQuery] OnboardingContractVersionPageInput input)
|
||||
{
|
||||
return await _service.VersionPage(input);
|
||||
@@ -131,6 +140,7 @@ public class OnboardingContractTemplateController
|
||||
/// 分页查询模板变量。
|
||||
/// </summary>
|
||||
[HttpGet("variable/page")]
|
||||
[DisplayName("分页查询合同变量")]
|
||||
public async Task<dynamic> VariablePage([FromQuery] OnboardingTemplateVariablePageInput input)
|
||||
{
|
||||
return await _service.VariablePage(input);
|
||||
|
||||
+8
@@ -1,3 +1,4 @@
|
||||
using System.ComponentModel;
|
||||
namespace SimpleAdmin.Web.Core;
|
||||
|
||||
/// <summary>
|
||||
@@ -5,6 +6,7 @@
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings("Application", Tag = "入职部门管理")]
|
||||
[Route("biz/onboarding/department")]
|
||||
[Route("biz/onboarding/setup")]
|
||||
[RolePermission]
|
||||
public class OnboardingDepartmentController
|
||||
{
|
||||
@@ -19,6 +21,7 @@ public class OnboardingDepartmentController
|
||||
/// 分页查询入职业务部门。
|
||||
/// </summary>
|
||||
[HttpGet("page")]
|
||||
[DisplayName("分页查询入职部门")]
|
||||
public async Task<dynamic> Page([FromQuery] OnboardingDepartmentPageInput input)
|
||||
{
|
||||
return await _service.Page(input);
|
||||
@@ -28,6 +31,7 @@ public class OnboardingDepartmentController
|
||||
/// 查询指定公司的已启用部门。
|
||||
/// </summary>
|
||||
[HttpGet("list-enabled")]
|
||||
[DisplayName("查询已启用部门列表")]
|
||||
public async Task<dynamic> ListEnabled([FromQuery] long companyId)
|
||||
{
|
||||
return await _service.ListEnabled(companyId);
|
||||
@@ -37,6 +41,7 @@ public class OnboardingDepartmentController
|
||||
/// 查询部门详情。
|
||||
/// </summary>
|
||||
[HttpGet("detail")]
|
||||
[DisplayName("查询入职部门详情")]
|
||||
public async Task<dynamic> Detail([FromQuery] BaseIdInput input)
|
||||
{
|
||||
return await _service.Detail(input);
|
||||
@@ -46,6 +51,7 @@ public class OnboardingDepartmentController
|
||||
/// 新增入职业务部门。
|
||||
/// </summary>
|
||||
[HttpPost("add")]
|
||||
[DisplayName("新增入职业务部门")]
|
||||
public async Task Add([FromBody] OnboardingDepartmentAddInput input)
|
||||
{
|
||||
await _service.Add(input);
|
||||
@@ -55,6 +61,7 @@ public class OnboardingDepartmentController
|
||||
/// 编辑入职业务部门。
|
||||
/// </summary>
|
||||
[HttpPost("edit")]
|
||||
[DisplayName("编辑入职业务部门")]
|
||||
public async Task Edit([FromBody] OnboardingDepartmentEditInput input)
|
||||
{
|
||||
await _service.Edit(input);
|
||||
@@ -64,6 +71,7 @@ public class OnboardingDepartmentController
|
||||
/// 批量删除入职业务部门。
|
||||
/// </summary>
|
||||
[HttpPost("delete")]
|
||||
[DisplayName("删除入职业务部门")]
|
||||
public async Task Delete([FromBody] BaseIdListInput input)
|
||||
{
|
||||
await _service.Delete(input);
|
||||
|
||||
+3
@@ -1,3 +1,4 @@
|
||||
using System.ComponentModel;
|
||||
namespace SimpleAdmin.Web.Core;
|
||||
|
||||
/// <summary>
|
||||
@@ -19,6 +20,7 @@ public class OnboardingEmployeeController
|
||||
/// 分页查询正式员工档案。
|
||||
/// </summary>
|
||||
[HttpGet("page")]
|
||||
[DisplayName("分页查询正式员工档案")]
|
||||
public async Task<dynamic> Page([FromQuery] OnboardingEmployeePageInput input)
|
||||
{
|
||||
return await _service.Page(input);
|
||||
@@ -28,6 +30,7 @@ public class OnboardingEmployeeController
|
||||
/// 查询正式员工详情及来源记录。
|
||||
/// </summary>
|
||||
[HttpGet("detail")]
|
||||
[DisplayName("查询正式员工详情")]
|
||||
public async Task<dynamic> Detail([FromQuery] BaseIdInput input)
|
||||
{
|
||||
return await _service.Detail(input);
|
||||
|
||||
+7
@@ -1,3 +1,4 @@
|
||||
using System.ComponentModel;
|
||||
namespace SimpleAdmin.Web.Core;
|
||||
|
||||
/// <summary>
|
||||
@@ -19,6 +20,7 @@ public class OnboardingEntryConfigController
|
||||
/// 查询动态入职字段。
|
||||
/// </summary>
|
||||
[HttpGet("form-field/list")]
|
||||
[DisplayName("查询动态字段列表")]
|
||||
public async Task<dynamic> ListFormFields()
|
||||
{
|
||||
return await _service.ListFormFields();
|
||||
@@ -28,6 +30,7 @@ public class OnboardingEntryConfigController
|
||||
/// 保存动态入职字段。
|
||||
/// </summary>
|
||||
[HttpPost("form-field/save")]
|
||||
[DisplayName("保存动态入职字段")]
|
||||
public async Task SaveFormField([FromBody] OnboardingFormFieldSaveInput input)
|
||||
{
|
||||
await _service.SaveFormField(input);
|
||||
@@ -37,6 +40,7 @@ public class OnboardingEntryConfigController
|
||||
/// 删除动态入职字段。
|
||||
/// </summary>
|
||||
[HttpPost("form-field/delete")]
|
||||
[DisplayName("删除动态入职字段")]
|
||||
public async Task DeleteFormFields([FromBody] BaseIdListInput input)
|
||||
{
|
||||
await _service.DeleteFormFields(input);
|
||||
@@ -46,6 +50,7 @@ public class OnboardingEntryConfigController
|
||||
/// 查询入职材料类型。
|
||||
/// </summary>
|
||||
[HttpGet("material-type/list")]
|
||||
[DisplayName("查询材料类型列表")]
|
||||
public async Task<dynamic> ListMaterialTypes()
|
||||
{
|
||||
return await _service.ListMaterialTypes();
|
||||
@@ -55,6 +60,7 @@ public class OnboardingEntryConfigController
|
||||
/// 保存入职材料类型。
|
||||
/// </summary>
|
||||
[HttpPost("material-type/save")]
|
||||
[DisplayName("保存入职材料类型")]
|
||||
public async Task SaveMaterialType([FromBody] OnboardingMaterialTypeSaveInput input)
|
||||
{
|
||||
await _service.SaveMaterialType(input);
|
||||
@@ -64,6 +70,7 @@ public class OnboardingEntryConfigController
|
||||
/// 删除入职材料类型。
|
||||
/// </summary>
|
||||
[HttpPost("material-type/delete")]
|
||||
[DisplayName("删除入职材料类型")]
|
||||
public async Task DeleteMaterialTypes([FromBody] BaseIdListInput input)
|
||||
{
|
||||
await _service.DeleteMaterialTypes(input);
|
||||
|
||||
+3
@@ -1,3 +1,4 @@
|
||||
using System.ComponentModel;
|
||||
namespace SimpleAdmin.Web.Core;
|
||||
|
||||
/// <summary>
|
||||
@@ -5,6 +6,7 @@ namespace SimpleAdmin.Web.Core;
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings("Application", Tag = "入职资料审核")]
|
||||
[Route("biz/onboarding/material")]
|
||||
[Route("biz/onboarding/task")]
|
||||
[RolePermission]
|
||||
public class OnboardingMaterialReviewController
|
||||
{
|
||||
@@ -19,6 +21,7 @@ public class OnboardingMaterialReviewController
|
||||
/// 审核候选人上传的材料。
|
||||
/// </summary>
|
||||
[HttpPost("review")]
|
||||
[DisplayName("审核候选人材料")]
|
||||
public async Task Review([FromBody] OnboardingMaterialReviewInput input)
|
||||
{
|
||||
await _service.Review(input);
|
||||
|
||||
+9
@@ -1,3 +1,4 @@
|
||||
using System.ComponentModel;
|
||||
namespace SimpleAdmin.Web.Core;
|
||||
|
||||
/// <summary>
|
||||
@@ -5,6 +6,7 @@
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings("Application", Tag = "入职岗位管理")]
|
||||
[Route("biz/onboarding/position")]
|
||||
[Route("biz/onboarding/setup")]
|
||||
[RolePermission]
|
||||
public class OnboardingPositionController
|
||||
{
|
||||
@@ -19,6 +21,7 @@ public class OnboardingPositionController
|
||||
/// 分页查询入职业务岗位。
|
||||
/// </summary>
|
||||
[HttpGet("page")]
|
||||
[DisplayName("分页查询入职岗位")]
|
||||
public async Task<dynamic> Page([FromQuery] OnboardingPositionPageInput input)
|
||||
{
|
||||
return await _service.Page(input);
|
||||
@@ -28,6 +31,7 @@ public class OnboardingPositionController
|
||||
/// 查询指定公司的已启用岗位。
|
||||
/// </summary>
|
||||
[HttpGet("list-enabled")]
|
||||
[DisplayName("查询公司已启用岗位")]
|
||||
public async Task<dynamic> ListEnabled([FromQuery] long companyId)
|
||||
{
|
||||
return await _service.ListEnabled(companyId);
|
||||
@@ -37,6 +41,7 @@ public class OnboardingPositionController
|
||||
/// 查询指定部门的已启用岗位。
|
||||
/// </summary>
|
||||
[HttpGet("list-by-department")]
|
||||
[DisplayName("查询部门已启用岗位")]
|
||||
public async Task<dynamic> ListByDepartment([FromQuery] long departmentId)
|
||||
{
|
||||
return await _service.ListEnabledByDepartment(departmentId);
|
||||
@@ -46,6 +51,7 @@ public class OnboardingPositionController
|
||||
/// 查询岗位详情。
|
||||
/// </summary>
|
||||
[HttpGet("detail")]
|
||||
[DisplayName("查询入职岗位详情")]
|
||||
public async Task<dynamic> Detail([FromQuery] BaseIdInput input)
|
||||
{
|
||||
return await _service.Detail(input);
|
||||
@@ -55,6 +61,7 @@ public class OnboardingPositionController
|
||||
/// 新增入职业务岗位。
|
||||
/// </summary>
|
||||
[HttpPost("add")]
|
||||
[DisplayName("新增入职业务岗位")]
|
||||
public async Task Add([FromBody] OnboardingPositionAddInput input)
|
||||
{
|
||||
await _service.Add(input);
|
||||
@@ -64,6 +71,7 @@ public class OnboardingPositionController
|
||||
/// 编辑入职业务岗位。
|
||||
/// </summary>
|
||||
[HttpPost("edit")]
|
||||
[DisplayName("编辑入职业务岗位")]
|
||||
public async Task Edit([FromBody] OnboardingPositionEditInput input)
|
||||
{
|
||||
await _service.Edit(input);
|
||||
@@ -73,6 +81,7 @@ public class OnboardingPositionController
|
||||
/// 批量删除入职业务岗位。
|
||||
/// </summary>
|
||||
[HttpPost("delete")]
|
||||
[DisplayName("删除入职业务岗位")]
|
||||
public async Task Delete([FromBody] BaseIdListInput input)
|
||||
{
|
||||
await _service.Delete(input);
|
||||
|
||||
+4
@@ -1,3 +1,4 @@
|
||||
using System.ComponentModel;
|
||||
namespace SimpleAdmin.Web.Core;
|
||||
|
||||
/// <summary>
|
||||
@@ -5,6 +6,7 @@ namespace SimpleAdmin.Web.Core;
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings("Application", Tag = "入职任务合同参数")]
|
||||
[Route("biz/onboarding/task-contract-variable")]
|
||||
[Route("biz/onboarding/task")]
|
||||
[RolePermission]
|
||||
public class OnboardingTaskContractVariableController
|
||||
{
|
||||
@@ -19,6 +21,7 @@ public class OnboardingTaskContractVariableController
|
||||
/// 查询任务合同变量。
|
||||
/// </summary>
|
||||
[HttpGet("list")]
|
||||
[DisplayName("查询任务合同变量")]
|
||||
public async Task<dynamic> List([FromQuery] OnboardingTaskContractVariableQueryInput input)
|
||||
{
|
||||
return await _service.List(input);
|
||||
@@ -28,6 +31,7 @@ public class OnboardingTaskContractVariableController
|
||||
/// 保存任务合同变量。
|
||||
/// </summary>
|
||||
[HttpPost("save")]
|
||||
[DisplayName("保存任务合同变量")]
|
||||
public async Task Save([FromBody] OnboardingTaskContractVariableSaveInput input)
|
||||
{
|
||||
await _service.Save(input);
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using System.ComponentModel;
|
||||
namespace SimpleAdmin.Web.Core;
|
||||
|
||||
/// <summary>
|
||||
@@ -19,6 +20,7 @@ public class OnboardingTaskController
|
||||
/// 创建入职任务并返回员工填写链接。
|
||||
/// </summary>
|
||||
[HttpPost("create")]
|
||||
[DisplayName("发起新员工入职任务")]
|
||||
public async Task<dynamic> Create([FromBody] OnboardingTaskCreateInput input)
|
||||
{
|
||||
return await _service.Create(input);
|
||||
|
||||
+4
@@ -1,3 +1,4 @@
|
||||
using System.ComponentModel;
|
||||
namespace SimpleAdmin.Web.Core;
|
||||
|
||||
/// <summary>
|
||||
@@ -19,6 +20,7 @@ public class OnboardingTaskLifecycleController
|
||||
/// 归档审核通过的入职任务。
|
||||
/// </summary>
|
||||
[HttpPost("archive")]
|
||||
[DisplayName("归档入职任务")]
|
||||
public async Task Archive([FromBody] OnboardingAuditActionInput input)
|
||||
{
|
||||
await _service.Archive(input);
|
||||
@@ -28,6 +30,7 @@ public class OnboardingTaskLifecycleController
|
||||
/// 撤销入职任务及员工填写链接。
|
||||
/// </summary>
|
||||
[HttpPost("revoke")]
|
||||
[DisplayName("撤销入职任务")]
|
||||
public async Task Revoke([FromBody] OnboardingAuditActionInput input)
|
||||
{
|
||||
await _service.Revoke(input);
|
||||
@@ -37,6 +40,7 @@ public class OnboardingTaskLifecycleController
|
||||
/// 删除已撤销的入职任务。
|
||||
/// </summary>
|
||||
[HttpPost("delete")]
|
||||
[DisplayName("删除已撤销入职任务")]
|
||||
public async Task Delete([FromBody] BaseIdInput input)
|
||||
{
|
||||
await _service.Delete(input);
|
||||
|
||||
+4
@@ -1,3 +1,4 @@
|
||||
using System.ComponentModel;
|
||||
namespace SimpleAdmin.Web.Core;
|
||||
|
||||
/// <summary>
|
||||
@@ -19,6 +20,7 @@ public class OnboardingTaskQueryController
|
||||
/// 分页查询入职任务。
|
||||
/// </summary>
|
||||
[HttpGet("page")]
|
||||
[DisplayName("分页查询入职任务")]
|
||||
public async Task<dynamic> Page([FromQuery] OnboardingTaskPageInput input)
|
||||
{
|
||||
return await _service.Page(input);
|
||||
@@ -28,6 +30,7 @@ public class OnboardingTaskQueryController
|
||||
/// 查询入职任务完整详情。
|
||||
/// </summary>
|
||||
[HttpGet("detail")]
|
||||
[DisplayName("查询入职任务详情")]
|
||||
public async Task<dynamic> Detail([FromQuery] BaseIdInput input)
|
||||
{
|
||||
return await _service.Detail(input);
|
||||
@@ -37,6 +40,7 @@ public class OnboardingTaskQueryController
|
||||
/// 获取或重新生成入职任务专属填写链接。
|
||||
/// </summary>
|
||||
[HttpGet("get-link")]
|
||||
[DisplayName("获取入职填写链接")]
|
||||
public async Task<dynamic> GetTaskLink([FromQuery] BaseIdInput input)
|
||||
{
|
||||
return await _service.GetTaskLink(input);
|
||||
|
||||
+7
@@ -1,3 +1,4 @@
|
||||
using System.ComponentModel;
|
||||
namespace SimpleAdmin.Web.Core;
|
||||
|
||||
/// <summary>
|
||||
@@ -5,6 +6,7 @@ namespace SimpleAdmin.Web.Core;
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings("Application", Tag = "入职模板")]
|
||||
[Route("biz/onboarding/template")]
|
||||
[Route("biz/onboarding/setup")]
|
||||
[RolePermission]
|
||||
public class OnboardingTemplateController
|
||||
{
|
||||
@@ -19,6 +21,7 @@ public class OnboardingTemplateController
|
||||
/// 分页查询入职模板。
|
||||
/// </summary>
|
||||
[HttpGet("page")]
|
||||
[DisplayName("分页查询入职模板")]
|
||||
public async Task<dynamic> Page([FromQuery] OnboardingTemplatePageInput input)
|
||||
{
|
||||
return await _service.Page(input);
|
||||
@@ -28,6 +31,7 @@ public class OnboardingTemplateController
|
||||
/// 查询入职模板详情及全部关联配置。
|
||||
/// </summary>
|
||||
[HttpGet("detail")]
|
||||
[DisplayName("查询入职模板详情")]
|
||||
public async Task<dynamic> Detail([FromQuery] BaseIdInput input)
|
||||
{
|
||||
return await _service.Detail(input);
|
||||
@@ -37,6 +41,7 @@ public class OnboardingTemplateController
|
||||
/// 新增或编辑入职模板。
|
||||
/// </summary>
|
||||
[HttpPost("save")]
|
||||
[DisplayName("保存入职业务模板")]
|
||||
public async Task<long> Save([FromBody] OnboardingTemplateSaveInput input)
|
||||
{
|
||||
return await _service.Save(input);
|
||||
@@ -46,6 +51,7 @@ public class OnboardingTemplateController
|
||||
/// 删除未被任务使用的入职模板。
|
||||
/// </summary>
|
||||
[HttpPost("delete")]
|
||||
[DisplayName("删除入职业务模板")]
|
||||
public async Task Delete([FromBody] BaseIdListInput input)
|
||||
{
|
||||
await _service.Delete(input);
|
||||
@@ -55,6 +61,7 @@ public class OnboardingTemplateController
|
||||
/// 查询指定公司、部门和岗位可使用的入职模板。
|
||||
/// </summary>
|
||||
[HttpGet("list-enabled")]
|
||||
[DisplayName("查询可用入职模板")]
|
||||
public async Task<dynamic> ListEnabled(
|
||||
[FromQuery] long companyId,
|
||||
[FromQuery] long departmentId,
|
||||
|
||||
+7
@@ -1,3 +1,4 @@
|
||||
using System.ComponentModel;
|
||||
namespace SimpleAdmin.Web.Core;
|
||||
|
||||
/// <summary>
|
||||
@@ -5,6 +6,7 @@
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings("Application", Tag = "合同变量字典")]
|
||||
[Route("biz/onboarding/variable-definition")]
|
||||
[Route("biz/onboarding/contract")]
|
||||
[RolePermission]
|
||||
public class OnboardingVariableDefinitionController
|
||||
{
|
||||
@@ -16,30 +18,35 @@ public class OnboardingVariableDefinitionController
|
||||
}
|
||||
|
||||
[HttpGet("page")]
|
||||
[DisplayName("分页查询变量字典")]
|
||||
public async Task<dynamic> Page([FromQuery] OnboardingVariableDefinitionPageInput input)
|
||||
{
|
||||
return await _service.Page(input);
|
||||
}
|
||||
|
||||
[HttpGet("list")]
|
||||
[DisplayName("查询变量字典列表")]
|
||||
public async Task<dynamic> List()
|
||||
{
|
||||
return await _service.ListAll();
|
||||
}
|
||||
|
||||
[HttpPost("add")]
|
||||
[DisplayName("新增合同变量字典")]
|
||||
public async Task Add([FromBody] OnboardingVariableDefinitionAddInput input)
|
||||
{
|
||||
await _service.Add(input);
|
||||
}
|
||||
|
||||
[HttpPost("edit")]
|
||||
[DisplayName("编辑合同变量字典")]
|
||||
public async Task Edit([FromBody] OnboardingVariableDefinitionEditInput input)
|
||||
{
|
||||
await _service.Edit(input);
|
||||
}
|
||||
|
||||
[HttpPost("delete")]
|
||||
[DisplayName("删除合同变量字典")]
|
||||
public async Task Delete([FromBody] BaseIdListInput input)
|
||||
{
|
||||
await _service.Delete(input);
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
-- OnboardX 任务合同变量排序快照升级脚本
|
||||
-- 适用数据库:MySQL 8.0+
|
||||
-- 说明:
|
||||
-- 1. 可重复执行。
|
||||
-- 2. 已有合同版本变量会同步全局变量字典的排序值。
|
||||
-- 3. 新任务会在创建变量快照时固定模板变量的排序值。
|
||||
-- 4. 历史任务按照其绑定的合同模板版本安全回填排序值。
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
DROP PROCEDURE IF EXISTS `ob_task_variable_add_column_if_missing`;
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE `ob_task_variable_add_column_if_missing`(
|
||||
IN p_table_name VARCHAR(128),
|
||||
IN p_column_name VARCHAR(128),
|
||||
IN p_column_definition VARCHAR(1000)
|
||||
)
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = p_table_name
|
||||
AND COLUMN_NAME = p_column_name
|
||||
) THEN
|
||||
SET @ddl = CONCAT(
|
||||
'ALTER TABLE `', p_table_name, '` ADD COLUMN `',
|
||||
p_column_name, '` ', p_column_definition
|
||||
);
|
||||
PREPARE stmt FROM @ddl;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
||||
DROP PROCEDURE IF EXISTS `ob_task_variable_add_index_if_missing`;
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE `ob_task_variable_add_index_if_missing`(
|
||||
IN p_table_name VARCHAR(128),
|
||||
IN p_index_name VARCHAR(128),
|
||||
IN p_index_definition VARCHAR(1000)
|
||||
)
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = p_table_name
|
||||
AND INDEX_NAME = p_index_name
|
||||
) THEN
|
||||
SET @ddl = CONCAT(
|
||||
'ALTER TABLE `', p_table_name, '` ADD ', p_index_definition
|
||||
);
|
||||
PREPARE stmt FROM @ddl;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
||||
CALL `ob_task_variable_add_column_if_missing`(
|
||||
'ob_task_contract_variable',
|
||||
'SortCode',
|
||||
'INT NOT NULL DEFAULT 100 COMMENT ''任务变量展示排序'' AFTER `DataType`'
|
||||
);
|
||||
|
||||
-- 修复旧代码导入 DOCX 时没有继承全局变量字典排序的问题。
|
||||
-- 模板变量编码创建后不可修改,因此可以按完整变量编码安全匹配。
|
||||
UPDATE `ob_template_variable` template_variable
|
||||
INNER JOIN `ob_variable_definition` variable_definition
|
||||
ON CONVERT(variable_definition.`VariableCode` USING utf8mb4) COLLATE utf8mb4_unicode_ci
|
||||
= CONVERT(template_variable.`VariableCode` USING utf8mb4) COLLATE utf8mb4_unicode_ci
|
||||
SET template_variable.`SortCode` = COALESCE(variable_definition.`SortCode`, 100);
|
||||
|
||||
-- 使用任务锁定的合同版本回填历史变量排序;找不到模板定义的数据保留默认值 100。
|
||||
UPDATE `ob_task_contract_variable` task_variable
|
||||
INNER JOIN `ob_task_contract` task_contract
|
||||
ON task_contract.`Id` = task_variable.`TaskContractId`
|
||||
INNER JOIN `ob_template_variable` template_variable
|
||||
ON template_variable.`TemplateVersionId` = task_contract.`TemplateVersionId`
|
||||
AND CONVERT(template_variable.`VariableCode` USING utf8mb4) COLLATE utf8mb4_unicode_ci
|
||||
= CONVERT(task_variable.`VariableCode` USING utf8mb4) COLLATE utf8mb4_unicode_ci
|
||||
SET task_variable.`SortCode` = COALESCE(template_variable.`SortCode`, 100);
|
||||
|
||||
CALL `ob_task_variable_add_index_if_missing`(
|
||||
'ob_task_contract_variable',
|
||||
'idx_ob_task_contract_variable_sort',
|
||||
'INDEX `idx_ob_task_contract_variable_sort` (`TaskContractId`, `SortCode`, `VariableCode`)'
|
||||
);
|
||||
|
||||
DROP PROCEDURE IF EXISTS `ob_task_variable_add_index_if_missing`;
|
||||
DROP PROCEDURE IF EXISTS `ob_task_variable_add_column_if_missing`;
|
||||
|
||||
-- 诊断仍未匹配到模板变量定义的历史数据。这些数据会使用默认排序值 100,并按变量编码稳定排序。
|
||||
SELECT
|
||||
task_variable.`Id`,
|
||||
task_variable.`TaskContractId`,
|
||||
task_variable.`VariableCode`,
|
||||
task_variable.`SortCode`
|
||||
FROM `ob_task_contract_variable` task_variable
|
||||
LEFT JOIN `ob_task_contract` task_contract
|
||||
ON task_contract.`Id` = task_variable.`TaskContractId`
|
||||
LEFT JOIN `ob_template_variable` template_variable
|
||||
ON template_variable.`TemplateVersionId` = task_contract.`TemplateVersionId`
|
||||
AND CONVERT(template_variable.`VariableCode` USING utf8mb4) COLLATE utf8mb4_unicode_ci
|
||||
= CONVERT(task_variable.`VariableCode` USING utf8mb4) COLLATE utf8mb4_unicode_ci
|
||||
WHERE template_variable.`Id` IS NULL
|
||||
ORDER BY task_variable.`TaskContractId`, task_variable.`VariableCode`;
|
||||
Reference in New Issue
Block a user