Browse Source

定制报表开发

master
Rui_Li 4 years ago
parent
commit
4a8f24a472
  1. 5
      src/main/java/com/gaotao/modules/report/controller/ReportController.java
  2. 2
      src/main/java/com/gaotao/modules/report/dao/ReportDao.java
  3. 12
      src/main/java/com/gaotao/modules/report/dao/impl/ReportDaoImpl.java
  4. 2
      src/main/java/com/gaotao/modules/report/service/ReportService.java
  5. 22
      src/main/java/com/gaotao/modules/report/service/impl/ReportServiceImpl.java

5
src/main/java/com/gaotao/modules/report/controller/ReportController.java

@ -68,10 +68,11 @@ public class ReportController {
**/
@RequestMapping(value = "addCustomerReport")
public R addCustomerReport(@RequestBody SearchReportData inData){
reportService.addCustomerReport(inData);
SearchReportData resultRow = reportService.addCustomerReport(inData);
return R.ok()
.put("code", 200)
.put("msg", "操作成功!");
.put("msg", "操作成功!")
.put("row", resultRow);
}
/**

2
src/main/java/com/gaotao/modules/report/dao/ReportDao.java

@ -165,7 +165,7 @@ public interface ReportDao {
* @Param [site, username]
* @return java.util.List<com.gaotao.modules.report.data.CustomerReportData>
**/
List<CustomerReportData> getUserCustomerReportList(String site, String username);
List<CustomerReportData> getUserCustomerReportList(String site, String username, String reportType, String reportName);
/**
* @Author LR

12
src/main/java/com/gaotao/modules/report/dao/impl/ReportDaoImpl.java

@ -57,7 +57,7 @@ public class ReportDaoImpl implements ReportDao {
paramMap.put("reportType", reportType);
}
if(!(null == reportName || "".equals(reportName))){
sql.append(" AND crh.report_name LIKE %" + reportName+ "%");
sql.append(" AND crh.report_name LIKE '%" + reportName+ "%'");
}
paramMap.put("site", site);
return parameterJdbcTemplate.query(sql.toString(), paramMap, new BeanPropertyRowMapper<>(CustomerReportData.class));
@ -204,7 +204,7 @@ public class ReportDaoImpl implements ReportDao {
}
@Override
public List<CustomerReportData> getUserCustomerReportList(String site, String username) {
public List<CustomerReportData> getUserCustomerReportList(String site, String username, String reportType, String reportName) {
StringBuilder sql = new StringBuilder();
Map<String, Object> paramMap = new HashMap<>();
sql.append("SELECT DISTINCT crh.id, crh.site, crh.report_id, crh.report_name, crh.report_type, crh.report_sql, crh.report_remark, crh.report_status,");
@ -213,6 +213,14 @@ public class ReportDaoImpl implements ReportDao {
sql.append(" LEFT JOIN sys_user_role sur ON sur.role_id = crr.role_id");
sql.append(" LEFT JOIN sys_user su ON su.user_id = sur.user_id");
sql.append(" WHERE crh.site = :site AND su.username = :username");
//判断查询条件
if(!"ALL".equalsIgnoreCase(reportType)){
sql.append(" AND crh.report_type = :reportType");
paramMap.put("reportType", reportType);
}
if(!(null == reportName || "".equals(reportName))){
sql.append(" AND crh.report_name LIKE '%"+reportName+"%'");
}
paramMap.put("site", site);
paramMap.put("username", username);
return parameterJdbcTemplate.query(sql.toString(), paramMap, new BeanPropertyRowMapper<>(CustomerReportData.class));

2
src/main/java/com/gaotao/modules/report/service/ReportService.java

@ -39,7 +39,7 @@ public interface ReportService {
* @Param [inData]
* @return void
**/
void addCustomerReport(SearchReportData inData);
SearchReportData addCustomerReport(SearchReportData inData);
/**
* @Author LR

22
src/main/java/com/gaotao/modules/report/service/impl/ReportServiceImpl.java

@ -65,7 +65,7 @@ public class ReportServiceImpl implements ReportService {
@Override
@Transactional
public void addCustomerReport(SearchReportData inData) {
public SearchReportData addCustomerReport(SearchReportData inData) {
//公共参数
String site = inData.getSite();
String currentDate = DateUtil.getStringDate(new Date(), "yyyyMMdd");
@ -78,6 +78,7 @@ public class ReportServiceImpl implements ReportService {
inData.setCreatedDate(new Date());
//保存定制报表的对象
reportDao.insertCustomerReport(inData);
return inData;
}
/**
@ -139,8 +140,15 @@ public class ReportServiceImpl implements ReportService {
}
//处理sql中的字段
CustomerReportData customerReportData = reportDao.getCustomerReportByReportId(inData);
//判断是否存在sql
String reportSql = customerReportData.getReportSql();
if(reportSql == null || "".equals(reportSql.trim())){
throw new RRException("请先为当前报表添加SQL语句");
}else{
reportSql = reportSql.trim();
}
//获取查询条件的字段
List<String> tempColumns = this.processReportSqlSearchCon(customerReportData.getReportSql());
List<String> tempColumns = this.processReportSqlSearchCon(reportSql);
//去转Map 保存已经保存在数据中的
Map<String, Integer> saveColumnMap = new HashMap<>();
for (CustomerSearchColumnData searchColumn : columnList){
@ -182,7 +190,7 @@ public class ReportServiceImpl implements ReportService {
//判断sql是否合法
int checkIndex = reportSql.indexOf("${");
if(checkIndex <= 0){
throw new RRException("自定义报表的SQL语句非法!");
return new ArrayList<>();
}
//拆分字符串
int lastIndex = reportSql.lastIndexOf("}");
@ -264,6 +272,10 @@ public class ReportServiceImpl implements ReportService {
queryColumnSql.append("''");
}
}
//判断是否替换过查询条件
if(startIndex == 0 && endIndex == 0){
queryColumnSql = new StringBuilder(columnSql);
}
//执行临时的sql 看看返回的sql字段
List<String> columnList = this.parseSqlColumns(queryColumnSql.toString(), JdbcConstants.SQL_SERVER);
//处理数据
@ -423,7 +435,9 @@ public class ReportServiceImpl implements ReportService {
//公共参数
String site = inData.getSite();
String username = inData.getUsername();
return reportDao.getUserCustomerReportList(site, username);
String reportType = inData.getReportType();
String reportName = inData.getReportName().trim();
return reportDao.getUserCustomerReportList(site, username, reportType, reportName);
}
@Override

Loading…
Cancel
Save