Browse Source

Merge branch 'baihe' into dev

baihe 3 years ago
parent
commit
215970af27

+ 10 - 9
application-facade/src/main/java/com/factory/web/entity/pm/res/AbnormalItemRes.java

@@ -1,6 +1,11 @@
 package com.factory.web.entity.pm.res;
 
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
 import com.fasterxml.jackson.annotation.JsonInclude;
+
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
@@ -8,9 +13,6 @@ import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
-import java.io.Serializable;
-import java.util.List;
-
 /**
  * 防错计划
  *
@@ -18,11 +20,7 @@ import java.util.List;
  * @date 2021-07-09 12:00:00
  */
 @Data
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-@JsonInclude()
-@ApiModel("")
+@ApiModel("防错计划点检项模型")
 public class AbnormalItemRes implements Serializable {
 
     @ApiModelProperty(value = "巡检项目id")
@@ -33,6 +31,9 @@ public class AbnormalItemRes implements Serializable {
 
     @ApiModelProperty(value = "防错检查结果:0通过 1巡检不通过 2没有巡检")
     private Integer result;
+    
+    @ApiModelProperty(value = "防错检查结果备份:0通过 1巡检不通过 2没有巡检")
+    private Integer resultBak;
 
     @ApiModelProperty(value = "防错异常信息")
     private String abnormal;
@@ -41,7 +42,7 @@ public class AbnormalItemRes implements Serializable {
     private String itemStandard;
 
     @ApiModelProperty(value = "点检时间")
-    private String itemResultCreateTime;
+    private LocalDateTime itemResultCreateTime;
 
     @ApiModelProperty(value = "点检人id")
     private Long itemResultUserId;

+ 9 - 2
application-facade/src/main/java/com/factory/wx/service/impl/AbnormalStatisticsServiceImpl.java

@@ -260,8 +260,15 @@ public class AbnormalStatisticsServiceImpl implements AbnormalStatisticsService
                 SearchAbnormalReq searchReq = new SearchAbnormalReq();
                 searchReq.setWorkshopId(abnormalWorkshopList.get(i).getWorkshopId());
                 searchReq.setTaskId(pmInfo.getTaskId());
-                List<AbnormalItemRes> abnormalItemList = abnormalStatisticsMapper.getPmAbnormalItemResultList(searchReq).stream().filter(abnormalItemRes -> abnormalItemRes.getResult() > 0).collect(Collectors.toList());
-                for (AbnormalItemRes abnormalItemRes : abnormalItemList) {
+                //放行或者重检通过
+				List<AbnormalItemRes> abnormalItemList = abnormalStatisticsMapper.getPmAbnormalItemResultList(searchReq)
+						.stream().filter(abnormalItemRes -> abnormalItemRes.getResult() > 0
+								|| abnormalItemRes.getResultBak() > 0)
+						.collect(Collectors.toList());
+				  for (AbnormalItemRes abnormalItemRes : abnormalItemList) {
+					  if(abnormalItemRes.getResult()==0) {
+						  abnormalItemRes.setResult(abnormalItemRes.getResultBak());
+					  }
                     Long userId = abnormalItemRes.getItemResultUserId();
                     if (null != userId) {
                         String userName = wxPlanService.getUserNameById(abnormalItemRes.getItemResultUserId());

+ 13 - 10
application-facade/src/main/java/com/factory/wx/service/impl/PlanApprovalServiceImpl.java

@@ -1,5 +1,6 @@
 package com.factory.wx.service.impl;
 
+import java.time.LocalDate;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -265,17 +266,19 @@ public class PlanApprovalServiceImpl implements PlanApprovalService {
                 }else {//TODO 预计到生效时间暂停旧计划开启新计划
                 	BentelerPlan plan = planService.getById(planApprovalReq.getPlanId());
                 	BentelerPlan planUpdate = BentelerPlan.builder()
-        					.id(planApprovalReq.getPlanId())
-        					.status(PlanStatus.APPROVAL_FORMAL.value)
-        					.build();
+                			.id(planApprovalReq.getPlanId())
+                			.status(PlanStatus.APPROVAL_PASS.value)
+                			.build();
+                	if(!LocalDate.now().isBefore(plan.getEffectiveDate())) {//有效期已经过了当前日期了,那么立刻生效
+                		if(plan.getPrevId()!=null) {
+                			planService.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();
+                		}
+                		planUpdate.setStatus(PlanStatus.APPROVAL_FORMAL.value);
+                	}
         			planService.updateById(planUpdate);
-        			if(plan.getPrevId()!=null) {
-        				 planUpdate = BentelerPlan.builder()
-             					.id(plan.getPrevId())
-             					.status(PlanStatus.HISTORY.value)
-             					.build();
-             			planService.updateById(planUpdate);
-        			}
                 }
             }
             //审批不通过

+ 4 - 2
application-facade/src/main/resources/mapper/AbnormalStatisticsMapper.xml

@@ -207,9 +207,10 @@
 
     <!-- 取得防错工作站下的巡检项目和检查结果 -->
     <select id="getPmAbnormalItemResultList" resultType="com.factory.web.entity.pm.res.AbnormalItemRes">
-        SELECT oir.onsite_item_id  AS item_id,
+        SELECT oir.onsite_item_id  item_id,
                oi.item_content,
-               oir.result,
+               oir.`result`,
+               oir.result_bak,
                oir.abnormal,
                oir.created_time    AS item_result_create_time,
                oir.created_user_id AS item_result_user_id
@@ -246,5 +247,6 @@
              first_article_item_result fair
         WHERE fai.workshop_id = #{req.workshopId}
           AND fai.id = fair.first_article_item_id
+          AND fair.first_articl_task_id = #{req.taskId}
     </select>
 </mapper>

+ 14 - 1
application-task/src/main/java/com/factory/common/CommonConfig.java

@@ -32,11 +32,24 @@ public class CommonConfig {
 		// 设置线程活跃时间(秒)
 		executor.setKeepAliveSeconds(60);
 		// 设置默认线程名称
-		executor.setThreadNamePrefix("doc-");
+		executor.setThreadNamePrefix("Task-");
 		// 设置拒绝策略
 		executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
 		// 等待所有任务结束后再关闭线程池
 		executor.setWaitForTasksToCompleteOnShutdown(true);
 		return executor;
 	}
+	/**
+	 * 
+		@Configuration
+		public class ScheduleConfig implements SchedulingConfigurer {
+		    @Override
+		    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
+		        //当然了,这里设置的线程池是corePoolSize也是很关键了,自己根据业务需求设定
+		        taskRegistrar.setScheduler(Executors.newScheduledThreadPool(5));
+		        
+		    
+		    }
+		}
+	*/
 }

+ 1 - 1
application-task/src/main/java/com/factory/init/FirstTaskJob.java

@@ -72,7 +72,7 @@ public class FirstTaskJob implements Job {
             FirstTaskService firstTaskService = (FirstTaskService) paramMap.get("firstTaskService");
             LocalDate now = LocalDate.now();
             int num = 0;
-            List<FirstCalendar> cals = firstTaskService.getCalenderFirstForType(0,now);
+            List<FirstCalendar> cals = null;
             FirstTask task = new FirstTask();
             task.setTask_time(now);
             for(int typeFlag=0;typeFlag<=1;typeFlag++) {//2中断在pad手动建立

+ 35 - 0
application-task/src/main/java/com/factory/init/PlanScheduleService.java

@@ -0,0 +1,35 @@
+package com.factory.init;
+
+import java.time.LocalDate;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import com.factory.service.PlanService;
+
+/**
+ * 计划生效定时器
+ * @author edz
+ *
+ */
+@Component
+public class PlanScheduleService {
+
+	@Autowired
+	private PlanService planService;
+	
+	@Scheduled(cron="30 0/1 * * * ?")
+	public void effectPlan() {
+		planService.effectPlan(LocalDate.now());
+	}
+	@Scheduled(cron="${task.first.cron:'0 */5 * * * ?'}")
+	public void makeFirstTask() {
+		planService.makeFirstTask(LocalDate.now());
+	}
+	@Scheduled(cron="${task.onsite.cron:'0 */5 * * * ?'}")
+	public void makeOnsiteTask() {
+		planService.makeOnsiteTask(LocalDate.now());
+	}
+	
+}

+ 2 - 2
application-task/src/main/java/com/factory/init/TimerTaskInit.java

@@ -62,9 +62,9 @@ public class TimerTaskInit {
         param.put("executorService", executorService);
         Scheduler sche = schedulerFactoryBean.getScheduler();
         addAutoApproveErrorTask(param, sche);
-        addOnsiteTask(param, sche);
+//        addOnsiteTask(param, sche);//放在schudule定时器中执行
         addOnsiteRemindWork(param, sche);
-        addFirstTask(param, sche);
+//        addFirstTask(param, sche);//放在schudule定时器中执行
         addFirstRemindWork(param, sche);
     }
 

+ 1 - 0
application-task/src/main/java/com/factory/init/WebSocketTestSchedule.java

@@ -13,6 +13,7 @@ public class WebSocketTestSchedule {
 	
 	@Scheduled(cron="0 0/1 * * * ?")
 	public void sendWebSocketMessage() {
+		log.info("{}",message);
 		//TODO 更新计划中的3->4,并将4修改5
 		/*List<String> pool = new ArrayList<String>(WsSessionManager.SESSION_POOL.keySet());
 		for (String key : pool) {

+ 11 - 0
application-task/src/main/java/com/factory/mapper/BentelerPlanMapper.java

@@ -0,0 +1,11 @@
+package com.factory.mapper;
+
+import org.apache.ibatis.annotations.Mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.factory.base.entity.po.benteler.BentelerPlan;
+
+@Mapper
+public interface BentelerPlanMapper extends BaseMapper<BentelerPlan>{
+
+}

+ 34 - 0
application-task/src/main/java/com/factory/service/PlanService.java

@@ -0,0 +1,34 @@
+package com.factory.service;
+
+import java.time.LocalDate;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.factory.base.entity.po.benteler.BentelerPlan;
+
+public interface PlanService extends IService<BentelerPlan>{
+
+	/**
+	 * 更新计划生效,将旧计划失效
+	 * @param now
+	 */
+	void effectPlan(LocalDate now);
+	
+	/**
+	 * 生成任务
+	 * @param now
+	 */
+	void makeTask(BentelerPlan plan);
+	
+	/**
+	 * 立刻生成首件任务
+	 * @param now
+	 * @return
+	 */
+	 int makeFirstTask(LocalDate now);
+	/**
+	 * 立刻生成防错任务
+	 * @param now
+	 * @return
+	 */
+	int makeOnsiteTask(LocalDate now);
+}

+ 124 - 0
application-task/src/main/java/com/factory/service/impl/PlanServiceImpl.java

@@ -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;
+	}
+	
+}