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
159
160
161
package jnpf.base.util;
 
import cn.hutool.core.util.ObjectUtil;
import jnpf.database.util.DynamicDataSourceUtil;
import jnpf.model.visualJson.FieLdsModel;
import jnpf.permission.entity.UserEntity;
import jnpf.util.DateUtil;
import jnpf.util.JsonUtil;
import jnpf.util.StringUtil;
import jnpf.util.visiual.JnpfKeyConsts;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
 
import java.math.BigDecimal;
import java.sql.Clob;
import java.util.*;
 
import static jnpf.util.Constants.ADMIN_KEY;
 
/**
 * 在线详情编辑工具类
 *
 * @author JNPF开发平台组
 * @version V3.2
 * @copyright 引迈信息技术有限公司(https://www.jnpfsoft.com)
 * @date 2021/10/27
 */
@Slf4j
@Component
public class FormInfoUtils {
    @Autowired
    private ServiceBaseUtil serviceUtil;
 
 
    /**
     * 转换数据格式(编辑页)
     *
     * @param modelList 控件
     * @param dataMap   数据
     * @return
     */
    public Map<String, Object> swapDataInfoType(List<FieLdsModel> modelList, Map<String, Object> dataMap) {
        dataMap = Optional.ofNullable(dataMap).orElse(new HashMap<>());
        try {
            DynamicDataSourceUtil.switchToDataSource(null);
            List<String> systemConditions = new ArrayList() {{
                add(JnpfKeyConsts.CURRORGANIZE);
                add(JnpfKeyConsts.CURRDEPT);
                add(JnpfKeyConsts.CURRPOSITION);
            }};
            List<String> nullIsList = new ArrayList() {{
                add(JnpfKeyConsts.UPLOADFZ);
                add(JnpfKeyConsts.UPLOADIMG);
            }};
            for (FieLdsModel swapDataVo : modelList) {
                String jnpfKey = swapDataVo.getConfig().getJnpfKey();
                String vModel = swapDataVo.getVModel();
 
                //clob字段转换
                FormInfoUtils.swapClob(dataMap, vModel);
                //获取原字段数据
                FormPublicUtils.relationGetJnpfId(dataMap, jnpfKey, dataMap.get(vModel), vModel);
 
                Object value = dataMap.get(vModel);
                if (value == null || ObjectUtil.isEmpty(value)) {
                    if (systemConditions.contains(jnpfKey)) {
                        dataMap.put(vModel, " ");
                    }
                    if (nullIsList.contains(jnpfKey)) {
                        dataMap.put(vModel, Collections.emptyList());
                    }
                    continue;
                }
                switch (jnpfKey) {
                    case JnpfKeyConsts.UPLOADFZ:
                    case JnpfKeyConsts.UPLOADIMG:
                        //数据传递-乱塞有bug强行置空
                        List<Map<String, Object>> fileList = new ArrayList<>();
                        try {
                            fileList = JsonUtil.getJsonToListMap(dataMap.get(vModel).toString());
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                        dataMap.put(vModel, fileList);
                        break;
                    case JnpfKeyConsts.DATE:
                    case JnpfKeyConsts.DATE_CALCULATE:
                        Long dateTime = DateTimeFormatConstant.getDateObjToLong(dataMap.get(vModel));
                        dataMap.put(vModel, dateTime != null ? dateTime : dataMap.get(vModel));
                        break;
                    case JnpfKeyConsts.CREATETIME:
                    case JnpfKeyConsts.MODIFYTIME:
                        String pattern = DateTimeFormatConstant.YEAR_MOnTH_DHMS;
                        Long time = DateTimeFormatConstant.getDateObjToLong(dataMap.get(vModel));
                        dataMap.put(vModel, time != null ? DateUtil.dateToString(new Date(time), pattern) : "");
                        break;
                    case JnpfKeyConsts.SWITCH:
                    case JnpfKeyConsts.SLIDER:
                    case JnpfKeyConsts.RATE:
                    case JnpfKeyConsts.CALCULATE:
                    case JnpfKeyConsts.NUM_INPUT:
                        dataMap.put(vModel, value != null ? new BigDecimal(String.valueOf(value)) : null);
                        break;
                    case JnpfKeyConsts.CURRPOSITION:
                        String posName = serviceUtil.getPositionName(String.valueOf(value));
                        dataMap.put(vModel, StringUtil.isNotEmpty(posName) ? posName : value);
                        break;
 
                    case JnpfKeyConsts.CREATEUSER:
                    case JnpfKeyConsts.MODIFYUSER:
                        UserEntity userEntity = serviceUtil.getUserInfo(String.valueOf(value));
                        String userValue = Objects.nonNull(userEntity) ? userEntity.getAccount().equalsIgnoreCase(ADMIN_KEY)
                                ? "管理员/" + ADMIN_KEY : userEntity.getRealName() + "/" + userEntity.getAccount() : String.valueOf(value);
                        dataMap.put(vModel, userValue);
                        break;
                    case JnpfKeyConsts.CURRORGANIZE:
                        String orgName = serviceUtil.getOrganizeName(String.valueOf(value));
                        dataMap.put(vModel, StringUtil.isNotEmpty(orgName) ? orgName : value);
                        break;
                    case JnpfKeyConsts.COM_INPUT:
                        if (dataMap.get(vModel) != null) {
                            dataMap.put(vModel, String.valueOf(dataMap.get(vModel)));
                        }
                        break;
                    default:
                        dataMap.put(vModel, FormPublicUtils.getDataConversion(value));
                        break;
                }
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        } finally {
            DynamicDataSourceUtil.clearSwitchDataSource();
        }
        return dataMap;
    }
 
 
    public static void swapClob(Map<String, Object> map, String key) {
        if (map != null && map.get(key) != null && map.get(key) instanceof Clob) {
            Clob clob = (Clob) map.get(key);
            StringBuilder sb = new StringBuilder();
            // 获取CLOB字段的内容长度
            int length = 0;
            // 以流的形式读取CLOB字段的内容
            try (java.io.Reader reader = clob.getCharacterStream()) {
                length = (int) clob.length();
                char[] buffer = new char[length];
                int bytesRead;
                // 逐个字符读取并添加到字符串构建器中
                while ((bytesRead = reader.read(buffer)) != -1) {
                    sb.append(buffer, 0, bytesRead);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            map.put(key, sb.toString());
        }
    }
}