feat(REQ-3982) - 修复表单日期变量处理逻辑
This commit is contained in:
parent
df26864e9c
commit
4853d7548b
@ -49,6 +49,7 @@ import static cn.axzo.workflow.common.constant.FormConstants.FORM_FIELD_TYPE_INP
|
||||
import static cn.axzo.workflow.common.constant.FormConstants.FORM_FIELD_TYPE_RECTIFY_ORDER;
|
||||
import static cn.axzo.workflow.common.constant.FormConstants.FORM_FIELD_TYPE_TASK_ORDER;
|
||||
import static cn.axzo.workflow.common.constant.FormConstants.FORM_FIELD_TYPE_TEXTAREA;
|
||||
import static cn.axzo.workflow.form.engine.cmd.CustomGetVariablesFromFormSubmissionCmd.fmtConvert;
|
||||
|
||||
/**
|
||||
* 自定义的获取表单模型和最新表单内容的命令实现
|
||||
@ -380,7 +381,9 @@ public class CustomGetFormInstanceModelCmd extends GetFormInstanceModelCmd {
|
||||
Object variableValue = variables.get(field.getId());
|
||||
if (variableValue != null) {
|
||||
|
||||
if (variableValue instanceof LocalDate) {
|
||||
if (variableValue instanceof LocalDateTime) {
|
||||
field.setValue(((LocalDateTime) variableValue).format(DateTimeFormatter.ofPattern(fmtConvert(field.getParam("fmt").toString()))));
|
||||
} else if (variableValue instanceof LocalDate) {
|
||||
field.setValue(((LocalDate) variableValue).toString(fmtConvert(field.getParam("fmt").toString())));
|
||||
} else if (variableValue instanceof Date) {
|
||||
field.setValue(DATE_FORMAT.format(((Date) variableValue).toInstant()));
|
||||
@ -395,14 +398,4 @@ public class CustomGetFormInstanceModelCmd extends GetFormInstanceModelCmd {
|
||||
}
|
||||
}
|
||||
|
||||
public static String fmtConvert(String fmt) {
|
||||
switch (fmt) {
|
||||
case "YYYY-MM-DD HH:mm:ss":
|
||||
return "yyyy-MM-dd HH:mm:ss";
|
||||
case "YYYY-MM-DD HH:mm":
|
||||
return "yyyy-MM-dd HH:mm";
|
||||
default:
|
||||
return "yyyy-MM-dd";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -11,8 +11,10 @@ import org.flowable.form.engine.impl.util.CommandContextUtil;
|
||||
import org.flowable.form.model.FormField;
|
||||
import org.flowable.form.model.FormFieldTypes;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.format.DateTimeParseException;
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
|
||||
@ -44,8 +46,7 @@ public class CustomGetVariablesFromFormSubmissionCmd extends GetVariablesFromFor
|
||||
if (StringUtils.isNotEmpty((String) formFieldValue)) {
|
||||
try {
|
||||
// result = LocalDate.parse((String) formFieldValue);
|
||||
DateTimeFormatter fmt = DateTimeFormatter.ofPattern(fmtConvert(formField.getParam("fmt").toString()));
|
||||
result = LocalDateTime.parse((String) formFieldValue, fmt);
|
||||
result = parseToLocalDateTime((String) formFieldValue, fmtConvert(formField.getParam("fmt").toString()));
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
result = null;
|
||||
@ -53,8 +54,7 @@ public class CustomGetVariablesFromFormSubmissionCmd extends GetVariablesFromFor
|
||||
}
|
||||
|
||||
} else if (formField.getType().equals(FormFieldTypes.DATE) && formFieldValue instanceof Date) {
|
||||
DateTimeFormatter fmt = DateTimeFormatter.ofPattern(fmtConvert(formField.getParam("fmt").toString()));
|
||||
result = LocalDateTime.parse((String) formFieldValue, fmt);
|
||||
result = parseToLocalDateTime((String) formFieldValue, fmtConvert(formField.getParam("fmt").toString()));
|
||||
// result = new LocalDate(formFieldValue);
|
||||
} else if (formField.getType().equals(FormFieldTypes.INTEGER) && formFieldValue instanceof String) {
|
||||
String strFieldValue = (String) formFieldValue;
|
||||
@ -114,6 +114,22 @@ public class CustomGetVariablesFromFormSubmissionCmd extends GetVariablesFromFor
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
public static LocalDateTime parseToLocalDateTime(String dateStr, String format) {
|
||||
try {
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format.replace("YYYY", "yyyy").replace("DD", "dd"));
|
||||
if (format.contains("HH:mm")) {
|
||||
return LocalDateTime.parse(dateStr, formatter);
|
||||
} else {
|
||||
LocalDate localDate = LocalDate.parse(dateStr, formatter);
|
||||
return localDate.atStartOfDay();
|
||||
}
|
||||
} catch (DateTimeParseException e) {
|
||||
System.err.println("解析日期字符串时出错: " + dateStr + " ,使用格式: " + format);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static String fmtConvert(String fmt) {
|
||||
switch (fmt) {
|
||||
case "YYYY-MM-DD HH:mm:ss":
|
||||
|
||||
Loading…
Reference in New Issue
Block a user