2 Revize ada1cf18ea ... f97fffe21b

Autor SHA1 Zpráva Datum
  lvjs f97fffe21b 新增商机同步接口 před 2 týdny
  lvjs f035aba5c4 新增接口,根据unionId获取userId、根据userId获取unionId před 2 týdny

+ 71 - 0
src/main/java/com/malk/eastar/controller/AitableController.java

@@ -0,0 +1,71 @@
+package com.malk.eastar.controller;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.malk.eastar.service.AitableService;
+import com.malk.eastar.service.DDCoreClient;
+import com.malk.server.common.McException;
+import com.malk.server.common.McR;
+import com.malk.utils.UtilMap;
+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.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Slf4j
+@RestController
+@RequestMapping("/aitable")
+public class AitableController {
+
+    @Autowired
+    private AitableService aitableService;
+
+    @Autowired
+    private DDCoreClient ddCoreClient;
+
+    /**
+     * 新建商机
+     * @param data
+     * @return
+     */
+    @PostMapping("/newOpportunity")
+    McR createNewOpportunity(@RequestBody JSONObject data) {
+        log.info("新建商机, {}", data);
+        McException.assertParamException_Null(data, "yidaInstanceId");
+        String yidaInstanceId = UtilMap.getString(data, "yidaInstanceId");  //宜搭实例ID
+        String yidaProjectCode = UtilMap.getString(data, "yidaProjectCode"); //项目编号
+        String yidaProjectName = UtilMap.getString(data, "yidaProjectName"); //项目名称
+        String yidaOrderCompletionRate = UtilMap.getString(data, "yidaOrderCompletionRate"); //成单情况
+        String yidaEstimatedOrderDate = UtilMap.getString(data, "yidaEstimatedOrderDate"); //预计成单日期
+        String yidaOrderAmount = UtilMap.getString(data, "yidaOrderAmount"); //预计项目金额
+        String yidaCustomerName = UtilMap.getString(data, "yidaCustomerName");  //客户
+        String yidaBusinessUserId = UtilMap.getString(data, "yidaBusinessUserId");  //业务
+        Map<String,Object> fields = new HashMap<>();
+        try {
+            fields.put("zP1nHJs",yidaProjectCode);   //项目编号 - S1【基础】
+            fields.put("P3XtfD8",yidaProjectName);   //项目名称 - S1【基础】
+            fields.put("KDAelfq",yidaOrderCompletionRate);  //成单情况【商机进度】
+            fields.put("m34IbuX",Long.parseLong(yidaEstimatedOrderDate));  //预计成单日期 - S1~2【商机进度】
+            fields.put("MYBeHPG",yidaOrderAmount);  //订单金额 - S2~3【销售数据】
+            JSONObject bidirectionalLink = new JSONObject();
+            String[] linkedRecordIds = new String[]{aitableService.querySys1CustomerIdByName(yidaCustomerName)};
+            bidirectionalLink.put("linkedRecordIds",linkedRecordIds);
+            fields.put("F7zdGI6",bidirectionalLink);  //客户公司名 - S1【基础】
+            JSONArray user = new JSONArray();
+            JSONObject unionId = new JSONObject();
+            unionId.put("unionId",ddCoreClient.getUnionIdByUserId(yidaBusinessUserId));
+            user.add(unionId);
+            fields.put("Iz0yaro",JSONObject.toJSONString(user));  //业务 - S1【人事】
+            String aitableId = aitableService.addSys1SaleData(fields);
+            return McR.success(aitableId);
+        } catch (Exception e) {
+            return McR.error("400",e.getMessage());
+        }
+    }
+
+}

+ 45 - 0
src/main/java/com/malk/eastar/controller/EastarDdController.java

@@ -1,10 +1,12 @@
 package com.malk.eastar.controller;
 
 import com.alibaba.fastjson.JSONObject;
+import com.malk.eastar.service.DDCoreClient;
 import com.malk.server.common.McException;
 import com.malk.server.common.McR;
 import com.malk.service.dingtalk.DDClient;
 import com.malk.service.dingtalk.DDClient_Report;
+import com.malk.utils.UtilMap;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -22,9 +24,13 @@ public class EastarDdController {
 
     @Autowired
     private DDClient_Report ddClientReport;
+
     @Autowired
     private DDClient ddClient;
 
+    @Autowired
+    private DDCoreClient ddCoreClient;
+
     @PostMapping("/report/create")
     public McR createReport(@RequestBody JSONObject param){
         log.info("创建日志:{}",param);
@@ -39,4 +45,43 @@ public class EastarDdController {
                 list);
         return McR.success(result);
     }
+
+
+    /**
+     * 根据unionId获取userId
+     * @param data
+     * @return
+     */
+//    @PostMapping("/getUserIdByUnionId")
+    McR getUserIdByUnionId(@RequestBody JSONObject data) {
+        log.info("根据unionId获取userId, {}", data);
+        McException.assertParamException_Null(data, "unionid");
+        String unionId = UtilMap.getString(data, "unionid");
+        try {
+            String userId = ddCoreClient.getUserIdByUnionId(unionId);
+            return McR.success(userId);
+        } catch (Exception e) {
+            return McR.error("400",e.getMessage());
+        }
+    }
+
+    /**
+     * 根据userId获取unionId
+     * @param data
+     * @return
+     */
+//    @PostMapping("/getUnionIdByUserId")
+    McR getUnionIdByUserId(@RequestBody JSONObject data) {
+        log.info("根据userId获取unionId, {}", data);
+        McException.assertParamException_Null(data, "userid");
+        String userId = UtilMap.getString(data, "userid");
+        try {
+            String unionId = ddCoreClient.getUnionIdByUserId(userId);
+            return McR.success(unionId);
+        } catch (Exception e) {
+            return McR.error("400",e.getMessage());
+        }
+    }
+
+
 }

