package shkd.repc.recon.formplugin; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.form.field.BasedataEdit; import kd.bos.form.field.RefBillEdit; import kd.bos.form.field.events.BeforeF7SelectEvent; import kd.bos.form.field.events.BeforeF7SelectListener; import kd.bos.form.plugin.AbstractFormPlugin; import kd.bos.list.ListShowParameter; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.sdk.plugin.Plugin; import java.math.BigDecimal; import java.util.ArrayList; import java.util.EventObject; import java.util.List; /** * 动态表单插件 * 【费用登记】- */ public class ConNoTextBillFromPlugin extends AbstractFormPlugin implements Plugin, BeforeF7SelectListener { @Override public void registerListener(EventObject e) { super.registerListener(e); RefBillEdit bEdit = this.getView().getControl("qeug_refbillfield"); bEdit.addBeforeF7SelectListener(this); } @Override public void beforeF7Select(BeforeF7SelectEvent evt) { ListShowParameter formShowParameter = (ListShowParameter) evt.getFormShowParameter(); ArrayList canSeeDataId = new ArrayList<>(); //查找所有已审核采购需求数据 DynamicObject org = (DynamicObject) this.getModel().getValue("org"); QFilter qFilter = new QFilter("billstatus", QCP.equals, "C"); qFilter.and(new QFilter("org.name", QCP.equals, org.getString("name"))); DynamicObject[] settlePlanBills = BusinessDataServiceHelper.load("recon_settleplanbill", "id,bill,qeug_applyamount", qFilter.toArray()); //判断申请金额是否被费用登记用完 for (int i = 0; i < settlePlanBills.length; i++) { DynamicObject settlePlanBill = settlePlanBills[i]; long id = settlePlanBill.getLong("id"); BigDecimal applyAmount = settlePlanBill.getBigDecimal("qeug_applyamount"); BigDecimal allOriAmt=BigDecimal.ZERO; QFilter qFilter1 = new QFilter("qeug_refbillfield.id", QCP.equals, id); DynamicObject[] conNoTextBills = BusinessDataServiceHelper.load("recon_connotextbill", "id,oriamt", qFilter1.toArray()); if (conNoTextBills.length!=0){ for (int j = 0; j < conNoTextBills.length; j++) { DynamicObject conNoTextBill = conNoTextBills[j]; BigDecimal oriAmt = conNoTextBill.getBigDecimal("oriamt"); allOriAmt=allOriAmt.add(oriAmt); } } //还有余额 if (applyAmount.compareTo(allOriAmt)>0){ canSeeDataId.add(id); } } List qFilters = new ArrayList<>(); qFilters.add(new QFilter("id", QCP.in, canSeeDataId)); formShowParameter.getListFilterParameter().setQFilters(qFilters); } }