package fi.er.opplugin; import com.alibaba.druid.util.StringUtils; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.entity.datamodel.events.ChangeData; import kd.bos.entity.datamodel.events.PropertyChangedArgs; 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 java.math.BigDecimal; import java.math.RoundingMode; import java.util.ArrayList; import java.util.Date; import java.util.EventObject; import java.util.List; public class FinapbillBeforeF7SelectSample extends AbstractFormPlugin implements BeforeF7SelectListener { private static String nckd_apfinapbill = "nckd_apfinapbill"; //应付挂账单字段 private static String nckd_real_card = "assetentry.nckd_real_card"; //应付挂账单字段 private static String nckd_ap_finapbill_gz = "ap_finapbill"; //应付挂账单标识 private static String nckd_er_publicreimbur_ext = "er_publicreimbursebill"; //报销单标识 @Override public void registerListener(EventObject e) { //监听单据字段 super.registerListener(e); RefBillEdit bill = this.getView().getControl(nckd_apfinapbill); bill.addBeforeF7SelectListener(this); } @Override public void beforeF7Select(BeforeF7SelectEvent arg0) { String fieldKey = arg0.getProperty().getName(); if (StringUtils.equals(fieldKey, nckd_apfinapbill)){ // 生成过滤条件对象QFilter Object nckd_sourcebillid = this.getModel().getValue("nckd_sourcebillid"); if (nckd_sourcebillid != null) { //查询暂估报销单 String sourcebillid = String.valueOf(nckd_sourcebillid); QFilter filter = new QFilter("nckd_sourcebillid", QCP.equals,sourcebillid); filter.and("nckd_ywlx", QCP.equals, "2"); DynamicObject[] bxDynamicObjects = BusinessDataServiceHelper.load(nckd_er_publicreimbur_ext,"id",new QFilter[] {filter}); if (bxDynamicObjects.length > 0) { DynamicObject bxInfo = BusinessDataServiceHelper.loadSingle(bxDynamicObjects[0].getPkValue(), bxDynamicObjects[0].getDynamicObjectType().getName()); Long id = bxInfo.getLong("id"); QFilter qFilter = new QFilter("sourcebillid", QCP.equals,id); // 表过滤条件 ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter(); showParameter.getListFilterParameter().setFilter(qFilter); } }else { //选取不到应付挂账单 QFilter qFilter = new QFilter("id", QCP.equals,null); // 表过滤条件 ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter(); showParameter.getListFilterParameter().setFilter(qFilter); } } } @Override public void propertyChanged(PropertyChangedArgs e) { String fieldKey = e.getProperty().getName(); if (StringUtils.equals("nckd_real_card", fieldKey)){ ChangeData changeData = e.getChangeSet()[0]; DynamicObjectCollection dynamicObjectCollection = (DynamicObjectCollection) changeData.getNewValue(); int parentIndex = changeData.getRowIndex(); this.getModel().deleteEntryData("nckd_realcard_list2"); for (int i = 0; i < dynamicObjectCollection.size(); i++) { DynamicObject object = dynamicObjectCollection.get(i); this.getModel().setValue("nckd_card_list_str","1"); //实物卡片清单分录赋值 DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(object.get(2), "nckd_fa_card_real_list"); int rowIndex = this.getModel().createNewEntryRow("nckd_realcard_list2"); this.getModel().setValue("nckd_card_code2",cardInfo,rowIndex,parentIndex); if (i == 0) { String name = cardInfo.getString("name");//资产名称 DynamicObject nckd_dept = cardInfo.getDynamicObject("nckd_dept");//归属部门 String nckd_use_name = cardInfo.getString("nckd_use_name");//使用人 String nckd_local = cardInfo.getString("nckd_local");//存放地点 String nckd_card_model = cardInfo.getString("nckd_card_model");//型号 //资产信息分录赋值 this.getModel().setValue("asset_name", name, parentIndex); //资产类别赋值 //规格型号 this.getModel().setValue("asset_model",nckd_card_model, parentIndex); //使用部门 this.getModel().setValue("asset_costdept",nckd_dept, parentIndex); //使用人 QFilter userFilter = new QFilter("number", QCP.equals,nckd_use_name); DynamicObject[] userDynamicObjects = BusinessDataServiceHelper.load("bos_user","id",new QFilter[] {userFilter}); for (int d=0;d