1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- package cn.cslg.pas.service.importPatent;
- import cn.cslg.pas.common.core.base.Constants;
- import cn.cslg.pas.common.model.cronModel.ImportTaskConfig;
- import cn.cslg.pas.common.model.cronModel.OrderConfig;
- import cn.cslg.pas.common.vo.ImportTaskAMVO;
- import cn.cslg.pas.factorys.PatentImportFactory.PatentImportFactory;
- import cn.cslg.pas.factorys.PatentImportFactory.PatentImportImp;
- import cn.cslg.pas.service.business.CommonService;
- import cn.cslg.pas.service.business.ImportTaskService;
- import com.alibaba.fastjson.JSON;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Configurable;
- import org.springframework.context.ApplicationContext;
- import org.springframework.stereotype.Component;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.concurrent.locks.Condition;
- import java.util.concurrent.locks.Lock;
- import java.util.concurrent.locks.ReentrantLock;
- @Configurable
- public class TaskThread extends Thread {
- @Autowired
- SchedulingTaskService importTaskAdd;
- private ApplicationContext applicationContext;
- private final Lock taskThreadLock = new ReentrantLock();
- private final Condition taskThreadCondition = taskThreadLock.newCondition();
- private final List<Integer> importTaskQueue = new ArrayList<>();
- private ImportTaskAMVO importTaskAMVO;
- /**
- * 从任务队列取出并执行任务
- */
- public TaskThread(ImportTaskAMVO importTaskAMVO,ApplicationContext applicationContext) {
- this.importTaskAMVO = importTaskAMVO;
- this.applicationContext =applicationContext;
- }
- @Override
- public void run() {
- //TODO 判断任务的类型 调用不同线程(可做工厂类)
- String json = CommonService.readJsonFile(Constants.IMPORT_TASK_CONFIG + ".json");
- List<ImportTaskConfig> configs = JSON.parseArray(json, ImportTaskConfig.class);
- PatentImportFactory patentImportFactory =applicationContext.getBean(PatentImportFactory.class);
- //根据任务类型使用不同的导入类
- ImportTaskConfig config = configs.stream().filter(item -> item.getTaskType().equals(importTaskAMVO.getType()) && item.getImportTo().equals(Constants.IMPORT_PATENT_TO)).findFirst().orElse(null);
- PatentImportImp patentImportImp= patentImportFactory.getClass(config.getImportClass());
- patentImportImp.setTaskThread(this);
- patentImportImp.startPatentThread();
- taskThreadLock.lock();
- try {
- taskThreadCondition.await();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- // importTaskAdd.startTask();
- System.out.println("任务结束");
- }
- public void awakeTaskThread() {
- if (taskThreadLock.tryLock()) {
- //taskLock.lock();
- taskThreadCondition.signalAll();
- taskThreadLock.unlock();
- }
- }
- public ImportTaskAMVO getImportTaskAMVO() {
- return this.importTaskAMVO;
- }
- public ApplicationContext getApplicationContext() {
- return this.applicationContext;
- }
- ;
- }
|