#
1
2025-05-13 7c315b53808a66a2f1faf90930ecffdc85ba455f
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -38,6 +38,7 @@
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
@@ -463,7 +464,7 @@
                    // 判断是否满足入库条件
                    if (staProtocol.isAutoing() && staProtocol.isLoading()
//                            && staProtocol.isInEnable()
                            && (workNo == 0 || (workNo>9000 && workNo<10000))
//                            && (workNo == 0 || (workNo>9000 && workNo<10000))
                            && staProtocol.isPakMkWalk()
                    ) {
                        if (inSta.isBarcodeSign()){
@@ -653,13 +654,17 @@
                continue;
            }
            CrnSlave crnSlave = new CrnSlave(crn);
            if (!crn.getId().equals(crnProtocol.getLaneNo())) {
                for (CrnSlave crnOther : slaveProperties.getCrn()) {
                    if (crnOther.getId().equals(crnProtocol.getLaneNo())) {
                        crn.updateCrnInStn(crnOther);
                        crnSlave.updateCrnInStn(crnOther);
                    }
                }
            }
            crn = crnSlave;
            // 库位移转
            this.locToLoc(crn, crnProtocol);
@@ -807,10 +812,13 @@
                    }
                    try {
                        HashMap<String, Object> headParam = new HashMap<>();
                        headParam.put("taskNo", taskWrk.getTaskNo());
                        headParam.put("status", taskWrk.getStatus());
                        headParam.put("ioType", taskWrk.getIoTypeWms());
                        headParam.put("barcode", taskWrk.getBarcode());
                        headParam.put("taskNo",taskWrk.getTaskNo());
                        headParam.put("taskStatus",taskWrk.getStatusWms());
                        headParam.put("ioType",taskWrk.getIoTypeWms());
                        headParam.put("barCode",taskWrk.getBarcode());
                        headParam.put("reportTime", LocalDateTime.now());
                        headParam.put("weight",taskWrk.getScWeight().doubleValue());
                        String response;
                        response = new HttpHandler.Builder()
                                // .setHeaders(headParam)
@@ -927,10 +935,13 @@
                            }
                            try {
                                HashMap<String, Object> headParam = new HashMap<>();
                                headParam.put("taskNo", taskWrk.getTaskNo());
                                headParam.put("status", taskWrk.getStatus());
                                headParam.put("ioType", taskWrk.getIoTypeWms());
                                headParam.put("barcode", taskWrk.getBarcode());
                                headParam.put("taskNo",taskWrk.getTaskNo());
                                headParam.put("taskStatus",taskWrk.getStatusWms());
                                headParam.put("ioType",taskWrk.getIoTypeWms());
                                headParam.put("barCode",taskWrk.getBarcode());
                                headParam.put("reportTime", LocalDateTime.now());
                                headParam.put("weight",taskWrk.getScWeight().doubleValue());
                                String response;
                                response = new HttpHandler.Builder()
                                        // .setHeaders(headParam)
@@ -1031,10 +1042,13 @@
                    }
                    try {
                        HashMap<String, Object> headParam = new HashMap<>();
                        headParam.put("taskNo", taskWrk.getTaskNo());
                        headParam.put("status", taskWrk.getStatus());
                        headParam.put("ioType", taskWrk.getIoTypeWms());
                        headParam.put("barcode", taskWrk.getBarcode());
                        headParam.put("taskNo",taskWrk.getTaskNo());
                        headParam.put("taskStatus",taskWrk.getStatusWms());
                        headParam.put("ioType",taskWrk.getIoTypeWms());
                        headParam.put("barCode",taskWrk.getBarcode());
                        headParam.put("reportTime", LocalDateTime.now());
                        headParam.put("weight",taskWrk.getScWeight().doubleValue());
                        String response;
                        response = new HttpHandler.Builder()
                                // .setHeaders(headParam)
@@ -1145,10 +1159,13 @@
                    try {
                        HashMap<String, Object> headParam = new HashMap<>();
                        headParam.put("taskNo", taskWrk.getTaskNo());
                        headParam.put("status", taskWrk.getStatus());
                        headParam.put("ioType", taskWrk.getIoTypeWms());
                        headParam.put("barcode", taskWrk.getBarcode());
                        headParam.put("taskNo",taskWrk.getTaskNo());
                        headParam.put("taskStatus",taskWrk.getStatusWms());
                        headParam.put("ioType",taskWrk.getIoTypeWms());
                        headParam.put("barCode",taskWrk.getBarcode());
                        headParam.put("reportTime", LocalDateTime.now());
                        headParam.put("weight",taskWrk.getScWeight().doubleValue());
                        String response;
                        log.error("wcs完结任务上报wms==》", headParam);
@@ -1372,6 +1389,49 @@
        }
        return true;
    }
    public boolean rgvOtherIDLEOther(RgvSlave slave) {
        RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getOtherId());
        RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getOtherId());
        if (rgvProtocol == null || rgvTaskProtocol == null) {
            return false;
        }
        if (!rgvProtocol.getModeType().equals(RgvModeType.AUTO) || rgvProtocol.getRgvPos().equals(0L) || rgvTaskProtocol.getAvoid() == -1
                || (!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE) && !rgvProtocol.getStatusType().equals(RgvStatusType.ROAM))) {
            return false;
        }
        if (rgvProtocol.getLoaded()!=0) {
            return false;
        }
        return true;
    }
    public boolean rgvOtherIDLE(RgvSlave slave,Integer staNo) {
        RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
        RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
        if (rgvProtocol == null || rgvTaskProtocol == null) {
            return false;
        }
        if (!rgvProtocol.getModeType().equals(RgvModeType.AUTO) || rgvProtocol.getRgvPos().equals(0L) || rgvTaskProtocol.getAvoid() == -1
                || (!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE) && !rgvProtocol.getStatusType().equals(RgvStatusType.ROAM))) {
            return false;
        }
        RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId());
        if (rgvProtocolOther == null) {
            return true;
        }
        if (rgvProtocolOther.statusEnable) {
            BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", staNo));
            if (Math.abs(basDevpPosition.getPlcPosition()-rgvProtocol.getRgvPos())
                    >=
                    Math.abs(basDevpPosition.getPlcPosition()-rgvProtocolOther.getRgvPos())){
                return false;
            }
        }
        return true;
    }
    public TaskWrk deviceDetection(RgvSlave.RgvStn inSta) {
@@ -1422,7 +1482,7 @@
                    for (RgvSlave.RgvStn inSta : rgvSlave.getRgvInSta()) {
                        TaskWrk taskWrk = deviceDetection(inSta);
                        if (taskWrk != null) {
                            if (taskWrk.getTaskNo().equals(taskNoNow)) continue;
                            if (taskWrk.getWrkNo().toString().equals(taskNoNow)) continue;
                            taskWrkList.add(taskWrk);
                            staList.add(inSta.getStaNo());
                        }
@@ -1455,7 +1515,7 @@
                                if (rgvStn.getStaNo().equals(staNoNow)) {
                                    TaskWrk taskWrk = deviceDetection(rgvStn);
                                    if (taskWrk != null) {
                                        BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", taskWrk.getTargetPointConvert()));
                                        BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint())));
                                        if (RouteUtils.CheckIfItIsWithinTheRange(rangeList, basDevpPosition.getPlcPosition(), basDevpPositions, itSmall)) {
                                            sign = taskGenerate(rgvSlave, rgvStn, 0);
                                        }
@@ -1481,6 +1541,13 @@
                                }
                            }
                        }
                        if (!sign && belongToRange.size()==1){
                            if (rgvOtherIDLEOther(rgvSlave)){
                                if (!rgvOtherIDLE(rgvSlave,belongToRange.get(0))){
                                    sign=true;
                                }
                            }
                        }
                        if (!sign) {
                            for (Integer staNoNow : rangeList) {
@@ -1488,7 +1555,7 @@
                                    if (rgvStn.getStaNo().equals(staNoNow)) {
                                        TaskWrk taskWrk = deviceDetection(rgvStn);
                                        if (taskWrk != null) {
                                            BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", taskWrk.getTargetPointConvert()));
                                            BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint())));
                                            if (RouteUtils.CheckIfItIsWithinTheRange(rangeList, basDevpPosition.getPlcPosition(), basDevpPositions, itSmall)) {
                                                sign = taskGenerate(rgvSlave, rgvStn, 0);
                                            }
@@ -1522,7 +1589,7 @@
                                    if (rgvStn.getStaNo().equals(staNoNow)) {
                                        TaskWrk taskWrk = deviceDetection(rgvStn);
                                        if (taskWrk != null) {
                                            BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", taskWrk.getTargetPointConvert()));
                                            BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint())));
                                            if (RouteUtils.CheckIfItIsWithinTheRange(rangeList, basDevpPosition.getPlcPosition(), basDevpPositions, itSmall)) {
                                                sign = taskGenerate(rgvSlave, rgvStn, 0);
                                            }
