Skip to content

Commit e656935

Browse files
committed
feature: 清洗任务详情
1 parent 60e2289 commit e656935

File tree

5 files changed

+42
-38
lines changed

5 files changed

+42
-38
lines changed

backend/services/data-cleaning-service/src/main/java/com/datamate/cleaning/application/CleaningTaskService.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
@Service
4949
@RequiredArgsConstructor
5050
public class CleaningTaskService {
51-
private final CleaningTaskRepository CleaningTaskRepo;
51+
private final CleaningTaskRepository cleaningTaskRepo;
5252

5353
private final OperatorInstanceRepository operatorInstanceRepo;
5454

@@ -67,7 +67,7 @@ public class CleaningTaskService {
6767
private final String FLOW_PATH = "/flow";
6868

6969
public List<CleaningTaskDto> getTasks(String status, String keywords, Integer page, Integer size) {
70-
List<CleaningTaskDto> tasks = CleaningTaskRepo.findTasks(status, keywords, page, size);
70+
List<CleaningTaskDto> tasks = cleaningTaskRepo.findTasks(status, keywords, page, size);
7171
tasks.forEach(this::setProcess);
7272
return tasks;
7373
}
@@ -78,7 +78,7 @@ private void setProcess(CleaningTaskDto task) {
7878
}
7979

8080
public int countTasks(String status, String keywords) {
81-
return CleaningTaskRepo.findTasks(status, keywords, null, null).size();
81+
return cleaningTaskRepo.findTasks(status, keywords, null, null).size();
8282
}
8383

8484
@Transactional
@@ -105,7 +105,7 @@ public CleaningTaskDto createTask(CreateCleaningTaskRequest request) {
105105
task.setDestDatasetName(destDataset.getName());
106106
task.setBeforeSize(srcDataset.getSizeBytes());
107107
task.setFileCount(srcDataset.getFileCount().intValue());
108-
CleaningTaskRepo.insertTask(task);
108+
cleaningTaskRepo.insertTask(task);
109109

110110
operatorInstanceRepo.insertInstance(taskId, request.getInstance());
111111

@@ -116,14 +116,15 @@ public CleaningTaskDto createTask(CreateCleaningTaskRequest request) {
116116
}
117117

118118
public CleaningTaskDto getTask(String taskId) {
119-
CleaningTaskDto task = CleaningTaskRepo.findTaskById(taskId);
119+
CleaningTaskDto task = cleaningTaskRepo.findTaskById(taskId);
120+
operatorInstanceRepo.
120121
setProcess(task);
121122
return task;
122123
}
123124

124125
@Transactional
125126
public void deleteTask(String taskId) {
126-
CleaningTaskRepo.deleteTaskById(taskId);
127+
cleaningTaskRepo.deleteTaskById(taskId);
127128
operatorInstanceRepo.deleteByInstanceId(taskId);
128129
cleaningResultRepo.deleteByInstanceId(taskId);
129130
}

backend/services/data-cleaning-service/src/main/java/com/datamate/cleaning/infrastructure/persistence/Impl/OperatorInstanceRepositoryImpl.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,11 @@ public void deleteByInstanceId(String instanceId) {
3737
lambdaWrapper.eq(OperatorInstance::getInstanceId, instanceId);
3838
mapper.delete(lambdaWrapper);
3939
}
40+
41+
public void findByInstanceId(String instanceId) {
42+
LambdaQueryWrapper<OperatorInstance> lambdaWrapper = new LambdaQueryWrapper<>();
43+
lambdaWrapper.eq(OperatorInstance::getInstanceId, instanceId);
44+
List<OperatorInstance> operatorInstances = mapper.selectList(lambdaWrapper);
45+
46+
}
4047
}

frontend/src/pages/DataCleansing/Detail/components/BasicInfo.tsx

Lines changed: 13 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { OperatorI } from "@/pages/OperatorMarket/operator.model";
33
import { Button, Card, Descriptions, Progress, Tag } from "antd";
44
import { Activity, AlertCircle, CheckCircle, Clock } from "lucide-react";
55
import { useNavigate } from "react-router";
6+
import {formatExecutionDuration} from "@/utils/unit.ts";
67

78
export default function BasicInfo({ task }: { task: CleansingTask }) {
89
const navigate = useNavigate();
@@ -11,14 +12,15 @@ export default function BasicInfo({ task }: { task: CleansingTask }) {
1112
{
1213
key: "id",
1314
label: "任务ID",
14-
children: <span className="font-mono">#{task?.id}</span>,
15+
children: <span className="font-mono">{task?.id}</span>,
1516
},
1617
{ key: "name", label: "任务名称", children: task?.name },
1718
{
1819
key: "dataset",
1920
label: "源数据集",
2021
children: (
2122
<Button
23+
style={{ paddingLeft: 0, marginLeft: 0 }}
2224
type="link"
2325
size="small"
2426
onClick={() =>
@@ -34,6 +36,7 @@ export default function BasicInfo({ task }: { task: CleansingTask }) {
3436
label: "目标数据集",
3537
children: (
3638
<Button
39+
style={{ paddingLeft: 0, marginLeft: 0 }}
3740
type="link"
3841
size="small"
3942
onClick={() =>
@@ -44,26 +47,13 @@ export default function BasicInfo({ task }: { task: CleansingTask }) {
4447
</Button>
4548
),
4649
},
47-
{ key: "template", label: "使用模板", children: task?.template },
50+
{ key: "template", label: "使用模板", children: ( task?.description || "--" ) },
4851
{ key: "startTime", label: "开始时间", children: task?.startedAt },
49-
{ key: "estimatedTime", label: "预计用时", children: task?.estimatedTime },
5052
{
5153
key: "description",
5254
label: "任务描述",
5355
children: (
54-
<span className="text-gray-600">{task?.description || "暂无描述"}</span>
55-
),
56-
span: 2,
57-
},
58-
{
59-
key: "rules",
60-
label: "处理算子",
61-
children: (
62-
<div className="flex flex-wrap gap-1">
63-
{task?.instance?.map?.((op: OperatorI) => (
64-
<Tag key={op.id}>{op.name}</Tag>
65-
))}
66-
</div>
56+
<span className="text-gray-600">{task?.description || "--"}</span>
6757
),
6858
span: 2,
6959
},
@@ -77,28 +67,28 @@ export default function BasicInfo({ task }: { task: CleansingTask }) {
7767
<div className="text-center p-4 bg-gradient-to-br from-blue-50 to-blue-100 rounded-lg">
7868
<Clock className="w-8 h-8 text-blue-500 mb-2 mx-auto" />
7969
<div className="text-xl font-bold text-blue-500">
80-
{task?.duration || "--"}
70+
{formatExecutionDuration(task?.startedAt, task?.finishedAt) || "--"}
8171
</div>
8272
<div className="text-sm text-gray-600">总耗时</div>
8373
</div>
8474
<div className="text-center p-4 bg-gradient-to-br from-green-50 to-green-100 rounded-lg">
8575
<CheckCircle className="w-8 h-8 text-green-500 mb-2 mx-auto" />
8676
<div className="text-xl font-bold text-green-500">
87-
{task?.successFiles || "--"}
77+
{task?.progress?.finishedFileNum || "0"}
8878
</div>
8979
<div className="text-sm text-gray-600">成功文件</div>
9080
</div>
9181
<div className="text-center p-4 bg-gradient-to-br from-red-50 to-red-100 rounded-lg">
9282
<AlertCircle className="w-8 h-8 text-red-500 mb-2 mx-auto" />
9383
<div className="text-xl font-bold text-red-500">
94-
{task?.failedFiles || "--"}
84+
{task?.progress?.totalFileNum - task?.progress?.finishedFileNum || "0"}
9585
</div>
9686
<div className="text-sm text-gray-600">失败文件</div>
9787
</div>
9888
<div className="text-center p-4 bg-gradient-to-br from-purple-50 to-purple-100 rounded-lg">
9989
<Activity className="w-8 h-8 text-purple-500 mb-2 mx-auto" />
10090
<div className="text-xl font-bold text-purple-500">
101-
{task?.progress || "--"}
91+
{task?.progress?.process || "--"}
10292
</div>
10393
<div className="text-sm text-gray-600">成功率</div>
10494
</div>
@@ -120,21 +110,15 @@ export default function BasicInfo({ task }: { task: CleansingTask }) {
120110
{/* 处理进度 */}
121111
<div>
122112
<h3 className="text-lg font-semibold text-gray-900 mb-4">处理进度</h3>
123-
<Progress percent={task?.progress} showInfo />
113+
<Progress percent={task?.progress?.process} showInfo />
124114
<div className="grid grid-cols-2 gap-4 text-sm mt-4">
125115
<div className="flex items-center gap-2">
126116
<span className="w-3 h-3 bg-green-500 rounded-full inline-block" />
127-
<span>已完成: {task?.processedFiles || "--"}</span>
117+
<span>已完成: {task?.progress?.finishedFileNum || "0"}</span>
128118
</div>
129119
<div className="flex items-center gap-2">
130120
<span className="w-3 h-3 bg-blue-500 rounded-full inline-block" />
131-
<span>处理中: {task?.processingFiles || "--"}</span>
132-
</div>
133-
<div className="flex items-center gap-2">
134-
<span className="w-3 h-3 bg-gray-300 rounded-full inline-block" />
135-
<span>
136-
待处理: {task?.totalFiles - task?.processedFiles || "--"}
137-
</span>
121+
<span>处理中: {task?.progress?.totalFileNum - task?.progress?.finishedFileNum || "0"}</span>
138122
</div>
139123
<div className="flex items-center gap-2">
140124
<span className="w-3 h-3 bg-red-500 rounded-full inline-block" />

frontend/src/pages/DataCleansing/Home/components/TaskList.tsx

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,18 @@ export default function TaskList() {
106106
fixed: "left",
107107
width: 150,
108108
ellipsis: true,
109+
render: (_, task: CleansingTask) => {
110+
return (
111+
<Button
112+
type="link"
113+
onClick={() =>
114+
navigate("/data/cleansing/task-detail/" + task.id)
115+
}
116+
>
117+
{task.name}
118+
</Button>
119+
);
120+
},
109121
},
110122
{
111123
title: "任务ID",
@@ -273,6 +285,9 @@ export default function TaskList() {
273285
data={tableData}
274286
operations={taskOperations}
275287
pagination={pagination}
288+
onView={(tableData) => {
289+
navigate("/data/cleansing/task-detail/" + tableData.id)
290+
}}
276291
/>
277292
) : (
278293
<Card>

frontend/src/pages/OperatorMarket/Home/components/List.tsx

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,6 @@ export function ListView({ operators = [], pagination, operations }) {
110110
{operator.name}
111111
</span>
112112
<Tag color="default">v{operator.version}</Tag>
113-
<Badge color={getStatusBadge(operator.status).color}>
114-
{getStatusBadge(operator.status).label}
115-
</Badge>
116113
</div>
117114
}
118115
description={

0 commit comments

Comments
 (0)