12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- package thyyxxk.webserver.utils;
- import org.jetbrains.annotations.NotNull;
- import thyyxxk.webserver.entity.highreport.HighReportDto;
- /**
- * @Description: 报表相关的工具类
- * @Author: hsh
- * @CreateTime: 2022-11-04 08:34
- * @Version: 1.0
- */
- public class ReportUtil {
- private static final String START_TIME = ":startTime";
- private static final String END_TIME = ":endTime";
- /**
- * 险种(下拉选查询使用)
- **/
- private static final String INSUR_NAME = "_insurName";
- /**
- * 诊断(模糊查询使用)
- **/
- private static final String DIAGN = "_diagn";
- /**
- * @description: 拼接查询数据的sql(备注:采用了script标签包裹方式拼接sql)
- * @author: hsh
- * @date: 2022/11/7 16:21
- * @param: [dto, baseSql, gatherSql]
- * @return: String
- **/
- public static @NotNull String callSqlFormat(HighReportDto dto, @NotNull String baseSql, String gatherSql){
- // 查询必填字段(包括开始时间,结束时间,钻取科室,医生等sql用:拼接的字符)替换
- if(baseSql.contains(START_TIME)){
- baseSql = baseSql.replaceAll(START_TIME, "'" + dto.getStartTime() + "'");
- }
- if(baseSql.contains(END_TIME)){
- baseSql = baseSql.replaceAll(END_TIME, "'" + dto.getEndTime() + "'");
- }
- // 查询非必填字段(一般是下拉选险种,模糊查询科室、诊断等sql用_拼接的字符)
- StringBuilder sql = new StringBuilder();
- sql.append(" select ").append(gatherSql).append(" from (").append(baseSql).append(") t where 1 = 1 ");
- if(baseSql.contains(INSUR_NAME) && StringUtil.notBlank(dto.getInsurName())){
- sql.append(" and t._insurName = '").append(dto.getInsurName()).append("' ");
- }
- if(baseSql.contains(DIAGN) && StringUtil.notBlank(dto.getDiagn())){
- sql.append(" and t._diagn like '%").append(dto.getDiagn()).append("%' ");
- }
- return sql.toString();
- }
- }
|