+ 13 - 0
src/main/java/com/malk/eastar/service/AitableService.java

@@ -14,5 +14,18 @@ public interface AitableService {
      */
     List<Map> querySys1CustomerData() throws Exception;
 
+    /**
+     * 根据客户名获取客户ID(客户名册)
+     * @param customerName
+     * @return
+     * @throws Exception
+     */
+    String querySys1CustomerIdByName(String customerName) throws Exception;
+
+    /**
+     * 添加销售台账记录
+     * @throws Exception
+     */
+    String addSys1SaleData(Map<String,Object> fields) throws Exception;
 
 }

+ 9 - 1
src/main/java/com/malk/eastar/service/DDCoreClient.java

@@ -11,7 +11,15 @@ import java.util.Map;
 public interface DDCoreClient {
 
     /**
-     * 根据unionId获取userid
+     * 根据userId获取unionId
+     * @param userId
+     * @return
+     * @throws Exception
+     */
+    String getUnionIdByUserId(String userId) throws Exception;
+
+    /**
+     * 根据unionId获取userId
      * @param unionId
      * @return
      * @throws Exception

+ 89 - 0
src/main/java/com/malk/eastar/service/impl/AitableServiceImpl.java

@@ -206,5 +206,94 @@ public class AitableServiceImpl implements AitableService {
         return customerDataDeduplicate;
     }
 
+    @Override
+    public String querySys1CustomerIdByName(String customerName) throws Exception {
+        /*
+            参数定义
+         */
+        String baseId; //AI表格文档ID
+        String sheetIdOrName;   //数据表ID或数据表名称
+        Map<String,Object> param = new HashMap<>(); //HTTP请求参数
+        AITableParam aiTableParam = new AITableParam(); //HTTP请求体
+        AITableResult aiTableResult;    //请求返回内容
+        JSONArray records;  //记录数据
+        String customerId = "";  //客户名册记录ID
+
+        /*
+            项目总表副本-20260409
+         */
+        baseId = "GZLxjv9VGqBAMDOoHYzrPZzE86EDybno";
+        sheetIdOrName = "E6RcJi3";
+
+        /*
+            初始化参数值
+         */
+        param.put("operatorId","aj1wcWqKLXITiPDwbMIjUbAiEiE");  //操作人(Jason)的unionId
+        JSONObject filter = new JSONObject();
+        JSONArray conditions = new JSONArray();
+        JSONObject condition = new JSONObject();
+        condition.put("field","20rO7zS");
+        condition.put("operator","equal");
+        condition.put("value",new String[]{customerName});
+        conditions.add( condition);
+        filter.put("conditions",conditions);
+        aiTableParam.setFilter(filter);
+
+        /*
+            获取数据
+         */
+        aiTableResult = mdTableClient.queryMultiRecords(baseId,sheetIdOrName,param,aiTableParam);
+        records = aiTableResult.getRecords();
+        if(records!=null && !records.isEmpty()){
+            customerId = records.getJSONObject(0).getString("id");
+        }
+        return customerId;
+    }
+
+    @Override
+    public String addSys1SaleData(Map<String,Object> fields) throws Exception {
+        /*
+            参数定义
+         */
+        String baseId; //AI表格文档ID
+        String sheetIdOrName;   //数据表ID或数据表名称
+        Map<String,Object> param = new HashMap<>(); //HTTP请求参数
+        JSONObject insertData = new JSONObject();   //HTTP请求体
+        JSONArray insertRecords = new JSONArray();  //新增记录集合
+        JSONObject insertRecord = new JSONObject();      //新增记录行数据
+        String result;  //返回结果
+        JSONObject resultJSONObject;
+        JSONArray aitableIdJSONArray;
+        String aitableId = "";   //AI表格记录ID
+
+        /*
+            项目总表副本-20260409
+         */
+        baseId = "GZLxjv9VGqBAMDOoHYzrPZzE86EDybno";
+        sheetIdOrName = "C1mtX34";  //售前台账
+
+        /*
+            初始化参数值
+         */
+        param.put("operatorId","aj1wcWqKLXITiPDwbMIjUbAiEiE");  //操作人(Jason)的unionId
+        insertRecord.put("fields",fields);
+        insertRecords.add(insertRecord);
+        insertData.put("records",insertRecords);
+
+        /*
+            新增数据
+         */
+        System.out.println(JSONObject.toJSONString(insertData));
+        log.info(JSONObject.toJSONString(insertData));
+        result = mdTableClient.createMultiRecords(baseId,sheetIdOrName,param,insertData);
+        log.info(result);
+        resultJSONObject = JSONObject.parseObject(result);
+        aitableIdJSONArray = resultJSONObject.getJSONArray("value");
+        if(aitableIdJSONArray!=null || !aitableIdJSONArray.isEmpty()){
+            aitableId = aitableIdJSONArray.getJSONObject(0).getString("id");
+        }
+        return aitableId;
+    }
+
 
 }

+ 10 - 0
src/main/java/com/malk/eastar/service/impl/DDCoreClientImpl.java

@@ -25,6 +25,16 @@ public class DDCoreClientImpl implements DDCoreClient {
     @Autowired
     private DDClient_Contacts ddClientContacts;
 
+    @Override
+    public String getUnionIdByUserId(String userId) throws Exception {
+        String unionid = "";
+        Map result = ddClientContacts.getUserInfoById(ddClient.getAccessToken(),userId);
+        if(result != null){
+            unionid = UtilMap.getString(result, "unionid");
+        }
+        return unionid;
+    }
+
     @Override
     public String getUserIdByUnionId(String unionId) throws Exception {
         String userId = "";