lfx 4 days ago
parent
commit
5fa43f8bae

+ 40 - 0
mjava-ts/src/main/java/com/malk/taisen/controller/RtrController.java

@@ -0,0 +1,40 @@
+package com.malk.taisen.controller;
+
+import com.malk.server.common.McR;
+import com.malk.taisen.service.RtrServer;
+import com.malk.utils.UtilMap;
+import com.malk.utils.UtilServlet;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+@Slf4j
+@RestController
+@RequestMapping
+public class RtrController {
+
+    @Autowired
+    private RtrServer rtrServer;
+
+    @PostMapping("/rtr")
+    McR notice(HttpServletRequest request) {
+
+        Map data = UtilServlet.getParamMap(request);
+        String instanceId = UtilMap.getString(data, "instanceId");
+        String type = UtilMap.getString(data, "type");
+        if (type.equals("YWJT")) {
+            log.info("泰森宜搭:RTR业务计提 写入SAP0005 请求参数, {}", data);
+            System.out.println("泰森宜搭:RTR业务计提 写入SAP0005!::" + data);
+            rtrServer.RtrInsetSAP0005(type, instanceId);
+            System.out.println("泰森宜搭:RTR业务计提 写入SAP0005!结束");
+            log.info("泰森宜搭:RTR业务计提 写入SAP0005!结束");
+        }
+        return McR.success();
+    }
+
+}

+ 7 - 0
mjava-ts/src/main/java/com/malk/taisen/service/RtrServer.java

@@ -0,0 +1,7 @@
+package com.malk.taisen.service;
+
+public interface RtrServer {
+
+    void  RtrInsetSAP0005(String type,String InstanceId);
+
+}

+ 201 - 0
mjava-ts/src/main/java/com/malk/taisen/service/impl/RtrServerImpl.java

@@ -0,0 +1,201 @@
+package com.malk.taisen.service.impl;
+
+import cn.hutool.json.JSONArray;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.malk.server.aliwork.YDConf;
+import com.malk.server.aliwork.YDParam;
+import com.malk.server.dingtalk.DDR_New;
+import com.malk.service.aliwork.YDClient;
+import com.malk.taisen.service.RtrServer;
+import com.malk.taisen.util.CusutUtil;
+import com.malk.taisen.util.HttpUtil;
+import com.malk.utils.UtilMap;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.*;
+
+@Service
+@Slf4j
+public class RtrServerImpl implements RtrServer {
+
+    @Autowired
+    private YDClient ydClient;
+    /**
+     * 测试地址
+     */
+    @Value(value = "${sap.QA_sapUrl_Poc}")
+    private String  QA_sapUrl ;
+
+    @Override
+    public void RtrInsetSAP0005(String type, String InstanceId) {
+        DDR_New ddr = ydClient.queryData(YDParam.builder().formInstId(InstanceId).build(), YDConf.FORM_QUERY.retrieve_id);
+        Map dataForm = ddr.getFormData();
+
+        JSONObject sapJson = new JSONObject();
+        JSONObject upJson = new JSONObject();
+        // 添加顶级键值对
+        sapJson.put("BLART", "Z5");//凭证类型
+        sapJson.put("ZOA_TYPE", "GL");//总账类型
+        sapJson.put("interface_id", "SAP005");
+        sapJson.put("ZPAY_AMT", "0");
+        sapJson.put("ZDUEDATE", CusutUtil.getFormatDate((Long) dataForm.get("dateField_miwh5y85"))); //Due date / 到期日
+        sapJson.put("ZOA_NUMBER", dataForm.get("textField_mi73dy3n")); //钉钉单据号
+        sapJson.put("BUKRS", dataForm.get("textField_mejfj9iw"));//公司代码
+        String uid = "CHN-01000332";
+        String uname = "";
+        if (dataForm.containsKey("employeeField_mizdsqyt_id")&&!dataForm.get("employeeField_mizdsqyt_id").equals("")) {
+            List<Map<String, Object>> conditions = new ArrayList<>(Arrays.asList(buildCondition("textField_l6dddg5k", dataForm.get("employeeField_mejfoon1_id"), "TEXT", "eq", "TextField")));
+            String listJson = JSON.toJSONString(conditions);
+            YDParam YGydParam = _getYDTokenZXXZ(listJson);
+            List<Map> dataList = (List<Map>) ydClient.queryData(YGydParam, YDConf.FORM_QUERY.retrieve_search_form).getData();
+            if (dataList != null && dataList.size() > 0) {
+                Map map = dataList.get(0);
+                Map formData = (Map) map.get("formData");
+                uid = formData.get("textField_l6djch1m").toString();
+                uid = "CHN-0" + uid;
+            }
+        }
+        sapJson.put("USNAM", uid);   //过账人
+        sapJson.put("BLDAT", CusutUtil.getFormatDate((Long) dataForm.get("dateField_l9nsavm3"))); //凭证日期ƒ   Date / 申请日期
+        sapJson.put("BUDAT", CusutUtil.getFormatDate((Long) dataForm.get("dateField_l9nsavm3")));  //过账日期
+        sapJson.put("BKTXT", dataForm.get("textField_miwh5y6z"));//备注  抬头文本
+        sapJson.put("WAERS", dataForm.get("selectField_mejfoong")); //币种
+        sapJson.put("BANKA", "");
+        sapJson.put("BANKN", "");
+        sapJson.put("KOINH", "");
+        sapJson.put("LIFNR", "");
+        sapJson.put("ZINVOICE_AMT","0");
+        //获取子表
+        if (type.equals("YWJT")) {
+            JSONArray itemArray = new JSONArray();
+            int x = 1;//OA单据行号累计用
+            List<Map<String, Object>> tableFils = (List<Map<String, Object>>) dataForm.get("tableField_mipgl0vx");
+            if (tableFils != null && tableFils.size() > 0) {
+                for (int n = 0; n < tableFils.size(); n++) {
+                    Map<String, Object> row = new HashMap(tableFils.get(n));
+                    JSONObject itemObj = new JSONObject();
+                    String sjItemNo = "";
+                    if (x < 10) {
+                        sjItemNo += "00" + x;
+                    } else if (x < 100) {
+                        sjItemNo += "0" + x;
+                    } else {
+                        sjItemNo += x;
+                    }
+                    x++;
+                    itemObj.put("ZOA_ITEMNO", sjItemNo);//OA单据行号
+                    itemObj.put("SHKZG", "S");//  S借方
+                    sapJson.put("ZTAXOUT_AMT", "0");
+                    sapJson.put("ZTAX_AMT", "0");
+//                    itemObj.put("HKONT", String.valueOf(row.get("textField_mipgl0w1"))); //会计科目:取接口行项目接口字段会计科目 HKONT
+                    itemObj.put("HKONT", String.valueOf(row.get("textField_miwh5y87"))); //会计科目:取接口行项目接口字段会计科目 HKONT
+                    itemObj.put("DMBTR", String.valueOf(row.get("numberField_mipgl0w2_value")));  //凭证金额:取接口行项目接口字段 DMBTR
+                    itemObj.put("KOSTL", String.valueOf(row.get("textField_mipgl0w3"))); //成本中心:取接口行项目接口字段成本中心KOSTL
+                    itemObj.put("AUFNR", String.valueOf(row.get("textField_mipgl0w4"))); //订单:取接口行项目接口字段订单 AUFNR
+                    itemObj.put("PS_POSID", String.valueOf(row.get("textField_mipgl0w5"))); //WBS:职接口行项目接口字段 WBS元素 PS_POSID
+                    itemObj.put("MWSKZ", String.valueOf(row.get("textField_mipgl0w6")));///税码:取总账通用工单的行项目的税码,接口字段MWSKZ
+                    itemObj.put("ZUONR", String.valueOf(row.get("textField_mipgl0w7")));///分配:取接口行项目接口字段分配 ZUONR
+                    itemObj.put("XREF1", String.valueOf(row.get("textField_miwh5y88")));///参考码1:取接口行项目接口字段 XREF1
+                    itemObj.put("SGTXT", String.valueOf(row.get("textareaField_miwh5y86")));///行项目文本:取接口行项目接口字段行项目文本 SGTXT
+                    itemArray.put(itemObj);
+                }
+            }
+            List<Map<String, Object>> tableFils2 = (List<Map<String, Object>>) dataForm.get("tableField_miwh5y8n");
+            if (tableFils2 != null && tableFils2.size() > 0) {
+                for (int n = 0; n < tableFils2.size(); n++) {
+                    Map<String, Object> row = new HashMap(tableFils2.get(n));
+                    JSONObject itemObj = new JSONObject();
+                    itemObj.put("SHKZG", "H"); //H贷方
+                    String sjItemNo = "";
+                    if (x < 10) {
+                        sjItemNo += "00" + x;
+                    } else if (x < 100) {
+                        sjItemNo += "0" + x;
+                    } else {
+                        sjItemNo += x;
+                    }
+                    x++;
+                    itemObj.put("ZOA_ITEMNO", sjItemNo);//OA单据行号
+//                    itemObj.put("HKONT", String.valueOf(row.get("textField_miwh5y8d"))); //会计科目:取接口行项目接口字段会计科目 HKONT
+                    itemObj.put("HKONT", String.valueOf(row.get("textField_miwh5y8e"))); //会计科目:取接口行项目接口字段会计科目 HKONT
+                    itemObj.put("DMBTR", String.valueOf(row.get("numberField_miwh5y8f_value")));  //凭证金额:取接口行项目接口字段 DMBTR
+                    itemObj.put("KOSTL", String.valueOf(row.get("textField_miwh5y8g"))); //成本中心:取接口行项目接口字段成本中心KOSTL
+                    itemObj.put("AUFNR", String.valueOf(row.get("textField_miwh5y8h"))); //订单:取接口行项目接口字段订单 AUFNR
+                    itemObj.put("PS_POSID", String.valueOf(row.get("textField_miwh5y8i"))); //WBS:职接口行项目接口字段 WBS元素 PS_POSID
+                    itemObj.put("MWSKZ", String.valueOf(row.get("textField_miwh5y8j")));///税码:取总账通用工单的行项目的税码,接口字段MWSKZ
+                    itemObj.put("ZUONR", String.valueOf(row.get("textField_miwh5y8k")));///分配:取接口行项目接口字段分配 ZUONR
+                    itemObj.put("XREF1", String.valueOf(row.get("textField_miwh5y8l")));///参考码1:取接口行项目接口字段 XREF1
+                    itemObj.put("SGTXT", String.valueOf(row.get("textareaField_miwh5y8c")));///行项目文本:取接口行项目接口字段行项目文本 SGTXT
+                    itemArray.put(itemObj);
+                }
+            }
+            sapJson.put("ITEM", itemArray);
+        }
+
+        /***
+         * 调用接口
+         */
+        System.out.println(sapJson);
+        log.info("发起POST请求:URL={},参数={}", QA_sapUrl + "SAP005", sapJson);
+        String post = HttpUtil.post(QA_sapUrl + "SAP005", null, sapJson.toString(), null);
+        log.info(dataForm.get("textField_mi73dy3n")+"POST反馈={}", post);
+        System.out.println( "POST反馈====="+post);
+        if (!post.equals("")) {
+            JSONArray jsonArray = new JSONArray(post);
+            if (jsonArray.size() > 0) {
+                String voucherNumber = "";
+                try {
+                    cn.hutool.json.JSONObject postJsonObject = jsonArray.getJSONObject(0);
+                    String  E_SYSMSGTYPE   =  postJsonObject.getStr("E_SYSMSGTYPE");//状态
+                    String E_MESSAGE = postJsonObject.getStr("E_MESSAGE");//SAP005 接口 反馈值
+                    if ( E_SYSMSGTYPE.equals("S")) {
+                        String e_belnr = postJsonObject.getStr("E_BELNR");
+                        String E_GJAHR = postJsonObject.getStr("E_GJAHR");//凭证年度
+                        //   执行完加入,把更改表单凭证数据
+                        ydClient.operateData(YDParam.builder().formInstanceId(InstanceId).updateFormDataJson(JSON.toJSONString(UtilMap.map("textField_l9nsavm2, textField_mejezfwk, textareaField_mi5kjmxb, selectField_mi72r4s6", E_GJAHR, e_belnr,E_MESSAGE,"成功"))).build(), YDConf.FORM_OPERATION.update);
+                    }else {
+                        //  报错写入
+                        ydClient.operateData(YDParam.builder().formInstanceId(InstanceId).updateFormDataJson(JSON.toJSONString(UtilMap.map("textareaField_mi5kjmxb, selectField_mi72r4s6", E_MESSAGE,"失败" ))).build(), YDConf.FORM_OPERATION.update);
+                    }
+                } catch (Exception ex) {
+                    log.error("解析异常{}",ex.getMessage());
+                }
+            } else {
+                log.error("返回值数组为空");
+            }
+        }else {
+            //  报错写入
+            ydClient.operateData(YDParam.builder().formInstanceId(InstanceId).updateFormDataJson(JSON.toJSONString(UtilMap.map("textareaField_mi5kjmxb, selectField_mi72r4s6", post,"失败" ))).build(), YDConf.FORM_OPERATION.update);
+        }
+    }
+
+    //匹配条件用
+    private static final String KEY = "key";
+    private static final String VALUE = "value";
+    private static final String TYPE = "type";
+    private static final String OPERATOR = "operator";
+    private static final String COMPONENT_NAME = "componentName";
+
+    private static Map<String, Object> buildCondition(String key, Object value, String type, String operator, String componentName) {
+        Map<String, Object> condition = new HashMap<>();
+        condition.put(KEY, key);
+        condition.put(VALUE, value);
+        condition.put(TYPE, type);
+        condition.put(OPERATOR, operator);
+        condition.put(COMPONENT_NAME, componentName);
+        return condition;
+    }
+
+    /**
+     * 泰森付款  人员档案表
+     */
+    public static YDParam _getYDTokenZXXZ(String searchFieldJson) {
+        return YDParam.builder().formUuid("FORM-4J7669A10FO250UJ9C6Q7CM00PC62YPW8DD6LT").searchFieldJson(searchFieldJson).build();
+    }
+}

+ 6 - 0
mjava-ts/src/main/resources/application-dev.yml

@@ -63,8 +63,14 @@ ding:
   userId: "0128190612251172008042"
   url: "https://www.aliwork.com"
   hanxingUrl: 'http://106.15.251.153:8095/stms_xocr/pxocr/'
+
+aliwork:
+  appType: "APP_N9NPHVTQLPBPO8MR6WFG"
+  systemToken: "UM6660D1PGF2O34KAVVKG8XZ756E3O06MZX5LW"
+
 sap:
   QA_sapUrl_Poc: https://etl-nonprod-tasks.tysondt.com:443/api/1/rest/feed/run/task/TysonNonProd/Ultra_PoC/10-QA-team-fssc/tk_oa_to_sap_p2p?bearer_token=bBiGTA7PS0JJ6wKhQU8Vm0vLsIDNjLaN&interface_id=
+  TARGET_URL_Poc: http://139.224.3.140:8091/stms/openapi/income/bookkeeping
 
 hangxing:
   TARGET_URL_Poc: http://139.224.3.140:8091/stms/openapi/income/bookkeeping

+ 4 - 0
mjava-ts/src/main/resources/application-prod.yml

@@ -48,9 +48,13 @@ ding:
   userId: "0128190612251172008042"
   url: "https://www.aliwork.com"
   hanxingUrl: 'http://106.15.251.153:8095/stms_xocr/pxocr/'
+aliwork:
+  appType: "APP_N9NPHVTQLPBPO8MR6WFG"
+  systemToken: "UM6660D1PGF2O34KAVVKG8XZ756E3O06MZX5LW"
 
 sap:
   QA_sapUrl_Poc: https://etl-nonprod-tasks.tysondt.com:443/api/1/rest/feed/run/task/TysonNonProd/Ultra_PoC/10-QA-team-fssc/tk_oa_to_sap_p2p?bearer_token=bBiGTA7PS0JJ6wKhQU8Vm0vLsIDNjLaN&interface_id=
+  TARGET_URL_Poc: http://139.224.3.140:8091/stms/openapi/income/bookkeeping
 
 hangxing:
   TARGET_URL_Poc: http://139.224.3.140:8091/stms/openapi/income/bookkeeping

+ 22 - 0
mjava-ts/src/test/java/RtrTest.java

@@ -0,0 +1,22 @@
+import com.malk.taisen.service.RtrServer;
+import lombok.extern.slf4j.Slf4j;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@Slf4j
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = com.malk.kepeida.Boot.class)
+public class RtrTest {
+
+    String instanceId="9e7ee402-6b3c-429f-9d67-6d23a743c6bc";
+    @Autowired
+    private RtrServer rtrServer;
+
+    @Test
+    public void RtrTest(){
+        rtrServer.RtrInsetSAP0005("YWJT", instanceId);
+    }
+}