xiangpei
2025-04-18 ccadf9480d4e6a9dcc227a2a0b1f9ae0612e36fd
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
package com.monkeylessey.gen.handler;
 
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.monkeylessey.gen.domain.GenerateData;
import com.monkeylessey.gen.template.VueTemplate;
import com.monkeylessey.gen.utils.WordsUtils;
import com.monkeylessey.sys.domain.vo.TableColumnVO;
 
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
 
/**
 * @author xp
 * @data 2022/9/24
 */
public class VueHandler {
 
    private static final List<String> removeFields = Arrays.asList("gmt_create", "gmt_update", "deleted", "update_by", "create_by");
 
    public Map handler(Map objectMap, GenerateData data) {
        // 获取table
        TableInfo tableInfo = (TableInfo) objectMap.get("table");
        // 获取包信息
        Map<String, String> packageMap = (Map<String, String>) objectMap.get("package");
 
        // 实体类名称
        String entityName = (String) objectMap.get("entity");
        // 设置VUE相关数据
        VueTemplate vueTemplate = new VueTemplate();
        vueTemplate.setName(entityName);
        // 设置view文件的名称
        vueTemplate.setViewName(entityName + "View");
        // 设置首字母小写的名字
        vueTemplate.setLowerName(WordsUtils.firstWordToLower(entityName));
        // 设置view路径
        vueTemplate.setViewFilePath(packageMap.get("Parent") + packageMap.get("ModuleName") + ".vue");
 
        List<TableColumnVO> fields = data.getColumns().stream()
                .filter(item -> !removeFields.contains(item.getColumnName()))
                .collect(Collectors.toList());
 
        // 设置vuex中表单的字段
        vueTemplate.setVuexFormFields(fields);
        List<TableColumnVO> useSelectFields = fields.stream()
                .filter(item -> "select".equals(item.getInputWay()) && Objects.nonNull(item.getDataSourceId()))
                .collect(Collectors.toList());
        vueTemplate.setUseSelectFields(useSelectFields);
 
        objectMap.put("vueInfo", vueTemplate);
        return objectMap;
    }
 
 
}