package jnpf.onlinedev.util.onlineDevUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; import jnpf.database.model.dbfield.JdbcColumnModel; import jnpf.database.model.dto.PrepSqlDTO; import jnpf.database.model.entity.DbLinkEntity; import jnpf.database.util.JdbcUtil; import jnpf.onlinedev.model.OnlineDevListModel.OnlineColumnFieldModel; import jnpf.onlinedev.model.OnlineDevListModel.OnlineDevListDataVO; import jnpf.onlinedev.model.OnlineDevListModel.VisualColumnSearchVO; import jnpf.base.util.FormPublicUtils; import jnpf.util.StringUtil; import jnpf.util.visiual.JnpfKeyConsts; import java.util.*; import java.util.stream.Collectors; /** * * * @author JNPF开发平台组 * @version V3.2.0 * @copyright 引迈信息技术有限公司(https://www.jnpfsoft.com) * @date 2021/7/28 */ public class OnlineDatabaseUtils { public static List getTableDataList(DbLinkEntity dbLinkEntity, String sql, String pKeyName, List childFieldList) { List list = new ArrayList<>(); try { List> fieldMods = JdbcUtil.queryJdbcColumns(new PrepSqlDTO(sql).withConn(dbLinkEntity)).setIsValue(true).get(); List> dataList = new ArrayList<>(); for (List dblist : fieldMods){ Map dataMap =new HashMap<>(); HashMap collect = dblist.stream().collect(Collectors.toMap(s -> Optional.ofNullable(s.getField()).orElse(""), s -> Optional.ofNullable(s.getValue()).orElse(""), (a, b) -> b, HashMap::new)); dataMap.putAll(collect); for (OnlineColumnFieldModel on : childFieldList){ //需要替换的子表字段 JdbcColumnModel fieldMod = dblist.stream() .filter(dbMod -> dbMod.getTable().equalsIgnoreCase(on.getTableName()) && dbMod.getField().equalsIgnoreCase(on.getField())).findFirst().orElse(null); //将数据转成map格式 if (ObjectUtil.isNotEmpty(fieldMod)){ dataMap.remove(fieldMod.getField()); dataMap.put(on.getOriginallyField(),fieldMod.getValue()); } } dataList.add(dataMap); } for (Map dataMap : dataList) { OnlineDevListDataVO dataVo = new OnlineDevListDataVO(); dataMap = toLowerKey(dataMap); dataVo.setData(dataMap); if (dataMap.containsKey(pKeyName.toUpperCase())) { dataVo.setId(String.valueOf(dataMap.get(pKeyName.toUpperCase()))); } list.add(dataVo); } } catch (Exception e) { e.printStackTrace(); } return list; } public static Map toLowerKey(Map map) { Map resultMap = new HashMap<>(16); Set sets = map.keySet(); for (String key : sets) { resultMap.put(key.toLowerCase(), map.get(key)); } return resultMap; } public static Boolean existKey(List feilds, String pKeyName) { if (feilds.size() > 0) { for (String feild : feilds) { if (feild.equals(pKeyName)) { return true; } } } return false; } public static List setDataId(String keyName, List DevList) { keyName = keyName.toLowerCase(); for (OnlineDevListDataVO dataVo : DevList) { Map dataMap = dataVo.getData(); if (dataMap.get(keyName) != null) { dataVo.setId(String.valueOf(dataMap.get(keyName))); } } return DevList; } public static List getValueList(List searchVOList){ List valueList = new LinkedList<>(); for (VisualColumnSearchVO vo : searchVOList){ String jnpfKey = vo.getConfig().getJnpfKey(); String format; switch (jnpfKey){ case JnpfKeyConsts.MODIFYTIME: case JnpfKeyConsts.CREATETIME: case JnpfKeyConsts.DATE: case JnpfKeyConsts.DATE_CALCULATE: JSONArray timeStampArray = (JSONArray) vo.getValue(); Long o1 =(Long) timeStampArray.get(0); Long o2 = (Long) timeStampArray.get(1); format = StringUtil.isEmpty(vo.getFormat()) ? "yyyy-MM-dd HH:mm:ss" : vo.getFormat(); //时间戳转string格式 String startTime = OnlinePublicUtils.getDateByFormat(o1,format); String endTime = OnlinePublicUtils.getDateByFormat(o2,format); //处理时间查询条件范围 endTime=endTime.substring(0,10); String firstTimeDate = OnlineDatabaseUtils.getTimeFormat(startTime); String lastTimeDate = OnlineDatabaseUtils.getLastTimeFormat(endTime); valueList.add(firstTimeDate); valueList.add(lastTimeDate); break; case JnpfKeyConsts.TIME: JSONArray timeArray =(JSONArray)vo.getValue(); String start = String.valueOf(timeArray.get(0)); String end =String.valueOf(timeArray.get(1)); valueList.add(start); valueList.add(end); break; case JnpfKeyConsts.NUM_INPUT: case JnpfKeyConsts.CALCULATE: List searchArray = (List)vo.getValue(); Integer firstValue = null; Integer secondValue = null; for(int i=0;i