From 9a2de4f7459239cf1f15a71f92eb18f3a5e430ae Mon Sep 17 00:00:00 2001 From: root Date: Wed, 24 Dec 2025 16:07:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BA=BA=EF=BC=9A=E9=82=B9?= =?UTF-8?q?=E6=B1=9F=E6=B6=9B=20=E6=8F=90=E4=BA=A4=E6=97=B6=E9=97=B4?= =?UTF-8?q?=EF=BC=9A2025=E5=B9=B412=E6=9C=8824=E6=97=A5=20=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E5=86=85=E5=AE=B9=EF=BC=9A=E7=B1=BB=E5=87=AD=E8=AF=81?= =?UTF-8?q?=E3=80=81=E5=85=A8=E9=A2=9D=E4=B8=8B=E6=8B=A8=EF=BC=88=E5=8D=B3?= =?UTF-8?q?=E6=97=B6=E4=BD=99=E9=A2=9D=E6=8F=92=E4=BB=B6=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sys/plugin/Exp/FullAllocationService.java | 66 +++++++++++ .../sys/plugin/conver/LpzConverPlugin.java | 111 ++++++++++++++++++ 2 files changed, 177 insertions(+) create mode 100644 sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/Exp/FullAllocationService.java create mode 100644 sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/conver/LpzConverPlugin.java diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/Exp/FullAllocationService.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/Exp/FullAllocationService.java new file mode 100644 index 0000000..9fc1344 --- /dev/null +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/Exp/FullAllocationService.java @@ -0,0 +1,66 @@ +package shkd.sys.sys.plugin.Exp; + + +import kd.bos.algo.DataSet; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.logging.Log; +import kd.bos.logging.LogFactory; +import kd.bos.orm.ORM; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.QueryServiceHelper; +import kd.sdk.tmc.fca.extpoint.IBalanceService; + +import java.math.BigDecimal; + +public class FullAllocationService implements IBalanceService { + private static final Log logger = LogFactory.getLog(FullAllocationService.class); + /** + * @param transferType 划拨类型 UP上划,DOWN 下拨 + * @param strategyId 划拨策略ID 2234204585302439936 + * @param accountId 账户ID + * @param currencyId 币别ID + * @return 即时余额 + */ + @Override + public BigDecimal getBalanceAmount(String transferType, Long strategyId, Long accountId, Long currencyId) { + BigDecimal valibalance = null; + logger.info( "进入 FullAllocationService → getBalanceAmount 调用参数 → transferType: {}, strategyId: {}, accountId: {}, currencyId: {}", transferType, strategyId, accountId, currencyId); + //母账户:115871233966 + //子账户:118587472156 + if ("DOWN".equals(transferType)) { + DynamicObject amAccountbanks = BusinessDataServiceHelper.loadSingle(accountId, "am_accountbank"); + // 申请公司 + DynamicObject company = amAccountbanks.getDynamicObject("company"); + DynamicObject[] ifmInneraccts = BusinessDataServiceHelper.load("ifm_inneracct", "id,number,company,relationacc", new QFilter("company", QCP.equals, company.getLong("id")).toArray()); + + for (DynamicObject ifmInneracct : ifmInneraccts) { + DynamicObjectCollection relationaccs = ifmInneracct.getDynamicObjectCollection("relationacc"); + if (relationaccs.isEmpty()) { + continue; + } + long relationaccId = relationaccs.get(0).getLong("fbasedataid_Id");//银行账户 + if (relationaccId == accountId) { + String number = ifmInneracct.getString("number"); + DynamicObject[] bdAccountbanks = BusinessDataServiceHelper.load("am_accountbank", "id,bankaccountnumber", new QFilter("bankaccountnumber", QCP.equals, number).toArray()); + long bdAccountbankId = 0; + if (bdAccountbanks.length > 0) { + // 获取内部账户在银行账户里面的id + bdAccountbankId = bdAccountbanks[0].getLong("id"); + } + + DataSet dataSet = QueryServiceHelper.queryDataSet(this.getClass().getName(), "ifm_accountbalance", + "accountbank,valibalance,modifytime,company", new QFilter[]{(new QFilter("accountbank", QCP.equals, bdAccountbankId))}, + null).orderBy(new String[]{"modifytime desc"}); + DynamicObjectCollection dataRows = ORM.create().toPlainDynamicObjectCollection(dataSet); + + DynamicObject[] ifmAccountbalances = BusinessDataServiceHelper.load("ifm_accountbalance", "id,accountbank,valibalance", new QFilter("accountbank", QCP.equals, relationaccId).toArray()); + valibalance = dataRows.get(0).getBigDecimal("valibalance"); + } + } + } + return valibalance; + } +} diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/conver/LpzConverPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/conver/LpzConverPlugin.java new file mode 100644 index 0000000..209eaf8 --- /dev/null +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/conver/LpzConverPlugin.java @@ -0,0 +1,111 @@ +package shkd.sys.sys.plugin.conver; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.entity.BillEntityType; +import kd.bos.entity.ExtendedDataEntity; +import kd.bos.entity.botp.plugin.AbstractConvertPlugIn; +import kd.bos.entity.botp.plugin.args.AfterConvertEventArgs; +import kd.bos.entity.botp.plugin.args.AfterFieldMappingEventArgs; +import kd.bos.entity.botp.runtime.ConvertConst; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.sdk.plugin.Plugin; + + +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; + +/** + * 单据转换插件 + * 类凭证 + */ +public class LpzConverPlugin extends AbstractConvertPlugIn implements Plugin { + @Override + public void afterFieldMapping(AfterFieldMappingEventArgs e) { + super.afterFieldMapping(e); + BillEntityType srcMainType = this.getSrcMainType();//源单标识 + String srcMainTypeName = srcMainType.getName();//源单名称 + BillEntityType tgtMainType = this.getTgtMainType();//目标单标识 + String tgtMainTypeName = tgtMainType.getName();//目标单名称 + ExtendedDataEntity[] extendedDataEntities = e.getTargetExtDataEntitySet().FindByEntityKey(tgtMainTypeName);//获取目标单数据 + for (ExtendedDataEntity extendedDataEntity : extendedDataEntities) { + DynamicObject tarData = extendedDataEntity.getDataEntity();//目标单数据 + List srcRows = (List) extendedDataEntity.getValue(ConvertConst.ConvExtDataKey_SourceRows);//获取源单数据 + DynamicObject srcRow = srcRows.get(0); + Object srcId = e.getFldProperties().get("id").getValue(srcRow);//获取源单id + DynamicObject souData = BusinessDataServiceHelper.loadSingle(srcId, srcMainTypeName);//查询源单数据 + Date bookdate = tarData.getDate("bookdate"); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM"); + String yearMonth = sdf.format(bookdate); + DynamicObject[] bdPeriods = BusinessDataServiceHelper.load("bd_period", "id,number", new QFilter("number", QCP.equals, yearMonth).toArray()); + if (bdPeriods != null && bdPeriods.length > 0) { + // 记账期间 字段赋值 + tarData.set("period", bdPeriods[0]); + } + DynamicObjectCollection tallyentryentity = tarData.getDynamicObjectCollection("tallyentryentity"); + DynamicObject dynamicObject = tallyentryentity.get(0); + // 摘要 字段赋值 + DynamicObject accountbank = souData.getDynamicObject("accountbank"); + String accountbankName = accountbank.getString("name"); + dynamicObject.set("tallyabstract", accountbankName); + // 科目 字段赋值 + DynamicObject bank = accountbank.getDynamicObject("bank"); + String bank_number = bank.getString("number"); + DynamicObject[] bd_finorginfo = BusinessDataServiceHelper.load("bd_finorginfo", "id,number,bank_cate", new QFilter("number", QCP.equals, bank_number).toArray()); + DynamicObject bank_cate = bd_finorginfo[0].getDynamicObject("bank_cate"); + String bankName = bank_cate.getString("name");//银行类别 + DynamicObject[] bdAccountviews1 = BusinessDataServiceHelper.load("bd_accountview", "id,number,name", new QFilter("number", QCP.like, "1002.%") + .and("name", QCP.equals, bankName).toArray()); + dynamicObject.set("account", bdAccountviews1[0]); + // 核算维度 字段赋值 + String yhhswd = "银行账户:" + accountbank.getString("bankaccountnumber"); + dynamicObject.set("shkd_hswd", yhhswd); + // 币种 + DynamicObject cuscurrency = dynamicObject.getDynamicObject("cuscurrency"); + // 汇率 + Object exrate = dynamicObject.get("exrate"); + // 汇率日期 + dynamicObject.set("ratedate", bookdate); + + + DynamicObject addNew = tallyentryentity.addNew(); + // 摘要 字段赋值 + DynamicObjectCollection entrys = souData.getDynamicObjectCollection("entrys"); + DynamicObject entry = entrys.get(0); + DynamicObject subacctCompany = entry.getDynamicObject("subacct_company"); + String subacctCompanyName = subacctCompany.getString("name"); + addNew.set("tallyabstract", subacctCompanyName); + // 科目 字段赋值 + DynamicObject[] bdAccountviews2 = BusinessDataServiceHelper.load("bd_accountview", "id,number,name", new QFilter("number", QCP.equals, "2241.02.01.01").toArray()); + addNew.set("account", bdAccountviews2[0]); + // 核算维度 字段赋值 + String gyshswd = "供应商:" + subacctCompanyName; + addNew.set("shkd_hswd", gyshswd); + // 原币贷方金额 字段赋值 + BigDecimal transamt = entry.getBigDecimal("transamt"); + addNew.set("loanamount", transamt); + // 贷方金额 字段赋值 + addNew.set("loanstanamount", transamt); + // 原币金额 字段赋值 + addNew.set("oriamount", transamt); + // 主表项目 字段赋值 + DynamicObject[] glCashflowitems = BusinessDataServiceHelper.load("gl_cashflowitem", "id.number,name", new QFilter("number", QCP.equals, "CI01.01.03").toArray()); + addNew.set("maincfitem", glCashflowitems[0]); + // 主表核算维度 字段赋值 + String zbhswd = "组织机构:" + subacctCompanyName; + addNew.set("shkd_zbhswd", zbhswd); + // 主表项目金额 字段赋值 + addNew.set("maincfamount", transamt); + // 币种 字段赋值 + addNew.set("cuscurrency", cuscurrency); + // 汇率 字段赋值 + addNew.set("exrate", exrate); + // 汇率日期 字段赋值 + addNew.set("ratedate", bookdate); + } + } +} \ No newline at end of file