package com.zy.asrs.task; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.asrs.entity.LocMast; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.entity.param.ShuttleMoveTask; import com.zy.asrs.entity.param.ShuttleOutTask; import com.zy.asrs.entity.param.ShuttleTask; import com.zy.asrs.service.WrkMastService; import com.zy.asrs.service.impl.LocMastServiceImpl; import com.zy.asrs.task.core.ReturnT; import com.zy.asrs.task.handler.WorkMastHandler; import com.zy.common.utils.HttpHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.Date; import java.util.List; /** * Created by vincent on 2020/7/7 */ @Component public class WorkMastScheduler { private static final Logger log = LoggerFactory.getLogger(WorkMastScheduler.class); @Autowired private WrkMastService wrkMastService; @Autowired private WorkMastHandler workMastHandler; @Value("${shuttleWcs.url}") private String shuttleWcsUrl; @Autowired private LocMastServiceImpl locMastService; @Scheduled(cron = "0/3 * * * * ? ") private void execute(){ List wrkMasts = wrkMastService.selectToBeCompleteData(); if (wrkMasts.isEmpty()) { return; } for (WrkMast wrkMast : wrkMasts) { ReturnT returnT = workMastHandler.start(wrkMast); if (!returnT.isSuccess()) { wrkMast.setUpdMk("X"); wrkMast.setErrorMemo(returnT.getMsg()); wrkMast.setErrorTime(new Date()); if (!wrkMastService.updateById(wrkMast)) { log.error("工作档[workNo={}]标记待处理失败", wrkMast.getWrkNo()); } } } } // @Scheduled(cron = "0/3 * * * * ? ") //入库任务下发 // private void ShuttleInTaskSend(){ // List wrkMasts1 = wrkMastService.selectList(new EntityWrapper() // .in("io_type", 101,110,103,104,107) // .eq("wrk_sts", 105).eq("crn_no",7)); // if (!Cools.isEmpty(wrkMasts1)){ // return; // } // List wrkMasts = wrkMastService.selectToShuttleTask(); // if (wrkMasts.isEmpty()) { // return; // } // try { // for (WrkMast wrkMast : wrkMasts) { // LocMast locMast = locMastService.selectOne(new EntityWrapper().eq("loc_no", wrkMast.getLocNo())); // if (locMast == null) { // throw new CoolException("下发四向车wcs任务失败"); // } // String loc = (locMast.getRow1()-16)+"-"+locMast.getBay1()+"-"+locMast.getLev1(); // ShuttleTask param = new ShuttleTask(); // param.setTaskNo(wrkMast.getWrkNo().toString()); // param.setDestLoc(loc); // param.setOriginSite("31002"); // param.setBarcode(wrkMast.getBarcode()); // param.setPriority("11"); // String response = new HttpHandler.Builder() // .setUri(shuttleWcsUrl) // .setPath("/openapi/createInTask") // .setJson(JSON.toJSONString(param)) // .build() // .doPost(); // JSONObject jsonObject = JSON.parseObject(response); // Integer code = jsonObject.getInteger("code"); // if (code.equals(200)) { // wrkMast.setWrkSts(105L); // if (!wrkMastService.updateById(wrkMast)) { // log.error("工作档[workNo={}]标记待处理失败", wrkMast.getWrkNo()); // } // } // } // }catch (Exception e){ // throw new CoolException("下发四向车wcs任务失败"); // } // // } @Scheduled(cron = "0/3 * * * * ? ") //出库库任务下发 private void ShuttleOutTaskSend(){ List wrkMasts1 = wrkMastService.selectList(new EntityWrapper() .in("io_type", 1,10,53,54,57).eq("crn_no",7)); if (!Cools.isEmpty(wrkMasts1)){ return; } List wrkMasts = wrkMastService.selectToShuttleOutTask(); if (wrkMasts.isEmpty()) { return; } try { for (WrkMast wrkMast : wrkMasts) { LocMast locMast = locMastService.selectOne(new EntityWrapper().eq("loc_no", wrkMast.getSourceLocNo())); if (locMast == null) { throw new CoolException("下发四向车wcs任务失败"); } String loc = (locMast.getRow1()-16)+"-"+locMast.getBay1()+"-"+locMast.getLev1(); ShuttleOutTask param = new ShuttleOutTask(); param.setTaskNo(wrkMast.getWrkNo().toString()); param.setOriginLoc(loc); param.setOriginSite("31004"); param.setDestSite("31002"); param.setPriority("11"); String response = new HttpHandler.Builder() .setUri(shuttleWcsUrl) .setPath("/openapi/createOutTask") .setJson(JSON.toJSONString(param)) .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); Integer code = jsonObject.getInteger("code"); if (code.equals(200)) { wrkMast.setWrkSts(105L); if (!wrkMastService.updateById(wrkMast)) { log.error("工作档[workNo={}]标记待处理失败", wrkMast.getWrkNo()); } } } }catch (Exception e){ throw new CoolException("下发四向车wcs任务失败"); } } @Scheduled(cron = "0/3 * * * * ? ") //移库任务下发 private void ShuttleMoveTaskSend(){ List wrkMasts = wrkMastService.selectList(new EntityWrapper().eq("crn_no",7).eq("wrk_sts", 11).eq("io_type",11)); if (wrkMasts.isEmpty()) { return; } try { for (WrkMast wrkMast : wrkMasts) { LocMast destLoc = locMastService.selectOne(new EntityWrapper().eq("loc_no", wrkMast.getLocNo())); LocMast originLoc = locMastService.selectOne(new EntityWrapper().eq("loc_no", wrkMast.getSourceLocNo())); if (originLoc == null || destLoc == null) { throw new CoolException("下发四向车wcs任务失败"); } String originLoc1 = (originLoc.getRow1()-16)+"-"+originLoc.getBay1()+"-"+originLoc.getLev1(); String destLoc1 = (destLoc.getRow1()-16)+"-"+destLoc.getBay1()+"-"+destLoc.getLev1(); ShuttleMoveTask param = new ShuttleMoveTask(); param.setTaskNo(wrkMast.getWrkNo().toString()); param.setOriginLoc(originLoc1); param.setDestLoc(destLoc1); param.setRecord(true); param.setPriority("11"); String response = new HttpHandler.Builder() .setUri(shuttleWcsUrl) .setPath("/openapi/createLadenMoveTakeTask") .setJson(JSON.toJSONString(param)) .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); Integer code = jsonObject.getInteger("code"); if (code.equals(200)) { wrkMast.setWrkSts(105L); if (!wrkMastService.updateById(wrkMast)) { log.error("工作档[workNo={}]标记待处理失败", wrkMast.getWrkNo()); } } } }catch (Exception e){ throw new CoolException("下发四向车wcs任务失败"); } } }