金蝶云苍穹插件开发之值改变事件

涎涎原创约 508 字大约 2 分钟...KingdeeKingdee

48-金蝶云苍穹插件开发之值改变事件.mdopen in new window

注意

本博文仅供学术研究和交流参考,严禁将其用于商业用途。如因违规使用产生的任何法律问题,使用者需自行负责。

新建单据

新建步骤请参考金蝶云苍穹如何新建云、应用、页面?open in new window 金蝶云苍穹如何添加页面字段?open in new window,并确保页面字段如下图所示

新建插件类并注册插件

编码


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);
    }
	
}

预览测试

备注:开始日期、结束日期请开户即时触发值更新


分割线


相关信息

以上就是我关于 金蝶云苍穹插件开发之值改变事件 知识点的整理与总结的全部内容,希望对你有帮助。。。。。。

上次编辑于:
贡献者: 涎涎
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.4