Просмотр исходного кода

同步销售项目数据(补充实际收到RFQ日期)

lvjs 1 месяц назад
Родитель
Сommit
104e3d1088

+ 2 - 0
src/main/java/com/malk/eastar/conf/EastarParam.java

@@ -27,6 +27,8 @@ public class EastarParam {
 
     public static String YD_FORMUUID_SALE_PROJECT = "FORM-98FAA0EE0B324C11AD2EAB517368EB1EM1EG";    //销售项目,add by Jason 20260622
 
+    public static String YD_FORMUUID_RFQ = "FORM-F977D3892160410CAC56C323DDA63CA9GCSF";    //询价与报价,add by Jason 20260707
+
     static {
         CUSTFIELD_ACCE.put("配件名","textField_me2f7tvo");
         CUSTFIELD_ACCE.put("系列名称","selectField_me2f7tw4");

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

@@ -418,4 +418,91 @@ public class ScheduleTask3 {
     }
 
 
+
+    /**
+     * 同步销售项目数据(补充实际收到RFQ日期)
+     */
+//    @Scheduled(cron = "0 2 15 * * ?")
+    public void syncSaleProjectData20260707() {
+        //查询所有询价与报价记录
+        List<Map> rfqData = new ArrayList<>();
+        try {
+            log.info("查询询价与报价记录");
+            rfqData = yidaService.queryLtcRFQData();
+        } catch (Exception e) {
+            log.error("查询询价与报价记录异常",e);
+        }
+
+        //列出所有询价时间
+//        for(Map rfqRecord : rfqData){
+//            log.info("询价时间:"+rfqRecord.get("projectCode")+" "+rfqRecord.get("getRfqDate"));
+//        }
+
+        //每个销售项目只保留最早询价时间的记录
+        List<Map> newRfqData = new ArrayList<>();
+        boolean isNew = true;
+        for(Map rfqRecord : rfqData){
+            isNew = true;
+            for (int i = 0; i < newRfqData.size(); i++) {
+                if(rfqRecord.get("projectCode").equals(newRfqData.get(i).get("projectCode"))){
+                    if(rfqRecord.get("getRfqDate").toString().compareTo(newRfqData.get(i).get("getRfqDate").toString()) < 0){
+//                        System.out.println(newRfqData.get(i).get("projectCode")+" "+newRfqData.get(i).get("getRfqDate"));
+                        newRfqData.remove(i);
+//                        System.out.println("询价时间更早:"+rfqRecord.get("projectCode")+" "+rfqRecord.get("getRfqDate"));
+                        newRfqData.add(rfqRecord);
+                    }
+                    isNew = false;
+                    break;
+                }
+            }
+            if(isNew){
+                newRfqData.add(rfqRecord);
+            }
+        }
+        System.out.println("询价时间去重后数量:"+newRfqData.size());
+
+        //查询所有AI表格已成单【表1】售前台账数据
+        Map params = null;
+        List<Map> saleData = new ArrayList<>();
+        try {
+            log.info("查询【表1】售前台账记录");
+            params = new HashMap<>();
+            saleData = aitableService.querySys1SaleData(params);
+        } catch (Exception e) {
+            log.error("查询售前台账数据异常",e);
+        }
+
+        //列出实际收到RFQ日期为空的记录
+        String aiTableId;
+        Map<String,Object> fields;
+        for(Map saleRecord : saleData){
+            if(StringUtils.isEmpty(saleRecord.get("getRfqDate").toString())){
+                aiTableId = saleRecord.get("aiTableId").toString();
+                fields = new HashMap<>();
+                log.info("实际收到RFQ日期为空:"+saleRecord.get("projectCode")+" "+saleRecord.get("projectName"));
+                for (int i = 0; i < newRfqData.size(); i++) {
+                    if(saleRecord.get("projectCode").equals(newRfqData.get(i).get("projectCode"))){
+                        fields.put("ZFArSI6",Long.parseLong(newRfqData.get(i).get("getRfqDate").toString()));  //实际收到RFQ日期
+                        try {
+                            log.info("更新实际收到RFQ日期");
+                            System.out.println(saleRecord.get("projectCode"));
+                            System.out.println(JSONObject.toJSONString(fields));
+                            aitableService.updateSys1SaleData(aiTableId,fields);
+                            Thread.sleep(3000);
+                        } catch (Exception e) {
+                            System.err.println("更新售前台账数据异常:"+e.getMessage());
+                        }
+                        break;
+                    }
+                }
+            }
+        }
+
+
+
+        log.info("同步销售项目数据(补充实际收到RFQ日期)完成");
+
+    }
+
+
 }

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

@@ -63,6 +63,10 @@ public interface YidaService {
      */
     List<Map> queryLtcCustomerEstablishContactData() throws Exception;
 
+    /**
+     * 获取易思达系统中的询价与报价记录
+     */
+    List<Map> queryLtcRFQData() throws Exception;
 
     /**
      * 获取易思达系统中的项目编号

+ 7 - 1
src/main/java/com/malk/eastar/service/impl/AitableServiceImpl.java

@@ -457,7 +457,7 @@ public class AitableServiceImpl implements AitableService {
         Map<String,Object> saleRecord;  //售前台账记录
         String projectStage;  //商机阶段 - S1~3【商机进度】
         String projectCode;  //项目编号 - S1【基础】
-
+        String getRfqDate;  //实际收到RFQ日期
 
 
         /*
@@ -509,6 +509,7 @@ public class AitableServiceImpl implements AitableService {
             //重置变量
             projectStage = "";
             projectCode = "";
+            getRfqDate = "";
 
             //获取AI表格ID
             aiTableId = allRecords.getJSONObject(i).getString("id");
@@ -524,10 +525,15 @@ public class AitableServiceImpl implements AitableService {
                 projectCode = fields.getString("项目编号 - S1【基础】");
             }
 
+            if(fields.get("实际收到RFQ日期") != null){
+                getRfqDate = fields.getString("实际收到RFQ日期");
+            }
+
             saleRecord = new HashMap<>();
             saleRecord.put("aiTableId",aiTableId);
             saleRecord.put("projectStage",projectStage);
             saleRecord.put("projectCode",projectCode);
+            saleRecord.put("getRfqDate",getRfqDate);
 //            System.out.println(JSONObject.toJSONString(saleRecord));
             saleData.add(saleRecord);
         }

+ 81 - 0
src/main/java/com/malk/eastar/service/impl/YidaServiceImpl.java

@@ -1424,6 +1424,87 @@ public class YidaServiceImpl implements YidaService {
         return establishContactData;
     }
 
+    @Override
+    public List<Map> queryLtcRFQData() throws Exception {
+        /*
+            参数定义
+         */
+        List<Map> rfqData = new ArrayList<>();  //询价与报价数据
+        YDParam yidaParam;  //HTTP请求体
+        YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
+        DDR_New yidaResult; //请求返回内容
+        List<Map> records;  //每页记录数据
+        List<Map> allRecords = new ArrayList<>();  //所有记录数据
+        boolean hasMore; //是否还有下一页
+        int pageNo; //当前页码
+        int pageSize;   //每页获取的数据量(上限100)
+        JSONObject fields;  //字段数据
+        Map rfqRecord;  //询价与报价记录
+        String projectCode; //项目编号
+        Long getRfqDate;  //询价时间
+
+        /*
+            初始化参数值
+         */
+        hasMore = true; //第一页默认有数据
+        pageNo = 1;
+        pageSize = 100;
+        ydParamBuilder = YDParam.builder();
+        ydParamBuilder = ydParamBuilder.formUuid(EastarParam.YD_FORMUUID_RFQ);
+
+        /*
+            翻页获取数据
+         */
+        while(hasMore){
+            ydParamBuilder = ydParamBuilder.pageNumber(pageNo);
+            ydParamBuilder = ydParamBuilder.pageSize(pageSize);
+            yidaParam = ydParamBuilder.build();
+            yidaResult = ydClient.queryData(yidaParam,YDConf.FORM_QUERY.retrieve_list);
+            log.info("当前第"+pageNo+"页");
+            records = (List<Map>) yidaResult.getData();
+            log.info("记录数="+records.size());
+            for (Map record : records){
+                allRecords.add(record);
+            }
+            if((pageNo*pageSize) < yidaResult.getTotalCount()){
+                pageNo++;
+            }else{
+                hasMore = false;
+            }
+            log.info("是否有更多数据:"+hasMore);
+            Thread.sleep(3000);
+        }
+
+        /*
+            请求记录数据处理
+         */
+        log.info("所有记录数量="+allRecords.size());
+        for (Map record : allRecords){
+            projectCode = "";
+            getRfqDate = null;
+
+            //解析字段数据
+            fields = JSONObject.parseObject(JSONObject.toJSONString(record.get("formData")));
+
+            //获取项目编号
+            projectCode = fields.getString("textField_mdpdyde2");
+
+            //获取询价时间
+            getRfqDate = fields.getLong("dateField_mdpdyddc");
+
+
+            //添加客户建联跟进记录
+            rfqRecord = UtilMap.map(
+                    "projectCode, getRfqDate",
+                    projectCode, //项目编号
+                    getRfqDate  //询价时间
+            );
+            rfqData.add(rfqRecord);
+        }
+
+        return rfqData;
+    }
+
     @Override
     public String queryProjectCode(String formInstId) throws Exception {
         Map leadsData = ydClient.queryData(