Parcourir la source

同步销售项目数据(解决客户缺失问题)

lvjs il y a 1 mois
Parent
commit
3c327d3635

+ 73 - 0
src/main/java/com/malk/eastar/schedule/ScheduleTask3.java

@@ -1,5 +1,6 @@
 package com.malk.eastar.schedule;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.malk.eastar.service.AitableService;
 import com.malk.eastar.service.DDCoreClient;
@@ -196,6 +197,78 @@ public class ScheduleTask3 {
         }
     }
 
+    /**
+     * 同步销售项目数据(解决客户缺失问题)
+     */
+//    @Scheduled(cron = "0 0 18 * * ?")
+    public void syncSaleProjectData20260701() {
+        //查询有原系统PI号的宜搭销售项目数据
+        List<Map> ltcSaleProjectData = new ArrayList<>();
+        try {
+            log.info("查询销售台账记录");
+            Map params = new HashMap<>();
+            params.put("piCodePrefix","Eastar");
+            ltcSaleProjectData = yidaService.queryLtcSaleProjectData(params);
+        } catch (Exception e) {
+            log.error("查询销售台账记录异常",e);
+        }
+
+        //查询所有宜搭客户数据
+        List<Map> ltcCustomerData = new ArrayList<>();
+        try {
+            log.info("查询客户名册所有记录");
+            ltcCustomerData = yidaService.queryLtcAllCustomerData();
+        } catch (Exception e) {
+            log.error("查询客户名册异常",e);
+        }
+
+
+
+        //更新销售项目的客户
+        String customer;
+        String customerNew;
+        JSONArray customerAss;
+        String projectName;
+        String customerName;
+        String instanceIdOld;
+        String instanceIdNew;
+        for(Map ltcSaleProjectRecord : ltcSaleProjectData){
+            projectName = ltcSaleProjectRecord.get("projectName").toString();
+            System.out.println("projectName="+projectName);
+            customerName = "";
+            customer = ltcSaleProjectRecord.get("customer").toString();
+            customerNew = customer.replace("\\\"", "\"");
+            customerNew = customerNew.substring(1, customerNew.length()-1);
+            customerAss = JSONArray.parseArray(customerNew);
+            instanceIdOld = customerAss.getJSONObject(0).get("instanceId").toString();
+            instanceIdNew = "";
+            //更新关联表单instanceId(客户)
+            for (int i = 0; i < ltcCustomerData.size(); i++) {
+                if(ltcCustomerData.get(i).get("customerCode").equals(customerAss.getJSONObject(0).get("subTitle"))){
+                    customerName = ltcCustomerData.get(i).get("customerName").toString();
+                    instanceIdNew = ltcCustomerData.get(i).get("formInstId").toString();
+                    customerAss.getJSONObject(0).put("instanceId",instanceIdNew);
+                    break;
+                }
+            }
+            System.out.println("projectName="+projectName+",customerName="+customerName+",instanceIdOld="+instanceIdOld+",instanceIdNew="+instanceIdNew);
+            try {
+                log.info("更新销售台账记录");
+                yidaService.updateLtcSaleProjectRelatedCustomer(ltcSaleProjectRecord.get("formInstId").toString(),customerAss);
+                Thread.sleep(3000);
+            } catch (Exception e) {
+                log.error("更新销售台账记录异常",e);
+            }
+        }
+
+
+
+
+        log.info("同步销售项目数据(解决客户缺失问题)完成");
+
+
+    }
+
     /**
      * 同步销售项目整体阶段
      */

+ 7 - 0
src/main/java/com/malk/eastar/service/YidaService.java

@@ -1,5 +1,7 @@
 package com.malk.eastar.service;
 
+import com.alibaba.fastjson.JSONArray;
+
 import java.util.List;
 import java.util.Map;
 
@@ -126,6 +128,11 @@ public interface YidaService {
      */
     void updateSaleProjectRelatedAitableId(String formInstId, String aitableId) throws Exception;
 
+    /**
+     * 更新易思达系统客户基本信息(客户公司名、业务、公海/私海、测试使用)
+     */
+    void updateLtcSaleProjectRelatedCustomer(String formInstId, JSONArray customerAss) throws Exception;
+
     /**
      * 插入易思达系统中的一行记录(客户名册)
      */

+ 26 - 1
src/main/java/com/malk/eastar/service/impl/YidaServiceImpl.java

@@ -1209,11 +1209,12 @@ public class YidaServiceImpl implements YidaService {
             fields = JSONObject.parseObject(JSONObject.toJSONString(ltcSaleProjectRecord.get("formData")));
 
             saleProjectRecord = UtilMap.map(
-                    "formInstId, projectCode, projectName, projectStage, piCode, aiTableId",
+                    "formInstId, projectCode, projectName, projectStage, customer, piCode, aiTableId",
                     formInstId, //表单实例ID
                     fields.getString("serialNumberField_mdf997w0"), //项目编号
                     fields.getString("textField_mdf997vz"), //项目名称
                     fields.getString("selectField_mdf997wp"), //整体项目阶段
+                    fields.getString("associationFormField_mdf997wc_id"), //客户
                     fields.getString("textField_mhlrjdz2"), //原系统PI号
                     fields.getString("textField_mno9p0lf")  //AI表格映射ID
             );
@@ -1758,6 +1759,30 @@ public class YidaServiceImpl implements YidaService {
         ydClient.operateData(yidaParam,YDConf.FORM_OPERATION.update);
     }
 
+    @Override
+    public void updateLtcSaleProjectRelatedCustomer(String formInstId, JSONArray customerAss) throws Exception {
+        /*
+            参数定义
+         */
+        YDParam yidaParam;  //HTTP请求体
+        YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
+        String updateFormDataJson;  //更新内容
+
+        /*
+            初始化参数值
+         */
+        updateFormDataJson = JSONObject.toJSONString(UtilMap.map("associationFormField_mdf997wc",customerAss));  //客户
+
+        /*
+            更新数据
+         */
+        ydParamBuilder = YDParam.builder();
+        ydParamBuilder = ydParamBuilder.formInstId(formInstId);
+        ydParamBuilder = ydParamBuilder.updateFormDataJson(updateFormDataJson);
+        yidaParam = ydParamBuilder.build();
+        ydClient.operateData(yidaParam,YDConf.FORM_OPERATION.update);
+    }
+
     @Override
     public void insertCustomerData(Map row) throws Exception {
         YDParam yidaParam;  //HTTP请求体