wuxw
2022-07-07 2cf0a9d123324000a241eb163bf2e362678f1061
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
package com.java110.utils.util;
 
import org.springframework.cglib.core.Converter;
 
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
 
/**
 * @ClassName Java110Converter
 * @Description TODO
 * @Author wuxw
 * @Date 2020/1/28 17:16
 * @Version 1.0
 * add by wuxw 2020/1/28
 **/
public class Java110Converter implements Converter {
 
 
    @Override
    public Object convert(Object value, Class target, Object context) {
 
        return getValue(value, target);
    }
 
    public static Object getValue(Object value, Class target) {
 
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 
        if (value == null) {
            return value;
        }
        //1.0 String 转 Date
        if (value instanceof String && target == Date.class) {
            String date = (String) value;
            Date newDate = null;
            SimpleDateFormat strdf = null;
            if (date.contains(":")) {
                strdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
            } else {
                strdf = new SimpleDateFormat("yyyy-MM-dd");
            }
            try {
                newDate = strdf.parse(date);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            return newDate;
        }
 
        //2.0 Date 转 Date
        if (value instanceof Date && target == Date.class) {
            return value;
        }
 
        // 3.0 Date 转 String
        if (value instanceof Date && target == String.class) {
            Date date = (Date) value;
            String newDate = null;
            try {
                newDate = sdf.format(date);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return newDate;
        }
        // 3.0 Timestamp 转 String
        if (value instanceof Timestamp && target == String.class) {
            Date date = new Date(((Timestamp) value).getTime());
            String newDate = null;
            try {
                newDate = sdf.format(date);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return newDate;
        }
 
        if (value instanceof BigDecimal && target == String.class) {
            BigDecimal bd = (BigDecimal) value;
            return bd.toPlainString();
        }
        if (target == String.class) {
            return String.valueOf(value);
        }
 
        if (target == int.class || target == Integer.class) {
            if(StringUtil.isNullOrNone(value)){
                return 0;
            }
            return Integer.parseInt(String.valueOf(value));
        }
 
        if (target == long.class || target == Long.class) {
            if(StringUtil.isNullOrNone(value)){
                return 0;
            }
            return Long.parseLong(String.valueOf(value));
        }
 
        if (target == double.class || target == Double.class) {
            if(StringUtil.isNullOrNone(value)){
                return 0;
            }
            return Double.parseDouble(String.valueOf(value));
        }
 
        if (target == String[].class) {
            return String.valueOf(value).split(",");
        }
 
        //1.0 String 转 Date
        if (value instanceof String && target == boolean.class) {
            String bl = (String) value;
            if ("true".equals(bl)) {
                return true;
            }
            return false;
        }
 
        return value;
    }
}