diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/FkclBillPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/FkclBillPlugin.java new file mode 100644 index 0000000..2e3c535 --- /dev/null +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/FkclBillPlugin.java @@ -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); + } + } +} \ No newline at end of file diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/NbzhglBillPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/NbzhglBillPlugin.java new file mode 100644 index 0000000..818fe8e --- /dev/null +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/NbzhglBillPlugin.java @@ -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 numbers) { + if (numbers == null || numbers.isEmpty()) { + return "01"; + } + + // 转换为整数并排序 + List 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); + } +} \ No newline at end of file