提交人:刘森澳

日期:2025/4/27 15:14
内容:1、债券发行、债券发行计划过滤F7逻辑补充;
This commit is contained in:
16358 2025-04-27 17:14:14 +08:00
parent f4c909ef15
commit 739498083f
4 changed files with 185 additions and 52 deletions

View File

@ -5,21 +5,19 @@ import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.dataentity.metadata.IDataEntityProperty;
import kd.bos.entity.datamodel.IDataModel;
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
import kd.bos.entity.property.AmountProp;
import kd.bos.entity.property.BasedataProp;
import kd.bos.entity.property.DecimalProp;
import kd.bos.form.field.AmountEdit;
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.form.field.DecimalEdit;
import kd.bos.form.plugin.AbstractFormPlugin;
import kd.bos.list.ListShowParameter;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.org.OrgUnitServiceHelper;
import kd.bos.servicehelper.org.OrgViewType;
import kd.fi.bcm.common.util.CollectionUtil;
import kd.sdk.plugin.Plugin;
import java.util.ArrayList;
import java.util.Collections;
import java.util.EventObject;
import java.util.List;
@ -33,10 +31,20 @@ public class BdimbondBuildEntryPlugin extends AbstractFormPlugin implements Plug
@Override
public void afterBindData(EventObject e) {
this.getView().setVisible(false, "shkd_bondissue","shkd_bankcontract");
DynamicObject org = (DynamicObject)this.getModel().getValue("org");
if (org != null) {
buildEntrys(org);
}
//前端去掉星号前端不一定会校验
DecimalEdit attch= (DecimalEdit)this.getControl("e_underwriteratio");
AmountEdit attch2= (AmountEdit)this.getControl("e_underwriteamount");
attch.setMustInput(false);
attch2.setMustInput(false);
//后端去掉校验
DecimalProp attchproperty = (DecimalProp) attch.getProperty();
AmountProp attchproperty2 = (AmountProp) attch2.getProperty();
attchproperty.setMustInput(false);
attchproperty2.setMustInput(false);
// DynamicObject org = (DynamicObject)this.getModel().getValue("org");
// if (org != null) {
// buildEntrys(org);
// }
}
@Override

View File

