设备成本核算优化表单和审核逻辑

This commit is contained in:
xuhaihui 2025-12-03 16:39:36 +08:00
parent fde481979b
commit 624f60211a
2 changed files with 43 additions and 9 deletions

View File

@ -14,13 +14,12 @@ 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.bos.servicehelper.QueryServiceHelper;
import java.util.Calendar;
import java.util.EventObject;
import java.util.HashMap;
import java.util.Map;
import java.util.*;
/*
* 设备成本核算表单插件
@ -32,9 +31,11 @@ public class EcEqCostSplitBillPlugin extends AbstractBillPlugIn implements Befor
@Override
public void registerListener(EventObject e) {
super.registerListener(e);
BasedataEdit procbs = (BasedataEdit) this.getControl("procbs");
BasedataEdit procbs = (BasedataEdit) this.getControl("procbs");//成本分解结构
procbs.addBeforeF7SelectListener(this);
EntryGrid control = this.getControl("settlesplitentity");
BasedataEdit equipment = (BasedataEdit) this.getControl("equipment");//设备名称
equipment.addBeforeF7SelectListener(this);
EntryGrid control = this.getControl("settlesplitentity");//结算明细
control.addHyperClickListener(this);
}
@ -72,10 +73,10 @@ public class EcEqCostSplitBillPlugin extends AbstractBillPlugIn implements Befor
}
public void beforeF7Select(BeforeF7SelectEvent arg0) {
ListShowParameter parameter = (ListShowParameter) arg0.getFormShowParameter();
String name = arg0.getProperty().getName();
if (StringUtils.equals(name, "procbs")) {
//成本分解结构
ListShowParameter parameter = (ListShowParameter) arg0.getFormShowParameter();
arg0.setCancel(true);
DynamicObject project = (DynamicObject) this.getModel().getValue("project");//工程项目
if (project == null) {
@ -89,6 +90,24 @@ public class EcEqCostSplitBillPlugin extends AbstractBillPlugIn implements Befor
parameter.getListFilterParameter().setFilter(qFilter);
parameter.setFormId("bos_listf7");
this.getView().showForm(parameter);
} else if (StringUtils.equals(name, "equipment")) {
//设备名称
List<QFilter> qFilter = new ArrayList<>();
DynamicObject org = (DynamicObject) this.getModel().getValue("org");//所属组织
QFilter filter = new QFilter("zcgj_companyblentry.zcgj_org.id", QCP.equals, org.getPkValue());
DynamicObject companyBelong = BusinessDataServiceHelper.loadSingle("zcgj_companybelong",
"zcgj_headquarters", new QFilter[]{filter});//公司归属区域
if (companyBelong != null) {
DynamicObject zcgj_headquarters = companyBelong.getDynamicObject("zcgj_headquarters");//本部
if (zcgj_headquarters != null) {
qFilter.add(new QFilter("org", QCP.equals, zcgj_headquarters.getPkValue()));
qFilter.add(new QFilter("useorg", QCP.equals, zcgj_headquarters.getPkValue()));
}
}
qFilter.add(new QFilter("useorg", QCP.equals, org.getPkValue()));
parameter.getListFilterParameter().setQFilters(qFilter);
}
}
}

View File

@ -7,6 +7,7 @@ import kd.bos.entity.plugin.args.AfterOperationArgs;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.QueryServiceHelper;
import kd.bos.servicehelper.operation.SaveServiceHelper;
/**
@ -22,6 +23,7 @@ public class EcEqCostSplitAuditOp extends AbstractOperationServicePlugIn {
long id = model.getLong("id");
QFilter f1 = new QFilter("id", "=", id);
DynamicObject eceq_costsplit = BusinessDataServiceHelper.loadSingle("eceq_costsplit", new QFilter[]{f1});//设备成本核算
DynamicObject org = eceq_costsplit.getDynamicObject("org");//所属组织
DynamicObjectCollection settleSplitEntityCollection = eceq_costsplit.getDynamicObjectCollection("settlesplitentity");//结算明细
for (DynamicObject settleSplitEntity : settleSplitEntityCollection) {
DynamicObjectCollection costSplitEntityCollection = settleSplitEntity.getDynamicObjectCollection("costsplitentity");//成本分摊明细
@ -30,8 +32,21 @@ public class EcEqCostSplitAuditOp extends AbstractOperationServicePlugIn {
if (equipment != null) {
String equipmentNumber = equipment.getString("number");//设备编号
QFilter[] qFilters = new QFilter[]{new QFilter("number", QCP.equals, equipmentNumber)};
DynamicObject eceq_equipinfo = BusinessDataServiceHelper.loadSingle("eceq_equipinfo", "id,zcgj_cbs", qFilters);//设备台账
eceq_equipinfo.set("zcgj_cbs", costSplitEntity.get("procbs"));//设备台账-工序
DynamicObject eceq_equipinfo = BusinessDataServiceHelper.loadSingle("eceq_equipinfo",
"id,zcgj_cbs,org,useorg", qFilters);//设备详情
if (eceq_equipinfo == null) {
continue;
}
QFilter filter = new QFilter("zcgj_companyblentry.zcgj_org.id", QCP.equals, org.getPkValue());
filter.and(new QFilter("zcgj_headquarters", QCP.equals, eceq_equipinfo.getDynamicObject("org").getPkValue()));
filter.and(new QFilter("zcgj_headquarters", QCP.equals, eceq_equipinfo.getDynamicObject("useorg").getPkValue()));
DynamicObject companyBelong = QueryServiceHelper.queryOne("zcgj_companybelong",
"id", new QFilter[]{filter});//公司归属区域
if (companyBelong != null) {
eceq_equipinfo.set("useorg", org);//设备详情-使用组织
}
eceq_equipinfo.set("zcgj_cbs", costSplitEntity.get("procbs"));//设备详情-工序
SaveServiceHelper.save(new DynamicObject[]{eceq_equipinfo});//保存
}
}