feat(job): 处理工单检查内容和整改措施字符串提取

- 新增处理检查内容字段,提取双引号中的文本
- 新增处理整改措施字段,提取双引号中的文本
- 添加正则表达式常量用于内容提取
- 引入 commons-lang3 工具类库支持空值判断
- 实现 extractQuotedContent 方法统一处理字符串提取逻辑
- 格式化提取结果为每项占一行的字符串结构
This commit is contained in:
2025-11-27 11:30:36 +08:00
parent ed4c340414
commit f90e6baa39

View File

@@ -9,6 +9,7 @@ import com.jeelowcode.module.biz.service.IAlibabaWorkOrderService;
import com.jeelowcode.tool.framework.quartz.core.handler.JobHandler; import com.jeelowcode.tool.framework.quartz.core.handler.JobHandler;
import com.jeelowcode.tool.framework.tenant.core.job.TenantJob; import com.jeelowcode.tool.framework.tenant.core.job.TenantJob;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.Resource; import javax.annotation.Resource;
@@ -21,6 +22,8 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static com.jeelowcode.tool.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; import static com.jeelowcode.tool.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@@ -31,6 +34,9 @@ import static com.jeelowcode.tool.framework.common.util.date.DateUtils.FORMAT_YE
@Component @Component
public class AlibabaWorkOrderJob implements JobHandler { public class AlibabaWorkOrderJob implements JobHandler {
// 正则表达式,用于提取字符串中的内容
private static final String REGEX_EXTRACT_CONTENT = "(?<=\")[^\",]*(?=\")";
/** /**
* 阿里数据源名称 * 阿里数据源名称
*/ */
@@ -76,12 +82,12 @@ public class AlibabaWorkOrderJob implements JobHandler {
workOrder.setCampusName(resultSet.getString("campusName")); workOrder.setCampusName(resultSet.getString("campusName"));
workOrder.setCheckArea(resultSet.getString("checkArea")); workOrder.setCheckArea(resultSet.getString("checkArea"));
workOrder.setCheckItem(resultSet.getString("checkItem")); workOrder.setCheckItem(resultSet.getString("checkItem"));
workOrder.setCheckContent(resultSet.getString("checkContent")); workOrder.setCheckContent(handleCheckContent(resultSet.getString("checkContent")));
workOrder.setCheckPersonId(resultSet.getString("checkPersonId")); workOrder.setCheckPersonId(resultSet.getString("checkPersonId"));
workOrder.setCheckPersonName(resultSet.getString("checkPersonName")); workOrder.setCheckPersonName(resultSet.getString("checkPersonName"));
workOrder.setCheckTime(resultSet.getObject("checkTime", LocalDateTime.class)); workOrder.setCheckTime(resultSet.getObject("checkTime", LocalDateTime.class));
workOrder.setCheckQuestion(resultSet.getString("checkQuestion")); workOrder.setCheckQuestion(resultSet.getString("checkQuestion"));
workOrder.setCorrectAction(resultSet.getString("correctAction")); workOrder.setCorrectAction(handleActionContent(resultSet.getString("correctAction")));
workOrder.setCorrectPersonId(resultSet.getString("correctPersonId")); workOrder.setCorrectPersonId(resultSet.getString("correctPersonId"));
workOrder.setCorrectPersonName(resultSet.getString("correctPersonName")); workOrder.setCorrectPersonName(resultSet.getString("correctPersonName"));
workOrder.setWorkOrderLevel(resultSet.getString("workOrderLevel")); workOrder.setWorkOrderLevel(resultSet.getString("workOrderLevel"));
@@ -498,4 +504,50 @@ public class AlibabaWorkOrderJob implements JobHandler {
return SqlUtil.formatSql(sqlBuilder.toString()); return SqlUtil.formatSql(sqlBuilder.toString());
} }
/**
* 处理检查内容,提取双引号中的文本并格式化
*
* @param content 待处理的内容字符串
* @return 提取并格式化后的内容,每项占一行
*/
private String handleCheckContent(String content) {
if (StrUtil.isEmpty(content)) return StringUtils.EMPTY;
return extractQuotedContent(content);
}
// 封装方法对整改措施也进行提取双引号之间的文本
/**
* 处理整改措施,提取双引号中的文本并格式化
*
* @param content 待处理的内容字符串
* @return 提取并格式化后的内容,每项占一行
*/
private String handleActionContent(String content) {
return extractQuotedContent(content);
}
/**
* 提取字符串中双引号包含的内容
*
* @param content 待处理的内容字符串
* @return 提取并格式化后的内容,每项占一行
*/
private String extractQuotedContent(String content) {
// 使用正则表达式将双引号中的内容提取出来
Pattern pattern = Pattern.compile(REGEX_EXTRACT_CONTENT);
Matcher matcher = pattern.matcher(content);
List<String> extractedContents = new ArrayList<>();
while (matcher.find()) {
String extractedContent = matcher.group();
extractedContents.add(extractedContent);
}
// extractedContents每个元素作为一行将所有行拼接成字符串
StringBuilder sb = new StringBuilder();
for (String extractedContent : extractedContents) {
sb.append(extractedContent).append("\n");
}
return sb.toString().trim();
}
} }