package com.zy.asrs.service.impl; 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.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 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() // .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; // } }