fix: 87490 外来标准法规文本库--查询--多日期查询,查的是范围了

This commit is contained in:
2024-07-30 15:44:34 +08:00
parent be553c1d2d
commit 0a6b3444ff
@@ -2368,19 +2368,33 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
**/
private void processDateManyTypeCondition(StringBuilder selectCondition, String key, String value) {
if (value.contains(",")) {
String startDate = "date_format('" + value.split(",")[0] + "', '%Y-%m-%d')";
String endDate = "date_format('" + value.split(",")[1] + "', '%Y-%m-%d')";
selectCondition.append(" and (( date_format(SUBSTRING_INDEX(").append(key).append(", ',', 1),'%Y-%m-%d') >= ").append(startDate)
.append(" and date_format(SUBSTRING_INDEX(").append(key).append(", ',', 1),'%Y-%m-%d') <= ").append(endDate).append(")");
selectCondition.append(" or ( date_format(SUBSTRING_INDEX(").append(key).append(", ',', 1),'%Y-%m-%d') <= ").append(startDate)
.append(" and date_format(SUBSTRING_INDEX(").append(key).append(", ',', -1),'%Y-%m-%d') >= ").append(endDate).append(")");
selectCondition.append(" or ( date_format(SUBSTRING_INDEX(").append(key).append(", ',', -1),'%Y-%m-%d') >= ").append(startDate)
.append(" and date_format(SUBSTRING_INDEX(").append(key).append(", ',', -1),'%Y-%m-%d') <= ").append(endDate).append("))");
// 提取输入的开始日期和结束日期
String[] dates = value.split(",");
String startDate = "STR_TO_DATE('" + dates[0] + "', '%Y-%m-%d')";
String endDate = "STR_TO_DATE('" + dates[1] + "', '%Y-%m-%d')";
// 添加 SQL 条件,使用 EXISTS 和一个子查询
selectCondition.append(" AND EXISTS (")
.append("SELECT 1 FROM (")
.append("SELECT 1 n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5")
.append(") numbers WHERE (")
.append(key)
.append(" REGEXP REPLACE(CONCAT('^', REPEAT('.*?,', numbers.n - 1), '.*'), ',{2,}', ',,') AND ")
.append("STR_TO_DATE(SUBSTRING_INDEX(SUBSTRING_INDEX(")
.append(key)
.append(", ',', numbers.n), ',', -1), '%Y-%m-%d') BETWEEN ")
.append(startDate)
.append(" AND ")
.append(endDate)
.append("))");
} else {
selectCondition.append(" and " + key + " like concat(concat('%','" + value + "'),'%')");
// 单个日期的处理,使用 LIKE 进行模糊匹配
selectCondition.append(" AND ").append(key).append(" LIKE CONCAT('%', '").append(value).append("', '%')");
}
}
@Override
public byte[] getMinioFileContent(OSSFile file) throws Exception {
return this.getMinioFileContentNormal(file, false);