diff --git a/shkd-cosmic-debug/src/main/java/shkd/fi/er/plugin/formplugin/CommonReimburseBillFormPlugin.java b/shkd-cosmic-debug/src/main/java/shkd/fi/er/plugin/formplugin/CommonReimburseBillFormPlugin.java new file mode 100644 index 0000000..a71a8b7 --- /dev/null +++ b/shkd-cosmic-debug/src/main/java/shkd/fi/er/plugin/formplugin/CommonReimburseBillFormPlugin.java @@ -0,0 +1,96 @@ +package shkd.fi.er.plugin.formplugin; + +import kd.bos.bill.AbstractBillPlugIn; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.form.control.Control; +import kd.bos.form.field.BasedataEdit; +import kd.bos.form.field.events.BeforeF7SelectEvent; +import kd.bos.form.field.events.BeforeF7SelectListener; +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.util.ArrayList; +import java.util.EventObject; +import java.util.List; + +/** + * 报销单界面插件 + */ +public class CommonReimburseBillFormPlugin extends AbstractBillPlugIn implements BeforeF7SelectListener,Plugin { + + + /** + *注册实物卡片F7字段监听事件 + * @param e + */ + @Override + public void registerListener(EventObject e) { + super.registerListener(e); + //监听实物卡片F7字段点击事件 + BasedataEdit edit = this.getView().getControl("std_entrycostcenter"); + edit.addBeforeF7SelectListener(this); + + } + + /** + * 支付公司默认为人员上的劳动主体 + * @param e + */ + @Override + public void afterCreateNewData(EventObject e) { + super.afterCreateNewData(e); + DynamicObject dataEntity = this.getModel().getDataEntity(); + DynamicObject applier = dataEntity.getDynamicObject("applier");//申请人 + if (applier != null){ + DynamicObject bos_user = BusinessDataServiceHelper.loadSingle(applier.getPkValue(), "bos_user"); + DynamicObject shkd_labororg = bos_user.getDynamicObject("shkd_labororg"); + this.getModel().setValue("paycompany",shkd_labororg);//设置支付公司为申请人员上的劳动主体 + } + } + + + /** + * 费用明细分录的成本中心只能选择申请人员上存在的成本中心 + * @param beforeF7SelectEvent + */ + @Override + public void beforeF7Select(BeforeF7SelectEvent beforeF7SelectEvent) { + String name = beforeF7SelectEvent.getProperty().getName(); + DynamicObject dataEntity = this.getModel().getDataEntity();//获取单据实体 + switch (name){ + case "std_entrycostcenter": + DynamicObject applier = dataEntity.getDynamicObject("applier");//申请人 + if (applier != null){ + ArrayList costIds = new ArrayList<>(); + DynamicObject bos_user = BusinessDataServiceHelper.loadSingle(applier.getPkValue(), "bos_user"); + DynamicObjectCollection costEntity = bos_user.getDynamicObjectCollection("shkd_costentity"); + if (costEntity.size() > 0){//当人员的成本中心分录存在数据时执行设置过滤条件 + for (DynamicObject dynamicObject : costEntity) { + DynamicObject shkd_e_cost = dynamicObject.getDynamicObject("shkd_e_cost"); + if (shkd_e_cost != null){ + costIds.add(shkd_e_cost.getPkValue()); + } + } + if (costIds.size()>0){ + QFilter qFilter = new QFilter("id", QCP.in,costIds); + ListShowParameter formShowParameter = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter(); + formShowParameter.getListFilterParameter().setFilter(qFilter); + }else { + beforeF7SelectEvent.setCancel(true); + this.getView().showTipNotification("用户未设置成本中心"); + } + }else { + beforeF7SelectEvent.setCancel(true); + this.getView().showTipNotification("用户未设置成本中心"); + } + } + break; + default: + break; + } + } +} \ No newline at end of file