diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/JobExcelImportRecordController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/JobExcelImportRecordController.java index 2144aef..d8cee03 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/JobExcelImportRecordController.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/JobExcelImportRecordController.java @@ -1,6 +1,8 @@ package com.ruoyi.cms.controller.cms; +import cn.hutool.core.collection.CollUtil; import com.ruoyi.cms.domain.JobExcelImportRecord; +import com.ruoyi.cms.service.IJobService; import com.ruoyi.cms.service.JobExcelImportRecordService; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; @@ -8,6 +10,7 @@ import com.ruoyi.common.core.page.TableDataInfo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -24,6 +27,8 @@ public class JobExcelImportRecordController extends BaseController { @Autowired private JobExcelImportRecordService jobExcelImportRecordService; + @Autowired + private IJobService jobService; /** * 查询列表 @@ -50,8 +55,24 @@ public class JobExcelImportRecordController extends BaseController { if (fileName == null || !fileName.endsWith(".xlsx") && !fileName.endsWith(".xls")) { return AjaxResult.error("请上传Excel格式的文件"); } - jobExcelImportRecordService.uploadFile(file); + List effectIds=jobExcelImportRecordService.uploadFile(file); + if (CollUtil.isNotEmpty(effectIds)) { + this.asyncFillLonLat(effectIds); + } return success(); } + /** + * 批量更新坐标 + * @param jobIdList + */ + @Async + public void asyncFillLonLat(List jobIdList) { + try { + jobService.updateLonToByIds(jobIdList); + } catch (Exception e) { + e.printStackTrace(); + } + } + } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IJobService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IJobService.java index 8d7a04f..08a5fab 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IJobService.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IJobService.java @@ -122,4 +122,6 @@ public interface IJobService public int jobDown(Long jobId); public int jobUp(Long jobId); + + void updateLonToByIds(List ids); } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/JobExcelImportRecordService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/JobExcelImportRecordService.java index a375e3b..3bcbee6 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/JobExcelImportRecordService.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/JobExcelImportRecordService.java @@ -18,5 +18,5 @@ public interface JobExcelImportRecordService { */ List selectShzJobExcelImportRecordList(JobExcelImportRecord jobExcelImportRecord); - void uploadFile(MultipartFile file) throws Exception; + List uploadFile(MultipartFile file) throws Exception; } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobExcelImportRecordServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobExcelImportRecordServiceImpl.java index 559dfd2..c7dedb2 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobExcelImportRecordServiceImpl.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobExcelImportRecordServiceImpl.java @@ -60,7 +60,8 @@ public class JobExcelImportRecordServiceImpl extends ServiceImpl uploadFile(MultipartFile file) throws Exception{ + List allEffectJobIds = new ArrayList<>(); String originalName = file.getOriginalFilename(); String nameNoSuffix = FileNameUtil.getName(originalName); //获取字典 @@ -86,7 +87,7 @@ public class JobExcelImportRecordServiceImpl extends ServiceImpl(); } jobExcelImportRecord.setStorageNumber(validDataList.size()); @@ -240,6 +241,7 @@ public class JobExcelImportRecordServiceImpl extends ServiceImpl allEffectJobIds.add(j.getJobId())); } //批量更新岗位 if (CollUtil.isNotEmpty(waitUpdateJob)) { @@ -250,6 +252,7 @@ public class JobExcelImportRecordServiceImpl extends ServiceImpl implements IJobSe System.out.println("工作地址经纬度更新完成,共处理 " + jobs.size() + " 条记录"); } + /** + * 更新工作地址的经纬度信息 + */ + @Override + public void updateLonToByIds(List ids) { + System.out.println("开始执行工作地址经纬度更新..."); + + // 1. 查询需要更新经纬度的工作地址 + List jobs = jobMapper.selectList( + Wrappers.lambdaQuery() + .in(Job::getJobId, ids) + .and(wrapper -> wrapper.isNull(Job::getLongitude).or().eq(Job::getLongitude, BigDecimal.ZERO)) + // 限制每次处理10条 + ); + + if (jobs.isEmpty()) { + System.out.println("没有需要更新经纬度的工作地址"); + return; + } + + // 2. 遍历处理每个工作地址 + for (Job job : jobs) { + try { + System.out.println("\n正在处理工作ID: " + job.getJobId() + + ", 地址: " + job.getJobLocation()); + + // 调用高德API获取经纬度(添加适当延迟) + TimeUnit.MILLISECONDS.sleep(500); + Map coordinates = getCoordinates(job.getJobLocation(), "石河子市"); + + if (coordinates != null) { + // 3. 更新工作记录的经纬度 + job.setLongitude(coordinates.get("lng")); + job.setLatitude(coordinates.get("lat")); + + // 使用MyBatis Plus的update方法 + jobMapper.updateById(job); + System.out.println("成功更新工作ID: " + job.getJobId() + + " 的经纬度 -> 经度: " + job.getLongitude() + + ", 纬度: " + job.getLatitude()); + } else { + System.out.println("无法获取工作地址的经纬度: " + job.getJobLocation()); + jobMapper.updateById(job); + } + } catch (Exception e) { + System.err.println("处理工作ID " + job.getJobId() + " 时出错: " + e.getMessage()); + } + } + + System.out.println("工作地址经纬度更新完成,共处理 " + jobs.size() + " 条记录"); + if (CollUtil.isNotEmpty(jobs)) { + iesJobSearchService.resetTextCache(); + } + } + /** * 调用高德地图API获取地址的经纬度并返回BigDecimal */