提交人:邹江涛

提交时间:2026年01月04日
提交内容:主数据列表选中数据推送浪潮
This commit is contained in:
root 2026-01-04 17:32:57 +08:00
parent 8a0f38bac5
commit f969e3a041
3 changed files with 165 additions and 1 deletions

View File

@ -1504,7 +1504,7 @@ public class ApiService {
if (bankCate == null) {
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), "");
} else {
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), bankCate.get("name"));
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), bankCate.getLocaleString("name").getLocaleValue_zh_CN());
}
} else if ("JSFSLB".equals(shkd_djzdms)) {

View File

@ -0,0 +1,163 @@
package shkd.sys.sys.plugin.list;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.datamodel.ListSelectedRow;
import kd.bos.entity.datamodel.ListSelectedRowCollection;
import kd.bos.form.control.events.ItemClickEvent;
import kd.bos.list.BillList;
import kd.bos.list.plugin.AbstractListPlugin;
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 java.util.*;
import static shkd.sys.sys.mservice.ApiService.calculateTheDate;
import static shkd.sys.sys.mservice.ApiService.universalApproach;
/**
* 标准单据列表插件
* 推送浪潮
*/
public class PushLcListPlugin extends AbstractListPlugin implements Plugin {
private static final Log logger = LogFactory.getLog(PushLcListPlugin.class);
@Override
public void itemClick(ItemClickEvent evt) {
super.itemClick(evt);
String itemKey = evt.getItemKey();
//获取列表
BillList list = this.getControl("billlistap");
//获取列表选中的行数据
ListSelectedRowCollection selectedRows = list.getSelectedRows();
if ("pushlc".equals(itemKey)) {
if (selectedRows.isEmpty()) {
this.getView().showTipNotification("请至少选择一条数据");
return;
} else {
Map<String, Object> resultMap = new HashMap<>();
Map<String, Object> headMap = new HashMap<>();
Map<String, Object> bodyMap = new HashMap<>();
List<String> fieldList = new ArrayList<>();
String billMark = null;
List<DynamicObject> bdBebanks = new ArrayList<>();
for (ListSelectedRow selectedRow : selectedRows) {
Object primaryKeyValue = selectedRow.getPrimaryKeyValue();
DynamicObject bdBebank = BusinessDataServiceHelper.loadSingle(primaryKeyValue, "bd_bebank");
bdBebanks.add(bdBebank);
}
String billName = bdBebanks.get(0).getDataEntityType().getName();
switch (billName) {
case "ifm_inneracct"://内部账户管理
billMark = "MDMNBZH";
break;
case "cas_accountcash"://现金账户
billMark = "MDMXZJH";
break;
case "cas_fundflowitem"://资金用途
billMark = "MDMZJYT";
break;
case "bd_finorginfo"://合作金融机构
billMark = "MDMBanks_2";
break;
case "bd_finorgtype"://金融机构类别
billMark = "MDMBankType_2";
break;
case "fpm_membersubject"://计划科目
billMark = "MDMZJJHXM";
break;
case "cdm_billtype"://票据类型
billMark = "MDMPJLX";
break;
case "cfm_loanbill_bond"://债券发行
billMark = "MDMZQMC";
break;
case "bd_settlementtype"://结算方式
billMark = "MDMSettlementWay";
break;
case "am_accountbank"://账户查询
billMark = "MDMBFBANKACCOUNTS";
break;
case "bd_bebank"://行名行号
billMark = "MDMBanks_1";
break;
case "bd_bankcgsetting"://银行类别
billMark = "MDMBankType_1";
break;
case "bd_acctpurpose"://账户用途
billMark = "MDMZHLX";
break;
}
if (billMark == null) {
this.getView().showTipNotification("billMark == null");
} else {
DynamicObject[] apiMapping = BusinessDataServiceHelper.load("shkd_apimapping", "id,billno," +
"shkd_name,shkd_sourcenumber,shkd_domainname,shkd_appkey,shkd_appsecret,shkd_token,shkd_getfield,shkd_url,shkd_bodytype," +
"shkd_sourcebill,shkd_targetsystem,shkd_submiturl,shkd_banktype,shkd_startdate,shkd_orgs,shkd_djlxbm,shkd_tsfs,shkd_cxfw," +
"shkd_jrrzxx,shkd_heade,shkd_heade.shkd_headcsm,shkd_heade.shkd_headzdlx,shkd_heade.shkd_headcsz,shkd_heade.shkd_headmssm," +
"shkd_mapping,shkd_mapping.shkd_jsonzdm,shkd_mapping.shkd_djzdms,shkd_mapping.shkd_mrz,shkd_mapping.shkd_ms",
new QFilter("shkd_djlxbm", QCP.equals, billMark).toArray());
if (apiMapping.length == 0) {
logger.info("未找到符合条件的推送配置shkd_djlxbm = " + billMark);
return;
}
// 记录日志选项
String shkdJrrzxx = apiMapping[0].getString("shkd_jrrzxx");
resultMap.put("logOption", shkdJrrzxx);
// url
String shkd_url = apiMapping[0].getString("shkd_url");
// 单据类型编码
String djlxbm = apiMapping[0].getString("shkd_djlxbm");
String billTypeCode;
if (djlxbm.contains("_")) {
String[] split = djlxbm.split("_");
billTypeCode = split[0];
} else {
billTypeCode = djlxbm;
}
DynamicObjectCollection shkd_heade = apiMapping[0].getDynamicObjectCollection("shkd_heade");
for (DynamicObject dynamicObject : shkd_heade) {
headMap.put(dynamicObject.getString("shkd_headcsm"), dynamicObject.getString("shkd_headcsz"));
}
// 映射字段单据体
DynamicObjectCollection shkd_mapping = apiMapping[0].getDynamicObjectCollection("shkd_mapping");
switch (billMark) {
case "MDMBankType_1":// 银行类别 推送可用推送浪潮时间为空修改时间大于推送浪潮时间数据)
case "MDMSettlementWay":// 结算方式
case "MDMPJLX":// 票据类型
case "MDMZJJHXM":// 资金计划项目
case "MDMBankType_2"://金融机构类别
case "MDMBanks_2":// 合作金融机构
case "MDMZJYT":// 资金用途
case "MDMXZJH":// 现金账户
case "MDMZHLX":// 账户用途
case "MDMBanks_1":// 银行 推送启用和不疑似过期推送浪潮时间为空修改时间大于推送浪潮时间数据)
case "MDMBFBANKACCOUNTS":// 银行账户 (账户状态正常推送浪潮时间为空修改时间大于推送浪潮时间数据)
case "MDMNBZH":// 内部账户
case "MDMZQMC":// 债券信息
for (DynamicObject billObject : bdBebanks) {
universalApproach(resultMap, headMap, bodyMap, fieldList, shkd_mapping, billObject, shkd_url, billTypeCode, apiMapping[0]);
}
this.getView().showTipNotification("已推送,请至对接第三方系统记录日志查询推送结果");
break;
}
}
}
}
}
}

View File

@ -95,6 +95,7 @@ public class PushLcTaskPlugin extends AbstractTask implements Plugin {
case "MDMXJZH":// 现金账户
case "MDMJRCPLX":// 金融产品类型
case "MDMBanks_1":// 银行 推送启用和不疑似过期推送浪潮时间为空修改时间大于推送浪潮时间数据)
case "MDMZHLX":// 账户用途
if ("初始推送".equals(shkdTsfs)) {
sourceBills = BusinessDataServiceHelper.load(sourceBill, getfield, new QFilter("enable", QCP.equals, "1")
.and("shkd_pushlcdatetime", QCP.is_null, true).toArray());