自动化立体仓库 - WMS系统
#
yxFwq
2025-04-01 74fd6eb7fb0322078f7946f51073f20e90231df1
src/main/java/com/zy/asrs/task/WrkMastCrnScheduler.java
@@ -7,6 +7,7 @@
import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.task.handler.WrkMastCrnHandler;
import com.zy.asrs.task.handler.WrkMastStaInItHandler;
import com.zy.asrs.utils.Utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -14,16 +15,18 @@
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * Created by Monkey D. Luffy on 2023.07.25
 * 徐工汉云..............以下.............上饶江铜.............自动补空板
 * 亳州煜星..............以下.............亳州煜星.............左右双工位堆垛机执行任务生成
 */
@Component
public class WrkMastCrnScheduler {
    private static final Logger log = LoggerFactory.getLogger(WorkMastScheduler.class);
//    private static  Integer signSmallTurn = 0;
    @Autowired
    private WrkMastCrnHandler wrkMastCrnHandler;
@@ -42,45 +45,153 @@
    @Autowired
    private WrkMastCrnService wrkMastCrnService;
    public static final List<Integer> STA_WORK_RU = new ArrayList<Integer>() {{
    public static final List<Integer> CRN_WORK_RU = new ArrayList<Integer>() {{
        add(153);add(145);
    }};
    public static final List<Integer> CRN_WORK_CU = new ArrayList<Integer>() {{
        add(100);add(148);
    }};
    public static final List<Integer> CRN_WORK_CU_SMA = new ArrayList<Integer>() {{
        add(126);add(131);
    }};
    @Scheduled(cron = "0/3 * * * * ? ")
    private void execute(){
        for(Integer staNo : STA_WORK_RU){
            BasDevp basDevp = basDevpService.selectById(staNo);
            if (basDevp.getWrkNo()!=0 && basDevp.getLoading().equals("Y") && basDevp.getAutoing().equals("Y") && basDevp.getInEnable().equals("Y")){
                WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", basDevp.getWrkNo()));
                if(Cools.isEmpty(wrkMast)){
                    continue;
                }
                if (wrkMast.getWrkSts()!=2){
                    continue;
                }
                WrkMastCrn wrkMastCrn = wrkMastCrnService.selectOne(new EntityWrapper<WrkMastCrn>().eq("wrk_no", wrkMast.getWrkNo()));
                if (Cools.isEmpty(wrkMastCrn)){
                    BasDevp basDevpOther = basDevpService.selectById(staNoOther(staNo));
                    if (basDevpOther.getWrkNo()!=0 && basDevpOther.getLoading().equals("Y") && basDevpOther.getAutoing().equals("Y") && basDevpOther.getInEnable().equals("Y")){
                        WrkMast wrkMastOther = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", basDevpOther.getWrkNo()));
                        if(Cools.isEmpty(wrkMastOther)){
        try{
            for(Integer staNo : CRN_WORK_RU){
                List<WrkMastCrn> wrkMastCrnList = wrkMastCrnService.selectList(new EntityWrapper<WrkMastCrn>().eq("sta_no", staNo));
                if (Cools.isEmpty(wrkMastCrnList)){
                    BasDevp basDevp = basDevpService.selectById(staNo);
                    if (basDevp.getWrkNo()!=0 && basDevp.getLoading().equals("Y") && basDevp.getAutoing().equals("Y") && basDevp.getInEnable().equals("Y")){
                        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", basDevp.getWrkNo()));
                        if(Cools.isEmpty(wrkMast)){
                            continue;
                        }
                        if (wrkMastOther.getWrkSts()!=2){
                        if (wrkMast.getWrkSts()!=2){
                            continue;
                        }
                        if (!Cools.isEmpty(wrkMast)){
                            ReturnT<String> result = wrkMastCrnHandler.start(wrkMast,wrkMastOther);
                            if (result.getCode()==200){
                                continue;
                            }else {
                                System.out.println(staNo+"失败!");
                        WrkMastCrn wrkMastCrn = wrkMastCrnService.selectOne(new EntityWrapper<WrkMastCrn>().eq("wrk_no", wrkMast.getWrkNo()));
                        if (Cools.isEmpty(wrkMastCrn)){
                            BasDevp basDevpOther = basDevpService.selectById(staNoOther(staNo));
                            if (basDevpOther.getWrkNo()!=0 && basDevpOther.getLoading().equals("Y") && basDevpOther.getAutoing().equals("Y") && basDevpOther.getInEnable().equals("Y")){
                                WrkMast wrkMastOther = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", basDevpOther.getWrkNo()));
                                if(Cools.isEmpty(wrkMastOther)){
                                    continue;
                                }
                                if (wrkMastOther.getWrkSts()!=2){
                                    continue;
                                }
                                if (!Cools.isEmpty(wrkMast)){
                                    ReturnT<String> result = wrkMastCrnHandler.start(wrkMast,wrkMastOther);
                                    if (result.getCode()!=200){
                                        System.out.println(staNo+"失败!");
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }catch (Exception e){
            log.error("左右双工位堆垛机执行任务生成====》入库任务生成异常:"+e.getMessage());
        }
    }
    @Scheduled(cron = "0/3 * * * * ? ")
    private void execute2(){
        for(Integer staNo : CRN_WORK_CU) {
//            try{
//                for(Integer staNo1 : CRN_WORK_CU_SMA) {
//                    RgvOneSign trunSma = rgvOneSignService.selectOne(new EntityWrapper<RgvOneSign>().eq("rgv_one_type","TrunSma"+staNo1));
//                    trunSma.setRgvOneSign(0);
//                    rgvOneSignService.updateById(trunSma);
//                }
//            } catch (Exception e){
//
//            }
            List<WrkMastCrn> wrkMastCrnList = wrkMastCrnService.selectList(new EntityWrapper<WrkMastCrn>().eq("source_sta_no",staNo));
            if (Cools.isEmpty(wrkMastCrnList)){
                List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                        .eq("source_sta_no", staNo).eq("wrk_sts", 11L)
                        .orderBy("io_pri",false));
                for (WrkMast wrkMast:wrkMasts){
//                    if (wrkMast.getStaNoSign().equals(signSmallTurn)){
//                        continue;
//                    }
//                    if (wrkMast.booleanStaNoSignOther()){
//                        continue;
//                    }
                    boolean sign = true;
                    if ((wrkMast.getIoType()==101 || wrkMast.getIoType() == 110) && wrkMast.booleanStaNoSign() && wrkMast.getIoPri()<99D){
                        Date now = new Date();
                        long differenceInSeconds = now.getTime() - wrkMast.getModiTime().getTime();
                        if (differenceInSeconds<=2000){
                            continue;
                        }
//                        RgvOneSign rgvOneSign = rgvOneSignService.selectOne(new EntityWrapper<RgvOneSign>().eq("rgv_one_type","LineUp"+wrkMast.getStaNo()));
//                        if (Cools.isEmpty(rgvOneSign)){
//                            continue;
//                        }
//                        RgvOneSign trunSma = rgvOneSignService.selectOne(new EntityWrapper<RgvOneSign>().eq("rgv_one_type","TrunSma"+wrkMast.getStaNo()));
//                        if (Cools.isEmpty(trunSma)){
//                            continue;
//                        }
//                        int wrkCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("sta_no", wrkMast.getStaNo()).eq("wrk_sts",12L));
//                        int wrkCountCrn = wrkMastCrnService.selectCount(new EntityWrapper<WrkMastCrn>().eq("sta_no", wrkMast.getStaNo()));
//                        if (wrkCountCrn*2+wrkCount+rgvOneSign.getRgvOneSign()+trunSma.getRgvOneSign()>1){
//                            continue;
//                        }
//                        int wrkCountGt = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("sta_no", wrkMast.getStaNo()).gt("wrk_sts",11L));
//                        if (wrkCountGt > 1){
//                            continue;
//                        }
//                        sign = false;
//                        BasDevp basDevp = basDevpService.selectById(wrkMast.getStaNoBying());
//                        if (basDevp.getLoading().equals("Y")
//                                || !basDevp.getAutoing().equals("Y")
//                                || (!Cools.isEmpty(basDevp.getWrkNo()) && basDevp.getWrkNo()!=0) ){
//                            continue;
//                        }
//                        int loadIngCount = basDevpService.selectCount(new EntityWrapper<BasDevp>().ge("dev_no", 103).le("dev_no", 121).eq("loading", "Y"));
//                        if (loadIngCount>8){
//                            continue;
//                        }
//                        RgvOneSign smallTurn = rgvOneSignService.selectOne(new EntityWrapper<RgvOneSign>().eq("rgv_one_type","smallTurn"));
//                        if (Cools.isEmpty(smallTurn)){
//                            continue;
//                        }
//                        if (smallTurn.getRgvOneSign()>15){
//                            continue;
//                        }
                    }
                    try{
                        int row = Utils.getRow(wrkMast.getSourceLocNo());
                        if (row == wrkMast.getCrnNo()*4 || row == wrkMast.getCrnNo()*4-3){
                            WrkMastCrn wrkMastCrn = wrkMastCrnService.selectOne(new EntityWrapper<WrkMastCrn>().eq("wrk_no", wrkMast.getWrkNo()));
                            if (Cools.isEmpty(wrkMastCrn)){
                                ReturnT<String> result = wrkMastCrnHandler.start(wrkMast,sign);
                                if (result.isSuccess()) {
//                                    signSmallTurn++;
//                                    if (signSmallTurn > 2){
//                                        signSmallTurn = 0;
//                                    }
                                    break;
                                }
                            }
                        }
                    }catch (Exception e){
                        log.error("左右双工位堆垛机执行任务生成====》出库任务生成异常:"+e.getMessage());
                    }
                }
//                if (!wrkMasts.isEmpty()){
//                    signSmallTurn++;
//                    if (signSmallTurn > 2){
//                        signSmallTurn = 0;
//                    }
//                }
            }
        }
    }