Browse Source

定时提醒和生成任务修正

baihe 3 years ago
parent
commit
d56eacb172

+ 59 - 44
application-task/src/main/java/com/factory/service/impl/PlanServiceImpl.java

@@ -5,6 +5,7 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.locks.ReentrantLock;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -26,6 +27,8 @@ import lombok.extern.slf4j.Slf4j;
 @Slf4j
 @Service
 public class PlanServiceImpl extends ServiceImpl<BentelerPlanMapper, BentelerPlan> implements PlanService{
+	private static ReentrantLock lock = new ReentrantLock();
+	private static ReentrantLock lock2 = new ReentrantLock();
 	@Autowired
 	private FirstTaskService firstTaskService;
 	@Autowired
@@ -58,9 +61,11 @@ public class PlanServiceImpl extends ServiceImpl<BentelerPlanMapper, BentelerPla
 				
 			}
 		}
-		//立刻生成任务
-		this.makeFirstTask(now);
-		this.makeOnsiteTask(now);
+		if(listMake.size()>0) {
+			//立刻生成任务
+			this.makeFirstTask(now);
+			this.makeOnsiteTask(now);
+		}
 		
 	}
 
@@ -74,51 +79,61 @@ public class PlanServiceImpl extends ServiceImpl<BentelerPlanMapper, BentelerPla
 		
 	}
 
-	public synchronized int makeFirstTask(LocalDate now) {
-        int num = 0;
-        List<FirstCalendar> cals = null;
-        FirstTask task = new FirstTask();
-        task.setTask_time(now);
-        for(int typeFlag=0;typeFlag<=1;typeFlag++) {//2中断在pad手动建立
-        	cals = firstTaskService.getCalenderFirstForType(typeFlag,now);
-        	num +=cals.size();
-        	log.debug("FA需要生成新任务数量:{}",cals.size());
-        	for (FirstCalendar cal : cals) {
-        		try {
-        			task.setFirst_article_calendar_id(cal.getId());
-        			task.setType_flag(typeFlag);
-        			firstTaskService.insertFirstTask(task);
-        		} catch (Throwable e) {
-        			log.error("FAaddTask生产任务出错",e);
-        		}
-        	}
-        }
-        return num;
+	public  int makeFirstTask(LocalDate now) {
+		try {
+			lock.lock();
+			int num = 0;
+			List<FirstCalendar> cals = null;
+			FirstTask task = new FirstTask();
+			task.setTask_time(now);
+			for(int typeFlag=0;typeFlag<=1;typeFlag++) {//2中断在pad手动建立
+				cals = firstTaskService.getCalenderFirstForType(typeFlag,now);
+				num +=cals.size();
+				log.debug("FA需要生成新任务数量:{}",cals.size());
+				for (FirstCalendar cal : cals) {
+					try {
+						task.setFirst_article_calendar_id(cal.getId());
+						task.setType_flag(typeFlag);
+						firstTaskService.insertFirstTask(task);
+					} catch (Throwable e) {
+						log.error("FAaddTask生产任务出错",e);
+					}
+				}
+			}
+			return num;
+		}finally {
+			lock.unlock();
+		}
 	}
-	public synchronized int makeOnsiteTask(LocalDate now) {
-		HashMap<String, Object> param = new HashMap<>();
-		param.put("today", now);
-		int num = 0;
-		// 直接查询没有生成任务的
-		List<OnsiteCalendar> cals = null;
-		for (int typeFlag = 0; typeFlag <= 2; typeFlag++) {
-			param.put("type_flag", typeFlag);
-			cals = onsiteTaskService.getCalenderOnsitesForType(param);
-			log.debug("OT需要生成新任务数量:{}", cals.size());
-			num = num + cals.size();
-			for (OnsiteCalendar cal : cals) {
-				try {
-					OnsiteTask task = new OnsiteTask();
-					task.setTask_time(now);// 周末和月末
-					task.setOnsite_calendar_id(cal.getId());
-					onsiteTaskService.insertOnsiteTask(task);
-				} catch (Throwable e) {
-					log.error("OTaddTask生产任务出错", e);
+	public  int makeOnsiteTask(LocalDate now) {
+		try {
+			lock2.lock();
+			HashMap<String, Object> param = new HashMap<>();
+			param.put("today", now);
+			int num = 0;
+			// 直接查询没有生成任务的
+			List<OnsiteCalendar> cals = null;
+			for (int typeFlag = 0; typeFlag <= 2; typeFlag++) {
+				param.put("type_flag", typeFlag);
+				cals = onsiteTaskService.getCalenderOnsitesForType(param);
+				log.debug("OT需要生成新任务数量:{}", cals.size());
+				num = num + cals.size();
+				for (OnsiteCalendar cal : cals) {
+					try {
+						OnsiteTask task = new OnsiteTask();
+						task.setTask_time(now);// 周末和月末
+						task.setOnsite_calendar_id(cal.getId());
+						onsiteTaskService.insertOnsiteTask(task);
+					} catch (Throwable e) {
+						log.error("OTaddTask生产任务出错", e);
+					}
+	
 				}
-
 			}
+			return num;
+		}finally {
+			lock2.unlock();
 		}
-		return num;
 	}
 	
 }

+ 1 - 1
application-task/src/main/resources/mappers/FirstTaskMapper.xml

@@ -67,7 +67,7 @@
          bp.id as bentelerPlanId,
          bp.name as planName,
          fat.type_flag  typeFlag,
-         case fac.type_flag
+         case fat.type_flag
          when 0 then '首件'
          when 1 then '200件'
          ELSE '中断'