| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- 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());
- }
- }
- }
|