byd扫描漏洞。

This commit is contained in:
wangzhijiang
2024-03-20 15:26:06 +08:00
parent f1ab8f1db2
commit 719bf597f3
358 changed files with 24 additions and 114858 deletions
@@ -103,6 +103,7 @@ public interface ISysBaseAPI extends CommonAPI {
* @param code
* @return
*/
@Override
@GetMapping("/sys/api/queryDictItemsByCode")
List<DictModel> queryDictItemsByCode(@RequestParam("code") String code);
@@ -111,6 +112,7 @@ public interface ISysBaseAPI extends CommonAPI {
* @param code
* @return
*/
@Override
@GetMapping("/sys/api/queryEnableDictItemsByCode")
public List<DictModel> queryEnableDictItemsByCode(@RequestParam("code") String code);
@@ -132,6 +134,7 @@ public interface ISysBaseAPI extends CommonAPI {
* @param code
* @return
*/
@Override
@GetMapping("/sys/api/queryTableDictItemsByCode")
List<DictModel> queryTableDictItemsByCode(@RequestParam("table") String table, @RequestParam("text") String text, @RequestParam("code") String code);
@@ -314,6 +317,7 @@ public interface ISysBaseAPI extends CommonAPI {
* @param username
* @return
*/
@Override
@GetMapping("/sys/api/queryUserRoles")
Set<String> queryUserRoles(@RequestParam("username") String username);
@@ -322,6 +326,7 @@ public interface ISysBaseAPI extends CommonAPI {
* @param username
* @return
*/
@Override
@GetMapping("/sys/api/queryUserAuths")
Set<String> queryUserAuths(@RequestParam("username") String username);
@@ -331,6 +336,7 @@ public interface ISysBaseAPI extends CommonAPI {
* @param dbSourceId
* @return
*/
@Override
@GetMapping("/sys/api/getDynamicDbSourceById")
DynamicDataSourceModel getDynamicDbSourceById(@RequestParam("dbSourceId") String dbSourceId);
@@ -340,6 +346,7 @@ public interface ISysBaseAPI extends CommonAPI {
* @param dbSourceCode
* @return
*/
@Override
@GetMapping("/sys/api/getDynamicDbSourceByCode")
DynamicDataSourceModel getDynamicDbSourceByCode(@RequestParam("dbSourceCode") String dbSourceCode);
@@ -347,6 +354,7 @@ public interface ISysBaseAPI extends CommonAPI {
* 39根据用户账号查询用户信息 CommonAPI中定义
* @param username
*/
@Override
@GetMapping("/sys/api/getUserByName")
LoginUser getUserByName(@RequestParam("username") String username);
@@ -358,6 +366,7 @@ public interface ISysBaseAPI extends CommonAPI {
* @param key
* @return
*/
@Override
@GetMapping("/sys/api/translateDictFromTable")
String translateDictFromTable(@RequestParam("table") String table, @RequestParam("text") String text, @RequestParam("code") String code, @RequestParam("key") String key);
@@ -367,6 +376,7 @@ public interface ISysBaseAPI extends CommonAPI {
* @param key
* @return
*/
@Override
@GetMapping("/sys/api/translateDict")
String translateDict(@RequestParam("code") String code, @RequestParam("key") String key);
@@ -374,6 +384,7 @@ public interface ISysBaseAPI extends CommonAPI {
* 42查询数据权限
* @return
*/
@Override
@GetMapping("/sys/api/queryPermissionDataRule")
List<SysPermissionDataRuleModel> queryPermissionDataRule(@RequestParam("component") String component, @RequestParam("requestPath") String requestPath, @RequestParam("username") String username);
@@ -382,6 +393,7 @@ public interface ISysBaseAPI extends CommonAPI {
* @param username
* @return
*/
@Override
@GetMapping("/sys/api/getCacheUser")
SysUserCacheInfo getCacheUser(@RequestParam("username") String username);
@@ -525,7 +537,6 @@ public interface ISysBaseAPI extends CommonAPI {
* @param keys 多个用逗号分割
* @return
*/
@Override
@GetMapping("/sys/api/translateDictFromTableByKeys")
List<DictModel> translateDictFromTableByKeys(@RequestParam("table") String table, @RequestParam("text") String text, @RequestParam("code") String code, @RequestParam("keys") String keys);
@@ -315,24 +315,6 @@ public interface ISysBaseAPI extends CommonAPI {
*/
List<String> loadCategoryDictItem(String ids);
/**
* 根据字典code加载字典text
*
* @param dictCode 顺序:tableName,text,code
* @param keys 要查询的key
* @return
*/
List<String> loadDictItem(String dictCode, String keys);
/**
* 根据字典code查询字典项
*
* @param dictCode 顺序:tableName,text,code
* @param dictCode 要查询的key
* @return
*/
List<DictModel> getDictItems(String dictCode);
/**
* 根据多个字典code查询多个字典项
* @param dictCodeList
@@ -340,15 +322,5 @@ public interface ISysBaseAPI extends CommonAPI {
*/
Map<String, List<DictModel>> getManyDictItems(List<String> dictCodeList);
/**
* 【JSearchSelectTag下拉搜索组件专用接口】
* 大数据量的字典表 走异步加载 即前端输入内容过滤数据
*
* @param dictCode 字典code格式:table,text,code
* @param keyword 过滤关键字
* @return
*/
List<DictModel> loadDictItemByKeyword(String dictCode, String keyword, Integer pageSize);
String translateByDictMap(Map<String, String> dictMap, String keys);
}
@@ -110,16 +110,6 @@ public interface CommonAPI {
*/
Map<String, List<DictModel>> translateManyDict(String dictCodes, String keys);
/**
* 15 字典表的 翻译,可批量
* @param table
* @param text
* @param code
* @param keys 多个用逗号分割
* @return
*/
List<DictModel> translateDictFromTableByKeys(String table, String text, String code, String keys);
/**
* 14获取全部字典
* @author lqt
@@ -1,37 +0,0 @@
package com.jero.common.constant.enums;
/**
* 中英文切换标识
* @description
* @date 2022/1/21 15:22
* @auth zhn
*/
public enum IsMustEnum {
YES("","1"),
NO("","0");
String name;
String value;
private IsMustEnum(String name, String value) {
this.name = name;
this.value = value;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
@@ -1,42 +0,0 @@
package com.jero.common.constant.enums;
public enum MessageType2Enum {
SUBSCRIPTION_NOTIFICATION("Subscription Notification","订阅通知"),
SHARE_FORWARD("Share Forward","转发推送"),
REGULATION_EARLY_WARNING("Regulation Early Warning","法规预警"),
REGULATION_LIST_CONFIRMATION("Regulation List Confirmation","法规清单确认"),
REGULATION_TASK_CONFIRMATION("Regulation Task Confirmation","法规任务确认"),
DESIGN_COMPLIANCE_CONFIRMATION("Design Compliance Confirmation","设计符合性确认"),
PRE_HOMO_CONFIRMATION("Pre-Homo Confirmation","Pre-Homo确认"),
VALIDATION_COMPLIANCE_CONFIRMATION("Validation Compliance Confirmation","验证符合性确认"),
REGULATION_OPINION_COLLECTION("Regulation Opinion Collection","法规意见收集"),
REGULATION_TECHNICAL_ASSESSMENT("Regulation Technical Assessment","法规技术评估"),
HOMO_PARAMETER_COLLECTION("Homo Parameter Collection","认证参数收集"),
CERTIFICATION_LIST_CONFIRMATION("Certification List Confirmation","认证清单确认");
String en;
String cn;
MessageType2Enum(String en, String cn) {
this.en = en;
this.cn = cn;
}
public String getEn() {
return en;
}
public void setEn(String en) {
this.en = en;
}
public String getCn() {
return cn;
}
public void setCn(String cn) {
this.cn = cn;
}
}
@@ -1,65 +0,0 @@
package com.jero.common.constant.enums;
/**
* @description
* @date 2022/1/21 15:22
* @auth zhn
*/
public enum MessageTypeEnum {
READ("Subscription Notification","订阅通知","1"),
WARN("Regulation Early Warning","法规预警","2"),
PUSH("Share / Forward","转发推送","3"),
HOMO_TASK("Homo Parameter Task","","4"),
TASK("Regulation Compliance Task","", "5"),
//REGULATION_LIST_CONFIRMATION_TASK("Regulation List Confirmation Task", "6"), // 清单确认任务
//REGULATION_LIST_CONFIRMATION_NOTIFICATION("Regulation List Confirmation Notification", "7"), // 清单确认通知
//REGULATION_TASK_CONFIRMATION_TASK("Regulation Task Confirmation", "8"), // 任务确认任务
//REGULATION_TASK_CONFIRMATION_NOTIFICATION("Regulation Task Confirmation Notification", "15"), // 任务确认通知
//DESIGN_COMPLIANCE_TASK("Design Compliance Task", "9"), // 设计符合性任务
//PRE_HOMO_TASK("Pre-Homo Task", "10"), // Pre-Homo任务
//VALIDATION_TASK("Validation Compliance Task", "11"), // 验证符合性任务
//DESIGN_COMPLIANCE_NOTIFICATION("Design Compliance Notification", "12"), // 设计符合性通知
//PRE_HOMO_NOTIFICATION("Pre-Homo Notification", "13"), // Pre-Homo通知
//VALIDATION_COMPLIANCE_NOTIFICATION("Validation Compliance Notification", "14"), // 验证符合性通知
SYSTEMATIC_NOTIFICATION("Systematic Notification","系统通知", "15"), // 系统通知
LIST_CONFIRMATION("List Confirmation", "","17"), // 清单确认
TASK_CONFIRMATION("Task Confirmation", "","18"), // 任务确认
COMPLIANCE_CONFIRMATION("Compliance Confirmation","", "19"), // 符合性确认
COLLECTION_OF_LEGISLATIVE_COMMENTS("Collection of Legislative Comments","", "20"), // 法规意见收集
REGULATORY_AND_TECHNICAL_ASSESSMENT("Regulatory and technical assessment", "","21"), // 法规技术评估
;
String name;
String nameCn;
String value;
private MessageTypeEnum(String name,String nameCn, String value) {
this.name = name;
this.nameCn = nameCn;
this.value = value;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getNameCn() {
return nameCn;
}
public void setNameCn(String nameCn) {
this.nameCn = nameCn;
}
}
@@ -1,32 +0,0 @@
package com.jero.common.constant.enums;
public enum MsgColorEnum {
GREEN("其他","green"),
RED("任务被拒绝","red"),
YELLOW("任务逾期","yellow");
String label;
String value;
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
MsgColorEnum(String label, String value) {
this.label = label;
this.value = value;
}
}
@@ -1,302 +0,0 @@
package com.jero.common.util.dynamic.db;
import com.alibaba.druid.pool.DruidDataSource;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.vo.DynamicDataSourceModel;
import com.jero.common.util.ReflectHelper;
import com.jero.common.util.oConvertUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* Spring JDBC 实时数据库访问
*
* @author chenguobin
* @version 1.0
* @date 2014-09-05
*/
@Slf4j
public class DynamicDBUtil {
private DynamicDBUtil(){
}
/**
* 获取数据源【最底层方法,不要随便调用】
*
* @param dbSource
* @return
*/
private static DruidDataSource getJdbcDataSource(final DynamicDataSourceModel dbSource) {
DruidDataSource dataSource = new DruidDataSource();
String driverClassName = dbSource.getDbDriver();
String url = dbSource.getDbUrl();
String dbUser = dbSource.getDbUsername();
String dbPassword = dbSource.getDbPassword();
dataSource.setDriverClassName(driverClassName);
dataSource.setUrl(url);
dataSource.setTestWhileIdle(true);
dataSource.setTestOnBorrow(false);
dataSource.setTestOnReturn(false);
dataSource.setBreakAfterAcquireFailure(true);
dataSource.setConnectionErrorRetryAttempts(0);
dataSource.setUsername(dbUser);
dataSource.setMaxWait(30000);
dataSource.setPassword(dbPassword);
log.info("******************************************");
log.info("* *");
log.info("*====【"+dbSource.getCode()+"】=====Druid连接池已启用 ====*");
log.info("* *");
log.info("******************************************");
return dataSource;
}
/**
* 通过 dbKey ,获取数据源
*
* @param dbKey
* @return
*/
public static DruidDataSource getDbSourceByDbKey(final String dbKey) {
//获取多数据源配置
DynamicDataSourceModel dbSource = DataSourceCachePool.getCacheDynamicDataSourceModel(dbKey);
//先判断缓存中是否存在数据库链接
DruidDataSource cacheDbSource = DataSourceCachePool.getCacheBasicDataSource(dbKey);
if (cacheDbSource != null && !cacheDbSource.isClosed()) {
log.debug("--------getDbSourceBydbKey------------------从缓存中获取DB连接-------------------");
return cacheDbSource;
} else {
DruidDataSource dataSource = getJdbcDataSource(dbSource);
if(dataSource.isEnable()){
DataSourceCachePool.putCacheBasicDataSource(dbKey, dataSource);
}else{
throw new JeroBootException("动态数据源连接失败,dbKey"+dbKey);
}
log.info("--------getDbSourceBydbKey------------------创建DB数据库连接-------------------");
return dataSource;
}
}
/**
* 关闭数据库连接池
*
* @param dbKey
* @return
*/
public static void closeDbKey(final String dbKey) {
DruidDataSource dataSource = getDbSourceByDbKey(dbKey);
try {
if (dataSource != null && !dataSource.isClosed()) {
dataSource.getConnection().commit();
dataSource.getConnection().close();
dataSource.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
private static JdbcTemplate getJdbcTemplate(String dbKey) {
DruidDataSource dataSource = getDbSourceByDbKey(dbKey);
return new JdbcTemplate(dataSource);
}
/**
* Executes the SQL statement in this <code>PreparedStatement</code> object,
* which must be an SQL Data Manipulation Language (DML) statement, such as <code>INSERT</code>, <code>UPDATE</code> or
* <code>DELETE</code>; or an SQL statement that returns nothing,
* such as a DDL statement.
*/
public static int update(final String dbKey, String sql, Object... param) {
int effectCount;
JdbcTemplate jdbcTemplate = getJdbcTemplate(dbKey);
if (ArrayUtils.isEmpty(param)) {
effectCount = jdbcTemplate.update(sql);
} else {
effectCount = jdbcTemplate.update(sql, param);
}
return effectCount;
}
/**
* 支持miniDao语法操作的Update
*
* @param dbKey 数据源标识
* @param sql 执行sql语句,sql支持minidao语法逻辑
* @param data sql语法中需要判断的数据及sql拼接注入中需要的数据
* @return
*/
public static int updateByHash(final String dbKey, String sql, Map<String, Object> data) {
int effectCount;
JdbcTemplate jdbcTemplate = getJdbcTemplate(dbKey);
//根据模板获取sql
sql = FreemarkerParseFactory.parseTemplateContent(sql, data);
NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(Objects.requireNonNull(jdbcTemplate.getDataSource()));
effectCount = namedParameterJdbcTemplate.update(sql, data);
return effectCount;
}
public static Object findOne(final String dbKey, String sql, Object... param) {
List<Map<String, Object>> list;
list = findList(dbKey, sql, param);
if (oConvertUtils.listIsEmpty(list)) {
log.error("Except one, but not find actually");
return null;
}
if (list.size() > 1) {
log.error("Except one, but more than one actually");
}
return list.get(0);
}
/**
* 支持miniDao语法操作的查询 返回HashMap
*
* @param dbKey 数据源标识
* @param sql 执行sql语句,sql支持minidao语法逻辑
* @param data sql语法中需要判断的数据及sql拼接注入中需要的数据
* @return
*/
public static Object findOneByHash(final String dbKey, String sql, Map<String, Object> data) {
List<Map<String, Object>> list;
list = findListByHash(dbKey, sql, data);
if (oConvertUtils.listIsEmpty(list)) {
log.error("Except one, but not find actually");
}
if (list.size() > 1) {
log.error("Except one, but more than one actually");
}
return list.get(0);
}
/**
* 直接sql查询 根据clazz返回单个实例
*
* @param dbKey 数据源标识
* @param sql 执行sql语句
* @param clazz 返回实例的Class
* @param param
* @return
*/
@SuppressWarnings("unchecked")
public static <T> Object findOne(final String dbKey, String sql, Class<T> clazz, Object... param) {
Map<String, Object> map = (Map<String, Object>) findOne(dbKey, sql, param);
return ReflectHelper.setAll(clazz, map);
}
/**
* 支持miniDao语法操作的查询 返回单个实例
*
* @param dbKey 数据源标识
* @param sql 执行sql语句,sql支持minidao语法逻辑
* @param clazz 返回实例的Class
* @param data sql语法中需要判断的数据及sql拼接注入中需要的数据
* @return
*/
@SuppressWarnings("unchecked")
public static <T> Object findOneByHash(final String dbKey, String sql, Class<T> clazz, Map<String, Object> data) {
Map<String, Object> map = (Map<String, Object>) findOneByHash(dbKey, sql, data);
return ReflectHelper.setAll(clazz, map);
}
public static List<Map<String, Object>> findList(final String dbKey, String sql, Object... param) {
List<Map<String, Object>> list;
JdbcTemplate jdbcTemplate = getJdbcTemplate(dbKey);
if (ArrayUtils.isEmpty(param)) {
list = jdbcTemplate.queryForList(sql);
} else {
list = jdbcTemplate.queryForList(sql, param);
}
return list;
}
/**
* 支持miniDao语法操作的查询
*
* @param dbKey 数据源标识
* @param sql 执行sql语句,sql支持minidao语法逻辑
* @param data sql语法中需要判断的数据及sql拼接注入中需要的数据
* @return
*/
public static List<Map<String, Object>> findListByHash(final String dbKey, String sql, Map<String, Object> data) {
List<Map<String, Object>> list;
JdbcTemplate jdbcTemplate = getJdbcTemplate(dbKey);
//根据模板获取sql
sql = FreemarkerParseFactory.parseTemplateContent(sql, data);
NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(Objects.requireNonNull(jdbcTemplate.getDataSource()));
list = namedParameterJdbcTemplate.queryForList(sql, data);
return list;
}
//此方法只能返回单列,不能返回实体类
public static <T> List<T> findList(final String dbKey, String sql, Class<T> clazz, Object... param) {
List<T> list;
JdbcTemplate jdbcTemplate = getJdbcTemplate(dbKey);
if (ArrayUtils.isEmpty(param)) {
list = jdbcTemplate.queryForList(sql, clazz);
} else {
list = jdbcTemplate.queryForList(sql, clazz, param);
}
return list;
}
/**
* 支持miniDao语法操作的查询 返回单列数据list
*
* @param dbKey 数据源标识
* @param sql 执行sql语句,sql支持minidao语法逻辑
* @param clazz 类型Long、String等
* @param data sql语法中需要判断的数据及sql拼接注入中需要的数据
* @return
*/
public static <T> List<T> findListByHash(final String dbKey, String sql, Class<T> clazz, Map<String, Object> data) {
List<T> list;
JdbcTemplate jdbcTemplate = getJdbcTemplate(dbKey);
//根据模板获取sql
sql = FreemarkerParseFactory.parseTemplateContent(sql, data);
NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(Objects.requireNonNull(jdbcTemplate.getDataSource()));
list = namedParameterJdbcTemplate.queryForList(sql, data, clazz);
return list;
}
/**
* 直接sql查询 返回实体类列表
*
* @param dbKey 数据源标识
* @param sql 执行sql语句,sql支持 minidao 语法逻辑
* @param clazz 返回实体类列表的class
* @param param sql拼接注入中需要的数据
* @return
*/
public static <T> List<T> findListEntities(final String dbKey, String sql, Class<T> clazz, Object... param) {
List<Map<String, Object>> queryList = findList(dbKey, sql, param);
return ReflectHelper.transList2Entrys(queryList, clazz);
}
/**
* 支持miniDao语法操作的查询 返回实体类列表
*
* @param dbKey 数据源标识
* @param sql 执行sql语句,sql支持minidao语法逻辑
* @param clazz 返回实体类列表的class
* @param data sql语法中需要判断的数据及sql拼接注入中需要的数据
* @return
*/
public static <T> List<T> findListEntitiesByHash(final String dbKey, String sql, Class<T> clazz, Map<String, Object> data) {
List<Map<String, Object>> queryList = findListByHash(dbKey, sql, data);
return ReflectHelper.transList2Entrys(queryList, clazz);
}
}
@@ -1,127 +0,0 @@
package com.jero.generater.modules.online.cgform.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.api.vo.Result;
import com.jero.common.system.query.QueryGenerator;
import com.jero.generater.modules.online.cgform.entity.OnlCgformButton;
import com.jero.generater.modules.online.cgform.service.IOnlCgformButtonService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.Map;
@RestController("onlCgformButtonController")
@RequestMapping({"/online/cgform/button"})
@Slf4j
public class OnlCgformButtonController {
@Autowired
private IOnlCgformButtonService onlCgformButtonService;
private static final String OP_SUCCESS = "操作成功!";
private static final String EN_IS_NULL = "未找到对应实体";
@GetMapping({"/list/{code}"})
public Result<IPage<OnlCgformButton>> list(OnlCgformButton var1, @RequestParam(name = "pageNo",defaultValue = "1") Integer var2, @RequestParam(name = "pageSize",defaultValue = "10") Integer var3, HttpServletRequest var4, @PathVariable("code") String var5) {
Result<IPage<OnlCgformButton>> var6 = new Result<>();
var1.setCgformHeadId(var5);
QueryWrapper<OnlCgformButton> var7 = QueryGenerator.initQueryWrapper(var1, var4.getParameterMap());
Page<OnlCgformButton> var8 = new Page<>(var2, var3);
IPage<OnlCgformButton> var9 = this.onlCgformButtonService.page(var8, var7);
var6.setSuccess(true);
var6.setResult(var9);
return var6;
}
@PostMapping({"/add"})
public Result<Object> add(@RequestBody OnlCgformButton cgformButton) {
try {
this.onlCgformButtonService.save(cgformButton);
return Result.OK(OP_SUCCESS);
} catch (Exception e) {
log.error(e.getMessage(), e);
return Result.error("操作失败");
}
}
@PostMapping({"/aitest"})
public Result<Object> aitest(@RequestBody JSONArray jsonArray) {
try {
for(int i = 0; i < jsonArray.size(); ++i) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
OnlCgformButton cgformButton = JSON.parseObject(jsonObject.toJSONString(), OnlCgformButton.class);
this.onlCgformButtonService.saveButton(cgformButton);
}
return Result.OK(OP_SUCCESS);
} catch (Exception e) {
log.error(e.getMessage(), e);
return Result.error("操作失败");
}
}
@PostMapping({"/edit"})
public Result<Object> edit(@RequestBody OnlCgformButton cgformButton) {
OnlCgformButton existCgformButton = this.onlCgformButtonService.getById(cgformButton.getId());
if (existCgformButton == null) {
return Result.error(EN_IS_NULL);
} else {
boolean flag = this.onlCgformButtonService.updateById(cgformButton);
if (flag) {
return Result.OK(OP_SUCCESS);
}
}
return Result.OK();
}
@PostMapping({"/delete"})
public Result<Object> delete(@RequestBody Map<String,String> map) {
String id = map.get("id");
if(StringUtils.isEmpty(id)){
return Result.error("参数不识别!");
}
OnlCgformButton cgformButton = this.onlCgformButtonService.getById(id);
if (cgformButton == null) {
return Result.error(EN_IS_NULL);
} else {
boolean flag = this.onlCgformButtonService.removeById(id);
if (flag) {
return Result.OK("删除成功!");
}
}
return Result.OK();
}
@PostMapping({"/deleteBatch"})
public Result<Object> deleteBatch(@RequestBody Map<String,String> map) {
String ids = map.get("ids");
if (ids != null && !"".equals(ids.trim())) {
this.onlCgformButtonService.removeByIds(Arrays.asList(ids.split(",")));
return Result.OK("删除成功!");
} else {
return Result.error("参数不识别!");
}
}
@GetMapping({"/queryById"})
public Result<OnlCgformButton> queryById(@RequestParam(name = "id",required = true) String id) {
OnlCgformButton cgformButton = this.onlCgformButtonService.getById(id);
if (cgformButton == null) {
return Result.error(EN_IS_NULL);
} else {
return Result.OK(cgformButton);
}
}
}
@@ -1,123 +0,0 @@
package com.jero.generater.modules.online.cgform.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.api.vo.Result;
import com.jero.common.system.query.QueryGenerator;
import com.jero.generater.modules.online.cgform.entity.OnlCgformField;
import com.jero.generater.modules.online.cgform.entity.OnlCgformHead;
import com.jero.generater.modules.online.cgform.service.IOnlCgformFieldService;
import com.jero.generater.modules.online.cgform.service.IOnlCgformHeadService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@RestController("onlCgformFieldController")
@RequestMapping({"/online/cgform/field"})
@Slf4j
public class OnlCgformFieldController {
@Autowired
private IOnlCgformHeadService onlCgformHeadService;
@Autowired
private IOnlCgformFieldService onlCgformFieldService;
private static final String EN_IS_NULL = "未找到对应实体";
@GetMapping({"/listByHeadCode"})
public Result<List<OnlCgformField>> a(@RequestParam("headCode") String var1) {
LambdaQueryWrapper<OnlCgformHead> var2 = new LambdaQueryWrapper<>();
var2.eq(OnlCgformHead::getTableName, var1);
OnlCgformHead var3 = this.onlCgformHeadService.getOne(var2);
return var3 == null ? Result.error("不存在的code") : this.b(var3.getId());
}
@GetMapping({"/listByHeadId"})
public Result<List<OnlCgformField>> b(@RequestParam("headId") String var1) {
QueryWrapper<OnlCgformField> var2 = new QueryWrapper<>();
var2.eq("cgform_head_id", var1);
var2.orderByAsc("order_num");
List<OnlCgformField> var3 = this.onlCgformFieldService.list(var2);
return Result.OK(var3);
}
@GetMapping({"/list"})
public Result<IPage<OnlCgformField>> a(OnlCgformField var1, @RequestParam(name = "pageNo",defaultValue = "1") Integer var2, @RequestParam(name = "pageSize",defaultValue = "10") Integer var3, HttpServletRequest var4) {
Result<IPage<OnlCgformField>> var5 = new Result<>();
QueryWrapper<OnlCgformField> var6 = QueryGenerator.initQueryWrapper(var1, var4.getParameterMap());
Page<OnlCgformField> var7 = new Page<>(var2, var3);
IPage<OnlCgformField> var8 = this.onlCgformFieldService.page(var7, var6);
var5.setSuccess(true);
var5.setResult(var8);
return var5;
}
@PostMapping({"/add"})
public Result<Object> add(@RequestBody OnlCgformField var1) {
try {
this.onlCgformFieldService.save(var1);
return Result.OK("操作成功!");
} catch (Exception var4) {
log.error(var4.getMessage(), var4);
return Result.error("操作失败");
}
}
@PostMapping({"/edit"})
public Result<Object> edit(@RequestBody OnlCgformField var1) {
OnlCgformField var3 = this.onlCgformFieldService.getById(var1.getId());
if (var3 == null) {
return Result.error(EN_IS_NULL);
} else {
boolean var4 = this.onlCgformFieldService.updateById(var1);
if (var4) {
return Result.OK("操作成功!");
}
}
return Result.OK();
}
@PostMapping({"/delete"})
public Result<Object> delete(@RequestBody Map<String,String> map) {
String var1 = map.get("id");
OnlCgformField var3 = this.onlCgformFieldService.getById(var1);
if (var3 == null) {
return Result.error(EN_IS_NULL);
} else {
boolean var4 = this.onlCgformFieldService.removeById(var1);
if (var4) {
return Result.OK("删除成功!");
}
}
return Result.OK();
}
@PostMapping({"/deleteBatch"})
public Result<Object> deleteBatch(@RequestBody Map<String, String> map) {
String var1 = map.get("ids");
if (var1 != null && !"".equals(var1.trim())) {
this.onlCgformFieldService.removeByIds(Arrays.asList(var1.split(",")));
return Result.OK("删除成功!");
} else {
return Result.error("参数不识别!");
}
}
@GetMapping({"/queryById"})
public Result<Object> queryById(@RequestParam(name = "id",required = true) String var1) {
OnlCgformField var3 = this.onlCgformFieldService.getById(var1);
if (var3 == null) {
return Result.error(EN_IS_NULL);
} else {
return Result.OK(var3);
}
}
}
@@ -1,607 +0,0 @@
package com.jero.generater.modules.online.cgform.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.codegenerate.database.DbReadTableUtil;
import com.jero.codegenerate.properties.CodeConfigProperties;
import com.jero.common.api.vo.Result;
import com.jero.common.constant.enums.CgformEnum;
import com.jero.common.system.query.QueryGenerator;
import com.jero.common.system.util.JwtUtil;
import com.jero.common.util.oConvertUtils;
import com.jero.generater.modules.online.cgform.entity.*;
import com.jero.generater.modules.online.cgform.service.IOnlCgformEnhanceService;
import com.jero.generater.modules.online.cgform.service.IOnlCgformFieldService;
import com.jero.generater.modules.online.cgform.service.IOnlCgformHeadService;
import com.jero.generater.modules.online.cgform.util.CgformUtil;
import com.jero.generater.modules.online.config.exception.DBException;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.T;
import org.apache.shiro.authz.annotation.RequiresRoles;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;
import java.util.*;
@RestController("onlCgformHeadController")
@RequestMapping({"/online/cgform/head"})
@Slf4j
public class OnlCgformHeadController {
@Autowired
private IOnlCgformHeadService onlCgformHeadService;
@Autowired
private IOnlCgformFieldService onlCgformFieldService;
@Autowired
private IOnlCgformEnhanceService onlCgformEnhanceService;
private List<String> b = null;
@Autowired
ResourceLoader resourceLoader;
private String c;
private static final String OP_SUCCESS = "操作成功!";
private static final String EN_IS_NULL = "未找到对应实体";
private static final String SAVE_ERROR = "保存失败!";
private static final String DEL_ERROR = "删除失败!";
private static final String PARAM_ERROR = "参数不识别!";
@GetMapping({"/list"})
public Result<IPage<OnlCgformHead>> a(OnlCgformHead var1, @RequestParam(name = "pageNo", defaultValue = "1") Integer var2, @RequestParam(name = "pageSize", defaultValue = "10") Integer var3, HttpServletRequest var4) {
Result<IPage<OnlCgformHead>> var5 = new Result<>();
QueryWrapper<OnlCgformHead> var6 = QueryGenerator.initQueryWrapper(var1, var4.getParameterMap());
Page<OnlCgformHead> var7 = new Page<>(var2, var3);
IPage<OnlCgformHead> var8 = this.onlCgformHeadService.page(var7, var6);
if (var1.getCopyType() != null && var1.getCopyType() == 0) {
this.onlCgformHeadService.initCopyState(var8.getRecords());
}
var5.setSuccess(true);
var5.setResult(var8);
return var5;
}
@PostMapping({"/add"})
public Result<Object> add(@RequestBody OnlCgformHead var1) {
try {
this.onlCgformHeadService.save(var1);
return Result.OK(OP_SUCCESS);
} catch (Exception var4) {
log.error(var4.getMessage(), var4);
return Result.error("操作失败");
}
}
@PostMapping({"/edit"})
public Result<Object> edit(@RequestBody OnlCgformHead var1) {
OnlCgformHead var3 = this.onlCgformHeadService.getById(var1.getId());
if (var3 == null) {
return Result.error(EN_IS_NULL);
} else {
boolean var4 = this.onlCgformHeadService.updateById(var1);
if (var4) {
return Result.OK(OP_SUCCESS);
}
}
return Result.OK();
}
@PostMapping({"/delete"})
public Result<T> delete(@RequestBody Map<String, String> map) {
String id = map.get("id");
if (id == null || "".equals(id.trim())) {
return Result.error(PARAM_ERROR);
}
try {
this.onlCgformHeadService.deleteRecordAndTable(id);
} catch (DBException | SQLException e) {
return Result.error("删除失败" + e.getMessage());
}
return Result.OK("删除成功!");
}
@PostMapping({"/removeRecord"})
public Result<T> removeRecord(@RequestBody Map<String, String> map) {
String id = map.get("id");
if (id == null || "".equals(id.trim())) {
return Result.error(PARAM_ERROR);
}
try {
this.onlCgformHeadService.deleteRecord(id);
} catch (DBException | SQLException e) {
return Result.error("移除失败" + e.getMessage());
}
return Result.OK("移除成功!");
}
@PostMapping({"/deleteBatch"})
public Result<Object> deleteBatch(@RequestBody Map<String, String> map) {
String var1 = map.get("ids");
String var2 = map.get("flag");
if (var2 == null || "".equals(var2.trim())) {
return Result.error(PARAM_ERROR);
}
if (var1 != null && !"".equals(var1.trim())) {
this.onlCgformHeadService.deleteBatch(var1, var2);
return Result.OK("删除成功!");
} else {
return Result.error(PARAM_ERROR);
}
}
@GetMapping({"/queryById"})
public Result<OnlCgformHead> queryById(@RequestParam(name = "id", required = true) String id) {
OnlCgformHead cgformHead = this.onlCgformHeadService.getById(id);
if (cgformHead == null) {
return Result.error(EN_IS_NULL);
} else {
return Result.OK(cgformHead);
}
}
@GetMapping({"/queryByTableNames"})
public Result<List<OnlCgformHead>> queryByTableNames(@RequestParam(name = "tableNames", required = true) String var1) {
LambdaQueryWrapper<OnlCgformHead> var2 = new LambdaQueryWrapper<>();
String[] var3 = var1.split(",");
var2.in(OnlCgformHead::getTableName, Arrays.asList(var3));
List<OnlCgformHead> var4 = this.onlCgformHeadService.list(var2);
return var4 == null ? Result.error(EN_IS_NULL) : Result.OK(var4);
}
@PostMapping({"/addEnhanceJs/{code}"})
public Result<T> addEnhanceJs(@PathVariable("code") String var1, @RequestBody OnlCgformEnhanceJs var2) {
try {
var2.setCgformHeadId(var1);
this.onlCgformHeadService.saveEnhance(var2);
return Result.OK(OP_SUCCESS);
} catch (Exception var4) {
log.error(var4.getMessage(), var4);
return Result.error(SAVE_ERROR);
}
}
@GetMapping({"/enhanceJs/{code}"})
public Result<OnlCgformEnhanceJs> getEnhanceJs(@PathVariable("code") String var1, HttpServletRequest var2) {
try {
String var3 = var2.getParameter("type");
OnlCgformEnhanceJs var4 = this.onlCgformHeadService.queryEnhance(var1, var3);
return var4 == null ? Result.error("查询为空") : Result.OK(var4);
} catch (Exception var5) {
log.error(var5.getMessage(), var5);
return Result.error("查询失败!");
}
}
@PostMapping({"/enhanceJs/{code}"})
public Result<T> editEnhanceJs(@PathVariable("code") String var1, @RequestBody OnlCgformEnhanceJs var2) {
try {
var2.setCgformHeadId(var1);
this.onlCgformHeadService.editEnhance(var2);
return Result.OK(OP_SUCCESS);
} catch (Exception var4) {
log.error(var4.getMessage(), var4);
return Result.error(SAVE_ERROR);
}
}
@GetMapping({"/enhanceButton/{formId}"})
public Result<List<OnlCgformButton>> getEnhanceButton(@PathVariable("formId") String var1, HttpServletRequest var2) {
try {
List<OnlCgformButton> var3 = this.onlCgformHeadService.queryButtonList(var1);
return var3 != null && !var3.isEmpty() ? Result.OK(var3) : Result.error("查询为空");
} catch (Exception var4) {
log.error(var4.getMessage(), var4);
return Result.error("查询失败!");
}
}
@GetMapping({"/enhanceSql/{formId}"})
public Result<List<OnlCgformEnhanceSql>> getEnhanceSql(@PathVariable("formId") String var1, HttpServletRequest var2) {
List<OnlCgformEnhanceSql> var3 = this.onlCgformEnhanceService.queryEnhanceSqlList(var1);
return Result.OK(var3);
}
@RequiresRoles({"admin"})
@PostMapping({"/addEnhanceSql/{formId}"})
public Result<T> addEnhanceSql(@PathVariable("formId") String var1, @RequestBody OnlCgformEnhanceSql var2) {
try {
var2.setCgformHeadId(var1);
if (this.onlCgformEnhanceService.checkOnlyEnhance(var2)) {
this.onlCgformEnhanceService.saveEnhanceSql(var2);
return Result.OK(OP_SUCCESS);
} else {
return Result.error("保存失败,该按钮已存在增强配置!");
}
} catch (Exception var4) {
log.error(var4.getMessage(), var4);
return Result.error(SAVE_ERROR);
}
}
@RequiresRoles({"admin"})
@PostMapping({"/enhanceSql/{formId}"})
public Result<T> editEnhanceSql(@PathVariable("formId") String var1, @RequestBody OnlCgformEnhanceSql var2) {
try {
var2.setCgformHeadId(var1);
if (this.onlCgformEnhanceService.checkOnlyEnhance(var2)) {
this.onlCgformEnhanceService.updateEnhanceSql(var2);
return Result.OK(OP_SUCCESS);
} else {
return Result.error("保存失败,该按钮已存在增强配置!");
}
} catch (Exception var4) {
log.error(var4.getMessage(), var4);
return Result.error(SAVE_ERROR);
}
}
@PostMapping({"/enhanceSql"})
public Result<T> deletenhanceSql(@RequestBody Map<String, String> map) {
String var1 = map.get("id");
if (StringUtils.isBlank(var1)) {
return Result.error(PARAM_ERROR);
}
try {
this.onlCgformEnhanceService.deleteEnhanceSql(var1);
return Result.OK("删除成功");
} catch (Exception var3) {
log.error(var3.getMessage(), var3);
return Result.error(DEL_ERROR);
}
}
@PostMapping({"/deletebatchEnhanceSql"})
public Result<T> deletebatchEnhanceSql(@RequestBody Map<String, String> map) {
String var1 = map.get("ids");
if (StringUtils.isBlank(var1)) {
return Result.error(PARAM_ERROR);
}
try {
List<String> var2 = Arrays.asList(var1.split(","));
this.onlCgformEnhanceService.deleteBatchEnhanceSql(var2);
return Result.OK("删除成功");
} catch (Exception var3) {
log.error(var3.getMessage(), var3);
return Result.error(DEL_ERROR);
}
}
@GetMapping({"/enhanceJava/{formId}"})
public Result<List<OnlCgformEnhanceJava>> getEnhanceJava(@PathVariable("formId") String formId, OnlCgformEnhanceJava var2) {
List<OnlCgformEnhanceJava> var3 = this.onlCgformEnhanceService.queryEnhanceJavaList(formId);
return Result.OK(var3);
}
@PostMapping({"/addEnhanceJava/{formId}"})
public Result<T> addEnhanceJava(@PathVariable("formId") String formId, @RequestBody OnlCgformEnhanceJava var2) {
try {
if (!CgformUtil.a(var2)) {
return Result.error("类实例化失败,请检查!");
} else {
var2.setCgformHeadId(formId);
if (this.onlCgformEnhanceService.checkOnlyEnhance(var2)) {
this.onlCgformEnhanceService.saveEnhanceJava(var2);
return Result.OK(OP_SUCCESS);
} else {
return Result.error("保存失败,配置重复了!");
}
}
} catch (Exception var4) {
log.error(var4.getMessage(), var4);
return Result.error(SAVE_ERROR);
}
}
@PostMapping({"/enhanceJava/{formId}"})
public Result<T> c(@PathVariable("formId") String var1, @RequestBody OnlCgformEnhanceJava var2) {
try {
if (!CgformUtil.a(var2)) {
return Result.error("类实例化失败,请检查!");
} else {
var2.setCgformHeadId(var1);
if (this.onlCgformEnhanceService.checkOnlyEnhance(var2)) {
this.onlCgformEnhanceService.updateEnhanceJava(var2);
return Result.OK(OP_SUCCESS);
} else {
return Result.error("保存失败,配置重复了!");
}
}
} catch (Exception var4) {
log.error(var4.getMessage(), var4);
return Result.error(SAVE_ERROR);
}
}
@PostMapping({"/enhanceJava"})
public Result<T> g(@RequestBody Map<String, String> map) {
String var1 = map.get("id");
if (StringUtils.isBlank(var1)) {
return Result.error(PARAM_ERROR);
}
try {
this.onlCgformEnhanceService.deleteEnhanceJava(var1);
return Result.OK("删除成功");
} catch (Exception var3) {
log.error(var3.getMessage(), var3);
return Result.error(DEL_ERROR);
}
}
@PostMapping({"/deleteBatchEnhanceJava"})
public Result<T> h(@RequestBody Map<String, String> map) {
String var1 = map.get("ids");
if (StringUtils.isBlank(var1)) {
return Result.error(PARAM_ERROR);
}
try {
List<String> var2 = Arrays.asList(var1.split(","));
this.onlCgformEnhanceService.deleteBatchEnhanceJava(var2);
return Result.OK("删除成功");
} catch (Exception var3) {
log.error(var3.getMessage(), var3);
return Result.error(DEL_ERROR);
}
}
@GetMapping({"/queryTables"})
public Result<ArrayList<HashMap<String,String>>> a(@RequestParam(name = "tableName", required = false) String var1, @RequestParam(name = "pageNo", defaultValue = "1") Integer var2, @RequestParam(name = "pageSize", defaultValue = "10") Integer var3, HttpServletRequest var4) {
String var5 = JwtUtil.getUserNameByToken(var4);
if (!"admin".equals(var5)) {
return Result.error("noadminauth");
} else {
new ArrayList<>();
List<String> var6;
try {
var6 = DbReadTableUtil.listTableName();
} catch (SQLException var12) {
log.error(var12.getMessage(), var12);
return Result.error("同步失败,未获取数据库表信息");
}
CgformUtil.b(var6);
var6 = CgformUtil.f(var6);
List<String> var7 = this.onlCgformHeadService.queryOnlinetables();
this.b();
var6.removeAll(var7);
ArrayList<HashMap<String,String>> var8 = new ArrayList<>();
for (String var10 : var6) {
if (!this.l(var10)) {
HashMap<String,String> var11 = new HashMap<>();
var11.put("id", var10);
var8.add(var11);
}
}
return Result.OK(var8);
}
}
@PostMapping({"/transTables/{tbnames}"})
@RequiresRoles({"admin"})
public Result<T> d(@PathVariable("tbnames") String var1, HttpServletRequest var2) {
String var3 = JwtUtil.getUserNameByToken(var2);
if (!"admin".equals(var3)) {
return Result.error("noadminauth");
} else if (oConvertUtils.isEmpty(var1)) {
return Result.error("未识别的表名信息");
} else if (c != null && c.equals(var1)) {
return Result.error("不允许重复生成!");
} else {
c = var1;
String[] var4 = var1.split(",");
for (int var5 = 0; var5 < var4.length; ++var5) {
if (oConvertUtils.isNotEmpty(var4[var5])) {
int var6 = this.onlCgformHeadService.count(new LambdaQueryWrapper<OnlCgformHead>().eq(OnlCgformHead::getTableName, var4[var5]));
if (var6 <= 0) {
log.info("[IP] [online数据库导入表] --表名:" + var4[var5]);
this.onlCgformHeadService.saveDbTable2Online(var4[var5]);
}
}
}
c = null;
return Result.OK("同步完成!");
}
}
/**
* 获取磁盘根目录
*
* @param
* @return com.jero.common.api.vo.Result
* @date 2021/4/6 11:20
*/
@GetMapping({"/rootFile"})
public Result<JSONArray> rootFile() {
JSONArray jsonArray = new JSONArray();
File[] files = File.listRoots();
int var4 = files.length;
for (int i = 0; i < var4; ++i) {
File file = files[i];
JSONObject jsonObject = new JSONObject();
if (file.isDirectory()) {
jsonObject.put("key", file.getAbsolutePath());
jsonObject.put("title", file.getPath());
jsonObject.put("opened", false);
JSONObject jsonObject1 = new JSONObject();
jsonObject1.put("icon", "custom");
jsonObject.put("scopedSlots", jsonObject1);
jsonObject.put("isLeaf", file.listFiles() == null || file.listFiles().length == 0);
}
jsonArray.add(jsonObject);
}
return Result.OK(jsonArray);
}
/**
* 获取磁盘文件树
*
* @param parentPath
* @return com.jero.common.api.vo.Result
* @date 2021/4/6 11:20
*/
@GetMapping({"/fileTree"})
public Result<JSONArray> fileTree(@RequestParam(name = "parentPath", required = true) String parentPath) {
JSONArray jsonArray = new JSONArray();
File file = new File(parentPath);
File[] files = file.listFiles();
int length = files.length;
for (int i = 0; i < length; ++i) {
File file1 = files[i];
if (file1.isDirectory() && oConvertUtils.isNotEmpty(file1.getPath())) {
JSONObject jsonObject = new JSONObject();
log.info(file1.getPath());
jsonObject.put("key", file1.getAbsolutePath());
jsonObject.put("title", file1.getPath().substring(file1.getPath().lastIndexOf(File.separator) + 1));
jsonObject.put("isLeaf", file1.listFiles() == null || file1.listFiles().length == 0);
jsonObject.put("opened", false);
JSONObject jsonObject1 = new JSONObject();
jsonObject1.put("icon", "custom");
jsonObject.put("scopedSlots", jsonObject1);
jsonArray.add(jsonObject);
}
}
return Result.OK(jsonArray);
}
@GetMapping({"/tableInfo"})
public Result<HashMap<String, Object>> tableInfo(@RequestParam(name = "code", required = true) String code) {
OnlCgformHead onlCgformHead = this.onlCgformHeadService.getById(code);
if (onlCgformHead == null) {
return Result.error(EN_IS_NULL);
} else {
HashMap<String, Object> map = new HashMap<>();
map.put("main", onlCgformHead);
getTableType(onlCgformHead, map);
Integer tableType = onlCgformHead.getTableType();
if ("Y".equals(onlCgformHead.getIsTree())) {
tableType = 3;
}
List<Map<String, Object>> jspModelList = CgformEnum.getJspModelList(tableType);
map.put("jspModeList", jspModelList);
map.put("projectPath", CodeConfigProperties.getProjectPath());
return Result.OK(map);
}
}
private void getTableType(OnlCgformHead onlCgformHead, HashMap<String, Object> map) {
if (onlCgformHead.getTableType() == 2) {
String subTableStr = onlCgformHead.getSubTableStr();
if (oConvertUtils.isNotEmpty(subTableStr)) {
ArrayList<OnlCgformHead> list = new ArrayList<>();
String[] subTableArray = subTableStr.split(",");
int length = subTableArray.length;
for (int i = 0; i < length; ++i) {
String subTable = subTableArray[i];
LambdaQueryWrapper<OnlCgformHead> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(OnlCgformHead::getTableName, subTable);
OnlCgformHead onlCgformHead1 = this.onlCgformHeadService.getOne(lambdaQueryWrapper);
list.add(onlCgformHead1);
}
Collections.sort(list, (onlCgformHead1, onlCgformHead2) -> {
Integer tabOrderNum = onlCgformHead1.getTabOrderNum();
if (tabOrderNum == null) {
tabOrderNum = 0;
}
Integer tabOrderNum1 = onlCgformHead2.getTabOrderNum();
if (tabOrderNum1 == null) {
tabOrderNum1 = 0;
}
return tabOrderNum.compareTo(tabOrderNum1);
});
map.put("sub", list);
}
}
}
@PostMapping({"/copyOnline"})
public Result<T> k(@RequestParam(name = "code", required = true) String var1) {
try {
OnlCgformHead var2 = this.onlCgformHeadService.getById(var1);
if (var2 == null) {
return Result.error(EN_IS_NULL);
}
this.onlCgformHeadService.copyOnlineTableConfig(var2);
} catch (Exception var3) {
var3.printStackTrace();
}
return Result.OK();
}
private boolean l(String var1) {
Iterator<String> var2 = b.iterator();
String var3;
do {
if (!var2.hasNext()) {
return false;
}
var3 = var2.next();
} while (!var1.startsWith(var3) && !var1.startsWith(var3.toUpperCase()));
return true;
}
private void b() {
if (b == null) {
Resource var1 = this.resourceLoader.getResource("classpath:jero" + File.separator + "jero_config.properties");
InputStream var2 = null;
try {
var2 = var1.getInputStream();
Properties var3 = new Properties();
var3.load(var2);
String var4 = var3.getProperty("exclude_table");
if (var4 != null) {
b = Arrays.asList(var4.split(","));
}
} catch (IOException var13) {
var13.printStackTrace();
} finally {
if (var2 != null) {
try {
var2.close();
} catch (IOException var12) {
var12.printStackTrace();
}
}
}
}
}
}
@@ -1,117 +0,0 @@
package com.jero.generater.modules.online.cgform.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.api.vo.Result;
import com.jero.common.constant.CommonConstant;
import com.jero.common.system.query.QueryGenerator;
import com.jero.generater.modules.online.cgform.entity.OnlCgformIndex;
import com.jero.generater.modules.online.cgform.service.IOnlCgformIndexService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@RestController("onlCgformIndexController")
@RequestMapping({"/online/cgform/index"})
@Slf4j
public class OnlCgformIndexController {
@Autowired
private IOnlCgformIndexService onlCgformIndexService;
private static final String EN_IS_NULL = "未找到对应实体";
@GetMapping({"/listByHeadId"})
public Result<List<OnlCgformIndex>> listByHeadId(@RequestParam("headId") String headId) {
QueryWrapper<OnlCgformIndex> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("cgform_head_id", headId);
queryWrapper.eq("del_flag", CommonConstant.DEL_FLAG_0);
queryWrapper.orderByDesc("create_time");
List<OnlCgformIndex> cgformIndexList = this.onlCgformIndexService.list(queryWrapper);
return Result.OK(cgformIndexList);
}
@GetMapping({"/list"})
public Result<IPage<OnlCgformIndex>> list(OnlCgformIndex cgformIndex,
@RequestParam(name = "pageNo",defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize",defaultValue = "10") Integer pageSize,
HttpServletRequest request) {
QueryWrapper<OnlCgformIndex> queryWrapper = QueryGenerator.initQueryWrapper(cgformIndex, request.getParameterMap());
Page<OnlCgformIndex> page = new Page<>(pageNo, pageSize);
IPage<OnlCgformIndex> cgformIndexPage = this.onlCgformIndexService.page(page, queryWrapper);
return Result.OK(cgformIndexPage);
}
@PostMapping({"/add"})
public Result<Object> add(@RequestBody OnlCgformIndex cgformIndex) {
try {
this.onlCgformIndexService.save(cgformIndex);
return Result.OK("操作成功!");
} catch (Exception e) {
log.error(e.getMessage(), e);
return Result.error("操作失败");
}
}
@PostMapping({"/edit"})
public Result<Object> edit(@RequestBody OnlCgformIndex cgformIndex) {
OnlCgformIndex existCgformIndex = this.onlCgformIndexService.getById(cgformIndex.getId());
if (existCgformIndex == null) {
return Result.error(EN_IS_NULL);
} else {
boolean flag = this.onlCgformIndexService.updateById(cgformIndex);
if (flag) {
return Result.OK("操作成功!");
}
}
return Result.OK();
}
@PostMapping({"/delete"})
public Result<Object> delete(@RequestBody Map<String,String> map) {
String id = map.get("id");
if(StringUtils.isBlank(id)){
return Result.error("参数不识别!");
}
OnlCgformIndex cgformIndex = this.onlCgformIndexService.getById(id);
if (cgformIndex == null) {
return Result.error(EN_IS_NULL);
} else {
boolean flag = this.onlCgformIndexService.removeById(id);
if (flag) {
return Result.OK("删除成功!");
}
}
return Result.OK();
}
@PostMapping({"/deleteBatch"})
public Result<Object> deleteBatch(@RequestBody Map<String,String> map) {
String ids = map.get("ids");
if (ids != null && !"".equals(ids.trim())) {
this.onlCgformIndexService.removeByIds(Arrays.asList(ids.split(",")));
return Result.OK("删除成功!");
} else {
return Result.error("参数不识别!");
}
}
@GetMapping({"/queryById"})
public Result<OnlCgformIndex> queryById(@RequestParam(name = "id",required = true) String var1) {
OnlCgformIndex cgformIndex = this.onlCgformIndexService.getById(var1);
if (cgformIndex == null) {
return Result.error(EN_IS_NULL);
} else {
return Result.OK(cgformIndex);
}
}
}
@@ -14,35 +14,6 @@ public class ConvertUtil {
private ConvertUtil() {
}
public static void a(int var0, List<Map<String, Object>> var1, List<OnlCgformField> var2) {
Map<String, FieldCommentConverter> var3 = ConvertFactory.a(var2);
for (Map<String, Object> stringObjectMap : var1) {
Map<String, Object> var5 = stringObjectMap;
Iterator<Entry<String, Object>> var6 = var5.entrySet().iterator();
HashMap<String, Object> var7 = new HashMap<>();
while (var6.hasNext()) {
Entry<String, Object> var8 = var6.next();
Object var9 = var8.getValue();
if (var9 != null) {
String var10 = var8.getKey();
FieldCommentConverter var11 = var3.get(var10.toLowerCase());
if (var11 != null) {
String var12 = var9.toString();
String var13 = var0 == 1 ? var11.converterToTxt(var12) : var11.converterToVal(var12);
a(var11, var5, var0);
a(var11, var7, var12);
var5.put(var10, var13);
}
}
}
putVar(var5, var7);
}
}
private static void putVar(Map<String, Object> var5, HashMap<String, Object> var7) {
for (String o : var7.keySet()) {
String var15 = o;
@@ -50,28 +21,6 @@ public class ConvertUtil {
}
}
private static void a(FieldCommentConverter var0, Map<String, Object> var1, int var2) {
Map<String, String> var3 = var0.getConfig();
if (var3 != null) {
String var4 = var3.get("linkField");
if (oConvertUtils.isNotEmpty(var4)) {
String[] var5 = var4.split(",");
int var6 = var5.length;
for(int var7 = 0; var7 < var6; ++var7) {
String var8 = var5[var7];
Object var9 = var1.get(var8);
if (var9 != null) {
String var10 = var9.toString();
String var11 = var2 == 1 ? var0.converterToTxt(var10) : var0.converterToVal(var10);
var1.put(var8, var11);
}
}
}
}
}
private static void a(FieldCommentConverter var0, Map<String, Object> var1, String var2) {
Map<String, String> var3 = var0.getConfig();
if (var3 != null) {
@@ -8,7 +8,5 @@ import com.jero.generater.modules.online.cgform.entity.OnlCgformHead;
import com.jero.generater.modules.online.config.exception.BusinessException;
public interface IOnlCgformSqlService {
void saveBatchOnlineTable(OnlCgformHead var1, List<OnlCgformField> var2, List<Map<String, Object>> var3) throws BusinessException;
void saveOrUpdateSubData(String var1, OnlCgformHead var2, List<OnlCgformField> var3) throws BusinessException;
}
@@ -27,44 +27,6 @@ public class OnlCgformSqlServiceImpl implements IOnlCgformSqlService {
@Autowired
private IOnlCgformHeadService onlCgformHeadService;
@Override
public void saveBatchOnlineTable(OnlCgformHead head, List<OnlCgformField> fieldList, List<Map<String, Object>> dataList) throws BusinessException {
try(SqlSession var4 = this.sqlSessionTemplate.getSqlSessionFactory().openSession(ExecutorType.BATCH, false)) {
ConvertUtil.a(2, dataList, fieldList);
OnlCgformFieldMapper var5 = var4.getMapper(OnlCgformFieldMapper.class);
short var6 = 1000;
int var7;
String var8;
if (var6 >= dataList.size()) {
for(var7 = 0; var7 < dataList.size(); ++var7) {
var8 = JSON.toJSONString(dataList.get(var7));
this.a(var8, head, fieldList, var5);
}
} else {
for(var7 = 0; var7 < dataList.size(); ++var7) {
var8 = JSON.toJSONString(dataList.get(var7));
this.a(var8, head, fieldList, var5);
if (var7 % var6 == 0) {
var4.commit();
var4.clearCache();
}
}
}
var4.commit();
} catch (Exception var12) {
throw new BusinessException(var12.getMessage());
}
}
@Override
public void saveOrUpdateSubData(String subDataJsonStr, OnlCgformHead head, List<OnlCgformField> subFiledList) throws BusinessException {
OnlCgformFieldMapper var4 = SpringContextUtils.getBean(OnlCgformFieldMapper.class);
this.a(subDataJsonStr, head, subFiledList, var4);
}
private void a(String var1, OnlCgformHead var2, List<OnlCgformField> var3, OnlCgformFieldMapper var4) throws BusinessException {
JSONObject var5 = JSON.parseObject(var1);
int var6 = this.onlCgformHeadService.executeEnhanceJava("import", "start", var2, var5);
@@ -1,551 +0,0 @@
package com.jero.generater.modules.online.cgreport.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.PermissionData;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.system.vo.DictModel;
import com.jero.common.system.vo.DynamicDataSourceModel;
import com.jero.common.util.BrowserUtils;
import com.jero.common.util.oConvertUtils;
import com.jero.generater.modules.online.cgreport.entity.OnlCgreportHead;
import com.jero.generater.modules.online.cgreport.entity.OnlCgreportItem;
import com.jero.generater.modules.online.cgreport.entity.OnlCgreportParam;
import com.jero.generater.modules.online.cgreport.service.IOnlCgreportItemService;
import com.jero.generater.modules.online.cgreport.service.IOnlCgreportParamService;
import com.jero.generater.modules.online.cgreport.service.a.OnlCgreportHeadServiceImpl;
import com.jero.generater.modules.online.cgreport.util.SqlUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Workbook;
import org.jeecgframework.poi.excel.ExcelExportUtil;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.params.ExcelExportEntity;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.*;
import java.util.Map.Entry;
@RestController("onlCgreportAPI")
@RequestMapping({"/online/cgreport/api"})
@Slf4j
public class OnlCgreportAPI {
@Autowired
private OnlCgreportHeadServiceImpl onlCgreportHeadService;
@Autowired
private IOnlCgreportItemService onlCgreportItemService;
@Autowired
private ISysBaseAPI sysBaseAPI;
@Autowired
private IOnlCgreportParamService onlCgreportParamService;
private static final String EN_IS_NULL = "实体不存在";
private static final String CGR_HEAD_ID = "cgrhead_id";
private static final String IS_SHOW = "is_show";
private static final String ORDER_NUM = "order_num";
private static final String TITLE = "title";
private static final String DATA_INDEX = "dataIndex";
private static final String ALIGN = "align";
private static final String CENTER = "center";
private static final String SORTER = "sorter";
private static final String CUSTOM_RENDER = "customRender";
private static final String COLUMNS = "columns";
private static final String DICT_OPTIONS = "dictOptions";
private static final String GET_ALL = "getAll";
@GetMapping({"/getColumnsAndData/{code}"})
@PermissionData
public Result<Map<String, Object>> a(@PathVariable("code") String var1, HttpServletRequest var2) {
OnlCgreportHead var3 = this.onlCgreportHeadService.getById(var1);
if (var3 == null) {
return Result.error(EN_IS_NULL);
} else {
return getMapResult(var1, var2, var3);
}
}
@NotNull
private Result<Map<String, Object>> getMapResult(@PathVariable("code") String var1, HttpServletRequest var2, OnlCgreportHead var3) {
Result<Map<String, Object>> var4 = this.b(var1, var2);
if (var4.getCode().equals(200)) {
JSONObject var5 = JSON.parseObject(JSON.toJSONString(var4.getResult()));
JSONArray var6 = var5.getJSONArray("records");
QueryWrapper<OnlCgreportItem> var7 = new QueryWrapper<>();
var7.eq(CGR_HEAD_ID, var1).eq(IS_SHOW, 1).orderByAsc(ORDER_NUM);
List<OnlCgreportItem> var8 = this.onlCgreportItemService.list(var7);
HashMap<String, Object> var9 = new HashMap<>();
JSONArray var10 = new JSONArray();
JSONArray var11 = new JSONArray();
boolean var12 = false;
for (OnlCgreportItem var14 : var8) {
JSONObject var15 = new JSONObject(4);
var15.put(TITLE, var14.getFieldTxt());
var15.put(DATA_INDEX, var14.getFieldName());
var15.put(ALIGN, CENTER);
var15.put(SORTER, "true");
var15.put("isTotal", var14.getIsTotal());
var15.put("groupTitle", var14.getGroupTitle());
if (oConvertUtils.isNotEmpty(var14.getGroupTitle())) {
var12 = true;
}
String var16;
if (StringUtils.isNotBlank(var14.getFieldHref())) {
var16 = "fieldHref_" + var14.getFieldName();
JSONObject var17 = new JSONObject();
var17.put(CUSTOM_RENDER, var16);
var15.put("scopedSlots", var17);
JSONObject var18 = new JSONObject();
var18.put("slotName", var16);
var18.put("href", var14.getFieldHref());
var10.add(var18);
}
var11.add(var15);
var16 = var14.getDictCode();
List<DictModel> var20 = this.a(var16, var6, var14.getFieldName());
if (var20 != null) {
var9.put(var14.getFieldName(), var20);
var15.put(CUSTOM_RENDER, var14.getFieldName());
}
}
HashMap<String, Object> var19 = new HashMap<>(3);
var19.put("data", var4.getResult());
var19.put(COLUMNS, var11);
var19.put(DICT_OPTIONS, var9);
var19.put("fieldHrefSlots", var10);
var19.put("cgreportHeadName", var3.getName());
var19.put("isGroupTitle", var12);
return Result.OK(var19);
} else {
return var4;
}
}
private List<DictModel> a(String var1, JSONArray var2, String var3) {
List<DictModel> var4 = null;
if (oConvertUtils.isNotEmpty(var1)) {
if (var1.trim().toLowerCase().indexOf("select ") == 0 && (var3 == null || !var2.isEmpty())) {
var1 = var1.trim();
int var5 = var1.lastIndexOf(";");
var1 = getString(var1, var5);
String var6 = "SELECT * FROM (" + var1 + ") temp ";
String var12;
if (var2 != null) {
ArrayList<String> var7 = new ArrayList<>();
addVar7(var2, var3, var7);
var12 = "'" + StringUtils.join(var7, "','") + "'";
var6 = var6 + "WHERE temp.value IN (" + var12 + ")";
}
List<Map<String,Object>> var11 = this.onlCgreportHeadService.getBaseMapper().executeSelete(var6);
if (var11 != null && !var11.isEmpty()) {
var12 = JSON.toJSONString(var11);
var4 = JSON.parseArray(var12, DictModel.class);
}
} else {
var4 = this.sysBaseAPI.queryDictItemsByCode(var1);
}
}
return var4;
}
@NotNull
private String getString(String var1, int var5) {
if (var5 == var1.length() - 1) {
var1 = var1.substring(0, var5);
}
return var1;
}
private void addVar7(JSONArray var2, String var3, ArrayList<String> var7) {
for(int var8 = 0; var8 < var2.size(); ++var8) {
JSONObject var9 = var2.getJSONObject(var8);
String var10 = var9.getString(var3);
if (StringUtils.isNotBlank(var10)) {
var7.add(var10);
}
}
}
/** @deprecated */
@Deprecated
@GetMapping({"/getColumns/{code}"})
public Result<Map<String,Object>> a(@PathVariable("code") String var1) {
OnlCgreportHead var2 = this.onlCgreportHeadService.getById(var1);
if (var2 == null) {
return Result.error(EN_IS_NULL);
} else {
QueryWrapper<OnlCgreportItem> var3 = new QueryWrapper<>();
var3.eq(CGR_HEAD_ID, var1);
var3.eq(IS_SHOW, 1);
var3.orderByAsc(ORDER_NUM);
List<OnlCgreportItem> var4 = this.onlCgreportItemService.list(var3);
ArrayList<Map<String,Object>> var5 = new ArrayList<>();
HashMap<String,Object> var6 = new HashMap<>();
for (OnlCgreportItem var8 : var4) {
HashMap<String,Object> var9 = new HashMap<>(3);
var9.put(TITLE, var8.getFieldTxt());
var9.put(DATA_INDEX, var8.getFieldName());
var9.put(ALIGN, CENTER);
var9.put(SORTER, "true");
var5.add(var9);
String var10 = var8.getDictCode();
if (oConvertUtils.isNotEmpty(var10)) {
List<DictModel> var11 = getDictModels(var10);
if (var11 != null) {
var6.put(var8.getFieldName(), var11);
var9.put(CUSTOM_RENDER, var8.getFieldName());
}
}
}
HashMap<String,Object> var14 = new HashMap<>(1);
var14.put(COLUMNS, var5);
var14.put(DICT_OPTIONS, var6);
var14.put("cgreportHeadName", var2.getName());
return Result.OK(var14);
}
}
@Nullable
private List<DictModel> getDictModels(String var10) {
List<DictModel> var11 = null;
if (var10.toLowerCase().indexOf("select ") == 0) {
List<Map<String,Object>> var12 = this.onlCgreportHeadService.getBaseMapper().executeSelete(var10);
if (var12 != null && !var12.isEmpty()) {
String var13 = JSON.toJSONString(var12);
var11 = JSON.parseArray(var13, DictModel.class);
}
} else {
var11 = this.sysBaseAPI.queryDictItemsByCode(var10);
}
return var11;
}
@GetMapping({"/getData/{code}"})
@PermissionData
public Result<Map<String, Object>> b(@PathVariable("code") String var1, HttpServletRequest var2) {
OnlCgreportHead var3 = this.onlCgreportHeadService.getById(var1);
if (var3 == null) {
return Result.error(EN_IS_NULL);
} else {
String var4 = var3.getCgrSql().trim();
String var5 = var3.getDbSource();
try {
Map<String, Object> var6 = SqlUtil.a(var2);
var6.put(GET_ALL, var2.getAttribute(GET_ALL));
Map<String, Object> var7;
if (StringUtils.isNotBlank(var5)) {
log.debug("Online报表: 走了多数据源逻辑");
var7 = this.onlCgreportHeadService.executeSelectSqlDynamic(var5, var4, var6, var3.getId());
} else {
log.debug("Online报表: 走了稳定逻辑");
var7 = this.onlCgreportHeadService.executeSelectSql(var4, var3.getId(), var6);
}
return Result.OK(var7);
} catch (Exception var8) {
log.error(var8.getMessage(), var8);
return Result.error("SQL执行失败:" + var8.getMessage());
}
}
}
@GetMapping({"/getQueryInfo/{code}"})
public Result<List<Map<String, String>>> b(@PathVariable("code") String var1) {
try {
List<Map<String, String>> var2 = this.onlCgreportItemService.getAutoListQueryInfo(var1);
return Result.OK(var2);
} catch (Exception var3) {
log.info(var3.getMessage(), var3);
return Result.error("查询失败");
}
}
@GetMapping({"/getParamsInfo/{code}"})
public Result<List<OnlCgreportParam>> c(@PathVariable("code") String var1) {
try {
LambdaQueryWrapper<OnlCgreportParam> var2 = new LambdaQueryWrapper<>();
var2.eq(OnlCgreportParam::getCgrheadId, var1);
List<OnlCgreportParam> var3 = this.onlCgreportParamService.list(var2);
return Result.OK(var3);
} catch (Exception var4) {
log.info(var4.getMessage(), var4);
return Result.error("查询失败");
}
}
@PermissionData
@RequestMapping({"/exportXls/{reportId}"})
public void a(@PathVariable("reportId") String var1, HttpServletRequest var2, HttpServletResponse var3) {
String var4 = "报表";
String var5 = "导出信息";
if (!oConvertUtils.isNotEmpty(var1)) {
throw new JeroBootException("参数错误");
} else {
getVar6(var1, var2, var3, var4, var5);
}
}
private void getVar6(@PathVariable("reportId") String var1, HttpServletRequest var2, HttpServletResponse var3, String var4, String var5) {
Map<String, Object> var6 = null;
try {
var6 = this.onlCgreportHeadService.queryCgReportConfig(var1);
} catch (Exception var35) {
throw new JeroBootException("动态报表配置不存在!");
}
List<Map<String, Object>> var7 = (List)var6.get("items");
var2.setAttribute(GET_ALL, true);
Result<Map<String, Object>> var8 = this.b(var1, var2);
List<Map<String, Object>> var9 = null;
if (var8.getCode().equals(200)) {
Map<String, Object> var10 = var8.getResult();
var9 = (List)var10.get("records");
}
ArrayList<String> var36 = new ArrayList<>();
HashMap<String, Object> var11 = new HashMap<>();
HashMap<String, Object> var12 = new HashMap<>();
ArrayList<ExcelExportEntity> var13 = new ArrayList<>();
String var15;
for(int var14 = 0; var14 < var7.size(); ++var14) {
if ("1".equals(oConvertUtils.getString((var7.get(var14)).get(IS_SHOW)))) {
var15 = (var7.get(var14)).get("field_name").toString();
ExcelExportEntity var16 = new ExcelExportEntity((var7.get(var14)).get("field_txt").toString(), var15, 15);
Object var17 = (var7.get(var14)).get("dict_code");
JSONArray var18 = JSON.parseArray(JSON.toJSONString(var9));
List<DictModel> var19 = this.a(oConvertUtils.getString(var17), var18, var15);
getVar16(var16, var19);
Object var50 = (var7.get(var14)).get("replace_val");
getVar16(var16, var50);
if (oConvertUtils.isNotEmpty((var7.get(var14)).get("group_title"))) {
String var52 = (var7.get(var14)).get("group_title").toString();
Object var53 = new ArrayList<>();
if (var12.containsKey(var52)) {
var53 = var12.get(var52);
((List)var53).add(var15);
} else {
ExcelExportEntity var23 = new ExcelExportEntity(var52, var52, true);
var13.add(var23);
((List)var53).add(var15);
}
var12.put(var52, var53);
var16.setColspan(true);
}
var13.add(var16);
}
getVar36(var7, var36, var14);
}
Iterator<Entry<String, Object>> var37 = var12.entrySet().iterator();
String var42;
while(var37.hasNext()) {
Entry<String, Object> var39 = var37.next();
var42 = var39.getKey();
List<String> var43 = (List)var39.getValue();
getVar48(var13, var42, var43);
}
if (!var36.isEmpty()) {
getVar38(var9, var36, var11);
var9.add(var11);
}
var3.setContentType("application/vnd.ms-excel");
getVar41(var2, var3, var4, var5, var9, var13);
}
private void getVar36(List<Map<String, Object>> var7, ArrayList<String> var36, int var14) {
if ("1".equals(oConvertUtils.getString((var7.get(var14)).get("is_total")))) {
var36.add((var7.get(var14)).get("field_name").toString());
}
}
private void getVar16(ExcelExportEntity var16, Object var50) {
if (oConvertUtils.isNotEmpty(var50)) {
var16.setReplace(var50.toString().split(","));
}
}
private void getVar38(List<Map<String, Object>> var9, ArrayList<String> var36, HashMap<String, Object> var11) {
String var42;
BigDecimal var38 = BigDecimal.valueOf(0.0D);
for (String o : var36) {
var42 = o;
var38 = getBigDecimal(var9, var42, var38);
var11.put(var42, var38);
}
}
private void getVar48(ArrayList<ExcelExportEntity> var13, String var42, List<String> var43) {
for (ExcelExportEntity o : var13) {
ExcelExportEntity var48 = o;
if (var42.equals(var48.getName()) && var48.isColspan()) {
var48.setSubColumnList(var43);
}
}
}
private void getVar16(ExcelExportEntity var16, List<DictModel> var19) {
if (var19 != null && !var19.isEmpty()) {
ArrayList<String> var20 = new ArrayList<>();
for (DictModel o : var19) {
var20.add(o.getText() + "_" + o.getValue());
}
var16.setReplace(var20.toArray(new String[var20.size()]));
}
}
private BigDecimal getBigDecimal(List<Map<String, Object>> var9, String var42, BigDecimal var38) {
for (Map<String, Object> value : var9) {
Map<String, Object> var47 = value;
String var49 = var47.get(var42).toString();
if (var49.matches("\\d+(.\\d+)?")) {
BigDecimal var51 = new BigDecimal(var49);
var38 = var38.add(var51);
}
}
return var38;
}
private void getVar41(HttpServletRequest var2, HttpServletResponse var3, String var4, String var5, List<Map<String, Object>> var9, ArrayList<ExcelExportEntity> var13) {
String var15;
String var42;
ServletOutputStream var41 = null;
try {
var15 = BrowserUtils.checkBrowse(var2);
if ("MSIE".equalsIgnoreCase(var15.substring(0, 4))) {
var3.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(var4, "UTF-8") + ".xls");
} else {
var42 = new String(var4.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1);
var3.setHeader("content-disposition", "attachment;filename=" + var42 + ".xls");
}
Workbook var44 = ExcelExportUtil.exportExcel(new ExportParams(null, var5), var13, var9);
var41 = var3.getOutputStream();
var44.write(var41);
} catch (Exception var33) {
log.error("异常",var33);
} finally {
try {
if(var41 != null){var41.flush();var41.close();}
} catch (Exception var32) {
log.error("异常",var32);
}
}
}
@GetMapping({"/getRpColumns/{code}"})
public Result<Map<String,Object>> d(@PathVariable("code") String var1) {
LambdaQueryWrapper<OnlCgreportHead> var2 = new LambdaQueryWrapper<>();
var2.eq(OnlCgreportHead::getCode, var1);
OnlCgreportHead var3 = this.onlCgreportHeadService.getOne(var2);
if (var3 == null) {
return Result.error(EN_IS_NULL);
} else {
QueryWrapper<OnlCgreportItem> var4 = new QueryWrapper<>();
var4.eq(CGR_HEAD_ID, var3.getId());
var4.eq(IS_SHOW, 1);
var4.orderByAsc(ORDER_NUM);
List<OnlCgreportItem> var5 = this.onlCgreportItemService.list(var4);
ArrayList<Map<String,Object>> var6 = new ArrayList<>();
HashMap<String,Object> var7 = new HashMap<>();
HashMap<String,Object> var10;
for(Iterator<OnlCgreportItem> var8 = var5.iterator(); var8.hasNext(); var6.add(var10)) {
OnlCgreportItem var9 = var8.next();
var10 = new HashMap<>(3);
var10.put(TITLE, var9.getFieldTxt());
var10.put(DATA_INDEX, var9.getFieldName());
var10.put(ALIGN, CENTER);
String var11 = var9.getFieldType();
if ("Integer".equals(var11) || "Date".equals(var11) || "Long".equals(var11)) {
var10.put(SORTER, "true");
}
String var12 = var9.getDictCode();
if (oConvertUtils.isNotEmpty(var12)) {
List<DictModel> var13 = this.a(var9.getDictCode(), (JSONArray)null, (String)null);
var7.put(var9.getFieldName(), var13);
var10.put(CUSTOM_RENDER, var9.getFieldName());
}
}
HashMap<String,Object> var14 = new HashMap<>(1);
var14.put(COLUMNS, var6);
var14.put(DICT_OPTIONS, var7);
var14.put("cgRpConfigId", var3.getId());
var14.put("cgRpConfigName", var3.getName());
return Result.OK(var14);
}
}
@PostMapping({"/testConnection"})
public Result<String> a(@RequestBody DynamicDataSourceModel var1) {
Result<String> var4;
try (Connection var2 = DriverManager.getConnection(var1.getDbUrl(), var1.getDbUsername(), var1.getDbPassword())){
Class.forName(var1.getDbDriver());
Result<String> var3;
if (var2 == null) {
var3 = Result.OK("数据库连接失败:错误未知");
return var3;
}
var3 = Result.OK("数据库连接成功");
return var3;
} catch (ClassNotFoundException var17) {
log.error(var17.toString());
var4 = Result.error("数据库连接失败:驱动类不存在");
} catch (Exception var18) {
log.error(var18.toString());
var4 = Result.error("数据库连接失败:" + var18.getMessage());
return var4;
}
return var4;
}
}
@@ -1,195 +0,0 @@
package com.jero.generater.modules.online.cgreport.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.api.vo.Result;
import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.system.query.QueryGenerator;
import com.jero.common.system.vo.DynamicDataSourceModel;
import com.jero.common.util.SqlInjectionUtil;
import com.jero.generater.modules.online.cgform.util.CgformUtil;
import com.jero.generater.modules.online.cgreport.entity.OnlCgreportHead;
import com.jero.generater.modules.online.cgreport.entity.OnlCgreportItem;
import com.jero.generater.modules.online.cgreport.entity.OnlCgreportParam;
import com.jero.generater.modules.online.cgreport.model.OnlCgreportModel;
import com.jero.generater.modules.online.cgreport.service.IOnlCgreportHeadService;
import com.jero.generater.modules.online.cgreport.service.IOnlCgreportItemService;
import com.jero.generater.modules.online.cgreport.service.IOnlCgreportParamService;
import com.jero.modules.base.service.BaseCommonService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
@RestController("onlCgreportHeadController")
@RequestMapping({"/online/cgreport/head"})
@Slf4j
public class OnlCgreportHeadController {
@Autowired
private ISysBaseAPI sysBaseAPI;
@Autowired
private IOnlCgreportHeadService onlCgreportHeadService;
@Autowired
private IOnlCgreportParamService onlCgreportParamService;
@Autowired
private IOnlCgreportItemService onlCgreportItemService;
@Autowired
private BaseCommonService baseCommonService;
@GetMapping({"/parseSql"})
public Result<Map<String, Object>> a(@RequestParam(name = "sql") String var1, @RequestParam(name = "dbKey",required = false) String var2) {
if (StringUtils.isNotBlank(var2)) {
DynamicDataSourceModel var3 = this.sysBaseAPI.getDynamicDbSourceByCode(var2);
if (var3 == null) {
return Result.error("数据源不存在");
}
}
HashMap<String, Object> var13 = new HashMap<>();
ArrayList<OnlCgreportItem> var4 = new ArrayList<>();
ArrayList<OnlCgreportParam> var5 = new ArrayList<>();
List<String> var6;
List<String> var7;
try {
log.info("Online报表,sql解析:" + var1);
this.baseCommonService.addLog("Online报表,sql解析:" + var1, 2, 2);
SqlInjectionUtil.specialFilterContentForOnlineReport(var1);
var6 = this.onlCgreportHeadService.getSqlFields(var1, var2);
var7 = this.onlCgreportHeadService.getSqlParams(var1);
int var8 = 1;
String var14;
Iterator<String> var15;
for(var15 = var6.iterator(); var15.hasNext(); ++var8) {
var14 = var15.next();
OnlCgreportItem var11 = new OnlCgreportItem();
var11.setFieldName(var14.toLowerCase());
var11.setFieldTxt(var14);
var11.setIsShow(1);
var11.setOrderNum(var8);
var11.setId(CgformUtil.a());
var11.setFieldType("String");
var4.add(var11);
}
var15 = var7.iterator();
while(var15.hasNext()) {
var14 = var15.next();
OnlCgreportParam var16 = new OnlCgreportParam();
var16.setParamName(var14);
var16.setParamTxt(var14);
var5.add(var16);
}
var13.put("fields", var4);
var13.put("params", var5);
return Result.OK(var13);
} catch (Exception var12) {
log.error(var12.getMessage(), var12);
String var9 = "解析失败,";
int var10 = var12.getMessage().indexOf("Connection refused: connect");
if (var10 != -1) {
var9 = var9 + "数据源连接失败.";
} else if (var12.getMessage().contains("值可能存在SQL注入风险")) {
var9 = var9 + "SQL可能存在SQL注入风险.";
} else if (var12.getMessage().contains("该报表sql没有数据")) {
var9 = var9 + "报表sql查询数据为空,无法解析字段.";
} else if (var12.getMessage().contains("SqlServer不支持SQL内排序")) {
var9 = var9 + "SqlServer不支持SQL内排序.";
} else {
var9 = var9 + "SQL语法错误.";
}
return Result.error(var9);
}
}
@GetMapping({"/list"})
public Result<IPage<OnlCgreportHead>> a(OnlCgreportHead var1, @RequestParam(name = "pageNo",defaultValue = "1") Integer var2, @RequestParam(name = "pageSize",defaultValue = "10") Integer var3, HttpServletRequest var4) {
Result<IPage<OnlCgreportHead>> var5 = new Result<>();
QueryWrapper<OnlCgreportHead> var6 = QueryGenerator.initQueryWrapper(var1, var4.getParameterMap());
Page<OnlCgreportHead> var7 = new Page<>(var2, var3);
IPage<OnlCgreportHead> var8 = this.onlCgreportHeadService.page(var7, var6);
var5.setSuccess(true);
var5.setResult(var8);
return var5;
}
@PostMapping({"/add"})
public Result<String> add(@RequestBody OnlCgreportModel var1) {
try {
String var3 = CgformUtil.a();
OnlCgreportHead var4 = var1.getHead();
List<OnlCgreportParam> var5 = var1.getParams();
List<OnlCgreportItem> var6 = var1.getItems();
var4.setId(var3);
Iterator<OnlCgreportParam> var7 = var5.iterator();
Iterator<OnlCgreportItem> var9 = var6.iterator();
while(var7.hasNext()) {
OnlCgreportParam var8 = var7.next();
var8.setId(null);
var8.setCgrheadId(var3);
}
while(var9.hasNext()) {
OnlCgreportItem var10 = var9.next();
var10.setId(null);
var10.setFieldName(var10.getFieldName().trim().toLowerCase());
var10.setCgrheadId(var3);
}
this.onlCgreportHeadService.save(var4);
this.onlCgreportParamService.saveBatch(var5);
this.onlCgreportItemService.saveBatch(var6);
return Result.OK("操作成功!");
} catch (Exception var9) {
log.error(var9.getMessage(), var9);
return Result.error("操作失败");
}
}
@PostMapping({"/editAll"})
public Result<String> editAll(@RequestBody OnlCgreportModel cgreportModel) {
try {
return this.onlCgreportHeadService.editAll(cgreportModel);
} catch (Exception e) {
log.error(e.getMessage(), e);
return Result.error("操作失败");
}
}
@PostMapping({"/delete"})
public Result<String> delete(@RequestBody Map<String,String> map) {
String id = map.get("id");
if(StringUtils.isBlank(id)){
return Result.error("参数不识别!");
}
return this.onlCgreportHeadService.delete(id);
}
@PostMapping({"/deleteBatch"})
public Result<String> deleteBatch(@RequestBody Map<String,String> map) {
String ids = map.get("ids");
if(StringUtils.isBlank(ids)){
return Result.error("参数不识别!");
}
return this.onlCgreportHeadService.bathDelete(ids.split(","));
}
@GetMapping({"/queryById"})
public Result<OnlCgreportHead> queryById(@RequestParam(name = "id",required = true) String id) {
Result<OnlCgreportHead> result = new Result<>();
OnlCgreportHead cgreportHead = this.onlCgreportHeadService.getById(id);
result.setResult(cgreportHead);
return result;
}
}
@@ -1,92 +0,0 @@
package com.jero.generater.modules.online.cgreport.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.api.vo.Result;
import com.jero.common.system.query.QueryGenerator;
import com.jero.generater.modules.online.cgreport.entity.OnlCgreportItem;
import com.jero.generater.modules.online.cgreport.service.IOnlCgreportItemService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@RestController("onlCgreportItemController")
@RequestMapping({"/online/cgreport/item"})
@Slf4j
public class OnlCgreportItemController {
@Autowired
private IOnlCgreportItemService onlCgreportItemService;
@GetMapping({"/listByHeadId"})
public Result<List<OnlCgreportItem>> a(@RequestParam("headId") String var1) {
QueryWrapper<OnlCgreportItem> var2 = new QueryWrapper<>();
var2.eq("cgrhead_id", var1);
var2.orderByAsc("order_num");
List<OnlCgreportItem> var3 = this.onlCgreportItemService.list(var2);
Result<List<OnlCgreportItem>> var4 = new Result<>();
var4.setSuccess(true);
var4.setResult(var3);
return var4;
}
@GetMapping({"/list"})
public Result<IPage<OnlCgreportItem>> a(OnlCgreportItem var1, @RequestParam(name = "pageNo",defaultValue = "1") Integer var2, @RequestParam(name = "pageSize",defaultValue = "10") Integer var3, HttpServletRequest var4) {
Result<IPage<OnlCgreportItem>> var5 = new Result<>();
QueryWrapper<OnlCgreportItem> var6 = QueryGenerator.initQueryWrapper(var1, var4.getParameterMap());
Page<OnlCgreportItem> var7 = new Page<>(var2, var3);
IPage<OnlCgreportItem> var8 = this.onlCgreportItemService.page(var7, var6);
var5.setSuccess(true);
var5.setResult(var8);
return var5;
}
@PostMapping({"/add"})
public Result<String> a(@RequestBody OnlCgreportItem var1) {
this.onlCgreportItemService.save(var1);
return Result.OK("操作成功!");
}
@PostMapping({"/edit"})
public Result<String> b(@RequestBody OnlCgreportItem var1) {
this.onlCgreportItemService.updateById(var1);
return Result.OK("操作成功!");
}
@PostMapping({"/delete"})
public Result<String> b(@RequestBody Map<String,String> map) {
String var1 = map.get("id");
if(StringUtils.isEmpty(var1)){
return Result.error("参数不识别!");
}
this.onlCgreportItemService.removeById(var1);
return Result.OK("删除成功!");
}
@PostMapping({"/deleteBatch"})
public Result<String> c(@RequestBody Map<String,String> map) {
String var1 = map.get("ids");
if(StringUtils.isBlank(var1)){
return Result.error("参数不识别!");
}
this.onlCgreportItemService.removeByIds(Arrays.asList(var1.split(",")));
return Result.OK("批量删除成功!");
}
@GetMapping({"/queryById"})
public Result<OnlCgreportItem> d(@RequestParam(name = "id",required = true) String var1) {
Result<OnlCgreportItem> var2 = new Result<>();
OnlCgreportItem var3 = this.onlCgreportItemService.getById(var1);
var2.setResult(var3);
var2.setSuccess(true);
return var2;
}
}
@@ -1,92 +0,0 @@
package com.jero.generater.modules.online.cgreport.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.api.vo.Result;
import com.jero.common.system.query.QueryGenerator;
import com.jero.generater.modules.online.cgreport.entity.OnlCgreportParam;
import com.jero.generater.modules.online.cgreport.service.IOnlCgreportParamService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@RestController("onlCgreportParamController")
@RequestMapping({"/online/cgreport/param"})
@Slf4j
public class OnlCgreportParamController {
@Autowired
private IOnlCgreportParamService onlCgreportParamService;
@GetMapping({"/listByHeadId"})
public Result<List<OnlCgreportParam>> a(@RequestParam("headId") String var1) {
QueryWrapper<OnlCgreportParam> var2 = new QueryWrapper<>();
var2.eq("cgrhead_id", var1);
var2.orderByAsc("order_num");
List<OnlCgreportParam> var3 = this.onlCgreportParamService.list(var2);
Result<List<OnlCgreportParam>> var4 = new Result<>();
var4.setSuccess(true);
var4.setResult(var3);
return var4;
}
@GetMapping({"/list"})
public Result<IPage<OnlCgreportParam>> a(OnlCgreportParam var1, @RequestParam(name = "pageNo", defaultValue = "1") Integer var2, @RequestParam(name = "pageSize", defaultValue = "10") Integer var3, HttpServletRequest var4) {
Result<IPage<OnlCgreportParam>> var5 = new Result<>();
QueryWrapper<OnlCgreportParam> var6 = QueryGenerator.initQueryWrapper(var1, var4.getParameterMap());
Page<OnlCgreportParam> var7 = new Page<>(var2, var3);
IPage<OnlCgreportParam> var8 = this.onlCgreportParamService.page(var7, var6);
var5.setSuccess(true);
var5.setResult(var8);
return var5;
}
@PostMapping({"/add"})
public Result<String> a(@RequestBody OnlCgreportParam var1) {
this.onlCgreportParamService.save(var1);
return Result.OK("操作成功!");
}
@PostMapping({"/edit"})
public Result<String> b(@RequestBody OnlCgreportParam var1) {
this.onlCgreportParamService.updateById(var1);
return Result.OK("操作成功!");
}
@PostMapping({"/delete"})
public Result<Object> b(@RequestBody Map<String, String> map) {
String var1 = map.get("id");
if(StringUtils.isBlank(var1)){
return Result.error("参数不识别!");
}
this.onlCgreportParamService.removeById(var1);
return Result.OK("删除成功!");
}
@PostMapping({"/deleteBatch"})
public Result<Object> deleteBatch(@RequestBody Map<String, String> map) {
String var1 = map.get("ids");
if(StringUtils.isBlank(var1)){
return Result.error("参数不识别!");
}
this.onlCgreportParamService.removeByIds(Arrays.asList(var1.split(",")));
return Result.OK("批量删除成功!");
}
@GetMapping({"/queryById"})
public Result<OnlCgreportParam> d(@RequestParam(name = "id", required = true) String var1) {
Result<OnlCgreportParam> var2 = new Result<>();
OnlCgreportParam var3 = this.onlCgreportParamService.getById(var1);
var2.setResult(var3);
return var2;
}
}
@@ -1,29 +0,0 @@
package com.jero.generater.modules.online.cgreport.service;
import com.baomidou.mybatisplus.extension.service.IService;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import com.jero.common.api.vo.Result;
import com.jero.generater.modules.online.cgreport.entity.OnlCgreportHead;
import com.jero.generater.modules.online.cgreport.model.OnlCgreportModel;
public interface IOnlCgreportHeadService extends IService<OnlCgreportHead> {
Result<String> editAll(OnlCgreportModel var1);
Result<String> delete(String var1);
Result<String> bathDelete(String[] var1);
Map<String, Object> executeSelectSql(String var1, String var2, Map<String, Object> var3) throws SQLException;
Map<String, Object> executeSelectSqlDynamic(String var1, String var2, Map<String, Object> var3, String var4);
List<String> getSqlFields(String var1, String var2) throws SQLException;
List<String> getSqlParams(String var1);
Map<String, Object> queryCgReportConfig(String var1);
}
@@ -1,411 +0,0 @@
package com.jero.generater.modules.online.cgreport.service.a;
import cn.hutool.core.util.ReUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import java.sql.SQLException;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.jero.common.api.vo.Result;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.system.query.QueryGenerator;
import com.jero.common.system.vo.DynamicDataSourceModel;
import com.jero.common.util.oConvertUtils;
import com.jero.common.util.dynamic.db.DataSourceCachePool;
import com.jero.common.util.dynamic.db.DynamicDBUtil;
import com.jero.common.util.dynamic.db.SqlUtils;
import com.jero.generater.modules.online.cgform.enums.DataBaseEnum;
import com.jero.generater.modules.online.cgform.util.CgformUtil;
import com.jero.generater.modules.online.cgreport.entity.OnlCgreportHead;
import com.jero.generater.modules.online.cgreport.entity.OnlCgreportItem;
import com.jero.generater.modules.online.cgreport.entity.OnlCgreportParam;
import com.jero.generater.modules.online.cgreport.mapper.OnlCgreportHeadMapper;
import com.jero.generater.modules.online.cgreport.model.OnlCgreportModel;
import com.jero.generater.modules.online.cgreport.service.IOnlCgreportHeadService;
import com.jero.generater.modules.online.cgreport.service.IOnlCgreportItemService;
import com.jero.generater.modules.online.cgreport.service.IOnlCgreportParamService;
import com.jero.generater.modules.online.cgreport.util.CgReportQueryParamUtil;
import com.jero.generater.modules.online.cgreport.util.SqlUtil;
import com.jero.generater.modules.online.config.util.DbTableUtil;
import com.jero.generater.modules.online.config.exception.DBException;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service("onlCgreportHeadServiceImpl")
@Slf4j
public class OnlCgreportHeadServiceImpl extends ServiceImpl<OnlCgreportHeadMapper, OnlCgreportHead> implements IOnlCgreportHeadService {
@Autowired
private IOnlCgreportParamService onlCgreportParamService;
@Autowired
private IOnlCgreportItemService onlCgreportItemService;
@Autowired
private OnlCgreportHeadMapper mapper;
@Autowired
private ISysBaseAPI sysBaseAPI;
private static final String ORDER_S_BY = " order\\s+by ";
private static final String SQL_SERVER_NOT_ORDER = "SqlServer不支持SQL内排序!";
private static final String COLUMN = "column";
private static final String ORDER = "order";
private static final String TOTAL = "total";
@Override
public Map<String, Object> executeSelectSql(String sql, String onlCgreportHeadId, Map<String, Object> params) throws SQLException {
String var4 = null;
try {
var4 = DbTableUtil.getDatabaseType();
} catch (DBException var19) {
var19.printStackTrace();
}
LambdaQueryWrapper<OnlCgreportParam> var5 = new LambdaQueryWrapper<>();
var5.eq(OnlCgreportParam::getCgrheadId, onlCgreportHeadId);
List<OnlCgreportParam> var6 = this.onlCgreportParamService.list(var5);
if (var6 != null && !var6.isEmpty()) {
for (OnlCgreportParam var8 : var6) {
Object var9 = params.get("self_" + var8.getParamName());
String var10 = "";
var10 = getString(var8, var9, var10);
String var11 = "${" + var8.getParamName() + "}";
if (sql.contains(var11)) {
if (var10 != null && var10.startsWith("'") && var10.endsWith("'")) {
var10 = var10.substring(1, var10.length() - 1);
}
sql = sql.replace(var11, var10);
} else if (oConvertUtils.isNotEmpty(var10)) {
params.put("popup_param_pre__" + var8.getParamName(), var10);
}
}
}
return getStringObjectMap(sql, onlCgreportHeadId, params, var4);
}
private String getString(OnlCgreportParam var8, Object var9, String var10) {
if (var9 != null) {
var10 = var9.toString();
} else if (oConvertUtils.isNotEmpty(var8.getParamValue())) {
var10 = var8.getParamValue();
}
return var10;
}
@NotNull
private Map<String, Object> getStringObjectMap(String sql, String onlCgreportHeadId, Map<String, Object> params, String var4) {
HashMap<String, Object> var20 = new HashMap<>();
int var21 = oConvertUtils.getInt(params.get("pageSize"), 10);
int var22 = oConvertUtils.getInt(params.get("pageNo"), 1);
Page<Map<String, Object>> var24 = new Page<>(var22, var21);
LambdaQueryWrapper<OnlCgreportItem> var23 = new LambdaQueryWrapper<>();
var23.eq(OnlCgreportItem::getCgrheadId, onlCgreportHeadId);
var23.eq(OnlCgreportItem::getIsSearch, 1);
List<OnlCgreportItem> var12 = this.onlCgreportItemService.list(var23);
String var13 = "jero_rp_temp.";
String var14 = CgReportQueryParamUtil.a(var12, params, var13, null);
if (ReUtil.contains(ORDER_S_BY, sql.toLowerCase()) && "SQLSERVER".equalsIgnoreCase(var4)) {
throw new JeroBootException(SQL_SERVER_NOT_ORDER);
} else {
String var15 = "select * from (" + sql + ") jero_rp_temp where 1=1 " + var14;
var15 = SqlUtil.b(var15);
Object var16 = params.get(COLUMN);
if (var16 != null) {
var15 = var15 + " order by jero_rp_temp." + var16.toString() + " " + params.get(ORDER).toString();
}
log.info("报表查询sql=>\r\n" + var15);
Object var17;
if (Boolean.TRUE.equals(Boolean.valueOf(String.valueOf(params.get("getAll"))))) {
List<Map<String, Object>> var18 = this.mapper.executeSelect(var15);
var17 = new Page<>();
((IPage)var17).setRecords(var18);
((IPage)var17).setTotal(var18.size());
} else {
var17 = this.mapper.selectPageBySql(var24, var15);
}
var20.put(TOTAL, ((IPage)var17).getTotal());
var20.put("records", CgformUtil.d(((IPage)var17).getRecords()));
return var20;
}
}
@Override
public Map<String, Object> executeSelectSqlDynamic(String dbKey, String sql, Map<String, Object> params, String onlCgreportHeadId) {
DynamicDataSourceModel var5 = DataSourceCachePool.getCacheDynamicDataSourceModel(dbKey);
int var8 = oConvertUtils.getInt(params.get("pageNo"), 1);
int var9 = oConvertUtils.getInt(params.get("pageSize"), 10);
log.info("【Online多数据源逻辑】报表查询参数params: " + JSON.toJSONString(params));
LambdaQueryWrapper<OnlCgreportParam> var10 = new LambdaQueryWrapper<>();
var10.eq(OnlCgreportParam::getCgrheadId, onlCgreportHeadId);
List<OnlCgreportParam> var11 = this.onlCgreportParamService.list(var10);
OnlCgreportParam var13;
String var15;
if (var11 != null && !var11.isEmpty()) {
for(Iterator<OnlCgreportParam> var12 = var11.iterator(); var12.hasNext(); sql = sql.replace("${" + var13.getParamName() + "}", var15)) {
var13 = var12.next();
Object var14 = params.get("self_" + var13.getParamName());
var15 = "";
if (var14 != null) {
var15 = var14.toString();
} else if (oConvertUtils.isNotEmpty(var13.getParamValue())) {
var15 = var13.getParamValue();
}
}
}
LambdaQueryWrapper<OnlCgreportItem> var24 = new LambdaQueryWrapper<>();
var24.eq(OnlCgreportItem::getCgrheadId, onlCgreportHeadId);
var24.eq(OnlCgreportItem::getIsSearch, 1);
List<OnlCgreportItem> var25 = this.onlCgreportItemService.list(var24);
if (ReUtil.contains(ORDER_S_BY, sql.toLowerCase()) && "3".equalsIgnoreCase(var5.getDbType())) {
throw new JeroBootException(SQL_SERVER_NOT_ORDER);
} else {
String var26 = "jero_rp_temp.";
var15 = DataBaseEnum.getDataBaseNameByValue(var5.getDbType());
String var16 = CgReportQueryParamUtil.a(var25, params, var26, var15);
String var17 = "select * from (" + sql + ") jero_rp_temp where 1=1 " + var16;
var17 = SqlUtil.b(var17);
String var18 = SqlUtils.getCountSql(var17);
Object var19 = params.get(COLUMN);
if (var19 != null) {
var17 = var17 + " order by jero_rp_temp." + var19.toString() + " " + params.get(ORDER).toString();
}
String var20 = var17;
if (Boolean.FALSE.equals(Boolean.valueOf(String.valueOf(params.get("getAll"))))) {
var20 = SqlUtils.createPageSqlByDBType(var5.getDbType(), var17, var8, var9);
}
log.info("多数据源 报表查询sql=>querySql: " + var17);
log.info("多数据源 报表查询sql=>pageSQL: " + var20);
log.info("多数据源 报表查询sql=>countSql: " + var18);
HashMap<String, Object> var21 = new HashMap<>();
Map<String, Object> var22 = (Map)DynamicDBUtil.findOne(dbKey, var18);
var21.put(TOTAL, var22.get(TOTAL));
List<Map<String, Object>> var23 = DynamicDBUtil.findList(dbKey, var20);
var21.put("records", CgformUtil.d(var23));
return var21;
}
}
@Override
@Transactional(
rollbackFor = {Exception.class}
)
public Result<String> editAll(OnlCgreportModel values) {
OnlCgreportHead var2 = values.getHead();
OnlCgreportHead var3 = super.getById(var2.getId());
if (var3 == null) {
return Result.error("未找到对应实体");
} else {
super.updateById(var2);
LambdaQueryWrapper<OnlCgreportItem> var4 = new LambdaQueryWrapper<>();
var4.eq(OnlCgreportItem::getCgrheadId, var2.getId());
this.onlCgreportItemService.remove(var4);
LambdaQueryWrapper<OnlCgreportParam> var5 = new LambdaQueryWrapper<>();
var5.eq(OnlCgreportParam::getCgrheadId, var2.getId());
this.onlCgreportParamService.remove(var5);
Iterator<OnlCgreportParam> var6 = values.getParams().iterator();
Iterator<OnlCgreportItem> var9 = values.getItems().iterator();
while(var6.hasNext()) {
OnlCgreportParam var7 = var6.next();
var7.setCgrheadId(var2.getId());
}
while(var9.hasNext()) {
OnlCgreportItem var8 = var9.next();
var8.setFieldName(var8.getFieldName().trim().toLowerCase());
var8.setCgrheadId(var2.getId());
}
this.onlCgreportItemService.saveBatch(values.getItems());
this.onlCgreportParamService.saveBatch(values.getParams());
return Result.OK("全部修改成功");
}
}
@Override
@Transactional(
rollbackFor = {Exception.class}
)
public Result<String> delete(String id) {
boolean var2 = super.removeById(id);
if (var2) {
LambdaQueryWrapper<OnlCgreportItem> var3 = new LambdaQueryWrapper<>();
var3.eq(OnlCgreportItem::getCgrheadId, id);
this.onlCgreportItemService.remove(var3);
LambdaQueryWrapper<OnlCgreportParam> var4 = new LambdaQueryWrapper<>();
var4.eq(OnlCgreportParam::getCgrheadId, id);
this.onlCgreportParamService.remove(var4);
}
return Result.OK("删除成功");
}
@Override
@Transactional(
rollbackFor = {Exception.class}
)
public Result<String> bathDelete(String[] ids) {
String[] var2 = ids;
int var3 = ids.length;
for(int var4 = 0; var4 < var3; ++var4) {
String var5 = var2[var4];
boolean var6 = super.removeById(var5);
if (var6) {
LambdaQueryWrapper<OnlCgreportItem> var7 = new LambdaQueryWrapper<>();
var7.eq(OnlCgreportItem::getCgrheadId, var5);
this.onlCgreportItemService.remove(var7);
LambdaQueryWrapper<OnlCgreportParam> var8 = new LambdaQueryWrapper<>();
var8.eq(OnlCgreportParam::getCgrheadId, var5);
this.onlCgreportParamService.remove(var8);
}
}
return Result.OK("删除成功");
}
@Override
public List<String> getSqlFields(String sql, String dbKey) throws SQLException {
List<String> var3;
if (StringUtils.isNotBlank(dbKey)) {
var3 = this.a(sql, dbKey);
} else {
var3 = this.a(sql, (String)null);
}
return var3;
}
@Override
public List<String> getSqlParams(String sql) {
if (oConvertUtils.isEmpty(sql)) {
return Collections.emptyList();
} else {
ArrayList<String> var2 = new ArrayList<>();
String var3 = "\\$\\{\\w+\\}";
Pattern var4 = Pattern.compile(var3);
Matcher var5 = var4.matcher(sql);
while(var5.find()) {
String var6 = var5.group();
var2.add(var6.substring(var6.indexOf("{") + 1, var6.indexOf("}")));
}
return var2;
}
}
private List<String> a(String var1, String var2) throws SQLException {
if (oConvertUtils.isEmpty(var1)) {
return Collections.emptyList();
} else {
return getStrings(var1, var2);
}
}
@NotNull
private List<String> getStrings(String var1, String var2) throws SQLException {
var1 = var1.trim();
if (var1.endsWith(";")) {
var1 = var1.substring(0, var1.length() - 1);
}
var1 = QueryGenerator.convertSystemVariables(var1);
var1 = SqlUtil.a(var1);
Set<String> var3;
if (StringUtils.isNotBlank(var2)) {
log.info("parse sql : " + var1);
DynamicDataSourceModel var4 = DataSourceCachePool.getCacheDynamicDataSourceModel(var2);
var1 = getString(var1, var4);
log.info("parse sql with page : " + var1);
Map<String, Object> var5 = (Map) DynamicDBUtil.findOne(var2, var1);
if (var5 == null) {
throw new JeroBootException("该报表sql没有数据");
}
var3 = var5.keySet();
} else {
log.info("parse sql: " + var1);
String var8 = null;
try {
var8 = DbTableUtil.getDatabaseType();
} catch (DBException var7) {
var7.printStackTrace();
}
if (ReUtil.contains(ORDER_S_BY, var1.toLowerCase()) && "SQLSERVER".equalsIgnoreCase(var8)) {
throw new JeroBootException(SQL_SERVER_NOT_ORDER);
}
IPage<Map<String, Object>> var9 = this.mapper.selectPageBySql(new Page<>(1L, 1L), var1);
List<Map<String, Object>> var6 = var9.getRecords();
if (var6.isEmpty()) {
throw new JeroBootException("该报表sql没有数据");
}
var3 = ((Map)var6.get(0)).keySet();
}
if (var3 != null) {
var3.remove("ROW_ID");
}
return new ArrayList<>(var3);
}
@NotNull
private String getString(String var1, DynamicDataSourceModel var4) {
if (ReUtil.contains(ORDER_S_BY, var1.toLowerCase()) && "3".equalsIgnoreCase(var4.getDbType())) {
throw new JeroBootException(SQL_SERVER_NOT_ORDER);
}
if ("1".equals(var4.getDbType())) {
var1 = "SELECT * FROM (" + var1 + ") temp LIMIT 1";
} else if ("2".equals(var4.getDbType())) {
var1 = "SELECT * FROM (" + var1 + ") temp WHERE ROWNUM <= 1";
} else if ("3".equals(var4.getDbType())) {
var1 = "SELECT TOP 1 * FROM (" + var1 + ") temp";
}
return var1;
}
@Override
public Map<String, Object> queryCgReportConfig(String reportId) {
HashMap<String,Object> var2 = new HashMap<>(0);
Map<String, Object> var3 = this.mapper.queryCgReportMainConfig(reportId);
List<Map<String, Object>> var4 = this.mapper.queryCgReportItems(reportId);
List<OnlCgreportParam> var5 = this.mapper.queryCgReportParams(reportId);
if (DbTableUtil.a()) {
var2.put("main", CgformUtil.b(var3));
var2.put("items", CgformUtil.d(var4));
} else {
var2.put("main", var3);
var2.put("items", var4);
}
var2.put("params", var5);
return var2;
}
}
@@ -1,205 +0,0 @@
package com.jero.generater.modules.online.cgreport.util;
import com.jero.common.system.query.QueryGenerator;
import com.jero.common.util.oConvertUtils;
import lombok.extern.slf4j.Slf4j;
import javax.servlet.http.HttpServletRequest;
import java.text.MessageFormat;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@Slf4j
public class SqlUtil {
public static final String A_SQL = "select * from ( {0}) sel_tab00 limit {1},{2}";
public static final String B_SQL = "select * from ( {0}) sel_tab00 limit {2} offset {1}";
public static final String C_SQL = "select * from (select row_.*,rownum rownum_ from ({0}) row_ where rownum <= {1}) where rownum_>{2}";
public static final String D_SQL = "select * from ( select row_number() over(order by tempColumn) tempRowNumber, * from (select top {1} tempColumn = 0, {0}) t ) tt where tempRowNumber > {2}";
public static final String E_SQL = "select distinct table_name from information_schema.columns where table_schema = {0}";
public static final String F_SQL = "SELECT distinct c.relname AS table_name FROM pg_class c";
public static final String G_SQL = "select distinct colstable.table_name as table_name from user_tab_cols colstable";
public static final String H_SQL = "select distinct c.name as table_name from sys.objects c";
public static final String I_SQL = "select column_name from information_schema.columns where table_name = {0} and table_schema = {1}";
public static final String J_SQL = "select table_name from information_schema.columns where table_name = {0}";
public static final String K_SQL = "select column_name from all_tab_columns where table_name ={0}";
public static final String L_SQL = "select name from syscolumns where id={0}";
public static final String MYSQL = "MYSQL";
public static final String POST_GRE_SQL = "POSTGRESQL";
public static final String ORACLE = "ORACLE";
public static final String SQL_SERVER = "SQLSERVER";
private SqlUtil() {
}
public static String a(String var0, Map<String, Object> var1) {
StringBuilder var2 = new StringBuilder();
var2.append("SELECT t.* FROM ( ");
var2.append(var0).append(" ");
var2.append(") t ");
if (var1 != null && var1.size() >= 1) {
var2.append("WHERE 1=1 ");
for (String s : var1.keySet()) {
String var4 = String.valueOf(s);
String var5 = String.valueOf(var1.get(var4));
if (oConvertUtils.isNotEmpty(var5)) {
var2.append(" AND ");
var2.append(" ").append(var4).append(var5);
}
}
}
return var2.toString();
}
public static String b(String var0, Map<String,Object> var1) {
String var2 = a(var0, var1);
var2 = "SELECT COUNT(*) COUNT FROM (" + var2 + ") t2";
return var2;
}
public static String a(String var0, String var1, String var2, Map<String, Object> var3, int var4, int var5) {
var2 = a(var2, var3);
int var6 = (var4 - 1) * var5;
String[] var7 = new String[]{var2, var6 + "", var5 + ""};
String var8 = "";
if (MYSQL.equalsIgnoreCase(var8)) {
var2 = MessageFormat.format(A_SQL, var7);
} else if (POST_GRE_SQL.equalsIgnoreCase(var8)) {
var2 = MessageFormat.format(B_SQL, var7);
} else {
int var9 = (var4 - 1) * var5;
int var10 = var9 + var5;
var7[2] = Integer.toString(var9);
var7[1] = Integer.toString(var10);
if (ORACLE.equalsIgnoreCase(var8)) {
var2 = MessageFormat.format(C_SQL, var7);
} else if (SQL_SERVER.equalsIgnoreCase(var8)) {
var7[0] = var2.substring(c(var2));
var2 = MessageFormat.format(D_SQL, var7);
}
}
log.info(var0 + var1);
return var2;
}
private static int c(String var0) {
int var1 = var0.toLowerCase().indexOf("select");
int var2 = var0.toLowerCase().indexOf("select distinct");
return var1 + (var2 == var1 ? 15 : 6);
}
public static String a(String var0, String... var1) {
if (oConvertUtils.isNotEmpty(var0)) {
if (MYSQL.equals(var0)) {
return MessageFormat.format(E_SQL, var1);
}
if (ORACLE.equals(var0)) {
return G_SQL;
}
if (POST_GRE_SQL.equals(var0)) {
return F_SQL;
}
if (SQL_SERVER.equals(var0)) {
return H_SQL;
}
}
return null;
}
public static String b(String var0, String... var1) {
if (oConvertUtils.isNotEmpty(var0)) {
if (MYSQL.equals(var0)) {
return MessageFormat.format(I_SQL, var1);
}
if (ORACLE.equals(var0)) {
return MessageFormat.format(K_SQL, var1);
}
if (POST_GRE_SQL.equals(var0)) {
return MessageFormat.format(J_SQL, var1);
}
if (SQL_SERVER.equals(var0)) {
return MessageFormat.format(L_SQL, var1);
}
}
return null;
}
public static String a(String var0) {
var0 = var0.toLowerCase();
String var1 = "[\\w.]*+ *\\S+ *\\S*\\$\\{\\w+}\\S*";
Pattern var2 = Pattern.compile(var1);
for(Matcher var3 = var2.matcher(var0); var3.find();) {
String var4 = var3.group();
log.info("${}匹配带参SQL片段 ==>" + var4);
if (var4.contains("where")) {
var0 = var0.replace(var4, "where 1=1");
} else if (var4.contains("and")) {
var0 = var0.replace(var4, "and 1=1");
} else if (var4.contains("or")) {
var0 = var0.replace(var4, "or 1=1");
} else {
var0 = var0.replace(var4, "1=1");
}
log.info("${}替换后结果 ==>" + var0);
}
var0 = var0.replaceAll("(?i)AND *1=1", "");
return var0;
}
public static void main(String[] args) {
String var1 = "select * from sys_user where id ='${id}' and del_flag= ${flag}";
log.info(a(var1));
}
public static Map<String, Object> a(HttpServletRequest var0) {
Map<String, String[]> var1 = var0.getParameterMap();
HashMap<String, Object> var2 = new HashMap<>();
for(Map.Entry<String, String[]> entry: var1.entrySet()) {
String var5 = entry.getKey();
String[] var7 = entry.getValue();
String var6 = "";
if (!"_t".equals(var5) && null != var7) {
if (!(var7 instanceof String[])) {
var6 = Arrays.toString(var7);
} else {
String[] var8 = var7;
for(int var9 = 0; var9 < var8.length; ++var9) {
var6 = var8[var9] + ",";
}
var6 = var6.substring(0, var6.length() - 1);
}
} else {
var6 = "";
}
var2.put(var5, var6);
}
return var2;
}
public static String b(String var0) {
String var1 = QueryGenerator.convertSystemVariables(var0);
String var2 = QueryGenerator.getAllConfigAuth();
return var0.toLowerCase().contains("where") ? var1 + var2 : var1 + " where 1=1 " + var2;
}
}