Skip to content

Commit 91390ca

Browse files
authored
feature: 北向接口:支持通过模板创建清洗任务 (#111)
feature: 北向接口:支持通过模板创建清洗任务
1 parent 0ca5f29 commit 91390ca

File tree

15 files changed

+312
-253
lines changed

15 files changed

+312
-253
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ endif
209209
.PHONY: uninstall
210210
uninstall:
211211
ifeq ($(origin INSTALLER), undefined)
212-
$(call prompt-uninstaller,milvus-$$INSTALLER-uninstall label-studio-$$INSTALLER-uninstall datamate-$$INSTALLER-uninstall)
212+
$(call prompt-uninstaller,milvus-$$INSTALLER-uninstall datamate-$$INSTALLER-uninstall)
213213
else
214214
@echo "Delete volumes? (This will remove all data)"; \
215215
echo "1. Yes - Delete volumes"; \

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,4 +248,8 @@ private void writeListMapToJsonlFile(List<Map<String, Object>> mapList, String f
248248
public void stopTask(String taskId) {
249249
taskScheduler.stopTask(taskId);
250250
}
251+
252+
public List<OperatorInstanceDto> getInstanceByTemplateId(String templateId) {
253+
return operatorInstanceRepo.findInstanceByInstanceId(templateId);
254+
}
251255
}

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
import com.datamate.cleaning.domain.repository.CleaningTemplateRepository;
55
import com.datamate.cleaning.domain.repository.OperatorInstanceRepository;
6+
import com.datamate.cleaning.infrastructure.validator.CleanTaskValidator;
67
import com.datamate.cleaning.interfaces.dto.*;
78
import com.datamate.cleaning.domain.model.entity.TemplateWithInstance;
89
import com.datamate.operator.domain.repository.OperatorViewRepository;
@@ -28,6 +29,8 @@ public class CleaningTemplateService {
2829

2930
private final OperatorViewRepository operatorViewRepo;
3031

32+
private final CleanTaskValidator cleanTaskValidator;
33+
3134
public List<CleaningTemplateDto> getTemplates(String keywords) {
3235
List<OperatorDto> allOperators =
3336
operatorViewRepo.findOperatorsByCriteria(null, null, null, null, null);
@@ -59,6 +62,7 @@ public List<CleaningTemplateDto> getTemplates(String keywords) {
5962

6063
@Transactional
6164
public CleaningTemplateDto createTemplate(CreateCleaningTemplateRequest request) {
65+
cleanTaskValidator.checkInputAndOutput(request.getInstance());
6266
CleaningTemplateDto template = new CleaningTemplateDto();
6367
String templateId = UUID.randomUUID().toString();
6468
template.setId(templateId);

backend/services/data-cleaning-service/src/main/java/com/datamate/cleaning/domain/repository/OperatorInstanceRepository.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,6 @@ public interface OperatorInstanceRepository extends IRepository<OperatorInstance
1313
void deleteByInstanceId(String instanceId);
1414

1515
List<OperatorDto> findOperatorByInstanceId(String instanceId);
16+
17+
List<OperatorInstanceDto> findInstanceByInstanceId(String instanceId);
1618
}

backend/services/data-cleaning-service/src/main/java/com/datamate/cleaning/infrastructure/converter/OperatorInstanceConverter.java

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.datamate.operator.domain.model.OperatorView;
99
import com.datamate.operator.interfaces.dto.OperatorDto;
1010
import com.fasterxml.jackson.core.JsonProcessingException;
11+
import com.fasterxml.jackson.core.type.TypeReference;
1112
import com.fasterxml.jackson.databind.ObjectMapper;
1213
import org.mapstruct.Mapper;
1314
import org.mapstruct.Mapping;
@@ -23,20 +24,39 @@
2324
public interface OperatorInstanceConverter {
2425
OperatorInstanceConverter INSTANCE = Mappers.getMapper(OperatorInstanceConverter.class);
2526

27+
ObjectMapper OBJECT_MAPPER = new ObjectMapper();
28+
2629
@Mapping(target = "settingsOverride", source = "overrides", qualifiedByName = "mapToString")
2730
@Mapping(target = "operatorId", source = "id")
2831
OperatorInstance fromDtoToEntity(OperatorInstanceDto instance);
2932

33+
@Mapping(target = "overrides", source = "settingsOverride", qualifiedByName = "stringToMap")
34+
@Mapping(target = "id", source = "operatorId")
35+
OperatorInstanceDto fromEntityToDto(OperatorInstance instance);
36+
37+
List<OperatorInstanceDto> fromEntityToDtoList(List<OperatorInstance> instance);
38+
3039
@Named("mapToString")
3140
static String mapToString(Map<String, Object> objects) {
32-
ObjectMapper objectMapper = new ObjectMapper();
3341
try {
34-
return objectMapper.writeValueAsString(objects);
42+
return OBJECT_MAPPER.writeValueAsString(objects);
3543
} catch (JsonProcessingException e) {
3644
throw BusinessException.of(SystemErrorCode.UNKNOWN_ERROR);
3745
}
3846
}
3947

48+
@Named("stringToMap")
49+
static Map<String, Object> stringToMap(String json) {
50+
if (json == null) {
51+
return Collections.emptyMap();
52+
}
53+
try {
54+
return OBJECT_MAPPER.readValue(json, new TypeReference<>() {});
55+
} catch (JsonProcessingException e) {
56+
throw BusinessException.of(SystemErrorCode.UNKNOWN_ERROR);
57+
}
58+
}
59+
4060
@Mapping(target = "categories", source = "categories", qualifiedByName = "stringToList")
4161
OperatorDto fromEntityToDto(OperatorView operator);
4262

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,12 @@ public void deleteByInstanceId(String instanceId) {
4242
public List<OperatorDto> findOperatorByInstanceId(String instanceId) {
4343
return OperatorInstanceConverter.INSTANCE.fromEntityToDto(mapper.findOperatorByInstanceId(instanceId));
4444
}
45+
46+
@Override
47+
public List<OperatorInstanceDto> findInstanceByInstanceId(String instanceId) {
48+
LambdaQueryWrapper<OperatorInstance> lambdaWrapper = new LambdaQueryWrapper<>();
49+
lambdaWrapper.eq(OperatorInstance::getInstanceId, instanceId)
50+
.orderByAsc(OperatorInstance::getOpIndex);
51+
return OperatorInstanceConverter.INSTANCE.fromEntityToDtoList(mapper.selectList(lambdaWrapper));
52+
}
4553
}

backend/services/data-cleaning-service/src/main/java/com/datamate/cleaning/interfaces/dto/CreateCleaningTaskRequest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ public class CreateCleaningTaskRequest {
2727

2828
private String destDatasetType;
2929

30+
private String templateId;
31+
3032
private List<OperatorInstanceDto> instance = new ArrayList<>();
3133
}
3234

backend/services/data-cleaning-service/src/main/java/com/datamate/cleaning/interfaces/rest/CleaningTaskController.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
package com.datamate.cleaning.interfaces.rest;
22

33
import com.datamate.cleaning.application.CleaningTaskService;
4-
import com.datamate.cleaning.interfaces.dto.CleaningResultDto;
5-
import com.datamate.cleaning.interfaces.dto.CleaningTaskDto;
6-
import com.datamate.cleaning.interfaces.dto.CleaningTaskLog;
7-
import com.datamate.cleaning.interfaces.dto.CreateCleaningTaskRequest;
4+
import com.datamate.cleaning.interfaces.dto.*;
85
import com.datamate.common.interfaces.PagedResponse;
96
import lombok.RequiredArgsConstructor;
7+
import org.apache.commons.lang3.StringUtils;
108
import org.springframework.web.bind.annotation.*;
119

1210
import java.util.List;
@@ -31,6 +29,9 @@ public PagedResponse<CleaningTaskDto> cleaningTasksGet(
3129

3230
@PostMapping
3331
public CleaningTaskDto cleaningTasksPost(@RequestBody CreateCleaningTaskRequest request) {
32+
if (request.getInstance().isEmpty() && StringUtils.isNotBlank(request.getTemplateId())) {
33+
request.setInstance(cleaningTaskService.getInstanceByTemplateId(request.getTemplateId()));
34+
}
3435
return cleaningTaskService.createTask(request);
3536
}
3637

@@ -57,6 +58,13 @@ public String cleaningTasksTaskIdDelete(@PathVariable("taskId") String taskId) {
5758
return taskId;
5859
}
5960

61+
@DeleteMapping
62+
public void cleaningTasksDelete(@RequestParam List<String> taskIds) {
63+
for (String taskId : taskIds) {
64+
cleaningTaskService.deleteTask(taskId);
65+
}
66+
}
67+
6068
@GetMapping("/{taskId}/result")
6169
public List<CleaningResultDto> cleaningTasksTaskIdGetResult(@PathVariable("taskId") String taskId) {
6270
return cleaningTaskService.getTaskResults(taskId);

0 commit comments

Comments
 (0)