Browse Source

【工作日志】服务时间使用正则表达式优化

master
wangxianzhang 3 years ago
parent
commit
35acf55f64
  1. 44
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkdiaryServiceRecordServiceImpl.java

44
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkdiaryServiceRecordServiceImpl.java

@ -70,6 +70,8 @@ import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.function.Function;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
@ -98,6 +100,17 @@ public class WorkdiaryServiceRecordServiceImpl extends BaseServiceImpl<Workdiary
private ThreadLocal<List<ImportResultDesc>> importResultDescTl = new ThreadLocal<>();
/**
* 工作日志-服务时间-正则表达式
* 支持模式
* 2022-01-01
* 2022-1-1
* 2022/01/01
* 2022/01-1
* ...
*/
private static final Pattern WORKDIARY_SERVICE_TIME_REGEX = Pattern.compile("^(\\s*)(?<year>\\d{4})[-/](?<month>\\d{1,2})[-/](?<day>\\d{1,2})(\\s*)$");
/**
* 导入结果描述
*/
@ -466,24 +479,29 @@ public class WorkdiaryServiceRecordServiceImpl extends BaseServiceImpl<Workdiary
row.setApplicantAddress(house.getFullName());
}
// 时间转化
// ---------服务时间 Start 使用正则处理---------
String serviceTimeStr = row.getServiceTime();
String spliter = null;
if (serviceTimeStr.contains("/")) {
spliter = "/";
} else if (serviceTimeStr.contains("-")) {
spliter = "-";
String year;
String month;
String day;
Matcher stm = WORKDIARY_SERVICE_TIME_REGEX.matcher(serviceTimeStr);
if (stm.matches()) {
year = stm.group("year");
month = stm.group("month");
day = stm.group("day");
} else {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "时间格式不正确", "时间格式不正确");
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),
"服务时间格式不正确",
"服务时间格式不正确");
}
String[] arr = serviceTimeStr.split(spliter);
year = String.format("%04d", Integer.valueOf(year));
month = String.format("%02d", Integer.valueOf(month));
day = String.format("%02d", Integer.valueOf(day));
String year = String.format("%04d", Integer.valueOf(arr[0]));
String month = String.format("%02d", Integer.valueOf(arr[1]));
String day = String.format("%02d", Integer.valueOf(arr[2]));
Date serviceTime = DateUtils.parseDate(String.format("%s-%s-%s", year, month, day), DateUtils.DATE_PATTERN);
Date date = DateUtils.parseDate(String.format("%s-%s-%s", year, month, day), DateUtils.DATE_PATTERN);
// ---------服务时间 End---------
// 填充到entity
WorkdiaryServiceRecordEntity record = new WorkdiaryServiceRecordEntity(
@ -498,7 +516,7 @@ public class WorkdiaryServiceRecordServiceImpl extends BaseServiceImpl<Workdiary
row.getApplicantAddress(),
row.getApplicantMobile(),
row.getServiceContent(),
date,
serviceTime,
row.getPrincipalName(),
row.getRemark());

Loading…
Cancel
Save