xiangpei
2025-04-18 0aa739db8268b442ab74634289ffed00124a976a
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
package com.monkeylessey.gen.handler;
 
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.monkeylessey.gen.VoTemplate;
import com.monkeylessey.gen.domain.GenerateData;
import com.monkeylessey.gen.utils.WordsUtils;
import com.monkeylessey.sys.domain.vo.TableColumnVO;
 
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
 
/**
 * @author xp
 * @version 1.0
 * @date 2022/5/18
 */
 
public class VoHandler {
 
    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");
        // 设置VO类相关
        VoTemplate voTemplate = new VoTemplate();
        // 设置VO名称
        voTemplate.setVoName(entityName + "VO");
        // 设置VO路径
        voTemplate.setFormPath(packageMap.get("Parent") + packageMap.get("ModuleName") + ".sys.domain.vo");
        List<TableColumnVO> columns = new ArrayList<>(8);
        data.getColumns().stream()
                .filter(item -> !VoTemplate.removeFields.contains(item.getPropertyName()))
                .forEach(item -> {
                    item.setRefTableSimpleName(WordsUtils.extractFirstLetters(item.getRefTableName(), "_"));
                    columns.add(item);
                });
        voTemplate.setFields(columns);
        // 设置vo的父类名
        voTemplate.setBaseVoName("AbsVo");
        voTemplate.setBaseVoPath("com.monkeylessey.sys.domain.base");
 
        voTemplate.setTableSimpleName(WordsUtils.extractFirstLetters(tableInfo.getName(), "_"));
 
        objectMap.put("voInfo", voTemplate);
 
        return new QueryHandler().handler(objectMap, data);
    }
}