package com.landtool.lanbase.modules.res.controller; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletResponse; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.landtool.lanbase.config.SysTemPropertyConfig; import com.landtool.lanbase.modules.api.utils.Excel; import com.landtool.lanbase.modules.api.utils.JDBCUtils; import com.landtool.lanbase.modules.api.utils.PageBean; import com.landtool.lanbase.modules.res.entity.Res_ExtDataBase; import com.landtool.lanbase.modules.res.entity.Res_ExtDataSource; import com.landtool.lanbase.modules.res.entity.Res_MainInfo; import com.landtool.lanbase.modules.res.entity.Res_Subscriptions; import com.landtool.lanbase.modules.res.entity.SelectShuJuKu; import com.landtool.lanbase.modules.res.entity.DataBaseLeftDataSource.DataBaseLeftDataSource; import com.landtool.lanbase.modules.res.entity.JSONModels.DateType; import com.landtool.lanbase.modules.res.entity.JSONModels.FieldMapping; import com.landtool.lanbase.modules.res.entity.JSONModels.SqlMapJson; import com.landtool.lanbase.modules.res.entity.JSONModels.ZiDuanPeiZi; import com.landtool.lanbase.modules.res.service.ResExtDataBaseService; import com.landtool.lanbase.modules.res.service.ResExtDataSourceService; import com.landtool.lanbase.modules.res.service.ResMainInfoService; import com.landtool.lanbase.modules.res.service.ResSubscriptionsService; import com.landtool.lanbase.modules.sys.controller.AbstractController; import com.landtool.lanbase.modules.sys.service.SysFieldvalueService; import cn.hutool.json.JSONUtil; @Controller @RequestMapping("/res") public class ResExtDataBaseController extends AbstractController { @Autowired private ResSubscriptionsService resSubscriptionsService; @Autowired private ResExtDataBaseService resExtDataBaseService; @Autowired private ResExtDataSourceService resExtDataSourceService; @Autowired private ResMainInfoService resMainInfoService; @Autowired private SysTemPropertyConfig sysConfig; @Autowired private SysFieldvalueService FieldUtils; @RequestMapping("/ResManage/ResRegister/ExtDataBase") public String ExtDataBase(Integer resMainInfoId, Model model) { Res_ExtDataBase resExtDataBase = resExtDataBaseService.selectByMainInfoId(resMainInfoId); //返回主键list List list = new ArrayList(); if(resExtDataBase != null) { //根据数据源id,查询到账号密码 Res_ExtDataSource resExtDataSource=resExtDataSourceService.selectByPrimaryKey(resExtDataBase.getDatasourceid()); //开始拼接sql,然后判断是哪个数据库 String leirong="[]"; if(resExtDataSource != null) { if (resExtDataSource.getDatabasetype().equalsIgnoreCase("SQLServer")) { String sql = " select name as TABLENAME from sysobjects where xtype='u' ORDER BY TABLENAME"; leirong = JDBCUtils.SqlServerConnUtils(resExtDataSource.getServeraddress(), resExtDataSource.getDatabasename(), resExtDataSource.getUsername(), resExtDataSource.getPassword(), sql); } if (resExtDataSource.getDatabasetype().equalsIgnoreCase("Oracle")) { String sql = "SELECT table_name as tablename FROM user_tables ORDER BY table_name"; leirong = JDBCUtils.OracleConnUtils(resExtDataSource.getServeraddress(), resExtDataSource.getDatabasename(), resExtDataSource.getUsername(), resExtDataSource.getPassword(), resExtDataSource.getPort(), sql); } if (resExtDataSource.getDatabasetype().equalsIgnoreCase("MySQL")) { String sql = " select table_name as TABLENAME from information_schema.tables where table_type='base table' ORDER BY TABLENAME"; leirong = JDBCUtils.MysqlConnUtils(resExtDataSource.getServeraddress(), resExtDataSource.getDatabasename(), resExtDataSource.getUsername(), resExtDataSource.getPassword(), resExtDataSource.getPort(), sql); } } LinkedHashMap map = new LinkedHashMap(); if(!leirong.equals("[]")) { JSONArray obj = JSON.parseArray(leirong);//获取用户信息 if(obj.getJSONObject(0).get("success").toString().equals("true")) { JSONArray maps = JSON.parseArray(obj.getJSONObject(0).get("data").toString()); for (int i = 0; i < maps.size(); i++) { // Map maps = (Map) JSON.parse(obj.getJSONObject(0).get("data").toString()); map.put(maps.getJSONObject(i).get("TABLENAME").toString(), maps.getJSONObject(i).get("TABLENAME").toString()); } } } model.addAttribute("map",map); //查询id对应的 name Res_ExtDataSource res_extDataSource=resExtDataSourceService.selectByPrimaryKey(resExtDataBase.getDatasourceid()); model.addAttribute("Databasename",res_extDataSource == null ? null : res_extDataSource.getDatabasealias()); //缺少null值处理 alert 2018/12/27 model.addAttribute("databasetype",res_extDataSource == null ? null : res_extDataSource.getDatabasetype()); model.addAttribute("Res_ExtDataBase",resExtDataBase); model.addAttribute("tabletype", res_extDataSource == null ? null : res_extDataSource.getTabletype()); model.addAttribute("resMainInfoId",resMainInfoId); Res_MainInfo res_mainInfo = resMainInfoService.selectByPrimaryKey(resMainInfoId); model.addAttribute("resMainInfo",res_mainInfo); if(resExtDataBase.getPrimarykey() != null) { String[] keys = resExtDataBase.getPrimarykey().split(","); for (int i =0;i widthMap = new HashMap();//存自带宽度 if(database.getFieldconfig().equals("")){ String sql="SELECT a.name NAME,b.name type,cast(g.[value] as varchar(500)) [remarks] FROM syscolumns a left join systypes b on a.xusertype=b.xusertype inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties' left join sys.extended_properties g on a.id=g.major_id and a.colid=g.minor_id where d.name='"+database.getTablename()+"' order by a.name"; leirong=JDBCUtils.SqlServerConnUtils(database.getServeraddress(),database.getDatabasename(),database.getUsername(),database.getPassword(),sql); objList = JSON.parseArray(leirong);//获取用户信息 StringBuffer str=new StringBuffer(); str.append("["); for (int i = 0; i < objList.size(); i++) { if(i>0){ sqlConfig+= ","; str.append(","); } DateType dateType=JSONUtil.toBean(objList.get(i).toString(), DateType.class); sqlConfig+=dateType.getNAME(); sqlConfig+=" as "; sqlConfig+=dateType.getNAME(); str.append("{\"ZiDuanName\":\""+dateType.getNAME()+"\""); str.append(","); str.append("\"ZiDuanType\":\""+dateType.getType()+"\""); str.append(","); str.append("\"ZiDuanBieMing\":\""+dateType.getNAME()+"\""); str.append(","); str.append("\"ZiDuanGeShi\":{}}"); list.add(dateType.getNAME()); } str.append("]"); JSONArray jsarr = JSONArray.parseArray(String.valueOf(str)); model.addAttribute("map",jsarr); }else { //开始拼接sql,然后判断是哪个数据库 JSONObject sqlObj = JSON.parseObject(database.getFieldconfig()); JSONArray jsarr = JSONArray.parseArray(sqlObj.getString("sql")); for (int i = 0; i < jsarr.size(); i++) { ZiDuanPeiZi ziDuanPeiZi=JSONUtil.toBean(jsarr.get(i).toString(), ZiDuanPeiZi.class); if(Integer.parseInt(ziDuanPeiZi.getZiDuanKuanDu())>=0 && Integer.parseInt(ziDuanPeiZi.getZiDuanKuanDu())<50){ ziDuanPeiZi.setZiDuanKuanDu("50");//最小宽度 } if(Integer.parseInt(ziDuanPeiZi.getZiDuanKuanDu())>1000){ ziDuanPeiZi.setZiDuanKuanDu("1000");//最大宽度 } if(ziDuanPeiZi.getZiDuanKuanDu().equals("") || ziDuanPeiZi.getZiDuanKuanDu()==null){ ziDuanPeiZi.setZiDuanKuanDu("0"); } widthMap.put(ziDuanPeiZi.getZiDuanBieMing(),ziDuanPeiZi.getZiDuanKuanDu()); if(i>0){ sqlConfig+= ","; } String Geshi=ziDuanPeiZi.getZiDuanGeShi().toJSONString(); String ZiDuanMing=ziDuanPeiZi.getZiDuanName(); if(ziDuanPeiZi.getZiDuanType().equals("时间") && Geshi.indexOf("riqi")>0 && Geshi.indexOf("1")>0 ){ if(database.getDatabasetype().equalsIgnoreCase("Oracle")) { } else { ZiDuanMing = "CONVERT(varchar(12)," + ziDuanPeiZi.getZiDuanName() + ",111 )"; } } if((ziDuanPeiZi.getZiDuanType().equals("小数") || ziDuanPeiZi.getZiDuanType().equals("整数")) && Geshi.indexOf("xiaoshudian")>0){ //获取字段保留几位小数 String[] xiaoshu=Geshi.split(":"); //获取到保留几位小数 String num= xiaoshu[1].replace("}","").trim(); if(database.getDatabasetype().equalsIgnoreCase("Oracle")) { ZiDuanMing = "round(" + ziDuanPeiZi.getZiDuanName() + "," + num + ")"; } else { ZiDuanMing = "CONVERT(NUMERIC(18," + num + ")," + ziDuanPeiZi.getZiDuanName() + ")"; } } sqlConfig+=ZiDuanMing ; sqlConfig+=" as \""; sqlConfig+=ziDuanPeiZi.getZiDuanBieMing(); sqlConfig += "\""; list.add(ziDuanPeiZi.getZiDuanBieMing()); // map.put(ziDuanPeiZi.getZiDuanName(),ziDuanPeiZi.getZiDuanBieMing()); } System.out.println(jsarr); model.addAttribute("map",jsarr); } String sql="select "+sqlConfig+" from "+database.getTablename() ; leirong = "[]"; String msg = ""; if(database.getDatabasetype().equalsIgnoreCase("SQLServer")){ leirong=JDBCUtils.SqlServerConnUtils(database.getServeraddress(),database.getDatabasename(), database.getUsername(), database.getPassword(),sql); } if(database.getDatabasetype().equalsIgnoreCase("Oracle")){ leirong=JDBCUtils.OracleConnUtils(database.getServeraddress(),database.getDatabasename(), database.getUsername(), database.getPassword(),database.getPort(),sql); } if(!leirong.equals("[]")){ JSONArray obj = JSON.parseArray(leirong); // JSONObject obj = if(obj.getJSONObject(0).get("success").toString().equals("true")) { // Map maps = (Map) JSON.parse(obj.getJSONObject(0).get("data").toString()); model.addAttribute("list", list); model.addAttribute("chaxun", obj.getJSONObject(0).get("data").toString()); double width = Double.parseDouble("96") / Double.parseDouble(String.valueOf(list.size())); String columns = "[{ xtype: 'rownumberer', text: '序号', width: 50, align: 'center' }"; for (int i = 0; i < list.size(); i++) { columns += ",{ text: '" + list.get(i) + "', dataIndex: '" + list.get(i) + "', width: " + widthMap.get(list.get(i)) + ", sortable: true, align: 'center', filter: { type: 'string' } }"; } columns += " ]"; JSONArray arr = JSONObject.parseArray(columns); model.addAttribute("columns", arr); System.out.println(columns); } else { JSONArray arr = JSONObject.parseArray("[]"); model.addAttribute("list","[]"); model.addAttribute("chaxun","[]"); model.addAttribute("columns" ,arr); msg = obj.getJSONObject(0).get("msg").toString(); } }else { JSONArray arr = JSONObject.parseArray("[]"); model.addAttribute("list","[]"); model.addAttribute("chaxun","[]"); model.addAttribute("columns" ,arr); } model.addAttribute("pubzyWebRoot", sysConfig.getPubzyWebRoot()); model.addAttribute("systemName", sysConfig.getAppFullName()); model.addAttribute("msg",msg); return "/ZiYuanZhongXin/BaseLeftSource"; } //数据库别名页面 @RequestMapping("/ResManage/ResRegister/ZiDuanBieMingBasic") public String ZiDuanBieMingBasic(Model model,Res_ExtDataSource res_extDataSource,String tablename,Integer resMainInfoId,Integer bianji,String primarykey){ //根据数据源id,查询到账号密码 model.addAttribute("datasourceid",res_extDataSource.getDatasourceid()); model.addAttribute("tablename",tablename); //fieldconfig是 字段配置文本框里面的内容 model.addAttribute("resMainInfoId",resMainInfoId); //如果bianji ==null 那么 bianji ==0() if(bianji==null){ bianji=0; } model.addAttribute("bianji",bianji); model.addAttribute("pubzyWebRoot", sysConfig.getPubzyWebRoot()); model.addAttribute("systemName", sysConfig.getAppFullName()); model.addAttribute("primarykey", primarykey); return "/ZiYuanZhongXin/ZiDuanBieMingBasic"; } /** * wq:查询关联字典内容 * @param key * @return */ @ResponseBody @RequestMapping("/ResManage/ResRegister/selectDictionry") public LinkedHashMap selectDictionry(String key){ LinkedHashMap MapTypeList = FieldUtils.getFieldListByKey(key); return MapTypeList; } /** * wq:字段映射配置跳转 * @param model * @param datasourceid * @param resourceid * @param tablename * @return */ @RequestMapping("/ResManage/ResRegister/fieldMapping") public String fieldMapping(Model model,String datasourceid,String resourceid,String tablename){ model.addAttribute("resourceid", resourceid); model.addAttribute("datasourceid", datasourceid); model.addAttribute("tablename", tablename); model.addAttribute("pubzyWebRoot", sysConfig.getPubzyWebRoot()); return "/ZiYuanZhongXin/ZiDuanYingSheBasic"; } /** * wq:字段映射配置 * @param model * @param res_Subscriptions * @return */ @RequestMapping("/ResManage/ResRegister/fieldMapping_Edit") public String fieldMapping_Edit(Model model,Res_Subscriptions res_Subscriptions){ List fieldMappings = new ArrayList(); //数据源表字段集合 List fieldlist = new ArrayList(); List fieldNames = new ArrayList(); //数据源已配置暴露字段 DataBaseLeftDataSource database=resExtDataBaseService.selectBaseLeftSource(res_Subscriptions.getResourceid()); model.addAttribute("primarykeys", database.getPrimarykey()); //数据源表类型(1为属性,2为空间) model.addAttribute("tabletype", database.getTabletype()); model.addAttribute("resourceid", res_Subscriptions.getResourceid()); if(database!=null && database.getFieldconfig()!=null && !database.getFieldconfig().equals("")){ JSONObject json = JSONObject.parseObject(database.getFieldconfig()); JSONArray jsonArray = json.getJSONArray("sql"); for(int i=0;i fields = selectTargetSourceByDataSourceId(database.getTabletype(),res_Subscriptions.getTablename(),resExtDataSource); if(!fields.isEmpty() && fields.size()>0){ for(FieldMapping field :fields){ if(!fieldNames.contains(field.getFieldName()) && field.getIsNullAble().equals("0")){ field.setDataSourceList(fieldMappings); fieldlist.add(field); } } for(FieldMapping field :fields){ if(!fieldNames.contains(field.getFieldName()) && field.getIsNullAble().equals("1")){ field.setDataSourceList(fieldMappings); fieldlist.add(field); } } model.addAttribute("isnew", 0); }else{ //目标表不存在 for(ZiDuanPeiZi field : fieldMappings){ FieldMapping mapping = new FieldMapping(); mapping.setFieldName(field.getZiDuanName()); mapping.setFieldType(field.getZiDuanType()); mapping.setDataSourceList(fieldMappings); mapping.setFieldMappingType(field.getZiDuanType()); String[] keys = database.getPrimarykey().split(","); if(Arrays.asList(keys).contains(field.getZiDuanName())){ mapping.setIsPrimaryKey(1); } fieldlist.add(mapping); } model.addAttribute("isnew", 1); } model.addAttribute("fieldlist", fieldlist); return "/ZiYuanZhongXin/ZiDuanYingShe"; } /** * wq:查询目标表字段集合 * @param tablename * @param datasourceid * @return */ private List selectTargetSourceByDataSourceId(Integer tabletype,String tablename,Res_ExtDataSource resExtDataSource) { List flist = new ArrayList(); if(resExtDataSource.getDatabasetype().equalsIgnoreCase("SQLServer")){ String sql = "SELECT D.column_name AS fieldName,D.data_type AS fieldType,B.is_nullable AS isNullAble FROM SYS.tables A INNER JOIN SYS.columns B ON B.object_id = A.object_id LEFT JOIN SYS.extended_properties C ON C.major_id = B.object_id AND C.minor_id = B.column_id LEFT JOIN(SELECT table_name,column_name,data_type FROM INFORMATION_SCHEMA.COLUMNS)D ON D.column_name = B.name and D.TABLE_NAME = A.name WHERE A.name='"+tablename+"'"; String json=JDBCUtils.SqlServerConnUtils(resExtDataSource.getServeraddress(),resExtDataSource.getDatabasename(),resExtDataSource.getUsername(),resExtDataSource.getPassword(),sql); JSONArray jsonArray = JSONObject.parseArray(json); JSONArray jsonarr = null; if(jsonArray.getJSONObject(0).get("success").toString().equals("true")) { jsonarr = JSON.parseArray(jsonArray.getJSONObject(0).get("data").toString()); for(int i =0;i5?"long":"short"; } } if(database.getDatabasetype().equalsIgnoreCase("SQLServer")){ String sql = "select a.length as ZiDuanKuanDu from syscolumns a ,systypes b where a.xtype=b.xtype and a.id=(select id from sysobjects where name='"+database.getTablename()+"') and a.name='"+columnName+"'"; String json=JDBCUtils.SqlServerConnUtils(database.getServeraddress(),database.getDatabasename(),database.getUsername(),database.getPassword(),sql); JSONArray jsonArray = JSONObject.parseArray(json); JSONArray jsonarr = null; if(jsonArray.getJSONObject(0).get("success").toString().equals("true")) { jsonarr = JSON.parseArray(jsonArray.getJSONObject(0).get("data").toString()); String length = jsonarr.getJSONObject(0).get("ZiDuanKuanDu").toString(); type = Integer.parseInt(length)>5?"long":"short"; } } if(database.getDatabasetype().equalsIgnoreCase("MySQL")){ String sql = "select character_maximum_length as ZiDuanKuanDu from information_schema.columns where table_name='"+database.getTablename()+"') and column_name='"+columnName+"'"; String json=JDBCUtils.SqlServerConnUtils(database.getServeraddress(),database.getDatabasename(),database.getUsername(),database.getPassword(),sql); JSONArray jsonArray = JSONObject.parseArray(json); JSONArray jsonarr = null; if(jsonArray.getJSONObject(0).get("success").toString().equals("true")) { jsonarr = JSON.parseArray(jsonArray.getJSONObject(0).get("data").toString()); String length = jsonarr.getJSONObject(0).get("ZiDuanKuanDu").toString(); if(length!=null && !length.equals("")){ type = Integer.parseInt(length)>5?"long":"short"; } } } return type; } @RequestMapping("/ResManage/ResRegister/ZiDuanBieMingBasic_Edit") public String ZiDuanBieMingBasic_Edit(Model model,Res_ExtDataSource res_extDataSource,String tablename,String primarykey ,Integer resMainInfoId,Integer bianji){ //bianji==1 表示之前有内容,我点了编辑按钮,然后不查询resMainInfoId关联的字符串内容 //第二次打开时,加载之前的配置信息。要做一个判断 model.addAttribute("primarykey",primarykey); Res_ExtDataBase res_extDataBase=resExtDataBaseService.selectByMainInfoId(resMainInfoId); String FileldConfig=""; JSONArray jsonArray = null; List list=new ArrayList(); if(res_extDataBase!=null){ if(!res_extDataBase.getFieldconfig().equals("") && res_extDataBase.getTablename().equals(tablename)){ FileldConfig=res_extDataBase.getFieldconfig(); JSONObject json; json = JSONObject.parseObject(FileldConfig); jsonArray= JSONArray.parseArray(json.getString("sql")); //获取配置字段 for (int i = 0; i < jsonArray.size(); i++) { ZiDuanPeiZi ziDuanPeiZi=JSONUtil.toBean(jsonArray.get(i).toString(), ZiDuanPeiZi.class); if(ziDuanPeiZi.getZiDuanType().equals("int") || ziDuanPeiZi.getZiDuanType().equals("tinyint")){ String js="{\"ZiDuanName\": \""+ziDuanPeiZi.getZiDuanName()+"\"ZiDuanKuanDu\": \""+ziDuanPeiZi.getZiDuanKuanDu()+"\",\"ZiDuanType\": \"整数\",\"ZiDuanBieMing\": \""+ziDuanPeiZi.getZiDuanBieMing()+"\",\"ZiDuanGeShi\": {"+ziDuanPeiZi.getZiDuanGeShi().toJSONString()+"},\"Order\": "+ziDuanPeiZi.getOrder()+"}"; jsonArray.set(i,JSONObject.parseObject(js)); } if(ziDuanPeiZi.getZiDuanType().equals("nvarchar") || ziDuanPeiZi.getZiDuanType().equals("varchar") ||ziDuanPeiZi.getZiDuanType().equals("char")){ String js="{\"ZiDuanName\": \""+ziDuanPeiZi.getZiDuanName()+"\"ZiDuanKuanDu\": \""+ziDuanPeiZi.getZiDuanKuanDu()+"\",\"ZiDuanType\": \"字符串\",\"ZiDuanBieMing\": \""+ziDuanPeiZi.getZiDuanBieMing()+"\",\"ZiDuanGeShi\": {"+ziDuanPeiZi.getZiDuanGeShi().toJSONString()+"},\"Order\": "+ziDuanPeiZi.getOrder()+"}"; jsonArray.set(i,JSONObject.parseObject(js)); } if(ziDuanPeiZi.getZiDuanType().equals("datetime")){ String js="{\"ZiDuanName\": \""+ziDuanPeiZi.getZiDuanName()+"\"ZiDuanKuanDu\": \""+ziDuanPeiZi.getZiDuanKuanDu()+"\",\"ZiDuanType\": \"时间\",\"ZiDuanBieMing\": \""+ziDuanPeiZi.getZiDuanBieMing()+"\",\"ZiDuanGeShi\": {"+ziDuanPeiZi.getZiDuanGeShi().toJSONString()+"},\"Order\": "+ziDuanPeiZi.getOrder()+"}"; jsonArray.set(i,JSONObject.parseObject(js)); } if(ziDuanPeiZi.getZiDuanType().equals("decimal")){ String js="{\"ZiDuanName\": \""+ziDuanPeiZi.getZiDuanName()+"\"ZiDuanKuanDu\": \""+ziDuanPeiZi.getZiDuanKuanDu()+"\",\"ZiDuanType\": \"小数\",\"ZiDuanBieMing\": \""+ziDuanPeiZi.getZiDuanBieMing()+"\",\"ZiDuanGeShi\": {"+ziDuanPeiZi.getZiDuanGeShi().toJSONString()+"},\"Order\": "+ziDuanPeiZi.getOrder()+"}"; jsonArray.set(i,JSONObject.parseObject(js)); } String ZiDuan[]=new String[]{ziDuanPeiZi.getZiDuanName(),ziDuanPeiZi.getZiDuanBieMing(),ziDuanPeiZi.getZiDuanGeShi().toString(),ziDuanPeiZi.getZiDuanKuanDu()}; list.add(ZiDuan); } } } if(bianji==1){ //根据数据源id,查询到账号密码 Res_ExtDataSource resExtDataSource=resExtDataSourceService.selectByPrimaryKey(res_extDataSource.getDatasourceid()); //开始拼接sql,然后判断是哪个数据库 String leirong="0"; JSONArray obj = null; JSONArray ob = null; JSONArray jsonarr = new JSONArray(); if(resExtDataSource.getDatabasetype().equalsIgnoreCase("SQLServer")){ // String sql="SELECT NAME FROM SYSCOLUMNS WHERE ID=OBJECT_ID('"+tablename+"')"; String sql="SELECT a.name NAME,b.name type,cast(g.[value] as varchar(500)) [remarks] FROM syscolumns a left join systypes b on a.xusertype=b.xusertype inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties' left join sys.extended_properties g on a.id=g.major_id and a.colid=g.minor_id where d.name='"+tablename+"' order by a.name"; leirong=JDBCUtils.SqlServerConnUtils(resExtDataSource.getServeraddress(),resExtDataSource.getDatabasename(),resExtDataSource.getUsername(),resExtDataSource.getPassword(),sql); obj = JSON.parseArray(leirong);//获取用户信息 if(obj.getJSONObject(0).get("success").toString().equals("true")) { ob = JSON.parseArray(obj.getJSONObject(0).get("data").toString()); //选择过的资源 int index = -1; for (int j = 0; j < list.size(); j++) { for (int i = 0; i < ob.size(); i++) { Integer k = 0; DateType dateType = JSONUtil.toBean(ob.get(i).toString(), DateType.class); if (dateType.getRemarks() == null) { dateType.setRemarks(""); } String js = ""; String[] listDate = null; //增加一个是否显示要勾选的字段 if (dateType.getNAME().equals(((String[]) list.get(j))[0])) { listDate = (String[]) list.get(j); k = 1; } if(k==1){ index++; js = IsZiDuanXuanZe(k, dateType, js, listDate); jsonarr.set(index, JSONObject.parseObject(js)); } } } for (int m = 0; m < ob.size(); m++) { Integer k = 0; DateType dateType = JSONUtil.toBean(ob.get(m).toString(), DateType.class); if (dateType.getRemarks() == null) { dateType.setRemarks(""); } String js = ""; String[] listDate = null; for (int n = 0; n < list.size(); n++) { //增加一个是否显示要勾选的字段 if (dateType.getNAME().equals(((String[]) list.get(n))[0])) { listDate = (String[]) list.get(n); k = 1; } } if(k!=1){ index++; js = IsZiDuanXuanZe(k, dateType, js, listDate); jsonarr.set(index, JSONObject.parseObject(js)); } } } } if(resExtDataSource.getDatabasetype().equalsIgnoreCase("Oracle")){ // String sql="SELECT USER_TAB_COLS.COLUMN_NAME as name , USER_TAB_COLS.DATA_TYPE as \"type\",user_col_comments.comments as \"remarks\" FROM USER_TAB_COLS inner join user_col_comments on user_col_comments.TABLE_NAME=USER_TAB_COLS.TABLE_NAME and user_col_comments.COLUMN_NAME=USER_TAB_COLS.COLUMN_NAME where USER_TAB_COLS.TABLE_NAME='"+tablename+"'"; String sql ="select distinct(a.column_name) as name,a.comments as \"remarks\",b.data_type as \"type\" from user_tab_columns b,user_col_comments a where a.table_name=b.table_name and a.column_name=b.column_name and a.table_name='"+tablename+"'"; System.out.println(sql); leirong=JDBCUtils.OracleConnUtils(resExtDataSource.getServeraddress(),resExtDataSource.getDatabasename(),resExtDataSource.getUsername(),resExtDataSource.getPassword(),resExtDataSource.getPort(),sql); obj = JSON.parseArray(leirong);//获取用户信息 if(obj.getJSONObject(0).get("success").toString().equals("true")) { ob = JSON.parseArray(obj.getJSONObject(0).get("data").toString()); //选择过的资源 int index = -1; for (int j = 0; j < list.size(); j++) { for (int i = 0; i < ob.size(); i++) { Integer k = 0; DateType dateType = JSONUtil.toBean(ob.get(i).toString(), DateType.class); if (dateType.getRemarks() == null) { dateType.setRemarks(""); } String js = ""; String[] listDate = null; //增加一个是否显示要勾选的字段 if (dateType.getNAME().equals(((String[]) list.get(j))[0])) { listDate = (String[]) list.get(j); k = 1; } if(k==1){ index++; js = IsZiDuanXuanZe(k, dateType, js, listDate); jsonarr.set(index, JSONObject.parseObject(js)); } } } for (int m = 0; m < ob.size(); m++) { Integer k = 0; DateType dateType = JSONUtil.toBean(ob.get(m).toString(), DateType.class); if (dateType.getRemarks() == null) { dateType.setRemarks(""); } String js = ""; String[] listDate = null; for (int n = 0; n < list.size(); n++) { //增加一个是否显示要勾选的字段 if (dateType.getNAME().equals(((String[]) list.get(n))[0])) { listDate = (String[]) list.get(n); k = 1; } } if(k!=1){ index++; js = IsZiDuanXuanZe(k, dateType, js, listDate); jsonarr.set(index, JSONObject.parseObject(js)); } } } } model.addAttribute("list",jsonarr); System.out.println(jsonarr); } if(bianji==null){ bianji=0; } if(bianji==1){ FileldConfig=null; jsonArray = null; } model.addAttribute("jsonArray",jsonArray); model.addAttribute("FileldConfig",FileldConfig); model.addAttribute("pubzyWebRoot", sysConfig.getPubzyWebRoot()); model.addAttribute("systemName", sysConfig.getAppFullName()); return "/ZiYuanZhongXin/ZiDuanBieMingBasic_Edit"; } //sqlserver 数据替换 private String IsZiDuanXuanZe(Integer k, DateType dateType, String js, String[] listDate) { if(k == 1){ if(listDate[2].equals("")){ listDate[2]="{}"; } else if(dateType.getType().equalsIgnoreCase("long") || dateType.getType().equalsIgnoreCase("int") || dateType.getType().equalsIgnoreCase("number") || dateType.getType().equalsIgnoreCase("tinyint")){ js="{\"type\": \"整数\",\"remarks\": \""+listDate[1]+"\",\"NAME\": \""+dateType.getNAME()+"\",\"ZiDuanKuanDu\": \""+listDate[3]+"\",\"ZiDuanXuanZe\": \"1\",\"ZiDuanGeShi\": "+listDate[2]+"}"; } else if(dateType.getType().equalsIgnoreCase("varchar2") || dateType.getType().equalsIgnoreCase("nvarchar2") || dateType.getType().equalsIgnoreCase("nvarchar") || dateType.getType().equalsIgnoreCase("varchar") ||dateType.getType().equalsIgnoreCase("char")){ js="{\"type\": \"字符串\",\"remarks\": \""+listDate[1]+"\",\"NAME\": \""+dateType.getNAME()+"\",\"ZiDuanKuanDu\": \""+listDate[3]+"\",\"ZiDuanXuanZe\": \"1\",\"ZiDuanGeShi\": "+listDate[2]+"}"; } else if(dateType.getType().equalsIgnoreCase("date") || dateType.getType().equalsIgnoreCase("datetime") || dateType.getType().equalsIgnoreCase("TIMESTAMP")){ js="{\"type\": \"时间\",\"remarks\": \""+listDate[1]+"\",\"NAME\": \""+dateType.getNAME()+"\",\"ZiDuanKuanDu\": \""+listDate[3]+"\",\"ZiDuanXuanZe\": \"1\",\"ZiDuanGeShi\": "+listDate[2]+"}"; } else if(dateType.getType().equalsIgnoreCase("decimal") || dateType.getType().equalsIgnoreCase("float") || dateType.getType().equalsIgnoreCase("double")){ js="{\"type\": \"小数\",\"remarks\": \""+listDate[1]+"\",\"NAME\": \""+dateType.getNAME()+"\",\"ZiDuanKuanDu\": \""+listDate[3]+"\",\"ZiDuanXuanZe\": \"1\",\"ZiDuanGeShi\": "+listDate[2]+"}"; } else if(dateType.getType().equalsIgnoreCase("nclob") || dateType.getType().equalsIgnoreCase("blob") || dateType.getType().equalsIgnoreCase("binary") || dateType.getType().equalsIgnoreCase("bit") || dateType.getType().equalsIgnoreCase("tinyblob") || dateType.getType().equalsIgnoreCase("varbinary") || dateType.getType().equalsIgnoreCase("image")){ js="{\"type\": \"二进制对象\",\"remarks\": \""+listDate[1]+"\",\"NAME\": \""+dateType.getNAME()+"\",\"ZiDuanKuanDu\": \""+listDate[3]+"\",\"ZiDuanXuanZe\": \"1\",\"ZiDuanGeShi\": "+listDate[2]+"}"; } else { js="{\"type\": \"字符串\",\"remarks\": \""+listDate[1]+"\",\"NAME\": \""+dateType.getNAME()+"\",\"ZiDuanKuanDu\": \""+listDate[3]+"\",\"ZiDuanXuanZe\": \"1\",\"ZiDuanGeShi\": "+listDate[2]+"}"; } } else{ if(dateType.getType().equalsIgnoreCase("number") || dateType.getType().equalsIgnoreCase("long") || dateType.getType().equalsIgnoreCase("int") || dateType.getType().equalsIgnoreCase("tinyint")){ js="{\"type\": \"整数\",\"remarks\": \""+dateType.getRemarks()+"\",\"NAME\": \""+dateType.getNAME()+"\",\"ZiDuanKuanDu\": \"0\",\"ZiDuanXuanZe\": \"0\",\"ZiDuanGeShi\": \"{}\"}"; } else if(dateType.getType().equalsIgnoreCase("varchar") || dateType.getType().equalsIgnoreCase("varchar2") || dateType.getType().equalsIgnoreCase("nvarchar") || dateType.getType().equalsIgnoreCase("varchar") ||dateType.getType().equalsIgnoreCase("char") || dateType.getType().equalsIgnoreCase("ntext")){ js="{\"type\": \"字符串\",\"remarks\": \""+dateType.getRemarks()+"\",\"NAME\": \""+dateType.getNAME()+"\",\"ZiDuanKuanDu\": \"0\",\"ZiDuanXuanZe\": \"0\",\"ZiDuanGeShi\": \"{}\"}"; } else if(dateType.getType().equalsIgnoreCase("datetime") || dateType.getType().equalsIgnoreCase("date") || dateType.getType().equalsIgnoreCase("TIMESTAMP")){ js="{\"type\": \"时间\",\"remarks\": \""+dateType.getRemarks()+"\",\"NAME\": \""+dateType.getNAME()+"\",\"ZiDuanKuanDu\": \"0\",\"ZiDuanXuanZe\": \"0\",\"ZiDuanGeShi\": \"{}\"}"; } else if(dateType.getType().equalsIgnoreCase("decimal") || dateType.getType().equalsIgnoreCase("float") || dateType.getType().equalsIgnoreCase("double")){ js="{\"type\": \"小数\",\"remarks\": \""+dateType.getRemarks()+"\",\"NAME\": \""+dateType.getNAME()+"\",\"ZiDuanKuanDu\": \"0\",\"ZiDuanXuanZe\": \"0\",\"ZiDuanGeShi\":\"{}\"}"; }else if(dateType.getType().equalsIgnoreCase("nclob") || dateType.getType().equalsIgnoreCase("blob") || dateType.getType().equalsIgnoreCase("binary") || dateType.getType().equalsIgnoreCase("bit") || dateType.getType().equalsIgnoreCase("tinyblob") || dateType.getType().equalsIgnoreCase("varbinary") || dateType.getType().equalsIgnoreCase("image")){ js="{\"type\": \"二进制对象\",\"remarks\": \""+dateType.getRemarks()+"\",\"NAME\": \""+dateType.getNAME()+"\",\"ZiDuanKuanDu\": \"0\",\"ZiDuanXuanZe\": \"0\",\"ZiDuanGeShi\": \"{}\"}"; }else { js="{\"type\": \"字符串\",\"remarks\": \""+dateType.getRemarks()+"\",\"NAME\": \""+dateType.getNAME()+"\",\"ZiDuanKuanDu\": \"0\",\"ZiDuanXuanZe\": \"0\",\"ZiDuanGeShi\": \"{}\"}"; } } return js; } //oracle 数据替换 private String IsOracleZiDuanXuanZe(Integer k, DateType dateType, String js, String[] listDate) { if(k == 1){ if(listDate[2].equals("")){ listDate[2]="{}"; } else if(dateType.getType().equals("NUMBER") || dateType.getType().equals("INTEGER") ||dateType.getType().equals("FLOAT") ){ js="{\"type\": \"整数\",\"remarks\": \""+listDate[1]+"\",\"NAME\": \""+dateType.getNAME()+"\",\"ZiDuanKuanDu\": \""+listDate[3]+"\",\"ZiDuanXuanZe\": \"1\",\"ZiDuanGeShi\": "+listDate[2]+"}"; } else if(dateType.getType().equals("NVARCHAR2") || dateType.getType().equals("VARCHAR2") ||dateType.getType().equals("CHAR") || dateType.getType().equals("NCHAR")){ js="{\"type\": \"字符串\",\"remarks\": \""+listDate[1]+"\",\"NAME\": \""+dateType.getNAME()+"\",\"ZiDuanKuanDu\": \""+listDate[3]+"\",\"ZiDuanXuanZe\": \"1\",\"ZiDuanGeShi\": "+listDate[2]+"}"; } else if(dateType.getType().equals("DATE") || dateType.getType().equals("TIMESTAMP")){ js="{\"type\": \"时间\",\"remarks\": \""+listDate[1]+"\",\"NAME\": \""+dateType.getNAME()+"\",\"ZiDuanKuanDu\": \""+listDate[3]+"\",\"ZiDuanXuanZe\": \"1\",\"ZiDuanGeShi\": "+listDate[2]+"}"; } else if(dateType.getType().equals("DECIMAL")){ js="{\"type\": \"小数\",\"remarks\": \""+listDate[1]+"\",\"NAME\": \""+dateType.getNAME()+"\",\"ZiDuanKuanDu\": \""+listDate[3]+"\",\"ZiDuanXuanZe\": \"1\",\"ZiDuanGeShi\": "+listDate[2]+"}"; }else{ js="{\"type\": \"字符串\",\"remarks\": \""+listDate[1]+"\",\"NAME\": \""+dateType.getNAME()+"\",\"ZiDuanKuanDu\": \""+listDate[3]+"\",\"ZiDuanXuanZe\": \"1\",\"ZiDuanGeShi\": "+listDate[2]+"}"; } } else{ if(dateType.getType().equals("NUMBER") || dateType.getType().equals("INTEGER") ||dateType.getType().equals("FLOAT") ){ js="{\"type\": \"整数\",\"remarks\": \""+dateType.getRemarks()+"\",\"NAME\": \""+dateType.getNAME()+"\",\"ZiDuanKuanDu\": \"0\",\"ZiDuanXuanZe\": \"0\",\"ZiDuanGeShi\": \"{}\"}"; } else if(dateType.getType().equals("NVARCHAR2") || dateType.getType().equals("VARCHAR2") ||dateType.getType().equals("CHAR") || dateType.getType().equals("NCHAR")){ js="{\"type\": \"字符串\",\"remarks\": \""+dateType.getRemarks()+"\",\"NAME\": \""+dateType.getNAME()+"\",\"ZiDuanKuanDu\": \"0\",\"ZiDuanXuanZe\": \"0\",\"ZiDuanGeShi\": \"{}\"}"; } else if(dateType.getType().equals("DATE") || dateType.getType().equals("TIMESTAMP")){ js="{\"type\": \"时间\",\"remarks\": \""+dateType.getRemarks()+"\",\"NAME\": \""+dateType.getNAME()+"\",\"ZiDuanKuanDu\": \"0\",\"ZiDuanXuanZe\": \"0\",\"ZiDuanGeShi\": \"{}\"}"; } else if(dateType.getType().equals("DECIMAL")){ js="{\"type\": \"小数\",\"remarks\": \""+dateType.getRemarks()+"\",\"NAME\": \""+dateType.getNAME()+"\",\"ZiDuanKuanDu\": \"0\",\"ZiDuanXuanZe\": \"0\",\"ZiDuanGeShi\":\"{}\"}"; }else { js="{\"type\": \"字符串\",\"remarks\": \""+dateType.getRemarks()+"\",\"NAME\": \""+dateType.getNAME()+"\",\"ZiDuanKuanDu\": \"0\",\"ZiDuanXuanZe\": \"0\",\"ZiDuanGeShi\": \"{}\"}"; } } return js; } @ResponseBody @RequestMapping("/ZiYuan/BaseLeftSourceShuJu") public String BaseLeftSourceShuJu(SelectShuJuKu selectShuJuKu, Model model, PageBean pageBean){ DataBaseLeftDataSource database=resExtDataBaseService.selectBaseLeftSource(selectShuJuKu.getResourceid()); String sqlConfig=""; String sqlid=""; String leirong=""; JSONArray objList = null; LinkedHashMap ZiDianMap=null; LinkedHashMap SqlMap=null; if(database.getFieldconfig().equals("")){ String sql="SELECT a.name NAME,b.name type,cast(g.[value] as varchar(500)) [remarks] FROM syscolumns a left join systypes b on a.xusertype=b.xusertype inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties' left join sys.extended_properties g on a.id=g.major_id and a.colid=g.minor_id where d.name='"+database.getTablename()+"' order by a.name"; leirong=JDBCUtils.SqlServerConnUtils(database.getServeraddress(),database.getDatabasename(),database.getUsername(),database.getPassword(),sql); objList = JSON.parseArray(leirong);//获取用户信息 for (int i = 0; i < objList.size(); i++) { if(i>0){ sqlConfig+= ","; } DateType dateType=JSONUtil.toBean(objList.get(i).toString(), DateType.class); sqlConfig+=dateType.getNAME(); sqlConfig+=" as \""; sqlConfig+=dateType.getRemarks(); sqlConfig += "\""; } }else { //开始拼接sql,然后判断是哪个数据库 //获取json JSONObject sqlObj = JSON.parseObject(database.getFieldconfig()); JSONArray jsarr = sqlObj.getJSONArray("sql"); sqlConfig=""; //字典处理,记录配置的别名,和配置的字典名称,等查询到结果之后,处理字典 ZiDianMap=new LinkedHashMap<>(); //sql处理,记录配置sql的字段 SqlMap=new LinkedHashMap<>(); for (int i = 0; i < jsarr.size(); i++) { ZiDuanPeiZi ziDuanPeiZi=JSONUtil.toBean(jsarr.get(i).toString(), ZiDuanPeiZi.class); if(i>0){ sqlConfig+= ","; } //sqlserver分页排序 可以写字段名,但是oracl排序设置了别名要用别名排序 if(database.getDatabasetype().equalsIgnoreCase("SQLServer")){ sqlid=((JSONObject) jsarr.get(0)).get("ZiDuanName").toString(); } if(database.getDatabasetype().equalsIgnoreCase("Oracle")){ sqlid=((JSONObject) jsarr.get(0)).get("ZiDuanBieMing").toString(); } String Geshi=ziDuanPeiZi.getZiDuanGeShi().toJSONString(); String ZiDuanMing=ziDuanPeiZi.getZiDuanName(); if(ziDuanPeiZi.getZiDuanType().equals("时间") && Geshi.indexOf("riqi")>0 && Geshi.indexOf("1")>0 ){ if(database.getDatabasetype().equalsIgnoreCase("SQLServer")){ ZiDuanMing="CONVERT(varchar(12),"+ziDuanPeiZi.getZiDuanName()+",111 )"; } if(database.getDatabasetype().equalsIgnoreCase("Oracle")){ ZiDuanMing=" to_date('"+ziDuanPeiZi.getZiDuanName()+"','yyyy-mm-dd')"; } } if(ziDuanPeiZi.getZiDuanType().equals("时间") && Geshi.indexOf("riqi")>0 && Geshi.indexOf("3")>0 ){ if(database.getDatabasetype().equalsIgnoreCase("SQLServer")){ ZiDuanMing="DATENAME(YEAR,"+ziDuanPeiZi.getZiDuanName()+")+'年'+DATENAME(month,"+ziDuanPeiZi.getZiDuanName()+")+'月'+DATENAME(day,"+ziDuanPeiZi.getZiDuanName()+")+'日'"; } if(database.getDatabasetype().equalsIgnoreCase("Oracle")){ ZiDuanMing="to_char("+ziDuanPeiZi.getZiDuanName()+",'yyyy\"年\"MM\"月\"dd\"日\"')"; } } if(ziDuanPeiZi.getZiDuanType().equals("时间") && Geshi.indexOf("riqi")>0 && Geshi.indexOf("4")>0 ){ if(database.getDatabasetype().equalsIgnoreCase("SQLServer")){ ZiDuanMing="DATENAME(YEAR,"+ziDuanPeiZi.getZiDuanName()+")+'年'+DATENAME(month,"+ziDuanPeiZi.getZiDuanName()+")+'月'"; } if(database.getDatabasetype().equalsIgnoreCase("Oracle")){ ZiDuanMing="to_char("+ziDuanPeiZi.getZiDuanName()+",'yyyy\"年\"MM\"月\"')"; } } if(ziDuanPeiZi.getZiDuanType().equals("时间") && Geshi.indexOf("riqi")>0 && Geshi.indexOf("5")>0 ){ if(database.getDatabasetype().equalsIgnoreCase("SQLServer")){ ZiDuanMing="DATENAME(YEAR,"+ziDuanPeiZi.getZiDuanName()+")+'年'"; } if(database.getDatabasetype().equalsIgnoreCase("Oracle")){ ZiDuanMing="to_char(LASTEDITDATE,'yyyy\"年\"')"; } } if(ziDuanPeiZi.getZiDuanType().equals("小数") && Geshi.indexOf("xiaoshudian")>0){ //获取字段保留几位小数 String[] xiaoshu=Geshi.split(":"); //获取到保留几位小数 String num= xiaoshu[1].replace("}","").trim(); if(database.getDatabasetype().equalsIgnoreCase("SQLServer")){ ZiDuanMing="Convert(NUMERIC(18,"+num+"),"+ziDuanPeiZi.getZiDuanName()+")"; } } if(Geshi.indexOf("guanlianzidian")>0){ //获取字典数组 String[] ZiDian=Geshi.split(":"); //获取到关联的是哪个字典 String ZiDianBiaoShi= ZiDian[1].replace("}","").replace("\"","").replace("\"","").trim(); ZiDianMap.put(ziDuanPeiZi.getZiDuanBieMing(),ZiDianBiaoShi); } if(Geshi.indexOf("SQLchaxun")>0){ SqlMap.put(ziDuanPeiZi.getZiDuanBieMing(),JSON.parseObject(Geshi).getJSONArray("SQLchaxun")); } sqlConfig+=ZiDuanMing ; sqlConfig+=" as \""; sqlConfig+=ziDuanPeiZi.getZiDuanBieMing().replace("(","").replace(")","").trim(); sqlConfig += "\""; // map.put(ziDuanPeiZi.getZiDuanName(),ziDuanPeiZi.getZiDuanBieMing()); } } System.out.println(sqlConfig); String sql="select "+sqlConfig+" from "+database.getTablename() ; //查询总数的sql String count ="select count(*) as zongshu from "+database.getTablename(); leirong = "[]"; Integer totalCount=0; if(database.getDatabasetype().equalsIgnoreCase("SQLServer")){ //判断查询有没有 if(selectShuJuKu.getSelcetZiDuan().length()>0){ if(selectShuJuKu.getSelcetZiDuanZhi().length()>0){ count="select count(*) as zongshu from "+database.getTablename() +" where "+selectShuJuKu.getSelcetZiDuan() +" like '%"+selectShuJuKu.getSelcetZiDuanZhi()+"%'"; } } if(selectShuJuKu.getSelcetZiDuan().length()>0){ if(!selectShuJuKu.getPubdateBegin().equals("") || !selectShuJuKu.getPubdatefinish().equals("")){ count="select count(*) as zongshu from "+database.getTablename() +" where "; if(!selectShuJuKu.getPubdateBegin().equals("") && selectShuJuKu.getPubdatefinish().equals("")){ count+=""+selectShuJuKu.getSelcetZiDuan()+" >= CAST ( '"+selectShuJuKu.getPubdateBegin()+"' AS datetime )"; } if(!selectShuJuKu.getPubdatefinish().equals("") && selectShuJuKu.getPubdateBegin().equals("")){ count+=""+selectShuJuKu.getSelcetZiDuan()+" <= CAST ( '"+selectShuJuKu.getPubdatefinish()+"' AS datetime )"; } if(!selectShuJuKu.getPubdatefinish().equals("") && !selectShuJuKu.getPubdateBegin().equals("") ){ count+=""+selectShuJuKu.getSelcetZiDuan()+" >= CAST ( '"+selectShuJuKu.getPubdateBegin()+"' AS datetime )"; count+=" and "; count+=""+selectShuJuKu.getSelcetZiDuan()+" <= CAST ( '"+selectShuJuKu.getPubdatefinish()+"' AS datetime )"; } } } //判断是否是整数查询 if(selectShuJuKu.getSelcetZiDuan().length()>0){ if(selectShuJuKu.getIntNumBegin()!=null || selectShuJuKu.getIntNumfinish()!=null){ count="select count(*) as zongshu from "+database.getTablename()+" where "; if(selectShuJuKu.getIntNumBegin()!=null && selectShuJuKu.getIntNumfinish()==null){ count+=""+selectShuJuKu.getSelcetZiDuan()+" >= "+selectShuJuKu.getIntNumBegin(); } if(selectShuJuKu.getIntNumfinish()!=null && selectShuJuKu.getIntNumBegin()==null){ count+=""+selectShuJuKu.getSelcetZiDuan()+" <= "+selectShuJuKu.getIntNumfinish(); } if(selectShuJuKu.getIntNumfinish()!=null && selectShuJuKu.getIntNumBegin()!=null){ count+=""+selectShuJuKu.getSelcetZiDuan()+" >= "+selectShuJuKu.getIntNumBegin(); count+=" and "; count+=""+selectShuJuKu.getSelcetZiDuan()+" <= "+selectShuJuKu.getIntNumfinish(); } } } String zongshu=JDBCUtils.SqlServerConnUtils(database.getServeraddress(),database.getDatabasename(), database.getUsername(), database.getPassword(),count); JSONArray obj = JSON.parseArray(zongshu); if(obj.getJSONObject(0).get("success").toString().equals("true")) { JSONArray ob = JSON.parseArray(obj.getJSONObject(0).get("data").toString()); Map maps = (Map) JSON.parse(ob.get(0).toString()); totalCount = (int) maps.get("zongshu"); pageBean.setLimit(20); PageBean pageData = new PageBean(pageBean.getPage(), pageBean.getLimit(), (int) maps.get("zongshu")); //拼接sql ,分页查询 String fenye = "select top " + pageBean.getLimit() + " * from (select row_number() over(order by (select 0))as rownumber," + sqlConfig + " from " + database.getTablename() + ") as o where rownumber>" + pageData.getStartIndex() + ""; //判断查询有没有s if (selectShuJuKu.getSelcetZiDuan().length() > 0) { if (selectShuJuKu.getSelcetZiDuanZhi().length() > 0) { fenye = "select top " + pageBean.getLimit() + " * from (select row_number() over(order by (select 0))as rownumber," + sqlConfig + " from " + database.getTablename() + " where " + selectShuJuKu.getSelcetZiDuan() + " like'%" + selectShuJuKu.getSelcetZiDuanZhi() + "%') as o where rownumber>" + pageData.getStartIndex() + ""; } } //判断 是否是时间字段 if (selectShuJuKu.getSelcetZiDuan().length() > 0) { if (!selectShuJuKu.getPubdateBegin().equals("") || !selectShuJuKu.getPubdatefinish().equals("")) { String tiaojian = ""; if (!selectShuJuKu.getPubdateBegin().equals("") && selectShuJuKu.getPubdatefinish().equals("")) { tiaojian += "" + selectShuJuKu.getSelcetZiDuan() + " >= CAST ( '" + selectShuJuKu.getPubdateBegin() + "' AS datetime )"; } if (!selectShuJuKu.getPubdatefinish().equals("") && selectShuJuKu.getPubdateBegin().equals("")) { tiaojian += "" + selectShuJuKu.getSelcetZiDuan() + " <= CAST ( '" + selectShuJuKu.getPubdatefinish() + "' AS datetime )"; } if (!selectShuJuKu.getPubdatefinish().equals("") && !selectShuJuKu.getPubdateBegin().equals("")) { tiaojian += "" + selectShuJuKu.getSelcetZiDuan() + " >= CAST ( '" + selectShuJuKu.getPubdateBegin() + "' AS datetime )"; tiaojian += " and "; tiaojian += "" + selectShuJuKu.getSelcetZiDuan() + " <= CAST ( '" + selectShuJuKu.getPubdatefinish() + "' AS datetime )"; } fenye = "select top " + pageBean.getLimit() + " * from (select row_number() over(order by (select 0))as rownumber," + sqlConfig + " from " + database.getTablename() + " where " + tiaojian + ") as o where rownumber>" + pageData.getStartIndex() + ""; } } //判断 是否是整数查询 if (selectShuJuKu.getSelcetZiDuan().length() > 0) { if (selectShuJuKu.getIntNumBegin() != null || selectShuJuKu.getIntNumfinish() != null) { String tiaojian = ""; if (selectShuJuKu.getIntNumBegin() != null && selectShuJuKu.getIntNumfinish() == null) { tiaojian += "" + selectShuJuKu.getSelcetZiDuan() + " >= " + selectShuJuKu.getIntNumBegin(); } if (selectShuJuKu.getIntNumfinish() != null && selectShuJuKu.getIntNumBegin() == null) { tiaojian += "" + selectShuJuKu.getSelcetZiDuan() + " <= " + selectShuJuKu.getIntNumfinish(); } if (selectShuJuKu.getIntNumfinish() != null && selectShuJuKu.getIntNumBegin() != null) { tiaojian += "" + selectShuJuKu.getSelcetZiDuan() + " >= " + selectShuJuKu.getIntNumBegin(); tiaojian += " and "; tiaojian += "" + selectShuJuKu.getSelcetZiDuan() + " <= " + selectShuJuKu.getIntNumfinish(); } fenye = "select top " + pageBean.getLimit() + " * from (select row_number() over(order by (select 0))as rownumber," + sqlConfig + " from " + database.getTablename() + " where " + tiaojian + ") as o where rownumber>" + pageData.getStartIndex() + ""; } } System.out.println(fenye); leirong = JDBCUtils.SqlServerConnUtils(database.getServeraddress(), database.getDatabasename(), database.getUsername(), database.getPassword(), fenye); //处理关联字典字段 } } if(database.getDatabasetype().equalsIgnoreCase("Oracle")){ //判断查询有没有 if(selectShuJuKu.getSelcetZiDuan().length()>0){ if(selectShuJuKu.getSelcetZiDuanZhi().length()>0){ count="select count(*) as zongshu from "+database.getTablename() +" where "+selectShuJuKu.getSelcetZiDuan() +" like '%"+selectShuJuKu.getSelcetZiDuanZhi()+"%'"; } } if(selectShuJuKu.getSelcetZiDuan().length()>0){ if(!selectShuJuKu.getPubdateBegin().equals("") || !selectShuJuKu.getPubdatefinish().equals("")){ count="select count(*) as zongshu from "+database.getTablename() +" where "; if(!selectShuJuKu.getPubdateBegin().equals("") && selectShuJuKu.getPubdatefinish().equals("")){ count+=""+selectShuJuKu.getSelcetZiDuan()+" >= to_date ( '"+selectShuJuKu.getPubdateBegin()+"','yyyy-mm-dd' )"; } if(!selectShuJuKu.getPubdatefinish().equals("") && selectShuJuKu.getPubdateBegin().equals("")){ count+=""+selectShuJuKu.getSelcetZiDuan()+" <= to_date ( '"+selectShuJuKu.getPubdatefinish()+"' ,'yyyy-mm-dd' )"; } if(!selectShuJuKu.getPubdatefinish().equals("") && !selectShuJuKu.getPubdateBegin().equals("") ){ count+=""+selectShuJuKu.getSelcetZiDuan()+" >= to_date ( '"+selectShuJuKu.getPubdateBegin()+"' ,'yyyy-mm-dd' )"; count+=" and "; count+=""+selectShuJuKu.getSelcetZiDuan()+" <= to_date ( '"+selectShuJuKu.getPubdatefinish()+"' ,'yyyy-mm-dd')"; } } } //判断是否是整数查询 if(selectShuJuKu.getSelcetZiDuan().length()>0){ if(selectShuJuKu.getIntNumBegin()!=null || selectShuJuKu.getIntNumfinish()!=null){ count="select count(*) as zongshu from "+database.getTablename()+" where "; if(selectShuJuKu.getIntNumBegin()!=null && selectShuJuKu.getIntNumfinish()==null){ count+=""+selectShuJuKu.getSelcetZiDuan()+" >= "+selectShuJuKu.getIntNumBegin(); } if(selectShuJuKu.getIntNumfinish()!=null && selectShuJuKu.getIntNumBegin()==null){ count+=""+selectShuJuKu.getSelcetZiDuan()+" <= "+selectShuJuKu.getIntNumfinish(); } if(selectShuJuKu.getIntNumfinish()!=null && selectShuJuKu.getIntNumBegin()!=null){ count+=""+selectShuJuKu.getSelcetZiDuan()+" >= "+selectShuJuKu.getIntNumBegin(); count+=" and "; count+=""+selectShuJuKu.getSelcetZiDuan()+" <= "+selectShuJuKu.getIntNumfinish(); } } } String zongshu=JDBCUtils.OracleConnUtils(database.getServeraddress(),database.getDatabasename(), database.getUsername(), database.getPassword(),database.getPort(),count); JSONArray obj = JSON.parseArray(zongshu); if(obj.getJSONObject(0).get("success").toString().equals("true")) { JSONArray ob = JSON.parseArray(obj.getJSONObject(0).get("data").toString()); Map maps = (Map) JSON.parse(ob.get(0).toString()); totalCount = Integer.parseInt(maps.get("ZONGSHU").toString()); pageBean.setLimit(20); PageBean pageData = new PageBean(pageBean.getPage(), pageBean.getLimit(), totalCount); //拼接sql ,分页查询 //判断查询有没有 if (selectShuJuKu.getSelcetZiDuan().length() > 0) { if (selectShuJuKu.getSelcetZiDuanZhi().length() > 0) { sql = "select " + sqlConfig + " from " + database.getTablename() + " where " + selectShuJuKu.getSelcetZiDuan() + " like '%" + selectShuJuKu.getSelcetZiDuanZhi() + "%'"; } } //判断 是否是时间字段 if (selectShuJuKu.getSelcetZiDuan().length() > 0) { if (!selectShuJuKu.getPubdateBegin().equals("") || !selectShuJuKu.getPubdatefinish().equals("")) { String tiaojian = ""; if (!selectShuJuKu.getPubdateBegin().equals("") && selectShuJuKu.getPubdatefinish().equals("")) { tiaojian += "" + selectShuJuKu.getSelcetZiDuan() + " >= to_date ( '" + selectShuJuKu.getPubdateBegin() + "','yyyy-mm-dd' )"; } if (!selectShuJuKu.getPubdatefinish().equals("") && selectShuJuKu.getPubdateBegin().equals("")) { tiaojian += "" + selectShuJuKu.getSelcetZiDuan() + " <= to_date ( '" + selectShuJuKu.getPubdatefinish() + "' ,'yyyy-mm-dd')"; } if (!selectShuJuKu.getPubdatefinish().equals("") && !selectShuJuKu.getPubdateBegin().equals("")) { tiaojian += "" + selectShuJuKu.getSelcetZiDuan() + " >= to_date ( '" + selectShuJuKu.getPubdateBegin() + "','yyyy-mm-dd' )"; tiaojian += " and "; tiaojian += "" + selectShuJuKu.getSelcetZiDuan() + " <= to_date ( '" + selectShuJuKu.getPubdatefinish() + "' ,'yyyy-mm-dd')"; } sql = "select " + sqlConfig + " from " + database.getTablename() + " where " + tiaojian; } } //判断 是否是整数查询 if (selectShuJuKu.getSelcetZiDuan().length() > 0) { if (selectShuJuKu.getIntNumBegin() != null || selectShuJuKu.getIntNumfinish() != null) { String tiaojian = ""; if (selectShuJuKu.getIntNumBegin() != null && selectShuJuKu.getIntNumfinish() == null) { tiaojian += "" + selectShuJuKu.getSelcetZiDuan() + " >= " + selectShuJuKu.getIntNumBegin(); } if (selectShuJuKu.getIntNumfinish() != null && selectShuJuKu.getIntNumBegin() == null) { tiaojian += "" + selectShuJuKu.getSelcetZiDuan() + " <= " + selectShuJuKu.getIntNumfinish(); } if (selectShuJuKu.getIntNumfinish() != null && selectShuJuKu.getIntNumBegin() != null) { tiaojian += "" + selectShuJuKu.getSelcetZiDuan() + " >= " + selectShuJuKu.getIntNumBegin(); tiaojian += " and "; tiaojian += "" + selectShuJuKu.getSelcetZiDuan() + " <= " + selectShuJuKu.getIntNumfinish(); } sql = "select " + sqlConfig + " from " + database.getTablename() + " where " + tiaojian; } } String fenye = "select * from(select * from(select t.*,row_number() over(order by " + sqlid + ") as rownumber from(" + sql + ") t) p where p.rownumber>" + pageData.getStartIndex() + ") where rownum<= " + pageBean.getLimit(); System.out.println(fenye); leirong = JDBCUtils.OracleConnUtils(database.getServeraddress(), database.getDatabasename(), database.getUsername(), database.getPassword(), database.getPort(), fenye); } } JSONArray obj = JSON.parseArray(leirong); if(obj.getJSONObject(0).get("success").toString().equals("true")) { JSONArray ob = JSON.parseArray(obj.getJSONObject(0).get("data").toString()); //循环获取 字典表 if (ZiDianMap != null) { if (ZiDianMap.size() > 0) { for (String s : ZiDianMap.keySet()) { System.out.println("key : " + s + " value : " + ZiDianMap.get(s)); LinkedHashMap MapTypeList = FieldUtils.getFieldListByKey(ZiDianMap.get(s)); for (int i = 0; i < ob.size(); i++) { JSONObject job = ob.getJSONObject(i); Map m = job; //null值处理 alert ykm 2019/01/03 m.put(s, MapTypeList.get(m.get(s)==null?null : m.get(s).toString())); ob.set(i, JSONUtil.parseFromMap(m)); } } } } //循环 sqlmap 当有关联数据库表的时候才循环 if (SqlMap != null) { if (SqlMap.size() > 0) { for (String s : SqlMap.keySet()) { System.out.println("key : " + s + " value : " + SqlMap.get(s)); SqlMapJson sqlMapJson = JSONUtil.toBean(SqlMap.get(s).get(0).toString(), SqlMapJson.class); String sql1 = "select " + sqlMapJson.getSQLkey() + " as onlykey ," + sqlMapJson.getSQLtext() + " as text from " + sqlMapJson.getSQLtable(); String sqlMapList = JDBCUtils.SqlServerConnUtils(database.getServeraddress(), database.getDatabasename(), database.getUsername(), database.getPassword(), sql1); JSONArray sqlArray = JSON.parseArray(sqlMapList); LinkedHashMap MapTypeList = new LinkedHashMap(); String dataStr = sqlArray.getJSONObject(0).get("data").toString(); JSONArray jsonarray = JSON.parseArray(dataStr); for (int i = 0; i < jsonarray.size(); i++) { String onlykey = jsonarray.getJSONObject(i).get("onlykey").toString(); String text = jsonarray.getJSONObject(i).get("text").toString(); MapTypeList.put(onlykey, text); } for (int i = 0; i < ob.size(); i++) { JSONObject job = ob.getJSONObject(i); Map m = job; //null值处理 alert ykm 2019/01/03 m.put(s, MapTypeList.get(m.get(s) == null ? null : m.get(s).toString())); ob.set(i, JSONUtil.parseFromMap(m)); } System.out.println(JSON.parseArray(sqlMapList)); } } } StringBuilder rsb = new StringBuilder(); rsb.append("{'totalCount':'" + totalCount); rsb.append("','topics':"); rsb.append(ob); rsb.append("}"); return rsb.toString(); } else { StringBuilder rsb = new StringBuilder(); rsb.append("{'totalCount':'" + totalCount); rsb.append("','topics':"); rsb.append("[]"); rsb.append("}"); return rsb.toString(); } } //导出excel @ResponseBody @RequestMapping("/ZiYuan/BaseLeftSourceShuJuExcel") public String BaseLeftSourceShuJuExcel(HttpServletResponse response, SelectShuJuKu selectShuJuKu, Model model, PageBean pageBean) { DataBaseLeftDataSource database = resExtDataBaseService.selectBaseLeftSource(selectShuJuKu.getResourceid()); JSONObject sqlObj = JSON.parseObject(database.getFieldconfig()); JSONArray jsarr = sqlObj.getJSONArray("sql"); String sqlConfig = ""; String sqlid = ""; for (int i = 0; i < jsarr.size(); i++) { if (i > 0) { sqlConfig += ","; } sqlConfig += ((JSONObject) jsarr.get(i)).get("ZiDuanName").toString(); sqlid = ((JSONObject) jsarr.get(0)).get("ZiDuanName").toString(); sqlConfig += " as \""; sqlConfig += ((JSONObject) jsarr.get(i)).get("ZiDuanBieMing").toString(); sqlConfig += "\""; } System.out.println(sqlConfig); //开始拼接sql,然后判断是哪个数据库 String sql = "select " + sqlConfig + " from " + database.getTablename(); //查询总数的sql String count = "select count(*) as zongshu from " + database.getTablename(); String leirong = "[]"; Integer totalCount = 0; if (database.getDatabasetype().equalsIgnoreCase("SQLServer")) { //判断查询有没有 if (selectShuJuKu.getSelcetZiDuan().length() > 0) { if (selectShuJuKu.getSelcetZiDuanZhi().length() > 0) { count = "select count(*) as zongshu from " + database.getTablename() + " where " + selectShuJuKu.getSelcetZiDuan() + " = '" + selectShuJuKu.getSelcetZiDuanZhi() + "'"; } } String zongshu = JDBCUtils.SqlServerConnUtils(database.getServeraddress(), database.getDatabasename(), database.getUsername(), database.getPassword(), count); JSONArray obj = JSON.parseArray(zongshu); if (obj.getJSONObject(0).get("success").toString().equals("true")) { JSONArray ob = JSON.parseArray(obj.getJSONObject(0).get("data").toString()); Map maps = (Map) JSON.parse(ob.get(0).toString()); totalCount = Integer.parseInt(maps.get("zongshu").toString()); pageBean.setLimit(20); PageBean pageData = new PageBean(pageBean.getPage(), pageBean.getLimit(), Integer.parseInt(maps.get("zongshu").toString())); //拼接sql String fenye = "select " + sqlConfig + " from " + database.getTablename(); //判断查询有没有 if (selectShuJuKu.getSelcetZiDuan().length() > 0) { if (selectShuJuKu.getSelcetZiDuanZhi().length() > 0) { fenye = "select " + sqlConfig + " from " + database.getTablename() + " where " + selectShuJuKu.getSelcetZiDuan() + " like '%" + selectShuJuKu.getSelcetZiDuanZhi() + "'%"; } } System.out.println(fenye); leirong = JDBCUtils.SqlServerConnUtils(database.getServeraddress(), database.getDatabasename(), database.getUsername(), database.getPassword(), fenye); } } if (database.getDatabasetype().equalsIgnoreCase("Oracle")) { //判断查询有没有 if (selectShuJuKu.getSelcetZiDuan().length() > 0) { if (selectShuJuKu.getSelcetZiDuanZhi().length() > 0) { count = "select count(*) as zongshu from " + database.getTablename() + " where " + selectShuJuKu.getSelcetZiDuan() + " = '" + selectShuJuKu.getSelcetZiDuanZhi() + "'"; } } String zongshu = JDBCUtils.OracleConnUtils(database.getServeraddress(), database.getDatabasename(), database.getUsername(), database.getPassword(), database.getPort(), count); JSONArray obj = JSON.parseArray(zongshu); if (obj.getJSONObject(0).get("success").toString().equals("true")) { JSONArray ob = JSON.parseArray(obj.getJSONObject(0).get("data").toString()); Map maps = (Map) JSON.parse(ob.get(0).toString()); totalCount = Integer.parseInt(maps.get("ZONGSHU").toString()); pageBean.setLimit(20); PageBean pageData = new PageBean(pageBean.getPage(), pageBean.getLimit(), Integer.parseInt(maps.get("ZONGSHU").toString())); //拼接sql ,分页查询 //判断查询有没有 if (selectShuJuKu.getSelcetZiDuan().length() > 0) { if (selectShuJuKu.getSelcetZiDuanZhi().length() > 0) { sql = "select " + sqlConfig + " from " + database.getTablename() + " where " + selectShuJuKu.getSelcetZiDuan() + " = '" + selectShuJuKu.getSelcetZiDuanZhi() + "'"; } } String fenye = sql; System.out.println(fenye); leirong = JDBCUtils.OracleConnUtils(database.getServeraddress(), database.getDatabasename(), database.getUsername(), database.getPassword(), database.getPort(), fenye); } } JSONArray obj = JSON.parseArray(leirong); if (obj.getJSONObject(0).get("success").toString().equals("true")) { JSONArray ob = JSON.parseArray(obj.getJSONObject(0).get("data").toString()); StringBuilder rsb = new StringBuilder(); rsb.append("{'totalCount':'" + totalCount); rsb.append("','topics':"); rsb.append(ob); rsb.append("}"); Map maps = (Map) JSON.parse(ob.get(0).toString()); String[] list = new String[maps.keySet().size()]; for (int i = 0; i < maps.keySet().size(); i++) { list[i] = (String) maps.keySet().toArray()[i]; } try { String Filename = Excel.ShuJuKugoing(response, list, rsb.toString(), sysConfig.getUploadPath() + "excel\\"); String path2 = "/uploadPath/excel/"; String desFile = path2 + Filename; System.out.println(desFile); return desFile; } catch (IOException e) { e.printStackTrace(); return "异常:" + e.getMessage(); } } else { return "失败:" + obj.getJSONObject(0).get("msg").toString(); } } //查询数据库 有哪些表 @ResponseBody @RequestMapping("/ZiYuan/selectSqlTable") public String selectSqlTable(Res_ExtDataSource res_extDataSource) { //根据数据源id,查询到账号密码 Res_ExtDataSource resExtDataSource = resExtDataSourceService.selectByPrimaryKey(res_extDataSource.getDatasourceid()); //开始拼接sql,然后判断是哪个数据库 String leirong = "0"; if (resExtDataSource.getDatabasetype().equalsIgnoreCase("SQLServer")) { String sql = " select name as TABLENAME from sysobjects where xtype='u' ORDER BY name"; leirong = JDBCUtils.SqlServerConnUtils(resExtDataSource.getServeraddress(), resExtDataSource.getDatabasename(), resExtDataSource.getUsername(), resExtDataSource.getPassword(), sql); } if (resExtDataSource.getDatabasetype().equalsIgnoreCase("Oracle")) { String sql = "SELECT table_name as tablename FROM user_tables ORDER BY tablename"; leirong = JDBCUtils.OracleConnUtils(resExtDataSource.getServeraddress(), resExtDataSource.getDatabasename(), resExtDataSource.getUsername(), resExtDataSource.getPassword(), resExtDataSource.getPort(), sql); } JSONArray obj = JSON.parseArray(leirong); if(obj.getJSONObject(0).get("success").toString().equals("true")) { leirong = obj.getJSONObject(0).get("data").toString(); } return leirong; } //查询数据库表主键 @ResponseBody @RequestMapping("/ZiYuan/selectTableKey") public String selectTableKey(Res_ExtDataSource res_extDataSource,String tablename,Integer resMainInfoId){ //根据数据源id,查询到账号密码 Res_ExtDataSource resExtDataSource = resExtDataSourceService.selectByPrimaryKey(res_extDataSource.getDatasourceid()); String leirong = "0"; if (resExtDataSource.getDatabasetype().equalsIgnoreCase("SQLServer")) { String sql = "select b.column_name as ZHUJIAN from " + "information_schema.table_constraints a inner join " + "information_schema.constraint_column_usage b on a.constraint_name = b.constraint_name " + "where a.constraint_type = 'PRIMARY KEY' and a.table_name = '"+tablename+"'"; leirong = JDBCUtils.SqlServerConnUtils(resExtDataSource.getServeraddress(), resExtDataSource.getDatabasename(), resExtDataSource.getUsername(), resExtDataSource.getPassword(), sql); } if (resExtDataSource.getDatabasetype().equalsIgnoreCase("Oracle")) { String sql = "select col.column_name as zhujian" + " from user_constraints con, user_cons_columns col " + " where con.constraint_name = col.constraint_name " + " and con.constraint_type='P' " + " and col.table_name = '"+tablename+"'"; leirong = JDBCUtils.OracleConnUtils(resExtDataSource.getServeraddress(), resExtDataSource.getDatabasename(), resExtDataSource.getUsername(), resExtDataSource.getPassword(), resExtDataSource.getPort(), sql); } if(!leirong.equals("0")) { JSONArray obj = JSON.parseArray(leirong); if(obj.getJSONObject(0).get("success").toString().equals("true")) { leirong = obj.getJSONObject(0).get("data").toString(); } } return leirong; } @ResponseBody @RequestMapping("/ZiYuan/selectTabFileds") public List selectTabFileds(Res_ExtDataSource res_extDataSource,Integer tabletype,String tablename){ List slist = new ArrayList(); Res_ExtDataSource resExtDataSource = resExtDataSourceService.selectByPrimaryKey(res_extDataSource.getDatasourceid()); if(resExtDataSource.getDatabasetype().equalsIgnoreCase("SQLServer")){ String sql = "SELECT D.column_name AS fieldName,D.data_type AS fieldType,B.is_nullable AS isNullAble FROM SYS.tables A INNER JOIN SYS.columns B ON B.object_id = A.object_id LEFT JOIN SYS.extended_properties C ON C.major_id = B.object_id AND C.minor_id = B.column_id LEFT JOIN(SELECT table_name,column_name,data_type FROM INFORMATION_SCHEMA.COLUMNS)D ON D.column_name = B.name and D.TABLE_NAME = A.name WHERE A.name='"+tablename+"'"; String json=JDBCUtils.SqlServerConnUtils(resExtDataSource.getServeraddress(),resExtDataSource.getDatabasename(),resExtDataSource.getUsername(),resExtDataSource.getPassword(),sql); JSONArray jsonArray = JSONObject.parseArray(json); JSONArray jsonarr = null; if(jsonArray.getJSONObject(0).get("success").toString().equals("true")) { jsonarr = JSON.parseArray(jsonArray.getJSONObject(0).get("data").toString()); for(int i =0;i selectDateField(Res_ExtDataSource res_extDataSource,String tablename,Integer resMainInfoId){ //根据数据源id,查询到账号密码 Res_ExtDataSource resExtDataSource = resExtDataSourceService.selectByPrimaryKey(res_extDataSource.getDatasourceid()); String tableinfo =""; ArrayList slist = new ArrayList(); if (resExtDataSource.getDatabasetype().equalsIgnoreCase("SQLServer")) { String timestamp_sql ="select syscolumns.name as ZiDuanName,systypes.name as ZiDuanType from syscolumns,systypes where syscolumns.xusertype=systypes.xusertype and syscolumns.id=OBJECT_ID('"+tablename+"')"; tableinfo = JDBCUtils.SqlServerConnUtils(resExtDataSource.getServeraddress(), resExtDataSource.getDatabasename(), resExtDataSource.getUsername(), resExtDataSource.getPassword(), timestamp_sql);} if (resExtDataSource.getDatabasetype().equalsIgnoreCase("Oracle")) { String sql = "select t.column_name as "+"\"ZiDuanName\",t.data_type as "+"\"ZiDuanType\" from all_tab_cols t where t.table_name= '"+tablename+"'"; tableinfo = JDBCUtils.OracleConnUtils(resExtDataSource.getServeraddress(), resExtDataSource.getDatabasename(), resExtDataSource.getUsername(), resExtDataSource.getPassword(), resExtDataSource.getPort(), sql); } if(!tableinfo.equals("")){ JSONArray json = JSON.parseArray(tableinfo); if(json.getJSONObject(0).get("success").toString().equals("true")){ String str = json.getJSONObject(0).get("data").toString(); JSONArray jsonArray = JSONArray.parseArray(str); for(int i=0;i DatabaseTypeList = FieldUtils.getFieldListByKey(type);// 获取数据库类型列表 String ResourceTypeListJson = ""; for (Map.Entry entry : DatabaseTypeList.entrySet()) { if (ResourceTypeListJson != ""){ ResourceTypeListJson += ","; } ResourceTypeListJson += "{key:'" + entry.getKey() + "',value:'" + entry.getValue() + "'}"; } return ResourceTypeListJson; } //根据sql查询-对应的属性 @ResponseBody @RequestMapping("/ZiYuan/SQLSource") public String SQLSource(Model model, SqlMapJson sqlMapJson,Integer resourceid){ DataBaseLeftDataSource database=resExtDataBaseService.selectBaseLeftSource(resourceid); String sql1="select "+sqlMapJson.getSQLkey()+" as onlykey ,"+sqlMapJson.getSQLtext()+" as text from "+sqlMapJson.getSQLtable(); String sqlMapList=JDBCUtils.SqlServerConnUtils(database.getServeraddress(),database.getDatabasename(), database.getUsername(), database.getPassword(),sql1); JSONArray sqlArray=JSON.parseArray(sqlMapList); LinkedHashMap MapTypeList =new LinkedHashMap(); for(int i = 0; i < sqlArray.size(); i++){ MapTypeList.put(JSON.parseArray(sqlMapList).getJSONObject(i).get("onlykey").toString(),JSON.parseArray(sqlMapList).getJSONObject(i).get("text").toString()); } String ResourceTypeListJson = ""; for (Map.Entry entry : MapTypeList.entrySet()) { if (ResourceTypeListJson != ""){ ResourceTypeListJson += ","; } ResourceTypeListJson += "{key:'" + entry.getKey() + "',value:'" + entry.getValue() + "'}"; } return ResourceTypeListJson; } }