|
@@ -0,0 +1,124 @@
|
|
|
+package com.factory.service.impl;
|
|
|
+
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.factory.base.entity.enumPo.PlanStatus;
|
|
|
+import com.factory.base.entity.po.benteler.BentelerPlan;
|
|
|
+import com.factory.base.entity.task.FirstCalendar;
|
|
|
+import com.factory.base.entity.task.FirstTask;
|
|
|
+import com.factory.base.entity.task.OnsiteCalendar;
|
|
|
+import com.factory.base.entity.task.OnsiteTask;
|
|
|
+import com.factory.mapper.BentelerPlanMapper;
|
|
|
+import com.factory.service.FirstTaskService;
|
|
|
+import com.factory.service.OnsiteTaskService;
|
|
|
+import com.factory.service.PlanService;
|
|
|
+
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+
|
|
|
+@Slf4j
|
|
|
+@Service
|
|
|
+public class PlanServiceImpl extends ServiceImpl<BentelerPlanMapper, BentelerPlan> implements PlanService{
|
|
|
+ @Autowired
|
|
|
+ private FirstTaskService firstTaskService;
|
|
|
+ @Autowired
|
|
|
+ private OnsiteTaskService onsiteTaskService;
|
|
|
+ @Override
|
|
|
+ public void effectPlan(LocalDate now) {
|
|
|
+ List<BentelerPlan> list = this.lambdaQuery()
|
|
|
+ .eq(BentelerPlan::getStatus, PlanStatus.APPROVAL_PASS)
|
|
|
+ .le(BentelerPlan::getEffectiveDate, now)
|
|
|
+ .orderByDesc(BentelerPlan::getId)
|
|
|
+ .list();
|
|
|
+ Map<Long,BentelerPlan> cacheMap = new HashMap<>();
|
|
|
+
|
|
|
+ List<BentelerPlan> listMake = new ArrayList<>();
|
|
|
+
|
|
|
+ for(BentelerPlan plan:list) {
|
|
|
+ if(cacheMap.get(plan.getOriginalId())==null) {
|
|
|
+ cacheMap.put(plan.getOriginalId(), plan);
|
|
|
+ //旧计划都更新已过期
|
|
|
+ this.lambdaUpdate().eq(BentelerPlan::getOriginalId,plan.getOriginalId())
|
|
|
+ .in(BentelerPlan::getStatus, PlanStatus.APPROVAL_FORMAL,PlanStatus.APPROVAL_PASS)
|
|
|
+ .lt(BentelerPlan::getId,plan.getId())
|
|
|
+ .set(BentelerPlan::getStatus, PlanStatus.HISTORY).update();
|
|
|
+ //当前计划更新生效
|
|
|
+ this.lambdaUpdate().eq(BentelerPlan::getId,plan.getId()).set(BentelerPlan::getStatus, PlanStatus.APPROVAL_FORMAL).update();
|
|
|
+ listMake.add(plan);
|
|
|
+ }else {
|
|
|
+ //用直接生效的抛弃
|
|
|
+ log.warn("有更新的计划生效:{}",plan);
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //立刻生成任务
|
|
|
+ this.makeFirstTask(now);
|
|
|
+ this.makeOnsiteTask(now);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void makeTask(BentelerPlan plan) {
|
|
|
+ if(plan.getPlanType()==1) {
|
|
|
+
|
|
|
+ }else if(plan.getPlanType()==2) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ 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 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);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return num;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|