diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/DzywBillPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/DzywBillPlugin.java index cf426a5..c2f08eb 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/DzywBillPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/DzywBillPlugin.java @@ -9,8 +9,13 @@ import kd.bos.orm.query.QFilter; import kd.tmc.cfm.common.helper.CfmBillCommonHelper; import kd.tmc.cfm.formplugin.bill.AbstractMultCateTextF7Plugin; import kd.tmc.fbp.common.enums.BankAcctStatusEnum; +import kd.tmc.fbp.common.enums.CreditorTypeEnum; import kd.tmc.fbp.common.helper.TmcAccountHelper; import kd.tmc.fbp.common.util.EmptyUtil; +import shkd.sys.sys.plugin.form.domain.AddCreditorTypeEnum; + +import java.util.Arrays; +import java.util.List; /** * @Description 抵质押物分录点击债权人弹出对应债权人类型基础资料 @@ -18,6 +23,12 @@ import kd.tmc.fbp.common.util.EmptyUtil; * @Date 2025/10/22 */ public class DzywBillPlugin extends AbstractMultCateTextF7Plugin implements BeforeF7SelectListener { + + @Override + protected String getEntryProp() { + return "entryentity"; + } + @Override protected String getTypePropName() { return "shkd_zqrlx"; @@ -33,6 +44,37 @@ public class DzywBillPlugin extends AbstractMultCateTextF7Plugin implements Befo return "shkd_zqrid"; } + @Override + protected String getTypeOtherValue() { + return AddCreditorTypeEnum.OTHER.getValue(); + } + + @Override + protected String getF7FormId(String type) { + return AddCreditorTypeEnum.getFormIdByValue(type.toLowerCase()); + } + + @Override + protected void addCustomParam(String type, ListShowParameter lsp) { + if (AddCreditorTypeEnum.INNERUNIT.getValue().equals(type)) { + lsp.setCustomParam("orgFuncId", "08"); + } + } + + @Override + protected void addCustomFilter(String type, ListShowParameter lsp) { + List lspQFilter = lsp.getListFilterParameter().getQFilters(); + if (CreditorTypeEnum.BANK.getValue().equals(type)) { + lspQFilter.add(new QFilter("finorgtype.type", "=", "0")); + } else if (CreditorTypeEnum.SETTLECENTER.getValue().equals(type)) { + lspQFilter.add(new QFilter("finorgtype.type", "=", "1")); + } else if (CreditorTypeEnum.FINORG.getValue().equals(type)) { + lspQFilter.add(new QFilter("finorgtype.type", "not in", Arrays.asList("0", "1"))); + } + + lspQFilter.add(new QFilter("enable", "=", "1")); + } + @Override public void beforeF7Select(BeforeF7SelectEvent evt) { switch (evt.getProperty().getName()) { @@ -83,4 +125,5 @@ public class DzywBillPlugin extends AbstractMultCateTextF7Plugin implements Befo long orgId = fundOrg == null ? 0L : Long.parseLong(fundOrg.getPkValue().toString()); return TmcAccountHelper.getAccountBankFilterByOrg(orgId).and("acctstatus", "=", BankAcctStatusEnum.NORMAL.getValue()).and(new QFilter("acctclassify", "!=", "I")); } + } 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 new file mode 100644 index 0000000..c6044fa --- /dev/null +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/FilingApplicationFormPlugin.java @@ -0,0 +1,40 @@ +package shkd.sys.sys.plugin.form; + +import kd.bos.bill.AbstractBillPlugIn; +import kd.bos.dataentity.utils.StringUtils; +import kd.bos.entity.datamodel.events.PropertyChangedArgs; +import kd.bos.logging.Log; +import kd.bos.logging.LogFactory; +import kd.tmc.fbp.common.helper.TermHelper; + +/** + * @FileName FilingApplicationFormPlugin + * @Description 备案申请表单插件 + * @Author csx + * @date 2025-11-05 + **/ +public class FilingApplicationFormPlugin extends AbstractBillPlugIn { + + private static final Log logger = LogFactory.getLog(FilingApplicationFormPlugin.class); + + @Override + public void propertyChanged(PropertyChangedArgs e) { + super.propertyChanged(e); + String name = e.getProperty().getName(); + if ("shkd_qx".equals(name)){ + String oldValue = (String) e.getChangeSet()[0].getOldValue(); + String newValue = (String) e.getChangeSet()[0].getNewValue(); + if (StringUtils.isEmpty(newValue)){ + return; + } + int rowIndex = e.getChangeSet()[0].getRowIndex(); + if (!newValue.equals(oldValue)){ + boolean rightFormat = TermHelper.isRightFormat(this.getModel(), this.getView(), newValue); + if (!rightFormat){ + this.getModel().setValue("shkd_qx",oldValue,rowIndex); + return; + } + } + } + } +} diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/FilingApplicationSelectPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/FilingApplicationSelectPlugin.java new file mode 100644 index 0000000..09e983b --- /dev/null +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/FilingApplicationSelectPlugin.java @@ -0,0 +1,67 @@ +package shkd.sys.sys.plugin.form; + +import kd.bos.bill.AbstractBillPlugIn; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.entity.datamodel.events.PropertyChangedArgs; +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.orm.query.QFilter; + +import java.math.BigDecimal; +import java.util.EventObject; + +/** + * @FileName FilingApplicationSelectPlugin + * @Description 业务单据选择备案申请校验插件 + * @Author csx + * @date 2025-11-05 + **/ +public class FilingApplicationSelectPlugin extends AbstractBillPlugIn implements BeforeF7SelectListener { + + + public void registerListener(EventObject e) { + super.registerListener(e); + BasedataEdit materialEdit = (BasedataEdit) this.getView().getControl("shkd_baed"); + if (materialEdit != null) { + materialEdit.addBeforeF7SelectListener(this); + } + } + + @Override + public void beforeF7Select(BeforeF7SelectEvent beforeF7SelectEvent) { + String name = beforeF7SelectEvent.getProperty().getName(); + if (name.equals("shkd_baed")) { + ListShowParameter showParameter = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter(); + DynamicObject org = (DynamicObject) this.getModel().getValue("org"); + if (org==null){ + this.getView().showTipNotification("请先填写组织信息"); + beforeF7SelectEvent.setCancel(true); + return; + } + QFilter qFilter = new QFilter("entryentity.shkd_rzzt", QFilter.equals, org.getLong("id")); + showParameter.getListFilterParameter().setFilter(qFilter); + } + } + + @Override + public void propertyChanged(PropertyChangedArgs e) { + super.propertyChanged(e); + String name = e.getProperty().getName(); + if ("shkd_baed".equals(name)){ + DynamicObject newValue = (DynamicObject) e.getChangeSet()[0].getNewValue(); + DynamicObject oldValue = (DynamicObject) e.getChangeSet()[0].getOldValue(); + if (newValue==null){ + return; + } + BigDecimal shkd_syed = newValue.getBigDecimal("shkd_syed"); + BigDecimal drawamount = (BigDecimal) this.getModel().getValue("drawamount"); + if (shkd_syed.compareTo(drawamount)<0){ + this.getModel().setValue("shkd_baed",null); + this.getView().showTipNotification("该备案申请剩余额度不总"); + return; + } + } + } +} diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/domain/AddCreditorTypeEnum.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/domain/AddCreditorTypeEnum.java new file mode 100644 index 0000000..2d2c0f8 --- /dev/null +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/domain/AddCreditorTypeEnum.java @@ -0,0 +1,72 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package shkd.sys.sys.plugin.form.domain; + +import kd.tmc.fbp.common.enums.MultiLangEnumBridge; + +import java.util.Arrays; + +public enum AddCreditorTypeEnum { + BANK("bank", "bd_finorginfo", new MultiLangEnumBridge("银行", "CreditorTypeEnum_0", "tmc-fbp-common")), + SETTLECENTER("settlecenter", "bd_finorginfo", new MultiLangEnumBridge("结算中心", "CreditorTypeEnum_5", "tmc-fbp-common")), + FINORG("finorg", "bd_finorginfo", new MultiLangEnumBridge("非银行金融机构", "CreditorTypeEnum_1", "tmc-fbp-common")), + INNERUNIT("innerunit", "bos_org", new MultiLangEnumBridge("内部单位", "CreditorTypeEnum_2", "tmc-fbp-common")), + CUSTOM("custom", "bd_bizpartner", new MultiLangEnumBridge("客商", "CreditorTypeEnum_3", "tmc-fbp-common")), + OTHER("other", "fbd_other", new MultiLangEnumBridge("其他", "CreditorTypeEnum_4", "tmc-fbp-common")), + //拓展 + //市场信息(发行场所) + SCXX("scxx", "tbd_marketinfo", new MultiLangEnumBridge("市场信息", "CreditorTypeEnum_6", "tmc-fbp-common")); + + private String value; + private String formid; + private MultiLangEnumBridge name = null; + + private AddCreditorTypeEnum(String value, String formid, MultiLangEnumBridge name) { + this.value = value; + this.formid = formid; + this.name = name; + } + + public String getFormId() { + return this.formid; + } + + public String getValue() { + return this.value; + } + + public String getName() { + return this.name.loadKDString(); + } + + public static String getName(String value) { + return (String)Arrays.stream(values()).filter((d) -> { + return d.value.equals(value); + }).map(AddCreditorTypeEnum::getName).findFirst().orElse(""); + } + + public static String getFormIdByValue(String value) { + return (String)Arrays.stream(values()).filter((d) -> { + return d.value.equals(value); + }).map(AddCreditorTypeEnum::getFormId).findFirst().orElse((String) null); + } + + public static boolean isInnerUnit(String value) { + return INNERUNIT.value.equals(value); + } + + public static boolean isSettleCenter(String value) { + return SETTLECENTER.value.equals(value); + } + + public static boolean isFinorg(String value) { + return FINORG.value.equals(value); + } + + public static boolean isCustom(String value) { + return CUSTOM.value.equals(value); + } +} 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 new file mode 100644 index 0000000..8861731 --- /dev/null +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/operation/SubmitOccupyFilingApplication.java @@ -0,0 +1,115 @@ +package shkd.sys.sys.plugin.operation; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.entity.plugin.AbstractOperationServicePlugIn; +import kd.bos.entity.plugin.PreparePropertysEventArgs; +import kd.bos.entity.plugin.args.AfterOperationArgs; +import kd.bos.entity.plugin.args.BeforeOperationArgs; +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.bos.servicehelper.operation.SaveServiceHelper; +import shkd.sys.sys.plugin.form.FilingApplicationFormPlugin; + +import java.math.BigDecimal; +import java.util.*; + +/** + * @FileName SubmitOccupyFilingApplication + * @Description 提交后触发更新备案申请的占用 + * @Author csx + * @date 2025-11-05 + **/ +public class SubmitOccupyFilingApplication extends AbstractOperationServicePlugIn { + + private static final Log logger = LogFactory.getLog(FilingApplicationFormPlugin.class); + + public void onPreparePropertys(PreparePropertysEventArgs e) { + super.onPreparePropertys(e); + e.getFieldKeys().add("billno"); + e.getFieldKeys().add("shkd_baed"); + e.getFieldKeys().add("drawamount"); + e.getFieldKeys().add("billstatus"); + } + + @Override + public void beforeExecuteOperationTransaction(BeforeOperationArgs e) { + super.beforeExecuteOperationTransaction(e); + + } + + @Override + public void afterExecuteOperationTransaction(AfterOperationArgs e) { + super.afterExecuteOperationTransaction(e); + logger.info("同步开始"); + DynamicObject[] dataEntities = e.getDataEntities(); + for (DynamicObject dataEntity : dataEntities) { + DynamicObject shkd_baed = dataEntity.getDynamicObject("shkd_baed"); + if (shkd_baed!=null){ + UpdateFilingApplicationData(shkd_baed); + } + } +// SaveServiceHelper.save(dataEntities); + } + public void UpdateFilingApplicationData(DynamicObject shkd_baed){ + 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()); + for (DynamicObject cfm_loanbill_bond : cfm_loanbill_bonds) { + Map zqfxmap=new HashMap<>(); + zqfxmap.put("shkd_djbh",cfm_loanbill_bond.getString("billno")); + zqfxmap.put("shkd_djlx","债券发行"); + zqfxmap.put("shkd_zyje",cfm_loanbill_bond.getBigDecimal("drawamount")); + zqfxlist.add(zqfxmap); + } + // 使用Stream计算shkd_zyje的合计 + BigDecimal zqfxtotal = zqfxlist.stream() // 将zqfxlist转为Stream + .map(map -> (BigDecimal) map.get("shkd_zyje")) // 提取shkd_zyje的值 + .filter(Objects::nonNull) // 过滤null值 + .reduce(BigDecimal.ZERO, BigDecimal::add); // 求和,初始值为BigDecimal.ZERO + + //银行提款处理 + QFilter yhtkclqFilter = qFilter.and(new QFilter("shkd_baed", QCP.equals, shkd_baed.getLong("id"))); + List> yhtkcllist = new ArrayList<>(); + DynamicObject[] cfm_loanbills = BusinessDataServiceHelper.load("cfm_loanbill", "id,billno,drawamount", yhtkclqFilter.toArray()); + for (DynamicObject cfm_loanbill : cfm_loanbills) { + Map zqfxmap=new HashMap<>(); + zqfxmap.put("shkd_djbh",cfm_loanbill.getString("billno")); + zqfxmap.put("shkd_djlx","银行提款处理"); + zqfxmap.put("shkd_zyje",cfm_loanbill.getBigDecimal("drawamount")); + yhtkcllist.add(zqfxmap); + } + // 使用Stream计算shkd_zyje的合计 + BigDecimal yhtkcltotal = yhtkcllist.stream() // 将zqfxlist转为Stream + .map(map -> (BigDecimal) map.get("shkd_zyje")) // 提取shkd_zyje的值 + .filter(Objects::nonNull) // 过滤null值 + .reduce(BigDecimal.ZERO, BigDecimal::add); // 求和,初始值为BigDecimal.ZERO + BigDecimal total = yhtkcltotal.add(zqfxtotal); + DynamicObject shkd_filingapplication = BusinessDataServiceHelper.loadSingle(shkd_baed.getPkValue(), "shkd_filingapplication"); + shkd_filingapplication.set("shkd_zyed",yhtkcltotal.add(zqfxtotal)); + BigDecimal shkd_zed = shkd_filingapplication.getBigDecimal("shkd_zed"); + shkd_filingapplication.set("shkd_zyed",shkd_zed.subtract(total)); + DynamicObjectCollection shkd_zyxx = shkd_filingapplication.getDynamicObjectCollection("shkd_zyxx");//占用信息 + shkd_zyxx.clear(); + + for (Map stringObjectMap : yhtkcllist) { + DynamicObject dynamicObject = shkd_zyxx.addNew(); + dynamicObject.set("shkd_djbh",stringObjectMap.get("shkd_djbh")); + dynamicObject.set("shkd_djlx",stringObjectMap.get("shkd_djlx")); + dynamicObject.set("shkd_zyje",stringObjectMap.get("shkd_zyje")); + } + for (Map stringObjectMap : zqfxlist) { + DynamicObject dynamicObject = shkd_zyxx.addNew(); + dynamicObject.set("shkd_djbh",stringObjectMap.get("shkd_djbh")); + dynamicObject.set("shkd_djlx",stringObjectMap.get("shkd_djlx")); + dynamicObject.set("shkd_zyje",stringObjectMap.get("shkd_zyje")); + } + + SaveServiceHelper.update(shkd_filingapplication); + } +}