From c8484f775cab33b74434bc10cfb8fdba6ab1d8ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Wed, 19 Mar 2025 18:34:45 +0800 Subject: [PATCH] =?UTF-8?q?CRM-=E5=90=8C=E6=AD=A5=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=94=B9=E4=B8=BAnacos=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/service/CrmService.java | 41 +++++++++++++++---- .../admin/task/TicketScheduledTasks.java | 40 ++++++++++++++++++ 2 files changed, 73 insertions(+), 8 deletions(-) diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/CrmService.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/CrmService.java index f4c8c90f..31a7afc2 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/CrmService.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/CrmService.java @@ -5,7 +5,6 @@ import cn.hutool.cache.impl.TimedCache; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.google.common.collect.ImmutableMap; import com.nflg.mobilebroken.admin.pojo.dto.CrmGetTokenResultDTO; import com.nflg.mobilebroken.admin.pojo.vo.CmrAgentResultVO; import com.nflg.mobilebroken.admin.pojo.vo.CmrDeviceResultVO; @@ -13,6 +12,8 @@ import com.nflg.mobilebroken.common.constant.STATE; import com.nflg.mobilebroken.common.exception.NflgException; import com.nflg.mobilebroken.common.util.HttpUtils; import com.nflg.mobilebroken.common.util.VUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.stereotype.Service; import java.io.IOException; @@ -23,9 +24,33 @@ import java.util.*; */ @Service +@RefreshScope public class CrmService { + @Value("${token.crm.client_id}") + private String clientId; + + @Value("${token.crm.username}") + private String username; + + @Value("${token.crm.password}") + private String password; + + @Value("${token.crm.client_secret}") + private String clientSecret; + + @Value("${token.crm.url}") + private String tokenUrl; + + @Value("${sync.crm.customer.url}") + private String getAgentUrl; + + + @Value("${sync.crm.device.url}") + private String getDeviceUrl; + + private final Integer expire = 50 * 60 * 1000; //50分种 private final String tokenCacheKey = "CRM-TOKEN-CATCH-KEY"; @@ -43,11 +68,11 @@ public class CrmService { HttpUtils httpUtils = new HttpUtils(); Map paramMp = new HashMap<>(); paramMp.put("grant_type", "password"); - paramMp.put("client_id", "3MVG9aWdXtdHRrI2TLduzcs5jZphm2K9lqodDnAQXRRVUOkf_XmSC53xLZIv09jQIC1K69nCdYma6ylnjFw9i"); - paramMp.put("username", "nflgcrm@nflg.com.sandbox4"); - paramMp.put("password", "BWcrm2019nflg"); - paramMp.put("client_secret", "6BEEFE93BFBC080FF9203563D74945E3161232BC5C30CF4286126E0CE18C15E4"); - String s = httpUtils.doformPost("https://nflg--sandbox4.sandbox.my.salesforce.com/services/oauth2/token", paramMp); + paramMp.put("client_id", clientId); + paramMp.put("username", username); + paramMp.put("password", password); + paramMp.put("client_secret", clientSecret); + String s = httpUtils.doformPost(tokenUrl, paramMp); CrmGetTokenResultDTO result = JSONObject.parseObject(s, CrmGetTokenResultDTO.class); if (Objects.nonNull(result) && StrUtil.isNotBlank(result.getAccess_token())) { @@ -75,7 +100,7 @@ public class CrmService { Map reBody = new HashMap<>(); reBody.put("CrLsDate", date); String token = StrUtil.join(" ", "Bearer", getToken()); - String orderResult = httpUtils.doPost("https://nflg--sandbox4.sandbox.my.salesforce.com/services/apexrest/YDPCFSGetAgent", JSON.toJSONString(reBody), token); + String orderResult = httpUtils.doPost(getAgentUrl, JSON.toJSONString(reBody), token); JSONObject jsonObject = JSONObject.parseObject(orderResult); String code = jsonObject.getString("code"); if (Objects.equals(code, "0")) { @@ -99,7 +124,7 @@ public class CrmService { Map reBody = new HashMap<>(); reBody.put("CrLsDate", startDate); String token = StrUtil.join(" ", "Bearer", getToken()); - String orderResult = httpUtils.doPost("https://nflg--sandbox4.sandbox.my.salesforce.com/services/apexrest/YDPCFSGetAsset", JSON.toJSONString(reBody), token); + String orderResult = httpUtils.doPost(getDeviceUrl, JSON.toJSONString(reBody), token); JSONObject jsonObject = JSONObject.parseObject(orderResult); String code = jsonObject.getString("code"); if (Objects.equals(code, "0")) { diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/task/TicketScheduledTasks.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/task/TicketScheduledTasks.java index 720e309e..623c1431 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/task/TicketScheduledTasks.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/task/TicketScheduledTasks.java @@ -5,6 +5,8 @@ import cn.hutool.core.date.DatePattern; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.nflg.mobilebroken.admin.pojo.dto.TiketTimeoutDTO; +import com.nflg.mobilebroken.admin.service.AdminCustomerService; +import com.nflg.mobilebroken.admin.service.AdminDeviceService; import com.nflg.mobilebroken.common.constant.Constant; import com.nflg.mobilebroken.common.constant.MessageSubType; import com.nflg.mobilebroken.common.constant.UserState; @@ -22,6 +24,7 @@ import org.springframework.stereotype.Component; import javax.annotation.Resource; import javax.mail.MessagingException; import java.math.BigDecimal; +import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZoneOffset; @@ -68,6 +71,12 @@ public class TicketScheduledTasks { @Resource private IDeviceService deviceService; + @Resource + private AdminCustomerService adminCustomerService; + + @Resource + private AdminDeviceService adminDeviceService; + /** * 工单评论邀请邮件 * 每天午夜12点执行一次 @@ -158,6 +167,37 @@ public class TicketScheduledTasks { log.info("执行更新设备质保状态完成"); } + /** + * 同步代理商公司列表 + * @param + * @return + */ + @Scheduled(cron = "0 0 1 * * ?") + public void syncCustomerFromCrm(){ + LocalDate currentDate = LocalDate.now(); + // 将当前日期减一天 + LocalDate previousDate = currentDate.minusDays(1); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + String cdate = formatter.format(previousDate); + adminCustomerService.syncFromCrm(cdate,cdate); + log.info("同步代理商公司-成功"); + } + + /** + * 同步设备 + * @return + */ + @Scheduled(cron = "0 0 2 * * ?") + public void syncDeviceCrm(){ + LocalDate currentDate = LocalDate.now(); + // 将当前日期减一天 + LocalDate previousDate = currentDate.minusDays(1); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + String cdate = formatter.format(previousDate); + adminDeviceService.syncFormCrm(cdate,cdate); + log.info("同步CRM设备-成功"); + } + private void emergencyRemind(TiketTimeoutDTO cfgTimeout) { log.info("【工单超时提醒】获取状态为紧急且{}天未解决的工单", cfgTimeout.getEmergency()); List tickets = ticketService.getEmergencys(cfgTimeout.getEmergency());