收款单推退预付款接口
This commit is contained in:
parent
b857a700da
commit
8243c926be
|
|
@ -48,6 +48,7 @@ public class ClaimConvertPlugin extends AbstractConvertPlugIn implements Plugin
|
||||||
/**
|
/**
|
||||||
* 目标单字段值,携带完毕后,触发此事件
|
* 目标单字段值,携带完毕后,触发此事件
|
||||||
* 携带字段到单据体
|
* 携带字段到单据体
|
||||||
|
*
|
||||||
* @remark 在此事件中,自行取源单字段值,格式化后填写到目标单
|
* @remark 在此事件中,自行取源单字段值,格式化后填写到目标单
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
|
|
@ -60,12 +61,12 @@ public class ClaimConvertPlugin extends AbstractConvertPlugIn implements Plugin
|
||||||
for (ExtendedDataEntity billEntity : extendedDataEntities) {
|
for (ExtendedDataEntity billEntity : extendedDataEntities) {
|
||||||
// 获取单据数据包
|
// 获取单据数据包
|
||||||
DynamicObject bill = billEntity.getDataEntity();
|
DynamicObject bill = billEntity.getDataEntity();
|
||||||
|
//付款人类型
|
||||||
|
String recPayType = (String) this.getSourceData(billEntity, fldProperties, "paymenttype");
|
||||||
|
if ("bd_customer".equals(recPayType)||"bd_supplier".equals(recPayType)) {
|
||||||
String recPayer = (String) this.getSourceData(billEntity, fldProperties, "recpayer");
|
String recPayer = (String) this.getSourceData(billEntity, fldProperties, "recpayer");
|
||||||
if (null != recPayer) {
|
if (null != recPayer) {
|
||||||
long recPayerId = Long.parseLong(recPayer);
|
long recPayerId = Long.parseLong(recPayer);
|
||||||
//付款人类型
|
|
||||||
String recPayType = (String) this.getSourceData(billEntity, fldProperties, "paymenttype");
|
|
||||||
if (null!=recPayType){
|
|
||||||
DynamicObject recPayObj = BusinessDataServiceHelper.loadSingle(recPayerId, recPayType);
|
DynamicObject recPayObj = BusinessDataServiceHelper.loadSingle(recPayerId, recPayType);
|
||||||
if (null != recPayObj) {
|
if (null != recPayObj) {
|
||||||
String groupNumber = recPayObj.getString("group.number");
|
String groupNumber = recPayObj.getString("group.number");
|
||||||
|
|
@ -166,6 +167,8 @@ public class ClaimConvertPlugin extends AbstractConvertPlugIn implements Plugin
|
||||||
}
|
}
|
||||||
targetEntry.set("shjh_verificationnum", entry.getString("shjh_verificationnum"));
|
targetEntry.set("shjh_verificationnum", entry.getString("shjh_verificationnum"));
|
||||||
targetEntry.set("shjh_fiscalyear", entry.getString("shjh_fiscalyear"));
|
targetEntry.set("shjh_fiscalyear", entry.getString("shjh_fiscalyear"));
|
||||||
|
targetEntry.set("shjh_billheaderid", entry.getString("shjh_billheaderid"));
|
||||||
|
targetEntry.set("shjh_detailid", entry.getString("shjh_detailid"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -175,6 +178,7 @@ public class ClaimConvertPlugin extends AbstractConvertPlugIn implements Plugin
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取源单字段数据
|
* 获取源单字段数据
|
||||||
|
*
|
||||||
* @param billEntity 源单数据包
|
* @param billEntity 源单数据包
|
||||||
* @param fldProperties 源单字段
|
* @param fldProperties 源单字段
|
||||||
* @param name 字段标识
|
* @param name 字段标识
|
||||||
|
|
|
||||||
|
|
@ -152,8 +152,8 @@ public class ASParbillFormPlugin extends AbstractFormPlugin implements Plugin {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
String supplierCode = supplier.getString("number");
|
String supplierCode = supplier.getString("number");
|
||||||
|
String interfaceID="FMGetJahYFKList";
|
||||||
HashMap<String, String> head = ApiUtils.buildHead();
|
HashMap<String, String> head = ApiUtils.buildHead(interfaceID);
|
||||||
HashMap<String, Object> body = ApiUtils.buildBody(companyCode, null, startDate, endDate);
|
HashMap<String, Object> body = ApiUtils.buildBody(companyCode, null, startDate, endDate);
|
||||||
HashMap<String, Object> data = (HashMap<String, Object>) body.get("data");
|
HashMap<String, Object> data = (HashMap<String, Object>) body.get("data");
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -171,6 +171,8 @@ public class ClaimBillButtonAssPlugin extends AbstractFormPlugin implements Plug
|
||||||
this.getModel().setValue(ClaimFieldsInfo.VERIFICATION_NUMBER, returnData.get(i).getString(ClaimFieldsInfo.VERIFICATION_NUMBER), i);
|
this.getModel().setValue(ClaimFieldsInfo.VERIFICATION_NUMBER, returnData.get(i).getString(ClaimFieldsInfo.VERIFICATION_NUMBER), i);
|
||||||
//会计年度
|
//会计年度
|
||||||
this.getModel().setValue(ClaimFieldsInfo.FISCAL_YEAR, returnData.get(i).getString(ClaimFieldsInfo.FISCAL_YEAR), i);
|
this.getModel().setValue(ClaimFieldsInfo.FISCAL_YEAR, returnData.get(i).getString(ClaimFieldsInfo.FISCAL_YEAR), i);
|
||||||
|
this.getModel().setValue("shjh_billheaderid", returnData.get(i).getString("shjh_billheaderid"), i);
|
||||||
|
this.getModel().setValue("shjh_detailid", returnData.get(i).getString("shjh_detailid"), i);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -189,6 +191,8 @@ public class ClaimBillButtonAssPlugin extends AbstractFormPlugin implements Plug
|
||||||
this.getModel().setValue(ClaimFieldsInfo.VERIFICATION_NUMBER, returnData.get(i).getString(ClaimFieldsInfo.VERIFICATION_NUMBER), i);
|
this.getModel().setValue(ClaimFieldsInfo.VERIFICATION_NUMBER, returnData.get(i).getString(ClaimFieldsInfo.VERIFICATION_NUMBER), i);
|
||||||
//会计年度
|
//会计年度
|
||||||
this.getModel().setValue(ClaimFieldsInfo.FISCAL_YEAR, returnData.get(i).getString(ClaimFieldsInfo.FISCAL_YEAR), i);
|
this.getModel().setValue(ClaimFieldsInfo.FISCAL_YEAR, returnData.get(i).getString(ClaimFieldsInfo.FISCAL_YEAR), i);
|
||||||
|
this.getModel().setValue("shjh_billheaderid", returnData.get(i).getString("shjh_billheaderid"), i);
|
||||||
|
this.getModel().setValue("shjh_detailid", returnData.get(i).getString("shjh_detailid"), i);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -160,8 +160,8 @@ public class FeeControlApiPlugin extends AbstractFormPlugin implements Plugin {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
String supplierCode = supplier.getString("number");
|
String supplierCode = supplier.getString("number");
|
||||||
|
String interfaceID="FMGetJahYFKList";
|
||||||
HashMap<String, String> head = ApiUtils.buildHead();
|
HashMap<String, String> head = ApiUtils.buildHead(interfaceID);
|
||||||
HashMap<String, Object> body = ApiUtils.buildBody(companyCode, this.getUserCode(), startDate, endDate);
|
HashMap<String, Object> body = ApiUtils.buildBody(companyCode, this.getUserCode(), startDate, endDate);
|
||||||
HashMap<String, Object> data = (HashMap<String, Object>) body.get("data");
|
HashMap<String, Object> data = (HashMap<String, Object>) body.get("data");
|
||||||
|
|
||||||
|
|
@ -175,75 +175,54 @@ public class FeeControlApiPlugin extends AbstractFormPlugin implements Plugin {
|
||||||
" \"code\": \"0\",\n" +
|
" \"code\": \"0\",\n" +
|
||||||
" \"msg\": \"成功\",\n" +
|
" \"msg\": \"成功\",\n" +
|
||||||
" \"data\": {\n" +
|
" \"data\": {\n" +
|
||||||
" \"total\": 2,\n" +
|
" \"total\": 1,\n" +
|
||||||
" \"rows\": [\n" +
|
" \"LoanItems\": [\n" +
|
||||||
" {\n" +
|
" {\n" +
|
||||||
" \"ID\": \"fc7443ac-9f85-4d17-a7ee-5620330f28a6\",\n" +
|
" \"ID\": \"fc7443ac-9f85-4d17-a7ee-5620330f28a6\",\n" +
|
||||||
" \"RequestCode\": \"YFK2025010900001\",\n" +
|
" \"RequestCode\": \"YFK2025010900001\",\n" +
|
||||||
" \"RequestAmt\": 8,\n" +
|
" \"RequestName\": \"2025-01-09对公预付款单\",\n" +
|
||||||
|
" \"RequestAmt\": 111,\n" +
|
||||||
" \"RequestDate\": \"2025-01-09 11:29:22\",\n" +
|
" \"RequestDate\": \"2025-01-09 11:29:22\",\n" +
|
||||||
|
" \"GLDate\": \"2025-01-09 00:00:00\",\n" +
|
||||||
" \"RequestUserName\": \"余超\",\n" +
|
" \"RequestUserName\": \"余超\",\n" +
|
||||||
" \"AvailableAmt\": 8,\n" +
|
" \"AvailableAmt\": 80.5,\n" +
|
||||||
" \"SupplierId\": 89948,\n" +
|
" \"SupplierId\": 89948,\n" +
|
||||||
" \"SupplierId_Name\": \"品销宝\",\n" +
|
" \"SupplierId_Name\": \"品销宝\",\n" +
|
||||||
" \"CompanyCode\": \"C021\",\n" +
|
" \"CompanyCode\": \"C021\",\n" +
|
||||||
" \"CompanyName\": \"上海家化电子商务有限公司\",\n" +
|
" \"CompanyName\": \"上海家化电子商务有限公司\",\n" +
|
||||||
" \"StrColumn20\": \"H693DW3495\",\n" +
|
|
||||||
" \"RequestRemark\": \"测试\",\n" +
|
" \"RequestRemark\": \"测试\",\n" +
|
||||||
|
" \"StrColumn20\": \"1700000001\",\n" +
|
||||||
" \"LoanDetailInfo\": [\n" +
|
" \"LoanDetailInfo\": [\n" +
|
||||||
" {\n" +
|
" {\n" +
|
||||||
" \"BillHeaderID\": \"fc7443ac-9f85-4d17-a7ee-5620330f28a6\",\n" +
|
" \"BillHeaderID\": \"fc7443ac-9f85-4d17-a7ee-5620330f28a6\",\n" +
|
||||||
" \"PoOrderNo\": \"20250306\",\n" +
|
" \"PoOrderNo\": \"YFKTH001\",\n" +
|
||||||
" \"PoOrderColNo\": \"001\",\n" +
|
" \"PoOrderColNo\": \"001\",\n" +
|
||||||
" \"DetailID\": \"d7bc66bf-11e7-4ef5-9d98-80881c1caff7\",\n" +
|
" \"DetailID\": \"d7bc66bf-11e7-4ef5-9d98-80881c1caff7\",\n" +
|
||||||
" \"ApplyAmt\": 8,\n" +
|
" \"ApplyAmt\": 111,\n" +
|
||||||
" \"ThisAmt\": null,\n" +
|
" \"ThisAmt\": null,\n" +
|
||||||
" \"AvailableAmt\": 8,\n" +
|
" \"AvailableAmt\": 80.5,\n" +
|
||||||
" \"RequestCode\": \"YFK2025010900001\",\n" +
|
" \"RequestCode\": \"YFK2025010900001\",\n" +
|
||||||
" \"RequestName\": \"2025-01-09对公预付款单\",\n" +
|
" \"RequestName\": \"2025-01-09对公预付款单\",\n" +
|
||||||
" \"RequestAmt\": 8,\n" +
|
" \"RequestAmt\": 111,\n" +
|
||||||
" \"InitialAmount\": 8,\n" +
|
" \"InitialAmount\": 111,\n" +
|
||||||
" \"Remark\": \"测试\",\n" +
|
" \"Remark\": null,\n" +
|
||||||
" \"CreatedDate\": \"2025-01-09 11:29:11\",\n" +
|
" \"CreatedDate\": null,\n" +
|
||||||
" \"ExpenseItemName\": \"会务费\",\n" +
|
" \"DetailRemark\": null,\n" +
|
||||||
" \"CurrencyId\": 10510,\n" +
|
" \"ExpenseItemName\": null,\n" +
|
||||||
" \"BillAvailableAmt\": 8\n" +
|
" \"CurrencyId\": 0,\n" +
|
||||||
|
" \"BillAvailableAmt\": 80.5\n" +
|
||||||
" }\n" +
|
" }\n" +
|
||||||
" ]\n" +
|
" ]\n" +
|
||||||
" },\n" +
|
|
||||||
" {\n" +
|
|
||||||
" \"ID\": \"fc7443ac-9f85-4d17-a7ee-5620330f28d4\",\n" +
|
|
||||||
" \"RequestCode\": \"YFK2025010900002\",\n" +
|
|
||||||
" \"RequestAmt\": 9,\n" +
|
|
||||||
" \"RequestDate\": \"2025-01-09 11:29:22\",\n" +
|
|
||||||
" \"RequestUserName\": \"余超\",\n" +
|
|
||||||
" \"AvailableAmt\": 9,\n" +
|
|
||||||
" \"SupplierId\": 89949,\n" +
|
|
||||||
" \"SupplierId_Name\": \"品销宝\",\n" +
|
|
||||||
" \"CompanyCode\": \"C021\",\n" +
|
|
||||||
" \"CompanyName\": \"上海家化电子商务有限公司\",\n" +
|
|
||||||
" \"StrColumn20\": \"H693DW3496\",\n" +
|
|
||||||
" \"RequestRemark\": \"测试\",\n" +
|
|
||||||
" \"LoanDetailInfo\": [\n" +
|
|
||||||
" {\n" +
|
|
||||||
" \"BillHeaderID\": \"fc7443ac-9f85-4d17-a7ee-5626930f28a6\",\n" +
|
|
||||||
" \"PoOrderNo\": \"20250307\",\n" +
|
|
||||||
" \"PoOrderColNo\": \"002\",\n" +
|
|
||||||
" \"DetailID\": \"d7bc66bf-11e7-4ef5-9d98-56881c1caff7\",\n" +
|
|
||||||
" \"ApplyAmt\": 9,\n" +
|
|
||||||
" \"ThisAmt\": null,\n" +
|
|
||||||
" \"AvailableAmt\": 9,\n" +
|
|
||||||
" \"RequestCode\": \"YFK2025010900002\",\n" +
|
|
||||||
" \"RequestName\": \"2025-01-09对公预付款单\",\n" +
|
|
||||||
" \"RequestAmt\": 9,\n" +
|
|
||||||
" \"InitialAmount\": 9,\n" +
|
|
||||||
" \"Remark\": \"测试\",\n" +
|
|
||||||
" \"CreatedDate\": \"2025-01-09 11:29:11\",\n" +
|
|
||||||
" \"ExpenseItemName\": \"会务费\",\n" +
|
|
||||||
" \"CurrencyId\": 10511,\n" +
|
|
||||||
" \"BillAvailableAmt\": 9\n" +
|
|
||||||
" }\n" +
|
" }\n" +
|
||||||
" ]\n" +
|
" ],\n" +
|
||||||
|
" \"VoucherItems\": [\n" +
|
||||||
|
" {\n" +
|
||||||
|
" \"BillHeaderID\": \"fc7443ac-9f85-4d17-a7ee-5620330f28a6\",\n" +
|
||||||
|
" \"COAItemFullName\": \"1123900000 预付账款\",\n" +
|
||||||
|
" \"COAItemCode\": \"1123900000\",\n" +
|
||||||
|
" \"COAItemName\": \"预付账款\",\n" +
|
||||||
|
" \"ReasonCode\": \"089\",\n" +
|
||||||
|
" \"ReasonCodeName\": \"支付的其他与经营活动\"\n" +
|
||||||
" }\n" +
|
" }\n" +
|
||||||
" ]\n" +
|
" ]\n" +
|
||||||
" }\n" +
|
" }\n" +
|
||||||
|
|
@ -270,7 +249,8 @@ public class FeeControlApiPlugin extends AbstractFormPlugin implements Plugin {
|
||||||
*/
|
*/
|
||||||
private void handleLoanApi(String companyCode, Date startDate, Date endDate, String billNumber) {
|
private void handleLoanApi(String companyCode, Date startDate, Date endDate, String billNumber) {
|
||||||
try {
|
try {
|
||||||
HashMap<String, String> head = ApiUtils.buildHead();
|
String interfaceID="FMGetJahJKYList";
|
||||||
|
HashMap<String, String> head = ApiUtils.buildHead(interfaceID);
|
||||||
HashMap<String, Object> body = ApiUtils.buildBody(companyCode, this.getUserCode(), startDate, endDate);
|
HashMap<String, Object> body = ApiUtils.buildBody(companyCode, this.getUserCode(), startDate, endDate);
|
||||||
String response = ApiUtils.sendPost(head, body, "https://hipint-stg.jahwa.com.cn:6443/gateway/HIP_ReceiveFromFM/1.0/fm/send");
|
String response = ApiUtils.sendPost(head, body, "https://hipint-stg.jahwa.com.cn:6443/gateway/HIP_ReceiveFromFM/1.0/fm/send");
|
||||||
if (response != null) {
|
if (response != null) {
|
||||||
|
|
@ -295,7 +275,7 @@ public class FeeControlApiPlugin extends AbstractFormPlugin implements Plugin {
|
||||||
hideLoanFields();
|
hideLoanFields();
|
||||||
JSONObject root = JSONObject.parseObject(response);
|
JSONObject root = JSONObject.parseObject(response);
|
||||||
JSONObject data = root.getJSONObject("data");
|
JSONObject data = root.getJSONObject("data");
|
||||||
JSONArray rows = data.getJSONArray("rows");
|
JSONArray rows = data.getJSONArray("LoanItems");
|
||||||
DynamicObjectCollection entry = this.getModel().getEntryEntity(ENTRY_KEY);
|
DynamicObjectCollection entry = this.getModel().getEntryEntity(ENTRY_KEY);
|
||||||
entry.clear();
|
entry.clear();
|
||||||
for (int i = 0; i < rows.size(); i++) {
|
for (int i = 0; i < rows.size(); i++) {
|
||||||
|
|
@ -324,11 +304,13 @@ public class FeeControlApiPlugin extends AbstractFormPlugin implements Plugin {
|
||||||
this.getModel().setValue("shjh_purchasenum", detail.getString("PoOrderNo"), i);
|
this.getModel().setValue("shjh_purchasenum", detail.getString("PoOrderNo"), i);
|
||||||
this.getModel().setValue("shjh_purchaselinenum", detail.getString("PoOrderColNo"), i);
|
this.getModel().setValue("shjh_purchaselinenum", detail.getString("PoOrderColNo"), i);
|
||||||
this.getModel().setValue("shjh_billsubject", detail.getString("RequestName"), i);
|
this.getModel().setValue("shjh_billsubject", detail.getString("RequestName"), i);
|
||||||
this.getModel().setValue("shjh_prepaymentdate", detail.getDate("CreatedDate"), i);
|
this.getModel().setValue("shjh_prepaymentdate", top.getString("RequestDate"), i);
|
||||||
this.getModel().setValue("shjh_paymentamount", top.getBigDecimal("RequestAmt"), i);
|
this.getModel().setValue("shjh_paymentamount", top.getBigDecimal("RequestAmt"), i);
|
||||||
this.getModel().setValue("shjh_documentamount", top.getBigDecimal("AvailableAmt"), i);
|
this.getModel().setValue("shjh_documentamount", top.getBigDecimal("AvailableAmt"), i);
|
||||||
this.getModel().setValue("shjh_verificationnum", top.getString("StrColumn20"), i);
|
this.getModel().setValue("shjh_verificationnum", top.getString("StrColumn20"), i);
|
||||||
this.getModel().setValue("shjh_fiscalyear", top.getString("GLDate").substring(0, 4), i);
|
this.getModel().setValue("shjh_fiscalyear", top.getString("GLDate").substring(0, 4), i);
|
||||||
|
this.getModel().setValue("shjh_billheaderid", detail.getString("BillHeaderID"), i);
|
||||||
|
this.getModel().setValue("shjh_detailid", detail.getString("DetailID"), i);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("预付单赋值异常: " + e.getMessage(), e);
|
logger.error("预付单赋值异常: " + e.getMessage(), e);
|
||||||
}
|
}
|
||||||
|
|
@ -344,13 +326,15 @@ public class FeeControlApiPlugin extends AbstractFormPlugin implements Plugin {
|
||||||
hidePaymentFields();
|
hidePaymentFields();
|
||||||
JSONObject root = JSONObject.parseObject(response);
|
JSONObject root = JSONObject.parseObject(response);
|
||||||
JSONObject data = root.getJSONObject("data");
|
JSONObject data = root.getJSONObject("data");
|
||||||
JSONArray rows = data.getJSONArray("rows");
|
JSONArray rows = data.getJSONArray("LoanItems");
|
||||||
DynamicObjectCollection entry = this.getModel().getEntryEntity(ENTRY_KEY);
|
DynamicObjectCollection entry = this.getModel().getEntryEntity(ENTRY_KEY);
|
||||||
entry.clear();
|
entry.clear();
|
||||||
for (int i = 0; i < rows.size(); i++) {
|
for (int i = 0; i < rows.size(); i++) {
|
||||||
JSONObject top = (JSONObject) rows.get(i);
|
JSONObject top = (JSONObject) rows.get(i);
|
||||||
|
JSONArray loanDetailInfo = top.getJSONArray("LoanDetailInfo");
|
||||||
|
JSONObject detail = (JSONObject) loanDetailInfo.get(0);
|
||||||
entry.addNew();
|
entry.addNew();
|
||||||
setLoanApiValues(top, i);
|
setLoanApiValues(top,detail, i);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("借款单数据解析异常: " + e.getMessage(), e);
|
logger.error("借款单数据解析异常: " + e.getMessage(), e);
|
||||||
|
|
@ -363,7 +347,7 @@ public class FeeControlApiPlugin extends AbstractFormPlugin implements Plugin {
|
||||||
* @param top
|
* @param top
|
||||||
* @param i
|
* @param i
|
||||||
*/
|
*/
|
||||||
private void setLoanApiValues(JSONObject top, int i) {
|
private void setLoanApiValues(JSONObject top, JSONObject detail,int i) {
|
||||||
try {
|
try {
|
||||||
this.getModel().setValue("shjh_billno", top.getString("CompanyCode"), i);
|
this.getModel().setValue("shjh_billno", top.getString("CompanyCode"), i);
|
||||||
this.getModel().setValue("shjh_loannum", top.getString("RequestCode"), i);
|
this.getModel().setValue("shjh_loannum", top.getString("RequestCode"), i);
|
||||||
|
|
@ -371,6 +355,8 @@ public class FeeControlApiPlugin extends AbstractFormPlugin implements Plugin {
|
||||||
this.getModel().setValue("shjh_loanbalance", top.getBigDecimal("AvailableAmt"), i);
|
this.getModel().setValue("shjh_loanbalance", top.getBigDecimal("AvailableAmt"), i);
|
||||||
this.getModel().setValue("shjh_verificationnum", top.getString("StrColumn20"), i);
|
this.getModel().setValue("shjh_verificationnum", top.getString("StrColumn20"), i);
|
||||||
this.getModel().setValue("shjh_fiscalyear", top.getString("GLDate").substring(0, 4), i);
|
this.getModel().setValue("shjh_fiscalyear", top.getString("GLDate").substring(0, 4), i);
|
||||||
|
this.getModel().setValue("shjh_billheaderid", detail.getString("BillHeaderID"), i);
|
||||||
|
this.getModel().setValue("shjh_detailid", detail.getString("DetailID"), i);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("借款单赋值异常: " + e.getMessage(), e);
|
logger.error("借款单赋值异常: " + e.getMessage(), e);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,272 @@
|
||||||
|
package shjh.jhzj7.fi.fi.plugin.operate;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import kd.bos.dataentity.entity.DynamicObject;
|
||||||
|
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||||
|
import kd.bos.dataentity.utils.StringUtils;
|
||||||
|
import kd.bos.entity.ExtendedDataEntity;
|
||||||
|
import kd.bos.entity.formula.RowDataModel;
|
||||||
|
import kd.bos.entity.operate.result.OperateErrorInfo;
|
||||||
|
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
||||||
|
import kd.bos.entity.plugin.AddValidatorsEventArgs;
|
||||||
|
import kd.bos.entity.plugin.PreparePropertysEventArgs;
|
||||||
|
import kd.bos.entity.plugin.args.AfterOperationArgs;
|
||||||
|
import kd.bos.entity.validate.AbstractValidator;
|
||||||
|
import kd.bos.entity.validate.ErrorLevel;
|
||||||
|
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||||
|
import kd.sdk.plugin.Plugin;
|
||||||
|
import shjh.jhzj7.fi.fi.utils.ApiUtils;
|
||||||
|
import shjh.jhzj7.fi.fi.utils.EsbUtils;
|
||||||
|
import shjh.jhzj7.fi.fi.utils.SysUtils;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 单据操作插件-【预付款退回推送费控系统】
|
||||||
|
*
|
||||||
|
* @author LiGuiQiang
|
||||||
|
*/
|
||||||
|
public class PaymentPushSapOperation extends AbstractOperationServicePlugIn implements Plugin {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作标识
|
||||||
|
*/
|
||||||
|
private static final String KEY_PUSH_PAYMENT = "pushpayment";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作执行前,准备加载单据数据之前,触发此事件
|
||||||
|
*
|
||||||
|
* @remark 插件可以在此事件中,指定需要加载的字段
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void onPreparePropertys(PreparePropertysEventArgs e) {
|
||||||
|
super.onPreparePropertys(e);
|
||||||
|
//【收款类型】=预付款退回 and 【SAP凭证号】不为空。
|
||||||
|
e.getFieldKeys().add(PaymentValidator.KEY_RECEIVING_TYPE);
|
||||||
|
e.getFieldKeys().add(PaymentValidator.KEY_VOUCHER_NUM);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 执行操作校验前,触发此事件
|
||||||
|
*
|
||||||
|
* @remark 插件可以在此事件,调整预置的操作校验器;或者增加自定义操作校验器
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void onAddValidators(AddValidatorsEventArgs e) {
|
||||||
|
super.onAddValidators(e);
|
||||||
|
//添加自定义校验器:【收款类型】=预付款退回 and 【SAP凭证号】不为空。
|
||||||
|
e.addValidator(new PaymentValidator());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void afterExecuteOperationTransaction(AfterOperationArgs e) {
|
||||||
|
super.afterExecuteOperationTransaction(e);
|
||||||
|
//TODO:调用SAP预付款单接口
|
||||||
|
String operationKey = e.getOperationKey();
|
||||||
|
if (StringUtils.equals(KEY_PUSH_PAYMENT, operationKey)) {
|
||||||
|
DynamicObject[] dataEntities = e.getDataEntities();
|
||||||
|
if (dataEntities != null && dataEntities.length >= 1) {
|
||||||
|
StringBuilder message = new StringBuilder();
|
||||||
|
for (DynamicObject dataEntity : dataEntities) {
|
||||||
|
DynamicObject recBill = BusinessDataServiceHelper.loadSingle(dataEntity.getLong("id"), "cas_recbill");
|
||||||
|
if (null != recBill) {
|
||||||
|
//单号
|
||||||
|
String billNumber = recBill.getString("billno");
|
||||||
|
String interfaceId = "GeneraGTH";
|
||||||
|
HashMap<String, String> responseHead = ApiUtils.buildHead(interfaceId);
|
||||||
|
HashMap<String, Object> responseBody = this.assembleRequest(interfaceId,billNumber, recBill,message);
|
||||||
|
try {
|
||||||
|
String response = ApiUtils.sendPost(responseHead, responseBody, "https://hipint-stg.jahwa.com.cn:6443/gateway/HIP_ReceiveFromFM/1.0/fm/send");
|
||||||
|
if (!response.isEmpty()) {
|
||||||
|
this.parseResponse(response, billNumber, responseBody, interfaceId, message);
|
||||||
|
}
|
||||||
|
} catch (IOException ex) {
|
||||||
|
message.append("收款处理【").append(billNumber).append("】:").append(ex.getMessage()).append("\n");
|
||||||
|
}
|
||||||
|
if (message.length()!=0){
|
||||||
|
OperateErrorInfo operateErrorInfo = new OperateErrorInfo();
|
||||||
|
operateErrorInfo.setMessage(String.valueOf(message));
|
||||||
|
operateErrorInfo.setErrorLevel(ErrorLevel.Error.name());
|
||||||
|
operateErrorInfo.setPkValue(dataEntity.getPkValue());
|
||||||
|
this.operationResult.addErrorInfo(operateErrorInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义校验器
|
||||||
|
*/
|
||||||
|
static class PaymentValidator extends AbstractValidator {
|
||||||
|
/**
|
||||||
|
* 收款类型字段标识
|
||||||
|
*/
|
||||||
|
public final static String KEY_RECEIVING_TYPE = "receivingtype";
|
||||||
|
/**
|
||||||
|
* SAP凭证号字段标识
|
||||||
|
*/
|
||||||
|
public final static String KEY_VOUCHER_NUM = "shjh_vouchernum";
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void validate() {
|
||||||
|
//取数模型
|
||||||
|
RowDataModel rowDataModel = new RowDataModel(this.entityKey, this.getValidateContext().getSubEntityType());
|
||||||
|
ExtendedDataEntity[] dataEntities = this.getDataEntities();
|
||||||
|
if (dataEntities != null && dataEntities.length >= 1) {
|
||||||
|
for (ExtendedDataEntity dataEntity : dataEntities) {
|
||||||
|
if (dataEntity != null) {
|
||||||
|
rowDataModel.setRowContext(dataEntity.getDataEntity());
|
||||||
|
DynamicObject type = (DynamicObject) rowDataModel.getValue(KEY_RECEIVING_TYPE);
|
||||||
|
if (null != type) {
|
||||||
|
String number = type.getString("number");
|
||||||
|
if (null != number) {
|
||||||
|
if (!"103".equals(number)) {
|
||||||
|
// 校验不通过,输出一条错误提示
|
||||||
|
this.addErrorMessage(dataEntity, "请选择【收款类型】=【退预付款】的单据!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
String voucherNumber = (String) rowDataModel.getValue(KEY_VOUCHER_NUM);
|
||||||
|
if (voucherNumber.isEmpty()) {
|
||||||
|
this.addErrorMessage(dataEntity, "SAP凭证不能为空!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 请求头组装
|
||||||
|
* @param billNumber 单据编号
|
||||||
|
* @param recBill 收款处理
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private HashMap<String, Object> assembleRequest(String interfaceId,String billNumber,DynamicObject recBill,StringBuilder message){
|
||||||
|
HashMap<String, Object> responseBody = null;
|
||||||
|
try {
|
||||||
|
// 生成唯一事务ID
|
||||||
|
String rootContextId = UUID.randomUUID().toString();
|
||||||
|
// 获取当前请求时间,格式为 yyyy-MM-dd HH:mm:ss.SSS
|
||||||
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
|
||||||
|
String requestTime = sdf.format(new Date());
|
||||||
|
responseBody = new HashMap<>(5);
|
||||||
|
responseBody.put("rootContextID", rootContextId);
|
||||||
|
responseBody.put("requestTime", requestTime);
|
||||||
|
HashMap<String, Object> data = new HashMap<>(10);
|
||||||
|
HashMap<String, Object> header = new HashMap<>(13);
|
||||||
|
header.put("FM_RequestBillCode", "TH");
|
||||||
|
//资金系统的申请单号
|
||||||
|
header.put("FM_RequestCode", billNumber);
|
||||||
|
//公司编码
|
||||||
|
header.put("FM_CompanyCode", recBill.getString("org.number"));
|
||||||
|
//部门编码
|
||||||
|
header.put("FM_DeptCode", SysUtils.getUserDeptNumber());
|
||||||
|
//供应商编码
|
||||||
|
header.put("FM_SupplierCode", getSupOrCusNumber(recBill));
|
||||||
|
//员工工号
|
||||||
|
header.put("FM_UserCode", SysUtils.getUserNumber());
|
||||||
|
//成本中心编码
|
||||||
|
header.put("FM_CostCenterCode", recBill.getString("shjh_costcenter.number"));
|
||||||
|
//创建人工号
|
||||||
|
header.put("FM_CreateUserCode", recBill.getString("creator.number"));
|
||||||
|
header.put("FM_CurrencyCode", "RMB");
|
||||||
|
//单据主题
|
||||||
|
header.put("FM_RequestName", "退预付款推送测试");
|
||||||
|
//附件URL地址
|
||||||
|
//HashMap<String, String> url = new HashMap<>(2);
|
||||||
|
header.put("FM_AttachUr", new ArrayList<>());
|
||||||
|
//事项描述
|
||||||
|
header.put("Remark", "测试");
|
||||||
|
List<Map<String, Object>> body = new ArrayList<>();
|
||||||
|
List<Map<String, Object>> loanRequestList = new ArrayList<>();
|
||||||
|
DynamicObjectCollection entryCollection = recBill.getDynamicObjectCollection("entry");
|
||||||
|
if (!entryCollection.isEmpty()){
|
||||||
|
for (DynamicObject entry : entryCollection) {
|
||||||
|
Map<String, Object> loanItem = new HashMap<>(2);
|
||||||
|
loanItem.put("BillHeaderID", entry.getString("shjh_billheaderid"));
|
||||||
|
loanItem.put("DetailID", entry.getString("shjh_detailid"));
|
||||||
|
loanRequestList.add(loanItem);
|
||||||
|
Map<String, Object> bodyItem = new HashMap<>(4);
|
||||||
|
bodyItem.put("FM_YFKRequestCode", entry.getString("shjh_billnum"));
|
||||||
|
bodyItem.put("FM_YFKBillHeaderID", entry.getString("shjh_billheaderid"));
|
||||||
|
bodyItem.put("FM_YFKDetailID", entry.getString("shjh_detailid"));
|
||||||
|
bodyItem.put("FM_RefundAmt", entry.getBigDecimal("shjh_refundedamount"));
|
||||||
|
body.add(bodyItem);
|
||||||
|
}
|
||||||
|
header.put("FM_LoanRequestList", loanRequestList);
|
||||||
|
}
|
||||||
|
data.put("header", header);
|
||||||
|
data.put("body", body);
|
||||||
|
responseBody.put("data", data);
|
||||||
|
} catch (Exception e) {
|
||||||
|
message.append("收款处理【").append(billNumber).append("】:").append(e.getMessage()).append("\n");
|
||||||
|
EsbUtils.saveLog(billNumber, interfaceId, null, e.getMessage(), false, "ESBPushApi", "数据异常");
|
||||||
|
}
|
||||||
|
return responseBody;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 日志记录
|
||||||
|
*
|
||||||
|
* @param response 响应参数
|
||||||
|
* @param billNumber 本单单号
|
||||||
|
* @param body 请求体
|
||||||
|
* @param apiName 接口名
|
||||||
|
*/
|
||||||
|
private void parseResponse(String response, String billNumber, HashMap<String, Object> body, String apiName, StringBuilder message) {
|
||||||
|
JSONObject result = JSONObject.parseObject(response);
|
||||||
|
if (null != result) {
|
||||||
|
String formattedBody = JSON.toJSONString(body);
|
||||||
|
String code = result.getString("code");
|
||||||
|
switch (code) {
|
||||||
|
case "0":
|
||||||
|
EsbUtils.saveLog("收款处理"+billNumber, apiName, formattedBody, response, true, "ESBPushApi", "推送成功");
|
||||||
|
break;
|
||||||
|
case "1":
|
||||||
|
EsbUtils.saveLog("收款处理"+billNumber, apiName, formattedBody, response, false, "ESBPushApi", "服务异常");
|
||||||
|
message.append("收款处理【").append(billNumber).append("】:").append("服务异常").append("\n");
|
||||||
|
break;
|
||||||
|
case "2":
|
||||||
|
EsbUtils.saveLog("收款处理"+billNumber, apiName, formattedBody, response, false, "ESBPushApi", "三方服务异常");
|
||||||
|
message.append("收款处理【").append(billNumber).append("】:").append("三方服务异常").append("\n");
|
||||||
|
break;
|
||||||
|
case "3":
|
||||||
|
EsbUtils.saveLog("收款处理"+billNumber, apiName, formattedBody, response, false, "ESBPushApi", "业务异常");
|
||||||
|
message.append("收款处理【").append(billNumber).append("】:").append("业务异常").append("\n");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
EsbUtils.saveLog("收款处理"+billNumber, apiName, formattedBody, response, false, "ESBPushApi", "未知异常");
|
||||||
|
message.append("收款处理【").append(billNumber).append("】:").append("未知异常").append("\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取供应商||客户编码
|
||||||
|
*
|
||||||
|
* @param dynamicObject 收款单数据
|
||||||
|
* @return 编码
|
||||||
|
*/
|
||||||
|
private String getSupOrCusNumber(DynamicObject dynamicObject) {
|
||||||
|
String number = null;
|
||||||
|
String type = dynamicObject.getString("payertype");
|
||||||
|
if (null != type) {
|
||||||
|
DynamicObject supOrCusObj = BusinessDataServiceHelper.loadSingle(dynamicObject.getLong("payer"), type);
|
||||||
|
if (null != supOrCusObj) {
|
||||||
|
number = supOrCusObj.getString("number");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return number;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -23,11 +23,11 @@ public class ApiUtils {
|
||||||
|
|
||||||
static Log log = LogFactory.getLog(ApiUtils.class);
|
static Log log = LogFactory.getLog(ApiUtils.class);
|
||||||
|
|
||||||
public static HashMap<String,String> buildHead(){
|
public static HashMap<String,String> buildHead(String interfaceID){
|
||||||
HashMap<String,String> header = new HashMap<>(5);
|
HashMap<String,String> header = new HashMap<>(5);
|
||||||
header.put("Content-Type","application/json;charset=UTF-8");
|
header.put("Content-Type","application/json;charset=UTF-8");
|
||||||
header.put("x-Gateway-APIKey","207b5296-9866-4b4b-8146-1fea58b3c8c9");
|
header.put("x-Gateway-APIKey","207b5296-9866-4b4b-8146-1fea58b3c8c9");
|
||||||
header.put("interfaceID","FMGetJahYFKList");
|
header.put("interfaceID",interfaceID);
|
||||||
header.put("receiverID","FeiKong");
|
header.put("receiverID","FeiKong");
|
||||||
return header;
|
return header;
|
||||||
}
|
}
|
||||||
|
|
@ -87,4 +87,6 @@ public class ApiUtils {
|
||||||
}
|
}
|
||||||
return responseData;
|
return responseData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,49 @@
|
||||||
|
package shjh.jhzj7.fi.fi.utils;
|
||||||
|
|
||||||
|
import kd.bos.dataentity.entity.DynamicObject;
|
||||||
|
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||||
|
import kd.bos.servicehelper.user.UserServiceHelper;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取系统信息工具栏
|
||||||
|
* @author LiGuiQiang
|
||||||
|
*/
|
||||||
|
public class SysUtils {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取当前用户工号
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String getUserNumber(){
|
||||||
|
Long userId = UserServiceHelper.getCurrentUserId();
|
||||||
|
ArrayList<Long> list = new ArrayList<>();
|
||||||
|
list.add(userId);
|
||||||
|
// 获取用户信息
|
||||||
|
List<Map<String, Object>> userMaps = UserServiceHelper.get(list);
|
||||||
|
Map<String, Object> userMap = userMaps.get(0);
|
||||||
|
return (String) userMap.get("number");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取当前操作人部门编码
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String getUserDeptNumber(){
|
||||||
|
String deptNumber=null;
|
||||||
|
long userId = UserServiceHelper.getCurrentUserId();
|
||||||
|
long deptId = UserServiceHelper.getUserMainOrgId(userId);
|
||||||
|
if (deptId!=0L){
|
||||||
|
DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(deptId, "bos_adminorg");
|
||||||
|
if (null!=dynamicObject){
|
||||||
|
deptNumber=dynamicObject.getString("number");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return deptNumber;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue