parent
d263a8f565
commit
a705646dff
|
|
@ -1,5 +1,6 @@
|
|||
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;
|
||||
|
|
@ -28,6 +29,7 @@ import kd.bos.print.core.service.PrtAttach;
|
|||
import kd.bos.print.matchtpl.MatcherTpl;
|
||||
import kd.bos.print.matchtpl.ViewType;
|
||||
import kd.bos.servicehelper.*;
|
||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
import kd.bos.servicehelper.print.NotePrintService;
|
||||
import kd.bos.util.ExceptionUtils;
|
||||
import kd.tmc.bei.business.ocr.impl.ScanServiceImpl;
|
||||
|
|
@ -37,10 +39,8 @@ import kd.tmc.bei.common.helper.ReceiptPrintHelper;
|
|||
import kd.tmc.bei.common.resource.BeiBizResource;
|
||||
import kd.tmc.fbp.common.ofd.OfdConvertUtil;
|
||||
import kd.tmc.fbp.common.util.EmptyUtil;
|
||||
import org.springframework.http.HttpEntity;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.http.*;
|
||||
import org.springframework.web.client.HttpClientErrorException;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import javax.crypto.Mac;
|
||||
|
|
@ -1329,4 +1329,71 @@ public class ApiService {
|
|||
" → k3CloudApi.attachmentUpload(jsonObject.toString())报错:" + e.getMessage();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param url 调用接口
|
||||
* @param billTypeCode 单据类型编码
|
||||
* @param headMap 请求头
|
||||
* @param bodyMap 请求体
|
||||
* @param fields 请求体参数名
|
||||
* @return
|
||||
*/
|
||||
public static ResponseEntity<String> pushLCMasterData(String url, String billTypeCode, Map<String, Object> headMap, Map<String, Object> bodyMap, List<String> fields, Map<String, Object> resultMap) {
|
||||
// 创建请求头
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
|
||||
// 添加指定的Headers
|
||||
headers.add("X-ECC-Current-Tenant", headMap.get("X-ECC-Current-Tenant").toString());
|
||||
headers.add("apikey", headMap.get("apikey").toString());
|
||||
headers.add("Content-Type", headMap.get("Content-Type").toString());
|
||||
headers.add("Authorization", headMap.get("Authorization").toString());
|
||||
|
||||
// 构建请求体
|
||||
Map<String, Object> requestBody = new HashMap<>();
|
||||
requestBody.put("businessSystemCode", "JDSK");
|
||||
requestBody.put("tableCode", billTypeCode);
|
||||
|
||||
// 创建data数组
|
||||
List<Map<String, Object>> data = new ArrayList<>();
|
||||
Map<String, Object> dataItem = new HashMap<>();
|
||||
|
||||
for (String field : fields) {
|
||||
dataItem.put(field, bodyMap.get(field));
|
||||
}
|
||||
data.add(dataItem);
|
||||
|
||||
requestBody.put("data", data);
|
||||
|
||||
resultMap.put("shkd_request", requestBody);
|
||||
|
||||
// 创建HttpEntity
|
||||
HttpEntity<Map<String, Object>> httpEntity = new HttpEntity<>(requestBody, headers);
|
||||
|
||||
// 使用RestTemplate发送请求
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
return restTemplate.exchange(url, HttpMethod.POST, httpEntity, String.class);
|
||||
}
|
||||
|
||||
public static void saveThePushLog(Map<String, Object> resultMap) {
|
||||
String requestUrl = resultMap.get("shkd_requesturl").toString();//请求地址
|
||||
String request = resultMap.get("shkd_request").toString();//请求体
|
||||
String response = resultMap.get("shkd_response").toString();//响应数据
|
||||
String thirdparty = resultMap.get("shkd_thirdpartysys").toString();//第三方系统
|
||||
String issuccess = resultMap.get("shkd_issuccess").toString();//是否成功
|
||||
String shkd_calldescription = resultMap.get("shkd_calldescription").toString();//调用说明
|
||||
DynamicObject dynamicObject = BusinessDataServiceHelper.newDynamicObject("shkd_thirdpartylog");
|
||||
// 生成随机UUID
|
||||
UUID uuid = UUID.randomUUID();
|
||||
dynamicObject.set("billno", "Log_" + uuid);
|
||||
dynamicObject.set("billstatus", "C");
|
||||
dynamicObject.set("shkd_calldescription", shkd_calldescription);
|
||||
dynamicObject.set("shkd_requesturl", requestUrl);
|
||||
dynamicObject.set("shkd_request", request);
|
||||
dynamicObject.set("shkd_response", response);
|
||||
dynamicObject.set("shkd_thirdpartysys", thirdparty);
|
||||
dynamicObject.set("shkd_issuccess", issuccess);
|
||||
dynamicObject.set("shkd_logdate", new Date());
|
||||
SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
|
||||
}
|
||||
}
|
||||
|
|
@ -3,11 +3,14 @@ package shkd.sys.sys.plugin.form;
|
|||
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.sdk.K3CloudApi;
|
||||
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.datamodel.events.PropertyChangedArgs;
|
||||
import kd.bos.form.IFormView;
|
||||
import kd.bos.entity.property.ComboProp;
|
||||
import kd.bos.form.control.CodeEdit;
|
||||
import kd.bos.form.control.Toolbar;
|
||||
import kd.bos.form.control.events.ItemClickEvent;
|
||||
|
|
@ -17,20 +20,20 @@ import kd.bos.logging.LogFactory;
|
|||
import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.servicehelper.QueryServiceHelper;
|
||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
import kd.sdk.plugin.Plugin;
|
||||
import kd.tmc.fca.common.helper.HandLinkBillHelper;
|
||||
import kd.sdk.scmc.im.acct.DateHelper;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import shkd.sys.sys.mservice.ApiService;
|
||||
import kd.bd.assistant.plugin.helper.BankCateHelper;
|
||||
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
|
||||
import static shkd.sys.sys.mservice.ApiService.*;
|
||||
|
||||
/**
|
||||
* 动态表单插件
|
||||
* API映射表单插件
|
||||
*/
|
||||
public class ApiMappingBillPlugin extends AbstractFormPlugin implements Plugin {
|
||||
private static final Log logger = LogFactory.getLog(ApiMappingBillPlugin.class);
|
||||
|
|
@ -470,7 +473,187 @@ public class ApiMappingBillPlugin extends AbstractFormPlugin implements Plugin {
|
|||
}
|
||||
SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
|
||||
}
|
||||
}
|
||||
|
||||
if ("shkd_pushlc".equals(itemKey)) {
|
||||
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 = dataEntity.getDynamicObject("shkd_sourcebill").getString("number");
|
||||
// 推送单据编码
|
||||
String shkdSourcenumber = dataEntity.getString("shkd_sourcenumber");
|
||||
// 查询的字段
|
||||
String getfield = dataEntity.getString("shkd_getfield");
|
||||
// url
|
||||
String shkd_url = dataEntity.getString("shkd_url");
|
||||
// 单据类型编码
|
||||
String djlxbm = dataEntity.getString("shkd_djlxbm");
|
||||
String billTypeCode;
|
||||
if (djlxbm.contains("_")) {
|
||||
String[] split = djlxbm.split("_");
|
||||
billTypeCode = split[0];
|
||||
} else {
|
||||
billTypeCode = djlxbm;
|
||||
}
|
||||
|
||||
DynamicObjectCollection shkd_heade = dataEntity.getDynamicObjectCollection("shkd_heade");
|
||||
for (DynamicObject dynamicObject : shkd_heade) {
|
||||
headMap.put(dynamicObject.getString("shkd_headcsm"), dynamicObject.getString("shkd_headcsz"));
|
||||
}
|
||||
|
||||
DynamicObject billObject = null;
|
||||
|
||||
if (getfield.contains("number")) {
|
||||
billObject = BusinessDataServiceHelper.loadSingle(billMark, getfield, new QFilter("number", QCP.equals, shkdSourcenumber).toArray());
|
||||
}
|
||||
|
||||
if (getfield.contains("billno")) {
|
||||
billObject = BusinessDataServiceHelper.loadSingle(billMark, getfield, new QFilter("billno", QCP.equals, shkdSourcenumber).toArray());
|
||||
}
|
||||
|
||||
if (billObject == null) {
|
||||
this.getView().showTipNotification("未找到符合条件的数据");
|
||||
return;
|
||||
}
|
||||
|
||||
DynamicObjectCollection shkd_mapping = dataEntity.getDynamicObjectCollection("shkd_mapping");
|
||||
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", dataEntity.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});
|
||||
this.getView().showSuccessNotification("推送成功!" + result);
|
||||
} else {
|
||||
resultMap.put("shkd_issuccess", false);
|
||||
this.getView().showTipNotification("推送失败!" + result);
|
||||
}
|
||||
}else {
|
||||
resultMap.put("shkd_issuccess", false);
|
||||
this.getView().showTipNotification("推送失败!" + result);
|
||||
}
|
||||
|
||||
saveThePushLog(resultMap);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue