Browse Source

增加删除定时任务的接口;应用启动时不开启定时任务

sunyj 8 years ago
parent
commit
844db6032b

+ 0 - 67
search-console-b2b/src/main/java/com/uas/search/console/b2b/Application.java

@@ -4,8 +4,6 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.NotSerializableException;
 import java.io.PrintStream;
-import java.util.HashMap;
-import java.util.Map;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -14,14 +12,6 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
 import org.springframework.web.servlet.config.annotation.EnableWebMvc;
 
 import com.uas.search.console.b2b.core.util.ContextUtils;
-import com.uas.search.console.b2b.model.PurchaseInquiryItemSimpleInfo;
-import com.uas.search.console.b2b.model.PurchaseInquiryMouldSimpleInfo;
-import com.uas.search.console.b2b.model.PurchaseTenderSimpleInfo;
-import com.uas.search.console.b2b.model.SaleQuotationSimpleInfo;
-import com.uas.search.console.b2b.schedule.service.TaskService;
-import com.uas.search.console.b2b.service.UpdateVirtualColumnService;
-import com.uas.search.console.b2b.support.RealTimeUpdateMonitor;
-import com.uas.search.console.b2b.util.SearchConstants.DataSourceQualifier;
 
 @EnableTransactionManagement
 @EnableWebMvc
@@ -33,62 +23,5 @@ public class Application {
 		SpringApplication application = new SpringApplication(Application.class);
 		application.addListeners(new ContextUtils());
 		application.run(args);
-
-		startTask();
-	}
-
-	/**
-	 * 开启定时任务
-	 * 
-	 * @throws IOException
-	 * @throws ClassNotFoundException
-	 * @throws NotSerializableException
-	 */
-	public static void startTask() throws NotSerializableException, ClassNotFoundException, IOException {
-		SystemProperties systemProperties = ContextUtils.getBean(SystemProperties.class);
-		if (systemProperties.isTaskAutoStart()) {
-			UpdateVirtualColumnService updateVirtualColumnService = ContextUtils
-					.getBean(UpdateVirtualColumnService.class);
-			// 需更新的虚拟列 定时更新采购询价单明细虚拟列索引
-			Map<String, Class<?>> purchaseInquiryItemFields = new HashMap<>();
-			purchaseInquiryItemFields.put("overdue", Short.class);
-			purchaseInquiryItemFields.put("invalid", Short.class);
-			updateVirtualColumnService.newDailyTask(PurchaseInquiryItemSimpleInfo.class, purchaseInquiryItemFields,
-					systemProperties.getDailyTaskHour(), systemProperties.getDailyTaskMinute(),
-					systemProperties.getDailyTaskSecond());
-
-			// 定时更新主动报价单虚拟列索引
-			Map<String, Class<?>> saleQuotationFields = new HashMap<>();
-			saleQuotationFields.put("overdue", Short.class);
-			updateVirtualColumnService.newDailyTask(SaleQuotationSimpleInfo.class, saleQuotationFields,
-					systemProperties.getDailyTaskHour(), systemProperties.getDailyTaskMinute(),
-					systemProperties.getDailyTaskSecond());
-
-			// 需更新的虚拟列 定时更新模具询价单虚拟列索引
-			Map<String, Class<?>> inquiryMouldFields = new HashMap<>();
-			inquiryMouldFields.put("overdue", Short.class);
-			updateVirtualColumnService.newDailyTask(PurchaseInquiryMouldSimpleInfo.class, inquiryMouldFields,
-					systemProperties.getDailyTaskHour(), systemProperties.getDailyTaskMinute(),
-					systemProperties.getDailyTaskSecond());
-
-			// 定时更新招标单虚拟列索引
-			Map<String, Class<?>> purchaseTenderFields = new HashMap<>();
-			purchaseTenderFields.put("overdue", Short.class);
-			purchaseTenderFields.put("result", Short.class);
-			updateVirtualColumnService.newDailyTask(PurchaseTenderSimpleInfo.class, purchaseTenderFields,
-					systemProperties.getDailyTaskHour(), systemProperties.getDailyTaskMinute(),
-					systemProperties.getDailyTaskSecond());
-
-			// 定时监控实时更新异常情况
-			new RealTimeUpdateMonitor(DataSourceQualifier.PLATFORMB2B_DATASOURCE).newTask();
-			new RealTimeUpdateMonitor(DataSourceQualifier.PLATFORMMANAGER_DATASOURCE).newTask();
-
-			// 开启定时任务
-			TaskService taskService = ContextUtils.getBean(TaskService.class);
-			if (!taskService.isStopped()) {
-				taskService.stop();
-			}
-			taskService.start();
-		}
 	}
 }

+ 86 - 5
search-console-b2b/src/main/java/com/uas/search/console/b2b/controller/ScheduleController.java

