企业成本核算表单插件添加逻辑:点击自动取数按钮获取核算余额表

This commit is contained in:
xuhaihui 2025-09-26 11:13:33 +08:00
parent 03e947fb72
commit 829b738ea0
1 changed files with 75 additions and 0 deletions

View File

@ -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");//刷新分录
}
}
}