package com.landtool.lanbase.modules.res.controller; import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; 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.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import com.landtool.lanbase.common.annotation.LogAction; import com.landtool.lanbase.common.utils.Result; import com.landtool.lanbase.config.SysTemPropertyConfig; import com.landtool.lanbase.modules.api.utils.DBConnection; import com.landtool.lanbase.modules.api.utils.PageBean; import com.landtool.lanbase.modules.log.service.LogActionService; import com.landtool.lanbase.modules.org.service.OrgUserService; import com.landtool.lanbase.modules.res.entity.Res_ExtDataSource; import com.landtool.lanbase.modules.res.service.ResExtDataSourceService; import com.landtool.lanbase.modules.sys.controller.AbstractController; import com.landtool.lanbase.modules.sys.entity.SysFieldvalue; import com.landtool.lanbase.modules.sys.service.SysFieldvalueService; /** * 功能描述:数据源管理 */ @Controller @RequestMapping("/res") public class ResExtDataSourceController extends AbstractController{ @Autowired private ResExtDataSourceService resExtDataSourceService; @Autowired private SysTemPropertyConfig sysConfig; @Autowired private SysFieldvalueService FieldUtils; @Autowired private OrgUserService orgUserService; @Autowired private LogActionService logActionService; /** * 列表视图 */ @RequestMapping("/manage/datasource/index") public String index(Model model){ HashMap DatabaseTypeList = FieldUtils.getFieldListByKey("DatabaseType");// 获取数据库类型 model.addAttribute("databasetype", DatabaseTypeList); model.addAttribute("pubzyWebRoot", sysConfig.getPubzyWebRoot()); model.addAttribute("systemName", sysConfig.getAppFullName()); return "manage/datasource/index"; } /** * 编辑视图 */ @RequestMapping("/manage/datasource/edit") public String edit(Model model, Integer datasourceid){ model.addAttribute("datasourceid",datasourceid); model.addAttribute("pubzyWebRoot", sysConfig.getPubzyWebRoot()); model.addAttribute("systemName", sysConfig.getAppFullName()); return "manage/datasource/edit"; } /** * 基本信息视图 */ @RequestMapping("/manage/datasource/baseinfo") public String baseinfo(Model model,Integer datasourceid){ Res_ExtDataSource resExtDataSource = new Res_ExtDataSource(); if (datasourceid != null) { resExtDataSource = resExtDataSourceService.selectByPrimaryKey(datasourceid); } model.addAttribute("datasource", resExtDataSource); model.addAttribute("pubzyWebRoot", sysConfig.getPubzyWebRoot()); model.addAttribute("systemName", sysConfig.getAppFullName()); HashMap DatabaseTypeList = FieldUtils.getFieldListByKey("DatabaseType");// 获取数据库类型列表 model.addAttribute("databasetype", DatabaseTypeList); return "manage/datasource/baseinfo"; } /** * 获取列表数据(共用方法:数据源管理模块的列表、数据库表扩展信息的选择数据源列表) */ @ResponseBody @RequestMapping("/manage/datasource/getlist") @LogAction("资源管理,数据源管理,数据源列表查询,查询") public Result getList(Res_ExtDataSource res_extDataSource, PageBean pageBean){ Page page = PageHelper.startPage(pageBean.getPage(), pageBean.getLimit()); //如果是超级管理员显示所有记录,否则只显示用户新增的记录 if(!SecurityUtils.getSubject().isPermitted("org_user_admin")) { //res_extDataSource.setExistPermission(getUserId().toString()); res_extDataSource.setCreateuserid(getUserId().toString()); } List res_extDataSourceList = resExtDataSourceService.selectAll(res_extDataSource); int countNums = (int) ((Page) res_extDataSourceList).getTotal(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); PageBean pageData = new PageBean<>(pageBean.getPage(), pageBean.getLimit(), countNums); pageData.setItems(res_extDataSourceList); List> maps = new LinkedList<>(); for (Integer i = 0; i < res_extDataSourceList.size(); i++) { // 查询发布人id对应的 name String chinesename = orgUserService.getChinesename(res_extDataSourceList.get(i).getCreateuserid()); Map map = new HashMap<>(); map.put("databasetype", res_extDataSourceList.get(i).getDatabasetype()); map.put("datasourceid", res_extDataSourceList.get(i).getDatasourceid()); map.put("username", res_extDataSourceList.get(i).getUsername()); map.put("password", res_extDataSourceList.get(i).getPassword()); map.put("serveraddress", res_extDataSourceList.get(i).getServeraddress()); map.put("databasename", res_extDataSourceList.get(i).getDatabasename()); map.put("databasealias", res_extDataSourceList.get(i).getDatabasealias()); map.put("tabletype", res_extDataSourceList.get(i).getTabletype()); map.put("port", res_extDataSourceList.get(i).getPort()); map.put("createuserid", chinesename); map.put("createdate", res_extDataSourceList.get(i).getCreatedate()); maps.add(map); } return Result.ok().put("totalCount", countNums).put("topics", maps); } /** * 保存信息 */ @ResponseBody @RequestMapping("/manage/datasource/save") public String save(Res_ExtDataSource res_extDataSource, Model model) { if (res_extDataSource.getDatabasename().equals("")) { res_extDataSource.setDatabasename(null); } if (res_extDataSource.getDatabasetype().equals("")) { res_extDataSource.setDatabasetype(null); } if (res_extDataSource.getUsername().equals("")) { res_extDataSource.setUsername(null); } if (res_extDataSource.getPassword().equals("")) { res_extDataSource.setPassword(null); } if (res_extDataSource.getPort().equals("")) { res_extDataSource.setPort(null); } Timestamp audittime = new Timestamp(new Date().getTime()); res_extDataSource.setCreatedate(audittime); int count = 0; if (res_extDataSource.getDatasourceid() == null) { logActionService.saveLogAction("资源管理,数据源管理,数据源新增,新增"); //添加系统操作日志 // 获取当前登录人id res_extDataSource.setCreateuserid(getUserId().toString()); count = resExtDataSourceService.insert(res_extDataSource); } else { logActionService.saveLogAction("资源管理,数据源管理,数据源修改,修改");//添加系统操作日志 // 获取当前登录人id 修改是否不应该修改创建人ID alert 2018/12/26 // res_extDataSource.setCreateuserid(getUserId().toString()); count = resExtDataSourceService.updateByPrimaryKeySelective(res_extDataSource); } model.addAttribute("datasourceid", res_extDataSource.getDatasourceid()); return "{'count':'" + count + "','id':'" + res_extDataSource.getDatasourceid() + "'}"; } /** * 删除信息 */ @ResponseBody @RequestMapping("/manage/datasource/delete") @LogAction("资源管理,数据源管理,数据源删除,删除") public int delete(Integer datasourceid) { return resExtDataSourceService.deleteByPrimaryKey(datasourceid); } /** * 测试数据库连接 */ @ResponseBody @RequestMapping("/manage/datasource/testconnection") public boolean testConnection(Res_ExtDataSource res_extDataSource) { boolean connection = false; if(res_extDataSource.getDatabasetype().equalsIgnoreCase("Oracle")){ connection = DBConnection.TestOracleConnection(res_extDataSource.getServeraddress(), res_extDataSource.getDatabasename(), res_extDataSource.getUsername(), res_extDataSource.getPassword(), res_extDataSource.getPort()); } if(res_extDataSource.getDatabasetype().equalsIgnoreCase("SQLServer")){ connection = DBConnection.TestSQLServerConnection(res_extDataSource.getServeraddress(), res_extDataSource.getDatabasename(), res_extDataSource.getUsername(), res_extDataSource.getPassword(), res_extDataSource.getPort()); } if(res_extDataSource.getDatabasetype().equalsIgnoreCase("MySQL")){ connection = DBConnection.TestMySQLConnection(res_extDataSource.getServeraddress(), res_extDataSource.getDatabasename(), res_extDataSource.getUsername(), res_extDataSource.getPassword(), res_extDataSource.getPort()); } return connection; } /** * 测试数据库连接(新) */ @ResponseBody @RequestMapping("/manage/datasource/newtestconnection") public boolean newtestconnection(Integer datasourceid) { boolean connection = false; Res_ExtDataSource res_extDataSource = resExtDataSourceService.selectByPrimaryKey(datasourceid); if(res_extDataSource.getDatabasetype().equalsIgnoreCase("Oracle")){ connection = DBConnection.TestOracleConnection(res_extDataSource.getServeraddress(), res_extDataSource.getDatabasename(), res_extDataSource.getUsername(), res_extDataSource.getPassword(), res_extDataSource.getPort()); } if(res_extDataSource.getDatabasetype().equalsIgnoreCase("SQLServer")){ connection = DBConnection.TestSQLServerConnection(res_extDataSource.getServeraddress(), res_extDataSource.getDatabasename(), res_extDataSource.getUsername(), res_extDataSource.getPassword(), res_extDataSource.getPort()); } if(res_extDataSource.getDatabasetype().equalsIgnoreCase("MySQL")){ connection = DBConnection.TestMySQLConnection(res_extDataSource.getServeraddress(), res_extDataSource.getDatabasename(), res_extDataSource.getUsername(), res_extDataSource.getPassword(), res_extDataSource.getPort()); } return connection; } /** * 资源发布 - 数据库表扩展信息 - 选择数据源视图(面板) */ @RequestMapping("/manage/datasource/panel_select") public String panel_select(Model model) { model.addAttribute("pubzyWebRoot", sysConfig.getPubzyWebRoot()); model.addAttribute("systemName", sysConfig.getAppFullName()); HashMap DatabaseTypeList = FieldUtils.getFieldListByKey("DatabaseType");// 获取数据库类型列表 model.addAttribute("databasetype", DatabaseTypeList); return "manage/datasource/panel_select"; } /** * 资源发布 - 数据库表扩展信息 - 新增数据源视图(面板) */ // @RequestMapping("/manage/datasource/panel_add") // public String panel_add(Model model, Integer datasourceid) { // Res_ExtDataSource resExtDataSource = new Res_ExtDataSource(); // if (datasourceid != null) { // resExtDataSource = resExtDataSourceService.selectByPrimaryKey(datasourceid); // } // model.addAttribute("datasource", resExtDataSource); // model.addAttribute("pubzyWebRoot", sysConfig.getPubzyWebRoot()); // model.addAttribute("systemName", sysConfig.getAppFullName()); // HashMap DatabaseTypeList = FieldUtils.getFieldListByKey("DatabaseType");// 获取数据库类型列表 // model.addAttribute("databasetype", DatabaseTypeList); // return "manage/datasource/panel_add"; // } @RequestMapping("ResManage/ResRegister/DisplayType") public String DisplayType(Model model,Integer id) { model.addAttribute("pubzyWebRoot", sysConfig.getPubzyWebRoot()); model.addAttribute("id",id); //加载字典目录 List list= FieldUtils.queryListAll(); model.addAttribute("KeyList",list); return "ResManage/ResRegister/DisplayType"; } //================================= // @ResponseBody // @RequestMapping("selectDataSource") // public String selectDataSource(PageBean pageBean, Res_ExtDataSource res_extDataSource) { // PageHelper.startPage(pageBean.getPage(), pageBean.getLimit()); // // //如果是超级管理员显示所有记录,否则只显示用户新增的记录 // if(!SecurityUtils.getSubject().isPermitted("org_user_admin")) { // //res_extDataSource.setExistPermission(getUserId().toString()); // res_extDataSource.setCreateuserid(getUserId().toString()); // } // // List res_extDataSources = resExtDataSourceService.selectAll(res_extDataSource); // int countNums = (int) ((Page) res_extDataSources).getTotal(); // PageBean pageData = new PageBean<>(pageBean.getPage(), pageBean.getLimit(), countNums); // pageData.setItems(res_extDataSources); // // StringBuilder rsb = new StringBuilder(); // rsb.append("{'totalCount':'" + countNums); // rsb.append("','topics':["); // for (Integer i = 0; i < res_extDataSources.size(); i++) { // if (i != 0) { // rsb.append(","); // } // rsb.append("{'datasourceid':'" + res_extDataSources.get(i).getDatasourceid() + "'"); // rsb.append(",'databasetype':'" + res_extDataSources.get(i).getDatabasetype() + "'"); // if(res_extDataSources.get(i).getDatabasealias() != null) { // rsb.append(",'databasealias':'" + res_extDataSources.get(i).getDatabasealias() + "'"); // } // else { // rsb.append(",'databasealias':''"); // } // // rsb.append(",'databasename':'" + res_extDataSources.get(i).getDatabasename() + "'}"); // } // rsb.append("]}"); // return rsb.toString(); // } //=================================== // @RequestMapping("ResManage/ResRegister/ShuJuYuan") // public String muLuShu(Model model) { // model.addAttribute("pubzyWebRoot", sysConfig.getPubzyWebRoot()); // model.addAttribute("systemName", sysConfig.getAppFullName()); // HashMap DatabaseTypeList = FieldUtils.getFieldListByKey("DatabaseType");// 获取数据库类型列表 // model.addAttribute("databasetype", DatabaseTypeList); // return "ResManage/ResRegister/ShuJuYuan"; // } //===================================== // @RequestMapping("ResManage/ResRegister/ShuJuYuanInsert") // public String ShuJuYuanInsert(Model model, Integer datasourceid) { // Res_ExtDataSource resExtDataSource = new Res_ExtDataSource(); // if (datasourceid != null) { // resExtDataSource = resExtDataSourceService.selectByPrimaryKey(datasourceid); // } // model.addAttribute("datasource", resExtDataSource); // model.addAttribute("pubzyWebRoot", sysConfig.getPubzyWebRoot()); // model.addAttribute("systemName", sysConfig.getAppFullName()); // HashMap DatabaseTypeList = FieldUtils.getFieldListByKey("DatabaseType");// 获取数据库类型列表 // model.addAttribute("databasetype", DatabaseTypeList); // return "ResManage/ResRegister/ShuJuYuanInsert"; // } //================================= // @ResponseBody // @RequestMapping("ResManage/ResRegister/addShuJuYuanSave") // public String addShuJuYuanSave(Res_ExtDataSource res_extDataSource, Model model) { // if (res_extDataSource.getDatabasename().equals("")) { // res_extDataSource.setDatabasename(null); // } // if (res_extDataSource.getDatabasetype().equals("")) { // res_extDataSource.setDatabasetype(null); // } // if (res_extDataSource.getUsername().equals("")) { // res_extDataSource.setUsername(null); // } // if (res_extDataSource.getPassword().equals("")) { // res_extDataSource.setPassword(null); // } // if (res_extDataSource.getPort().equals("")) { // res_extDataSource.setPort(null); // } // Timestamp audittime = new Timestamp(new Date().getTime()); // res_extDataSource.setCreatedate(audittime); // int count = 0; // if (res_extDataSource.getDatasourceid() == null) { // logActionService.saveLogAction("资源管理,数据源管理,数据源新增,新增"); //添加系统操作日志 // // 获取当前登录人id // res_extDataSource.setCreateuserid(getUserId().toString()); // count = resExtDataSourceService.insert(res_extDataSource); // } else { // logActionService.saveLogAction("资源管理,数据源管理,数据源修改,修改");//添加系统操作日志 // // 获取当前登录人id // res_extDataSource.setCreateuserid(getUserId().toString()); // count = resExtDataSourceService.updateByPrimaryKey(res_extDataSource); // } // // model.addAttribute("datasourceid", res_extDataSource.getDatasourceid()); // return "{'count':'" + count + "','id':'" + res_extDataSource.getDatasourceid() + "'}"; // } /** * 测试数据库连接================================== * @param res_extDataSource * @return */ // @ResponseBody // @RequestMapping("ResManage/ResRegister/TestConnection") // public boolean TestConnection(Res_ExtDataSource res_extDataSource) { // boolean connection = false; // if(res_extDataSource.getDatabasetype().equalsIgnoreCase("Oracle")){ // connection = DBConnection.TestOracleConnection(res_extDataSource.getServeraddress(), res_extDataSource.getDatabasename(), // res_extDataSource.getUsername(), res_extDataSource.getPassword(), res_extDataSource.getPort()); // } // if(res_extDataSource.getDatabasetype().equalsIgnoreCase("SQLServer")){ // connection = DBConnection.TestSQLServerConnection(res_extDataSource.getServeraddress(), res_extDataSource.getDatabasename(), // res_extDataSource.getUsername(), res_extDataSource.getPassword(), res_extDataSource.getPort()); // } // if(res_extDataSource.getDatabasetype().equalsIgnoreCase("MySQL")){ // connection = DBConnection.TestMySQLConnection(res_extDataSource.getServeraddress(), res_extDataSource.getDatabasename(), // res_extDataSource.getUsername(), res_extDataSource.getPassword(), res_extDataSource.getPort()); // } // return connection; // } //======================================== // @ResponseBody // @RequestMapping("ResManage/ResRegister/deleteShuJuYuan") // @LogAction("资源管理,数据源管理,数据源删除,删除") // public int deleteShuJuYuan(Integer datasourceid) { // return resExtDataSourceService.deleteByPrimaryKey(datasourceid); // } //数据源管理 ============= // @RequestMapping("ResManage/ResRegister/DataSource") // public String DataSource(Model model){ // HashMap DatabaseTypeList = FieldUtils.getFieldListByKey("DatabaseType");// 获取数据库类型列表 // model.addAttribute("databasetype", DatabaseTypeList); // model.addAttribute("pubzyWebRoot", sysConfig.getPubzyWebRoot()); // return "ResManage/ResRegister/DataSource"; // } //查询数据源数据==================== // @ResponseBody // @RequestMapping("ResManage/ResRegister/DataSourceData") // @LogAction("资源管理,数据源管理,数据源列表查询,查询") // public String DataSourceData(Res_ExtDataSource res_extDataSource,PageBean pageBean){ // Page page = PageHelper.startPage(pageBean.getPage(), pageBean.getLimit()); // // if(!SecurityUtils.getSubject().isPermitted("org_user_admin")) { // //如果是超级管理员,不添加用户id,查询所有。如果不是 添加id 查询单个 // res_extDataSource.setExistPermission(getUserId().toString()); // // System.out.println("你是超级管理员"); // } // List res_extDataSourceList=resExtDataSourceService.SelectDataSource(res_extDataSource); // int countNums = (int) ((Page) res_extDataSourceList).getTotal(); // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // PageBean pageData = new PageBean<>(pageBean.getPage(), pageBean.getLimit(), countNums); // pageData.setItems(res_extDataSourceList); // StringBuilder rsb = new StringBuilder(); // rsb.append("{'totalCount':'" + countNums); // rsb.append("','topics':["); // for (Integer i = 0; i < res_extDataSourceList.size(); i++) { // if (i != 0) { // rsb.append(","); // } // rsb.append("{'databasetype':'" + res_extDataSourceList.get(i).getDatabasetype() + "'"); // rsb.append(",'datasourceid':'" + res_extDataSourceList.get(i).getDatasourceid()+ "'"); // rsb.append(",'username':'" + res_extDataSourceList.get(i).getUsername()+ "'"); // rsb.append(",'password':'" + res_extDataSourceList.get(i).getPassword()+ "'"); // rsb.append(",'serveraddress':'" + res_extDataSourceList.get(i).getServeraddress()+ "'"); // rsb.append(",'databasename':'" + res_extDataSourceList.get(i).getDatabasename()+ "'"); // rsb.append(",'port':'" + res_extDataSourceList.get(i).getPort()+ "'"); // // 查询发布人id对应的 name // String chinesename = orgUserService.getChinesename(res_extDataSourceList.get(i).getCreateuserid()); // rsb.append(",'createuserid':'" + chinesename+ "'"); // rsb.append(",'createdate':'" + res_extDataSourceList.get(i).getCreatedate()); // rsb.append("'}"); // } // rsb.append("]}"); // return rsb.toString(); // } //数据源查看页面================== // @RequestMapping("ResManage/ResRegister/DataSourceBase") // public String DataSourceBase(Model model,Integer datasourceid){ // model.addAttribute("datasourceid",datasourceid); // model.addAttribute("pubzyWebRoot", sysConfig.getPubzyWebRoot()); // return "ResManage/ResRegister/DataSourceBase"; // } //数据源编辑查看页面================== // @RequestMapping("ResManage/ResRegister/DataSourceBase_Edit") // public String DataSourceBaseEdit(Model model,Integer datasourceid){ // Res_ExtDataSource resExtDataSource = new Res_ExtDataSource(); // if (datasourceid != null) { // resExtDataSource = resExtDataSourceService.selectByPrimaryKey(datasourceid); // } // model.addAttribute("datasource", resExtDataSource); // model.addAttribute("pubzyWebRoot", sysConfig.getPubzyWebRoot()); // model.addAttribute("systemName", sysConfig.getAppFullName()); // HashMap DatabaseTypeList = FieldUtils.getFieldListByKey("DatabaseType");// 获取数据库类型列表 // model.addAttribute("databasetype", DatabaseTypeList); // return "ResManage/ResRegister/DataSourceBase_Edit"; // } }