Przeglądaj źródła

初始化定时任务时允许指定时间

sunyj 8 lat temu
rodzic
commit
bc5f10005c

+ 56 - 48
search-console-b2b/src/main/java/com/uas/search/console/b2b/controller/ScheduleController.java

@@ -33,6 +33,9 @@ import com.uas.search.console.b2b.util.SearchConstants.DataSourceQualifier;
 @RequestMapping("/schedule")
 public class ScheduleController {
 
+	@Autowired
+	private SystemProperties systemProperties;
+
 	@Autowired
 	private UpdateVirtualColumnService updateVirtualColumnService;
 
@@ -109,63 +112,68 @@ public class ScheduleController {
 
 	@RequestMapping("/init")
 	@ResponseBody
-	public String init() throws NotSerializableException, ClassNotFoundException, IOException {
-		startTask();
-		return "已初始化";
+	public List<TaskInformation> init(Integer hour, Integer minute, Integer second)
+			throws NotSerializableException, ClassNotFoundException, IOException {
+		return startTask(hour, minute, second);
 	}
 
 	/**
 	 * 开启定时任务
 	 * 
+	 * @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();
+	private List<TaskInformation> startTask(Integer hour, Integer minute, Integer second)
+			throws NotSerializableException, ClassNotFoundException, IOException {
+		if (hour == null) {
+			hour = systemProperties.getDailyTaskHour();
+		}
+		if (minute == null) {
+			minute = systemProperties.getDailyTaskMinute();
+		}
+		if (second == null) {
+			second = systemProperties.getDailyTaskSecond();
 		}
+		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, hour,
+				minute, second);
+
+		// 定时更新主动报价单虚拟列索引
+		Map<String, Class<?>> saleQuotationFields = new HashMap<>();
+		saleQuotationFields.put("overdue", Short.class);
+		updateVirtualColumnService.newDailyTask(SaleQuotationSimpleInfo.class, saleQuotationFields, hour, minute,
+				second);
+
+		// 需更新的虚拟列 定时更新模具询价单虚拟列索引
+		Map<String, Class<?>> inquiryMouldFields = new HashMap<>();
+		inquiryMouldFields.put("overdue", Short.class);
+		updateVirtualColumnService.newDailyTask(PurchaseInquiryMouldSimpleInfo.class, inquiryMouldFields, hour, minute,
+				second);
+
+		// 定时更新招标单虚拟列索引
+		Map<String, Class<?>> purchaseTenderFields = new HashMap<>();
+		purchaseTenderFields.put("overdue", Short.class);
+		purchaseTenderFields.put("result", Short.class);
+		updateVirtualColumnService.newDailyTask(PurchaseTenderSimpleInfo.class, purchaseTenderFields, hour, minute,
+				second);
+
+		// 定时监控实时更新异常情况
+		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();
+		return taskService.all();
 	}
 }

+ 12 - 1
search-console-b2b/src/main/java/com/uas/search/console/b2b/schedule/model/DailyTaskInformation.java

@@ -4,6 +4,7 @@ import java.util.Calendar;
 import java.util.Date;
 import java.util.Objects;
 
+import com.uas.search.b2b.exception.SearchException;
 import com.uas.search.console.b2b.schedule.service.Executable;
 
 /**
@@ -34,7 +35,17 @@ public class DailyTaskInformation extends TaskInformation {
 	 */
 	private int second;
 
-	public DailyTaskInformation(String title, Executable command, int hour, int minute, int second) {
+	public DailyTaskInformation(String title, Executable command, int hour, int minute, int second)
+			throws SearchException {
+		if (hour < 0 || hour > 23) {
+			throw new SearchException("hour不合法:" + hour);
+		}
+		if (minute < 0 || minute > 59) {
+			throw new SearchException("minute不合法:" + minute);
+		}
+		if (second < 0 || second > 59) {
+			throw new SearchException("second不合法:" + second);
+		}
 		this.hour = hour;
 		this.minute = minute;
 		this.second = second;

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

@@ -60,6 +60,7 @@
 				<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/delete?titles=title1,title2</a></li>
 				<li><a target="_blank">schedule/deleteAll</a></li>
+				<li>schedule/init?hour=8&minute=0&second=0</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>