feat(REQ-3982) - 修复表单日期变量处理逻辑
This commit is contained in:
parent
2d41c6c308
commit
df26864e9c
@ -31,6 +31,8 @@ import org.slf4j.LoggerFactory;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
@ -129,8 +131,9 @@ public class CustomGetFormInstanceModelCmd extends GetFormInstanceModelCmd {
|
||||
if (FormFieldTypes.DATE.equals(fieldType)) {
|
||||
try {
|
||||
if (org.apache.commons.lang3.StringUtils.isNotEmpty(fieldValue)) {
|
||||
LocalDate dateValue = LocalDate.parse(fieldValue);
|
||||
variables.put(field.getId(), dateValue.toString(fmtConvert(field.getParam("fmt").toString())));
|
||||
DateTimeFormatter fmt = DateTimeFormatter.ofPattern(fmtConvert(field.getParam("fmt").toString()));
|
||||
LocalDateTime dateValue = LocalDateTime.parse(fieldValue, fmt);
|
||||
variables.put(field.getId(), dateValue.toString());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("Error parsing form date value for process instance {} and task {} with value {}", processInstanceId, taskId, fieldValue, e);
|
||||
@ -392,7 +395,7 @@ public class CustomGetFormInstanceModelCmd extends GetFormInstanceModelCmd {
|
||||
}
|
||||
}
|
||||
|
||||
private String fmtConvert(String fmt) {
|
||||
public static String fmtConvert(String fmt) {
|
||||
switch (fmt) {
|
||||
case "YYYY-MM-DD HH:mm:ss":
|
||||
return "yyyy-MM-dd HH:mm:ss";
|
||||
|
||||
@ -10,8 +10,9 @@ import org.flowable.form.engine.impl.cmd.GetVariablesFromFormSubmissionCmd;
|
||||
import org.flowable.form.engine.impl.util.CommandContextUtil;
|
||||
import org.flowable.form.model.FormField;
|
||||
import org.flowable.form.model.FormFieldTypes;
|
||||
import org.joda.time.LocalDate;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
|
||||
@ -42,8 +43,9 @@ public class CustomGetVariablesFromFormSubmissionCmd extends GetVariablesFromFor
|
||||
if (formField.getType().equals(FormFieldTypes.DATE) && formFieldValue instanceof String) {
|
||||
if (StringUtils.isNotEmpty((String) formFieldValue)) {
|
||||
try {
|
||||
result = LocalDate.parse((String) formFieldValue);
|
||||
|
||||
// result = LocalDate.parse((String) formFieldValue);
|
||||
DateTimeFormatter fmt = DateTimeFormatter.ofPattern(fmtConvert(formField.getParam("fmt").toString()));
|
||||
result = LocalDateTime.parse((String) formFieldValue, fmt);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
result = null;
|
||||
@ -51,7 +53,9 @@ public class CustomGetVariablesFromFormSubmissionCmd extends GetVariablesFromFor
|
||||
}
|
||||
|
||||
} else if (formField.getType().equals(FormFieldTypes.DATE) && formFieldValue instanceof Date) {
|
||||
result = new LocalDate(formFieldValue);
|
||||
DateTimeFormatter fmt = DateTimeFormatter.ofPattern(fmtConvert(formField.getParam("fmt").toString()));
|
||||
result = LocalDateTime.parse((String) formFieldValue, fmt);
|
||||
// result = new LocalDate(formFieldValue);
|
||||
} else if (formField.getType().equals(FormFieldTypes.INTEGER) && formFieldValue instanceof String) {
|
||||
String strFieldValue = (String) formFieldValue;
|
||||
if (StringUtils.isNotEmpty(strFieldValue) && NumberUtils.isCreatable(strFieldValue)) {
|
||||
@ -109,4 +113,15 @@ public class CustomGetVariablesFromFormSubmissionCmd extends GetVariablesFromFor
|
||||
// Default: no processing needs to be done, can be stored as-is
|
||||
return result;
|
||||
}
|
||||
|
||||
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";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user