P15GEN2\59518
2025-10-10 9f6890646993d16260d4201d613c092132856127
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package biz.clean;
 
import foundation.dao.DataPackage;
import foundation.dao.DataSource;
import foundation.dao.DataWriter;
import foundation.data.entity.Entity;
import foundation.data.entity.EntitySet;
import foundation.data.entity.Filter;
import foundation.data.object.DataObject;
import foundation.workflow.ActionProvider;
import foundation.workflow.Event;
import foundation.workflow.WorkStep;
 
public class CleanCenter extends ActionProvider{
 
    @Override
    protected void publishMethod() {
        addMethod("clean");
    }
    
    public void clean(WorkStep step) throws Exception{
        Event event = step.getEvent();
        String cleanTargetId = step.getStepParam();
        
        //1. 获取清洗规则
        CleanTarget target = CleanBucket.getTarget(cleanTargetId);
        DataSource dataSource = target.getDataSource();
        String dataName = target.getDataName();
        DataObject dataObject = DataObject.getInstance(dataName);
        EntitySet entitySet = null;
        String cleanDataId;
        
        //2. 数据获取
        if (dataSource == DataSource.DB) {
            cleanDataId = event.getDataId();
            Filter filter = target.createFilter(cleanDataId);
            entitySet = dataObject.getTableEntitySet(filter);
        }
        else{
            DataPackage dataPackage = step.getDataPackage();
            entitySet = dataPackage.getItemEntitySet(dataName, dataSource);
        }
        
        //3. 数据清洗
        CleanResult cleanResult = cleanEntitySet(entitySet, target.getField(), target.isStandard(), target.getCleanEngine());
        DataWriter dataWriter = step.getDataWriter();
        
        //4. 结果处理
        boolean toDB = target.isToDB();
        
        if (toDB) {
            cleanResult.save(dataObject, target.isStandard());
        }
 
        if (dataWriter != null) {
            dataWriter.addValue(cleanResult);
        }
    }
 
    public static CleanResult cleanEntitySet(EntitySet entitySet, String field, Boolean isStandard, CleanEngine cleanEngine) throws Exception {
        CleanResult cleanResult = new CleanResult();
        
        if (entitySet == null) {
            return cleanResult;
        }
        
        for (Entity original : entitySet) {
            Entity standard = cleanEngine.modify(original, field);
            
            if (standard == null) {
                original.setDeleted();
            }
            
            cleanResult.addOne(original, standard);
        }
        
        return cleanResult;
    }
}