预警消息提醒消息解析插件

This commit is contained in:
zhangzhiguo 2025-08-12 17:09:05 +08:00
parent a7cc8f0410
commit 36679aa757
1 changed files with 66 additions and 0 deletions

View File

@ -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<String> fields, DynamicObject data, EarlyWarnContext earlyWarnContext) {
if (expression == null || data == null){
return "";
}
Map<String, String> 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<String> list, EarlyWarnContext earlyWarnContext) {
return "";
}
}