提交人:陈绍鑫

日期:2025/7/19 17:00
内容:银行账号历史数据修复按钮
This commit is contained in:
陈绍鑫 2025-07-21 14:23:37 +08:00
parent 3162c8d934
commit 582c19fd76
1 changed files with 145 additions and 0 deletions

View File

@ -0,0 +1,145 @@
package shkd.sys.sys.plugin.list;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.entity.datamodel.ListSelectedRow;
import kd.bos.entity.datamodel.ListSelectedRowCollection;
import kd.bos.form.control.events.ItemClickEvent;
import kd.bos.form.events.BeforeDoOperationEventArgs;
import kd.bos.list.BillList;
import kd.bos.list.plugin.AbstractListPlugin;
import kd.bos.logging.Log;
import kd.bos.logging.LogFactory;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.operation.SaveServiceHelper;
import kd.bos.util.CollectionUtils;
import kd.bos.util.StringUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.EventObject;
import java.util.List;
public class AccountbankListPlugin extends AbstractListPlugin {
private static final Log logger = LogFactory.getLog(AccountbankListPlugin.class);
@Override
public void registerListener(EventObject e) {
super.registerListener(e);
}
@Override
public void itemClick(ItemClickEvent evt) {
super.itemClick(evt);
String itemKey = evt.getItemKey();
if ("shkd_lishiref".equals(itemKey)){
// 获取勾选的单据ID
BillList billList = (BillList)this.getControl("billlistap");
ListSelectedRowCollection selectedRows = billList.getSelectedRows();
List<Long> setIds = new ArrayList<>();
if (CollectionUtils.isNotEmpty(selectedRows)) {
if (selectedRows.size()>1000){
this.getView().showSuccessNotification("选择数据不能超过1000行");
return;
}
for (ListSelectedRow selectedRow : selectedRows) {
setIds.add(toLong(selectedRow.getPrimaryKeyValue()));
}
}else {
this.getView().showSuccessNotification("请选择数据");
return;
}
for (Long setId : setIds) {
DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(setId, "bd_accountbanks");
try {
String uniformsocialcreditcode = dynamicObject.getString("openorg.uniformsocialcreditcode");//信用代码
String finorgtype = dynamicObject.getString("finorgtype");//金融机构类别
DynamicObject bank_org = dynamicObject.getDynamicObject("bank.org");//开户行
String bank_number = dynamicObject.getString("bank.number");//开户行
String bank_name = dynamicObject.getString("bank.name");//开户行
String bank_bd_country_name = dynamicObject.getString("bank.country.name");//开户行
String bank_parent_name = dynamicObject.getString("bank.parent.name");//开户行
String acctstyle = dynamicObject.getString("acctstyle");//账户类型
String acctproperty_name = dynamicObject.getString("acctproperty.name");//账户用途
Date shkd_direct_time1 = dynamicObject.getDate("shkd_direct_time1");//开通银企直联时间
boolean issetbankinterface = dynamicObject.getBoolean("issetbankinterface");//开通银企直联时间
dynamicObject.set("shkd_openunitcode",uniformsocialcreditcode);//开户单位编码
if ("3".equals(finorgtype)&&bank_org!=null){
dynamicObject.set("shkd_subcompany","T01");//是否为内部单位账户
}else {
dynamicObject.set("shkd_subcompany","T00");//是否为内部单位账户
}
dynamicObject.set("shkd_bankcodenumber",bank_number);//开户机构联行号
dynamicObject.set("shkd_country",bank_bd_country_name);//开户银行所在国所在地区
if ("0".equals(finorgtype)){
dynamicObject.set("shkd_bank_head_office",bank_parent_name);//开户银行总行
}else {
dynamicObject.set("shkd_bank_head_office",bank_name);//开户银行总行
}
switch (acctstyle) {
case "basic"://基本存款账户
dynamicObject.set("shkd_accounttype","D01");//账户用途
break;
case "normal"://一般存款账户
if ("保证金".equals(acctproperty_name)){
dynamicObject.set("shkd_accounttype","D06");//账户用途
}else {
dynamicObject.set("shkd_accounttype","D02");//账户用途
}
break;
case "temp"://临时存款账户
dynamicObject.set("shkd_accounttype","D04");//账户用途
break;
case "spcl"://专用存款账户
dynamicObject.set("shkd_accounttype","D03");//账户用途
break;
case "fgn_curr"://经常项目外汇账户
dynamicObject.set("shkd_accounttype","D05");//账户用途
break;
case "fng_fin"://资本项目外汇账户
dynamicObject.set("shkd_accounttype","D05");//账户用途
break;
case "non-settlement"://非结算账户
dynamicObject.set("shkd_accounttype","D05");//账户用途
break;
default:
dynamicObject.set("shkd_accounttype","D05");//账户用途
break;
}
if (issetbankinterface&&shkd_direct_time1==null){
dynamicObject.set("shkd_direct_time1",dynamicObject.getDate("opendate"));//账户用途
}
SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
} catch (Exception e) {
logger.info("银行账号"+dynamicObject.getString("bankaccountnumber")+"赋值失败原因:"+e.getMessage());
}
}
}
}
@Override
public void beforeDoOperation(BeforeDoOperationEventArgs args) {
super.beforeDoOperation(args);
}
public static Long toLong(Object o) {
if (o == null) {
return 0L;
}
String s = String.valueOf(o);
if (StringUtils.isEmpty(s)) {
return 0L;
}
try {
int index = s.indexOf(".");
index = index > -1 ? index : s.length();
return Long.parseLong(s.substring(0, index));
} catch (NumberFormatException e) {
logger.error("数字转化错误", e);
}
return 0L;
}
}