|
@@ -1,9 +1,18 @@
|
|
|
package cn.cslg.pas.service.upLoadPatent;
|
|
|
|
|
|
import cn.cslg.pas.common.model.vo.UploadParamsVO;
|
|
|
+import cn.cslg.pas.common.model.vo.UploadSettingVO;
|
|
|
+import cn.cslg.pas.common.utils.ReadExcelUtils;
|
|
|
+import cn.cslg.pas.domain.PatentData;
|
|
|
+import cn.cslg.pas.domain.Task;
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
import org.apache.poi.ss.formula.functions.T;
|
|
|
+import org.springframework.context.annotation.Lazy;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.io.IOException;
|
|
|
import java.util.LinkedList;
|
|
|
+import java.util.List;
|
|
|
import java.util.Queue;
|
|
|
import java.util.concurrent.CountDownLatch;
|
|
|
import java.util.concurrent.locks.Condition;
|
|
@@ -13,29 +22,38 @@ import java.util.concurrent.locks.ReentrantLock;
|
|
|
/** 将专利信息存入队列或从队列取出
|
|
|
* @author 李仁杰
|
|
|
*/
|
|
|
+@Service
|
|
|
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
|
|
|
public class PantentQueueService {
|
|
|
+ private final ExcuteDataToVOService excuteDataToVOService;
|
|
|
+ private final ExcuteUploadSettingService excuteUploadSettingService;
|
|
|
private Queue<UploadParamsVO> queue = new LinkedList<>();
|
|
|
private Boolean flag =false;
|
|
|
private CountDownLatch latch = new CountDownLatch(10);
|
|
|
//将专利信息存入队列
|
|
|
- public void addPatnetToQueue() throws InterruptedException {
|
|
|
- Boolean t =false;
|
|
|
+ public void addPatnetToQueue(Task task) throws InterruptedException {
|
|
|
try {
|
|
|
- for(int i=0;i<10;i++){
|
|
|
- UploadParamsVO up = new UploadParamsVO();
|
|
|
- up.setFirstAddress(i+"");
|
|
|
- System.out.println("进入队列" + up.getFirstAddress());
|
|
|
- queue.add(up);
|
|
|
+ //获得文件路径
|
|
|
+ String filePath=task.getUrl();
|
|
|
+ //检查文件合法性
|
|
|
+ Integer totalRow = ReadExcelUtils.textExcel(filePath);
|
|
|
+ //解析配置信息
|
|
|
+ List<UploadSettingVO.Column> jsonData =excuteUploadSettingService.ExcuteUploadSetting(task.getProductId()+"");
|
|
|
+ for(int i=0;i<totalRow;i++){
|
|
|
+ PatentData patentData = ReadExcelUtils.readExcelOneRow(filePath,i);
|
|
|
+ UploadParamsVO uploadParamsVO =excuteDataToVOService.fileToPatentVO(patentData,jsonData);
|
|
|
+ queue.add(uploadParamsVO);
|
|
|
//通知消费者线程
|
|
|
latch.countDown();
|
|
|
- Thread.sleep(1000);
|
|
|
}
|
|
|
- }
|
|
|
- finally {
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ } finally {
|
|
|
}
|
|
|
|
|
|
flag=true;
|
|
|
}
|
|
|
+
|
|
|
//将专利信息从队列取出
|
|
|
public void pushPantentToDb() throws InterruptedException {
|
|
|
try {
|
|
@@ -50,9 +68,8 @@ public class PantentQueueService {
|
|
|
}
|
|
|
}
|
|
|
else{
|
|
|
-// Thread.sleep(5000);
|
|
|
-// t=queue.remove();
|
|
|
-// System.out.println("出队列"+t);
|
|
|
+ UploadParamsVO uploadParamsVO=queue.remove();
|
|
|
+ System.out.println("出队列"+uploadParamsVO);
|
|
|
}
|
|
|
}
|
|
|
|