diff --git a/backend/src/main/java/com/designhub/entity/TaskItem.java b/backend/src/main/java/com/designhub/entity/TaskItem.java index 9f33296..955c85a 100644 --- a/backend/src/main/java/com/designhub/entity/TaskItem.java +++ b/backend/src/main/java/com/designhub/entity/TaskItem.java @@ -81,6 +81,11 @@ public class TaskItem implements Serializable { */ private String receiverName; + /** + * 抢单时间 + */ + private LocalDateTime claimTime; + /** * 接单部门ID */ diff --git a/backend/src/main/java/com/designhub/mapper/TaskItemMapper.java b/backend/src/main/java/com/designhub/mapper/TaskItemMapper.java index 6947a22..667bf42 100644 --- a/backend/src/main/java/com/designhub/mapper/TaskItemMapper.java +++ b/backend/src/main/java/com/designhub/mapper/TaskItemMapper.java @@ -319,6 +319,7 @@ public interface TaskItemMapper extends BaseMapper { "receiver_name = #{receiverName}, " + "receiver_dept_id = #{receiverDeptId}, " + "status = 'in_progress', " + + "claim_time = NOW(), " + "deadline = CASE WHEN #{deadline} IS NOT NULL THEN #{deadline} ELSE deadline END, " + "update_time = NOW() " + "WHERE id = #{itemId} " + @@ -337,6 +338,7 @@ public interface TaskItemMapper extends BaseMapper { */ @Update("UPDATE task_item SET " + "status = 'in_progress', " + + "claim_time = NOW(), " + "deadline = CASE WHEN #{deadline} IS NOT NULL THEN #{deadline} ELSE deadline END, " + "update_time = NOW() " + "WHERE id = #{itemId} " + diff --git a/backend/src/main/java/com/designhub/service/AnalyticsService.java b/backend/src/main/java/com/designhub/service/AnalyticsService.java index 3c2a8d1..9d27f2d 100644 --- a/backend/src/main/java/com/designhub/service/AnalyticsService.java +++ b/backend/src/main/java/com/designhub/service/AnalyticsService.java @@ -1627,6 +1627,7 @@ public class AnalyticsService { .taskNo(task.getTaskNo()) .taskTitle(task.getTitle()) .taskScore(taskScore) + .claimTime(task.getActualStartTime()) // 主任务使用actualStartTime作为抢单时间 .deadline(task.getDeadline()) .actualEndTime(task.getActualEndTime()) .overdueHours(overdueHoursLong) @@ -1684,6 +1685,7 @@ public class AnalyticsService { .taskNo(task.getTaskNo()) .taskTitle(task.getTitle()) .taskScore(taskScore) + .claimTime(task.getActualStartTime()) // 主任务使用actualStartTime作为抢单时间 .deadline(task.getDeadline()) .actualEndTime(null) // 进行中任务没有完成时间 .overdueHours(overdueHoursLong) @@ -1761,6 +1763,7 @@ public class AnalyticsService { .taskNo(taskNo) .taskTitle(taskTitle + " (" + taskNo + ")") .taskScore(itemScore) + .claimTime(item.getClaimTime()) // 子任务使用claimTime .deadline(expectedDeadline) .actualEndTime(item.getCompleteTime()) .overdueHours(overdueHoursLong) @@ -1817,6 +1820,7 @@ public class AnalyticsService { .taskNo(taskNo) .taskTitle(taskTitle + " (" + taskNo + ")") .taskScore(itemScore) + .claimTime(item.getClaimTime()) // 子任务使用claimTime .deadline(expectedDeadline) .actualEndTime(null) // 进行中子任务没有完成时间 .overdueHours(overdueHoursLong) diff --git a/backend/src/main/java/com/designhub/vo/DeductionDetailVO.java b/backend/src/main/java/com/designhub/vo/DeductionDetailVO.java index def1bb0..5723015 100644 --- a/backend/src/main/java/com/designhub/vo/DeductionDetailVO.java +++ b/backend/src/main/java/com/designhub/vo/DeductionDetailVO.java @@ -45,6 +45,7 @@ public class DeductionDetailVO { private String taskNo; private String taskTitle; private BigDecimal taskScore; + private LocalDateTime claimTime; // 抢单时间 private LocalDateTime deadline; private LocalDateTime actualEndTime; private Long overdueHours; diff --git a/frontend/src/api/analytics.ts b/frontend/src/api/analytics.ts index dffa7a9..986cb8a 100644 --- a/frontend/src/api/analytics.ts +++ b/frontend/src/api/analytics.ts @@ -362,6 +362,7 @@ export interface DelayDeductionItem { taskNo: string; taskTitle: string; taskScore: number; + claimTime: string; // 抢单时间 deadline: string; actualEndTime: string; overdueHours: number; diff --git a/frontend/src/views/Analytics.vue b/frontend/src/views/Analytics.vue index c2eb749..ece557b 100644 --- a/frontend/src/views/Analytics.vue +++ b/frontend/src/views/Analytics.vue @@ -624,7 +624,7 @@ - @@ -942,6 +942,7 @@ const delayDeductionColumns = [ { title: '任务编号', dataIndex: 'taskNo', key: 'taskNo', width: 120 }, { title: '任务名称', dataIndex: 'taskTitle', key: 'taskTitle', ellipsis: true }, { title: '任务积分', dataIndex: 'taskScore', key: 'taskScore', width: 100, align: 'center' }, + { title: '抢单时间', key: 'claimTime', width: 150 }, { title: '截止时间', key: 'deadline', width: 150 }, { title: '实际完成时间', key: 'actualEndTime', width: 150 }, { title: '延误时长', key: 'overdueHours', width: 100, align: 'center' },