|
|
@@ -1,15 +1,24 @@
|
|
|
package com.izouma.wenlvju.service;
|
|
|
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.alibaba.excel.EasyExcel;
|
|
|
import com.izouma.wenlvju.domain.TrainingInstitution;
|
|
|
import com.izouma.wenlvju.dto.PageQuery;
|
|
|
+import com.izouma.wenlvju.dto.ProgUploadDTO;
|
|
|
+import com.izouma.wenlvju.dto.TrainingInstitutionDTO;
|
|
|
import com.izouma.wenlvju.repo.TrainingInstitutionRepo;
|
|
|
import com.izouma.wenlvju.service.sms.NjwlSmsService;
|
|
|
import com.izouma.wenlvju.utils.JpaUtils;
|
|
|
+import com.izouma.wenlvju.utils.excel.UploadDataListener;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import org.springframework.data.domain.Page;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
+import javax.transaction.Transactional;
|
|
|
+import java.io.IOException;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
|
@@ -23,8 +32,8 @@ public class TrainingInstitutionService {
|
|
|
return trainingInstitutionRepo.findAll(JpaUtils.toSpecification(pageQuery, TrainingInstitution.class), JpaUtils.toPageRequest(pageQuery));
|
|
|
}
|
|
|
|
|
|
- public void batchSend() throws InterruptedException {
|
|
|
- List<String> phones = trainingInstitutionRepo.findAllBySubmitFalseAndPhoneIsNotNull();
|
|
|
+ public void batchSend(List<String> phones) throws InterruptedException {
|
|
|
+
|
|
|
int count = phones.size() / 950;
|
|
|
String body = "";
|
|
|
for (int i = 0; i < count; i++) {
|
|
|
@@ -43,4 +52,29 @@ public class TrainingInstitutionService {
|
|
|
}
|
|
|
|
|
|
}
|
|
|
+
|
|
|
+ @Transactional(rollbackOn = Exception.class)
|
|
|
+ public void upload(MultipartFile file) throws IOException, InterruptedException {
|
|
|
+ UploadDataListener<TrainingInstitutionDTO> listener = new UploadDataListener<>();
|
|
|
+ List<TrainingInstitutionDTO> dtos = EasyExcel.read(file.getInputStream(), TrainingInstitutionDTO.class, listener)
|
|
|
+ .sheet()
|
|
|
+ .doReadSync();
|
|
|
+ List<Long> ids = dtos.stream().map(TrainingInstitutionDTO::getId).collect(Collectors.toList());
|
|
|
+ List<TrainingInstitution> all = trainingInstitutionRepo.findAllById(ids);
|
|
|
+ Map<Long, TrainingInstitution> tiMap = all
|
|
|
+ .stream()
|
|
|
+ .collect(Collectors.toMap(TrainingInstitution::getId, trainingInstitution -> trainingInstitution));
|
|
|
+
|
|
|
+ dtos.forEach(dto -> {
|
|
|
+ TrainingInstitution trainingInstitution = tiMap.get(dto.getId());
|
|
|
+ if (ObjectUtil.isNotNull(trainingInstitution)) {
|
|
|
+ trainingInstitution.setPhone(dto.getPhone());
|
|
|
+ trainingInstitutionRepo.save(trainingInstitution);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ // 发送短信
|
|
|
+ this.batchSend(dtos.stream().map(TrainingInstitutionDTO::getPhone).collect(Collectors.toList()));
|
|
|
+
|
|
|
+ }
|
|
|
}
|