ny
昨天 b6f169fe43a2b13f351aefc152374fc7f0bc8cb7
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
package jnpf.base.service.impl;
 
import com.google.common.base.CaseFormat;
import jnpf.base.entity.VisualAliasEntity;
import jnpf.base.entity.VisualdevEntity;
import jnpf.base.entity.VisualdevReleaseEntity;
import jnpf.base.mapper.VisualAliasMapper;
import jnpf.base.mapper.VisualdevMapper;
import jnpf.base.mapper.VisualdevReleaseMapper;
import jnpf.base.model.VisualAliasForm;
import jnpf.base.service.SuperServiceImpl;
import jnpf.base.service.VisualAliasService;
import jnpf.base.util.common.AliasModel;
import jnpf.constant.GenerateConstant;
import jnpf.model.visualJson.TableFields;
import jnpf.model.visualJson.TableModel;
import jnpf.util.JsonUtil;
import jnpf.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
 
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
 
/**
 * @author JNPF开发平台组
 * @version v5.0.0
 * @copyright 引迈信息技术有限公司
 * @date 2024/4/13 14:05:48
 */
@Service
public class VisualAliasServiceImpl extends SuperServiceImpl<VisualAliasMapper, VisualAliasEntity> implements VisualAliasService {
    @Autowired
    private VisualdevReleaseMapper visualdevReleaseMapper;
    @Autowired
    private VisualdevMapper visualdevMapper;
 
 
    @Override
    public List<VisualAliasEntity> getList(String visualId) {
        return this.baseMapper.getList(visualId);
    }
 
    @Override
    public List<TableModel> getAliasInfo(String id) {
        VisualdevReleaseEntity visualdevEntity = visualdevReleaseMapper.selectById(id);
        List<TableModel> tableModels = JsonUtil.getJsonToList(visualdevEntity.getVisualTables(), TableModel.class);
        List<VisualAliasEntity> list = this.getList(id);
        for (TableModel tableModel : tableModels) {
            tableModel.setComment(tableModel.getTableName());
            VisualAliasEntity tableAlias = list.stream().filter(t -> tableModel.getTable().equals(t.getTableName()) && t.getFieldName() == null).findFirst().orElse(null);
            if (tableAlias != null) {
                tableModel.setAliasName(tableAlias.getAliasName());
            }
            List<TableFields> fields = tableModel.getFields();
            List<TableFields> newFields = fields.stream().filter(t -> !GenerateConstant.SYS_KEYWORD.contains(t.getField().toLowerCase())).collect(Collectors.toList());
            for (TableFields field : newFields) {
                VisualAliasEntity fieldAlias = list.stream().filter(t -> tableModel.getTable().equals(t.getTableName()) && t.getFieldName() != null
                        && field.getField().equals(t.getFieldName())).findFirst().orElse(null);
                if (fieldAlias != null) {
                    field.setAliasName(fieldAlias.getAliasName());
                }
            }
            tableModel.setFields(newFields);
        }
        return tableModels;
    }
 
    @Transactional
    @Override
    public void aliasSave(String id, VisualAliasForm form) {
        this.baseMapper.aliasSave(id, form);
    }
 
    @Override
    public Map<String, AliasModel> getAllFiledsAlias(String id) {
        Map<String, AliasModel> tableMap = new HashMap<>();
        VisualdevReleaseEntity visualdevEntity = visualdevReleaseMapper.selectById(id);
        List<TableModel> tableModels = JsonUtil.getJsonToList(visualdevEntity.getVisualTables(), TableModel.class);
        List<String> collect = tableModels.stream().map(TableModel::getTable).collect(Collectors.toList());
        //修改时有表不存在发布里补充
        VisualdevEntity ve = visualdevMapper.selectById(id);
        List<TableModel> tableModels2 = StringUtil.isNotEmpty(ve.getVisualTables()) ? JsonUtil.getJsonToList(ve.getVisualTables(), TableModel.class) : Collections.EMPTY_LIST;
        tableModels.addAll(tableModels2.stream().filter(t -> !collect.contains(t.getTable())).collect(Collectors.toList()));
        List<VisualAliasEntity> list = this.getList(id);
        for (TableModel tableModel : tableModels) {
            AliasModel aliasModel = new AliasModel();
            aliasModel.setTableName(tableModel.getTable());
            VisualAliasEntity tableAlias = list.stream().filter(t -> tableModel.getTable().equals(t.getTableName()) && t.getFieldName() == null).findFirst().orElse(null);
            if (tableAlias != null) {
                aliasModel.setAliasName(tableAlias.getAliasName());
            } else {
                aliasModel.setAliasName(tableModel.getTable());
            }
            List<TableFields> fields = tableModel.getFields();
            Map<String, String> fieldMap = new HashMap<>();
            for (TableFields field : fields) {
                VisualAliasEntity fieldAlias = list.stream().filter(t -> tableModel.getTable().equals(t.getTableName()) && t.getFieldName() != null
                        && field.getField().equals(t.getFieldName())).findFirst().orElse(null);
                if (fieldAlias != null) {
                    fieldMap.put(field.getField(), fieldAlias.getAliasName());
                }
                //系统字段-以驼峰形式给别名
                else if (GenerateConstant.SYS_KEYWORD.contains(field.getField().toLowerCase())) {
                    String name = field.getField().toLowerCase();
                    name = name.startsWith("f_") ? name.substring(2) : name;
                    String fieldAliasName = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, name);
                    fieldMap.put(field.getField(), fieldAliasName);
                } else {
                    String name = field.getField();
                    String fieldAliasName = twoToLowerCase(name);
                    fieldMap.put(field.getField(), fieldAliasName);
                }
            }
            aliasModel.setFieldsMap(fieldMap);
            tableMap.put(tableModel.getTable(), aliasModel);
        }
        return tableMap;
    }
 
    @Override
    public void copy(String visualId, String uuid) {
        this.baseMapper.copy(visualId, uuid);
    }
 
    @Override
    public void copyEntity(VisualAliasEntity copy, String visualId) {
        this.baseMapper.copyEntity(copy, visualId);
    }
 
    @Override
    public void removeByVisualId(String visualId) {
        this.baseMapper.removeByVisualId(visualId);
    }
 
    /**
     * 两字母强制小写前
     *
     * @return
     */
    public String twoToLowerCase(String name) {
        if (StringUtil.isEmpty(name)) {
            return name;
        }
        name = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, name);
        if (name.length() <= 2) {
            return name.toLowerCase();
        }
        if (name.length() > 2) {
            return name.substring(0, 2).toLowerCase() + name.substring(2);
        }
        return name;
    }
}