@@ -1612,28 +1679,24 @@
                if (targetPointConvert == null) {
                    return false;
                }
                RgvSlave.RgvStn rgvStnEnd = getRgvStnNow(rgvSlave, targetPointConvert);
                if (rgvStnEnd == null) {
                    return false;
                }
                BasDevpPosition basDevpPositionSou = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", rgvStn.getStaNo()));
                BasDevpPosition basDevpPositionEnd = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", targetPointConvert));
                //执行
                issuedTake.setTaskNo(Long.valueOf(taskWrk.getTaskNo()));
                issuedTake.setTaskNo(Long.valueOf(taskWrk.getWrkNo()));
                issuedTake.setTaskStatus(2);
                issuedTake.setTaskNoDirection(issuedTake.gettaskNoDirection$(issuedTake.getTaskNo(), issuedTake.getTaskStatus()));
                issuedTake.setTargetPosition(basDevpPositionSou.getPlcPosition());
                issuedTake.setIsRunning(1);
                issuedTake.setDirection(rgvStn.isDirection());
                issuedTake.setDirection(basDevpPositionSou.getRgvSign()==1);
                issuedPut.setTaskNo(Long.valueOf(taskWrk.getTaskNo()));
                issuedPut.setTaskNo(Long.valueOf(taskWrk.getWrkNo()));
                issuedPut.setTaskStatus(3);
                issuedPut.setTaskNoDirection(issuedPut.gettaskNoDirection$(issuedPut.getTaskNo(), issuedPut.getTaskStatus()));
                issuedPut.setTargetPosition(basDevpPositionEnd.getPlcPosition());
                issuedPut.setIsRunning(1);
                issuedPut.setDirection(rgvStnEnd.isDirection());
                issuedPut.setDirection(basDevpPositionEnd.getRgvSign()==1);
            } catch (Exception e) {
                log.error("任务生成失败issued1===》异常信息:{}", e.getMessage());
                return false;