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() - 4) + "-" + locMast.getBay1() + "-" + locMast.getLev1(); ShuttleTask param = new ShuttleTask(); param.setTaskNo(wrkMast.getWrkNo().toString()); param.setLocNo(loc); param.setSourceStaNo(wrkMast.getSourceStaNo()); param.setStaNo(wrkMast.getStaNo()); 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() - 4) + "-" + locMast.getBay1() + "-" + locMast.getLev1(); ShuttleOutTask param = new ShuttleOutTask(); param.setTaskNo(wrkMast.getWrkNo().toString()); param.setSourceLocNo(loc); param.setStaNo(wrkMast.getStaNo()); //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("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任务失败"); } } }