From 393d2425dd309164092166f6f0bef5bb96fdd7a9 Mon Sep 17 00:00:00 2001 From: csx <1981897232@qq.com> Date: Thu, 30 Oct 2025 16:05:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BA=BA=EF=BC=9A=E9=99=88?= =?UTF-8?q?=E7=BB=8D=E9=91=AB=20=E6=97=A5=E6=9C=9F=EF=BC=9A2025/10/30=2018?= =?UTF-8?q?=EF=BC=9A30=20=E5=86=85=E5=AE=B9:=E6=8B=85=E4=BF=9D=E5=90=88?= =?UTF-8?q?=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 | 32 ++++++- .../form/GuaranteeContCSXQFromPlugin.java | 91 +++++++++++++++++++ .../GuaranteeContractFeeDetailPlugin.java | 33 +++++++ 3 files changed, 154 insertions(+), 2 deletions(-) create mode 100644 sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/GuaranteeContCSXQFromPlugin.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 index eb08a9b..f958e7e 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 @@ -14,11 +14,14 @@ import com.alibaba.fastjson.JSONObject; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.ZoneId; +import java.time.temporal.TemporalAdjusters; import java.util.*; /** * @FileName GuaranteeConDateFormPlugin - * @Description + * @Description 担保合同日期选择动态表单插件 * @Author csx * @date 2025-10-27 **/ @@ -35,11 +38,17 @@ public class GuaranteeConDateFormPlugin extends AbstractFormPlugin { Object shkd_feeoppunit = this.getView().getFormShowParameter().getCustomParam("shkd_feeoppunit"); Object shkd_feeoppbebank = this.getView().getFormShowParameter().getCustomParam("shkd_feeoppbebank"); Object shkd_feeoppacctbank = this.getView().getFormShowParameter().getCustomParam("shkd_feeoppacctbank"); + Object type = this.getView().getFormShowParameter().getCustomParam("type"); if (end!=null){ String enddateString = (String) end;//上次的结束日期 try { Date enddate = sdf.parse(enddateString); - Date quarterEndDate = getQuarterEndDate(getNextDay(enddate));//获取季末最后一天 + Date quarterEndDate; + if (type!=null&&((String)type).equals("jt")){ + quarterEndDate = getQuarterEndDate(getNextDay(enddate));//获取季末最后一天 + }else { + quarterEndDate = getLastDayOfMonth(getNextDay(enddate));//获取月末最后一天 + } this.getModel().setValue("shkd_startdate", getNextDay(enddate)); this.getModel().setValue("shkd_enddate", quarterEndDate); } catch (ParseException ex) { @@ -225,6 +234,25 @@ public class GuaranteeConDateFormPlugin extends AbstractFormPlugin { return calendar.getTime(); } + + /* + * 获取月末最后一天方法 + * */ + public static Date getLastDayOfMonth(Date inputDate) { + // 将 Date 转换为 LocalDate + LocalDate localDate = inputDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + + // 获取当前月的最后一天 + LocalDate lastDayOfMonth = localDate.with(TemporalAdjusters.lastDayOfMonth()); + + // 将 LocalDate 转换为 Date 类型并返回 + return Date.from(lastDayOfMonth.atStartOfDay(ZoneId.systemDefault()).toInstant()); + } + + + /* + * 获取下一天 + * */ public Date getNextDay(Date enddate) { // 使用 Calendar 来处理日期 Calendar calendar = Calendar.getInstance(); diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/GuaranteeContCSXQFromPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/GuaranteeContCSXQFromPlugin.java new file mode 100644 index 0000000..31cadff --- /dev/null +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/GuaranteeContCSXQFromPlugin.java @@ -0,0 +1,91 @@ +package shkd.sys.sys.plugin.form; + +import com.alibaba.fastjson.JSONArray; +import kd.bos.entity.datamodel.events.BizDataEventArgs; +import kd.bos.form.plugin.AbstractFormPlugin; +import com.alibaba.fastjson.JSONObject; + +import java.math.BigDecimal; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.EventObject; +import java.util.concurrent.TimeUnit; + +/** + * @FileName GuaranteeContCSXQFromPlugin + * @Description 担保合同测算详情动态表单插件 + * @Author csx + * @date 2025-10-30 + **/ +public class GuaranteeContCSXQFromPlugin extends AbstractFormPlugin { + + private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + + @Override + public void createNewData(BizDataEventArgs e) { + super.createNewData(e); + + } + + @Override + public void afterCreateNewData(EventObject e) { + super.afterCreateNewData(e); + try { + Object type = this.getView().getFormShowParameter().getCustomParam("type"); + + Object entry = this.getView().getFormShowParameter().getCustomParam("entry"); + Object guaranteedebt_entry = this.getView().getFormShowParameter().getCustomParam("guaranteedebt_entry"); + if (entry!=null&&guaranteedebt_entry!=null){ + String typeString=(String)type; + if ("jt".equals(typeString)){//计提赋值 + JSONObject entryJSONObject=(JSONObject)entry; + JSONArray guaranteedebt_entryJSONArray=(JSONArray)guaranteedebt_entry; + int[] indexs = this.getModel().batchCreateNewEntryRow("shkd_entryentity",guaranteedebt_entryJSONArray.size());//批量新建行 + int i=0; + for (int index : indexs) { + JSONObject o = (JSONObject)guaranteedebt_entryJSONArray.get(i); + String shkd_jtstartdate = entryJSONObject.getString("shkd_jtstartdate"); + this.getModel().setValue("shkd_startdate", sdf.parse(shkd_jtstartdate),index);//计息结束日 + String shkd_jtenddate = entryJSONObject.getString("shkd_jtenddate"); + this.getModel().setValue("shkd_enddate", sdf.parse(shkd_jtenddate),index);//计息开始日 + long diffInMillis = sdf.parse(shkd_jtenddate).getTime() - sdf.parse(shkd_jtstartdate).getTime();//时间差 + long convert = TimeUnit.DAYS.convert(diffInMillis, TimeUnit.MILLISECONDS);//日期差 + this.getModel().setValue("shkd_jxts", BigDecimal.valueOf(convert),index);//计息天数 + BigDecimal gdebtbalance = o.getBigDecimal("gdebtbalance"); + this.getModel().setValue("shkd_jxbj", gdebtbalance,index);//计息本金 + BigDecimal shkd_jtfeerate = entryJSONObject.getBigDecimal("shkd_jtfeerate"); + this.getModel().setValue("shkd_fl", shkd_jtfeerate,index);//费率 + this.getModel().setValue("shkd_fyje", entryJSONObject.getBigDecimal("shkd_jtfeeamt"),index);//费用金额 + this.getModel().setValue("shkd_llzhts", BigDecimal.valueOf(360),index);//转换天数 + i++; + } + }else {//预提赋值 + JSONObject entryJSONObject=(JSONObject)entry; + JSONArray guaranteedebt_entryJSONArray=(JSONArray)guaranteedebt_entry; + int[] indexs = this.getModel().batchCreateNewEntryRow("shkd_entryentity",guaranteedebt_entryJSONArray.size());//批量新建行 + int i=0; + for (int index : indexs) { + JSONObject o = (JSONObject)guaranteedebt_entryJSONArray.get(i); + String shkd_jtstartdate = entryJSONObject.getString("shkd_ytstartdate"); + this.getModel().setValue("shkd_startdate", sdf.parse(shkd_jtstartdate),index);//计息结束日 + String shkd_jtenddate = entryJSONObject.getString("shkd_ytenddate"); + this.getModel().setValue("shkd_enddate", sdf.parse(shkd_jtenddate),index);//计息开始日 + long diffInMillis = sdf.parse(shkd_jtenddate).getTime() - sdf.parse(shkd_jtstartdate).getTime();//时间差 + long convert = TimeUnit.DAYS.convert(diffInMillis, TimeUnit.MILLISECONDS);//日期差 + this.getModel().setValue("shkd_jxts", BigDecimal.valueOf(convert),index);//计息天数 + BigDecimal gdebtbalance = o.getBigDecimal("gdebtbalance"); + this.getModel().setValue("shkd_jxbj", gdebtbalance,index);//计息本金 + BigDecimal shkd_jtfeerate = entryJSONObject.getBigDecimal("shkd_ytfeerate"); + this.getModel().setValue("shkd_fl", shkd_jtfeerate,index);//费率 + this.getModel().setValue("shkd_fyje", entryJSONObject.getBigDecimal("shkd_ytfeeamt"),index);//费用金额 + this.getModel().setValue("shkd_llzhts", BigDecimal.valueOf(360),index);//转换天数 + i++; + } + } + + } + } catch (ParseException ex) { + throw new RuntimeException(ex); + } + } +} 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 8d0d07c..7f853c9 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 @@ -3,6 +3,7 @@ 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.entity.datamodel.IDataModel; import kd.bos.form.CloseCallBack; import kd.bos.form.FormShowParameter; import kd.bos.form.ShowType; @@ -56,6 +57,7 @@ public class GuaranteeContractFeeDetailPlugin extends AbstractBillPlugIn { ShowParameter.setCloseCallBack(new CloseCallBack(this, "jt")); ShowParameter.getOpenStyle().setShowType(ShowType.Modal); DynamicObjectCollection shkd_jtentry = this.getModel().getEntryEntity("shkd_jtentry"); + ShowParameter.setCustomParam("type", "jt");//类型 if (shkd_jtentry.size()>0){//返回上次填写的日期 DynamicObject dynamicObject = shkd_jtentry.get(shkd_jtentry.size() - 1);//最后一行的数据 Date shkd_jtenddate = dynamicObject.getDate("shkd_jtenddate"); @@ -88,6 +90,7 @@ public class GuaranteeContractFeeDetailPlugin extends AbstractBillPlugIn { ShowParameter.setCloseCallBack(new CloseCallBack(this, "yt")); ShowParameter.getOpenStyle().setShowType(ShowType.Modal); DynamicObjectCollection shkd_ytentry = this.getModel().getEntryEntity("shkd_ytentry"); + ShowParameter.setCustomParam("type", "yt");//类型 if (shkd_ytentry.size()>0){//返回上次填写的日期 DynamicObject dynamicObject = shkd_ytentry.get(shkd_ytentry.size() - 1);//最后一行的数据 Date shkd_jtenddate = dynamicObject.getDate("shkd_ytenddate"); @@ -148,6 +151,36 @@ public class GuaranteeContractFeeDetailPlugin extends AbstractBillPlugIn { SaveServiceHelper.save(new DynamicObject[]{this.getModel().getDataEntity(true)}); this.getView().updateView("shkd_ytentry"); this.getView().showTipNotification("功能成功"); + }else if ("jtckcsxq".equals(operate.getOperateKey())) { + IDataModel model = this.getModel(); + DynamicObject shkd_jtentry = (DynamicObject)model.getEntryEntity("shkd_jtentry").get(model.getEntryCurrentRowIndex("shkd_jtentry")); + 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()); + FormShowParameter showParameter = new FormShowParameter(); + showParameter.setFormId("shkd_guaranteecontcsxq"); + showParameter.getOpenStyle().setShowType(ShowType.Modal); + showParameter.setCustomParam("type", "jt");//类型 + showParameter.setCustomParam("entry", shkd_jtentry);//计提信息 + showParameter.setCustomParam("guaranteedebt_entry", gstatus);//责任金额的分录信息 + this.getView().showForm(showParameter); + } else if ("ytckcsxq".equals(operate.getOperateKey())) { + IDataModel model = this.getModel(); + DynamicObject shkd_ytentry = (DynamicObject)model.getEntryEntity("shkd_ytentry").get(model.getEntryCurrentRowIndex("shkd_ytentry")); + 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()); + FormShowParameter showParameter = new FormShowParameter(); + showParameter.setFormId("shkd_guaranteecontcsxq"); + showParameter.getOpenStyle().setShowType(ShowType.Modal); + showParameter.setCustomParam("type", "yt");//类型 + showParameter.setCustomParam("entry", shkd_ytentry);//计提信息 + showParameter.setCustomParam("guaranteedebt_entry", gstatus);//责任金额的分录信息 + this.getView().showForm(showParameter); } }