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 reimbursetype = (String) this.getModel().getValue("reimbursetype"); String fieldKey = e.getProperty().getName(); if (StringUtils.equals("nckd_real_card", fieldKey)){ ChangeData changeData = e.getChangeSet()[0]; DynamicObjectCollection dynamicObjectCollection = (DynamicObjectCollection) changeData.getNewValue(); List ids = new ArrayList<>(); Integer index = 0; for(DynamicObject object : dynamicObjectCollection) { Long id = (Long) object.get(2); ids.add(id); this.getModel().setValue("nckd_card_list_str","1"); } //查询实物卡片清单 QFilter filter = new QFilter("id", QCP.in,ids); DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {filter}); if (dynamicObjects.length > 0) { this.getModel().deleteEntryData("nckd_realcard_list"); for (int i = 0; i < dynamicObjects.length; i++) { DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName()); String number = info.getString("number");//资产编码 String name = info.getString("name");//资产名称 String nckd_card_type = info.getString("nckd_card_type");//资产类别 String nckd_card_status = info.getString("nckd_card_status");//资产状态 DynamicObject nckd_orgfield = info.getDynamicObject("nckd_orgfield");//归属机构 DynamicObject nckd_dept = info.getDynamicObject("nckd_dept");//归属部门 String nckd_use_name = info.getString("nckd_use_name");//使用人 Date nckd_start_date = info.getDate("nckd_start_date");//开始使用日期 String nckd_local = info.getString("nckd_local");//存放地点 String nckd_card_brand = info.getString("nckd_card_brand");//品牌 String nckd_card_model = info.getString("nckd_card_model");//型号 String nckd_serial_number = info.getString("nckd_serial_number");//序列号 //实物卡片清单分录赋值 int rowIndex = this.getModel().createNewEntryRow("nckd_realcard_list"); this.getModel().setValue("nckd_card_code",number,rowIndex); this.getModel().setValue("nckd_card_name",name,rowIndex); this.getModel().setValue("nckd_card_type",nckd_card_type,rowIndex); this.getModel().setValue("nckd_card_status",nckd_card_status,rowIndex); this.getModel().setValue("nckd_orgfield",nckd_orgfield,rowIndex); this.getModel().setValue("nckd_dept",nckd_dept,rowIndex); this.getModel().setValue("nckd_use_name",nckd_use_name,rowIndex); this.getModel().setValue("nckd_start_date",nckd_start_date,rowIndex); this.getModel().setValue("nckd_local",nckd_local,rowIndex); this.getModel().setValue("nckd_card_brand",nckd_card_brand,rowIndex); this.getModel().setValue("nckd_card_model",nckd_card_model,rowIndex); this.getModel().setValue("nckd_serial_number",nckd_serial_number,rowIndex); if (index.equals(0)) { //资产信息分录赋值 this.getModel().setValue("asset_name",name); //资产类别赋值 //规格型号 this.getModel().setValue("asset_model",nckd_card_model); //使用部门 this.getModel().setValue("asset_costdept",nckd_dept); //使用人 //根据姓名name查询用户,工号是number QFilter userFilter = new QFilter("name", QCP.equals,nckd_use_name); DynamicObject[] userDynamicObjects = BusinessDataServiceHelper.load("bos_user","id",new QFilter[] {userFilter}); for (int d=0;d