parent
							
								
									6ef97d7565
								
							
						
					
					
						commit
						393d2425dd
					
				| 
						 | 
					@ -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();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -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);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue