自动化立体仓库 - WMS系统
#
zjj
2024-10-23 fbf8ca17b45027d0f75e12a055cf7e2e588a0f4c
src/main/java/com/zy/asrs/task/WorkMastScheduler.java
@@ -1,21 +1,158 @@
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.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
@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(){
        workMastHandler.start();
        List<WrkMast> wrkMasts = wrkMastService.selectToBeCompleteData();
        if (wrkMasts.isEmpty()) {
            return;
        }
        for (WrkMast wrkMast : wrkMasts) {
            ReturnT<String> 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<WrkMast> wrkMasts1 = wrkMastService.selectList(new EntityWrapper<WrkMast>()
//                .in("io_type", 101,110,103,104,107)
//                .eq("wrk_sts", 105).eq("crn_no",7));
//        if (!Cools.isEmpty(wrkMasts1)){
//            return;
//        }
//        List<WrkMast> wrkMasts = wrkMastService.selectToShuttleTask();
//        if (wrkMasts.isEmpty()) {
//            return;
//        }
//        try {
//            for (WrkMast wrkMast : wrkMasts) {
//                LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().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<WrkMast> wrkMasts1 = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                .in("io_type", 1,10,53,54,57).eq("crn_no",7));
        if (!Cools.isEmpty(wrkMasts1)){
            return;
        }
        List<WrkMast> wrkMasts = wrkMastService.selectToShuttleOutTask();
        if (wrkMasts.isEmpty()) {
            return;
        }
        try {
            for (WrkMast wrkMast : wrkMasts) {
                LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().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任务失败");
        }
    }
}