Skip to content

Commit f1bffdc

Browse files
authored
bugfix: 创建清洗任务时修改数据集状态;无法删除已在模板/运行任务的算子
* bugfix: 创建清洗任务时修改数据集状态;无法删除已在模板/运行任务的算子
1 parent 91390ca commit f1bffdc

File tree

15 files changed

+46
-15
lines changed

15 files changed

+46
-15
lines changed

Makefile

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -244,11 +244,9 @@ VALID_SERVICE_TARGETS := datamate backend frontend runtime mineru "deer-flow" mi
244244
cd deployment/docker/datamate && export REGISTRY=$(REGISTRY) && docker compose up -d datamate-mineru; \
245245
elif [ "$*" = "datamate" ]; then \
246246
if docker compose ls --filter name=deer-flow | grep -q deer-flow; then \
247-
(cd deployment/docker/datamate && NGINX_CONF="./backend-with-deer-flow.conf" REGISTRY=$(REGISTRY) docker compose -f docker-compose.yml up -d) && \
248-
$(MAKE) label-studio-docker-install; \
247+
(cd deployment/docker/datamate && NGINX_CONF="./backend-with-deer-flow.conf" REGISTRY=$(REGISTRY) docker compose -f docker-compose.yml up -d); \
249248
else \
250-
(cd deployment/docker/datamate && REGISTRY=$(REGISTRY) docker compose -f docker-compose.yml up -d) && \
251-
$(MAKE) label-studio-docker-install; \
249+
(cd deployment/docker/datamate && REGISTRY=$(REGISTRY) docker compose -f docker-compose.yml up -d); \
252250
fi; \
253251
elif [ "$*" = "deer-flow" ]; then \
254252
cd deployment/docker/datamate && export NGINX_CONF="./backend-with-deer-flow.conf" && export REGISTRY=$(REGISTRY) && docker compose -f docker-compose.yml up -d; \

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ public CleaningTaskDto createTask(CreateCleaningTaskRequest request) {
9393
CreateDatasetRequest createDatasetRequest = new CreateDatasetRequest();
9494
createDatasetRequest.setName(request.getDestDatasetName());
9595
createDatasetRequest.setDatasetType(DatasetType.valueOf(request.getDestDatasetType()));
96+
createDatasetRequest.setStatus("ACTIVE");
9697
Dataset destDataset = datasetService.createDataset(createDatasetRequest);
9798

9899
Dataset srcDataset = datasetService.getDataset(request.getSrcDatasetId());

backend/services/data-management-service/src/main/java/com/datamate/datamanagement/domain/model/dataset/Dataset.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,9 @@ public Dataset(String name, String description, DatasetType datasetType, String
113113
public void initCreateParam(String datasetBasePath) {
114114
this.id = UUID.randomUUID().toString();
115115
this.path = datasetBasePath + File.separator + this.id;
116-
this.status = DatasetStatusType.DRAFT;
116+
if (this.status == null) {
117+
this.status = DatasetStatusType.DRAFT;
118+
}
117119
}
118120

119121
public void updateBasicInfo(String name, String description, String category) {

backend/services/data-management-service/src/main/java/com/datamate/datamanagement/interfaces/dto/CreateDatasetRequest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,6 @@ public class CreateDatasetRequest {
3535
private String dataSource;
3636
/** 保留天数 */
3737
private Integer retentionDays;
38+
/** 数据集状态 */
39+
private String status;
3840
}

backend/services/operator-market-service/src/main/java/com/datamate/operator/application/OperatorService.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,9 @@ public OperatorDto updateOperator(String id, OperatorDto req) {
8888

8989
@Transactional
9090
public void deleteOperator(String id) {
91+
if (operatorRepo.operatorInTemplateOrRunning(id)) {
92+
throw BusinessException.of(OperatorErrorCode.OPERATOR_IN_INSTANCE);
93+
}
9194
operatorRepo.deleteOperator(id);
9295
relationRepo.deleteByOperatorId(id);
9396
}

backend/services/operator-market-service/src/main/java/com/datamate/operator/domain/repository/OperatorRepository.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,6 @@ public interface OperatorRepository extends IRepository<Operator> {
1616
void deleteOperator(String id);
1717

1818
int countOperatorByStar(boolean isStar);
19+
20+
boolean operatorInTemplateOrRunning(String operatorId);
1921
}

backend/services/operator-market-service/src/main/java/com/datamate/operator/infrastructure/exception/OperatorErrorCode.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ public enum OperatorErrorCode implements ErrorCode {
1616

1717
FIELD_NOT_FOUND("op.0003", "缺少必要的字段"),
1818

19-
SETTINGS_PARSE_FAILED("op.0004", "settings字段解析失败");
19+
SETTINGS_PARSE_FAILED("op.0004", "settings字段解析失败"),
20+
21+
OPERATOR_IN_INSTANCE("op.0005", "算子已被编排在模板或未完成的任务中");
2022

2123
private final String code;
2224
private final String message;

backend/services/operator-market-service/src/main/java/com/datamate/operator/infrastructure/persistence/Impl/OperatorRepositoryImpl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,9 @@ public int countOperatorByStar(boolean isStar) {
4343
queryWrapper.eq(Operator::getIsStar, isStar);
4444
return Math.toIntExact(mapper.selectCount(queryWrapper));
4545
}
46+
47+
@Override
48+
public boolean operatorInTemplateOrRunning(String operatorId) {
49+
return mapper.operatorInTemplate(operatorId) > 0 && mapper.operatorInUnstopTask(operatorId) > 0;
50+
}
4651
}

backend/services/operator-market-service/src/main/java/com/datamate/operator/infrastructure/persistence/mapper/OperatorMapper.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,16 @@
33
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
44
import com.datamate.operator.domain.model.Operator;
55
import org.apache.ibatis.annotations.Mapper;
6+
import org.apache.ibatis.annotations.Select;
67

78
@Mapper
89
public interface OperatorMapper extends BaseMapper<Operator> {
10+
11+
@Select("SELECT count(1) FROM t_operator_instance oi JOIN t_clean_template t ON oi.instance_id = t.id " +
12+
"WHERE oi.operator_id = #{operatorId}")
13+
int operatorInTemplate(String operatorId);
14+
15+
@Select("SELECT count(1) FROM t_operator_instance oi JOIN t_clean_task t ON oi.instance_id = t.id " +
16+
"WHERE oi.operator_id = #{operatorId} AND t.status != 'COMPLETED'")
17+
int operatorInUnstopTask(String operatorId);
918
}

frontend/src/pages/DataCleansing/Create/components/OperatorLibrary.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,10 @@ const OperatorList: React.FC<OperatorListProps> = ({
5858
</div>
5959
<span
6060
className="cursor-pointer"
61-
onClick={() => handleStar(operator, toggleFavorite)}
61+
onClick={(event) => {
62+
event.stopPropagation();
63+
handleStar(operator, toggleFavorite);
64+
}}
6265
>
6366
{favorites.has(operator.id) ? (
6467
<StarFilled style={{ color: "#FFD700" }} />

0 commit comments

Comments
 (0)