|
@@ -1,6 +1,7 @@
|
|
|
package com.malk.cloudpure.controller;
|
|
package com.malk.cloudpure.controller;
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSON;
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.malk.server.common.McException;
|
|
import com.malk.server.common.McException;
|
|
|
import com.malk.server.common.McR;
|
|
import com.malk.server.common.McR;
|
|
|
import com.malk.server.dingtalk.DDConf;
|
|
import com.malk.server.dingtalk.DDConf;
|
|
@@ -14,6 +15,7 @@ import org.springframework.web.bind.annotation.RequestBody;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
|
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -53,6 +55,11 @@ public class H3yunController {
|
|
|
/** 合同表SchemaCode */
|
|
/** 合同表SchemaCode */
|
|
|
private static final String SCHEMA_CONTRACT = "D000867fhlpdb6a82f59spkf1vzac5p1";
|
|
private static final String SCHEMA_CONTRACT = "D000867fhlpdb6a82f59spkf1vzac5p1";
|
|
|
|
|
|
|
|
|
|
+ /** 联系人表SchemaCode */
|
|
|
|
|
+ private static final String SCHEMA_CONTACT = "D00086789664a2a7c30475089f29b084d7bde44";
|
|
|
|
|
+
|
|
|
|
|
+ /** 商机跟进表SchemaCode */
|
|
|
|
|
+ private static final String SCHEMA_OPPORTUNITY_FOLLOW = "D00086709fe2ae8c5dd4ceaaa389f840f0efb2a";
|
|
|
|
|
|
|
|
|
|
|
|
|
// ===================== 氚云用户表 =====================
|
|
// ===================== 氚云用户表 =====================
|
|
@@ -73,7 +80,7 @@ public class H3yunController {
|
|
|
/** 机会编号 */
|
|
/** 机会编号 */
|
|
|
private static final String FIELD_OPP_CODE = "SeqNo";
|
|
private static final String FIELD_OPP_CODE = "SeqNo";
|
|
|
|
|
|
|
|
- /* 意向产品 */
|
|
|
|
|
|
|
+ /* 意向产品 */
|
|
|
private static final String Desired_Product = "D000867F4941a772370545088cef9366ee01aaca";
|
|
private static final String Desired_Product = "D000867F4941a772370545088cef9366ee01aaca";
|
|
|
|
|
|
|
|
/** 成单信心 */
|
|
/** 成单信心 */
|
|
@@ -162,21 +169,76 @@ public class H3yunController {
|
|
|
log.info("提交待审批数据到氚云, {}", data);
|
|
log.info("提交待审批数据到氚云, {}", data);
|
|
|
|
|
|
|
|
String accessToken = ddClient.getAccessToken();
|
|
String accessToken = ddClient.getAccessToken();
|
|
|
- String opUserId ="";
|
|
|
|
|
- if (data.get("CRNAME").toString()!=""){
|
|
|
|
|
- opUserId = _getCYUserIdByDingTalkUserId(data.get("CRNAME").toString());
|
|
|
|
|
|
|
+ String opUserId = "";
|
|
|
|
|
+ Object crname = data.get("CRNAME");
|
|
|
|
|
+ if (crname != null && !String.valueOf(crname).trim().isEmpty()) {
|
|
|
|
|
+ opUserId = _getCYUserIdByDingTalkUserId(String.valueOf(crname));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
// 第一步:创建草稿数据(传入的JSON直接作为氚云表单数据)
|
|
// 第一步:创建草稿数据(传入的JSON直接作为氚云表单数据)
|
|
|
- Map extInfo = UtilMap.map("opUserId, bizObjectJson, isDraft", opUserId, JSON.toJSONString(data), true);
|
|
|
|
|
|
|
+ Map extInfo = UtilMap.map("opUserId, bizObjectJson, isDraft", opUserId, JSON.toJSONString(data), false);
|
|
|
Map rsp = cyClient.operateData(accessToken, SCHEMA_CUSTOMER, extInfo);
|
|
Map rsp = cyClient.operateData(accessToken, SCHEMA_CUSTOMER, extInfo);
|
|
|
|
|
|
|
|
// 第二步:提交数据(发起审批流程)
|
|
// 第二步:提交数据(发起审批流程)
|
|
|
- String bizObjectId = String.valueOf(rsp.get("bizObjectId"));
|
|
|
|
|
- cyClient.operateData(accessToken, SCHEMA_CUSTOMER, UtilMap.map("bizObjectId, opUserId", bizObjectId, opUserId));
|
|
|
|
|
|
|
+ String bizObjectId = String.valueOf(rsp.get("bizObjectId"));
|
|
|
|
|
+ // cyClient.operateData(accessToken, SCHEMA_CUSTOMER, UtilMap.map("bizObjectId, opUserId", bizObjectId, opUserId));
|
|
|
|
|
+
|
|
|
|
|
+ Object contactName = data.get("lxrmc");
|
|
|
|
|
+ Object contactPosition = data.get("gangwei");
|
|
|
|
|
+ Object contactPhone = data.get("lxdh");
|
|
|
|
|
+ boolean hasContactInfo = contactName != null || contactPosition != null || contactPhone != null;
|
|
|
|
|
+ if (hasContactInfo) {
|
|
|
|
|
+ Map<String, Object> contactData = new HashMap<>();
|
|
|
|
|
+ contactData.put("F0000001", bizObjectId);
|
|
|
|
|
+ if (contactName != null) {
|
|
|
|
|
+ contactData.put("F0000002", contactName);
|
|
|
|
|
+ }
|
|
|
|
|
+ if (contactPosition != null) {
|
|
|
|
|
+ contactData.put("F0000003", contactPosition);
|
|
|
|
|
+ }
|
|
|
|
|
+ if (contactPhone != null) {
|
|
|
|
|
+ contactData.put("F0000005", contactPhone);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ try {
|
|
|
|
|
+ Map contactExtInfo = UtilMap.map("opUserId, bizObjectJson, isDraft", opUserId, JSON.toJSONString(contactData), false);
|
|
|
|
|
+ cyClient.operateData(accessToken, SCHEMA_CONTACT, contactExtInfo);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.warn("新增联系人数据失败, bizObjectId: {}, error: {}", bizObjectId, e.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ log.info("跳过新增联系人数据, bizObjectId: {}, 原因: 联系人字段为空", bizObjectId);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ try {
|
|
|
|
|
+ Map<String, Object> followData = new HashMap<>();
|
|
|
|
|
+ followData.put("F0000001", bizObjectId);
|
|
|
|
|
+ followData.put("F0000002", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
|
|
|
|
+ followData.put("F0000021", "SDR跟进");
|
|
|
|
|
+ followData.put("F0000004", data.get("F0000020"));
|
|
|
|
|
+
|
|
|
|
|
+ Map followExtInfo = UtilMap.map("opUserId, bizObjectJson, isDraft", opUserId, JSON.toJSONString(followData), false);
|
|
|
|
|
+ Map followRsp = cyClient.operateData(accessToken, SCHEMA_OPPORTUNITY_FOLLOW, followExtInfo);
|
|
|
|
|
+ String followBizObjectId = String.valueOf(followRsp.get("bizObjectId"));
|
|
|
|
|
+
|
|
|
|
|
+ if (followBizObjectId != "") {
|
|
|
|
|
+ //更改客户的商机跟进关联
|
|
|
|
|
+ JSONObject jsonObject = new JSONObject();
|
|
|
|
|
+ jsonObject.put("F0000020", followBizObjectId);
|
|
|
|
|
+ cyClient.updatetForm(accessToken, SCHEMA_CUSTOMER, bizObjectId, jsonObject.toJSONString());
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.warn("新增商机跟进或回写客户失败, bizObjectId: {}, error: {}", bizObjectId, e.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
|
|
|
log.info("提交待审批数据成功, schemaCode: {}, bizObjectId: {}", SCHEMA_CUSTOMER, bizObjectId);
|
|
log.info("提交待审批数据成功, schemaCode: {}, bizObjectId: {}", SCHEMA_CUSTOMER, bizObjectId);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
return McR.success(UtilMap.map("bizObjectId", bizObjectId));
|
|
return McR.success(UtilMap.map("bizObjectId", bizObjectId));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -223,7 +285,7 @@ public class H3yunController {
|
|
|
extInfo.put("sortByFields", sortByFields);
|
|
extInfo.put("sortByFields", sortByFields);
|
|
|
|
|
|
|
|
// 只返回需要的字段
|
|
// 只返回需要的字段
|
|
|
- extInfo.put("returnFields", Arrays.asList(FIELD_OPP_CODE, Desired_Product, Order_Placement_Confidence,Estimated_Closing_Date,Estimated_GMV,Estimated_CASH, Opportunity_Stage,Reasons_Loss,FIELD_CREATED_TIME));
|
|
|
|
|
|
|
+ extInfo.put("returnFields", Arrays.asList(FIELD_OPP_CODE, Desired_Product, Order_Placement_Confidence, Estimated_Closing_Date, Estimated_GMV, Estimated_CASH, Opportunity_Stage, Reasons_Loss, FIELD_CREATED_TIME));
|
|
|
|
|
|
|
|
List<Map> result = cyClient.queryData(accessToken, SCHEMA_CUSTOMER_OPPORTUNITY, extInfo);
|
|
List<Map> result = cyClient.queryData(accessToken, SCHEMA_CUSTOMER_OPPORTUNITY, extInfo);
|
|
|
|
|
|
|
@@ -303,7 +365,7 @@ public class H3yunController {
|
|
|
Map<String, Object> response = new HashMap<>();
|
|
Map<String, Object> response = new HashMap<>();
|
|
|
response.put("contractCode", UtilMap.getString(latest, FIELD_CONTRACT_CODE));
|
|
response.put("contractCode", UtilMap.getString(latest, FIELD_CONTRACT_CODE));
|
|
|
response.put("actualGMV", latest.get(FIELD_CONTRACT_ACTUAL_GMV));
|
|
response.put("actualGMV", latest.get(FIELD_CONTRACT_ACTUAL_GMV));
|
|
|
- // response.put("cash", latest.get(FIELD_CONTRACT_CASH));
|
|
|
|
|
|
|
+ // response.put("cash", latest.get(FIELD_CONTRACT_CASH));
|
|
|
response.put("Payment_Collection_Time", latest.get(Payment_Collection_Time));
|
|
response.put("Payment_Collection_Time", latest.get(Payment_Collection_Time));
|
|
|
|
|
|
|
|
log.info("查询客户最新合同结果, customerCode: {}, result: {}", customerCode, response);
|
|
log.info("查询客户最新合同结果, customerCode: {}, result: {}", customerCode, response);
|