package com.zy.asrs.service.impl; 
 | 
  
 | 
import com.baomidou.mybatisplus.mapper.EntityWrapper; 
 | 
import com.baomidou.mybatisplus.service.impl.ServiceImpl; 
 | 
import com.core.common.Cools; 
 | 
import com.core.exception.CoolException; 
 | 
import com.zy.asrs.entity.BasCrnp; 
 | 
import com.zy.asrs.entity.BasDevp; 
 | 
import com.zy.asrs.entity.WrkMast; 
 | 
import com.zy.asrs.mapper.BasCrnpMapper; 
 | 
import com.zy.asrs.service.BasCrnpService; 
 | 
import com.zy.asrs.service.BasDevpService; 
 | 
import com.zy.asrs.service.WrkMastService; 
 | 
import lombok.extern.slf4j.Slf4j; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Service; 
 | 
  
 | 
@Slf4j 
 | 
@Service("basCrnpService") 
 | 
public class BasCrnpServiceImpl extends ServiceImpl<BasCrnpMapper, BasCrnp> implements BasCrnpService { 
 | 
  
 | 
    @Autowired 
 | 
    private WrkMastService wrkMastService; 
 | 
    @Autowired 
 | 
    private BasDevpService basDevpService; 
 | 
  
 | 
    @Override 
 | 
    public BasCrnp checkSiteStatus(Integer crnId) { 
 | 
        BasCrnp crnp = this.selectById(crnId); 
 | 
        if (Cools.isEmpty(crnp)) { 
 | 
            throw new CoolException(crnId + "号堆垛机不存在"); 
 | 
        } 
 | 
        if ("N".equals(crnp.getInEnable())) { 
 | 
            throw new CoolException(crnId + "堆垛机不可入"); 
 | 
        } 
 | 
        if ("N".equals(crnp.getOutEnable())) { 
 | 
            throw new CoolException(crnId + "堆垛机不可出"); 
 | 
        } 
 | 
        return crnp; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public boolean checkSiteError(Integer crnNo, boolean pakin) { 
 | 
        BasCrnp crnp = this.selectById(crnNo); 
 | 
        if (Cools.isEmpty(crnp)) { 
 | 
            log.error("{}号堆垛机不存在", crnNo); 
 | 
            return false; 
 | 
        } 
 | 
        if (crnp.getCrnErr() != null && crnp.getCrnSts() != 3){ 
 | 
            log.error("{}号堆垛机非自动连线状态,无法作业!", crnNo); 
 | 
            return false; 
 | 
        } 
 | 
        if (crnp.getCrnErr() != null) { 
 | 
            if (crnp.getCrnErr() != 0) { 
 | 
                log.error("{}号堆垛机异常,异常码{}", crnNo, crnp.getCrnErr()); 
 | 
                return false; 
 | 
            } 
 | 
        } 
 | 
  
 | 
        if (pakin) { 
 | 
//            //TODO控制入库暂存数,防止主干道堵塞,2022-5-24 ADD 
 | 
//            int staNo = 0; 
 | 
//            switch (crnNo){ 
 | 
//                case 1: 
 | 
//                    staNo = 123; 
 | 
//                    break; 
 | 
//                case 2: 
 | 
//                    staNo = 121; 
 | 
//                    break; 
 | 
//                case 3: 
 | 
//                    staNo = 119; 
 | 
//                    break; 
 | 
//                case 4: 
 | 
//                    staNo = 117; 
 | 
//                    break; 
 | 
//                case 5: 
 | 
//                    staNo = 115; 
 | 
//                    break; 
 | 
//                case 6: 
 | 
//                    staNo = 113; 
 | 
//                    break; 
 | 
//                case 7: 
 | 
//                    staNo = 111; 
 | 
//                    break; 
 | 
//                case 8: 
 | 
//                    staNo = 109; 
 | 
//                    break; 
 | 
//                case 9: 
 | 
//                    staNo = 106; 
 | 
//                    break; 
 | 
//                case 10: 
 | 
//                    staNo = 105; 
 | 
//                    break; 
 | 
//                case 11: 
 | 
//                    staNo = 103; 
 | 
//                    break; 
 | 
//                case 12: 
 | 
//                    staNo = 101; 
 | 
//                    break; 
 | 
//            } 
 | 
//            int maxCount = 2; 
 | 
//            BasDevp devp = basDevpService.selectById(staNo); 
 | 
//            if(!Cools.isEmpty(devp)){ 
 | 
//                maxCount = devp.getInQty(); 
 | 
//            } 
 | 
// 
 | 
//            int storeCount = wrkMastService.getStoreCount(crnNo); 
 | 
// 
 | 
//            if(storeCount >= maxCount){ 
 | 
//                log.error("{}号堆垛机暂存数已满!", crnNo); 
 | 
//                return false; 
 | 
//            } 
 | 
  
 | 
            if ("N".equals(crnp.getInEnable())) { 
 | 
                log.error("{}号堆垛机不可入", crnNo); 
 | 
                return false; 
 | 
            } 
 | 
        } else { 
 | 
            if ("N".equals(crnp.getOutEnable())) { 
 | 
                log.error("{}号堆垛机不可出", crnNo); 
 | 
                return false; 
 | 
            } 
 | 
        } 
 | 
  
 | 
        return true; 
 | 
    } 
 | 
  
 | 
//    //杰克 
 | 
//    @Override 
 | 
//    public boolean checkSiteError2(Integer crnNo, boolean pakin, Integer sourceStaNo) { 
 | 
//        BasCrnp crnp = this.selectById(crnNo); 
 | 
//        if (Cools.isEmpty(crnp)) { 
 | 
//            log.error("{}号堆垛机不存在", crnNo); 
 | 
//            return false; 
 | 
//        } 
 | 
//        if (crnp.getCrnErr() != null && crnp.getCrnSts() != 3){ 
 | 
//            log.error("{}号堆垛机非自动连线状态,无法作业!", crnNo); 
 | 
//            return false; 
 | 
//        } 
 | 
//        if (crnp.getCrnErr() != null) { 
 | 
//            if (crnp.getCrnErr() != 0) { 
 | 
//                log.error("{}号堆垛机异常,异常码{}", crnNo, crnp.getCrnErr()); 
 | 
//                return false; 
 | 
//            } 
 | 
//        } 
 | 
// 
 | 
//        if (pakin) { 
 | 
//            //TODO控制入库暂存数,防止主干道堵塞,2022-5-24 ADD 
 | 
//            int staNo = 0; 
 | 
//            String crnNos = ""; 
 | 
//            switch (crnNo){ 
 | 
//                case 1: 
 | 
//                    staNo = 123; 
 | 
//                    crnNos = "1,2,3,4"; 
 | 
//                    break; 
 | 
//                case 2: 
 | 
//                    staNo = 121; 
 | 
//                    crnNos = "1,2,3,4"; 
 | 
//                    break; 
 | 
//                case 3: 
 | 
//                    staNo = 119; 
 | 
//                    crnNos = "1,2,3,4"; 
 | 
//                    break; 
 | 
//                case 4: 
 | 
//                    staNo = 117; 
 | 
//                    crnNos = "1,2,3,4"; 
 | 
//                    break; 
 | 
//                case 5: 
 | 
//                    staNo = 115; 
 | 
//                    crnNos = "5,6,7,8"; 
 | 
//                    break; 
 | 
//                case 6: 
 | 
//                    staNo = 113; 
 | 
//                    crnNos = "5,6,7,8"; 
 | 
//                    break; 
 | 
//                case 7: 
 | 
//                    staNo = 111; 
 | 
//                    crnNos = "5,6,7,8"; 
 | 
//                    break; 
 | 
//                case 8: 
 | 
//                    staNo = 109; 
 | 
//                    crnNos = "5,6,7,8"; 
 | 
//                    break; 
 | 
//                case 9: 
 | 
//                    staNo = 106; 
 | 
//                    crnNos = "9,10,11,12"; 
 | 
//                    break; 
 | 
//                case 10: 
 | 
//                    staNo = 105; 
 | 
//                    crnNos = "9,10,11,12"; 
 | 
//                    break; 
 | 
//                case 11: 
 | 
//                    staNo = 103; 
 | 
//                    crnNos = "9,10,11,12"; 
 | 
//                    break; 
 | 
//                case 12: 
 | 
//                    staNo = 101; 
 | 
//                    crnNos = "9,10,11,12"; 
 | 
//                    break; 
 | 
//            } 
 | 
//            int maxCount = 2; 
 | 
//            int storeCount = wrkMastService.getStoreCount(crnNo); 
 | 
// 
 | 
//            //分北中南三个区判断,每4台堆垛机1个区。除1号有3个暂存以外,只要有出库任务入库暂存数就只能为1个 
 | 
//            //没有出库任务时,暂存数在devp表in_qty字段配置 
 | 
////            int pakOutCunt = wrkMastService.getPakOutCount(crnNos); 
 | 
////            if(pakOutCunt > 0){ 
 | 
////                maxCount = crnNo!= 1 ? 1 : 3;//1号3个入库暂存 
 | 
////            } else { 
 | 
//            BasDevp devp = basDevpService.selectById(staNo); 
 | 
//            if(!Cools.isEmpty(devp)){ 
 | 
//                maxCount = devp.getInQty(); 
 | 
//            } 
 | 
////            } 
 | 
// 
 | 
//            if(storeCount >= maxCount){ 
 | 
//                log.error("{}号堆垛机暂存数已满![storeCount:{},maxCount:{}]", crnNo, storeCount, maxCount); 
 | 
//                return false; 
 | 
//            } 
 | 
// 
 | 
//            if ("N".equals(crnp.getInEnable())) { 
 | 
//                log.error("{}号堆垛机不可入", crnNo); 
 | 
//                return false; 
 | 
//            } 
 | 
// 
 | 
//            //1--8号堆垛机,二楼入库时判断是否有对应出库任务,如果有则堆垛机不可用 
 | 
//            if (sourceStaNo > 299 && crnNo < 9){ 
 | 
//                WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>() 
 | 
//                        .eq("crn_no",crnNo).last(" and source_sta_no > 300 and ( wrk_sts in (11,12) or (wrk_sts=14 and wrk_no in (select wrk_no from asr_bas_devp)))")); 
 | 
//                if(!Cools.isEmpty(wrkMast)){ 
 | 
//                    log.error("{}号堆垛机存在出库任务,任务号{}", crnNo, wrkMast.getWrkNo()); 
 | 
//                    return false; 
 | 
//                } 
 | 
//            } 
 | 
//        } else { 
 | 
//            if ("N".equals(crnp.getOutEnable())) { 
 | 
//                log.error("{}号堆垛机不可出", crnNo); 
 | 
//                return false; 
 | 
//            } 
 | 
//        } 
 | 
// 
 | 
//        return true; 
 | 
//    } 
 | 
} 
 |