diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/AccountApplicationBillPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/AccountApplicationBillPlugin.java new file mode 100644 index 0000000..632ed15 --- /dev/null +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/AccountApplicationBillPlugin.java @@ -0,0 +1,144 @@ +package shkd.sys.sys.plugin.form; + +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.form.events.BeforeDoOperationEventArgs; +import kd.bos.form.operate.AbstractOperate; +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 kd.tmc.am.common.errorcode.ErrorCodeUtils; +import kd.tmc.am.common.exception.AmException; + +import java.util.ArrayList; + +/** + * 开户申请单据插件 + */ +public class AccountApplicationBillPlugin extends AbstractBillPlugIn implements Plugin { + private static final Log logger = LogFactory.getLog(AccountApplicationBillPlugin.class); + + @Override + public void propertyChanged(PropertyChangedArgs args) { + super.propertyChanged(args); + + String propName = args.getProperty().getName(); + if ("bank".equals(propName) || "openorg".equals(propName) || "issetbankinterface".equals(propName)) { + + try { + DynamicObject dataEntity = this.getModel().getDataEntity(true); + + boolean issetbankinterface = dataEntity.getBoolean("issetbankinterface"); + if (!issetbankinterface) { + return; + } + + // 开户公司 + DynamicObject openorg = dataEntity.getDynamicObject("openorg"); + // 开户行 + DynamicObject bank = dataEntity.getDynamicObject("bank"); + logger.info("获取开户行信息:{}", bank); + + if (openorg == null || bank == null) { + logger.info("开发的前置条件不满足,无需触发逻辑"); + return; + } + + // 查询银企接口下拉列表赋值情况 +// EBGetLoginListResult loginListResult = BankServiceHelper.getLoginListResult(this.getModel().getDataEntity()); +// Map bankVersionMap = loginListResult.getLoginMap(); +// logger.info("获取银行版本列表成功:{}", bankVersionMap); +// ArrayList bankVersionItems = new ArrayList<>(bankVersionMap.size()); +// bankVersionMap.forEach((key, value) -> +// bankVersionItems.add( +// new ComboItem(new LocaleString(value + " " + key), key) +// ) +// ); + + // 获取开户公司 + Long openorg_id = (Long)openorg.getPkValue(); + logger.info("获取开户公司ID:{}", openorg_id); + + // 银行类型 + DynamicObject bank_cate = bank.getDynamicObject("bank_cate"); + String bank_cate_name = bank_cate.getString("name"); + + DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("shkd_bankorg", + "id,billno,shkd_name,shkd_hforg,shkd_frontendprotype", + new QFilter("billno", QCP.not_equals, "").toArray()); + + // 前置机类型 + String qzjlx = ""; + + for (DynamicObject dynamicObject : dynamicObjects) { + // 获取多选基础资料业务单元(推送组织) + ArrayList orgArray = new ArrayList<>(); + DynamicObjectCollection orgArr = dynamicObject.getDynamicObjectCollection("shkd_hforg"); + for (DynamicObject orgData : orgArr) { + orgArray.add(orgData.getLong("fbasedataid_Id")); + } + + if (orgArray.contains(openorg_id)) { + qzjlx = dynamicObject.getString("shkd_frontendprotype"); + break; + } + } + + String configureAliases = qzjlx + "_" + bank_cate_name; + + logger.info("获取前置机类型_银行类型:{}", configureAliases); + + DynamicObject[] aqap_bank_logins = BusinessDataServiceHelper.load("aqap_bank_login", "id,number,name,alias", new QFilter("alias", QCP.equals, configureAliases).toArray()); + + if (aqap_bank_logins.length > 0) { + DynamicObject aqap_bank_login = aqap_bank_logins[0]; + this.getModel().setValue("bankinterface", aqap_bank_login.getString("number")); + } else { + this.getModel().setValue("bankinterface", ""); + } + + } catch (Exception exception) { + throw new AmException(ErrorCodeUtils.create("errorCode", exception.getMessage())); + } + } + } + + @Override + public void beforeDoOperation(BeforeDoOperationEventArgs args) { + super.beforeDoOperation(args); + AbstractOperate argsSource = (AbstractOperate)args.getSource(); + if("submit".equals(argsSource.getOperateKey())){ + DynamicObject dataEntity = this.getModel().getDataEntity(true); + DynamicObject company = dataEntity.getDynamicObject("company"); + + DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("am_accountbank", "id," + + "company,openorg,bankaccountnumber,shkd_sfjhxh,shkd_nxhrq,shkd_bxfyy,bank", + new QFilter("company", QCP.equals, company.getPkValue()).toArray()); + + + + + if (dynamicObjects != null) { + for (DynamicObject dynamicObject : dynamicObjects) { + DynamicObject bank = dynamicObject.getDynamicObject("bank"); + String name = bank.getString("name"); + if (name.contains("结算中心")) { + continue; + } + Object shkd_sfjhxh = dynamicObject.get("shkd_sfjhxh"); + if (shkd_sfjhxh == null || "".equals(shkd_sfjhxh.toString())) { + args.setCancel(true); + this.getView().showTipNotification("请至【银行账户】补全下方已开立银行账户信息的【是否计划销户】字段"); + args.setCancelMessage("请至【银行账户】补全下方已开立银行账户信息的【是否计划销户】字段"); + break; + } + } + } + } + } +} \ No newline at end of file diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/AccountClosureBillPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/AccountClosureBillPlugin.java new file mode 100644 index 0000000..82ab4d9 --- /dev/null +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/AccountClosureBillPlugin.java @@ -0,0 +1,45 @@ +package shkd.sys.sys.plugin.form; + +import kd.bos.bill.AbstractBillPlugIn; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.entity.datamodel.IBillModel; +import kd.bos.form.FormShowParameter; +import kd.bos.form.ShowType; +import kd.sdk.plugin.Plugin; +import kd.tmc.fbp.common.helper.TmcOrgDataHelper; +import kd.tmc.fbp.common.util.EmptyUtil; + +import java.util.EventObject; + +/** + * 销户申请单据插件 + */ +public class AccountClosureBillPlugin extends AbstractBillPlugIn implements Plugin { + + @Override + public void afterCreateNewData(EventObject e) { + super.afterCreateNewData(e); + } + + @Override + public void afterBindData(EventObject e) { + super.afterBindData(e); + DynamicObject company = (DynamicObject)this.getModel().getValue("company"); + this.showDynamicBill(company); + } + + private void showDynamicBill(DynamicObject company) { + Object id = 0L; + if (company != null) { + id = company.getPkValue(); + } + + FormShowParameter formShowParameter = new FormShowParameter(); + formShowParameter.getOpenStyle().setShowType(ShowType.InContainer); + formShowParameter.getOpenStyle().setTargetKey("shkd_acctbanklistflex"); + formShowParameter.setFormId("am_acctbanklist"); + formShowParameter.setSendToClient(true); + formShowParameter.setCustomParam("companyid", id); + this.getView().showForm(formShowParameter); + } +} \ No newline at end of file diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/ChangeBillPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/ChangeBillPlugin.java new file mode 100644 index 0000000..e030417 --- /dev/null +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/ChangeBillPlugin.java @@ -0,0 +1,41 @@ +package shkd.sys.sys.plugin.form; + +import kd.bos.bill.AbstractBillPlugIn; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.form.FormShowParameter; +import kd.bos.form.ShowType; +import kd.sdk.plugin.Plugin; + +import java.util.EventObject; + +/** + * 变更申请表单插件 + */ +public class ChangeBillPlugin extends AbstractBillPlugIn implements Plugin { + @Override + public void afterCreateNewData(EventObject e) { + super.afterCreateNewData(e); + } + + @Override + public void afterBindData(EventObject e) { + super.afterBindData(e); + DynamicObject company = (DynamicObject)this.getModel().getValue("company"); + this.showDynamicBill(company); + } + + private void showDynamicBill(DynamicObject company) { + Object id = 0L; + if (company != null) { + id = company.getPkValue(); + } + + FormShowParameter formShowParameter = new FormShowParameter(); + formShowParameter.getOpenStyle().setShowType(ShowType.InContainer); + formShowParameter.getOpenStyle().setTargetKey("shkd_acctbanklistflex"); + formShowParameter.setFormId("am_acctbanklist"); + formShowParameter.setSendToClient(true); + formShowParameter.setCustomParam("companyid", id); + this.getView().showForm(formShowParameter); + } +} \ No newline at end of file diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/operation/AccountOpeningProcessOP.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/operation/AccountOpeningProcessOP.java new file mode 100644 index 0000000..4c08bca --- /dev/null +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/operation/AccountOpeningProcessOP.java @@ -0,0 +1,78 @@ +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.args.BeforeOperationArgs; +import kd.sdk.plugin.Plugin; + +/** + * 单据操作插件 + */ +public class AccountOpeningProcessOP extends AbstractOperationServicePlugIn implements Plugin { + @Override + public void beforeExecuteOperationTransaction(BeforeOperationArgs e) { + super.beforeExecuteOperationTransaction(e); + String operationKey = e.getOperationKey(); + if ("savecheck".equals(operationKey)) { + DynamicObject[] dataEntities = e.getDataEntities(); + DynamicObject dataEntity = dataEntities[0]; + // 开通网上银行 + boolean isopenbank = dataEntity.getBoolean("isopenbank"); + // 虚拟账户 + boolean isvirtual = dataEntity.getBoolean("isvirtual"); + + boolean isOperation = false; + StringBuilder cancelMessage = new StringBuilder(); + + // 如果勾选了开通网上银行,需判断除审批金额上限外的所有字段都为必录 + if (isopenbank) { + DynamicObjectCollection netbankgrantentity = dataEntity.getDynamicObjectCollection("netbankgrantentity"); + if (!netbankgrantentity.isEmpty()) { + for (DynamicObject dynamicObject : netbankgrantentity) { + // 操作员 + Object operator = dynamicObject.get("operator"); + // 实物编码 + Object goods = dynamicObject.get("goods"); + if (operator == null || goods == null) { + isOperation = true; + cancelMessage.append("网银信息页签的操作员和实物编码字段必填").append("\n"); + break; + } + } + } else { + isOperation = true; + cancelMessage.append("请填写网银信息页签的网银权限信息").append("\n"); + } + } + + // 如果没有勾选虚拟账户,需判断预留印鉴所有字段都为必填 + if (!isvirtual) { + DynamicObjectCollection entrysignetentity = dataEntity.getDynamicObjectCollection("entrysignetentity"); + + if (!entrysignetentity.isEmpty()) { + for (DynamicObject dynamicObject : entrysignetentity) { + // 印鉴类型 + Object signettype = dynamicObject.get("signettype"); + // 印鉴名称 + Object signetname = dynamicObject.get("signetname"); + // 印鉴保管人 + Object signetkeeper = dynamicObject.get("signetkeeper"); + if (signettype == null || "".equals(signettype.toString()) || signetname == null || "".equals(signetname.toString()) || signetkeeper == null) { + isOperation = true; + cancelMessage.append("预留印鉴页签的印鉴类型、印鉴名称、印鉴保管人字段必填").append("\n"); + break; + } + } + } else { + isOperation = true; + cancelMessage.append("请填写预留印鉴页签的预留印鉴信息").append("\n"); + } + } + if (isOperation) { + e.setCancel(true); + e.setCancelMessage(cancelMessage.toString()); + } + } + } +} \ No newline at end of file