资金计划申请调整

This commit is contained in:
zhangzhiguo 2025-11-04 16:17:18 +08:00
parent 66bfff005b
commit 4c9abbe0c6
1 changed files with 146 additions and 73 deletions

View File

@ -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<QFilter> 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<QFilter> 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<QFilter> 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