许鹏程
2023-06-29 e7ccc6e4243d7d7bfb4a950367b2cdc26428915f
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
package com.product.datasource.utils;
 
import cn.hutool.core.util.ArrayUtil;
import com.product.common.utils.StringUtils;
import com.product.core.entity.FieldMetaEntity;
 
import java.util.List;
 
/**
 * @Author cheng
 * @Date 2022/7/6 17:30
 * @Desc
 */
public class BatchUtil {
    public static StringBuilder getInsertSql(FieldMetaEntity fieldMetaEntity) {
        return getInsertSql(fieldMetaEntity, ArrayUtil.map(fieldMetaEntity.getFields(), String::valueOf), null);
    }
 
    public static StringBuilder getInsertSql(FieldMetaEntity fieldMetaEntity, List<String> fields) {
        return getInsertSql(fieldMetaEntity, fields, null);
    }
 
    public static StringBuilder getInsertSql(FieldMetaEntity fieldMetaEntity, List<String> fields, String automaticallyPrimaryField) {
        if (fieldMetaEntity != null && !ArrayUtil.isEmpty(fieldMetaEntity.getFields())) {
            int index = StringUtils.isEmpty(automaticallyPrimaryField) ? -1 : fields.indexOf(automaticallyPrimaryField.toLowerCase());
            if (!StringUtils.isEmpty(automaticallyPrimaryField) && index == -1) {
                fields.add(automaticallyPrimaryField);
                index = fields.size() - 1;
            }
            StringBuilder sql = new StringBuilder(" insert into ").append(fieldMetaEntity.getTableName()[0]).append(" ( ");
            for (int i = 0; i < fields.size(); i++) {
                String field = fields.get(i);
                if (i > 0) {
                    sql.append(",");
                }
                sql.append(field);
            }
            sql.append(") values (");
            for (int i = 0; i < fields.size(); i++) {
                if (i > 0) {
                    sql.append(",");
                }
                if (index > -1 && i == index) {
                    //mes特殊处理 调用mes数据库函数生成自增主键
                    String o = fieldMetaEntity.getTableName()[0].toString();
                    if ("T_WIP_DETAIL".equalsIgnoreCase(o)) {
                        o = "WIP_DETAIL";
                    }
                    sql.append("getnewid('").append(o).append("')");
                } else {
                    sql.append(" ? ");
                }
            }
            sql.append(" ) ");
            if (index > -1) {
                fields.remove(index);
            }
            return sql;
        }
        return null;
    }
 
    public static StringBuilder getUpdateSql(FieldMetaEntity fieldMetaEntity, String filter) {
        if (fieldMetaEntity != null && !ArrayUtil.isEmpty(fieldMetaEntity.getFields())) {
            StringBuilder sql = new StringBuilder(" UPDATE ").append(fieldMetaEntity.getTableName()[0]).append(" SET ");
            Object[] fields = fieldMetaEntity.getFields();
            for (int i = 0; i < fields.length; i++) {
                if (i > 0) {
                    sql.append(",");
                }
                sql.append(fields[i]).append("= ?");
 
            }
            sql.append(" WHERE (").append(filter).append(") ");
            return sql;
        }
        return null;
    }
 
 
}