提交内容:计划科目过滤、内部账户带出银行类别序号、名称自动生成
时间:2025-11-24 11:00 提交人:邹江涛
This commit is contained in:
parent
b37bbe126d
commit
fe18fc0500
|
|
@ -0,0 +1,66 @@
|
||||||
|
package shkd.sys.sys.plugin.form;
|
||||||
|
|
||||||
|
import kd.bos.bill.AbstractBillPlugIn;
|
||||||
|
import kd.bos.dataentity.entity.DynamicObject;
|
||||||
|
import kd.bos.dataentity.utils.StringUtils;
|
||||||
|
import kd.bos.form.field.BasedataEdit;
|
||||||
|
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.QCP;
|
||||||
|
import kd.bos.orm.query.QFilter;
|
||||||
|
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||||
|
import kd.sdk.plugin.Plugin;
|
||||||
|
|
||||||
|
import java.util.EventObject;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 付款处理表单插件
|
||||||
|
* 计划科目过滤
|
||||||
|
*/
|
||||||
|
public class FkclBillPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener {
|
||||||
|
private static final Log logger = LogFactory.getLog(FkclBillPlugin.class);
|
||||||
|
@Override
|
||||||
|
public void registerListener(EventObject e) {
|
||||||
|
super.registerListener(e);
|
||||||
|
// 侦听-基础资料选择按钮
|
||||||
|
BasedataEdit shkd_jhkm = this.getView().getControl("shkd_jhkm");
|
||||||
|
shkd_jhkm.addBeforeF7SelectListener(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void beforeF7Select(BeforeF7SelectEvent beforeF7SelectEvent) {
|
||||||
|
// 获取点击的基础资料字段按钮的基础资料标识
|
||||||
|
String propertyName = beforeF7SelectEvent.getProperty().getName();
|
||||||
|
// 都是这样获取对象,然后通过此对象设置过滤条件
|
||||||
|
ListShowParameter formShowParameter = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter();
|
||||||
|
// 判断点击的按钮是否是我们想要过滤的基础资料
|
||||||
|
if (StringUtils.equals("shkd_jhkm", propertyName)) {
|
||||||
|
logger.info("点击基础资料按钮:{}", propertyName);
|
||||||
|
DynamicObject org = (DynamicObject) this.getModel().getValue("org");
|
||||||
|
String org_name = org.getString("name");
|
||||||
|
logger.info("组织名称:{}", org_name);
|
||||||
|
QFilter qFilter1 = null;
|
||||||
|
if ("四川能源发展集团有限责任公司".equals(org_name)) {
|
||||||
|
DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("fpm_bodysysmanage", "id,number", new QFilter("number", QCP.equals, "SYS-008").toArray());
|
||||||
|
if (dynamicObjects != null && dynamicObjects.length > 0) {
|
||||||
|
DynamicObject company = dynamicObjects[0];
|
||||||
|
logger.info("体系:{}", company);
|
||||||
|
qFilter1 = new QFilter("bodysystem", QCP.equals, company.getPkValue());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("fpm_bodysysmanage", "id,number", new QFilter("number", QCP.equals, "SYS-009").toArray());
|
||||||
|
if (dynamicObjects != null && dynamicObjects.length > 0) {
|
||||||
|
DynamicObject company = dynamicObjects[0];
|
||||||
|
logger.info("体系:{}", company);
|
||||||
|
qFilter1 = new QFilter("bodysystem", QCP.equals, company.getPkValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 获取列表的过滤条件,然后再赋值过滤条件
|
||||||
|
formShowParameter.getListFilterParameter().setFilter(qFilter1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,99 @@
|
||||||
|
package shkd.sys.sys.plugin.form;
|
||||||
|
|
||||||
|
import kd.bos.dataentity.entity.DynamicObject;
|
||||||
|
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||||
|
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
|
||||||
|
import kd.bos.form.plugin.AbstractFormPlugin;
|
||||||
|
import kd.bos.logging.Log;
|
||||||
|
import kd.bos.logging.LogFactory;
|
||||||
|
import kd.bos.orm.query.QCP;
|
||||||
|
import kd.bos.orm.query.QFilter;
|
||||||
|
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||||
|
import kd.sdk.plugin.Plugin;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 内部账户带出银行类别序号、名称自动生成
|
||||||
|
*/
|
||||||
|
public class NbzhglBillPlugin extends AbstractFormPlugin implements Plugin {
|
||||||
|
private static final Log logger = LogFactory.getLog(NbzhglBillPlugin.class);
|
||||||
|
@Override
|
||||||
|
public void propertyChanged(PropertyChangedArgs e) {
|
||||||
|
super.propertyChanged(e);
|
||||||
|
String propName = e.getProperty().getName();
|
||||||
|
Object newValue = e.getChangeSet()[0].getNewValue();
|
||||||
|
logger.info("内部账户 → 内部账户管理 → 关联账户:" + newValue);
|
||||||
|
if (propName.equals("relationacc") && newValue != null){
|
||||||
|
DynamicObject dataEntity = this.getModel().getDataEntity(true);
|
||||||
|
|
||||||
|
DynamicObject company = dataEntity.getDynamicObject("company");//申请公司
|
||||||
|
String companyName = company.getString("name");//申请公司名称
|
||||||
|
|
||||||
|
DynamicObjectCollection dynamicObjectCollection = (DynamicObjectCollection) newValue;
|
||||||
|
if (!dynamicObjectCollection.isEmpty()) {
|
||||||
|
logger.info("关联账户:" + dynamicObjectCollection);
|
||||||
|
long relationacc_id = dynamicObjectCollection.get(0).getLong("fbasedataid_Id");//银行账户
|
||||||
|
DynamicObject[] bd_accountbanks = BusinessDataServiceHelper.load("bd_accountbanks", "id,bankaccountnumber,bank", new QFilter("id", QCP.equals, relationacc_id).toArray());
|
||||||
|
String bankaccountnumber = bd_accountbanks[0].getString("bankaccountnumber");//关联账户银行账号
|
||||||
|
|
||||||
|
// 获取银行账号后四位
|
||||||
|
String lastFourDigits = "";
|
||||||
|
if (bankaccountnumber != null && bankaccountnumber.length() >= 4) {
|
||||||
|
lastFourDigits = bankaccountnumber.substring(bankaccountnumber.length() - 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
DynamicObject bank_cate = bd_accountbanks[0].getDynamicObject("bank").getDynamicObject("bank_cate");
|
||||||
|
String bank_cate_name = bank_cate.getString("name");//银行类别
|
||||||
|
DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(bank_cate.getPkValue(), "bd_bankcgsetting");
|
||||||
|
|
||||||
|
this.getModel().setValue("name", companyName + "-" + bank_cate_name + "-" + lastFourDigits);
|
||||||
|
|
||||||
|
Object shkdXuhao = dynamicObject.get("shkd_xuhao");
|
||||||
|
if (shkdXuhao != null) {
|
||||||
|
String xuhaoString = shkdXuhao.toString();
|
||||||
|
this.getModel().setValue("shkd_yhlbxh", xuhaoString);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生成断号补偿流水号
|
||||||
|
* @param numbers 已存在的编号列表
|
||||||
|
* @return 补偿后的流水号,格式为两位数字
|
||||||
|
*/
|
||||||
|
private String generateSequentialNumber(List<String> numbers) {
|
||||||
|
if (numbers == null || numbers.isEmpty()) {
|
||||||
|
return "01";
|
||||||
|
}
|
||||||
|
|
||||||
|
// 转换为整数并排序
|
||||||
|
List<Integer> numberInts = new ArrayList<>();
|
||||||
|
for (String number : numbers) {
|
||||||
|
try {
|
||||||
|
numberInts.add(Integer.parseInt(number));
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
// 忽略无法解析的编号
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (numberInts.isEmpty()) {
|
||||||
|
return "01";
|
||||||
|
}
|
||||||
|
|
||||||
|
// 排序
|
||||||
|
numberInts.sort(null);
|
||||||
|
|
||||||
|
// 查找第一个缺失的编号
|
||||||
|
for (int i = 0; i < numberInts.size(); i++) {
|
||||||
|
if (numberInts.get(i) != (i + 1)) {
|
||||||
|
return String.format("%02d", i + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果没有断号,则返回下一个编号
|
||||||
|
return String.format("%02d", numberInts.size() + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue