From 0bbc063d508f861374e143e54f23f09a53a59fd0 Mon Sep 17 00:00:00 2001 From: luolm <470431449@qq.com> Date: Sun, 23 Mar 2025 22:32:03 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/controller/CustomerController.java | 2 +- .../admin/controller/DeviceController.java | 2 +- .../admin/pojo/dto/SyncFromCrmDTO.java | 2 + .../admin/service/AdminCustomerService.java | 125 +++++++++-------- .../admin/service/AdminDeviceService.java | 128 +++++++++--------- .../admin/service/CrmService.java | 19 +-- .../admin/task/TicketScheduledTasks.java | 5 +- .../src/test/java/ControllerTest.java | 8 +- 8 files changed, 150 insertions(+), 141 deletions(-) diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/CustomerController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/CustomerController.java index f1435fed..414b75a0 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/CustomerController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/CustomerController.java @@ -234,7 +234,7 @@ public class CustomerController extends ControllerBase { @PostMapping("syncFromCrm") @MethodInfoMark(value = "同步数据" ,menuName = "客户管理") public ApiResult syncFromCrm(@RequestBody SyncFromCrmDTO param){ - adminCustomerService.syncFromCrm(param.getStartDate(),param.getEndDate()); + adminCustomerService.syncFromCrm(param); return ApiResult.success(true); } diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/DeviceController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/DeviceController.java index 85a0fc20..1c2e58f1 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/DeviceController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/DeviceController.java @@ -224,7 +224,7 @@ public class DeviceController extends ControllerBase { @PostMapping("syncFromCrm") @MethodInfoMark(value = "同步数据" ,menuName = "设备管理") public ApiResult syncFromCrm(@RequestBody SyncFromCrmDTO param){ - adminDeviceService.syncFormCrm(param.getStartDate(),param.getEndDate()); + adminDeviceService.syncFormCrm(param); return ApiResult.success(true); } diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/SyncFromCrmDTO.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/SyncFromCrmDTO.java index 9321909e..ecac9f4a 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/SyncFromCrmDTO.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/SyncFromCrmDTO.java @@ -1,9 +1,11 @@ package com.nflg.mobilebroken.admin.pojo.dto; +import lombok.AllArgsConstructor; import lombok.Data; @Data +@AllArgsConstructor public class SyncFromCrmDTO { /** diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/AdminCustomerService.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/AdminCustomerService.java index 2a1d2893..c7978f74 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/AdminCustomerService.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/AdminCustomerService.java @@ -3,19 +3,16 @@ package com.nflg.mobilebroken.admin.service; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; -import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSONObject; import com.google.common.collect.Sets; import com.nflg.mobilebroken.admin.constant.Constant; -import com.nflg.mobilebroken.admin.pojo.vo.AgentManagerVO; +import com.nflg.mobilebroken.admin.pojo.dto.SyncFromCrmDTO; import com.nflg.mobilebroken.admin.pojo.vo.CmrAgentResultVO; import com.nflg.mobilebroken.admin.pojo.vo.CustomerExcelVO; import com.nflg.mobilebroken.common.constant.STATE; import com.nflg.mobilebroken.common.util.AdminUserUtil; import com.nflg.mobilebroken.common.util.UniqueSequenceGenerator; import com.nflg.mobilebroken.common.util.VUtils; -import com.nflg.mobilebroken.repository.entity.Device; import com.nflg.mobilebroken.repository.entity.TBaseArea; import com.nflg.mobilebroken.repository.entity.TBaseCustomer; import com.nflg.mobilebroken.repository.service.ITBaseAreaService; @@ -45,10 +42,11 @@ public class AdminCustomerService { /** * 导入 + * * @param data */ @Transactional(rollbackFor = Exception.class) - public void importData(List data){ + public void importData(List data) { //检查EXCEL中代理公司名是否重复 Map> duplicateCompany = data.stream() @@ -57,40 +55,40 @@ public class AdminCustomerService { .filter(entry -> entry.getValue().size() > 1) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); - if(CollUtil.isNotEmpty(duplicateCompany)) { - VUtils.trueThrow(true).throwMessage(STATE.ParamErr,"Excel中以下代理公司名重复:"+StrUtil.join(",",duplicateCompany.keySet()) ) ; + if (CollUtil.isNotEmpty(duplicateCompany)) { + VUtils.trueThrow(true).throwMessage(STATE.ParamErr, "Excel中以下代理公司名重复:" + StrUtil.join(",", duplicateCompany.keySet())); } //检查公司名称是否已存在数据库中 List companyNames = data.stream().map(u -> u.getAgencyCompanyName()).collect(Collectors.toList()); - List existCompany= baseCustomerService.lambdaQuery().in(TBaseCustomer::getAgencyCompanyName, companyNames).list(); - if(CollUtil.isNotEmpty(existCompany)){ + List existCompany = baseCustomerService.lambdaQuery().in(TBaseCustomer::getAgencyCompanyName, companyNames).list(); + if (CollUtil.isNotEmpty(existCompany)) { Set existCompanyNames = existCompany.stream().map(u -> u.getAgencyCompanyName()).collect(Collectors.toSet()); - VUtils.trueThrow(true).throwMessage(STATE.ParamErr,StrUtil.join(",",existCompanyNames)+" 已存在数据库中"); + VUtils.trueThrow(true).throwMessage(STATE.ParamErr, StrUtil.join(",", existCompanyNames) + " 已存在数据库中"); } //检查区域编码在库中是否已存在 - List areaCodes = data.stream().filter(u->StrUtil.isNotBlank(u.getAreaCode())).map(u -> u.getAreaCode()).collect(Collectors.toList()); - if(CollUtil.isNotEmpty(areaCodes)){ - Set areaCodeSet=new HashSet<>(); - areaCodes.forEach(u->{ - areaCodeSet.addAll(StrUtil.split(u,",")); + List areaCodes = data.stream().filter(u -> StrUtil.isNotBlank(u.getAreaCode())).map(u -> u.getAreaCode()).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(areaCodes)) { + Set areaCodeSet = new HashSet<>(); + areaCodes.forEach(u -> { + areaCodeSet.addAll(StrUtil.split(u, ",")); }); List existAreaList = areaService.lambdaQuery().in(TBaseArea::getAreaCode, areaCodeSet).list(); Set existAreaCodeSet = existAreaList.stream().map(u -> u.getAreaCode()).collect(Collectors.toSet()); Set difference = Sets.difference(areaCodeSet, existAreaCodeSet); - VUtils.trueThrow(CollUtil.isNotEmpty(difference)).throwMessage(STATE.ParamErr,StrUtil.join(",", difference)+"在区域列表中不存在"); + VUtils.trueThrow(CollUtil.isNotEmpty(difference)).throwMessage(STATE.ParamErr, StrUtil.join(",", difference) + "在区域列表中不存在"); } List result = Convert.toList(TBaseCustomer.class, data); - result.forEach(k->{ + result.forEach(k -> { k.setDataCreateUserNo(AdminUserUtil.getUserNo()); k.setDataCreateUserName(AdminUserUtil.getUserName()); - k.setDataCreateTime(LocalDateTime.now()); + k.setDataCreateTime(LocalDateTime.now()); // k.setDataModifyUserNo(AdminUserUtil.getUserNo()); // k.setDataModifyUserName(AdminUserUtil.getUserName()); // k.setDataModifyTime(LocalDateTime.now()); - k.setAgencyCompanyCode(UniqueSequenceGenerator.generateCode(Constant.CustomerCodePrefix) ); + k.setAgencyCompanyCode(UniqueSequenceGenerator.generateCode(Constant.CustomerCodePrefix)); }); baseCustomerService.saveBatch(result); @@ -100,57 +98,56 @@ public class AdminCustomerService { /** * crm-同步数据 */ - public void syncFromCrm(String startDate, String endDate){ + public void syncFromCrm(SyncFromCrmDTO dateParam) { DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - LocalDate stDate = LocalDate.parse(startDate, dateFormatter); - LocalDate edDate = LocalDate.parse(endDate, dateFormatter); + // 循环从起始日期到结束日期,每次增加一天 - List result=new ArrayList<>(); - for (LocalDate date = stDate; !date.isAfter(edDate); date = date.plusDays(1)) { - result.clear(); - - List agentList = crmService.getAgent(date.toString()); - if(CollUtil.isEmpty(agentList)){ - continue; - } - Set crmComanyCodes = agentList.stream().map(u -> u.getId()).collect(Collectors.toSet()); - List crmCompanyList = baseCustomerService.lambdaQuery().in(TBaseCustomer::getAgencyCompanyCode, crmComanyCodes).list(); - Map crmCompanyMap = crmCompanyList.stream().collect(Collectors.toMap(TBaseCustomer::getAgencyCompanyCode, cm -> cm)); + List result = new ArrayList<>(); +// for (LocalDate date = stDate; !date.isAfter(edDate); date = date.plusDays(1)) { - agentList.forEach(u->{ - TBaseCustomer ent = crmCompanyMap.get(u.getId()); - if(Objects.nonNull(ent)){ - ent.setDataModifyTime(LocalDateTime.now()); - ent.setDataModifyUserNo("crm"); - ent.setDataModifyUserName("crm"); - }else { - ent=new TBaseCustomer(); - ent.setDataCreateTime(LocalDateTime.now()); - ent.setDataCreateUserNo("crm"); - ent.setDataCreateUserName("crm"); - ent.setDataModifyTime(LocalDateTime.now()); - ent.setDataModifyUserNo("crm"); - ent.setDataModifyUserName("crm"); - } - ent.setAgencyCompanyCode(u.getId()); - ent.setAgencyCompanyName(u.getName()); - ent.setEnableState(u.getEnabled__c()?1:0); - ent.setAgencyManager(u.getAgentHead1__r().getName()); - ent.setAgencyManagerCode(u.getAgentHead1__r().getId()); - ent.setSapCustomerNo(u.getAgent_SAP__c()); - ent.setSalesAuthorizationInfo(u.getSalesMessage__c()); - ent.setSalesSupervisor(u.getSalesExecutive2__r().getName()); - ent.setSalesSupervisorCode(u.getSalesExecutive2__r().getId()); - ent.setServiceSupervisor(u.getServiceManager__r().getName()); - ent.setServiceSupervisorCode(u.getServiceManager__r().getId()); - result.add(ent); - }); - if(CollUtil.isNotEmpty(result)){ - baseCustomerService.saveOrUpdateBatch(result); - } + List agentList = crmService.getAgent(dateParam); + if (CollUtil.isEmpty(agentList)) { + return; } + Set crmComanyCodes = agentList.stream().map(u -> u.getId()).collect(Collectors.toSet()); + List crmCompanyList = baseCustomerService.lambdaQuery().in(TBaseCustomer::getAgencyCompanyCode, crmComanyCodes).list(); + Map crmCompanyMap = crmCompanyList.stream().collect(Collectors.toMap(TBaseCustomer::getAgencyCompanyCode, cm -> cm)); + + agentList.forEach(u -> { + TBaseCustomer ent = crmCompanyMap.get(u.getId()); + + if (Objects.nonNull(ent)) { + ent.setDataModifyTime(LocalDateTime.now()); + ent.setDataModifyUserNo("crm"); + ent.setDataModifyUserName("crm"); + } else { + ent = new TBaseCustomer(); + ent.setDataCreateTime(LocalDateTime.now()); + ent.setDataCreateUserNo("crm"); + ent.setDataCreateUserName("crm"); + ent.setDataModifyTime(LocalDateTime.now()); + ent.setDataModifyUserNo("crm"); + ent.setDataModifyUserName("crm"); + } + ent.setAgencyCompanyCode(u.getId()); + ent.setAgencyCompanyName(u.getName()); + ent.setEnableState(u.getEnabled__c() ? 1 : 0); + ent.setAgencyManager(u.getAgentHead1__r().getName()); + ent.setAgencyManagerCode(u.getAgentHead1__r().getId()); + ent.setSapCustomerNo(u.getAgent_SAP__c()); + ent.setSalesAuthorizationInfo(u.getSalesMessage__c()); + ent.setSalesSupervisor(u.getSalesExecutive2__r().getName()); + ent.setSalesSupervisorCode(u.getSalesExecutive2__r().getId()); + ent.setServiceSupervisor(u.getServiceManager__r().getName()); + ent.setServiceSupervisorCode(u.getServiceManager__r().getId()); + result.add(ent); + }); + if (CollUtil.isNotEmpty(result)) { + baseCustomerService.saveOrUpdateBatch(result); + } +// } } diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/AdminDeviceService.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/AdminDeviceService.java index 6f6ea83f..6b4638c6 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/AdminDeviceService.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/AdminDeviceService.java @@ -8,6 +8,7 @@ import com.alibaba.fastjson.JSONObject; import com.google.common.collect.ImmutableList; import com.nflg.mobilebroken.admin.constant.DeviceSourceFromEnum; import com.nflg.mobilebroken.admin.pojo.dto.DeviceDTO; +import com.nflg.mobilebroken.admin.pojo.dto.SyncFromCrmDTO; import com.nflg.mobilebroken.admin.pojo.vo.CmrDeviceResultVO; import com.nflg.mobilebroken.admin.pojo.vo.DeviceExcelVO; import com.nflg.mobilebroken.common.constant.STATE; @@ -61,7 +62,7 @@ public class AdminDeviceService { } @Transactional(rollbackFor = Exception.class) - public void update(DeviceDTO deviceDTO){ + public void update(DeviceDTO deviceDTO) { Device device = Convert.convert(Device.class, deviceDTO); device.setUpdateBy(AdminUserUtil.getUserName()); device.setUpdateTime(LocalDateTime.now()); @@ -74,20 +75,21 @@ public class AdminDeviceService { /** * 导入 + * * @param data */ @Transactional(rollbackFor = Exception.class) - public void importData(List data){ + public void importData(List data) { List devices = Convert.toList(Device.class, data); List deviceNoBlankList = data.stream().filter(u -> StrUtil.isBlank(u.getDeviceNo())).collect(Collectors.toList()); - VUtils.trueThrow(CollUtil.isNotEmpty(deviceNoBlankList)).throwMessage(STATE.ParamErr,"数据中存在设备编号为空的数据"); + VUtils.trueThrow(CollUtil.isNotEmpty(deviceNoBlankList)).throwMessage(STATE.ParamErr, "数据中存在设备编号为空的数据"); List deviceNos = data.stream().map(u -> u.getDeviceNo()).collect(Collectors.toList()); List existDeviceNos = deviceService.lambdaQuery().in(Device::getDeviceNo, deviceNos).list(); - if(CollUtil.isNotEmpty(existDeviceNos)){ + if (CollUtil.isNotEmpty(existDeviceNos)) { List existDNos = existDeviceNos.stream().map(u -> u.getDeviceNo()).collect(Collectors.toList()); - VUtils.trueThrow(true).throwMessage(STATE.ParamErr,StrUtil.join(",",existDNos)+"设备编号在数据中已存在"); + VUtils.trueThrow(true).throwMessage(STATE.ParamErr, StrUtil.join(",", existDNos) + "设备编号在数据中已存在"); } - for ( Device device: devices) { + for (Device device : devices) { device.setId(null); device.setSourceFrom(DeviceSourceFromEnum.MANUAL_ADD.getSourceKey()); device.setCreateBy(AdminUserUtil.getUserName()); @@ -110,68 +112,68 @@ public class AdminDeviceService { /** * 同步CRM 数据 * - * @param startDate - * @param endDate + * @param dateParam + * @param dateParam */ @Transactional(rollbackFor = Exception.class) - public void syncFormCrm(String startDate, String endDate) { - DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - LocalDate stDate = LocalDate.parse(startDate, dateFormatter); - LocalDate edDate = LocalDate.parse(endDate, dateFormatter); + public void syncFormCrm(SyncFromCrmDTO dateParam) { +// DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); +// LocalDate stDate = LocalDate.parse(startDate, dateFormatter); +// LocalDate edDate = LocalDate.parse(endDate, dateFormatter); // 循环从起始日期到结束日期,每次增加一天 List result = new ArrayList<>(); - for (LocalDate date = stDate; !date.isAfter(edDate); date = date.plusDays(1)) { - result.clear(); - List crmDeviceList = crmService.getAsset(date.toString()); - if(CollUtil.isEmpty(crmDeviceList)){ - continue; - } - Set crmDeviceNos = crmDeviceList.stream().map(u -> u.getMachine_Number__c()).collect(Collectors.toSet()); - - List deviceList = deviceService.lambdaQuery().in(Device::getDeviceNo, crmDeviceNos).list(); - Map deviceMap = deviceList.stream().collect(Collectors.toMap(Device::getDeviceNo, device -> device)); - - crmDeviceList.forEach(u -> { - Device ent = deviceMap.get(u.getMachine_Number__c()); - if (Objects.nonNull(ent)) { - ent = deviceMap.get(u.getMachine_Number__c()); - ent.setUpdateBy("crm"); - ent.setUpdateTime(LocalDateTime.now()); - - } else { - ent=new Device(); - ent.setUpdateBy("crm"); - ent.setUpdateTime(LocalDateTime.now()); - ent.setCreateBy("crm"); - ent.setCreateTime(LocalDateTime.now()); - } - ent.setDeviceNo(u.getMachine_Number__c()); - ent.setDeviceType(u.getAssetProductLine3__c()); - ent.setDeviceTypeSub(u.getAssetProductLine4__c()); - ent.setModelNo(u.getProductLine5__c()); - if(StrUtil.isNotBlank(u.getAccount())){ - JSONObject jsonObject = JSONObject.parseObject(u.getAccount()); - String cname = jsonObject.getString("Name"); - ent.setCustomerName(cname); - } - - ent.setSourceFrom(DeviceSourceFromEnum.FROM_CRM.getSourceKey()); - ent.setCustomerId(0); - ent.setDeviceState(0); - result.add(ent); - }); - if(CollUtil.isNotEmpty(result)){ - - //将设备类型放入-设备类型表维护客户质量管理人 - List deviceTypes = result.stream().map(u -> u.getDeviceType()).collect(Collectors.toList()); - adminDeviceTypeService.batchAddDeviceType(deviceTypes); - //将设备机型 - List models = result.stream().map(u -> u.getModelNo()).collect(Collectors.toList()); - adminDeviceComponentService.batchAddModelNo(models); - - deviceService.saveOrUpdateBatch(result); - } +// for (LocalDate date = stDate; !date.isAfter(edDate); date = date.plusDays(1)) { + List crmDeviceList = crmService.getAsset(dateParam); + if (CollUtil.isEmpty(crmDeviceList)) { + return; } + Set crmDeviceNos = crmDeviceList.stream().map(u -> u.getMachine_Number__c()).collect(Collectors.toSet()); + + List deviceList = deviceService.lambdaQuery().in(Device::getDeviceNo, crmDeviceNos).list(); + Map deviceMap = deviceList.stream().collect(Collectors.toMap(Device::getDeviceNo, device -> device)); + + crmDeviceList.forEach(u -> { + Device ent = deviceMap.get(u.getMachine_Number__c()); + if (Objects.nonNull(ent)) { + ent = deviceMap.get(u.getMachine_Number__c()); + ent.setUpdateBy("crm"); + ent.setUpdateTime(LocalDateTime.now()); + + } else { + ent = new Device(); + ent.setUpdateBy("crm"); + ent.setUpdateTime(LocalDateTime.now()); + ent.setCreateBy("crm"); + ent.setCreateTime(LocalDateTime.now()); + } + ent.setDeviceNo(u.getMachine_Number__c()); + ent.setDeviceType(u.getAssetProductLine3__c()); + ent.setDeviceTypeSub(u.getAssetProductLine4__c()); + ent.setModelNo(u.getProductLine5__c()); + if (StrUtil.isNotBlank(u.getAccount())) { + JSONObject jsonObject = JSONObject.parseObject(u.getAccount()); + String cname = jsonObject.getString("Name"); + ent.setCustomerName(cname); + } + + ent.setSourceFrom(DeviceSourceFromEnum.FROM_CRM.getSourceKey()); + ent.setCustomerId(0); + ent.setDeviceState(0); + result.add(ent); + }); + if (CollUtil.isNotEmpty(result)) { + + //将设备类型放入-设备类型表维护客户质量管理人 + List deviceTypes = result.stream().map(u -> u.getDeviceType()).collect(Collectors.toList()); + adminDeviceTypeService.batchAddDeviceType(deviceTypes); + //将设备机型 + List models = result.stream().map(u -> u.getModelNo()).collect(Collectors.toList()); + adminDeviceComponentService.batchAddModelNo(models); + + deviceService.saveOrUpdateBatch(result); + } + +// } } } 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 31a7afc2..be48f7ef 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 @@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.nflg.mobilebroken.admin.pojo.dto.CrmGetTokenResultDTO; +import com.nflg.mobilebroken.admin.pojo.dto.SyncFromCrmDTO; import com.nflg.mobilebroken.admin.pojo.vo.CmrAgentResultVO; import com.nflg.mobilebroken.admin.pojo.vo.CmrDeviceResultVO; import com.nflg.mobilebroken.common.constant.STATE; @@ -90,17 +91,17 @@ public class CrmService { /** * 获取代理商列表 - * @param date yyyy-MM-dd + * @param dateParam yyyy-MM-dd * @return */ - public List getAgent(String date) { + public List getAgent(SyncFromCrmDTO dateParam) { try { HttpUtils httpUtils = new HttpUtils(); - Map paramMp = new HashMap<>(); - Map reBody = new HashMap<>(); - reBody.put("CrLsDate", date); +// Map paramMp = new HashMap<>(); +// Map reBody = new HashMap<>(); +// reBody.put("CrLsDate", date); String token = StrUtil.join(" ", "Bearer", getToken()); - String orderResult = httpUtils.doPost(getAgentUrl, JSON.toJSONString(reBody), token); + String orderResult = httpUtils.doPost(getAgentUrl, JSON.toJSONString(dateParam), token); JSONObject jsonObject = JSONObject.parseObject(orderResult); String code = jsonObject.getString("code"); if (Objects.equals(code, "0")) { @@ -117,14 +118,14 @@ public class CrmService { * 获取设备 */ - public List getAsset(String startDate) { + public List getAsset(SyncFromCrmDTO dateParam) { try { HttpUtils httpUtils = new HttpUtils(); Map paramMp = new HashMap<>(); Map reBody = new HashMap<>(); - reBody.put("CrLsDate", startDate); +// reBody.put("CrLsDate", startDate); String token = StrUtil.join(" ", "Bearer", getToken()); - String orderResult = httpUtils.doPost(getDeviceUrl, JSON.toJSONString(reBody), token); + String orderResult = httpUtils.doPost(getDeviceUrl, JSON.toJSONString(dateParam), 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 623c1431..c098238e 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 @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DatePattern; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; +import com.nflg.mobilebroken.admin.pojo.dto.SyncFromCrmDTO; import com.nflg.mobilebroken.admin.pojo.dto.TiketTimeoutDTO; import com.nflg.mobilebroken.admin.service.AdminCustomerService; import com.nflg.mobilebroken.admin.service.AdminDeviceService; @@ -179,7 +180,7 @@ public class TicketScheduledTasks { LocalDate previousDate = currentDate.minusDays(1); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String cdate = formatter.format(previousDate); - adminCustomerService.syncFromCrm(cdate,cdate); + adminCustomerService.syncFromCrm(new SyncFromCrmDTO(cdate,cdate) ); log.info("同步代理商公司-成功"); } @@ -194,7 +195,7 @@ public class TicketScheduledTasks { LocalDate previousDate = currentDate.minusDays(1); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String cdate = formatter.format(previousDate); - adminDeviceService.syncFormCrm(cdate,cdate); + adminDeviceService.syncFormCrm(new SyncFromCrmDTO(cdate,cdate) ); log.info("同步CRM设备-成功"); } diff --git a/nflg-mobilebroken-admin/src/test/java/ControllerTest.java b/nflg-mobilebroken-admin/src/test/java/ControllerTest.java index 5a78d112..d262488b 100644 --- a/nflg-mobilebroken-admin/src/test/java/ControllerTest.java +++ b/nflg-mobilebroken-admin/src/test/java/ControllerTest.java @@ -1,6 +1,7 @@ import cn.hutool.core.util.StrUtil; import com.nflg.mobilebroken.admin.AdminApplication; import com.nflg.mobilebroken.admin.annotation.ApiMark; +import com.nflg.mobilebroken.admin.pojo.dto.SyncFromCrmDTO; import com.nflg.mobilebroken.admin.service.AdminCustomerService; import com.nflg.mobilebroken.admin.service.AdminDeviceService; import com.nflg.mobilebroken.admin.service.CrmService; @@ -32,9 +33,14 @@ public class ControllerTest { @Resource AdminCustomerService customerService; + @Resource + AdminDeviceService deviceService; + @Test public void testToken(){ - customerService.syncFromCrm("2025-02-21","2025-02-22"); //2020-05-21 +// customerService.syncFromCrm(new SyncFromCrmDTO("2025-02-21","2025-02-25") ); //2020-05-21 + + deviceService.syncFormCrm(new SyncFromCrmDTO("2025-02-21","2025-02-25") ); // String qu = UniqueSequenceGenerator.generateCode("QU"); // System.out.println(qu); From 8b39e85052cf70c76e015b4e1e375b739be23130 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Sun, 23 Mar 2025 23:21:36 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=E6=A0=B9=E6=8D=AE=E8=AF=B7?= =?UTF-8?q?=E6=B1=82=E5=A4=B4language=E6=98=BE=E7=A4=BA=E5=AF=B9=E5=BA=94?= =?UTF-8?q?=E8=AF=AD=E8=A8=80=E7=9A=84=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mobilebroken/cfs/config/WebConfig.java | 21 ++++++++++++++ .../cfs/interceptor/LanguageInterceptor.java | 28 +++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/config/WebConfig.java create mode 100644 nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/interceptor/LanguageInterceptor.java diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/config/WebConfig.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/config/WebConfig.java new file mode 100644 index 00000000..548d4a54 --- /dev/null +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/config/WebConfig.java @@ -0,0 +1,21 @@ +package com.nflg.mobilebroken.cfs.config; + +import com.nflg.mobilebroken.cfs.interceptor.LanguageInterceptor; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +import javax.annotation.Resource; + +@Configuration +public class WebConfig implements WebMvcConfigurer { + + @Resource + private LanguageInterceptor languageInterceptor; + + @Override + public void addInterceptors(InterceptorRegistry registry) { + // 注册拦截器并指定拦截路径 + registry.addInterceptor(languageInterceptor).addPathPatterns("/**"); + } +} diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/interceptor/LanguageInterceptor.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/interceptor/LanguageInterceptor.java new file mode 100644 index 00000000..8792abdf --- /dev/null +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/interceptor/LanguageInterceptor.java @@ -0,0 +1,28 @@ +package com.nflg.mobilebroken.cfs.interceptor; + +import cn.hutool.core.util.StrUtil; +import com.nflg.mobilebroken.common.util.MultilingualUtil; +import org.springframework.stereotype.Component; +import org.springframework.web.servlet.HandlerInterceptor; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@Component +public class LanguageInterceptor implements HandlerInterceptor { + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + // 从请求头中获取 language 参数 + String language = request.getHeader("language"); + if(StrUtil.isNotBlank(language)){ + MultilingualUtil.setLanguage(language); + } + return true; + } + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { + // 请求完成后清理 ThreadLocal,防止内存泄漏 + MultilingualUtil.clear(); + } +}