fix(personal-item): 个人事项&任务添加type类型字段

This commit is contained in:
caozehui
2026-05-21 13:59:45 +08:00
parent d069948d2a
commit 19637d74a4
9 changed files with 46 additions and 691 deletions

View File

@@ -19,6 +19,9 @@ public class PersonalItemRespVO {
@Schema(description = "个人事项标题", requiredMode = Schema.RequiredMode.REQUIRED, example = "整理供应商沟通纪要")
private String taskTitle;
@Schema(description = "个人事项类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "todo")
private String type;
@Schema(description = "负责人用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3001")
private Long ownerId;

View File

@@ -25,6 +25,11 @@ public class PersonalItemSaveReqVO {
@Size(max = 300, message = "个人事项标题长度不能超过300个字符")
private String taskTitle;
@Schema(description = "个人事项类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "todo")
@NotBlank(message = "个人事项类型不能为空")
@Size(max = 32, message = "个人事项类型长度不能超过32个字符")
private String type;
@Schema(description = "个人事项进度0~100", example = "60.00")
@DecimalMin(value = "0.00", message = "个人事项进度不能小于 0")
@DecimalMax(value = "100.00", message = "个人事项进度不能大于 100")

View File

@@ -31,6 +31,8 @@ public class ProjectTaskRespVO {
private Long executionOwnerId;
@Schema(description = "任务标题", requiredMode = Schema.RequiredMode.REQUIRED, example = "接口联调任务")
private String taskTitle;
@Schema(description = "任务类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "feature")
private String type;
@Schema(description = "任务负责人用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3002")
private Long ownerId;
@Schema(description = "任务负责人昵称", example = "李四")

View File

@@ -25,6 +25,11 @@ public class ProjectTaskSaveReqVO {
@Size(max = 300, message = "任务标题长度不能超过300个字符")
private String taskTitle;
@Schema(description = "任务类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "feature")
@NotBlank(message = "任务类型不能为空")
@Size(max = 32, message = "任务类型长度不能超过32个字符")
private String type;
@Schema(description = "任务负责人用户编号;子任务不传时继承父任务负责人", example = "3002")
private Long ownerId;

View File

@@ -27,6 +27,8 @@ public class PersonalItemDO extends BaseDO {
private String taskTitle;
private String type;
private Long ownerId;
private String statusCode;

View File

@@ -42,6 +42,10 @@ public class ProjectTaskDO extends BaseDO {
* 任务标题
*/
private String taskTitle;
/**
* 任务类型
*/
private String type;
/**
* 任务负责人用户编号
*/

View File

@@ -94,6 +94,7 @@ public class PersonalItemServiceImpl implements PersonalItemService {
PersonalItemDO item = new PersonalItemDO();
item.setTaskTitle(normalizeRequiredTitle(reqVO.getTaskTitle()));
item.setType(normalizeRequiredType(reqVO.getType(), "个人事项类型不能为空"));
item.setOwnerId(loginUserId);
item.setStatusCode(getInitialStatusCode());
item.setProgressRate(normalizeProgress(reqVO.getProgressRate()));
@@ -123,6 +124,7 @@ public class PersonalItemServiceImpl implements PersonalItemService {
PersonalItemDO before = cloneItem(item);
item.setTaskTitle(normalizeRequiredTitle(reqVO.getTaskTitle()));
item.setType(normalizeRequiredType(reqVO.getType(), "个人事项类型不能为空"));
item.setProgressRate(normalizeProgress(reqVO.getProgressRate()));
item.setPlannedStartDate(reqVO.getPlannedStartDate());
item.setPlannedEndDate(reqVO.getPlannedEndDate());
@@ -361,6 +363,7 @@ public class PersonalItemServiceImpl implements PersonalItemService {
task.setExecutionId(executionId);
task.setParentTaskId(null);
task.setTaskTitle(item.getTaskTitle());
task.setType(item.getType());
task.setOwnerId(item.getOwnerId());
task.setStatusCode(item.getStatusCode());
task.setProgressRate(item.getProgressRate());
@@ -546,6 +549,7 @@ public class PersonalItemServiceImpl implements PersonalItemService {
PersonalItemDO target = new PersonalItemDO();
target.setId(source.getId());
target.setTaskTitle(source.getTaskTitle());
target.setType(source.getType());
target.setOwnerId(source.getOwnerId());
target.setStatusCode(source.getStatusCode());
target.setProgressRate(source.getProgressRate());
@@ -563,6 +567,8 @@ public class PersonalItemServiceImpl implements PersonalItemService {
Map<String, Object> fieldChanges = new LinkedHashMap<>();
appendFieldChange(fieldChanges, "taskTitle", valueOf(before, PersonalItemDO::getTaskTitle),
valueOf(after, PersonalItemDO::getTaskTitle));
appendFieldChange(fieldChanges, "type", valueOf(before, PersonalItemDO::getType),
valueOf(after, PersonalItemDO::getType));
appendFieldChange(fieldChanges, "ownerId", valueOf(before, PersonalItemDO::getOwnerId),
valueOf(after, PersonalItemDO::getOwnerId));
appendFieldChange(fieldChanges, "statusCode", valueOf(before, PersonalItemDO::getStatusCode),
@@ -732,6 +738,13 @@ public class PersonalItemServiceImpl implements PersonalItemService {
return value.trim();
}
private String normalizeRequiredType(String value, String message) {
if (!StringUtils.hasText(value)) {
throw invalidParamException(message);
}
return value.trim();
}
private String normalizeNullableText(String value) {
if (!StringUtils.hasText(value)) {
return null;

View File

@@ -139,6 +139,7 @@ public class ProjectTaskServiceImpl implements ProjectTaskService {
task.setExecutionId(executionId);
task.setParentTaskId(parentTask == null ? null : parentTask.getId());
task.setTaskTitle(normalizeRequiredTitle(reqVO.getTaskTitle()));
task.setType(normalizeRequiredType(reqVO.getType(), "任务类型不能为空"));
task.setOwnerId(ownerId);
task.setStatusCode(getInitialTaskStatusCode());
// 任务进度统一由 worklog 驱动;新建任务强制为 0
@@ -202,6 +203,7 @@ public class ProjectTaskServiceImpl implements ProjectTaskService {
ProjectTaskDO before = cloneTask(task);
task.setParentTaskId(newParentId);
task.setTaskTitle(normalizeRequiredTitle(reqVO.getTaskTitle()));
task.setType(normalizeRequiredType(reqVO.getType(), "任务类型不能为空"));
task.setOwnerId(ownerId);
task.setPlannedStartDate(reqVO.getPlannedStartDate());
task.setPlannedEndDate(reqVO.getPlannedEndDate());
@@ -939,6 +941,7 @@ public class ProjectTaskServiceImpl implements ProjectTaskService {
target.setExecutionId(source.getExecutionId());
target.setParentTaskId(source.getParentTaskId());
target.setTaskTitle(source.getTaskTitle());
target.setType(source.getType());
target.setOwnerId(source.getOwnerId());
target.setStatusCode(source.getStatusCode());
target.setProgressRate(source.getProgressRate());
@@ -961,6 +964,8 @@ public class ProjectTaskServiceImpl implements ProjectTaskService {
valueOf(after, ProjectTaskDO::getParentTaskId));
appendFieldChange(fieldChanges, "taskTitle", valueOf(before, ProjectTaskDO::getTaskTitle),
valueOf(after, ProjectTaskDO::getTaskTitle));
appendFieldChange(fieldChanges, "type", valueOf(before, ProjectTaskDO::getType),
valueOf(after, ProjectTaskDO::getType));
appendFieldChange(fieldChanges, "ownerId", valueOf(before, ProjectTaskDO::getOwnerId),
valueOf(after, ProjectTaskDO::getOwnerId));
appendFieldChange(fieldChanges, "statusCode", valueOf(before, ProjectTaskDO::getStatusCode),
@@ -1091,6 +1096,13 @@ public class ProjectTaskServiceImpl implements ProjectTaskService {
return value.trim();
}
private String normalizeRequiredType(String value, String message) {
if (!StringUtils.hasText(value)) {
throw invalidParamException(message);
}
return value.trim();
}
private String normalizeNullableText(String value) {
if (!StringUtils.hasText(value)) {
return null;