定时任务

main
dongdingding 1 year ago
parent 7825799119
commit 5b521da1ea

@ -23,7 +23,6 @@ import javax.annotation.Resource;
@RestController @RestController
@Api(tags = "测试数据上链") @Api(tags = "测试数据上链")
@RequestMapping("/zhiyuanzhe/demo") @RequestMapping("/zhiyuanzhe/demo")
@Transactional(rollbackFor = Exception.class)
public class DemoController extends BaseController { public class DemoController extends BaseController {
@Resource @Resource

@ -0,0 +1,29 @@
package com.ruoyi.zhiyuanzhe.quartz;
import com.ruoyi.zhiyuanzhe.service.IBDistributionRecordsService;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
/**
*
*
* @author dong
* @since 2024/2/29 11:25
*/
@Configuration
@EnableScheduling
@Transactional(rollbackFor = Exception.class)
public class VolunteerQuartz {
@Resource
private IBDistributionRecordsService bDistributionRecordsService;
@Scheduled(cron = "0 0 3 * * ?")
public void volunteer() {
bDistributionRecordsService.volunteer();
}
}

@ -33,18 +33,10 @@ import com.ruoyi.zhiyuanzhe.service.IBDistributionRecordsService;
import com.ruoyi.zhiyuanzhe.service.IBPersonTagsService; import com.ruoyi.zhiyuanzhe.service.IBPersonTagsService;
import com.ruoyi.zhiyuanzhe.utils.PushDataUtil; import com.ruoyi.zhiyuanzhe.utils.PushDataUtil;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList; import java.util.*;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
/** /**
@ -329,59 +321,44 @@ public class BDistributionRecordsServiceImpl implements IBDistributionRecordsSer
} }
public void processVolunteers(List<VolunteerDTO> volunteerDTOS) { public void processVolunteers(List<VolunteerDTO> volunteerDTOS) {
int a = 0;
// 创建一个固定大小的线程池,线程数根据实际情况进行配置
ExecutorService executorService = Executors.newFixedThreadPool(20);
List<Future<?>> futures = new ArrayList<>();
List<SysUser> userList = new ArrayList<>(); List<SysUser> userList = new ArrayList<>();
List<BPersonTags> tagsList = new ArrayList<>(); List<BPersonTags> tagsList = new ArrayList<>();
for (VolunteerDTO dto : volunteerDTOS) { for (VolunteerDTO dto : volunteerDTOS) {
// 创建一个Runnable任务
Runnable task = () -> {
// 创建用户
SysUser sysUser = new SysUser();
// 创建人员标签
BPersonTags tags = new BPersonTags();
// 填充用户信息
sysUser.setNickName(dto.getName());
sysUser.setUserName(dto.getPhone());
// 加密密码
sysUser.setPassword(SecurityUtils.encryptPassword("123456"));
sysUser.setStatus("0");
sysUser.setDelFlag("0");
sysUser.setSex("2");
sysUser.setRoleId(101L);
sysUser.setUserId(Long.valueOf(dto.getPhone()));
// 标记为导出数据
sysUser.setRemark("1");
userList.add(sysUser);
// 填充人员标签
tags.setUId(Long.valueOf(dto.getPhone()));
tags.setNationalityRange(dto.getCountryText());
tags.setProfessionalRange(dto.getSkillText());
tags.setIndustryRange(dto.getIndustryCateText());
tags.setEducationRange(dto.getEducationText());
// 标记为导出数据
tags.setRemark("1");
tagsList.add(tags);
};
// 提交任务给线程池并获取Future对象
Future<?> future = executorService.submit(task);
futures.add(future);
}
// 等待所有任务执行完成 // 创建用户
for (Future<?> future : futures) { SysUser sysUser = new SysUser();
try { // 创建人员标签
future.get(); BPersonTags tags = new BPersonTags();
} catch (InterruptedException | ExecutionException e) { // 填充用户信息
// 处理异常 sysUser.setNickName(dto.getName());
e.printStackTrace(); sysUser.setUserName(dto.getPhone());
} // 加密密码
sysUser.setPassword(SecurityUtils.encryptPassword("123456"));
sysUser.setStatus("0");
sysUser.setDelFlag("0");
sysUser.setSex("2");
sysUser.setRoleId(101L);
sysUser.setUserId(Long.valueOf(dto.getPhone()));
// 标记为导出数据
sysUser.setRemark("1");
userList.add(sysUser);
// 填充人员标签
tags.setUId(Long.valueOf(dto.getPhone()));
tags.setNationalityRange(dto.getCountryText());
tags.setProfessionalRange(dto.getSkillText());
tags.setIndustryRange(dto.getIndustryCateText());
tags.setEducationRange(dto.getEducationText());
// 标记为导出数据
tags.setRemark("1");
tagsList.add(tags);
a = a + 1;
System.out.println("测试" + a);
} }
;
// 所有任务执行完成后执行批量保存操作 // 所有任务执行完成后执行批量保存操作
if (CollectionUtil.isNotEmpty(userList)) { if (CollectionUtil.isNotEmpty(userList)) {
@ -393,18 +370,17 @@ public class BDistributionRecordsServiceImpl implements IBDistributionRecordsSer
personTagsService.addAll(tagsList); personTagsService.addAll(tagsList);
} }
// 关闭线程池
executorService.shutdown();
} }
/** /**
* *
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void volunteer() { public void volunteer() {
// 删除所有导入的用户以及标签 // 删除所有导入的用户以及标签
sysUserService.delByRemark(); // sysUserService.delByRemark();
personTagsService.delByRemark(); // personTagsService.delByRemark();
// 将字符串日期转换为Date对象 // 将字符串日期转换为Date对象
Date startTime = DateUtil.parse("2012-01-01 00:00:00"); Date startTime = DateUtil.parse("2012-01-01 00:00:00");
Date localTime = new Date(); Date localTime = new Date();

@ -12,11 +12,7 @@ import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.system.domain.SysPost; import com.ruoyi.system.domain.SysPost;
import com.ruoyi.system.domain.SysUserPost; import com.ruoyi.system.domain.SysUserPost;
import com.ruoyi.system.domain.SysUserRole; import com.ruoyi.system.domain.SysUserRole;
import com.ruoyi.system.mapper.SysPostMapper; import com.ruoyi.system.mapper.*;
import com.ruoyi.system.mapper.SysRoleMapper;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.mapper.SysUserPostMapper;
import com.ruoyi.system.mapper.SysUserRoleMapper;
import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysConfigService;
import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.ISysUserService;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -489,17 +485,45 @@ public class SysUserServiceImpl implements ISysUserService {
*/ */
@Override @Override
public void addAll(List<SysUser> userList) { public void addAll(List<SysUser> userList) {
// 新增用户信息 int batchSize = 50;
userMapper.addAll(userList); int totalSize = userList.size();
// 新增用户与角色管理 int fullBatches = totalSize / batchSize;
List<SysUserRole> list = new ArrayList<>(userList.size()); int remainingItems = totalSize % batchSize;
for (SysUser user : userList) { // 处理完整的批次
SysUserRole ur = new SysUserRole(); for (int i = 0; i < fullBatches; i++) {
ur.setUserId(user.getUserId()); int startIndex = i * batchSize;
ur.setRoleId(user.getRoleId()); int endIndex = (i + 1) * batchSize;
list.add(ur); List<SysUser> subList = userList.subList(startIndex, endIndex);
// 批量新增用户信息
userMapper.addAll(subList);
// 批量新增用户与角色关联信息
List<SysUserRole> userRoleList = new ArrayList<>();
for (SysUser user : subList) {
SysUserRole ur = new SysUserRole();
ur.setUserId(user.getUserId());
ur.setRoleId(user.getRoleId());
userRoleList.add(ur);
}
userRoleMapper.batchUserRole(userRoleList);
} }
userRoleMapper.batchUserRole(list);
// 处理余数的数据
if (remainingItems > 0) {
int startIndex = fullBatches * batchSize;
List<SysUser> remainingList = userList.subList(startIndex, totalSize);
// 批量新增用户信息
userMapper.addAll(remainingList);
// 批量新增用户与角色关联信息
List<SysUserRole> userRoleList = new ArrayList<>();
for (SysUser user : remainingList) {
SysUserRole ur = new SysUserRole();
ur.setUserId(user.getUserId());
ur.setRoleId(user.getRoleId());
userRoleList.add(ur);
}
userRoleMapper.batchUserRole(userRoleList);
}
} }
/** /**

Loading…
Cancel
Save