提交内容:账户管理优化功能代码

时间:2025-08-22 16:16
提交人:邹江涛
This commit is contained in:
zoujiangtao 2025-08-22 16:17:25 +08:00
parent a0dc516be4
commit 7a5e390d20
4 changed files with 308 additions and 0 deletions

View File

@ -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<String, String> bankVersionMap = loginListResult.getLoginMap();
// logger.info("获取银行版本列表成功:{}", bankVersionMap);
// ArrayList<ComboItem> 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<Long> 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;
}
}
}
}
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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());
}
}
}
}