批量预提单改造
This commit is contained in:
		
							parent
							
								
									bb6bbae726
								
							
						
					
					
						commit
						e72b378a09
					
				|  | @ -0,0 +1,95 @@ | |||
| package shjh.jhzj7.fi.fi.plugin.form; | ||||
| 
 | ||||
| import kd.bos.dataentity.entity.DynamicObject; | ||||
| import kd.bos.dataentity.entity.DynamicObjectCollection; | ||||
| import kd.bos.form.plugin.AbstractFormPlugin; | ||||
| import kd.bos.servicehelper.BusinessDataServiceHelper; | ||||
| import kd.sdk.plugin.Plugin; | ||||
| 
 | ||||
| import java.math.BigDecimal; | ||||
| import java.util.Date; | ||||
| import java.util.EventObject; | ||||
| 
 | ||||
| /** | ||||
|  * 理财批量预提表单插件 | ||||
|  */ | ||||
| public class CimIntBillBatchFormPlugin extends AbstractFormPlugin implements Plugin { | ||||
| 
 | ||||
|     @Override | ||||
|     public void afterBindData(EventObject e) { | ||||
|         super.afterBindData(e); | ||||
|         if ("A".equals((String) this.getModel().getValue("billstatus"))) { | ||||
|             DynamicObjectCollection entryEntity = this.getModel().getEntryEntity("entry"); | ||||
|             if (entryEntity != null && entryEntity.size() != 0) { | ||||
|                 for (int i = 0; i < entryEntity.size(); i++) { | ||||
|                     // 申购单id | ||||
|                     long id = entryEntity.get(i).getLong("finbillid"); | ||||
|                     if (id != 0L) { | ||||
|                         DynamicObject finsubscribe = BusinessDataServiceHelper.loadSingle(id, "cim_finsubscribe"); | ||||
|                         if (finsubscribe != null) { | ||||
|                             String cashManagementProducts = finsubscribe.getString("shjh_xjglcp"); | ||||
|                             this.getModel().setValue("shjh_amountcontrl", cashManagementProducts, i); | ||||
|                             if ("1".equals(cashManagementProducts)) { | ||||
|                                 // 预提日期 | ||||
|                                 Date preintdate = (Date) this.getModel().getValue("preintdate"); | ||||
|                                 if (preintdate != null) { | ||||
|                                     // 表头购买日净值 | ||||
|                                     BigDecimal iopv = finsubscribe.getBigDecimal("iopv"); | ||||
|                                     // 表头购买日份数 | ||||
|                                     BigDecimal buycopies = finsubscribe.getBigDecimal("buycopies"); | ||||
|                                     DynamicObjectCollection valuationentry = finsubscribe.getDynamicObjectCollection("valuationentry"); | ||||
| 
 | ||||
|                                     if (valuationentry != null && valuationentry.size() != 0) { | ||||
|                                         DynamicObject targetValuation = null; | ||||
| 
 | ||||
|                                         // 1. 如果只有一条估值数据,直接使用 | ||||
|                                         if (valuationentry.size() == 1) { | ||||
|                                             targetValuation = valuationentry.get(0); | ||||
|                                         } | ||||
|                                         // 2. 如果有多条,找到离预提日期最近的估值数据 | ||||
|                                         else { | ||||
|                                             // 初始化最近日期和最小时间差 | ||||
|                                             long minDiff = Long.MAX_VALUE; | ||||
| 
 | ||||
|                                             for (int j = 0; j < valuationentry.size(); j++) { | ||||
|                                                 DynamicObject valuation = valuationentry.get(j); | ||||
|                                                 Date valuationDate = valuation.getDate("e_valuationdate"); | ||||
| 
 | ||||
|                                                 if (valuationDate != null) { | ||||
|                                                     // 计算时间差(绝对值) | ||||
|                                                     long diff = Math.abs(valuationDate.getTime() - preintdate.getTime()); | ||||
| 
 | ||||
|                                                     // 如果找到更接近的日期,更新目标数据 | ||||
|                                                     if (diff < minDiff) { | ||||
|                                                         minDiff = diff; | ||||
|                                                         targetValuation = valuation; | ||||
|                                                     } | ||||
|                                                 } | ||||
|                                             } | ||||
|                                         } | ||||
| 
 | ||||
|                                         // 3. 计算本次预算预提收益 | ||||
|                                         if (targetValuation != null) { | ||||
|                                             BigDecimal currentIopv = targetValuation.getBigDecimal("e_iopv"); | ||||
|                                             BigDecimal currentSurpcopies = targetValuation.getBigDecimal("e_surpcopies"); | ||||
| 
 | ||||
|                                             if (currentIopv != null && currentSurpcopies != null && iopv != null && buycopies != null) { | ||||
|                                                 // 计算公式:预提收益 = (预提日净值 * 剩余份数) - (购买日净值 * 购买日份数) | ||||
|                                                 BigDecimal preIncome = currentIopv.multiply(currentSurpcopies) | ||||
|                                                         .subtract(iopv.multiply(buycopies)); | ||||
| 
 | ||||
|                                                 // 将计算结果设置到模型 | ||||
|                                                 this.getModel().setValue("interestamt", preIncome, i); | ||||
|                                             } | ||||
|                                         } | ||||
|                                     } | ||||
|                                 } | ||||
|                             } | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|                 this.getView().invokeOperation("save"); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Loading…
	
		Reference in New Issue