From 4c9abbe0c69a741b55d96a25ff5e40c96dfc18b8 Mon Sep 17 00:00:00 2001 From: zhangzhiguo <421587375@qq.com> Date: Tue, 4 Nov 2025 16:17:18 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B5=84=E9=87=91=E8=AE=A1=E5=88=92=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/form/FundingplanapplyPlugin.java | 219 ++++++++++++------ 1 file changed, 146 insertions(+), 73 deletions(-) diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/FundingplanapplyPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/FundingplanapplyPlugin.java index c65449c..0fbf3d4 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/FundingplanapplyPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/FundingplanapplyPlugin.java @@ -10,6 +10,9 @@ import kd.bos.dataentity.entity.MulBasedataDynamicObjectCollection; import kd.bos.entity.datamodel.events.BizDataEventArgs; import kd.bos.entity.datamodel.events.ChangeData; import kd.bos.entity.datamodel.events.PropertyChangedArgs; +import kd.bos.form.ShowType; +import kd.bos.form.control.Toolbar; +import kd.bos.form.control.events.ItemClickEvent; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; @@ -25,6 +28,26 @@ import java.util.*; */ public class FundingplanapplyPlugin extends AbstractBillPlugIn implements Plugin { + //注册监听按钮 + @Override + public void registerListener(EventObject e) { + //注册整个工具栏监听器 + Toolbar toolbar = this.getView().getControl("tbmain"); + toolbar.addClickListener(this); + super.registerListener(e); + } + + //操作栏点击事件 + @Override + public void itemClick(ItemClickEvent evt) { + if(evt.getItemKey().equals("zcgj_initdata")){ //跳转到冲销单据 + DynamicObject org = (DynamicObject) this.getModel().getValue("zcgj_org"); + DynamicObject periodParam = (DynamicObject) this.getModel().getValue("zcgj_period"); + initData(org,periodParam); + this.getView().showMessage("操作完成!"); + } + super.itemClick(evt); + } @Override public void afterBindData(EventObject e) { @@ -107,6 +130,7 @@ public class FundingplanapplyPlugin extends AbstractBillPlugIn implements Plugin //当前期间 Object periodObj = this.getModel().getValue("zcgj_period"); + //流入流出项目 start if(periodObj!=null || periodParam !=null) { DynamicObject period = null; if (periodParam != null) { @@ -114,87 +138,74 @@ public class FundingplanapplyPlugin extends AbstractBillPlugIn implements Plugin } else { period = (DynamicObject) periodObj; } - - int year = Integer.parseInt(period.getString("number").substring(0, 4)); - int month = Integer.parseInt(period.getString("number").substring(4, 6)); - if (month == 1) { - year -= 1; - month = 12; - } else { - month -= 1; - } - String prevPeriod = String.format("%04d%02d", year, month);//获取上月会计期间 + int nowyear = LocalDate.now().getYear(); List searchFilterList = new ArrayList<>(); searchFilterList.add(new QFilter("zcgj_org", QCP.equals, org.getLong("id"))); - searchFilterList.add( new QFilter("zcgj_period.number", QCP.equals, prevPeriod)); - searchFilterList.add( new QFilter("billstatus", QCP.equals, "C")); + searchFilterList.add(new QFilter("zcgj_period.number", QCP.like, nowyear + "%")); + searchFilterList.add(new QFilter("billstatus", QCP.equals, "C")); DynamicObject[] load = BusinessDataServiceHelper.load("zcgj_ec_fundingplanapply", "zcgj_period," + "zcgj_infundproject_entry.zcgj_in_fundproject,zcgj_infundproject_entry.zcgj_in_custom,zcgj_infundproject_entry.zcgj_iinitialreceivable " + - ",zcgj_infundproject_entry.zcgj_expectedmonetarycap,zcgj_infundproject_entry.zcgj_expectedmonetaryfund,zcgj_infundproject_entry.zcgj_otheramount,zcgj_infundproject_entry.zcgj_expectedreceivableba,zcgj_infundproject_entry.zcgj_plannedoutputvalue,zcgj_infundproject_entry.zcgj_expectedtotalcollect "+ + ",zcgj_infundproject_entry.zcgj_expectedmonetarycap,zcgj_infundproject_entry.zcgj_expectedmonetaryfund,zcgj_infundproject_entry.zcgj_otheramount,zcgj_infundproject_entry.zcgj_expectedreceivableba,zcgj_infundproject_entry.zcgj_plannedoutputvalue,zcgj_infundproject_entry.zcgj_expectedtotalcollect " + ",zcgj_outfundproject_entry.zcgj_out_fundproject,zcgj_outfundproject_entry.zcgj_out_supplier,zcgj_outfundproject_entry.zcgj_openingpayable" + ",createtime", searchFilterList.toArray(new QFilter[]{}), "createtime desc"); - if(load!=null && load.length>0){ - DynamicObject data = load[0]; - DynamicObjectCollection indataentry = data.getDynamicObjectCollection("zcgj_infundproject_entry"); - DynamicObjectCollection inentry = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_infundproject_entry"); - inentry.clear(); - //本月计划产值 - BigDecimal lastplancashamtall = BigDecimal.ZERO; - BigDecimal lastplanbankamtall = BigDecimal.ZERO; - BigDecimal lastotheramtall = BigDecimal.ZERO; - BigDecimal lastplanarbalanceall = BigDecimal.ZERO; - BigDecimal lastplanvalall = BigDecimal.ZERO; - BigDecimal lastplanrec = BigDecimal.ZERO; + DynamicObjectCollection inentry = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_infundproject_entry"); + inentry.clear(); + this.getView().updateView("zcgj_infundproject_entry"); + + DynamicObjectCollection outentry = this.getModel().getDataEntity().getDynamicObjectCollection("zcgj_outfundproject_entry"); + outentry.clear(); + this.getView().updateView("zcgj_outfundproject_entry"); + + //资金流入项目和流出项目 + if (load != null && load.length > 0) { + DynamicObject data = load[0]; + //资金流入项目 + DynamicObjectCollection indataentry = data.getDynamicObjectCollection("zcgj_infundproject_entry"); + for (DynamicObject dynamicObject : indataentry) { DynamicObject newData = inentry.addNew(); DynamicObject zcgjInFundproject = dynamicObject.getDynamicObject("zcgj_in_fundproject"); - if(zcgjInFundproject!=null){ - newData.set("zcgj_in_fundproject",zcgjInFundproject); + if (zcgjInFundproject != null) { + newData.set("zcgj_in_fundproject", zcgjInFundproject); QFilter id = new QFilter("id", QCP.equals, zcgjInFundproject.getLong("id")); DynamicObject project = BusinessDataServiceHelper.loadSingle("zcgj_ec_fundproject", "zcgj_seq", new QFilter[]{id}); - if(project!=null){ + if (project != null) { BigDecimal zcgjSeq = project.getBigDecimal("zcgj_seq"); - newData.set("zcgj_in_seq",zcgjSeq); + newData.set("zcgj_in_seq", zcgjSeq); } } DynamicObjectCollection collection = new DynamicObjectCollection(); - for (DynamicObject zcgjInCustom :dynamicObject.getDynamicObjectCollection("zcgj_in_custom")) { + for (DynamicObject zcgjInCustom : dynamicObject.getDynamicObjectCollection("zcgj_in_custom")) { DynamicObject basedataObj = zcgjInCustom.getDynamicObject("fbasedataid"); DynamicObject newObj = new DynamicObject(newData.getDynamicObjectCollection("zcgj_in_custom").getDynamicObjectType()); newObj.set("fbasedataid", basedataObj); newObj.set("fbasedataid_id", basedataObj.getPkValue()); collection.add(newObj); } - newData.set("zcgj_in_custom",collection); - newData.set("zcgj_iinitialreceivable",dynamicObject.get("zcgj_iinitialreceivable")); - - lastplancashamtall = lastplancashamtall.add(dynamicObject.getBigDecimal("zcgj_expectedmonetarycap")); - lastplanbankamtall= lastplanbankamtall.add(dynamicObject.getBigDecimal("zcgj_expectedmonetaryfund")); - lastotheramtall = lastotheramtall.add(dynamicObject.getBigDecimal("zcgj_otheramount")); - lastplanarbalanceall = lastplanarbalanceall.add(dynamicObject.getBigDecimal("zcgj_expectedreceivableba")); - lastplanvalall = lastplanvalall.add(dynamicObject.getBigDecimal("zcgj_plannedoutputvalue")); - lastplanrec = lastplanrec.add(dynamicObject.getBigDecimal("zcgj_expectedtotalcollect")); + newData.set("zcgj_in_custom", collection); + newData.set("zcgj_iinitialreceivable", dynamicObject.get("zcgj_iinitialreceivable")); } this.getView().updateView("zcgj_infundproject_entry"); + //资金流出项目 DynamicObjectCollection outdataentry = data.getDynamicObjectCollection("zcgj_outfundproject_entry"); - DynamicObjectCollection outentry = this.getModel().getDataEntity().getDynamicObjectCollection("zcgj_outfundproject_entry"); - outentry.clear(); + + this.getView().updateView("zcgj_outfundproject_entry"); for (DynamicObject dynamicObject : outdataentry) { DynamicObject newData = outentry.addNew(); DynamicObject zcgjOutFundproject = dynamicObject.getDynamicObject("zcgj_out_fundproject"); - if(zcgjOutFundproject!=null){ - newData.set("zcgj_out_fundproject",zcgjOutFundproject); + if (zcgjOutFundproject != null) { + newData.set("zcgj_out_fundproject", zcgjOutFundproject); QFilter id = new QFilter("id", QCP.equals, zcgjOutFundproject.getLong("id")); DynamicObject project = BusinessDataServiceHelper.loadSingle("zcgj_ec_fundproject", "zcgj_seq", new QFilter[]{id}); - if(project!=null){ + if (project != null) { BigDecimal zcgjSeq = project.getBigDecimal("zcgj_seq"); - newData.set("zcgj_out_seq",zcgjSeq); + newData.set("zcgj_out_seq", zcgjSeq); } } @@ -206,40 +217,100 @@ public class FundingplanapplyPlugin extends AbstractBillPlugIn implements Plugin newObj.set("fbasedataid_id", basedataObj.getPkValue()); collection.add(newObj); } - newData.set("zcgj_out_supplier",collection); - newData.set("zcgj_openingpayable",dynamicObject.get("zcgj_openingpayable")); + newData.set("zcgj_out_supplier", collection); + newData.set("zcgj_openingpayable", dynamicObject.get("zcgj_openingpayable")); } this.getView().updateView("zcgj_outfundproject_entry"); - - //本月预计收款(货币) zcgj_expectedmonetarycap 其中:上月预计收货币资金 zcgj_lastplancashamt - //本月预计收款(承兑)zcgj_expectedmonetaryfund 其中:上月预计收承兑 zcgj_lastplanbankamt - //本月预计收款(其他) zcgj_otheramount 其中:上月预计收其他 zcgj_lastotheramt - //本月预计应收余额 zcgj_expectedreceivableba 上月预计应收余额 zcgj_lastplanarbalance - //本月计划产值 zcgj_plannedoutputvalue 上月计划产值 zcgj_lastplanval - //本月预计收款(合计) zcgj_expectedtotalcollect 上月预计收款 zcgj_lastplanrec - - - DynamicObjectCollection infundlastentry = this.getModel().getDataEntity().getDynamicObjectCollection("zcgj_infundlastentry"); - infundlastentry.clear(); - if(lastplancashamtall.compareTo(BigDecimal.ZERO)!=0 - ||lastplanbankamtall.compareTo(BigDecimal.ZERO)!=0 - ||lastotheramtall.compareTo(BigDecimal.ZERO)!=0 - ||lastplanarbalanceall.compareTo(BigDecimal.ZERO)!=0 - ||lastplanvalall.compareTo(BigDecimal.ZERO)!=0 - ||lastplanrec.compareTo(BigDecimal.ZERO)!=0){ - DynamicObject infundlastentryObject = infundlastentry.addNew(); - infundlastentryObject.set("zcgj_lastplancashamt",lastplancashamtall); - infundlastentryObject.set("zcgj_lastplanbankamt",lastplanbankamtall); - infundlastentryObject.set("zcgj_lastotheramt",lastotheramtall); - infundlastentryObject.set("zcgj_lastplanarbalance",lastplanarbalanceall); - infundlastentryObject.set("zcgj_lastplanval",lastplanvalall); - infundlastentryObject.set("zcgj_lastplanrec",lastplanrec); - this.getView().updateView("zcgj_infundlastentry"); - } } } + //流入流出项目 end + //上月实际流入 start + if(periodObj!=null || periodParam !=null){ + DynamicObject period = null; + if(periodParam!=null){ + period = periodParam; + }else{ + period = (DynamicObject) periodObj; + } + //上月实际流入 + DynamicObjectCollection infundlastentry = this.getModel().getDataEntity().getDynamicObjectCollection("zcgj_infundlastentry"); + infundlastentry.clear(); + this.getView().updateView("zcgj_infundlastentry"); + + int year = Integer.parseInt(period.getString("number").substring(0, 4)); + int month = Integer.parseInt(period.getString("number").substring(4, 6)); + if (month == 1) { + year -= 1; + month = 12; + } else { + month -= 1; + } + String prevPeriod = String.format("%04d%02d", year, month);//获取上月会计期间 + + List searchFilterListPrev = new ArrayList<>(); + searchFilterListPrev.add(new QFilter("zcgj_org", QCP.equals, org.getLong("id"))); + searchFilterListPrev.add( new QFilter("zcgj_period.number", QCP.equals, prevPeriod)); + searchFilterListPrev.add( new QFilter("billstatus", QCP.equals, "C")); + + DynamicObject[] loadprev = BusinessDataServiceHelper.load("zcgj_ec_fundingplanapply", + "zcgj_period," + + "zcgj_infundproject_entry.zcgj_in_fundproject,zcgj_infundproject_entry.zcgj_in_custom,zcgj_infundproject_entry.zcgj_iinitialreceivable " + + ",zcgj_infundproject_entry.zcgj_expectedmonetarycap,zcgj_infundproject_entry.zcgj_expectedmonetaryfund,zcgj_infundproject_entry.zcgj_otheramount,zcgj_infundproject_entry.zcgj_expectedreceivableba,zcgj_infundproject_entry.zcgj_plannedoutputvalue,zcgj_infundproject_entry.zcgj_expectedtotalcollect "+ + ",zcgj_outfundproject_entry.zcgj_out_fundproject,zcgj_outfundproject_entry.zcgj_out_supplier,zcgj_outfundproject_entry.zcgj_openingpayable" + + ",createtime", + searchFilterListPrev.toArray(new QFilter[]{}), "createtime desc"); + + //本月计划产值 + BigDecimal lastplancashamtall = BigDecimal.ZERO; + BigDecimal lastplanbankamtall = BigDecimal.ZERO; + BigDecimal lastotheramtall = BigDecimal.ZERO; + BigDecimal lastplanarbalanceall = BigDecimal.ZERO; + BigDecimal lastplanvalall = BigDecimal.ZERO; + BigDecimal lastplanrec = BigDecimal.ZERO; + + if (loadprev != null && loadprev.length > 0) { + DynamicObject data = loadprev[0]; + DynamicObjectCollection indataentry = data.getDynamicObjectCollection("zcgj_infundproject_entry"); + + for (DynamicObject dynamicObject : indataentry) { + lastplancashamtall = lastplancashamtall.add(dynamicObject.getBigDecimal("zcgj_expectedmonetarycap")); + lastplanbankamtall= lastplanbankamtall.add(dynamicObject.getBigDecimal("zcgj_expectedmonetaryfund")); + lastotheramtall = lastotheramtall.add(dynamicObject.getBigDecimal("zcgj_otheramount")); + lastplanarbalanceall = lastplanarbalanceall.add(dynamicObject.getBigDecimal("zcgj_expectedreceivableba")); + lastplanvalall = lastplanvalall.add(dynamicObject.getBigDecimal("zcgj_plannedoutputvalue")); + lastplanrec = lastplanrec.add(dynamicObject.getBigDecimal("zcgj_expectedtotalcollect")); + } + + } + + //本月预计收款(货币) zcgj_expectedmonetarycap 其中:上月预计收货币资金 zcgj_lastplancashamt + //本月预计收款(承兑)zcgj_expectedmonetaryfund 其中:上月预计收承兑 zcgj_lastplanbankamt + //本月预计收款(其他) zcgj_otheramount 其中:上月预计收其他 zcgj_lastotheramt + //本月预计应收余额 zcgj_expectedreceivableba 上月预计应收余额 zcgj_lastplanarbalance + //本月计划产值 zcgj_plannedoutputvalue 上月计划产值 zcgj_lastplanval + //本月预计收款(合计) zcgj_expectedtotalcollect 上月预计收款 zcgj_lastplanrec + if(lastplancashamtall.compareTo(BigDecimal.ZERO)!=0 + ||lastplanbankamtall.compareTo(BigDecimal.ZERO)!=0 + ||lastotheramtall.compareTo(BigDecimal.ZERO)!=0 + ||lastplanarbalanceall.compareTo(BigDecimal.ZERO)!=0 + ||lastplanvalall.compareTo(BigDecimal.ZERO)!=0 + ||lastplanrec.compareTo(BigDecimal.ZERO)!=0){ + DynamicObject infundlastentryObject = infundlastentry.addNew(); + infundlastentryObject.set("zcgj_lastplancashamt",lastplancashamtall); + infundlastentryObject.set("zcgj_lastplanbankamt",lastplanbankamtall); + infundlastentryObject.set("zcgj_lastotheramt",lastotheramtall); + infundlastentryObject.set("zcgj_lastplanarbalance",lastplanarbalanceall); + infundlastentryObject.set("zcgj_lastplanval",lastplanvalall); + infundlastentryObject.set("zcgj_lastplanrec",lastplanrec); + this.getView().updateView("zcgj_infundlastentry"); + } + } + //上月实际流入 end + + + //公司资金往来 start BigDecimal cashamtAll = BigDecimal.ZERO; BigDecimal bankamtAll = BigDecimal.ZERO; BigDecimal businessamtAll = BigDecimal.ZERO; @@ -257,6 +328,7 @@ public class FundingplanapplyPlugin extends AbstractBillPlugIn implements Plugin List searchFilterListzj = new ArrayList<>(); searchFilterListzj.add(new QFilter("zcgj_org", QCP.equals, org.getLong("id"))); searchFilterListzj.add( new QFilter("zcgj_period.number", QCP.equals, period.getString("number"))); + searchFilterListzj.add( new QFilter("billstatus", QCP.equals, "C")); DynamicObject[] loadzj = BusinessDataServiceHelper.load("zcgj_ec_fundingplanapply", "zcgj_period,zcgj_fundplyentry.zcgj_funditem," + "zcgj_fundplyentry.zcgj_cashamt,zcgj_fundplyentry.zcgj_bankamt " + @@ -317,6 +389,7 @@ public class FundingplanapplyPlugin extends AbstractBillPlugIn implements Plugin this.getView().setEnable(false, 3, "zcgj_cashamt","zcgj_bankamt","zcgj_businessamt","zcgj_supplyamt","zcgj_otheramt","zcgj_totalamt"); this.getView().setEnable(false, 7, "zcgj_cashamt","zcgj_bankamt","zcgj_businessamt","zcgj_supplyamt","zcgj_otheramt","zcgj_totalamt"); + //公司资金往来 end } @Override