From 36679aa757b69a1e83a09cbf65b071425be7eaf5 Mon Sep 17 00:00:00 2001 From: zhangzhiguo <421587375@qq.com> Date: Tue, 12 Aug 2025 17:09:05 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=84=E8=AD=A6=E6=B6=88=E6=81=AF=E6=8F=90?= =?UTF-8?q?=E9=86=92=E6=B6=88=E6=81=AF=E8=A7=A3=E6=9E=90=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fs/plugin/other/MessageCompiler.java | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/other/MessageCompiler.java diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/other/MessageCompiler.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/other/MessageCompiler.java new file mode 100644 index 0000000..8b0c0a1 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/other/MessageCompiler.java @@ -0,0 +1,66 @@ +package zcgj.zcdev.zcdev.fs.plugin.other; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.entity.earlywarn.EarlyWarnContext; +import kd.bos.entity.earlywarn.kit.StringTemplateParser; +import kd.bos.entity.earlywarn.kit.StringUtil; +import kd.bos.entity.earlywarn.warn.plugin.IEarlyWarnMessageCompiler; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class MessageCompiler implements IEarlyWarnMessageCompiler { + + + @Override + public String getSingleMessage(String expression, List fields, DynamicObject data, EarlyWarnContext earlyWarnContext) { + if (expression == null || data == null){ + return ""; + } + Map map = new HashMap<>(); + for (String field : fields) { + String value = ""; + if ("zcgj_beginlocal".equals(field) + || "zcgj_debitlocal".equals(field) + || "zcgj_creditlocal".equals(field) + || "zcgj_yeardebitfor".equals(field) + || "zcgj_yearcreditfor".equals(field) + || "zcgj_endlocal".equals(field)){ + String[] arr = StringUtil.split(field, "."); + Object objValue = getValue(data, arr); + value = objValue == null?"" : objValue.toString(); + if(value!=null){ + BigDecimal valBig = new BigDecimal(value); + BigDecimal divide = valBig.setScale(2, RoundingMode.HALF_UP).divide(new BigDecimal("10000"), 2, RoundingMode.HALF_UP); + value = String.valueOf(divide); + } + }else { + String[] arr = StringUtil.split(field, "."); + Object objValue = getValue(data, arr); + value = objValue == null?"" : objValue.toString(); + } + map.put(field,value); + } + StringTemplateParser parser = new StringTemplateParser(); + return parser.parse(expression,name->map.get(name)); + } + private String getValue(DynamicObject data, String[] arr) { + if(null == arr || arr.length == 0){ + return ""; + } + Object obj = data.get(arr[0]); + if(obj instanceof DynamicObject){ + return getValue((DynamicObject)obj, Arrays.copyOfRange(arr, 1, arr.length)); + } + return StringUtil.toSafeString(obj); + } + + @Override + public String getMergeMessage(String s, List list, EarlyWarnContext earlyWarnContext) { + return ""; + } +}