parent
							
								
									76b7a43975
								
							
						
					
					
						commit
						4a6fb3ff3d
					
				|  | @ -0,0 +1,59 @@ | |||
| package shjh.jhzj7.fi.fi.plugin.report; | ||||
| 
 | ||||
| import kd.bos.dataentity.entity.DynamicObject; | ||||
| import kd.bos.dataentity.entity.DynamicObjectCollection; | ||||
| import kd.bos.entity.report.ReportQueryParam; | ||||
| import kd.bos.logging.Log; | ||||
| import kd.bos.logging.LogFactory; | ||||
| import kd.bos.report.plugin.AbstractReportFormPlugin; | ||||
| import kd.sdk.plugin.Plugin; | ||||
| 
 | ||||
| import java.math.BigDecimal; | ||||
| import java.math.RoundingMode; | ||||
| 
 | ||||
| /** | ||||
|  * 报表界面插件 | ||||
|  * 强共享营运资金分布情况汇总表界面插件 | ||||
|  */ | ||||
| public class StrongOperateFormPlugin extends AbstractReportFormPlugin implements Plugin { | ||||
| 
 | ||||
|     private static final Log log = LogFactory.getLog(StrongOperateFormPlugin.class); | ||||
| 
 | ||||
|     @Override | ||||
|     public void processRowData(String gridPK, DynamicObjectCollection rowData, ReportQueryParam queryParam) { | ||||
|         super.processRowData(gridPK, rowData, queryParam); | ||||
| 
 | ||||
|         //1.计算合计 | ||||
|         BigDecimal shjh_amountjz = new BigDecimal("0");//合计_基准日期-余额 | ||||
|         for (DynamicObject rowDatum : rowData) { | ||||
|             //合计资金合计(元) | ||||
|             BigDecimal amountjz = rowDatum.getBigDecimal("shjh_amountjz"); | ||||
|             if (null != amountjz) { | ||||
|                 shjh_amountjz = shjh_amountjz.add(amountjz);//基准日期-余额 | ||||
|             } | ||||
|         } | ||||
|         DynamicObject dynamicObject = new DynamicObject(rowData.getDynamicObjectType()); | ||||
|         dynamicObject.set("shjh_bankname", "合计");//组织编码 | ||||
|         dynamicObject.set("shjh_amountjz", shjh_amountjz); | ||||
|         dynamicObject.set("shjh_percentage", null); | ||||
|         rowData.add(dynamicObject); | ||||
|         //2.计算每行 资金合计(元) 占比 | ||||
|         for (DynamicObject rowDatum : rowData) { | ||||
|             //合计资金合计(元) | ||||
|             BigDecimal amountjz = rowDatum.getBigDecimal("shjh_amountjz"); | ||||
|             if (null != amountjz) { | ||||
|                 //资金合计(元)占比 | ||||
|                 // 先乘 100 再相除并保留两位小数 | ||||
|                 BigDecimal amountjz_zb = new BigDecimal("0"); | ||||
|                 if (shjh_amountjz.compareTo(BigDecimal.ZERO) != 0) { | ||||
|                     // 先乘 100 再相除并保留两位小数 | ||||
|                     amountjz_zb = amountjz.multiply(new BigDecimal("100")).divide(shjh_amountjz, 2, RoundingMode.HALF_UP); | ||||
|                     System.out.println("百分比结果: " + amountjz_zb + "%"); | ||||
|                 } else { | ||||
|                     System.out.println("除数不能为 0,无法进行计算。"); | ||||
|                 } | ||||
|                 rowDatum.set("shjh_percentage", amountjz_zb); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -0,0 +1,91 @@ | |||
| package shjh.jhzj7.fi.fi.plugin.report; | ||||
| 
 | ||||
| import kd.bos.algo.DataSet; | ||||
| import kd.bos.entity.report.AbstractReportListDataPlugin; | ||||
| import kd.bos.entity.report.FilterInfo; | ||||
| import kd.bos.entity.report.ReportQueryParam; | ||||
| import kd.bos.orm.query.QCP; | ||||
| import kd.bos.orm.query.QFilter; | ||||
| import kd.bos.servicehelper.QueryServiceHelper; | ||||
| import kd.sdk.plugin.Plugin; | ||||
| 
 | ||||
| import java.util.Date; | ||||
| 
 | ||||
| /** | ||||
|  * 强共享营运资金分布情况汇总表 | ||||
|  * shjh_strongoperatereport | ||||
|  */ | ||||
| public class StrongOperateQueryPlugin extends AbstractReportListDataPlugin implements Plugin { | ||||
| 
 | ||||
|     // 交易明细单据编码 | ||||
|     public static final String BEI_INTELPAY = "bei_intelpay"; | ||||
| 
 | ||||
|     @Override | ||||
|     public DataSet query(ReportQueryParam reportQueryParam, Object o) throws Throwable { | ||||
| 
 | ||||
|         FilterInfo filter = reportQueryParam.getFilter(); | ||||
|         Date shjh_basedate = filter.getDate("shjh_basedate");//基准日期 | ||||
|         QFilter q1 = new QFilter("bizdate", QCP.equals, shjh_basedate);//交易日期 | ||||
|         QFilter q2 = new QFilter("company.shjh_isshare", QCP.equals, "1");//公司属性为强共享 | ||||
| 
 | ||||
|         DataSet result = null; | ||||
|         // 被动付款入账 | ||||
|         DataSet beiIntelpay1 = QueryServiceHelper.queryDataSet(this.getClass().getName(), BEI_INTELPAY, | ||||
|                 "id,billno as shjh_billno,company.number as shjh_orgnumber,company.name as shjh_orgname," + | ||||
|                         "bank.number as banknumber,biztime as shjh_biztime,transbalance as shjh_amountjz,accountbank.id as accountbankid," + | ||||
|                         "company.shjh_isshare as shjh_companyisshare", | ||||
|                 new QFilter[]{q1, q2}, null); | ||||
|         // 合作金融机构 bd_finorginfo | ||||
|         DataSet bdAccountbanks1 = QueryServiceHelper.queryDataSet(this.getClass().getName(), | ||||
|                 "bd_finorginfo", "id,number as finorginfonumber,bank_cate.name as shjh_bankname", null, null); | ||||
| 
 | ||||
|         try { | ||||
|             // 去重处理 | ||||
|             DataSet distinctBeiIntelpay = beiIntelpay1.distinct(); | ||||
|             DataSet distinctBdAccountbanks = bdAccountbanks1.distinct(); | ||||
| 
 | ||||
|             // 根据被动付款入账 开户银行 银行类别(查所有满足日期的交易明细) | ||||
|             DataSet joinedDataSet = distinctBeiIntelpay.join(distinctBdAccountbanks) | ||||
|                     .on("banknumber", "finorginfonumber") | ||||
|                     .select(new String[]{"shjh_billno", "shjh_orgnumber", "shjh_orgname", "shjh_bankname", "banknumber", | ||||
|                             "shjh_biztime", "shjh_amountjz", "accountbankid","shjh_companyisshare"}) | ||||
|                     .finish(); | ||||
| 
 | ||||
|             // 按银行账户id分组,取最大日期的集合 | ||||
|             DataSet maxBizdate = joinedDataSet.groupBy(new String[]{"accountbankid"}) | ||||
|                     .max("shjh_biztime") | ||||
|                     .finish(); | ||||
| 
 | ||||
|             // 分组后和源集合联表:除账户id,日期的其他字段进行组合返回前台 | ||||
|             DataSet result1 = joinedDataSet.join(maxBizdate) | ||||
|                     .on("accountbankid", "accountbankid") | ||||
|                     .on("shjh_biztime", "shjh_biztime") | ||||
|                     .select(new String[]{"shjh_billno", "shjh_orgnumber", "shjh_orgname", "shjh_bankname", "banknumber", | ||||
|                             "shjh_biztime", "shjh_amountjz","accountbankid","shjh_companyisshare"}) | ||||
|                     .finish(); | ||||
| 
 | ||||
|             // 再次根据银行编码分组 求和余额 | ||||
|             result = result1.groupBy(new String[]{"shjh_orgnumber", "shjh_orgname", "shjh_bankname","banknumber","shjh_companyisshare"}).sum("shjh_amountjz").finish(); | ||||
| 
 | ||||
|         } catch (Exception e) { | ||||
|             e.printStackTrace(); | ||||
|         } finally { | ||||
|             // 确保在操作完成后关闭数据集 | ||||
|             if (beiIntelpay1 != null) { | ||||
|                 try { | ||||
|                     beiIntelpay1.close(); | ||||
|                 } catch (Exception e) { | ||||
|                     e.printStackTrace(); | ||||
|                 } | ||||
|             } | ||||
|             if (bdAccountbanks1 != null) { | ||||
|                 try { | ||||
|                     bdAccountbanks1.close(); | ||||
|                 } catch (Exception e) { | ||||
|                     e.printStackTrace(); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         return result; | ||||
|     } | ||||
| } | ||||
		Loading…
	
		Reference in New Issue