新建单据
新建步骤请参考金蝶云苍穹如何新建云、应用、页面? 金蝶云苍穹如何添加页面字段?,并确保页面字段如下图所示
新建插件类并注册插件
编码
package kd.bos.form.plugin;
import java.math.BigDecimal;
import java.time.Duration;
import java.time.Instant;
import java.util.Date;
import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
import kd.bos.form.field.events.BeforeF7SelectEvent;
import kd.bos.form.field.events.BeforeF7SelectListener;
/**
* @author Administrator
*
*/
public class PurReqBillEditextends AbstractBillPlugIn implements BeforeF7SelectListener {
/**
* (non-Javadoc)
* <p>Title: beforeF7Select</p>
* <p>
* Description:
* </p>
* <p>Copyright: Copyright (c) 2020</p>
* @author xx
* @date 2020年2月27日
* @param arg0
* @see kd.bos.form.field.events.BeforeF7SelectListener#beforeF7Select(kd.bos.form.field.events.BeforeF7SelectEvent)
*/
@Override
public void beforeF7Select(BeforeF7SelectEvent arg0) {
// TODO Auto-generated method stub
}
/**
* (non-Javadoc)
* <p>Title: propertyChanged</p>
* <p>
* Description:
* 注册值改变监听事件,计算出天数以及总金额的值
* </p>
* <p>Copyright: Copyright (c) 2020</p>
* @author xx
* @date 2020年2月22日
* @param e
* @see kd.bos.entity.datamodel.events.IDataModelChangeListener#propertyChanged(kd.bos.entity.datamodel.events.PropertyChangedArgs)
*/
@Override
public void propertyChanged(PropertyChangedArgs e) {
String propertyName = e.getProperty().getName();//获取元素
if("startdate".equals(propertyName) || "enddate".equals(propertyName)) {//实现自动计划天数功能
if(this.getModel().getValue("startdate") != null && this.getModel().getValue("enddate") != null) {
Date startdate = (Date) this.getModel().getValue("startdate");
Date enddate = (Date) this.getModel().getValue("enddate");
Instant start = startdate.toInstant();
Instant end = enddate.toInstant();
long days = Duration.between(start, end).toDays() + 1;
this.getModel().setValue("datenum", days);
}
}
else if
("amount".equals(propertyName)) {
DynamicObjectCollection entrys = this.getModel().getEntryEntity("entryentity");
BigDecimal total = new BigDecimal(0);
for(DynamicObject entry:entrys) {
BigDecimal amount = entry.getBigDecimal("amount");
total = total.add(amount);
}
this.getModel().setValue("amountfield1", total);//将合计金额赋值
}
super.propertyChanged(e);
}
}
预览测试
备注:开始日期、结束日期请开户即时触发值更新
以上就是我关于 金蝶云苍穹插件开发之值改变事件 知识点的整理与总结的全部内容,希望对你有帮助。。。。。。
分割线
网友评论