parent
d56b525c75
commit
9a2de4f745
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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<DynamicObject> srcRows = (List<DynamicObject>) 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue