fix: 87490 外来标准法规文本库--查询--多日期查询,查的是范围了
This commit is contained in:
+23
-9
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user