电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

寻源二开指南--变更单组件加载数据插件

来源:金蝶云社区作者:金蝶2024-09-226

寻源二开指南--变更单组件加载数据插件

使用场景:暂存的变更单,如果切换变更单的来源单据(寻源项目、寻源申请、项目立项),需重新加载新单据的数据,以【项目成员变更】重新加载数据为例


一、继承插件

变更单编辑插件继承PdsChgCompReloadDataTpl插件

package kd.scm.pds.formplugin.edit;

import java.util.EventObject;

import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.dataentity.utils.StringUtils;
import kd.bos.form.IFormView;
import kd.scm.common.constant.BillAssistConstant;
import kd.scm.common.enums.BillStatusEnum;
import kd.scm.pds.common.constant.SrcCommonConstant;
import kd.scm.pds.common.util.PdsCommonUtils;

/**
 * 变更单组件--重新加载数据--模板
 * 
 * @author rd_fumin_huang
 *
 */
public class PdsChgCompReloadDataTpl extends AbstractBillPlugIn {

	@Override
	public void beforeBindData(EventObject e) {
		super.beforeBindData(e);
		IFormView parentView = this.getView().getParentView();
		if (parentView == null) {
			return;
		}
		// 是否需要重新加载数据
		if (isNeedReload()) {
			// 重新加载 单据数据
			reloadBillData();
			// 重新加载 分录据数据
			reloadEntryData();
		}
	}

	/**
	 * 重新加载 单据数据,如果需要,可以重写该方法
	 */
	protected void reloadBillData() {
	}

	/**
	 * 重新加载 分录据数据,如果需要,可以重写该方法
	 */
	protected void reloadEntryData() {
	}

	/**
	 * 是否需要重新加载数据
	 * 
	 * @return
	 */
	protected boolean isNeedReload() {
		// 单据状态不是暂存,不需要重新加载数据
		if (!isSaveStatus()) {
			return false;
		}
		// 变更单的来源单据ID 如果发生变化,则需要重新加载数据
		if (isChgSrcBillId()) {
			return true;
		}
		// 如果单据为空,或分录为空,则需要重新加载数据
		if (isBillEmpty() || isEntryEmpty()) {
			return true;
		}
		return false;
	}

	/**
	 * 单据状态是否为 暂存
	 * 
	 * @return
	 */
	protected boolean isSaveStatus() {
		String billStatus = this.getView().getParentView().getModel().getDataEntity().getString(BillAssistConstant.BILL_STATUS);
		if (StringUtils.isBlank(billStatus) || BillStatusEnum.SAVE.getVal().equals(billStatus)) {
			return true;
		}
		return false;
	}

	/**
	 * 变更单的来源单据ID 是否发生变化
	 * 
	 * @return
	 */
	protected boolean isChgSrcBillId() {
		// 变更单的来源单据ID(寻源项目、寻源申请、项目立项)
		long chgSrcBillId = getChgSrcBillId(this.getView().getParentView().getModel().getDataEntity());
		// 源单为空,不需要加载
		if (chgSrcBillId == 0) {
			return false;
		}
		// 变更单的来源单据ID 不等于 当前组件的来源单据ID
		if (chgSrcBillId != this.getModel().getDataEntity().getLong(SrcCommonConstant.CHGSRCBILLID)) {
			// 重新赋值
			this.getModel().setValue(SrcCommonConstant.CHGSRCBILLID, chgS

寻源二开指南--变更单组件加载数据插件

使用场景:暂存的变更单,如果切换变更单的来源单据(寻源项目、寻源申请、项目立项),需重新加载新单据的数据,以【项目成员变更】重新加...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信