收款单、预提记账单、定期预提、上划、下拨核算维度传值sap优化
This commit is contained in:
		
							parent
							
								
									22e9e10298
								
							
						
					
					
						commit
						595d59dd59
					
				|  | @ -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<String, String> 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<String, String> 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{ | ||||
|  |  | |||
|  | @ -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<String, String> 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<String, String> 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")); | ||||
|                                 } | ||||
|                             } | ||||
|                         } | ||||
|  |  | |||
|  | @ -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<String, String> 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<String, String> 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{ | ||||
|  |  | |||
|  | @ -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<String, String> 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<String, String> 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<String, String> sapMap = SapUtils.getAsstacttypeMap(); | ||||
| 
 | ||||
|             for (DynamicObject entry : entries) { | ||||
|                 item = new JSONObject(); | ||||
|                 account = entry.getDynamicObject("account");//科目 | ||||
|  |  | |||
|  | @ -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<String, String> 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<String, String> 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<String, String> sapMap = SapUtils.getAsstacttypeMap(); | ||||
|             for (DynamicObject entry : entries) { | ||||
|                 item = new JSONObject(); | ||||
|                 account = entry.getDynamicObject("account");//科目 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue