From edc0c190d21ca07f202a091e8ac54832ca8deab5 Mon Sep 17 00:00:00 2001 From: yuxueliang0813 <407010292@qq.com> Date: Wed, 2 Jul 2025 15:53:22 +0800 Subject: [PATCH] =?UTF-8?q?sap=E7=94=9F=E6=88=90=E4=BB=98=E6=AC=BE?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E5=8D=95=E7=9A=84=E4=BC=9A=E8=AE=A1=E7=A7=91?= =?UTF-8?q?=E7=9B=AE=E8=BF=87=E6=BB=A4=E6=9D=A1=E4=BB=B6=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fi/fi/plugin/form/SappzFormPlugin.java | 10 +++++++- .../task/QuerySapCreatePayApplyTask.java | 23 +++++++++++++++++-- .../fi/webapi/ApplyAdjustBillControler.java | 18 ++++++++++----- 3 files changed, 42 insertions(+), 9 deletions(-) diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/form/SappzFormPlugin.java b/main/java/shjh/jhzj7/fi/fi/plugin/form/SappzFormPlugin.java index 77e050b..250f9f8 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/form/SappzFormPlugin.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/form/SappzFormPlugin.java @@ -21,6 +21,7 @@ import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.operation.OperationServiceHelper; +import shjh.jhzj7.fi.fi.utils.EsbUtils; import shjh.jhzj7.fi.fi.utils.JhzjUtils; import java.math.BigDecimal; @@ -467,7 +468,14 @@ public class SappzFormPlugin extends AbstractFormPlugin { String accountingsubject = (String) this.getModel().getValue("shjh_accountingsubject", selectRow);//会计科目 if (accountingsubject != null && !accountingsubject.isEmpty()) { QFilter Q8 = new QFilter("number", QCP.equals, accountingsubject); - DynamicObject accountview = BusinessDataServiceHelper.loadSingle(BD_ACCOUNTVIEW, new QFilter[]{Q8}); + Q8.and("createorg.id", QCP.equals, org.getPkValue());//当前公司ID + //如果当前数据中心是测试的则使用测试库科目表ID,否则用正式的 + if("2162562979827025920".equals(RequestContext.get().getAccountId())){ + Q8.and("accounttable.id", QCP.equals, 2125524820924832768L);//测试科目表 + }else{ + Q8.and("accounttable.id", QCP.equals, EsbUtils.ACCTABLE);//正式科目表 + } + DynamicObject accountview = BusinessDataServiceHelper.loadSingle(BD_ACCOUNTVIEW, Q8.toArray()); if (null == accountview) { handleError("同步失败,凭证号:" + fkBillNum + "的会计科目不存在", fkBillNum, apimenthod, null); this.getView().showMessage("同步失败,凭证号:" + fkBillNum + "的会计科目不存在"); diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/task/QuerySapCreatePayApplyTask.java b/main/java/shjh/jhzj7/fi/fi/plugin/task/QuerySapCreatePayApplyTask.java index e6aa0f5..29aeeba 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/task/QuerySapCreatePayApplyTask.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/task/QuerySapCreatePayApplyTask.java @@ -17,6 +17,7 @@ import kd.bos.orm.query.QFilter; import kd.bos.schedule.executor.AbstractTask; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.operation.OperationServiceHelper; +import shjh.jhzj7.fi.fi.utils.EsbUtils; import shjh.jhzj7.fi.fi.utils.JhzjUtils; import java.math.BigDecimal; @@ -214,9 +215,25 @@ public class QuerySapCreatePayApplyTask extends AbstractTask { //SAP会计科目 if (accountingsubject != null && !accountingsubject.isEmpty()) { - QFilter Q8 = new QFilter("number", QCP.equals, accountingsubject); - DynamicObject accountview = BusinessDataServiceHelper.loadSingle(BD_ACCOUNTVIEW, new QFilter[]{Q8}); + QFilter Q8 = new QFilter("number", QCP.equals, accountingsubject);//会计科目编号 + Q8.and("createorg.id", QCP.equals, org.getPkValue());//当前公司ID + //如果当前数据中心是测试的则使用测试库科目表ID,否则用正式的 + if("2162562979827025920".equals(RequestContext.get().getAccountId())){ + Q8.and("accounttable.id", QCP.equals, 2125524820924832768L);//测试科目表 + }else{ + Q8.and("accounttable.id", QCP.equals, EsbUtils.ACCTABLE);//正式科目表 + } + DynamicObject accountview = BusinessDataServiceHelper.loadSingle(BD_ACCOUNTVIEW, Q8.toArray()); + if(accountview == null){ + logger.error("同步失败,凭证号:" + fkBillNum + "的SAP会计科目在金蝶中未找到对应科目"); + JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,SAP会计科目在金蝶中未找到对应科目", false, "API"); + continue; + } ap_payapply.set("shjh_sapkjkm", accountview); + }else{ + logger.error("同步失败,凭证号:" + fkBillNum + "的SAP会计科目为空"); + JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,SAP会计科目为空", false, "API"); + continue; } //请款事由 @@ -244,6 +261,7 @@ public class QuerySapCreatePayApplyTask extends AbstractTask { KURSF = KURSF.setScale(5, RoundingMode.HALF_UP); ap_payapply.set("exchangerate", KURSF); } catch (NumberFormatException e) { + logger.error("同步失败,凭证号:" + fkBillNum + "的汇率处理异常"); continue; } @@ -252,6 +270,7 @@ public class QuerySapCreatePayApplyTask extends AbstractTask { dmbtr = dmbtr.setScale(2, RoundingMode.HALF_UP); ap_payapply.set("appseleamount", dmbtr); } catch (NumberFormatException e) { + logger.error("同步失败,凭证号:" + fkBillNum + "的申请金额折结算币别处理异常"); continue; } diff --git a/main/java/shjh/jhzj7/fi/fi/webapi/ApplyAdjustBillControler.java b/main/java/shjh/jhzj7/fi/fi/webapi/ApplyAdjustBillControler.java index 1bdc72f..574eb7a 100644 --- a/main/java/shjh/jhzj7/fi/fi/webapi/ApplyAdjustBillControler.java +++ b/main/java/shjh/jhzj7/fi/fi/webapi/ApplyAdjustBillControler.java @@ -5,7 +5,6 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONException; import com.alibaba.fastjson.JSONObject; import com.drew.lang.annotations.NotNull; -import kd.bos.api.client.ApiResult; import kd.bos.context.RequestContext; import kd.bos.dataentity.OperateOption; import kd.bos.dataentity.entity.DynamicObject; @@ -26,9 +25,9 @@ import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.operation.OperationServiceHelper; +import shjh.jhzj7.fi.fi.utils.EsbUtils; import shjh.jhzj7.fi.fi.utils.JhzjUtils; import shjh.jhzj7.fi.fi.webapi.model.ApiResultPayAdjustExt; -import shjh.jhzj7.fi.fi.webapi.model.ApiResultPayApplyExt; import shjh.jhzj7.fi.fi.webapi.model.ApplyAdjustBillModel; import javax.validation.Valid; @@ -517,7 +516,7 @@ public class ApplyAdjustBillControler { // 设置SAP会计科目 if (!accountingsubject.isEmpty()) { - DynamicObject accountview = loadAccountViewByNumber(accountingsubject); + DynamicObject accountview = loadAccountViewByNumber(accountingsubject,org); if (accountview == null) { handleError("同步失败,调整单号:" + fkBillNum + "的会计科目不存在", fkBillNum, null); return "同步失败,调整单号:" + fkBillNum + "的会计科目不存在"; @@ -598,9 +597,16 @@ public class ApplyAdjustBillControler { * @param number 会计科目编号 * @return 会计科目信息的动态对象 */ - private DynamicObject loadAccountViewByNumber(String number) { - QFilter Q9 = new QFilter("number", QCP.equals, number); - return BusinessDataServiceHelper.loadSingle(BD_ACCOUNTVIEW, new QFilter[]{Q9}); + private DynamicObject loadAccountViewByNumber(String number,DynamicObject org) { + QFilter Q8 = new QFilter("number", QCP.equals, number); + Q8.and("createorg.id", QCP.equals, org.getPkValue());//当前公司ID + //如果当前数据中心是测试的则使用测试库科目表ID,否则用正式的 + if("2162562979827025920".equals(RequestContext.get().getAccountId())){ + Q8.and("accounttable.id", QCP.equals, 2125524820924832768L);//测试科目表 + }else{ + Q8.and("accounttable.id", QCP.equals, EsbUtils.ACCTABLE);//正式科目表 + } + return BusinessDataServiceHelper.loadSingle(BD_ACCOUNTVIEW, Q8.toArray()); } /**