@ -2,18 +2,16 @@ package shkd.sys.sys.plugin.tmc;
import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.dataentity.metadata.IDataEntityProperty;
import kd.bos.form.field.OrgEdit;
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.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.org.OrgUnitServiceHelper;
import kd.bos.servicehelper.org.OrgViewType;
import kd.fi.bcm.common.util.CollectionUtil;
import kd.sdk.plugin.Plugin;
import java.util.ArrayList;
@ -22,42 +20,58 @@ import java.util.EventObject;
import java.util.List;
/**
* 单据界面插件
* 债券发行/发行计划单据 债券发行银行借款合同分录 选择F7时过滤
*/
public class BondSelectEntryOrgPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener {
public void registerListener(EventObject e) {
super.registerListener(e);
//债券发行编码
RefBillEdit edit = this.getView().getControl("shkd_entrybillno");
edit.addBeforeF7SelectListener(this);
//借款合同单据编码
RefBillEdit edit2 = this.getView().getControl("shkd_entrycontractnum");
edit2.addBeforeF7SelectListener(this);
//借款人
OrgEdit edit3 = this.getView().getControl("shkd_enryborrower");
edit3.addBeforeF7SelectListener(this);
}
@Override
public void beforeF7Select(BeforeF7SelectEvent evt) {
ListShowParameter formShowParameter = (ListShowParameter) evt.getFormShowParameter();
String formId = this.getView().getFormShowParameter().getFormId();
// String formId = this.getView().getFormShowParameter().getFormId();
//获取当前选择的债券注册额度
DynamicObject org;
DynamicObject org= (DynamicObject)this.getModel().getValue("org");
if(org == null){
this.getView().showTipNotification("请先选择发行人。");
evt.setCancel(true);
return;
}
Long orgId = (Long)org.get("id");
IDataEntityProperty property = evt.getProperty();
String name = property.getName();
List<QFilter> dataFilter = new ArrayList<>();
if("shkd_entrycontractnum".equals(name) || "shkd_entrybillno".equals(name)){
org= (DynamicObject)this.getModel().getValue("org");
if(org == null) return;
Long orgId = (Long)org.get("id");
ArrayList<String> filterArr = new ArrayList<>();
if("shkd_entrycontractnum".equals(name)){
List<Long> allSubordinateOrgs = OrgUnitServiceHelper.getAllSubordinateOrgs(OrgViewType.BDControl, Collections.singletonList(orgId), true);
QFilter accountQFilter = new QFilter("org.id", QCP.in, allSubordinateOrgs);
dataFilter.add(accountQFilter);
}else{
QFilter accountQFilter = new QFilter("org.id", QCP.equals, orgId);
dataFilter.add(accountQFilter);
if("shkd_entrycontractnum".equals(name)){
DynamicObject shkdEnryborrower = (DynamicObject)this.getView().getModel().getValue("shkd_enryborrower");
if(shkdEnryborrower == null){
this.getView().showTipNotification("请先选择借款人。");
evt.setCancel(true);
return;
}
QFilter accountQFilter = new QFilter("org.id", QCP.equals, shkdEnryborrower.getPkValue());
dataFilter.add(accountQFilter);
formShowParameter.getListFilterParameter().getQFilters().addAll(dataFilter);
}
if("shkd_entrybillno".equals(name)){
QFilter accountQFilter = new QFilter("org.id", QCP.equals, orgId);
QFilter accountQFilter2 = new QFilter("loantype", QCP.equals, "bond");
dataFilter.add(accountQFilter.and(accountQFilter2));
}
if("shkd_enryborrower".equals(name)){
List<Long> allSubordinateOrgs = OrgUnitServiceHelper.getAllSubordinateOrgs(OrgViewType.BDControl, Collections.singletonList(orgId), true);
QFilter accountQFilter = new QFilter("id", QCP.in, allSubordinateOrgs);
dataFilter.add(accountQFilter);
}
}
}

View File

@ -1,28 +1,52 @@
package shkd.sys.sys.plugin.tmc;
import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
import kd.bos.entity.property.BasedataProp;
import kd.bos.form.field.BasedataEdit;
import kd.bos.form.control.Control;
import kd.bos.form.control.events.ItemClickEvent;
import kd.bos.form.events.AfterDoOperationEventArgs;
import kd.bos.form.operate.EntryGridOperate;
import kd.bos.form.operate.formop.NewEntry;
import kd.bos.form.plugin.AbstractFormPlugin;
import kd.sdk.plugin.Plugin;
import java.util.EventObject;
/**
* 设置 债券发行计划界面 发行人账号非必填
* 单据界面插件
*/
public class IssuerNotMandatoryPlugin extends AbstractFormPlugin implements Plugin {
public class IssuerNotMandatoryPlugin extends AbstractBillPlugIn implements Plugin {
@Override
public void propertyChanged(PropertyChangedArgs e) {
String fieldKey = e.getProperty().getName();
if ("issyncdraw".equals(fieldKey) || "amount".equals(fieldKey)){
//前端去掉星号前端不一定会校验
BasedataEdit attch= (BasedataEdit)this.getControl("accountbank");
attch.setMustInput(false);
//后端去掉校验
BasedataProp attchproperty = (BasedataProp) attch.getProperty();
attchproperty.setMustInput(false);
// //前端去掉星号前端不一定会校验
// BasedataEdit attch= (BasedataEdit)this.getControl("accountbank");
// attch.setMustInput(false);
// //后端去掉校验
// BasedataProp attchproperty = (BasedataProp) attch.getProperty();
// attchproperty.setMustInput(false);
imputAccountBank();
}
@Override
public void afterDoOperation(AfterDoOperationEventArgs arg) {
if(arg.getSource() instanceof EntryGridOperate) {
EntryGridOperate source = (EntryGridOperate) arg.getSource();
String key = source.getOperateKey();
if ("deleteentryacnumber".equals(key)){
imputAccountBank();
}
}
}
private void imputAccountBank() {
DynamicObjectCollection shkdIssueraccountEntry = this.getView().getModel().getEntryEntity("shkd_issueraccount_entry");
if (shkdIssueraccountEntry == null || shkdIssueraccountEntry.isEmpty()) return;
DynamicObject tempOrg = shkdIssueraccountEntry.get(0);
Long orgID = (Long)tempOrg.get("shkd_accountbank.id");
this.getView().getModel().setValue("accountbank", orgID);
}
}

View File

@ -5,7 +5,10 @@ import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.dataentity.entity.OrmLocaleValue;
import kd.bos.dataentity.metadata.IDataEntityProperty;
import kd.bos.dataentity.resource.ResManager;
import kd.bos.entity.MainEntityType;
import kd.bos.form.IFormView;
import kd.bos.form.control.Control;
import kd.bos.form.field.BasedataEdit;
import kd.bos.form.field.events.BeforeF7SelectEvent;
import kd.bos.form.field.events.BeforeF7SelectListener;
@ -19,7 +22,7 @@ import kd.sdk.plugin.Plugin;
import java.util.*;
/**
* 债券发行/债券发行计划 关联注册额度实现承销商过滤
* 债券发行/债券发行计划 关联注册额度实现注册额度过滤/评级只能选择注册额度中关联的中介机构招标遴选里面的中标单位过滤/同时实现承销商过滤
* 单据界面插件
*/
public class LoancontractF7Plugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener {
@ -28,33 +31,48 @@ public class LoancontractF7Plugin extends AbstractBillPlugIn implements Plugin,
public void registerListener(EventObject e) {
super.registerListener(e);
IFormView view = this.getView();
//监听债券F7数据选择
BasedataEdit affiliation = view.getControl("e_underwriter");
affiliation.addBeforeF7SelectListener(this);
//监听承销商F7数据选择
BasedataEdit e_underwriter = view.getControl("e_underwriter");
e_underwriter.addBeforeF7SelectListener(this);
//监听占用注册额度F7数据选择
BasedataEdit shkd_occupybondlimit;
shkd_occupybondlimit = view.getControl("shkd_occupybondlimit");
if(shkd_occupybondlimit == null){
shkd_occupybondlimit = view.getControl("occupybondlimit");
}
shkd_occupybondlimit.addBeforeF7SelectListener(this);
//监听评级机构F7数据选择
BasedataEdit ratingagency = view.getControl("ratingagency");
ratingagency.addBeforeF7SelectListener(this);
}
@Override
public void beforeF7Select(BeforeF7SelectEvent evt) {
ListShowParameter formShowParameter = (ListShowParameter) evt.getFormShowParameter();
String formId = this.getView().getFormShowParameter().getFormId();
//获取当前选择的债券注册额度
DynamicObject shkd_bondlimit;
IDataEntityProperty property = evt.getProperty();
String name = property.getName();
List<QFilter> dataFilter = new ArrayList<>();
if("e_underwriter".equals(name)){
//shkd_cfm_loancontrac_ext2 : 债券发行计划 其他 : 债券发行
if("cfm_loancontract_bo".equals(formId)){
shkd_bondlimit= (DynamicObject)this.getModel().getValue("syncoccupybondlimit");
if(shkd_bondlimit == null) return;
}else{
//债券发行occupybondlimit 债券发行计划shkd_occupybondlimit
try {
shkd_bondlimit= (DynamicObject)this.getModel().getValue("occupybondlimit");
if(shkd_bondlimit == null) return;
}catch(Exception e){
shkd_bondlimit= (DynamicObject)this.getModel().getValue("shkd_occupybondlimit");
if(shkd_bondlimit == null){
evt.setCancel(true);
this.getView().showTipNotification("请先选择占用注册额度。");
return;
}
}
DynamicObject bdim_bond_limit = BusinessDataServiceHelper.loadSingle(shkd_bondlimit.get("id"), "bdim_bond_limit");
DynamicObjectCollection shkd_underwriterentry = bdim_bond_limit.getDynamicObjectCollection("shkd_underwriterentry");
if (CollectionUtil.isEmpty(shkd_underwriterentry)) {
evt.setCancel(true);
this.getView().showTipNotification("当前占用注册额度没有承销商数据。");
return;
}
ArrayList<String> filterArr = new ArrayList<>();
@ -65,6 +83,75 @@ public class LoancontractF7Plugin extends AbstractBillPlugIn implements Plugin,
QFilter accountQFilter = new QFilter("number", QCP.in, filterArr);
dataFilter.add(accountQFilter);
}
if("shkd_occupybondlimit".equals(name) || "occupybondlimit".equals(name)){
//债券类型
DynamicObject finproduct = (DynamicObject)this.getModel().getValue("finproduct");
if(finproduct == null){
this.getView().showTipNotification("请先选择债券类型。");
evt.setCancel(true);
return;
}
Long finproductID = (Long)finproduct.get("id");
//发行日期
Date startdate = (Date)this.getModel().getValue("startdate");
if(startdate == null){
this.getView().showTipNotification("请先选择发行日期。");
evt.setCancel(true);
return;
}
//结束日期
Date enddate = (Date)this.getModel().getValue("enddate");
if(enddate == null){
this.getView().showTipNotification("请先选择结束日期。");
evt.setCancel(true);
return;
}
//发行人
DynamicObject org = (DynamicObject)this.getModel().getValue("org");
if(org == null){
this.getView().showTipNotification("请先选择发行人。");
evt.setCancel(true);
return;
}
Long orgId = (Long)org.getPkValue();
//债券类型
QFilter accountQFilter = new QFilter("finproducts.fbasedataid", QCP.equals, finproductID);
dataFilter.add(accountQFilter);
//发行人
QFilter accountQFilter2 = new QFilter("org.id", QCP.equals, orgId);
dataFilter.add(accountQFilter2);
//发行日期与结束日期要在注册额度的生效日期和失效日期之间
QFilter accountQFilter3 = new QFilter("expirydate", QCP.large_equals,enddate).and(new QFilter("effectdate", QCP.less_equals,startdate));
dataFilter.add(accountQFilter3);
}
if("ratingagency".equals(name)){
//注册额度
DynamicObject occupybondlimit = (DynamicObject)this.getModel().getValue("shkd_occupybondlimit");
if(occupybondlimit == null){
this.getView().showTipNotification("请先选择占用注册额度。");
evt.setCancel(true);
return;
}
Long occupybondlimitId = (Long) occupybondlimit.getPkValue();
//找到注册额度中的招标遴选ID
DynamicObject intermediaryselectID = BusinessDataServiceHelper.loadSingle(occupybondlimitId,"bdim_bond_limit", "shkd_intermediaryselect");
QFilter qFilter = new QFilter("billno", QCP.equals, intermediaryselectID.getString("shkd_intermediaryselect"));
DynamicObject intermediaryselect = BusinessDataServiceHelper.loadSingle("bdim_intermediaryselect",qFilter.toArray());
//招标遴选 中标单位分录
DynamicObjectCollection winningbidderentry = intermediaryselect.getDynamicObjectCollection("winningbidderentry");
ArrayList<String> dataFilterArr = new ArrayList<>();
winningbidderentry.forEach((temp)->{
dataFilterArr.add(temp.getString("e_midorgname.number"));
});
//将set转换成数组
QFilter accountQFilter = new QFilter("number", QCP.in, dataFilterArr);
dataFilter.add(accountQFilter);
}
//formShowParameter.getListFilterParameter().setQFilters(dataFilter);
formShowParameter.getListFilterParameter().getQFilters().addAll(dataFilter);
}