diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/list/AccountbankListPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/list/AccountbankListPlugin.java new file mode 100644 index 0000000..b514678 --- /dev/null +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/list/AccountbankListPlugin.java @@ -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 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; + } +}