提交人:邹江涛

提交时间:2025年12月17日
提交内容:定时推送浪潮系统
This commit is contained in:
root 2025-12-17 16:33:59 +08:00
parent d9215951b7
commit ad832da4f0
1 changed files with 131 additions and 87 deletions

View File

@ -22,6 +22,8 @@ import kd.bos.servicehelper.operation.SaveServiceHelper;
import kd.sdk.plugin.Plugin;
import org.springframework.http.ResponseEntity;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
import static shkd.sys.sys.mservice.ApiService.pushLCMasterData;
@ -45,7 +47,7 @@ public class PushLcTaskPlugin extends AbstractTask implements Plugin {
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_sourcebill,shkd_targetsystem,shkd_submiturl,shkd_banktype,shkd_startdate,shkd_orgs,shkd_djlxbm,shkd_tsfs,shkd_cxfw," +
"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());
@ -54,7 +56,12 @@ public class PushLcTaskPlugin extends AbstractTask implements Plugin {
logger.info("未找到符合条件的推送配置shkd_djlxbm = " + billMark);
return;
}
// 推送方式
String shkdTsfs = apiMapping[0].getString("shkd_tsfs");
// 查询范围N天前
int shkdCxfw = apiMapping[0].getInt("shkd_cxfw");
// 获取具体时间
String calculateTheDate = calculateTheDate(shkdCxfw);
// 推送单据类型
String sourceBill = apiMapping[0].getDynamicObject("shkd_sourcebill").getString("number");
// 推送单据编码
@ -87,100 +94,106 @@ public class PushLcTaskPlugin extends AbstractTask implements Plugin {
Date modifytime;
switch (billMark.toString()) {
case "MDMBankType_1":// 银行类别 推送可用推送浪潮时间为空修改时间大于推送浪潮时间数据)
sourceBills = BusinessDataServiceHelper.load(sourceBill, getfield, new QFilter("enable", QCP.equals, "1")
.and("shkd_pushlcdatetime", QCP.is_null, true).toArray());
for (DynamicObject billObject : sourceBills) {
shkdPushlcdatetime = billObject.getDate("shkd_pushlcdatetime");
modifytime = billObject.getDate("modifytime");
if (shkdPushlcdatetime == null || modifytime.after(shkdPushlcdatetime)) {
case "MDMSettlementWay":// 结算方式
case "MDMPJLX":// 票据类型
case "MDMZJJHXM":// 资金计划项目
case "MDMBankType_2"://金融机构类别
case "MDMBanks_2":// 合作金融机构
case "MDMZJYT":// 资金用途
case "MDMXJZH":// 现金账户
case "MDMJRCPLX":// 金融产品类型
case "MDMBanks_1":// 银行 推送启用和不疑似过期推送浪潮时间为空修改时间大于推送浪潮时间数据)
if ("初始推送".equals(shkdTsfs)) {
sourceBills = BusinessDataServiceHelper.load(sourceBill, getfield, new QFilter("enable", QCP.equals, "1")
.and("shkd_pushlcdatetime", QCP.is_null, true).toArray());
for (DynamicObject billObject : sourceBills) {
universalApproach(resultMap, headMap, bodyMap, fieldList, shkd_mapping, billObject, shkd_url, billTypeCode, apiMapping);
}
}
break;
case "MDMBanks_1":// 银行 推送启用和不疑似过期推送浪潮时间为空修改时间大于推送浪潮时间数据)
sourceBills = BusinessDataServiceHelper.load(sourceBill, getfield, new QFilter("enable", QCP.equals, "1")
.and("isoverdue", QCP.equals, "N")
.and("shkd_pushlcdatetime", QCP.is_null, true).toArray());
for (DynamicObject billObject : sourceBills) {
universalApproach(resultMap, headMap, bodyMap, fieldList, shkd_mapping, billObject, shkd_url, billTypeCode, apiMapping);
if ("新增修改推送".equals(shkdTsfs)) {
//查询客户且修改时间在查询范围内的数据
sourceBills = BusinessDataServiceHelper.load(sourceBill, getfield, new QFilter("modifytime", QCP.large_equals, calculateTheDate).toArray());
for (DynamicObject billObject : sourceBills) {
Object shkdPushlcdatetimeObj = billObject.get("shkd_pushlcdatetime");
String enable = billObject.getString("enable");
if (shkdPushlcdatetimeObj == null && "1".equals(enable)) {
universalApproach(resultMap, headMap, bodyMap, fieldList, shkd_mapping, billObject, shkd_url, billTypeCode, apiMapping);
}
if (shkdPushlcdatetimeObj != null) {
//获取推送浪潮时间
shkdPushlcdatetime = billObject.getDate("shkd_pushlcdatetime");
//获取修改时间
modifytime = billObject.getDate("modifytime");
if (modifytime.after(shkdPushlcdatetime)) {
universalApproach(resultMap, headMap, bodyMap, fieldList, shkd_mapping, billObject, shkd_url, billTypeCode, apiMapping);
}
}
}
}
break;
case "MDMBFBANKACCOUNTS":// 银行账户 (账户状态正常推送浪潮时间为空修改时间大于推送浪潮时间数据)
sourceBills = BusinessDataServiceHelper.load(sourceBill, getfield, new QFilter("acctstatus", QCP.equals, "normal")
.and("shkd_pushlcdatetime", QCP.is_null, true).toArray());
for (DynamicObject billObject : sourceBills) {
universalApproach(resultMap, headMap, bodyMap, fieldList, shkd_mapping, billObject, shkd_url, billTypeCode, apiMapping);
case "MDMNBZH":// 内部账户
if ("初始推送".equals(shkdTsfs)) {
sourceBills = BusinessDataServiceHelper.load(sourceBill, getfield, new QFilter("acctstatus", QCP.equals, "normal")
.and("shkd_pushlcdatetime", QCP.is_null, true).toArray());
for (DynamicObject billObject : sourceBills) {
universalApproach(resultMap, headMap, bodyMap, fieldList, shkd_mapping, billObject, shkd_url, billTypeCode, apiMapping);
}
}
break;
case "MDMSettlementWay":// 结算方式
sourceBills = BusinessDataServiceHelper.load(sourceBill, getfield, new QFilter("enable", QCP.equals, "1")
.and("shkd_pushlcdatetime", QCP.is_null, true).toArray());
for (DynamicObject billObject : sourceBills) {
universalApproach(resultMap, headMap, bodyMap, fieldList, shkd_mapping, billObject, shkd_url, billTypeCode, apiMapping);
if ("新增修改推送".equals(shkdTsfs)) {
sourceBills = BusinessDataServiceHelper.load(sourceBill, getfield, new QFilter("modifytime", QCP.large_equals, calculateTheDate).toArray());
for (DynamicObject billObject : sourceBills) {
Object shkdPushlcdatetimeObj = billObject.get("shkd_pushlcdatetime");
String acctstatus = billObject.getString("acctstatus");
if (shkdPushlcdatetimeObj == null && "normal".equals(acctstatus)) {
universalApproach(resultMap, headMap, bodyMap, fieldList, shkd_mapping, billObject, shkd_url, billTypeCode, apiMapping);
}
if (shkdPushlcdatetimeObj != null) {
//获取推送浪潮时间
shkdPushlcdatetime = billObject.getDate("shkd_pushlcdatetime");
//获取修改时间
modifytime = billObject.getDate("modifytime");
if (modifytime.after(shkdPushlcdatetime)) {
universalApproach(resultMap, headMap, bodyMap, fieldList, shkd_mapping, billObject, shkd_url, billTypeCode, apiMapping);
}
}
}
}
break;
case "MDMZQMC":// 债券信息
sourceBills = BusinessDataServiceHelper.load(sourceBill, getfield, new QFilter("billstatus", QCP.equals, "C")
.and("shkd_pushlcdatetime", QCP.is_null, true).toArray());
for (DynamicObject billObject : sourceBills) {
universalApproach(resultMap, headMap, bodyMap, fieldList, shkd_mapping, billObject, shkd_url, billTypeCode, apiMapping);
if ("初始推送".equals(shkdTsfs)) {
sourceBills = BusinessDataServiceHelper.load(sourceBill, getfield, new QFilter("billstatus", QCP.equals, "C")
.and("shkd_pushlcdatetime", QCP.is_null, true).toArray());
for (DynamicObject billObject : sourceBills) {
universalApproach(resultMap, headMap, bodyMap, fieldList, shkd_mapping, billObject, shkd_url, billTypeCode, apiMapping);
}
}
break;
case "MDMPJLX":// 票据类型
sourceBills = BusinessDataServiceHelper.load(sourceBill, getfield, new QFilter("enable", QCP.equals, "1")
.and("shkd_pushlcdatetime", QCP.is_null, true).toArray());
for (DynamicObject billObject : sourceBills) {
universalApproach(resultMap, headMap, bodyMap, fieldList, shkd_mapping, billObject, shkd_url, billTypeCode, apiMapping);
}
break;
case "MDMZJJHXM":// 资金计划项目
sourceBills = BusinessDataServiceHelper.load(sourceBill, getfield, new QFilter("enable", QCP.equals, "1")
.and("shkd_pushlcdatetime", QCP.is_null, true).toArray());
for (DynamicObject billObject : sourceBills) {
universalApproach(resultMap, headMap, bodyMap, fieldList, shkd_mapping, billObject, shkd_url, billTypeCode, apiMapping);
}
break;
case "MDMBankType_2"://金融机构类别
sourceBills = BusinessDataServiceHelper.load(sourceBill, getfield, new QFilter("enable", QCP.equals, "1")
.and("shkd_pushlcdatetime", QCP.is_null, true).toArray());
for (DynamicObject billObject : sourceBills) {
universalApproach(resultMap, headMap, bodyMap, fieldList, shkd_mapping, billObject, shkd_url, billTypeCode, apiMapping);
}
break;
case "MDMBanks_2":// 合作金融机构
sourceBills = BusinessDataServiceHelper.load(sourceBill, getfield, new QFilter("enable", QCP.equals, "1")
.and("shkd_pushlcdatetime", QCP.is_null, true).toArray());
for (DynamicObject billObject : sourceBills) {
universalApproach(resultMap, headMap, bodyMap, fieldList, shkd_mapping, billObject, shkd_url, billTypeCode, apiMapping);
}
break;
case "MDMZJYT":// 资金用途
sourceBills = BusinessDataServiceHelper.load(sourceBill, getfield, new QFilter("enable", QCP.equals, "1")
.and("shkd_pushlcdatetime", QCP.is_null, true).toArray());
for (DynamicObject billObject : sourceBills) {
universalApproach(resultMap, headMap, bodyMap, fieldList, shkd_mapping, billObject, shkd_url, billTypeCode, apiMapping);
}
break;
case "MDMXJZH":// 现金账户
sourceBills = BusinessDataServiceHelper.load(sourceBill, getfield, new QFilter("enable", QCP.equals, "1")
.and("shkd_pushlcdatetime", QCP.is_null, true).toArray());
for (DynamicObject billObject : sourceBills) {
universalApproach(resultMap, headMap, bodyMap, fieldList, shkd_mapping, billObject, shkd_url, billTypeCode, apiMapping);
}
break;
case "MDMNBZH":// 内部账户
sourceBills = BusinessDataServiceHelper.load(sourceBill, getfield, new QFilter("acctstatus", QCP.equals, "normal")
.and("shkd_pushlcdatetime", QCP.is_null, true).toArray());
for (DynamicObject billObject : sourceBills) {
universalApproach(resultMap, headMap, bodyMap, fieldList, shkd_mapping, billObject, shkd_url, billTypeCode, apiMapping);
}
break;
case "MDMJRCPLX":// 金融产品类型
sourceBills = BusinessDataServiceHelper.load(sourceBill, getfield, new QFilter("enable", QCP.equals, "1")
.and("shkd_pushlcdatetime", QCP.is_null, true).toArray());
for (DynamicObject billObject : sourceBills) {
universalApproach(resultMap, headMap, bodyMap, fieldList, shkd_mapping, billObject, shkd_url, billTypeCode, apiMapping);
if ("新增修改推送".equals(shkdTsfs)) {
sourceBills = BusinessDataServiceHelper.load(sourceBill, getfield, new QFilter("modifytime", QCP.large_equals, calculateTheDate).toArray());
for (DynamicObject billObject : sourceBills) {
Object shkdPushlcdatetimeObj = billObject.get("shkd_pushlcdatetime");
String acctstatus = billObject.getString("billstatus");
if (shkdPushlcdatetimeObj == null && "C".equals(acctstatus)) {
universalApproach(resultMap, headMap, bodyMap, fieldList, shkd_mapping, billObject, shkd_url, billTypeCode, apiMapping);
}
if (shkdPushlcdatetimeObj != null) {
//获取推送浪潮时间
shkdPushlcdatetime = billObject.getDate("shkd_pushlcdatetime");
//获取修改时间
modifytime = billObject.getDate("modifytime");
if (modifytime.after(shkdPushlcdatetime)) {
universalApproach(resultMap, headMap, bodyMap, fieldList, shkd_mapping, billObject, shkd_url, billTypeCode, apiMapping);
}
}
}
}
break;
}
}
@ -300,6 +313,18 @@ public class PushLcTaskPlugin extends AbstractTask implements Plugin {
} else if ("OPEN_DATE".equals(shkd_djzdms)) {//现金账户 开户日期
Date date = billObject.getDate("open_date");//转化为2020-10-10格式
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), DateUtils.formatDate(date, "yyyy-MM-dd"));
} else if ("BILLSTATUS".equals(shkd_djzdms)) {
String value = billObject.getString("billstatus");
String key = "";
switch (value) {
case "A"://暂存
key = "0";
break;
case "C"://审核
key = "1";
break;
}
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), key);
} else {
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), billObject.getString(shkd_djzdms));
}
@ -321,17 +346,36 @@ public class PushLcTaskPlugin extends AbstractTask implements Plugin {
String statusResult = data.getString("status");
if ("success".equals(statusResult)) {
Date date = new Date();
resultMap.put("shkd_issuccess", true);
billObject.set("shkd_ispushlc", true);
billObject.set("shkd_pushlcdatetime", new Date());
billObject.set("shkd_pushlcdatetime", date);
billObject.set("modifytime", date);
SaveServiceHelper.save(new DynamicObject[]{billObject});
} else {
resultMap.put("shkd_issuccess", false);
saveThePushLog(resultMap);
}
}else {
} else {
resultMap.put("shkd_issuccess", false);
saveThePushLog(resultMap);
}
}
saveThePushLog(resultMap);
private String calculateTheDate(int days) {
// 获取当前日期
LocalDate currentDate = LocalDate.now();
// 获取当前日期的前两天
LocalDate twoDaysAgo = currentDate.minusDays(days);
// 格式化日期为 "yyyy-MM-dd"
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
return twoDaysAgo.format(formatter);
/*Date date;
try {
date = com.kingdee.bos.qing.util.DateUtils.stringToDate(formattedDate, "yyyy-MM-dd");
} catch (ParseException e) {
throw new RuntimeException(e);
}
return date;*/
}
}