From f98c7ac70a29d61108686d247c493fdd2f3e19c2 Mon Sep 17 00:00:00 2001 From: xuhaihui <2098865055@qq.com> Date: Fri, 16 Jan 2026 15:58:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9A=E9=A2=9D=E5=A4=87=E7=94=A8=E9=87=91?= =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8F=B0=E8=B4=A6=E4=BC=98=E5=8C=96=E4=BA=BA?= =?UTF-8?q?=E5=91=98=E5=88=9D=E5=A7=8B=E5=8C=96=E5=80=9F=E6=AC=BE=E5=8D=95?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form/QuotaImprestLedgerBillPlugin.java | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/QuotaImprestLedgerBillPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/QuotaImprestLedgerBillPlugin.java index 5bd0e6e..119af23 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/QuotaImprestLedgerBillPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/QuotaImprestLedgerBillPlugin.java @@ -3,10 +3,17 @@ package zcgj.zcdev.zcdev.fs.plugin.form; import kd.bos.bill.AbstractBillPlugIn; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.dataentity.resource.ResManager; +import kd.bos.entity.datamodel.events.ChangeData; +import kd.bos.entity.datamodel.events.PropertyChangedArgs; +import kd.bos.form.ConfirmCallBackListener; +import kd.bos.form.MessageBoxOptions; +import kd.bos.form.MessageBoxResult; import kd.bos.form.ShowType; import kd.bos.form.control.EntryGrid; import kd.bos.form.events.HyperLinkClickEvent; import kd.bos.form.events.HyperLinkClickListener; +import kd.bos.form.events.MessageBoxClosedEvent; import kd.bos.list.ListShowParameter; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; @@ -14,7 +21,10 @@ import kd.bos.servicehelper.BusinessDataServiceHelper; import org.apache.commons.lang3.StringUtils; import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.ZoneId; import java.util.ArrayList; +import java.util.Date; import java.util.EventObject; import java.util.List; @@ -89,4 +99,68 @@ public class QuotaImprestLedgerBillPlugin extends AbstractBillPlugIn implements this.getView().showForm(listShowParameter); } } + + @Override + public void propertyChanged(PropertyChangedArgs e) { + super.propertyChanged(e); + String name = e.getProperty().getName(); + if (name.equals("zcgj_person")) { + //人员 + ChangeData changeData = e.getChangeSet()[0]; + int rowIndex = changeData.getRowIndex(); + String zcgj_currentyear = (String) this.getModel().getValue("zcgj_currentyear");//年度 + if (StringUtils.isEmpty(zcgj_currentyear)) { + this.getView().showErrorNotification("请先填写年度!"); + this.getModel().setValue("zcgj_person", null, rowIndex); + return; + } + DynamicObject newValue = (DynamicObject) changeData.getNewValue();//人员新值 + if (newValue != null) { + QFilter qFilters = new QFilter("applier.number", QCP.equals, newValue.get("number")); + qFilters.and(new QFilter("billstatus", QCP.not_in, new String[]{"A"}));//单据状态不为暂存 + qFilters.and(new QFilter("zcgj_impresttype", QCP.equals, "0"));//备用金类型为定额备用金 + DynamicObject[] er_dailyLoanBills = BusinessDataServiceHelper.load("er_dailyloanbill", + "id,bizdate,loanamount,returnedamount,usedamount", new QFilter[]{qFilters});//借款单 + List matchingIds = new ArrayList<>(); + for (DynamicObject er_dailyLoanBill : er_dailyLoanBills) { + Date bizDate = er_dailyLoanBill.getDate("bizdate");//申请日期 + LocalDate localDate = bizDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + String bizDateYear = String.valueOf(localDate.getYear());//申请日期年份 + BigDecimal loanAmount = er_dailyLoanBill.getBigDecimal("loanamount");//借款金额 + BigDecimal returnedAmount = er_dailyLoanBill.getBigDecimal("returnedamount");//还款金额 + BigDecimal usedAmount = er_dailyLoanBill.getBigDecimal("usedamount");//已报销金额 + BigDecimal remainingAmount = loanAmount.subtract(returnedAmount.add(usedAmount));//剩余待还金额 + if (StringUtils.equals(bizDateYear, zcgj_currentyear) && remainingAmount.compareTo(BigDecimal.ZERO) > 0) { + //年份相同且剩余待还金额大于0 + matchingIds.add(er_dailyLoanBill.getPkValue()); + } + } + if (!matchingIds.isEmpty()) { + Object[] baseDataIds = matchingIds.toArray(); + this.getModel().setValue("zcgj_dailyloanbilldatas", baseDataIds, rowIndex);//借款单 + } + } else { + this.getModel().setValue("zcgj_dailyloanbilldatas", null, rowIndex);//清空借款单 + } + + } else if (name.equals("zcgj_currentyear")) { + //年度 + DynamicObjectCollection entryEntityCollection = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_entryentity"); + if (entryEntityCollection.size() > 0) { + this.getView().showConfirm(ResManager.loadKDString("更换年份后分录信息将会被清空!是否继续", "AimCostBoqEditPlugin_36", "ec-ecco-formplugin", new Object[0]), MessageBoxOptions.OKCancel, new ConfirmCallBackListener("zcgj_currentyear", this)); + } + } + } + + @Override + public void confirmCallBack(MessageBoxClosedEvent messageBoxClosedEvent) { + super.confirmCallBack(messageBoxClosedEvent); + //判断是否是对应确认框的点击回调事件 + if (("zcgj_currentyear").equals(messageBoxClosedEvent.getCallBackId())) { + if (MessageBoxResult.Yes.equals(messageBoxClosedEvent.getResult())) { + this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_entryentity").clear(); + this.getView().updateView("zcgj_entryentity"); + } + } + } }