源单下查计息单、计息单上查源单表单插件

This commit is contained in:
XiangLingFeng 2025-12-16 13:13:53 +08:00
parent d837302e62
commit ef4a83f199
2 changed files with 137 additions and 0 deletions

View File

@ -0,0 +1,68 @@
package kdsz.zyf25.tmc.cfm.plugin.form.cdm;
import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.bill.BillShowParameter;
import kd.bos.bill.OperationStatus;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.form.ShowType;
import kd.bos.form.control.events.ItemClickEvent;
import kd.bos.list.ListFilterParameter;
import kd.bos.list.ListShowParameter;
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.EventObject;
import java.util.HashSet;
/**
* 计息单上查源单触发生成计息的单据
*/
public class InterestAccrualLookUpBillPlugin extends AbstractBillPlugIn implements Plugin {
@Override
public void registerListener(EventObject e) {
super.registerListener(e);
this.addItemClickListeners("kdsz_lookup");
}
@Override
public void itemClick(ItemClickEvent evt) {
super.itemClick(evt);
String itemKey = evt.getItemKey();
if ("kdsz_lookup".equals(itemKey)){
String srcEntity = (String) this.getModel().getValue("kdsz_srcentity");//源单标识
Object srcBillNo = this.getModel().getValue("kdsz_srcbillno");//源单单号
QFilter filter = new QFilter("billno", QCP.equals, srcBillNo);
DynamicObjectCollection feeBills = QueryServiceHelper.query(srcEntity,
"entry.srcbillid srcbillid", new QFilter[]{filter});
if (feeBills == null || feeBills.size() == 0){
this.getView().showMessage("暂无源单,可能已被删除");
return;
}
HashSet<Long> srcBillIds = new HashSet<>();
for (DynamicObject feeBill : feeBills) {
srcBillIds.add(feeBill.getLong("srcbillid"));
}
if (srcBillIds.size() == 1){
Long[] srcBillArray = srcBillIds.toArray(new Long[0]);
//打开单据
BillShowParameter billShowParameter = new BillShowParameter();
billShowParameter.setFormId("cdm_payablebill");
billShowParameter.setPkId(srcBillArray[0]);//单据内码
billShowParameter.getOpenStyle().setShowType(ShowType.Modal);
billShowParameter.setStatus(OperationStatus.EDIT);
this.getView().showForm(billShowParameter);
} else {
//打开列表
ListShowParameter listShowParameter = new ListShowParameter();
listShowParameter.setFormId("cdm_payablebill");
ListFilterParameter listFilterParameter = new ListFilterParameter();
listFilterParameter.setFilter(new QFilter("id",QCP.in,srcBillIds));
listShowParameter.setListFilterParameter(listFilterParameter);
this.getView().showForm(listShowParameter);
}
}
}
}

View File

@ -0,0 +1,69 @@
package kdsz.zyf25.tmc.cfm.plugin.form.cdm;
import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.bill.BillShowParameter;
import kd.bos.bill.OperationStatus;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.form.ShowType;
import kd.bos.form.control.events.ItemClickEvent;
import kd.bos.list.ListFilterParameter;
import kd.bos.list.ListShowParameter;
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.EventObject;
import java.util.HashSet;
/**
* 源单下查计息单
*/
public class LookDownInterestAccrualBillPlugin extends AbstractBillPlugIn implements Plugin {
@Override
public void registerListener(EventObject e) {
super.registerListener(e);
this.addItemClickListeners("kdsz_lookdownjx");
}
@Override
public void itemClick(ItemClickEvent evt) {
super.itemClick(evt);
String itemKey = evt.getItemKey();
if ("kdsz_lookdownjx".equals(itemKey)){
Object id = this.getModel().getValue("id");
DynamicObjectCollection feeBills = QueryServiceHelper.query("cfm_feebill", "id",
new QFilter[]{new QFilter("entry.srcbillid", QCP.equals, id)});
if (feeBills == null || feeBills.size() == 0){
this.getView().showMessage("暂无对应下游费用明细,无法联查计息");
return;
}
HashSet<String> feeIds = new HashSet<>();
for (DynamicObject feeBill : feeBills) {
long feeId = feeBill.getLong("id");
feeIds.add(String.valueOf(feeId));
}
if (feeIds.size() == 1){
String[] feeIdArray = feeIds.toArray(new String[0]);
//打开单据
BillShowParameter billShowParameter = new BillShowParameter();
billShowParameter.setFormId("kdsz_interestaccrual");
billShowParameter.setPkId(feeIdArray[0]);//单据内码
billShowParameter.getOpenStyle().setShowType(ShowType.Modal);
billShowParameter.setStatus(OperationStatus.EDIT);
this.getView().showForm(billShowParameter);
}else {
//打开列表
ListShowParameter listShowParameter = new ListShowParameter();
listShowParameter.setFormId("bos_list");
listShowParameter.setBillFormId("kdsz_interestaccrual");
listShowParameter.getOpenStyle().setShowType(ShowType.Modal);
ListFilterParameter listFilterParameter = new ListFilterParameter();
listFilterParameter.setFilter(new QFilter("kdsz_srcbillid",QCP.in,feeIds));
listShowParameter.setListFilterParameter(listFilterParameter);
this.getView().showForm(listShowParameter);
}
}
}
}