收款单推员工还款接口
This commit is contained in:
parent
a6a4481676
commit
b8e40c83e1
|
|
@ -169,6 +169,8 @@ public class ClaimConvertPlugin extends AbstractConvertPlugIn implements Plugin
|
|||
targetEntry.set("shjh_fiscalyear", entry.getString("shjh_fiscalyear"));
|
||||
targetEntry.set("shjh_billheaderid", entry.getString("shjh_billheaderid"));
|
||||
targetEntry.set("shjh_detailid", entry.getString("shjh_detailid"));
|
||||
targetEntry.set("shjh_usercode", entry.getString("shjh_usercode"));
|
||||
targetEntry.set("shjh_deptcode", entry.getString("shjh_deptcode"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -137,10 +137,11 @@ public class ClaimBillButtonAssPlugin extends AbstractFormPlugin implements Plug
|
|||
// 根据apiKey判断需要填充的字段
|
||||
if ("paymentApi".equals(apiKey)) {
|
||||
setPaymentValues(returnData, i);
|
||||
setPublicValues(returnData,i);
|
||||
} else if ("loanApi".equals(apiKey)) {
|
||||
setLoanValues(returnData, i);
|
||||
setPublicValues(returnData,i);
|
||||
}
|
||||
|
||||
this.getView().updateView(ClaimFieldsInfo.ENTRY);
|
||||
}
|
||||
}
|
||||
|
|
@ -148,7 +149,7 @@ public class ClaimBillButtonAssPlugin extends AbstractFormPlugin implements Plug
|
|||
}
|
||||
|
||||
/**
|
||||
* 反写预付款相关分录字段
|
||||
* 反写预付款特定字段
|
||||
* @param returnData
|
||||
* @param i
|
||||
*/
|
||||
|
|
@ -167,16 +168,10 @@ public class ClaimBillButtonAssPlugin extends AbstractFormPlugin implements Plug
|
|||
this.getModel().setValue(ClaimFieldsInfo.PAYMENT_AMOUNT, returnData.get(i).getBigDecimal(ClaimFieldsInfo.PAYMENT_AMOUNT), i);
|
||||
//单据可退还金额
|
||||
this.getModel().setValue(ClaimFieldsInfo.DOCUMENT_AMOUNT, returnData.get(i).getBigDecimal(ClaimFieldsInfo.DOCUMENT_AMOUNT), 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("shjh_billheaderid", returnData.get(i).getString("shjh_billheaderid"), i);
|
||||
this.getModel().setValue("shjh_detailid", returnData.get(i).getString("shjh_detailid"), i);
|
||||
}
|
||||
|
||||
/**
|
||||
* 反写借款单相关分录字段
|
||||
* 反写借款单特定字段
|
||||
* @param returnData
|
||||
* @param i
|
||||
*/
|
||||
|
|
@ -187,12 +182,26 @@ public class ClaimBillButtonAssPlugin extends AbstractFormPlugin implements Plug
|
|||
this.getModel().setValue(ClaimFieldsInfo.LOAN_AMOUNT, returnData.get(i).getBigDecimal(ClaimFieldsInfo.LOAN_AMOUNT), i);
|
||||
//借款余额
|
||||
this.getModel().setValue(ClaimFieldsInfo.LOAN_BALANCE, returnData.get(i).getBigDecimal(ClaimFieldsInfo.LOAN_BALANCE), i);
|
||||
}
|
||||
|
||||
/**
|
||||
* 反写共有参数
|
||||
* @param returnData
|
||||
* @param i
|
||||
*/
|
||||
private void setPublicValues(DynamicObjectCollection returnData, int 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("shjh_billheaderid", returnData.get(i).getString("shjh_billheaderid"), i);
|
||||
this.getModel().setValue("shjh_detailid", returnData.get(i).getString("shjh_detailid"), i);
|
||||
//关联id
|
||||
this.getModel().setValue(ClaimFieldsInfo.HEADER_ID, returnData.get(i).getString(ClaimFieldsInfo.HEADER_ID), i);
|
||||
//关联分录id
|
||||
this.getModel().setValue(ClaimFieldsInfo.DETAIL_ID, returnData.get(i).getString(ClaimFieldsInfo.DETAIL_ID), i);
|
||||
//员工编码
|
||||
this.getModel().setValue(ClaimFieldsInfo.USER_CODE, returnData.get(i).getString(ClaimFieldsInfo.USER_CODE), i);
|
||||
//部门编码
|
||||
this.getModel().setValue(ClaimFieldsInfo.DEPT_CODE, returnData.get(i).getString(ClaimFieldsInfo.DEPT_CODE), i);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -82,6 +82,8 @@ public class ClaimBillFormPlugin extends AbstractFormPlugin implements Plugin {
|
|||
//当【收款类型】=员工还款时,显示该按钮
|
||||
showLoanButton();
|
||||
setCostCenter();
|
||||
//设置付款人类型-职员
|
||||
setPaymentType();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
|
@ -105,4 +107,8 @@ public class ClaimBillFormPlugin extends AbstractFormPlugin implements Plugin {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setPaymentType() {
|
||||
this.getModel().setValue("paymenttype","bos_user");
|
||||
}
|
||||
}
|
||||
|
|
@ -185,6 +185,8 @@ public class FeeControlApiPlugin extends AbstractFormPlugin implements Plugin {
|
|||
" \"RequestDate\": \"2025-01-09 11:29:22\",\n" +
|
||||
" \"GLDate\": \"2025-01-09 00:00:00\",\n" +
|
||||
" \"RequestUserName\": \"余超\",\n" +
|
||||
" \"UserCode\": \"HCS2001\",\n" +
|
||||
" \"DeptCode\": \"1000001\",\n" +
|
||||
" \"AvailableAmt\": 80.5,\n" +
|
||||
" \"SupplierId\": 89948,\n" +
|
||||
" \"SupplierId_Name\": \"品销宝\",\n" +
|
||||
|
|
@ -252,7 +254,96 @@ public class FeeControlApiPlugin extends AbstractFormPlugin implements Plugin {
|
|||
String interfaceID="FMGetJahJKYList";
|
||||
HashMap<String, String> head = ApiUtils.buildHead(interfaceID);
|
||||
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");
|
||||
String response="{\n" +
|
||||
" \"rootContextID\": \"8as6dfasd6f98as7d6f9a98sd76f\",\n" +
|
||||
" \"code\": \"0\",\n" +
|
||||
" \"msg\": \"成功\",\n" +
|
||||
" \"data\": {\n" +
|
||||
" \"total\": 3,\n" +
|
||||
" \"LoanItems\": [\n" +
|
||||
" {\n" +
|
||||
" \"ID\": \"a50547a4-d661-486b-a5c0-adecdbe958b9\",\n" +
|
||||
" \"RequestCode\": \"JKY2025011400001\",\n" +
|
||||
" \"RequestName\": \"财务及分销系统余超2025-01-14员工借款单\",\n" +
|
||||
" \"RequestDeptID\": \"77ace8b5-557e-45d9-a3cf-e4831ec37231\",\n" +
|
||||
" \"RequestAmt\": 111,\n" +
|
||||
" \"RequestDate\": \"2025-01-14 14:57:13\",\n" +
|
||||
" \"GLDate\": \"2025-01-14 00:00:00\",\n" +
|
||||
" \"RequestDeptName\": \"财务及分销系统\",\n" +
|
||||
" \"ProjectName\": null,\n" +
|
||||
" \"RequestUserID\": \"ce989821-2bcb-45b9-a278-230d3ce627f3\",\n" +
|
||||
" \"RequestUserName\": \"余超\",\n" +
|
||||
" \"UserCode\": \"HCS2001\",\n" +
|
||||
" \"DeptCode\": \"1000001\",\n" +
|
||||
" \"RequestUserNumber\": null,\n" +
|
||||
" \"AvailableAmt\": 111,\n" +
|
||||
" \"CurrencyId\": 10510,\n" +
|
||||
" \"CurrencyName\": \"人民币\",\n" +
|
||||
" \"StrColumn6\": \"6217001180014130648\",\n" +
|
||||
" \"StrColumn7\": \"建设银行\",\n" +
|
||||
" \"CompanyCode\": \"C001\",\n" +
|
||||
" \"CompanyName\": \"上海家化联合股份有限公司\",\n" +
|
||||
" \"RequestRemark\": \"上传\",\n" +
|
||||
" \"StrColumn20\": \"1600000001\",\n" +
|
||||
" \"LoanDetailInfo\": null\n" +
|
||||
" },\n" +
|
||||
" {\n" +
|
||||
" \"ID\": \"b60358b5-e762-497b-b6d1-bdfdfbe123c4\",\n" +
|
||||
" \"RequestCode\": \"JKY2025021000002\",\n" +
|
||||
" \"RequestName\": \"技术部张三2025-02-10员工借款单\",\n" +
|
||||
" \"RequestDeptID\": \"88bdf9d1-9a8d-44f7-bfa1-0ab7893cd321\",\n" +
|
||||
" \"RequestAmt\": 500,\n" +
|
||||
" \"RequestDate\": \"2025-02-10 09:30:00\",\n" +
|
||||
" \"GLDate\": \"2025-02-10 00:00:00\",\n" +
|
||||
" \"RequestDeptName\": \"技术部\",\n" +
|
||||
" \"ProjectName\": \"ERP升级项目\",\n" +
|
||||
" \"RequestUserID\": \"ab123456-7890-1234-5678-abcdef123456\",\n" +
|
||||
" \"RequestUserName\": \"张三\",\n" +
|
||||
" \"UserCode\": \"JS2025\",\n" +
|
||||
" \"DeptCode\": \"2000002\",\n" +
|
||||
" \"RequestUserNumber\": \"003\",\n" +
|
||||
" \"AvailableAmt\": 300,\n" +
|
||||
" \"CurrencyId\": 10510,\n" +
|
||||
" \"CurrencyName\": \"人民币\",\n" +
|
||||
" \"StrColumn6\": \"6225881234567890\",\n" +
|
||||
" \"StrColumn7\": \"工商银行\",\n" +
|
||||
" \"CompanyCode\": \"C002\",\n" +
|
||||
" \"CompanyName\": \"北京科技有限公司\",\n" +
|
||||
" \"RequestRemark\": \"差旅借款\",\n" +
|
||||
" \"StrColumn20\": \"1600000002\",\n" +
|
||||
" \"LoanDetailInfo\": null\n" +
|
||||
" },\n" +
|
||||
" {\n" +
|
||||
" \"ID\": \"c78945c3-f983-4d7e-c3b2-3456fdbe456a\",\n" +
|
||||
" \"RequestCode\": \"JKY2025030100003\",\n" +
|
||||
" \"RequestName\": \"市场部李四2025-03-01员工借款单\",\n" +
|
||||
" \"RequestDeptID\": \"99ace8d5-1234-45d9-a3cf-9876cde45678\",\n" +
|
||||
" \"RequestAmt\": 880,\n" +
|
||||
" \"RequestDate\": \"2025-03-01 11:45:00\",\n" +
|
||||
" \"GLDate\": \"2025-03-01 00:00:00\",\n" +
|
||||
" \"RequestDeptName\": \"市场部\",\n" +
|
||||
" \"ProjectName\": null,\n" +
|
||||
" \"RequestUserID\": \"cd456789-1234-9876-5432-ba9876def123\",\n" +
|
||||
" \"RequestUserName\": \"李四\",\n" +
|
||||
" \"UserCode\": \"SC2025\",\n" +
|
||||
" \"DeptCode\": \"3000003\",\n" +
|
||||
" \"RequestUserNumber\": \"007\",\n" +
|
||||
" \"AvailableAmt\": 880,\n" +
|
||||
" \"CurrencyId\": 10510,\n" +
|
||||
" \"CurrencyName\": \"人民币\",\n" +
|
||||
" \"StrColumn6\": \"6230580001234567\",\n" +
|
||||
" \"StrColumn7\": \"农业银行\",\n" +
|
||||
" \"CompanyCode\": \"C003\",\n" +
|
||||
" \"CompanyName\": \"广州市场发展有限公司\",\n" +
|
||||
" \"RequestRemark\": \"项目启动备用金\",\n" +
|
||||
" \"StrColumn20\": \"1600000003\",\n" +
|
||||
" \"LoanDetailInfo\": null\n" +
|
||||
" }\n" +
|
||||
" ],\n" +
|
||||
" \"VoucherItems\": []\n" +
|
||||
" }\n" +
|
||||
"}\n";
|
||||
if (response != null) {
|
||||
Boolean result = parseResponse(response, billNumber, String.valueOf(body), "借款单清单查询接口");
|
||||
if (result) {
|
||||
|
|
@ -311,6 +402,8 @@ public class FeeControlApiPlugin extends AbstractFormPlugin implements Plugin {
|
|||
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);
|
||||
this.getModel().setValue("shjh_usercode", top.getString("UserCode"), i);
|
||||
this.getModel().setValue("shjh_deptcode", top.getString("DeptCode"), i);
|
||||
} catch (Exception e) {
|
||||
logger.error("预付单赋值异常: " + e.getMessage(), e);
|
||||
}
|
||||
|
|
@ -331,10 +424,8 @@ public class FeeControlApiPlugin extends AbstractFormPlugin implements Plugin {
|
|||
entry.clear();
|
||||
for (int i = 0; i < rows.size(); i++) {
|
||||
JSONObject top = (JSONObject) rows.get(i);
|
||||
JSONArray loanDetailInfo = top.getJSONArray("LoanDetailInfo");
|
||||
JSONObject detail = (JSONObject) loanDetailInfo.get(0);
|
||||
entry.addNew();
|
||||
setLoanApiValues(top,detail, i);
|
||||
setLoanApiValues(top, i);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error("借款单数据解析异常: " + e.getMessage(), e);
|
||||
|
|
@ -347,7 +438,7 @@ public class FeeControlApiPlugin extends AbstractFormPlugin implements Plugin {
|
|||
* @param top
|
||||
* @param i
|
||||
*/
|
||||
private void setLoanApiValues(JSONObject top, JSONObject detail,int i) {
|
||||
private void setLoanApiValues(JSONObject top,int i) {
|
||||
try {
|
||||
this.getModel().setValue("shjh_billno", top.getString("CompanyCode"), i);
|
||||
this.getModel().setValue("shjh_loannum", top.getString("RequestCode"), i);
|
||||
|
|
@ -355,8 +446,9 @@ public class FeeControlApiPlugin extends AbstractFormPlugin implements Plugin {
|
|||
this.getModel().setValue("shjh_loanbalance", top.getBigDecimal("AvailableAmt"), 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_billheaderid", detail.getString("BillHeaderID"), i);
|
||||
this.getModel().setValue("shjh_detailid", detail.getString("DetailID"), i);
|
||||
this.getModel().setValue("shjh_billheaderid", top.getString("ID"), i);
|
||||
this.getModel().setValue("shjh_usercode", top.getString("UserCode"), i);
|
||||
this.getModel().setValue("shjh_deptcode", top.getString("DeptCode"), i);
|
||||
} catch (Exception e) {
|
||||
logger.error("借款单赋值异常: " + e.getMessage(), e);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -115,4 +115,8 @@ public class ClaimFieldsInfo {
|
|||
public static final String ASS_LOAN= "shjh_assloan";
|
||||
|
||||
public static final String USER_COST_CENTER= "shjh_fycc";
|
||||
public static final String HEADER_ID= "shjh_billheaderid";
|
||||
public static final String DETAIL_ID= "shjh_detailid";
|
||||
public static final String USER_CODE= "shjh_usercode";
|
||||
public static final String DEPT_CODE= "shjh_deptcode";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,253 @@
|
|||
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 java.io.IOException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 单据操作插件-【借款单推送费控系统】
|
||||
* @author LiGuiQiang
|
||||
*/
|
||||
public class LoanPushSapOperation extends AbstractOperationServicePlugIn implements Plugin {
|
||||
|
||||
/**
|
||||
* 操作标识
|
||||
*/
|
||||
private static final String KEY_PUSH_LOAN = "pushloan";
|
||||
|
||||
/**
|
||||
* 操作执行前,准备加载单据数据之前,触发此事件
|
||||
*
|
||||
* @remark 插件可以在此事件中,指定需要加载的字段
|
||||
*/
|
||||
@Override
|
||||
public void onPreparePropertys(PreparePropertysEventArgs e) {
|
||||
super.onPreparePropertys(e);
|
||||
//【收款类型】=预付款退回 and 【SAP凭证号】不为空。
|
||||
e.getFieldKeys().add(PaymentPushSapOperation.PaymentValidator.KEY_RECEIVING_TYPE);
|
||||
e.getFieldKeys().add(PaymentPushSapOperation.PaymentValidator.KEY_VOUCHER_NUM);
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行操作校验前,触发此事件
|
||||
*
|
||||
* @remark 插件可以在此事件,调整预置的操作校验器;或者增加自定义操作校验器
|
||||
*/
|
||||
@Override
|
||||
public void onAddValidators(AddValidatorsEventArgs e) {
|
||||
super.onAddValidators(e);
|
||||
//添加自定义校验器:【收款类型】=员工还款 and 【SAP凭证号】不为空。
|
||||
e.addValidator(new PaymentPushSapOperation.PaymentValidator());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void afterExecuteOperationTransaction(AfterOperationArgs e) {
|
||||
super.afterExecuteOperationTransaction(e);
|
||||
//TODO:调用SAP预付款单接口
|
||||
String operationKey = e.getOperationKey();
|
||||
if (StringUtils.equals(KEY_PUSH_LOAN, 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 = "GeneraRepayBill";
|
||||
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 (!"109".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", "PersonalRepay");
|
||||
//资金系统的申请单号
|
||||
header.put("FM_RequestCode", billNumber);
|
||||
//公司编码
|
||||
header.put("FM_CompanyCode", recBill.getString("org.number"));
|
||||
//部门编码
|
||||
header.put("FM_DeptCode", recBill.getDynamicObjectCollection("entry").get(0).getString("shjh_deptcode"));
|
||||
//还款人工号
|
||||
header.put("FM_UserCode", recBill.getDynamicObjectCollection("entry").get(0).getString("shjh_usercode"));
|
||||
//收款银行账号
|
||||
header.put("FM_BankCode",recBill.getString("accountbank.number"));
|
||||
//成本中心编码
|
||||
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_JKYRequestCode", entry.getString("shjh_loannum"));
|
||||
bodyItem.put("FM_JKYBillHeaderID", entry.getString("shjh_billheaderid"));
|
||||
bodyItem.put("FM_JKYDetailID", entry.getString("shjh_detailid"));
|
||||
bodyItem.put("FM_RepayAmt", 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -168,11 +168,11 @@ public class PaymentPushSapOperation extends AbstractOperationServicePlugIn impl
|
|||
//公司编码
|
||||
header.put("FM_CompanyCode", recBill.getString("org.number"));
|
||||
//部门编码
|
||||
header.put("FM_DeptCode", SysUtils.getUserDeptNumber());
|
||||
header.put("FM_DeptCode", recBill.getDynamicObjectCollection("entry").get(0).getString("shjh_deptcode"));
|
||||
//供应商编码
|
||||
header.put("FM_SupplierCode", getSupOrCusNumber(recBill));
|
||||
//员工工号
|
||||
header.put("FM_UserCode", SysUtils.getUserNumber());
|
||||
header.put("FM_UserCode", recBill.getDynamicObjectCollection("entry").get(0).getString("shjh_usercode"));
|
||||
//成本中心编码
|
||||
header.put("FM_CostCenterCode", recBill.getString("shjh_costcenter.number"));
|
||||
//创建人工号
|
||||
|
|
|
|||
|
|
@ -23,11 +23,11 @@ public class ApiUtils {
|
|||
|
||||
static Log log = LogFactory.getLog(ApiUtils.class);
|
||||
|
||||
public static HashMap<String,String> buildHead(String interfaceID){
|
||||
public static HashMap<String,String> buildHead(String interfaceId){
|
||||
HashMap<String,String> header = new HashMap<>(5);
|
||||
header.put("Content-Type","application/json;charset=UTF-8");
|
||||
header.put("x-Gateway-APIKey","207b5296-9866-4b4b-8146-1fea58b3c8c9");
|
||||
header.put("interfaceID",interfaceID);
|
||||
header.put("interfaceID",interfaceId);
|
||||
header.put("receiverID","FeiKong");
|
||||
return header;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,8 +28,6 @@ public class SysUtils {
|
|||
return (String) userMap.get("number");
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 获取当前操作人部门编码
|
||||
* @return
|
||||
|
|
@ -46,4 +44,6 @@ public class SysUtils {
|
|||
}
|
||||
return deptNumber;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue