From 37f456ac3821825fd7eeb5d3ba4ea42b27588ba9 Mon Sep 17 00:00:00 2001 From: ggxl <194689125@qq.com> Date: Mon, 19 May 2025 14:29:29 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=B9=E7=94=A8=E7=94=B3=E8=AF=B7=E5=8D=95?= =?UTF-8?q?=E4=B8=8B=E6=8E=A8=E8=B4=B9=E7=94=A8=E6=8A=A5=E9=94=80=E5=8D=95?= =?UTF-8?q?=E8=A7=A6=E5=8F=91=E8=8E=B7=E5=8F=96=E8=B4=B9=E7=94=A8=E6=A0=87?= =?UTF-8?q?=E5=87=86=E9=80=BB=E8=BE=91-=E9=BE=9A=E5=AE=87=E6=9D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/form/GetExpenseStandardPlugin.java | 53 +++++++++++++++++-- 1 file changed, 49 insertions(+), 4 deletions(-) diff --git a/src/main/java/zf47/jdgz1/fi/em/plugin/form/GetExpenseStandardPlugin.java b/src/main/java/zf47/jdgz1/fi/em/plugin/form/GetExpenseStandardPlugin.java index a6b32a8..815e46e 100644 --- a/src/main/java/zf47/jdgz1/fi/em/plugin/form/GetExpenseStandardPlugin.java +++ b/src/main/java/zf47/jdgz1/fi/em/plugin/form/GetExpenseStandardPlugin.java @@ -5,6 +5,7 @@ import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.entity.datamodel.IDataModel; import kd.bos.entity.datamodel.events.PropertyChangedArgs; +import kd.bos.form.events.AfterDoOperationEventArgs; import kd.bos.logging.Log; import kd.bos.logging.LogFactory; import kd.bos.orm.query.QCP; @@ -27,6 +28,53 @@ public class GetExpenseStandardPlugin extends AbstractBillPlugIn implements Plug private static final Log log = LogFactory.getLog(GetExpenseStandardPlugin.class); + @Override + public void afterBindData(EventObject e) { + IDataModel model = this.getModel(); + boolean pushChanged = model.getDataEntity().getDataEntityState().isPushChanged(); + if (pushChanged) { + DynamicObject bill = model.getDataEntity(true); + + String reimburseType = bill.getString("zf47_reimburse_type");// 报账类型 + if (reimburseType == null || reimburseType.isEmpty()) return; + + DynamicObjectCollection expenseEntries = bill.getDynamicObjectCollection("expenseentryentity");// 费用明细分录 + if (expenseEntries == null || expenseEntries.isEmpty()) return; + + //获取 监听值变更分录字段集合 + QFilter entryParamQF = new QFilter("number", QCP.equals, "ExpenseListeningEntryFields"); + DynamicObject entryParam = BusinessDataServiceHelper.loadSingle("zf47_system_params", "zf47_val", entryParamQF.toArray()); + if (entryParam == null) { + log.warn("GetExpenseStandardPlugin:ExpenseListeningEntryFields参数未配置"); + return; + } + String entryVal = entryParam.getString("zf47_val"); + ArrayList entryFields; + if (entryVal.contains(",")) { + String[] splits = entryVal.split(","); + entryFields = new ArrayList<>(Arrays.asList(splits)); + } else { + entryFields = new ArrayList<>(Collections.singletonList(entryVal)); + } + + for (int i = 0; i < expenseEntries.size(); i++) { + DynamicObject expenseEntry = expenseEntries.get(i); + DynamicObject expenseItem = expenseEntry.getDynamicObject("expenseitem"); + if (expenseItem != null) { + HashMap result = getExpenseStandard(entryFields, reimburseType, expenseItem.getString("number"), expenseEntry); + if (result != null && !result.isEmpty()) { + for (String field : result.keySet()) { + model.setValue(field, result.get(field), i); + } + } else { + model.setValue("zf47_expense_standards", BigDecimal.ZERO, i); + model.setValue("zf47_standard_unit", "", i); + } + } + } + } + } + @Override public void propertyChanged(PropertyChangedArgs e) { IDataModel model = this.getModel(); @@ -71,7 +119,6 @@ public class GetExpenseStandardPlugin extends AbstractBillPlugIn implements Plug } String changeName = e.getProperty().getName(); -// log.info("GetExpenseStandardPlugin:值更新字段标识(" + changeName + ")"); if (headFields.contains(changeName)) {//值更新字段在单据头 for (int i = 0; i < expenseEntries.size(); i++) { DynamicObject expenseEntry = expenseEntries.get(i); @@ -103,9 +150,7 @@ public class GetExpenseStandardPlugin extends AbstractBillPlugIn implements Plug model.setValue("zf47_standard_unit", "", rowIndex); } } - }/* else { - log.warn("GetExpenseStandardPlugin:值更新字段(" + changeName + ")不在HeadFields(" + headFields + ")、EntryFields(" + entryFields + ")"); - }*/ + } } /**