From 71521179de252b5b6c10b010af8d7dd281fce38d Mon Sep 17 00:00:00 2001 From: XiangLingFeng <1518871916@qq.com> Date: Tue, 2 Dec 2025 16:22:23 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=80/=E6=94=B6=E7=A5=A8=E7=99=BB=E8=AE=B0?= =?UTF-8?q?=E6=9C=9F=E9=99=90=E8=AE=A1=E7=AE=97(=E5=88=B0=E6=9C=9F?= =?UTF-8?q?=E6=97=A5-=E5=BC=80=E7=A5=A8=E6=97=A5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/form/cdm/PayAndRecBillPlugin.java | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 code/tmc/kdsz-zyf25-tmc-cfm/src/main/java/kdsz/zyf25/tmc/cfm/plugin/form/cdm/PayAndRecBillPlugin.java diff --git a/code/tmc/kdsz-zyf25-tmc-cfm/src/main/java/kdsz/zyf25/tmc/cfm/plugin/form/cdm/PayAndRecBillPlugin.java b/code/tmc/kdsz-zyf25-tmc-cfm/src/main/java/kdsz/zyf25/tmc/cfm/plugin/form/cdm/PayAndRecBillPlugin.java new file mode 100644 index 0000000..298e816 --- /dev/null +++ b/code/tmc/kdsz-zyf25-tmc-cfm/src/main/java/kdsz/zyf25/tmc/cfm/plugin/form/cdm/PayAndRecBillPlugin.java @@ -0,0 +1,56 @@ +package kdsz.zyf25.tmc.cfm.plugin.form.cdm; + +import kd.bos.bill.AbstractBillPlugIn; +import kd.bos.entity.datamodel.events.ChangeData; +import kd.bos.entity.datamodel.events.PropertyChangedArgs; +import kd.sdk.plugin.Plugin; + +import java.time.LocalDate; +import java.time.ZoneId; +import java.time.temporal.ChronoUnit; +import java.util.Date; +import java.util.EventObject; + +/** + * 应收、应付票据共用界面插件 + */ +public class PayAndRecBillPlugin extends AbstractBillPlugIn implements Plugin { + @Override + public void afterCreateNewData(EventObject e) { + super.afterCreateNewData(e); + Date issueDate = (Date)this.getModel().getValue("issuedate");//出票日期 + Date expireDate = (Date)this.getModel().getValue("draftbillexpiredate");//票据到期日 + calculateTerm(issueDate, expireDate); + } + + @Override + public void propertyChanged(PropertyChangedArgs e) { + super.propertyChanged(e); + String name = e.getProperty().getName(); + //出票日期、到期日变更时计算票据期限 + if ("issuedate".equals(name) || "draftbillexpiredate".equals(name)){ + Date issueDate = (Date)this.getModel().getValue("issuedate");//出票日期 + Date expireDate = (Date)this.getModel().getValue("draftbillexpiredate");//票据到期日 + calculateTerm(issueDate, expireDate); + } + } + private void calculateTerm(Date issueDate,Date expireDate){ + // 如果出票日期或到期日为null,则期限为0天 + if (issueDate == null || expireDate == null){ + this.getModel().setValue("kdsz_term", 0); + return; + } + // 将 Date 转换为 LocalDate(忽略时间部分) + LocalDate localIssueDate = issueDate.toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDate(); + + LocalDate localExpireDate = expireDate.toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDate(); + + // 计算天数差 + long term = Math.abs(ChronoUnit.DAYS.between(localIssueDate, localExpireDate)); + this.getModel().setValue("kdsz_term", term); + } +} \ No newline at end of file