diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/convert/ClaimConvertPlugin.java b/main/java/shjh/jhzj7/fi/fi/plugin/convert/ClaimConvertPlugin.java index c1a0d39..1799f75 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/convert/ClaimConvertPlugin.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/convert/ClaimConvertPlugin.java @@ -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")); } } } diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/form/ClaimBillButtonAssPlugin.java b/main/java/shjh/jhzj7/fi/fi/plugin/form/ClaimBillButtonAssPlugin.java index 436b190..844dce9 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/form/ClaimBillButtonAssPlugin.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/form/ClaimBillButtonAssPlugin.java @@ -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); } } \ No newline at end of file diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/form/ClaimBillFormPlugin.java b/main/java/shjh/jhzj7/fi/fi/plugin/form/ClaimBillFormPlugin.java index 9d2e365..5109412 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/form/ClaimBillFormPlugin.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/form/ClaimBillFormPlugin.java @@ -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"); + } } \ No newline at end of file diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/form/FeeControlApiPlugin.java b/main/java/shjh/jhzj7/fi/fi/plugin/form/FeeControlApiPlugin.java index bf0b532..ce4f189 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/form/FeeControlApiPlugin.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/form/FeeControlApiPlugin.java @@ -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 head = ApiUtils.buildHead(interfaceID); HashMap 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); } diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/form/info/ClaimFieldsInfo.java b/main/java/shjh/jhzj7/fi/fi/plugin/form/info/ClaimFieldsInfo.java index 0b1df9b..049f476 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/form/info/ClaimFieldsInfo.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/form/info/ClaimFieldsInfo.java @@ -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"; } diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/operate/LoanPushSapOperation.java b/main/java/shjh/jhzj7/fi/fi/plugin/operate/LoanPushSapOperation.java new file mode 100644 index 0000000..454935f --- /dev/null +++ b/main/java/shjh/jhzj7/fi/fi/plugin/operate/LoanPushSapOperation.java @@ -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 responseHead = ApiUtils.buildHead(interfaceId); + HashMap 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 assembleRequest(String interfaceId,String billNumber,DynamicObject recBill,StringBuilder message){ + HashMap 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 data = new HashMap<>(10); + HashMap 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 url = new HashMap<>(2); + header.put("FM_AttachUr", new ArrayList<>()); + //事项描述 + header.put("Remark", "测试"); + List> body = new ArrayList<>(); + List> loanRequestList = new ArrayList<>(); + DynamicObjectCollection entryCollection = recBill.getDynamicObjectCollection("entry"); + if (!entryCollection.isEmpty()){ + for (DynamicObject entry : entryCollection) { + Map loanItem = new HashMap<>(2); + loanItem.put("BillHeaderID", entry.getString("shjh_billheaderid")); + loanItem.put("DetailID", entry.getString("shjh_detailid")); + loanRequestList.add(loanItem); + Map 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 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; + } + } + } +} \ No newline at end of file diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/operate/PaymentPushSapOperation.java b/main/java/shjh/jhzj7/fi/fi/plugin/operate/PaymentPushSapOperation.java index 173bd64..99488d3 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/operate/PaymentPushSapOperation.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/operate/PaymentPushSapOperation.java @@ -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")); //创建人工号 diff --git a/main/java/shjh/jhzj7/fi/fi/utils/ApiUtils.java b/main/java/shjh/jhzj7/fi/fi/utils/ApiUtils.java index 95d0a13..68f5283 100644 --- a/main/java/shjh/jhzj7/fi/fi/utils/ApiUtils.java +++ b/main/java/shjh/jhzj7/fi/fi/utils/ApiUtils.java @@ -23,11 +23,11 @@ public class ApiUtils { static Log log = LogFactory.getLog(ApiUtils.class); - public static HashMap buildHead(String interfaceID){ + public static HashMap buildHead(String interfaceId){ HashMap 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; } diff --git a/main/java/shjh/jhzj7/fi/fi/utils/SysUtils.java b/main/java/shjh/jhzj7/fi/fi/utils/SysUtils.java index a28638d..876a74c 100644 --- a/main/java/shjh/jhzj7/fi/fi/utils/SysUtils.java +++ b/main/java/shjh/jhzj7/fi/fi/utils/SysUtils.java @@ -28,8 +28,6 @@ public class SysUtils { return (String) userMap.get("number"); } - - /** * 获取当前操作人部门编码 * @return @@ -46,4 +44,6 @@ public class SysUtils { } return deptNumber; } + + }