From 595d59dd5945651fed0078205d5f6e08655d34f2 Mon Sep 17 00:00:00 2001 From: yuxueliang0813 <407010292@qq.com> Date: Fri, 27 Jun 2025 11:19:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B6=E6=AC=BE=E5=8D=95=E3=80=81=E9=A2=84?= =?UTF-8?q?=E6=8F=90=E8=AE=B0=E8=B4=A6=E5=8D=95=E3=80=81=E5=AE=9A=E6=9C=9F?= =?UTF-8?q?=E9=A2=84=E6=8F=90=E3=80=81=E4=B8=8A=E5=88=92=E3=80=81=E4=B8=8B?= =?UTF-8?q?=E6=8B=A8=E6=A0=B8=E7=AE=97=E7=BB=B4=E5=BA=A6=E4=BC=A0=E5=80=BC?= =?UTF-8?q?sap=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../operate/DepositpreintSapOperation.java | 39 +++++++++++++++++-- .../operate/RecPushVoucherOperation.java | 13 +++++-- .../plugin/operate/RevenueBillOperation.java | 39 +++++++++++++++++-- .../operate/TransdownbillOperation.java | 11 ++++-- .../plugin/operate/TransupbillOperation.java | 9 +++-- 5 files changed, 92 insertions(+), 19 deletions(-) diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/operate/DepositpreintSapOperation.java b/main/java/shjh/jhzj7/fi/fi/plugin/operate/DepositpreintSapOperation.java index 9ba9417..6f2e881 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/operate/DepositpreintSapOperation.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/operate/DepositpreintSapOperation.java @@ -28,6 +28,7 @@ import shjh.jhzj7.fi.fi.utils.domin.ResponseData; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.Map; /** * 定期预提记账处理 shjh_cim_depositprein_ext-单据推送sap操作插件 @@ -75,13 +76,15 @@ public class DepositpreintSapOperation extends AbstractOperationServicePlugIn im DynamicObject prinfo;//定期预提记账处理单 JSONObject sapReturnData; ResponseData respdata; + //组装核算维度与sap凭证item字段对应关系map + Map sapMap = SapUtils.getAsstacttypeMap(); for (int i = 0; i < dos.length; i++) { prinfo = BusinessDataServiceHelper.loadSingle(dos[i].getPkValue(), dos[i].getDataEntityType().getName()); if(prinfo.getBoolean("shjh_needvoucher") && !prinfo.getBoolean("shjh_sendsap")){ //如果预提记账处理单需要生成凭证且未推送sap的才推送sap //判断原蓝单和红单,调用sap不同接口 操作类别 冲销预提收益-红单 预提收益-蓝单 if("preint".equals(prinfo.getString("operatetype"))){ - sapReturnData = sendBlueVoucher(prinfo);//蓝单 + sapReturnData = sendBlueVoucher(prinfo,sapMap);//蓝单 if(sapReturnData != null && "0".equals(sapReturnData.getString("code"))){ //解析sap凭证接口返回值 respdata = ApiUtils.getResponseData(sapReturnData); @@ -169,7 +172,7 @@ public class DepositpreintSapOperation extends AbstractOperationServicePlugIn im return sapReturnData; } - private JSONObject sendBlueVoucher(DynamicObject prinfo){ + private JSONObject sendBlueVoucher(DynamicObject prinfo, Map sapMap){ //SAP定期预提收益凭证接口入参组装和调用 JSONObject IS_HEADER = new JSONObject();//抬头 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//日期格式化工具 @@ -252,11 +255,39 @@ public class DepositpreintSapOperation extends AbstractOperationServicePlugIn im hsxminfo = QueryServiceHelper.queryOne(ccName, "id,name,number", new QFilter[]{new QFilter("id", QCP.equals, glassistbd.getLong("assval"))});//维度值 item.put("KOSTL",hsxminfo.getString("number"));//成本中心_成本中心 + }else if("f000054".equals(asstype) || "f000014".equals(asstype)){ + //原因码 f000014 + //付款原因代码 f000054 + hsxminfo = QueryServiceHelper.queryOne("gl_cashflowitem", "id,name,number", + new QFilter[]{new QFilter("id", QCP.equals, glassistbd.getLong("assval"))});//维度值 + item.put("RSTGR",hsxminfo.getString("number")); + } + } + gl_assist_bd = QueryServiceHelper.query("gl_assist_txt", "asstype,assval", + new QFilter[]{new QFilter("hg.id", QCP.equals, assgrpinfo.getPkValue())});//核算项目组合纵表-文本 + for (int j = 0; j < gl_assist_bd.size(); j++) { + glassistbd = gl_assist_bd.get(j); + asstype = glassistbd.getString("asstype");//核算项目类型-对应核算维度的字段名 + if("f000054".equals(asstype)){ + //原因码 f000054 + item.put("RSTGR",glassistbd.getString("assval")); + }else if("f000056".equals(asstype)){ + //分配编号 f000056 + item.put("ZUONR",glassistbd.getString("assval")); + }else if("f000023".equals(asstype)){ + //税码 f000023 + item.put("MWSKZ",glassistbd.getString("assval")); + }else if("f000031".equals(asstype)){ + //税基 f000031 + item.put("FWBAS",glassistbd.getString("assval")); + }else if("f000060".equals(asstype)){ + //行项目的参考码 + item.put("XREF3",glassistbd.getString("assval")); + }else if(sapMap.containsKey(asstype)){ + item.put(sapMap.get(asstype),glassistbd.getString("assval")); } } } -// item.put("RSTGR", "014");//原因代码_原因码 -// item.put("SGTXT", SGTXT);//行项目文本_SAP会计科目行项目号 IT_ITEM.add(item); } }else{ diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/operate/RecPushVoucherOperation.java b/main/java/shjh/jhzj7/fi/fi/plugin/operate/RecPushVoucherOperation.java index f314336..f78abe6 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/operate/RecPushVoucherOperation.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/operate/RecPushVoucherOperation.java @@ -32,7 +32,9 @@ import shjh.jhzj7.fi.fi.utils.domin.ResponseData; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.Map; +import static shjh.jhzj7.fi.fi.utils.SapUtils.getAsstacttypeMap; import static shjh.jhzj7.fi.fi.utils.SapUtils.sap_accounVoucher; /** @@ -152,6 +154,8 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl if (StringUtils.equals(KEY_PUSH_VOUCHER, operationKey)) { DynamicObject[] dataEntities = e.getDataEntities(); if (dataEntities != null && dataEntities.length >= 1) { + //组装核算维度与sap凭证item字段对应关系map + Map sapMap = getAsstacttypeMap(); for (DynamicObject dataEntity : dataEntities) { DynamicObject recBill = BusinessDataServiceHelper.loadSingle(dataEntity.getLong("id"), "cas_recbill"); if (null != recBill) { @@ -160,14 +164,15 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl JSONObject json_HEADER = getIS_HEADER(recBill); data.put("IS_HEADER", json_HEADER); //详细,参考《IT_ITEM》 - JSONArray itItem = getIT_ITEM(recBill,json_HEADER); + JSONArray itItem = getIT_ITEM(recBill,json_HEADER,sapMap); if (itItem == null){ this.getOperationResult().setSuccess(false);//成功true;失败false this.getOperationResult().setMessage("金蝶凭证不存在或未审核"); // 提示内容 this.getOperationResult().setShowMessage(true); // 是否显示提示消息 continue; } - data.put("IT_ITEM", getIT_ITEM(recBill,json_HEADER)); +// data.put("IT_ITEM", getIT_ITEM(recBill,json_HEADER)); + data.put("IT_ITEM", itItem); //收款类型=推预付款、员工还款需要传清账数据 String receivingType = recBill.getString("receivingtype.number"); if ("103".equals(receivingType) || "109".equals(receivingType)) { @@ -340,7 +345,7 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl * @param recBill 收款单动态对象 * @return 包含行项目信息的JSONArray */ - private JSONArray getIT_ITEM(DynamicObject recBill , JSONObject json_HEADER) { + private JSONArray getIT_ITEM(DynamicObject recBill , JSONObject json_HEADER, Map sapMap) { JSONArray IT_ITEM = new JSONArray(); //源单类型 String sourceBillType = recBill.getString("sourcebilltype"); @@ -467,6 +472,8 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl }else if("f000060".equals(asstype)){ //行项目的参考码 f000031 IT_ITEMS.put("XREF3",glassistbd.getString("assval")); + }else if(sapMap.containsKey(asstype)){ + IT_ITEMS.put(sapMap.get(asstype),glassistbd.getString("assval")); } } } diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/operate/RevenueBillOperation.java b/main/java/shjh/jhzj7/fi/fi/plugin/operate/RevenueBillOperation.java index 409a2a9..f640ce0 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/operate/RevenueBillOperation.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/operate/RevenueBillOperation.java @@ -27,6 +27,7 @@ import shjh.jhzj7.fi.fi.utils.domin.ResponseData; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.Map; /** * 理财预提记账处理 shjh_cim_intbill_reve_ext-单据推送sap操作插件 @@ -75,13 +76,15 @@ public class RevenueBillOperation extends AbstractOperationServicePlugIn impleme DynamicObject prinfo;//预提记账处理单 JSONObject sapReturnData; ResponseData respdata; + //组装核算维度与sap凭证item字段对应关系map + Map sapMap = SapUtils.getAsstacttypeMap(); for (int i = 0; i < dos.length; i++) { prinfo = BusinessDataServiceHelper.loadSingle(dos[i].getPkValue(), dos[i].getDataEntityType().getName()); if(prinfo.getBoolean("shjh_needvoucher") && !prinfo.getBoolean("shjh_sendsap")){ //如果预提记账处理单需要生成凭证且未推送sap的才推送sap //判断原蓝单和红单,调用sap不同接口 操作类别 冲销预提收益-红单 预提收益-蓝单 if("interestrev".equals(prinfo.getString("operatype"))){ - sapReturnData = sendBlueVoucher(prinfo);//蓝单 + sapReturnData = sendBlueVoucher(prinfo,sapMap);//蓝单 if(sapReturnData != null && "0".equals(sapReturnData.getString("code"))){ //解析sap凭证接口返回值 respdata = ApiUtils.getResponseData(sapReturnData); @@ -176,7 +179,7 @@ public class RevenueBillOperation extends AbstractOperationServicePlugIn impleme return sapReturnData; } - private JSONObject sendBlueVoucher(DynamicObject prinfo){ + private JSONObject sendBlueVoucher(DynamicObject prinfo, Map sapMap){ //SAP预提收益凭证接口入参组装和调用 JSONObject IS_HEADER = new JSONObject();//抬头 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//日期格式化工具 @@ -259,11 +262,39 @@ public class RevenueBillOperation extends AbstractOperationServicePlugIn impleme hsxminfo = QueryServiceHelper.queryOne(ccName, "id,name,number", new QFilter[]{new QFilter("id", QCP.equals, glassistbd.getLong("assval"))});//维度值 item.put("KOSTL",hsxminfo.getString("number"));//成本中心_成本中心 + }else if("f000054".equals(asstype) || "f000014".equals(asstype)){ + //原因码 f000014 + //付款原因代码 f000054 + hsxminfo = QueryServiceHelper.queryOne("gl_cashflowitem", "id,name,number", + new QFilter[]{new QFilter("id", QCP.equals, glassistbd.getLong("assval"))});//维度值 + item.put("RSTGR",hsxminfo.getString("number")); + } + } + gl_assist_bd = QueryServiceHelper.query("gl_assist_txt", "asstype,assval", + new QFilter[]{new QFilter("hg.id", QCP.equals, assgrpinfo.getPkValue())});//核算项目组合纵表-文本 + for (int j = 0; j < gl_assist_bd.size(); j++) { + glassistbd = gl_assist_bd.get(j); + asstype = glassistbd.getString("asstype");//核算项目类型-对应核算维度的字段名 + if("f000054".equals(asstype)){ + //原因码 f000054 + item.put("RSTGR",glassistbd.getString("assval")); + }else if("f000056".equals(asstype)){ + //分配编号 f000056 + item.put("ZUONR",glassistbd.getString("assval")); + }else if("f000023".equals(asstype)){ + //税码 f000023 + item.put("MWSKZ",glassistbd.getString("assval")); + }else if("f000031".equals(asstype)){ + //税基 f000031 + item.put("FWBAS",glassistbd.getString("assval")); + }else if("f000060".equals(asstype)){ + //行项目的参考码 + item.put("XREF3",glassistbd.getString("assval")); + }else if(sapMap.containsKey(asstype)){ + item.put(sapMap.get(asstype),glassistbd.getString("assval")); } } } -// item.put("RSTGR", "014");//原因代码_原因码 -// item.put("SGTXT", SGTXT);//行项目文本_SAP会计科目行项目号 IT_ITEM.add(item); } }else{ diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/operate/TransdownbillOperation.java b/main/java/shjh/jhzj7/fi/fi/plugin/operate/TransdownbillOperation.java index 322667a..76247c3 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/operate/TransdownbillOperation.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/operate/TransdownbillOperation.java @@ -42,6 +42,7 @@ public class TransdownbillOperation extends AbstractOperationServicePlugIn imple private static final String glbdName = "gl_assist_bd";//核算项目组合纵表 private final static Log logger = LogFactory.getLog(TransdownbillOperation.class); + @Override public void beforeExecuteOperationTransaction(BeforeOperationArgs e) { super.beforeExecuteOperationTransaction(e); @@ -73,11 +74,13 @@ public class TransdownbillOperation extends AbstractOperationServicePlugIn imple DynamicObject prinfo;//下拨处理单 JSONObject sapReturnData; ResponseData respdata; + //组装核算维度与sap凭证item字段对应关系map + Map sapMap = SapUtils.getAsstacttypeMap(); for (int i = 0; i < dos.length; i++) { prinfo = BusinessDataServiceHelper.loadSingle(dos[i].getPkValue(), dos[i].getDataEntityType().getName()); if(!prinfo.getBoolean("shjh_sendsap")){ //如果下拨处理单需要生成凭证且未推送sap的才推送sap - sapReturnData = sendBlueVoucher(prinfo);//蓝单 + sapReturnData = sendBlueVoucher(prinfo,sapMap); if(sapReturnData != null && "0".equals(sapReturnData.getString("code"))){ //解析sap凭证接口返回值 respdata = ApiUtils.getResponseData(sapReturnData); @@ -97,7 +100,8 @@ public class TransdownbillOperation extends AbstractOperationServicePlugIn imple } } } - private JSONObject sendBlueVoucher(DynamicObject prinfo){ + + private JSONObject sendBlueVoucher(DynamicObject prinfo, Map sapMap){ //SAP下拨处理单凭证接口入参组装和调用 JSONObject IS_HEADER = new JSONObject();//抬头 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//日期格式化工具 @@ -139,8 +143,7 @@ public class TransdownbillOperation extends AbstractOperationServicePlugIn imple String asstype; DynamicObject glassistbd; DynamicObject hsxminfo; - //组装核算维度map - Map sapMap = SapUtils.getAsstacttypeMap(); + for (DynamicObject entry : entries) { item = new JSONObject(); account = entry.getDynamicObject("account");//科目 diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/operate/TransupbillOperation.java b/main/java/shjh/jhzj7/fi/fi/plugin/operate/TransupbillOperation.java index a32dbc9..255ea47 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/operate/TransupbillOperation.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/operate/TransupbillOperation.java @@ -43,6 +43,7 @@ public class TransupbillOperation extends AbstractOperationServicePlugIn impleme private static final String glbdName = "gl_assist_bd";//核算项目组合纵表 private final static Log logger = LogFactory.getLog(TransdownbillOperation.class); + @Override public void beforeExecuteOperationTransaction(BeforeOperationArgs e) { super.beforeExecuteOperationTransaction(e); @@ -74,11 +75,13 @@ public class TransupbillOperation extends AbstractOperationServicePlugIn impleme DynamicObject prinfo;//上划处理单 JSONObject sapReturnData; ResponseData respdata; + //组装核算维度与sap凭证item字段对应关系map + Map sapMap = SapUtils.getAsstacttypeMap(); for (int i = 0; i < dos.length; i++) { prinfo = BusinessDataServiceHelper.loadSingle(dos[i].getPkValue(), dos[i].getDataEntityType().getName()); if(!prinfo.getBoolean("shjh_sendsap")){ //如果上划处理单需要生成凭证且未推送sap的才推送sap - sapReturnData = sendBlueVoucher(prinfo); + sapReturnData = sendBlueVoucher(prinfo,sapMap); if(sapReturnData != null && "0".equals(sapReturnData.getString("code"))){ //解析sap凭证接口返回值 respdata = ApiUtils.getResponseData(sapReturnData); @@ -99,7 +102,7 @@ public class TransupbillOperation extends AbstractOperationServicePlugIn impleme } } - private JSONObject sendBlueVoucher(DynamicObject prinfo){ + private JSONObject sendBlueVoucher(DynamicObject prinfo, Map sapMap){ //SAP上划处理单凭证接口入参组装和调用 JSONObject IS_HEADER = new JSONObject();//抬头 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//日期格式化工具 @@ -141,8 +144,6 @@ public class TransupbillOperation extends AbstractOperationServicePlugIn impleme String asstype; DynamicObject glassistbd; DynamicObject hsxminfo; - //组装核算维度map - Map sapMap = SapUtils.getAsstacttypeMap(); for (DynamicObject entry : entries) { item = new JSONObject(); account = entry.getDynamicObject("account");//科目