From 21743895d9573f24c89d53eb101741f89f3faf47 Mon Sep 17 00:00:00 2001 From: csx <1981897232@qq.com> Date: Mon, 27 Oct 2025 17:43:36 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BA=BA=EF=BC=9A?= =?UTF-8?q?=E9=99=88=E7=BB=8D=E9=91=AB=20=E6=97=A5=E6=9C=9F=EF=BC=9A2025/1?= =?UTF-8?q?0/27=2015=EF=BC=9A30=20=E5=86=85=E5=AE=B9:=E6=8B=85=E4=BF=9D?= =?UTF-8?q?=E5=90=88=E5=90=8C=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form/GuaranteeConDateFormPlugin.java | 167 ++++++++++++++++++ .../GuaranteeContractFeeDetailPlugin.java | 128 ++++++++++++++ 2 files changed, 295 insertions(+) create mode 100644 sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/GuaranteeConDateFormPlugin.java create mode 100644 sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/GuaranteeContractFeeDetailPlugin.java diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/GuaranteeConDateFormPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/GuaranteeConDateFormPlugin.java new file mode 100644 index 0000000..5cd7fa3 --- /dev/null +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/GuaranteeConDateFormPlugin.java @@ -0,0 +1,167 @@ +package shkd.sys.sys.plugin.form; + +import kd.bos.form.control.Button; +import kd.bos.form.control.events.BeforeItemClickEvent; +import kd.bos.form.events.AfterDoOperationEventArgs; +import kd.bos.form.events.BeforeClosedEvent; +import kd.bos.form.plugin.AbstractFormPlugin; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.EventObject; +import java.util.HashMap; + +/** + * @FileName GuaranteeConDateFormPlugin + * @Description + * @Author csx + * @date 2025-10-27 + **/ +public class GuaranteeConDateFormPlugin extends AbstractFormPlugin { + + private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + + @Override + public void beforeBindData(EventObject e) { + Object end = this.getView().getFormShowParameter().getCustomParam("end"); +// Map paramMap = this.getView().getFormShowParameter().getCustomParam("paramMap"); +// Object end = paramMap.get("end"); + if (end!=null){ + String enddateString = (String) end;//上次的结束日期 + try { + Date enddate = sdf.parse(enddateString); + Date quarterEndDate = getQuarterEndDate(enddate);//获取季末最后一天 + this.getModel().setValue("shkd_startdate", getNextDay(enddate)); + this.getModel().setValue("shkd_enddate", quarterEndDate); + } catch (ParseException ex) { + throw new RuntimeException(ex); + } + + } + } + + @Override + public void registerListener(EventObject e) { + super.registerListener(e); + this.addClickListeners("btnok"); + addItemClickListeners("btnok"); + } + + + @Override + public void click(EventObject evt) { + super.click(evt); + } + + @Override + public void beforeItemClick(BeforeItemClickEvent evt) { + super.beforeItemClick(evt); + Button source = (Button) evt.getSource(); + String key = source.getKey(); + if (key.equals("btnok")) { + Date shkd_startdate = (Date) this.getModel().getValue("shkd_startdate"); + Date shkd_enddate = (Date) this.getModel().getValue("shkd_enddate"); + if (shkd_enddate.before(shkd_startdate)) { + this.getView().showTipNotification("结束日期不能在开始日期之前,请重新检查!"); + evt.setCancel(true); + } + } +// this.getView().close(); + } + + @Override + public void afterDoOperation(AfterDoOperationEventArgs e) { + super.afterDoOperation(e); + String operateKey = e.getOperateKey(); + if (operateKey.equals("do")) { + Date shkd_startdate = (Date) this.getModel().getValue("shkd_startdate"); + Date shkd_enddate = (Date) this.getModel().getValue("shkd_enddate"); + // 指定日期格式 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + // 转换成字符串 + String startdate = sdf.format(shkd_startdate); + String enddate = sdf.format(shkd_enddate); + this.getPageCache().put("shkd_startdate", startdate); + this.getPageCache().put("shkd_enddate", enddate); + this.getPageCache().put("btnok", "true"); + } + this.getView().close(); + } + + @Override + public void beforeClosed(BeforeClosedEvent e) { + super.beforeClosed(e); + HashMap map = new HashMap<>(); + String btnok = this.getPageCache().get("btnok"); + if ("true".equals(btnok)){ + String shkd_startdate = this.getPageCache().get("shkd_startdate"); + String shkd_enddate = this.getPageCache().get("shkd_enddate"); + map.put("shkd_startdate",shkd_startdate); + map.put("shkd_enddate",shkd_enddate); + this.getView().returnDataToParent(map); + }else { + this.getView().returnDataToParent(null); + } + + } + + + /* + * 获取季末最后一天方法 + * */ + public Date getQuarterEndDate(Date enddate) { + // 使用 Calendar 来处理日期 + Calendar calendar = Calendar.getInstance(); + calendar.setTime(enddate); // 设置日期 + + // 获取月份 (0 - 11) + int month = calendar.get(Calendar.MONTH); + + // 根据月份来确定季度的最后一天 + switch (month) { + case Calendar.JANUARY: // 1月 -> 第一季度 + case Calendar.FEBRUARY: // 2月 -> 第一季度 + case Calendar.MARCH: // 3月 -> 第一季度 + calendar.set(Calendar.MONTH, Calendar.MARCH); // 设置为 3 月 + calendar.set(Calendar.DAY_OF_MONTH, 31); // 设置为 3 月 31 日 + break; + case Calendar.APRIL: // 4月 -> 第二季度 + case Calendar.MAY: // 5月 -> 第二季度 + case Calendar.JUNE: // 6月 -> 第二季度 + calendar.set(Calendar.MONTH, Calendar.JUNE); // 设置为 6 月 + calendar.set(Calendar.DAY_OF_MONTH, 30); // 设置为 6 月 30 日 + break; + case Calendar.JULY: // 7月 -> 第三季度 + case Calendar.AUGUST: // 8月 -> 第三季度 + case Calendar.SEPTEMBER:// 9月 -> 第三季度 + calendar.set(Calendar.MONTH, Calendar.SEPTEMBER); // 设置为 9 月 + calendar.set(Calendar.DAY_OF_MONTH, 30); // 设置为 9 月 30 日 + break; + case Calendar.OCTOBER: // 10月 -> 第四季度 + case Calendar.NOVEMBER:// 11月 -> 第四季度 + case Calendar.DECEMBER:// 12月 -> 第四季度 + calendar.set(Calendar.MONTH, Calendar.DECEMBER); // 设置为 12 月 + calendar.set(Calendar.DAY_OF_MONTH, 31); // 设置为 12 月 31 日 + break; + default: + break; + } + + // 返回计算出的季度末日期 + return calendar.getTime(); + } + + public Date getNextDay(Date enddate) { + // 使用 Calendar 来处理日期 + Calendar calendar = Calendar.getInstance(); + calendar.setTime(enddate); // 设置日期为 enddate + + // 将日期加一天 + calendar.add(Calendar.DAY_OF_MONTH, 1); + + // 返回加一天后的日期 + return calendar.getTime(); + } +} diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/GuaranteeContractFeeDetailPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/GuaranteeContractFeeDetailPlugin.java new file mode 100644 index 0000000..21a5527 --- /dev/null +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/GuaranteeContractFeeDetailPlugin.java @@ -0,0 +1,128 @@ +package shkd.sys.sys.plugin.form; + +import kd.bos.bill.AbstractBillPlugIn; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.form.CloseCallBack; +import kd.bos.form.FormShowParameter; +import kd.bos.form.ShowType; +import kd.bos.form.events.BeforeDoOperationEventArgs; +import kd.bos.form.events.ClosedCallBackEvent; +import kd.bos.form.operate.AbstractOperate; + +import java.math.BigDecimal; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @FileName GuaranteeContractFeeDetailPlugin + * @Description 担保合同表单界面插件 + * @Author csx + * @date 2025-10-23 + **/ +public class GuaranteeContractFeeDetailPlugin extends AbstractBillPlugIn { + + // 指定日期格式 + private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + + @Override + public void registerListener(EventObject e) { + super.registerListener(e); + } + + @Override + public void beforeDoOperation(BeforeDoOperationEventArgs args) { + super.beforeDoOperation(args); + AbstractOperate operate = (AbstractOperate)args.getSource(); + if("jt".equals(operate.getOperateKey())){ + //计提 + FormShowParameter ShowParameter = new FormShowParameter(); + ShowParameter.setFormId("shkd_guaranteecondate"); + ShowParameter.setCloseCallBack(new CloseCallBack(this, "jt")); + ShowParameter.getOpenStyle().setShowType(ShowType.Modal); + DynamicObjectCollection shkd_jtentry = this.getModel().getEntryEntity("shkd_jtentry"); + //获取最晚的日期 + Date shkd_jtenddate = shkd_jtentry.stream() + // 提取每个条目的 shkd_jtenddate 字段并确保它不为 null + .map(entry -> (Date) entry.getDate("shkd_jtenddate")) + .filter(date -> date != null) // 过滤掉 null 日期 + .max(Comparator.naturalOrder()) // 找到最大的日期 + .orElse(null);// 如果没有有效日期,返回 null + ShowParameter.setCustomParam("end", shkd_jtenddate); + this.getView().showForm(ShowParameter); + } else if ("yt".equals(operate.getOperateKey())) { + FormShowParameter ShowParameter = new FormShowParameter(); + ShowParameter.setFormId("shkd_guaranteecondate"); + ShowParameter.setCloseCallBack(new CloseCallBack(this, "yt")); + ShowParameter.getOpenStyle().setShowType(ShowType.Modal); + DynamicObjectCollection shkd_ytentry = this.getModel().getEntryEntity("shkd_ytentry"); + //获取最晚的日期 + Date shkd_ytenddate = shkd_ytentry.stream() + // 提取每个条目的 shkd_jtenddate 字段并确保它不为 null + .map(entry -> (Date) entry.getDate("shkd_jtenddate")) + .filter(date -> date != null) // 过滤掉 null 日期 + .max(Comparator.naturalOrder()) // 找到最大的日期 + .orElse(null);// 如果没有有效日期,返回 null + ShowParameter.setCustomParam("end", shkd_ytenddate); + this.getView().showForm(ShowParameter); + } + } + + + @Override + public void closedCallBack(ClosedCallBackEvent e){ + String actionId = e.getActionId(); + if ("jt".equals(actionId)){ + Object returnData = e.getReturnData(); + if (returnData == null) return; + System.out.println(returnData); + HashMap map=(HashMap)returnData; + DynamicObjectCollection guaranteedebt_entry = this.getModel().getEntryEntity("guaranteedebt_entry");//担保债务 + List gstatus = guaranteedebt_entry.stream() + // 过滤出 gstatus 字段为 "A" 的条目 + .filter(entry -> "A".equals(entry.getString("gstatus"))) + .collect(Collectors.toList()); + int index = this.getModel().createNewEntryRow("shkd_jtentry"); + this.getModel().setValue("shkd_jtfeerate",this.getModel().getValue("generalfeerate"),index);//费率(%) + this.getModel().setValue("shkd_jtfeeamt", BigDecimal.valueOf(123),index);//费用金额 + Date shkd_startdate; + Date shkd_enddate; + try { + shkd_startdate = sdf.parse((String) map.get("shkd_startdate")); + shkd_enddate = sdf.parse((String) map.get("shkd_enddate")); + } catch (ParseException ex) { + throw new RuntimeException(ex); + } + this.getModel().setValue("shkd_jtstartdate",shkd_startdate,index); + this.getModel().setValue("shkd_jtenddate",shkd_enddate,index); + this.getModel().setValue("shkd_jtfeepaydate",getNextDay(shkd_enddate),index); + //计算金额 + + } else if ("yt".equals(actionId)) { + Object returnData = e.getReturnData(); + if (returnData == null) return; + System.out.println(returnData); + HashMap map=(HashMap)returnData; + DynamicObjectCollection guaranteedebt_entry = this.getModel().getEntryEntity("guaranteedebt_entry");//担保债务 + List gstatus = guaranteedebt_entry.stream() + // 过滤出 gstatus 字段为 "A" 的条目 + .filter(entry -> "A".equals(entry.getString("gstatus"))) + .collect(Collectors.toList()); + + } + } + + public Date getNextDay(Date enddate) { + // 使用 Calendar 来处理日期 + Calendar calendar = Calendar.getInstance(); + calendar.setTime(enddate); // 设置日期为 enddate + + // 将日期加一天 + calendar.add(Calendar.DAY_OF_MONTH, 1); + + // 返回加一天后的日期 + return calendar.getTime(); + } +} From f00746433232b087da1eee97fbe540f9d2bf84a2 Mon Sep 17 00:00:00 2001 From: csx <1981897232@qq.com> Date: Tue, 28 Oct 2025 17:00:32 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BA=BA=EF=BC=9A?= =?UTF-8?q?=E9=99=88=E7=BB=8D=E9=91=AB=20=E6=97=A5=E6=9C=9F=EF=BC=9A2025/1?= =?UTF-8?q?0/28=2015=EF=BC=9A30=20=E5=86=85=E5=AE=B9:=E6=8B=85=E4=BF=9D?= =?UTF-8?q?=E5=90=88=E5=90=8C=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form/GuaranteeConDateFormPlugin.java | 20 +++-- .../GuaranteeContractFeeDetailPlugin.java | 73 ++++++++++++++++++- 2 files changed, 82 insertions(+), 11 deletions(-) diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/GuaranteeConDateFormPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/GuaranteeConDateFormPlugin.java index 5cd7fa3..69d461b 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/GuaranteeConDateFormPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/GuaranteeConDateFormPlugin.java @@ -1,17 +1,19 @@ package shkd.sys.sys.plugin.form; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.LocaleString; import kd.bos.form.control.Button; import kd.bos.form.control.events.BeforeItemClickEvent; import kd.bos.form.events.AfterDoOperationEventArgs; import kd.bos.form.events.BeforeClosedEvent; +import kd.bos.form.field.ComboEdit; +import kd.bos.form.field.ComboItem; import kd.bos.form.plugin.AbstractFormPlugin; +import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.EventObject; -import java.util.HashMap; +import java.util.*; /** * @FileName GuaranteeConDateFormPlugin @@ -32,7 +34,7 @@ public class GuaranteeConDateFormPlugin extends AbstractFormPlugin { String enddateString = (String) end;//上次的结束日期 try { Date enddate = sdf.parse(enddateString); - Date quarterEndDate = getQuarterEndDate(enddate);//获取季末最后一天 + Date quarterEndDate = getQuarterEndDate(getNextDay(enddate));//获取季末最后一天 this.getModel().setValue("shkd_startdate", getNextDay(enddate)); this.getModel().setValue("shkd_enddate", quarterEndDate); } catch (ParseException ex) { @@ -78,6 +80,7 @@ public class GuaranteeConDateFormPlugin extends AbstractFormPlugin { if (operateKey.equals("do")) { Date shkd_startdate = (Date) this.getModel().getValue("shkd_startdate"); Date shkd_enddate = (Date) this.getModel().getValue("shkd_enddate"); + BigDecimal shkd_generalfeerate = (BigDecimal) this.getModel().getValue("shkd_generalfeerate"); // 指定日期格式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 转换成字符串 @@ -85,6 +88,7 @@ public class GuaranteeConDateFormPlugin extends AbstractFormPlugin { String enddate = sdf.format(shkd_enddate); this.getPageCache().put("shkd_startdate", startdate); this.getPageCache().put("shkd_enddate", enddate); + this.getPageCache().put("shkd_jtfeerate", shkd_generalfeerate.toString()); this.getPageCache().put("btnok", "true"); } this.getView().close(); @@ -98,8 +102,10 @@ public class GuaranteeConDateFormPlugin extends AbstractFormPlugin { if ("true".equals(btnok)){ String shkd_startdate = this.getPageCache().get("shkd_startdate"); String shkd_enddate = this.getPageCache().get("shkd_enddate"); + String shkd_jtfeerate = this.getPageCache().get("shkd_jtfeerate"); map.put("shkd_startdate",shkd_startdate); map.put("shkd_enddate",shkd_enddate); + map.put("shkd_jtfeerate",shkd_jtfeerate); this.getView().returnDataToParent(map); }else { this.getView().returnDataToParent(null); @@ -109,8 +115,8 @@ public class GuaranteeConDateFormPlugin extends AbstractFormPlugin { /* - * 获取季末最后一天方法 - * */ + * 获取季末最后一天方法 + * */ public Date getQuarterEndDate(Date enddate) { // 使用 Calendar 来处理日期 Calendar calendar = Calendar.getInstance(); diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/GuaranteeContractFeeDetailPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/GuaranteeContractFeeDetailPlugin.java index 21a5527..440a09d 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/GuaranteeContractFeeDetailPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/GuaranteeContractFeeDetailPlugin.java @@ -6,14 +6,18 @@ import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.form.CloseCallBack; import kd.bos.form.FormShowParameter; import kd.bos.form.ShowType; +import kd.bos.form.events.AfterDoOperationEventArgs; import kd.bos.form.events.BeforeDoOperationEventArgs; import kd.bos.form.events.ClosedCallBackEvent; import kd.bos.form.operate.AbstractOperate; +import kd.bos.servicehelper.operation.SaveServiceHelper; import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -24,6 +28,8 @@ import java.util.stream.Collectors; **/ public class GuaranteeContractFeeDetailPlugin extends AbstractBillPlugIn { + public static final List entryop = Arrays.asList("newentryjt", "deleteentryjt","newentryyt","deleteentryyt"); + // 指定日期格式 private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); @@ -70,11 +76,19 @@ public class GuaranteeContractFeeDetailPlugin extends AbstractBillPlugIn { } } + @Override + public void afterDoOperation(AfterDoOperationEventArgs e) { + super.afterDoOperation(e); + String operateKey = e.getOperateKey(); + if (Arrays.asList("deleteentryjt","deleteentryyt").contains(operateKey)){ + SaveServiceHelper.save(new DynamicObject[]{this.getModel().getDataEntity(true)}); + } + } @Override public void closedCallBack(ClosedCallBackEvent e){ String actionId = e.getActionId(); - if ("jt".equals(actionId)){ + if ("jt".equals(actionId)){//计提 Object returnData = e.getReturnData(); if (returnData == null) return; System.out.println(returnData); @@ -86,7 +100,7 @@ public class GuaranteeContractFeeDetailPlugin extends AbstractBillPlugIn { .collect(Collectors.toList()); int index = this.getModel().createNewEntryRow("shkd_jtentry"); this.getModel().setValue("shkd_jtfeerate",this.getModel().getValue("generalfeerate"),index);//费率(%) - this.getModel().setValue("shkd_jtfeeamt", BigDecimal.valueOf(123),index);//费用金额 +// this.getModel().setValue("shkd_jtfeeamt", BigDecimal.valueOf(123),index);//费用金额 Date shkd_startdate; Date shkd_enddate; try { @@ -98,9 +112,14 @@ public class GuaranteeContractFeeDetailPlugin extends AbstractBillPlugIn { this.getModel().setValue("shkd_jtstartdate",shkd_startdate,index); this.getModel().setValue("shkd_jtenddate",shkd_enddate,index); this.getModel().setValue("shkd_jtfeepaydate",getNextDay(shkd_enddate),index); + String shkd_jtfeerate = (String) map.get("shkd_jtfeerate"); + BigDecimal fl = BigDecimal.valueOf(Double.parseDouble(shkd_jtfeerate)); + this.getModel().setValue("shkd_jtfeerate",fl,index);//费率 //计算金额 - - } else if ("yt".equals(actionId)) { + BigDecimal getbalance = getbalance(shkd_startdate, shkd_enddate, gstatus,fl); + this.getModel().setValue("shkd_jtcsfy",getbalance,index); + SaveServiceHelper.save(new DynamicObject[]{this.getModel().getDataEntity(true)}); + } else if ("yt".equals(actionId)) {//预提 Object returnData = e.getReturnData(); if (returnData == null) return; System.out.println(returnData); @@ -114,6 +133,44 @@ public class GuaranteeContractFeeDetailPlugin extends AbstractBillPlugIn { } } + private BigDecimal getbalance(Date shkd_startdate, Date shkd_enddate, List gstatus, BigDecimal fl) { + BigDecimal zero = BigDecimal.ZERO; + for (DynamicObject dynamicObject : gstatus) { + Date gdebtstartdate = dynamicObject.getDate("gdebtstartdate");//债务开始日期 + Date gdebtenddate = dynamicObject.getDate("gdebtenddate");//债务结束日期 + // 获取最大开始日期和最小结束日期 + Date overlapStartDate = (gdebtstartdate.after(shkd_startdate)) ? gdebtstartdate : shkd_startdate; + Date overlapEndDate = (gdebtenddate.before(shkd_enddate)) ? gdebtenddate : shkd_enddate; + long convert; + // 判断是否有重叠 + if (overlapStartDate.before(overlapEndDate)) { + // 计算重叠的天数 + long diffInMillis = overlapEndDate.getTime() - overlapStartDate.getTime(); + convert = TimeUnit.DAYS.convert(diffInMillis, TimeUnit.MILLISECONDS); + }else { + convert=0; + } + + //计算金额 责任金额(计息本金)*费率(利率)/360*计息天数 + BigDecimal flBigDecimal=fl.divide(BigDecimal.valueOf(100),6,RoundingMode.HALF_UP); + if (convert==0){ + continue; + }else { + BigDecimal gdebtbalance = dynamicObject.getBigDecimal("gdebtbalance"); + BigDecimal divide = (gdebtbalance.multiply(flBigDecimal)). + divide(BigDecimal.valueOf(360), 6, RoundingMode.HALF_UP). + multiply(BigDecimal.valueOf(convert)); + zero=zero.add(divide); + } + } + return zero; + + } + + + /* + * 获取第二天 + * */ public Date getNextDay(Date enddate) { // 使用 Calendar 来处理日期 Calendar calendar = Calendar.getInstance(); @@ -125,4 +182,12 @@ public class GuaranteeContractFeeDetailPlugin extends AbstractBillPlugIn { // 返回加一天后的日期 return calendar.getTime(); } + + /* + * 获取两个日期相差天数 + * */ + public static long calculateDebtDuration(Date gdebtstartdate, Date gdebtenddate) { + long diffInMillis = gdebtenddate.getTime() - gdebtstartdate.getTime(); + return TimeUnit.DAYS.convert(diffInMillis, TimeUnit.MILLISECONDS); + } }