@@ -16,10 +16,18 @@ import org.springframework.web.bind.annotation.ResponseBody;
 
 import com.alibaba.fastjson.JSONObject;
 import com.uas.search.b2b.service.SearchService.Table_name;
+import com.uas.search.console.b2b.SystemProperties;
+import com.uas.search.console.b2b.core.util.ContextUtils;
+import com.uas.search.console.b2b.model.PurchaseInquiryItemSimpleInfo;
+import com.uas.search.console.b2b.model.PurchaseInquiryMouldSimpleInfo;
+import com.uas.search.console.b2b.model.PurchaseTenderSimpleInfo;
+import com.uas.search.console.b2b.model.SaleQuotationSimpleInfo;
 import com.uas.search.console.b2b.schedule.model.TaskInformation;
 import com.uas.search.console.b2b.schedule.service.TaskService;
 import com.uas.search.console.b2b.service.UpdateVirtualColumnService;
+import com.uas.search.console.b2b.support.RealTimeUpdateMonitor;
 import com.uas.search.console.b2b.util.ClassAndTableNameUtils;
+import com.uas.search.console.b2b.util.SearchConstants.DataSourceQualifier;
 
 @Controller
 @RequestMapping("/schedule")
@@ -39,8 +47,8 @@ public class ScheduleController {
 			throws ClassNotFoundException, NotSerializableException, IOException {
 		Table_name table = Table_name.valueOf(tableName.toUpperCase());
 		if (table != Table_name.PURC$INQUIRYMOULD && table != Table_name.PURC$INQUIRYITEMS
-				&& table != Table_name.PURC$TENDER) {
-			return "不支持更新虚拟列overdue索引:" + tableName;
+				&& table != Table_name.PURC$TENDER && table != Table_name.SALE$QUOTATION) {
+			return "不支持更新虚拟列索引:" + tableName;
 		}
 		Map<String, Class<?>> map = new HashMap<>();
 		JSONObject jsonObject = JSONObject.parseObject(fields);
@@ -54,10 +62,22 @@ public class ScheduleController {
 		return message;
 	}
 
-	@RequestMapping("/tasks")
+	@RequestMapping("/delete")
 	@ResponseBody
-	public List<TaskInformation> allTaskInformations() {
-		return taskService.allTaskInformations();
+	public List<TaskInformation> delete(@RequestParam(required = true) List<String> titles) {
+		return taskService.delete(titles);
+	}
+
+	@RequestMapping("/deleteAll")
+	@ResponseBody
+	public List<TaskInformation> deleteAll() {
+		return taskService.deleteAll();
+	}
+
+	@RequestMapping("/all")
+	@ResponseBody
+	public List<TaskInformation> all() {
+		return taskService.all();
 	}
 
 	@RequestMapping("/start")
@@ -87,4 +107,65 @@ public class ScheduleController {
 		return taskService.isStopped();
 	}
 
+	@RequestMapping("/init")
+	@ResponseBody
+	public String init() throws NotSerializableException, ClassNotFoundException, IOException {
+		startTask();
+		return "已初始化";
+	}
+
+	/**
+	 * 开启定时任务
+	 * 
+	 * @throws IOException
+	 * @throws ClassNotFoundException
+	 * @throws NotSerializableException
+	 */
+	private void startTask() throws NotSerializableException, ClassNotFoundException, IOException {
+		SystemProperties systemProperties = ContextUtils.getBean(SystemProperties.class);
+		if (systemProperties.isTaskAutoStart()) {
+			UpdateVirtualColumnService updateVirtualColumnService = ContextUtils
+					.getBean(UpdateVirtualColumnService.class);
+			// 需更新的虚拟列 定时更新采购询价单明细虚拟列索引
+			Map<String, Class<?>> purchaseInquiryItemFields = new HashMap<>();
+			purchaseInquiryItemFields.put("overdue", Short.class);
+			purchaseInquiryItemFields.put("invalid", Short.class);
+			updateVirtualColumnService.newDailyTask(PurchaseInquiryItemSimpleInfo.class, purchaseInquiryItemFields,
+					systemProperties.getDailyTaskHour(), systemProperties.getDailyTaskMinute(),
+					systemProperties.getDailyTaskSecond());
+
+			// 定时更新主动报价单虚拟列索引
+			Map<String, Class<?>> saleQuotationFields = new HashMap<>();
+			saleQuotationFields.put("overdue", Short.class);
+			updateVirtualColumnService.newDailyTask(SaleQuotationSimpleInfo.class, saleQuotationFields,
+					systemProperties.getDailyTaskHour(), systemProperties.getDailyTaskMinute(),
+					systemProperties.getDailyTaskSecond());
+
+			// 需更新的虚拟列 定时更新模具询价单虚拟列索引
+			Map<String, Class<?>> inquiryMouldFields = new HashMap<>();
+			inquiryMouldFields.put("overdue", Short.class);
+			updateVirtualColumnService.newDailyTask(PurchaseInquiryMouldSimpleInfo.class, inquiryMouldFields,
+					systemProperties.getDailyTaskHour(), systemProperties.getDailyTaskMinute(),
+					systemProperties.getDailyTaskSecond());
+
+			// 定时更新招标单虚拟列索引
+			Map<String, Class<?>> purchaseTenderFields = new HashMap<>();
+			purchaseTenderFields.put("overdue", Short.class);
+			purchaseTenderFields.put("result", Short.class);
+			updateVirtualColumnService.newDailyTask(PurchaseTenderSimpleInfo.class, purchaseTenderFields,
+					systemProperties.getDailyTaskHour(), systemProperties.getDailyTaskMinute(),
+					systemProperties.getDailyTaskSecond());
+
+			// 定时监控实时更新异常情况
+			new RealTimeUpdateMonitor(DataSourceQualifier.PLATFORMB2B_DATASOURCE).newTask();
+			new RealTimeUpdateMonitor(DataSourceQualifier.PLATFORMMANAGER_DATASOURCE).newTask();
+
+			// 开启定时任务
+			TaskService taskService = ContextUtils.getBean(TaskService.class);
+			if (!taskService.isStopped()) {
+				taskService.stop();
+			}
+			taskService.start();
+		}
+	}
 }

+ 17 - 1
search-console-b2b/src/main/java/com/uas/search/console/b2b/schedule/service/TaskService.java

@@ -19,12 +19,28 @@ public interface TaskService {
 	 */
 	public void newTask(TaskInformation taskInformation);
 
+	/**
+	 * 根据任务标题删除定时任务
+	 * 
+	 * @param titles
+	 *            任务的标题
+	 * @return 删除的定时任务
+	 */
+	public List<TaskInformation> delete(List<String> titles);
+	
+	/**
+	 * 删除所有定时任务
+	 * 
+	 * @return 删除的定时任务
+	 */
+	public List<TaskInformation> deleteAll();
+
 	/**
 	 * 获取定时任务信息
 	 * 
 	 * @return
 	 */
-	public List<TaskInformation> allTaskInformations();
+	public List<TaskInformation> all();
 
 	/**
 	 * 开启定时任务

+ 35 - 1
search-console-b2b/src/main/java/com/uas/search/console/b2b/schedule/service/impl/TaskServiceImpl.java

@@ -60,6 +60,40 @@ public class TaskServiceImpl implements TaskService {
 		taskInformations.add(taskInformation);
 	}
 
+	@Override
+	public List<TaskInformation> delete(List<String> titles) {
+		List<TaskInformation> result = new ArrayList<>();
+		if (CollectionUtils.isEmpty(titles)) {
+			return result;
+		}
+		if (!isStopped()) {
+			stop();
+		}
+		for (String title : titles) {
+			for (int i = taskInformations.size() - 1; i >= 0; i--) {
+				TaskInformation taskInformation = taskInformations.get(i);
+				if (taskInformation.getTitle().equalsIgnoreCase(title)) {
+					taskInformations.remove(taskInformation);
+					result.add(taskInformation);
+				}
+			}
+		}
+		if (!CollectionUtils.isEmpty(taskInformations)) {
+			start();
+		}
+		return result;
+	}
+
+	@Override
+	public List<TaskInformation> deleteAll() {
+		if (!isStopped()) {
+			stop();
+		}
+		List<TaskInformation> result = taskInformations;
+		taskInformations = new ArrayList<>();
+		return result;
+	}
+
 	/**
 	 * 判断定时任务是否已经存在
 	 * 
@@ -109,7 +143,7 @@ public class TaskServiceImpl implements TaskService {
 	}
 
 	@Override
-	public List<TaskInformation> allTaskInformations() {
+	public List<TaskInformation> all() {
 		return taskInformations;
 	}
 

+ 4 - 1
search-console-b2b/src/main/webapp/WEB-INF/views/console.html

@@ -58,7 +58,10 @@
 			<strong><li class="title">定时任务</li></strong>
 			<ol>
 				<li><a target="_blank">schedule/updateVirtualColumns?tableName=purc$inquirymould&fields={"overdue":"java.lang.Short"}&hour=20&minute=16&second=0</a></li>
-				<li><a target="_blank">schedule/tasks</a></li>
+				<li><a target="_blank">schedule/delete?titles=title1,title2</a></li>
+				<li><a target="_blank">schedule/deleteAll</a></li>
+				<li><a target="_blank">schedule/init</a></li>
+				<li><a target="_blank">schedule/all</a></li>
 				<li><a target="_blank">schedule/start</a></li>
 				<li><a target="_blank">schedule/stop</a></li>
 				<li><a target="_blank">schedule/restart</a></li>