parent
0a95fbda4b
commit
18c645cc01
|
|
@ -1,11 +1,12 @@
|
|||
package shkd.sys.sys.mservice;
|
||||
|
||||
import com.alibaba.excel.util.DateUtils;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.bes.mq.org.apache.http.impl.cookie.DateUtils;
|
||||
import com.kingdee.bos.webapi.entity.IdentifyInfo;
|
||||
import com.kingdee.bos.webapi.sdk.K3CloudApi;
|
||||
import kd.bd.assistant.plugin.helper.BankCateHelper;
|
||||
import kd.bos.bill.BillShowParameter;
|
||||
import kd.bos.cache.CacheFactory;
|
||||
import kd.bos.cache.TempFileCache;
|
||||
|
|
@ -13,9 +14,11 @@ import kd.bos.context.RequestContext;
|
|||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.dataentity.entity.LocaleString;
|
||||
import kd.bos.dataentity.metadata.clr.DataEntityPropertyCollection;
|
||||
import kd.bos.dataentity.resource.ResManager;
|
||||
import kd.bos.dataentity.utils.StringUtils;
|
||||
import kd.bos.entity.MainEntityType;
|
||||
import kd.bos.entity.property.ComboProp;
|
||||
import kd.bos.exception.KDBizException;
|
||||
import kd.bos.form.IFormView;
|
||||
import kd.bos.logging.Log;
|
||||
|
|
@ -42,6 +45,7 @@ import kd.tmc.fbp.common.util.EmptyUtil;
|
|||
import org.springframework.http.*;
|
||||
import org.springframework.web.client.HttpClientErrorException;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
import org.springframework.web.util.UriComponentsBuilder;
|
||||
|
||||
import javax.crypto.Mac;
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
|
|
@ -1331,6 +1335,64 @@ public class ApiService {
|
|||
}
|
||||
|
||||
|
||||
public static void pushLCStructureData(DynamicObject sourceData) {
|
||||
String entityName = sourceData.getDataEntityType().getName();
|
||||
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
|
||||
Map<String, Object> headMap = new HashMap<>();
|
||||
Map<String, Object> bodyMap = new HashMap<>();
|
||||
List<String> fieldList = new ArrayList<>();
|
||||
|
||||
DynamicObject[] apiMappings = BusinessDataServiceHelper.load("shkd_apimapping", "id,billno," +
|
||||
"shkd_name,shkd_sourcenumber,shkd_domainname,shkd_appkey,shkd_appsecret,shkd_token,shkd_url,shkd_bodytype," +
|
||||
"shkd_sourcebill,shkd_targetsystem,shkd_submiturl,shkd_banktype,shkd_startdate,shkd_orgs,shkd_djlxbm," +
|
||||
"shkd_heade.shkd_headcsm,shkd_heade.shkd_headzdlx,shkd_heade.shkd_headcsz,shkd_heade.shkd_headmssm," +
|
||||
"shkd_mapping.shkd_jsonzdm,shkd_mapping.shkd_djzdms,shkd_mapping.shkd_mrz,shkd_mapping.shkd_ms",
|
||||
new QFilter("billno", QCP.not_equals, "").toArray());
|
||||
|
||||
DynamicObject apiMapping = null;
|
||||
|
||||
for (DynamicObject object : apiMappings) {
|
||||
String shkd_sourcebillNumber = object.getDynamicObject("shkd_sourcebill").getString("number");
|
||||
if (shkd_sourcebillNumber.equals(entityName)) {
|
||||
apiMapping = object;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (apiMapping == null) {
|
||||
logger.info("未找到符合条件的推送配置!sourceData = " + sourceData);
|
||||
return;
|
||||
}
|
||||
// url
|
||||
String shkd_url = apiMapping.getString("shkd_url");
|
||||
// 单据类型编码
|
||||
String djlxbm = apiMapping.getString("shkd_djlxbm");
|
||||
String billTypeCode;
|
||||
if (djlxbm.contains("_")) {
|
||||
String[] split = djlxbm.split("_");
|
||||
billTypeCode = split[0];
|
||||
} else {
|
||||
billTypeCode = djlxbm;
|
||||
}
|
||||
|
||||
DynamicObjectCollection shkd_heade = apiMapping.getDynamicObjectCollection("shkd_heade");
|
||||
for (DynamicObject dynamicObject : shkd_heade) {
|
||||
headMap.put(dynamicObject.getString("shkd_headcsm"), dynamicObject.getString("shkd_headcsz"));
|
||||
}
|
||||
|
||||
// 映射字段单据体
|
||||
DynamicObjectCollection shkd_mapping = apiMapping.getDynamicObjectCollection("shkd_mapping");
|
||||
|
||||
Date shkdPushlcdatetime = sourceData.getDate("shkd_pushlcdatetime");
|
||||
Date modifytime = sourceData.getDate("modifytime");
|
||||
if (shkdPushlcdatetime == null || modifytime.after(shkdPushlcdatetime)) {
|
||||
universalApproach(resultMap, headMap, bodyMap, fieldList, shkd_mapping, sourceData, shkd_url, billTypeCode, apiMapping);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param url 调用接口
|
||||
* @param billTypeCode 单据类型编码
|
||||
|
|
@ -1396,4 +1458,167 @@ public class ApiService {
|
|||
dynamicObject.set("shkd_logdate", new Date());
|
||||
SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
|
||||
}
|
||||
|
||||
/**
|
||||
* 通用方法
|
||||
*
|
||||
* @param resultMap 记录日志
|
||||
* @param headMap 请求头
|
||||
* @param bodyMap 请求体
|
||||
* @param fieldList JSON字段名集合
|
||||
* @param shkd_mapping 映射分录对象
|
||||
* @param billObject 单据对象
|
||||
* @param shkd_url 保存url
|
||||
* @param billTypeCode 单据类型编码
|
||||
* @param apiMapping apiMapping
|
||||
*/
|
||||
public static void universalApproach(Map<String, Object> resultMap, Map<String, Object> headMap, Map<String, Object> bodyMap,
|
||||
List<String> fieldList, DynamicObjectCollection shkd_mapping, DynamicObject billObject,
|
||||
String shkd_url, String billTypeCode, DynamicObject apiMapping) {
|
||||
for (DynamicObject dynamicObject : shkd_mapping) {
|
||||
fieldList.add(dynamicObject.getString("shkd_jsonzdm"));
|
||||
String shkd_djzdms = dynamicObject.getString("shkd_djzdms");
|
||||
if ("".equals(shkd_djzdms)) {
|
||||
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), dynamicObject.getString("shkd_mrz"));
|
||||
} else if (shkd_djzdms.contains(".")) {
|
||||
//拆分.前面的字符串和后面的字符串
|
||||
String[] split = shkd_djzdms.split("\\.");
|
||||
DynamicObject split0 = billObject.getDynamicObject(split[0]);
|
||||
if (split0 == null) {
|
||||
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), "");
|
||||
} else {
|
||||
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), split0.get(split[1]).toString());
|
||||
}
|
||||
} else if ("YHLB".equals(shkd_djzdms)) {//银行 → 银行类别
|
||||
String name = billObject.getString("name");
|
||||
String number = billObject.getString("number");
|
||||
DynamicObject bankCate = BankCateHelper.findBankCate(name, number);
|
||||
if (bankCate == null) {
|
||||
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), "");
|
||||
} else {
|
||||
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), bankCate.get("name"));
|
||||
}
|
||||
|
||||
} else if ("JSFSLB".equals(shkd_djzdms)) {
|
||||
// 获取XXX字段值,这里获取到的是value,而不是key
|
||||
String value = billObject.getString("settlementtype");
|
||||
MainEntityType dataEntityType = (MainEntityType) billObject.getDataEntityType();
|
||||
// 获取所有实体字段集合
|
||||
DataEntityPropertyCollection properties = dataEntityType.getProperties();
|
||||
// 获取所有字段数据模型
|
||||
ComboProp comboUnitProp = (ComboProp) properties.get("settlementtype");
|
||||
// 根据下拉列表的value获取到key
|
||||
String key = comboUnitProp.getItemByName(value);
|
||||
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), key);
|
||||
} else if ("ZHXZ".equals(shkd_djzdms)) {//账户查询 → 账户性质
|
||||
String value = billObject.getString("acctstyle");
|
||||
String key = "";
|
||||
switch (value) {
|
||||
case "basic"://基本存款户
|
||||
key = "001";
|
||||
break;
|
||||
case "normal"://一般存款户
|
||||
key = "002";
|
||||
break;
|
||||
case "temp"://临时存款户
|
||||
key = "003";
|
||||
break;
|
||||
case "spcl"://专用存款户
|
||||
key = "004";
|
||||
break;
|
||||
case "fgn_curr"://其他存款户
|
||||
key = "005";
|
||||
break;
|
||||
case "D06"://保证金账户
|
||||
key = "006";
|
||||
break;
|
||||
}
|
||||
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), key);
|
||||
} else if ("ZHZT".equals(shkd_djzdms)) {//账户查询 → 账户状态
|
||||
String value = billObject.getString("acctstatus");
|
||||
String key = "";
|
||||
switch (value) {
|
||||
case "normal"://正常
|
||||
key = "2";
|
||||
break;
|
||||
case "closed"://已销户
|
||||
key = "4";
|
||||
break;
|
||||
}
|
||||
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), key);
|
||||
} else if ("ZLKTZT".equals(shkd_djzdms)) {//账户查询 → 开通直连状态
|
||||
String value = billObject.getString("acctstatus");
|
||||
String key = "";
|
||||
switch (value) {
|
||||
case "normal"://正常
|
||||
key = "2";
|
||||
break;
|
||||
case "closed"://已销户
|
||||
key = "4";
|
||||
break;
|
||||
}
|
||||
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), key);
|
||||
} else if ("JNJW".equals(shkd_djzdms)) {//账户查询 → 境内境外
|
||||
DynamicObject bank = billObject.getDynamicObject("bank");
|
||||
DynamicObject country = bank.getDynamicObject("country");
|
||||
String name = country.getString("name");
|
||||
if ("中国".equals(name)) {
|
||||
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), "1");
|
||||
} else {
|
||||
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), "2");
|
||||
}
|
||||
} else if ("OPENDATE".equals(shkd_djzdms)) {//现金账户 → 开户日期
|
||||
Date date = billObject.getDate("opendate");//转化为2020-10-10格式
|
||||
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), com.bes.mq.org.apache.http.impl.cookie.DateUtils.formatDate(date, "yyyy-MM-dd"));
|
||||
} 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 ("isoverdue".equals(shkd_djzdms)) {//行名行号 → 疑似过期
|
||||
String isoverdue = billObject.getString("isoverdue");//转化为2020-10-10格式
|
||||
String ishistory = "1";
|
||||
|
||||
if ("Y".equals(isoverdue)) {
|
||||
ishistory = "0";
|
||||
}
|
||||
|
||||
if ("N".equals(isoverdue)) {
|
||||
ishistory = "1";
|
||||
}
|
||||
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), ishistory);
|
||||
} else {
|
||||
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), billObject.getString(shkd_djzdms));
|
||||
}
|
||||
}
|
||||
|
||||
ResponseEntity<String> stringResponseEntity = pushLCMasterData(shkd_url, billTypeCode, headMap, bodyMap, fieldList, resultMap);
|
||||
String result = stringResponseEntity.getBody();
|
||||
|
||||
logger.info("浪潮推送结果:{}", result);
|
||||
|
||||
resultMap.put("shkd_calldescription", apiMapping.getString("shkd_name"));
|
||||
resultMap.put("shkd_requesturl", shkd_url);
|
||||
resultMap.put("shkd_response", result);
|
||||
resultMap.put("shkd_thirdpartysys", "浪潮");
|
||||
|
||||
JSONObject jsonObject = JSON.parseObject(result);
|
||||
String status = jsonObject.getString("status");
|
||||
if ("success".equals(status)) {
|
||||
JSONArray dataresult = jsonObject.getJSONArray("dataresult");
|
||||
JSONObject data = dataresult.getJSONObject(0);
|
||||
String statusResult = data.getString("status");
|
||||
|
||||
if ("success".equals(statusResult)) {
|
||||
resultMap.put("shkd_issuccess", true);
|
||||
billObject.set("shkd_ispushlc", true);
|
||||
billObject.set("shkd_pushlcdatetime", new Date());
|
||||
SaveServiceHelper.save(new DynamicObject[]{billObject});
|
||||
} else {
|
||||
resultMap.put("shkd_issuccess", false);
|
||||
saveThePushLog(resultMap);
|
||||
}
|
||||
}else {
|
||||
resultMap.put("shkd_issuccess", false);
|
||||
saveThePushLog(resultMap);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
package shkd.sys.sys.plugin.form;
|
||||
|
||||
import kd.bos.bill.AbstractBillPlugIn;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.form.events.AfterDoOperationEventArgs;
|
||||
import kd.sdk.plugin.Plugin;
|
||||
|
||||
import static shkd.sys.sys.mservice.ApiService.pushLCStructureData;
|
||||
|
||||
/**
|
||||
* 主数据推送浪潮触发(保存、审核)
|
||||
*/
|
||||
public class PushLCBillPlugin extends AbstractBillPlugIn implements Plugin {
|
||||
@Override
|
||||
public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) {
|
||||
super.afterDoOperation(afterDoOperationEventArgs);
|
||||
String operateKey = afterDoOperationEventArgs.getOperateKey();
|
||||
DynamicObject dataEntity = this.getModel().getDataEntity(true);
|
||||
String entityName = dataEntity.getDataEntityType().getName();
|
||||
if ("save".equals(operateKey)) {
|
||||
switch (entityName) {
|
||||
case "bd_acctpurpose"://账户用途
|
||||
case "bd_bankcgsetting"://银行类别
|
||||
case "bd_bebank"://行名行号
|
||||
case "am_accountbank"://账户查询
|
||||
case "bd_settlementtype"://结算方式
|
||||
case "cdm_billtype"://票据类型
|
||||
case "fpm_membersubject"://计划科目
|
||||
case "bd_finorgtype"://金融机构类型
|
||||
case "bd_finorginfo"://合作金融机构
|
||||
case "cas_fundflowitem"://资金用途
|
||||
case "cas_accountcash"://现金账户
|
||||
case "ifm_inneracct"://内部账户
|
||||
pushLCStructureData(dataEntity);
|
||||
break;
|
||||
}
|
||||
} else if ("audit".equals(operateKey)) {
|
||||
if ("cfm_loanbill_bond".equals(entityName)) {//债券发行
|
||||
pushLCStructureData(dataEntity);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,337 @@
|
|||
package shkd.sys.sys.plugin.task;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.bes.mq.org.apache.http.impl.cookie.DateUtils;
|
||||
import kd.bd.assistant.plugin.helper.BankCateHelper;
|
||||
import kd.bos.context.RequestContext;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.dataentity.metadata.clr.DataEntityPropertyCollection;
|
||||
import kd.bos.entity.MainEntityType;
|
||||
import kd.bos.entity.property.ComboProp;
|
||||
import kd.bos.exception.KDException;
|
||||
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.schedule.executor.AbstractTask;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
import kd.sdk.plugin.Plugin;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import static shkd.sys.sys.mservice.ApiService.pushLCMasterData;
|
||||
import static shkd.sys.sys.mservice.ApiService.saveThePushLog;
|
||||
|
||||
/**
|
||||
* 主数据对接 → 推送浪潮
|
||||
*/
|
||||
public class PushLcTaskPlugin extends AbstractTask implements Plugin {
|
||||
private static final Log logger = LogFactory.getLog(PushLcTaskPlugin.class);
|
||||
|
||||
@Override
|
||||
public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
|
||||
Object billMark = map.get("billMark");
|
||||
if (billMark != null) {
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
|
||||
Map<String, Object> headMap = new HashMap<>();
|
||||
Map<String, Object> bodyMap = new HashMap<>();
|
||||
List<String> fieldList = new ArrayList<>();
|
||||
|
||||
DynamicObject[] apiMapping = BusinessDataServiceHelper.load("shkd_apimapping", "id,billno," +
|
||||
"shkd_name,shkd_sourcenumber,shkd_domainname,shkd_appkey,shkd_appsecret,shkd_token,shkd_url,shkd_bodytype," +
|
||||
"shkd_sourcebill,shkd_targetsystem,shkd_submiturl,shkd_banktype,shkd_startdate,shkd_orgs,shkd_djlxbm," +
|
||||
"shkd_heade.shkd_headcsm,shkd_heade.shkd_headzdlx,shkd_heade.shkd_headcsz,shkd_heade.shkd_headmssm," +
|
||||
"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 sourceBill = apiMapping[0].getDynamicObject("shkd_sourcebill").getString("number");
|
||||
// 推送单据编码
|
||||
// String shkdSourcenumber = apiMapping[0].getString("shkd_sourcenumber");
|
||||
// 查询的字段
|
||||
String getfield = apiMapping[0].getString("shkd_getfield");
|
||||
// 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");
|
||||
|
||||
DynamicObject[] sourceBills;
|
||||
|
||||
Date shkdPushlcdatetime;
|
||||
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)) {
|
||||
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);
|
||||
}
|
||||
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);
|
||||
}
|
||||
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);
|
||||
}
|
||||
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);
|
||||
}
|
||||
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);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 通用方法
|
||||
*
|
||||
* @param resultMap 记录日志
|
||||
* @param headMap 请求头
|
||||
* @param bodyMap 请求体
|
||||
* @param fieldList JSON字段名集合
|
||||
* @param shkd_mapping 映射分录对象
|
||||
* @param billObject 单据对象
|
||||
* @param shkd_url 保存url
|
||||
* @param billTypeCode 单据类型编码
|
||||
* @param apiMapping apiMapping
|
||||
*/
|
||||
private void universalApproach(Map<String, Object> resultMap, Map<String, Object> headMap, Map<String, Object> bodyMap,
|
||||
List<String> fieldList, DynamicObjectCollection shkd_mapping, DynamicObject billObject,
|
||||
String shkd_url, String billTypeCode, DynamicObject[] apiMapping) {
|
||||
for (DynamicObject dynamicObject : shkd_mapping) {
|
||||
fieldList.add(dynamicObject.getString("shkd_jsonzdm"));
|
||||
String shkd_djzdms = dynamicObject.getString("shkd_djzdms");
|
||||
if ("".equals(shkd_djzdms)) {
|
||||
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), dynamicObject.getString("shkd_mrz"));
|
||||
} else if (shkd_djzdms.contains(".")) {
|
||||
//拆分.前面的字符串和后面的字符串
|
||||
String[] split = shkd_djzdms.split("\\.");
|
||||
DynamicObject split0 = billObject.getDynamicObject(split[0]);
|
||||
if (split0 == null) {
|
||||
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), "");
|
||||
} else {
|
||||
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), split0.get(split[1]).toString());
|
||||
}
|
||||
} else if ("YHLB".equals(shkd_djzdms)) {//银行 → 银行类别
|
||||
String name = billObject.getString("name");
|
||||
String number = billObject.getString("number");
|
||||
DynamicObject bankCate = BankCateHelper.findBankCate(name, number);
|
||||
if (bankCate == null) {
|
||||
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), "");
|
||||
} else {
|
||||
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), bankCate.get("name"));
|
||||
}
|
||||
|
||||
} else if ("JSFSLB".equals(shkd_djzdms)) {
|
||||
// 获取XXX字段值,这里获取到的是value,而不是key
|
||||
String value = billObject.getString("settlementtype");
|
||||
MainEntityType dataEntityType = (MainEntityType) billObject.getDataEntityType();
|
||||
// 获取所有实体字段集合
|
||||
DataEntityPropertyCollection properties = dataEntityType.getProperties();
|
||||
// 获取所有字段数据模型
|
||||
ComboProp comboUnitProp = (ComboProp) properties.get("settlementtype");
|
||||
// 根据下拉列表的value获取到key
|
||||
String key = comboUnitProp.getItemByName(value);
|
||||
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), key);
|
||||
} else if ("ZHXZ".equals(shkd_djzdms)) {//账户查询 → 账户性质
|
||||
String value = billObject.getString("acctstyle");
|
||||
String key = "";
|
||||
switch (value) {
|
||||
case "basic"://基本存款户
|
||||
key = "001";
|
||||
break;
|
||||
case "normal"://一般存款户
|
||||
key = "002";
|
||||
break;
|
||||
case "temp"://临时存款户
|
||||
key = "003";
|
||||
break;
|
||||
case "spcl"://专用存款户
|
||||
key = "004";
|
||||
break;
|
||||
case "fgn_curr"://其他存款户
|
||||
key = "005";
|
||||
break;
|
||||
case "D06"://保证金账户
|
||||
key = "006";
|
||||
break;
|
||||
}
|
||||
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), key);
|
||||
} else if ("ZHZT".equals(shkd_djzdms)) {//账户查询 → 账户状态
|
||||
String value = billObject.getString("acctstatus");
|
||||
String key = "";
|
||||
switch (value) {
|
||||
case "normal"://正常
|
||||
key = "2";
|
||||
break;
|
||||
case "closed"://已销户
|
||||
key = "4";
|
||||
break;
|
||||
}
|
||||
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), key);
|
||||
} else if ("ZLKTZT".equals(shkd_djzdms)) {//账户查询 → 开通直连状态
|
||||
String value = billObject.getString("acctstatus");
|
||||
String key = "";
|
||||
switch (value) {
|
||||
case "normal"://正常
|
||||
key = "2";
|
||||
break;
|
||||
case "closed"://已销户
|
||||
key = "4";
|
||||
break;
|
||||
}
|
||||
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), key);
|
||||
} else if ("JNJW".equals(shkd_djzdms)) {//账户查询 → 境内境外
|
||||
DynamicObject bank = billObject.getDynamicObject("bank");
|
||||
DynamicObject country = bank.getDynamicObject("country");
|
||||
String name = country.getString("name");
|
||||
if ("中国".equals(name)) {
|
||||
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), "1");
|
||||
} else {
|
||||
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), "2");
|
||||
}
|
||||
} else if ("OPENDATE".equals(shkd_djzdms)) {//现金账户 → 开户日期
|
||||
Date date = billObject.getDate("opendate");//转化为2020-10-10格式
|
||||
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), DateUtils.formatDate(date, "yyyy-MM-dd"));
|
||||
} 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 {
|
||||
bodyMap.put(dynamicObject.getString("shkd_jsonzdm"), billObject.getString(shkd_djzdms));
|
||||
}
|
||||
}
|
||||
|
||||
ResponseEntity<String> stringResponseEntity = pushLCMasterData(shkd_url, billTypeCode, headMap, bodyMap, fieldList, resultMap);
|
||||
String result = stringResponseEntity.getBody();
|
||||
|
||||
resultMap.put("shkd_calldescription", apiMapping[0].getString("shkd_name"));
|
||||
resultMap.put("shkd_requesturl", shkd_url);
|
||||
resultMap.put("shkd_response", result);
|
||||
resultMap.put("shkd_thirdpartysys", "浪潮");
|
||||
|
||||
JSONObject jsonObject = JSON.parseObject(result);
|
||||
String status = jsonObject.getString("status");
|
||||
if ("success".equals(status)) {
|
||||
JSONArray dataresult = jsonObject.getJSONArray("dataresult");
|
||||
JSONObject data = dataresult.getJSONObject(0);
|
||||
String statusResult = data.getString("status");
|
||||
|
||||
if ("success".equals(statusResult)) {
|
||||
resultMap.put("shkd_issuccess", true);
|
||||
billObject.set("shkd_ispushlc", true);
|
||||
billObject.set("shkd_pushlcdatetime", new Date());
|
||||
SaveServiceHelper.save(new DynamicObject[]{billObject});
|
||||
} else {
|
||||
resultMap.put("shkd_issuccess", false);
|
||||
}
|
||||
}else {
|
||||
resultMap.put("shkd_issuccess", false);
|
||||
}
|
||||
|
||||
saveThePushLog(resultMap);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue