package com.zy.asrs.task; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.service.WrkMastService; import com.zy.asrs.task.core.ReturnT; import com.zy.asrs.task.handler.ReportToDismantleTheStackHandler; import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.SlaveType; import com.zy.core.model.protocol.StaProtocol; import com.zy.core.thread.SiemensDevpThread; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.*; /** * Created by Monkey D. Luffy on 2023.07.25 * 徐工汉云..............以下.............上饶江铜.............拆垛信息上传 */ @Slf4j @Component public class ReportToDismantleTheStackScheduler { @Autowired private ReportToDismantleTheStackHandler reportToDismantleTheStackHandler; @Autowired private WrkMastService wrkMastService; @Scheduled(cron = "0/1 * * * * ? ") private void execute(){//拆垛信息上传 int[] staNos =new int[]{118,120,121}; List integersStaArr = new ArrayList<>(); List stalistArr = new ArrayList<>(); for(Integer staNo : staNos){ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); StaProtocol staProtocol = devpThread.getStation().get(staNo); if (staProtocol == null || !staProtocol.isAutoing() || staProtocol.getWorkNo()==0) { continue; } WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper().eq("wrk_no", staProtocol.getWorkNo())); if (Cools.isEmpty(wrkMast) || Cools.isEmpty(wrkMast.getSheetNo()) || !wrkMast.getSheetNo().equals("0")){ continue; } Date modiTime = wrkMast.getModiTime(); stalistArr.add(new Long[]{staNo.longValue(), modiTime.getTime()}); } if (!stalistArr.isEmpty() && stalistArr.size()>1){ // Collections.sort(stalistArr, (a, b) -> a[1] - b[1]); // 降序排列 Collections.sort(stalistArr, Comparator.comparingLong(arr -> arr[1])); for (Long[] staNowArr : stalistArr){ integersStaArr.add(staNowArr[0].intValue()); } } for (int staNo : integersStaArr){ try{ ReturnT result = reportToDismantleTheStackHandler.start2(staNo); if (result.getCode()==200){ break; } }catch (Exception e){ log.error("站点"+staNo+"拆垛信息上传处理失败,异常信息:"+e); } } } }