fix: NUMBER

This commit is contained in:
RB 2022-07-14 13:42:03 +08:00
parent c2b72bda2b
commit 75b8dce2d9

View file

@ -22,6 +22,7 @@ import com.rebuild.core.metadata.MetadataHelper;
import com.rebuild.core.metadata.easymeta.DisplayType;
import com.rebuild.core.metadata.easymeta.EasyField;
import com.rebuild.core.metadata.easymeta.EasyMetaFactory;
import com.rebuild.core.metadata.impl.EasyFieldConfigProps;
import com.rebuild.core.service.approval.ApprovalState;
import com.rebuild.core.support.RebuildConfiguration;
import com.rebuild.core.support.SetUser;
@ -31,6 +32,7 @@ import com.rebuild.core.support.i18n.Language;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang.StringUtils;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.util.Assert;
import org.springframework.util.Base64Utils;
@ -39,6 +41,7 @@ import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.*;
/**
@ -108,6 +111,10 @@ public class EasyExcelGenerator extends SetUser {
excelWriter.fill(main, writeSheet);
}
// 公式生效
Workbook wb = excelWriter.writeContext().writeWorkbookHolder().getWorkbook();
wb.setForceFormulaRecalculation(true);
} finally {
if (excelWriter != null) {
excelWriter.finish();
@ -274,8 +281,18 @@ public class EasyExcelGenerator extends SetUser {
if (dt == DisplayType.SIGN) {
fieldValue = buildSignData((String) fieldValue);
} else {
fieldValue = FieldValueHelper.wrapFieldValue(fieldValue, easyField, true);
} else {
if (dt == DisplayType.NUMBER) {
// Keep Type
} else if (dt == DisplayType.DECIMAL) {
String format = easyField.getExtraAttr(EasyFieldConfigProps.DECIMAL_FORMAT);
int scale = StringUtils.isBlank(format) ? 2 : format.split("\\.")[1].length();
// Keep Type
fieldValue = ObjectUtils.round(((BigDecimal) fieldValue).doubleValue(), scale);
} else {
fieldValue = FieldValueHelper.wrapFieldValue(fieldValue, easyField, true);
}
if (FieldValueHelper.isUseDesensitized(easyField, this.getUser())) {
fieldValue = FieldValueHelper.desensitized(easyField, fieldValue);