feat: 年度制修订导入增加时间限制必须大于等于今天

This commit is contained in:
2024-01-18 14:24:38 +08:00
parent c16b22ed8d
commit c2ac24c7e4
4 changed files with 49 additions and 11 deletions
@@ -614,9 +614,9 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
errMsg.append(excelUtils.validStandardCode(enStandardCode, listDict));
errMsg.append(excelUtils.validStandardClassification(enStandardClassification, listDict));
errMsg.append(excelUtils.validPartName(partName, listDict));
errMsg.append(excelUtils.validSingleDate(draftPlannedCompleteDateString, "草稿计划完成日期"));
errMsg.append(excelUtils.validSingleDate(solicitationDraftPlanCompleteDateString, "征求意见稿计划完成日期"));
errMsg.append(excelUtils.validSingleDate(planApprovalDateString, "计划报批日期"));
errMsg.append(excelUtils.validSingleDateNotBeforeToday(draftPlannedCompleteDateString, "草稿计划完成日期"));
errMsg.append(excelUtils.validSingleDateNotBeforeToday(solicitationDraftPlanCompleteDateString, "征求意见稿计划完成日期"));
errMsg.append(excelUtils.validSingleDateNotBeforeToday(planApprovalDateString, "计划报批日期"));
// 如果数据有问题,则将提示信息添加到 errorMsgs 中
if (errMsg.length() > 0) {
errorMsgs.add(errMsgHeader.append(errMsg).toString());
@@ -489,9 +489,9 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
errMsg.append(excelUtils.validStandardSystem(standardSystem, listDict));
errMsg.append(excelUtils.validStandardType(standardType, listDict));
errMsg.append(excelUtils.validStandardClassification(standardClassification, listDict));
errMsg.append(excelUtils.validSingleDateMustInput(draftPlannedCompleteDateString, "草稿计划完成日期"));
errMsg.append(excelUtils.validSingleDateMustInput(solicitationDraftPlanCompleteDateString, "征求意见稿计划完成日期"));
errMsg.append(excelUtils.validSingleDateMustInput(planApprovalDateString, "计划报批日期"));
errMsg.append(excelUtils.validSingleDateMustInputNotBeforeToday(draftPlannedCompleteDateString, "草稿计划完成日期"));
errMsg.append(excelUtils.validSingleDateMustInputNotBeforeToday(solicitationDraftPlanCompleteDateString, "征求意见稿计划完成日期"));
errMsg.append(excelUtils.validSingleDateMustInputNotBeforeToday(planApprovalDateString, "计划报批日期"));
// 如果数据有问题,则将提示信息添加到 errorMsgs 中
if (errMsg.length() > 0) {
errorMsgs.add(errMsgHeader.append(errMsg).toString());
@@ -368,19 +368,24 @@ public class ExcelUtils {
return matcher.find();
}
public String validSingleDateMustInput(String date, String name) {
public String validSingleDateMustInputNotBeforeToday(String date, String name) {
if (StrUtil.isBlank(date)) {
return "'" + name + "'不能为空。";
}
return this.validSingleDate(date, name);
return this.validSingleDateNotBeforeToday(date, name);
}
public String validSingleDate(String date, String name) {
if (importUtil.singleDateValid(date)) {
public String validSingleDateNotBeforeToday(String date, String name) {
if (StrUtil.isBlank(date)) {
return "";
} else {
}
if (!importUtil.singleDateValid(date)) {
return "'" + name + "'格式错误。";
}
if (!importUtil.singleDateValidNotBeforeToday(date)) {
return "'" + name + "'不能早于今天。";
}
return "";
}
public String validPartName(String value, List<SysDictItemCore> listDict) {
@@ -552,6 +552,39 @@ public class ImportUtil {
return checkList;
}
public boolean singleDateValidNotBeforeToday(String cellValue) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 设置lenient为false,使得日期解析更为严格
sdf.setLenient(false);
try {
Date date = sdf.parse(cellValue.trim()); // 解析日期
Calendar today = Calendar.getInstance();
today.set(Calendar.HOUR_OF_DAY, 0);
today.set(Calendar.MINUTE, 0);
today.set(Calendar.SECOND, 0);
today.set(Calendar.MILLISECOND, 0);
Calendar inputDate = Calendar.getInstance();
inputDate.setTime(date);
inputDate.set(Calendar.HOUR_OF_DAY, 0);
inputDate.set(Calendar.MINUTE, 0);
inputDate.set(Calendar.SECOND, 0);
inputDate.set(Calendar.MILLISECOND, 0);
if (inputDate.before(today)) {
log.error("日期必须大于等于今天");
return false;
}
return true;
} catch (ParseException e) {
// 这里捕获的应该是ParseException
log.error("日期转换错误: {}", e.getMessage());
return false;
}
}
// 单选日期校验
public boolean singleDateValid(String cellValue) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");