diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EntCostSplitBillPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EntCostSplitBillPlugin.java new file mode 100644 index 0000000..967a4ad --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EntCostSplitBillPlugin.java @@ -0,0 +1,75 @@ +package zcgj.zcdev.zcdev.pr.plugin.form; + +import kd.bos.bill.AbstractBillPlugIn; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.dataentity.metadata.dynamicobject.DynamicObjectType; +import kd.bos.form.events.BeforeDoOperationEventArgs; +import kd.bos.form.operate.FormOperate; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.QueryServiceHelper; + +import java.util.EventObject; + +/** + * 企业成本核算表单插件 + * 说明:1:点击自动取数按钮获取核算余额表 + */ +public class EntCostSplitBillPlugin extends AbstractBillPlugIn { + @Override + public void registerListener(EventObject e) { + super.registerListener(e); + } + + public void beforeDoOperation(BeforeDoOperationEventArgs args) { + super.beforeDoOperation(args); + FormOperate formOperate = (FormOperate) args.getSource(); + if ("autogetdata".equals(formOperate.getOperateKey())) { + //自动取数 + Object org = this.getModel().getValue("org");//所属组织 + if (org == null) { + this.getView().showTipNotification("请选择组织"); + return; + } + Object period = this.getModel().getValue("period");//期间 + if (period == null) { + this.getView().showTipNotification("请选择期间"); + return; + } + DynamicObject org1 = (DynamicObject) org;//所属组织 + DynamicObject period1 = (DynamicObject) period;//期间 + DynamicObjectCollection entryCollection = this.getModel().getDataEntity(true).getDynamicObjectCollection("entryentity");//企业费用成本分摊明细分录 + DynamicObjectType entryType = entryCollection.getDynamicObjectType(); + if (entryCollection.size() > 0) { + entryCollection.clear(); + } + QFilter filter = new QFilter("zcgj_org", QCP.equals, org1.getPkValue());//核算组织 + filter.and(new QFilter("zcgj_period", QCP.equals, period1.getPkValue()));//期间 + filter.and(new QFilter("zcgj_isnew", QCP.equals, true));//是否最新 + DynamicObjectCollection rptAssistBalanceGxCollection = QueryServiceHelper.query("zcgj_rpt_assistbalancegx", + "id,zcgj_account,zcgj_processname", + new QFilter[]{filter});//核算维度余额取数表(矿山工序维度) + + for (DynamicObject rptAssistBalanceGx : rptAssistBalanceGxCollection) { + QFilter filter1 = new QFilter("zcgj_entryentity.zcgj_accountview", QCP.equals, rptAssistBalanceGx.get("zcgj_account"));//科目 + filter1.and(new QFilter("zcgj_org", QCP.equals, org1.getPkValue()));//组织 + DynamicObject zcgj_accountcost = QueryServiceHelper.queryOne("zcgj_accountcost", + "id,zcgj_entryentity.zcgj_costtype,zcgj_entryentity.zcgj_sectype", + new QFilter[]{filter1});//会计科目与成本项目 + + DynamicObject newEntry = new DynamicObject(entryType); + QFilter[] qFilters = new QFilter[]{new QFilter("name", QCP.equals, rptAssistBalanceGx.get("zcgj_processname"))}; + DynamicObject ec_ecbd_pro_cbs = BusinessDataServiceHelper.loadSingle("ec_ecbd_pro_cbs", "id", qFilters);//项目工序 + if (ec_ecbd_pro_cbs != null) { + newEntry.set("cbs", ec_ecbd_pro_cbs.getPkValue()); + } + newEntry.set("costtype", zcgj_accountcost.get("zcgj_entryentity.zcgj_costtype")); + newEntry.set("zcgj_sectype", zcgj_accountcost.get("zcgj_entryentity.zcgj_sectype")); + entryCollection.add(newEntry); + } + this.getView().updateView("entryentity");//刷新分录 + } + } +}