提交人:陈绍鑫

日期:2025/10/30 18:30
内容:担保合同插件
This commit is contained in:
陈绍鑫 2025-10-30 16:05:28 +08:00
parent 6ef97d7565
commit 393d2425dd
3 changed files with 154 additions and 2 deletions

View File

@ -14,11 +14,14 @@ import com.alibaba.fastjson.JSONObject;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.temporal.TemporalAdjusters;
import java.util.*; import java.util.*;
/** /**
* @FileName GuaranteeConDateFormPlugin * @FileName GuaranteeConDateFormPlugin
* @Description * @Description 担保合同日期选择动态表单插件
* @Author csx * @Author csx
* @date 2025-10-27 * @date 2025-10-27
**/ **/
@ -35,11 +38,17 @@ public class GuaranteeConDateFormPlugin extends AbstractFormPlugin {
Object shkd_feeoppunit = this.getView().getFormShowParameter().getCustomParam("shkd_feeoppunit"); Object shkd_feeoppunit = this.getView().getFormShowParameter().getCustomParam("shkd_feeoppunit");
Object shkd_feeoppbebank = this.getView().getFormShowParameter().getCustomParam("shkd_feeoppbebank"); Object shkd_feeoppbebank = this.getView().getFormShowParameter().getCustomParam("shkd_feeoppbebank");
Object shkd_feeoppacctbank = this.getView().getFormShowParameter().getCustomParam("shkd_feeoppacctbank"); Object shkd_feeoppacctbank = this.getView().getFormShowParameter().getCustomParam("shkd_feeoppacctbank");
Object type = this.getView().getFormShowParameter().getCustomParam("type");
if (end!=null){ if (end!=null){
String enddateString = (String) end;//上次的结束日期 String enddateString = (String) end;//上次的结束日期
try { try {
Date enddate = sdf.parse(enddateString); 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_startdate", getNextDay(enddate));
this.getModel().setValue("shkd_enddate", quarterEndDate); this.getModel().setValue("shkd_enddate", quarterEndDate);
} catch (ParseException ex) { } catch (ParseException ex) {
@ -225,6 +234,25 @@ public class GuaranteeConDateFormPlugin extends AbstractFormPlugin {
return calendar.getTime(); 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) { public Date getNextDay(Date enddate) {
// 使用 Calendar 来处理日期 // 使用 Calendar 来处理日期
Calendar calendar = Calendar.getInstance(); Calendar calendar = Calendar.getInstance();

View File

@ -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);
}
}
}

View File

@ -3,6 +3,7 @@ package shkd.sys.sys.plugin.form;
import kd.bos.bill.AbstractBillPlugIn; import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.datamodel.IDataModel;
import kd.bos.form.CloseCallBack; import kd.bos.form.CloseCallBack;
import kd.bos.form.FormShowParameter; import kd.bos.form.FormShowParameter;
import kd.bos.form.ShowType; import kd.bos.form.ShowType;
@ -56,6 +57,7 @@ public class GuaranteeContractFeeDetailPlugin extends AbstractBillPlugIn {
ShowParameter.setCloseCallBack(new CloseCallBack(this, "jt")); ShowParameter.setCloseCallBack(new CloseCallBack(this, "jt"));
ShowParameter.getOpenStyle().setShowType(ShowType.Modal); ShowParameter.getOpenStyle().setShowType(ShowType.Modal);
DynamicObjectCollection shkd_jtentry = this.getModel().getEntryEntity("shkd_jtentry"); DynamicObjectCollection shkd_jtentry = this.getModel().getEntryEntity("shkd_jtentry");
ShowParameter.setCustomParam("type", "jt");//类型
if (shkd_jtentry.size()>0){//返回上次填写的日期 if (shkd_jtentry.size()>0){//返回上次填写的日期
DynamicObject dynamicObject = shkd_jtentry.get(shkd_jtentry.size() - 1);//最后一行的数据 DynamicObject dynamicObject = shkd_jtentry.get(shkd_jtentry.size() - 1);//最后一行的数据
Date shkd_jtenddate = dynamicObject.getDate("shkd_jtenddate"); Date shkd_jtenddate = dynamicObject.getDate("shkd_jtenddate");
@ -88,6 +90,7 @@ public class GuaranteeContractFeeDetailPlugin extends AbstractBillPlugIn {
ShowParameter.setCloseCallBack(new CloseCallBack(this, "yt")); ShowParameter.setCloseCallBack(new CloseCallBack(this, "yt"));
ShowParameter.getOpenStyle().setShowType(ShowType.Modal); ShowParameter.getOpenStyle().setShowType(ShowType.Modal);
DynamicObjectCollection shkd_ytentry = this.getModel().getEntryEntity("shkd_ytentry"); DynamicObjectCollection shkd_ytentry = this.getModel().getEntryEntity("shkd_ytentry");
ShowParameter.setCustomParam("type", "yt");//类型
if (shkd_ytentry.size()>0){//返回上次填写的日期 if (shkd_ytentry.size()>0){//返回上次填写的日期
DynamicObject dynamicObject = shkd_ytentry.get(shkd_ytentry.size() - 1);//最后一行的数据 DynamicObject dynamicObject = shkd_ytentry.get(shkd_ytentry.size() - 1);//最后一行的数据
Date shkd_jtenddate = dynamicObject.getDate("shkd_ytenddate"); Date shkd_jtenddate = dynamicObject.getDate("shkd_ytenddate");
@ -148,6 +151,36 @@ public class GuaranteeContractFeeDetailPlugin extends AbstractBillPlugIn {
SaveServiceHelper.save(new DynamicObject[]{this.getModel().getDataEntity(true)}); SaveServiceHelper.save(new DynamicObject[]{this.getModel().getDataEntity(true)});
this.getView().updateView("shkd_ytentry"); this.getView().updateView("shkd_ytentry");
this.getView().showTipNotification("功能成功"); 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<DynamicObject> 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<DynamicObject> 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);
} }
} }