From 8823b58060c573dbdba195ea6432e88299da5b97 Mon Sep 17 00:00:00 2001 From: csx <1981897232@qq.com> Date: Wed, 12 Nov 2025 15:47:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BA=BA=EF=BC=9A=E9=99=88?= =?UTF-8?q?=E7=BB=8D=E9=91=AB=20=E6=97=A5=E6=9C=9F=EF=BC=9A2025/11/12=2015?= =?UTF-8?q?=EF=BC=9A30=20=E5=86=85=E5=AE=B9:=E5=A4=87=E6=A1=88=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form/FilingApplicationFormPlugin.java | 47 +++++++++++++- .../SubmitOccupyFilingApplication.java | 61 ++++++++++++++++--- 2 files changed, 95 insertions(+), 13 deletions(-) diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/FilingApplicationFormPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/FilingApplicationFormPlugin.java index 4c28514..e4a65c5 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/FilingApplicationFormPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/FilingApplicationFormPlugin.java @@ -2,13 +2,24 @@ package shkd.sys.sys.plugin.form; import kd.bos.bill.AbstractBillPlugIn; import kd.bos.context.RequestContext; +import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.utils.StringUtils; import kd.bos.entity.datamodel.events.PropertyChangedArgs; +import kd.bos.form.field.BasedataEdit; +import kd.bos.form.field.RefBillEdit; +import kd.bos.form.field.events.BeforeF7SelectEvent; +import kd.bos.form.field.events.BeforeF7SelectListener; +import kd.bos.list.ListShowParameter; import kd.bos.logging.Log; import kd.bos.logging.LogFactory; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.org.OrgUnitServiceHelper; +import kd.bos.servicehelper.org.OrgViewType; import kd.tmc.fbp.common.helper.TermHelper; +import java.util.ArrayList; import java.util.EventObject; +import java.util.List; /** * @FileName FilingApplicationFormPlugin @@ -16,17 +27,26 @@ import java.util.EventObject; * @Author csx * @date 2025-11-05 **/ -public class FilingApplicationFormPlugin extends AbstractBillPlugIn { +public class FilingApplicationFormPlugin extends AbstractBillPlugIn implements BeforeF7SelectListener { private static final Log logger = LogFactory.getLog(FilingApplicationFormPlugin.class); + @Override + public void registerListener(EventObject e) { + super.registerListener(e); + BasedataEdit basedataEdit = (BasedataEdit) this.getView().getControl("shkd_rzzt"); + if (basedataEdit != null) { + basedataEdit.addBeforeF7SelectListener(this); + } + } + @Override public void afterCreateNewData(EventObject e) { super.afterCreateNewData(e); //设置默认值 //通过插件获取当前切换选择的组织 - Long id = RequestContext.get().getOrgId(); - this.getModel().setValue("shkd_ejgs",id); +// Long id = RequestContext.get().getOrgId(); +// this.getModel().setValue("shkd_ejgs",id); } @Override @@ -49,4 +69,25 @@ public class FilingApplicationFormPlugin extends AbstractBillPlugIn { } } } + + @Override + public void beforeF7Select(BeforeF7SelectEvent evt) { + String name = evt.getProperty().getName(); + if ("shkd_rzzt".equals(name)){ + DynamicObject shkd_ejgs = (DynamicObject) this.getModel().getValue("shkd_ejgs"); + if (shkd_ejgs==null){ + this.getView().showTipNotification("请先填写二级公司"); + evt.setCancel(true); + return; + } + //获取该组织的全部下级业务单元 + Long id = shkd_ejgs.getLong("id");//业务单元id + List orgIds = new ArrayList<>(1); + orgIds.add(id); + List allSubordinateOrgs = OrgUnitServiceHelper.getAllSubordinateOrgs(OrgViewType.OrgUnit, orgIds, false);//不包括自己 + ListShowParameter showParameter = (ListShowParameter) evt.getFormShowParameter(); + QFilter qFilter = new QFilter("id", QFilter.in, allSubordinateOrgs); + showParameter.getListFilterParameter().setFilter(qFilter); + } + } } diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/operation/SubmitOccupyFilingApplication.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/operation/SubmitOccupyFilingApplication.java index 3c78426..3ba3e5b 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/operation/SubmitOccupyFilingApplication.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/operation/SubmitOccupyFilingApplication.java @@ -18,6 +18,7 @@ import shkd.sys.sys.plugin.form.FilingApplicationFormPlugin; import java.math.BigDecimal; import java.util.*; +import java.util.stream.Collectors; /** * @FileName SubmitOccupyFilingApplication @@ -58,14 +59,13 @@ public class SubmitOccupyFilingApplication extends AbstractOperationServicePlugI logger.info("同步代码失败"); } } -// SaveServiceHelper.save(dataEntities); } public void UpdateFilingApplicationData(DynamicObject shkd_baed,DynamicObject dataEntity){ QFilter qFilter = new QFilter("billstatus", QCP.in, Arrays.asList("B", "C"));//提交,审核状态 - //债券发行 + //提款处理(银行提款处理,债券发行) QFilter zqfxqFilter = qFilter.and(new QFilter("shkd_baed", QCP.equals, shkd_baed.getLong("id"))); List> zqfxlist = new ArrayList<>(); - DynamicObject[] cfm_loanbill_bonds = BusinessDataServiceHelper.load("cfm_loanbill_bond", "id,billno,drawamount", zqfxqFilter.toArray()); + DynamicObject[] cfm_loanbill_bonds = BusinessDataServiceHelper.load("cfm_loanbill_bond", "id,billno,org.id,drawamount", zqfxqFilter.toArray()); for (DynamicObject cfm_loanbill_bond : cfm_loanbill_bonds) { Map zqfxmap=new HashMap<>(); zqfxmap.put("shkd_djbh",cfm_loanbill_bond.getString("billno")); @@ -78,26 +78,56 @@ public class SubmitOccupyFilingApplication extends AbstractOperationServicePlugI zqfxmap.put("shkd_djlx","提款处理"); } zqfxmap.put("shkd_zyje",cfm_loanbill_bond.getBigDecimal("drawamount")); + zqfxmap.put("shkd_org",cfm_loanbill_bond.getLong("org.id")); zqfxlist.add(zqfxmap); } + + //融资租赁fl_leasecontractbill + List> rzzllist = new ArrayList<>(); + DynamicObject[] fl_leasecontractbills = BusinessDataServiceHelper.load("fl_leasecontractbill", "id,billno,org.id,amount", zqfxqFilter.toArray()); + for (DynamicObject fl_leasecontractbill : fl_leasecontractbills) { + Map zqfxmap=new HashMap<>(); + zqfxmap.put("shkd_djbh",fl_leasecontractbill.getString("billno")); + zqfxmap.put("shkd_djlx","融资租赁"); + zqfxmap.put("shkd_zyje",fl_leasecontractbill.getBigDecimal("amount")); + zqfxmap.put("shkd_org",fl_leasecontractbill.getLong("org.id")); + rzzllist.add(zqfxmap); + } + //合并 + List> hebinList=hebinList(zqfxlist,rzzllist); // 使用Stream计算shkd_zyje的合计 - BigDecimal zqfxtotal = zqfxlist.stream() // 将zqfxlist转为Stream + BigDecimal hebintotal = hebinList.stream() // 将zqfxlist转为Stream .map(map -> (BigDecimal) map.get("shkd_zyje")) // 提取shkd_zyje的值 .filter(Objects::nonNull) // 过滤null值 .reduce(BigDecimal.ZERO, BigDecimal::add); // 求和,初始值为BigDecimal.ZERO - DynamicObject shkd_filingapplication = BusinessDataServiceHelper.loadSingle(shkd_baed.getPkValue(), "shkd_filingapplication"); - shkd_filingapplication.set("shkd_zyed",zqfxtotal); + DynamicObject shkd_filingapplication = BusinessDataServiceHelper.loadSingle(shkd_baed.getPkValue(), "shkd_filingapplication");//备案申请 BigDecimal shkd_zed = shkd_filingapplication.getBigDecimal("shkd_zed"); - if (shkd_zed.subtract(zqfxtotal).compareTo(BigDecimal.ZERO)<0){ + if (shkd_zed.subtract(hebintotal).compareTo(BigDecimal.ZERO)<0){ this.getOperationResult().addErrorInfo(setErrorMessage(dataEntity, dataEntity.getString("billno")+"失败原因:"+"备案申请余额不足")); return; } - shkd_filingapplication.set("shkd_syed",shkd_zed.subtract(zqfxtotal)); + shkd_filingapplication.set("shkd_zyed",hebintotal); + shkd_filingapplication.set("shkd_syed",shkd_zed.subtract(hebintotal)); + + //赋值明细每行对应占用金额 + DynamicObjectCollection entryentity = shkd_filingapplication.getDynamicObjectCollection("entryentity"); + for (DynamicObject entry : entryentity) { + long aLong = entry.getDynamicObject("shkd_rzzt").getLong("id"); + List> result = hebinList.stream() + .filter(map -> aLong==(Long)map.get("shkd_org")) // 根据 shkd_org 字段过滤 + .collect(Collectors.toList()); // 将结果收集到一个新的列表中 + BigDecimal sum=BigDecimal.ZERO; + for (Map stringObjectMap : result) { + sum=sum.add((BigDecimal) stringObjectMap.get("shkd_zyje")); + } + entry.set("shkd_zyamount",sum); + } + DynamicObjectCollection shkd_zyxx = shkd_filingapplication.getDynamicObjectCollection("shkd_zyxx");//占用信息 shkd_zyxx.clear(); - - for (Map stringObjectMap : zqfxlist) { + //构建占用信息 + for (Map stringObjectMap : hebinList) { DynamicObject dynamicObject = shkd_zyxx.addNew(); dynamicObject.set("shkd_djbh",stringObjectMap.get("shkd_djbh")); dynamicObject.set("shkd_djlx",stringObjectMap.get("shkd_djlx")); @@ -107,6 +137,17 @@ public class SubmitOccupyFilingApplication extends AbstractOperationServicePlugI SaveServiceHelper.save(new DynamicObject[]{shkd_filingapplication}); } + + /* + * 合并集合方法 + * */ + private List> hebinList(List> zqfxlist, List> rzzllist) { + // 创建一个新的集合来存储合并后的数据 + List> mergedList = new ArrayList<>(rzzllist); // 将rzzllist的元素拷贝到新集合中 + mergedList.addAll(zqfxlist); // 将zqfxlist的元素添加到新集合中 + return mergedList; + } + /* * 返回错误信息对象 * */