#
1
5 天以前 7404d352ee7efa5ae82d6bd68a3a876a913159f8
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -43,6 +43,8 @@
import com.zy.core.thread.LedThread;
import com.zy.core.thread.RgvThread;
import com.zy.core.thread.SiemensDevpThread;
import com.zy.system.entity.Config;
import com.zy.system.service.ConfigService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -77,6 +79,8 @@
    private WaitPakinMapper waitPakinMapper;
    @Autowired
    private LocMastService locMastService;
    @Autowired
    private ConfigService configService;
    @Autowired
    private StaDescService staDescService;
    @Autowired
@@ -1180,7 +1184,7 @@
            //mark - 3 - ....
            this.locToLoc(crn, crnProtocol,mark);
            //预调度
            this.crnRebackHp(crn, crnProtocol, crnThread);
//            this.crnRebackHp(crn, crnProtocol, crnThread);
        }
//        News.infoNoLog(""+mark+" - 0"+" - 堆垛机入出库作业下发执行完成");
@@ -1198,9 +1202,7 @@
                    new EntityWrapper<BasCrnp>().eq("crn_no", crnProtocol.getCrnNo())
            );
            boolean result = true;
            if(crnProtocol.getCrnNo() != 5 ){
                return;
            }
            for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) {
                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
                if(crnStn.getStaNo() == 4001){
@@ -1220,8 +1222,8 @@
            int x=1;
            switch (crnProtocol.getCrnNo()){
                case 1: x =2; break;
                case 2: x =6; break;
                case 3: x =11; break;
                case 2: x =7; break;
                case 3: x =10; break;
                case 4: x =14; break;
                case 5: x =18; break;
            }
@@ -1776,7 +1778,7 @@
                    break;
//                    continue;
                }
                if (staProtocol2.isLoading() && staProtocol2.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) {
                if (staProtocol2.isLoading() && staProtocol2.isAutoing() && staProtocol2.getWorkNo() == 9997) {
                    // 堆垛机控制过滤
                    if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
//                        continue;
@@ -1817,7 +1819,7 @@
                        break;
                    }
                }
                if (staProtocol3.isLoading() && staProtocol3.isAutoing()) {
                if (staProtocol3.isLoading() && staProtocol3.isAutoing()&& staProtocol3.getWorkNo() == 9997) {
                    // 堆垛机控制过滤
                    if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
//                        continue;
@@ -4658,34 +4660,25 @@
            rgvCommand.setRgvNo(rgvId); // RGV编号
            RgvTaskStatusType type;
            Integer targetPosition = 0;
            String typeNo = null;
            if(wrkMastSta.getWrkSts() == 0){
                type = RgvTaskStatusType.FETCH; //取货
                targetPosition = wrkMastSta.getStaStart();
                typeNo = "2";
            }else{
                type = RgvTaskStatusType.PUT; //放货
                targetPosition = wrkMastSta.getStaEnd();
                typeNo = "3";
            }
            Date now = new Date();
            if (targetPosition == 1038) {
                System.out.println("小车下发命令时间:" +
                        new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(now));
            }
            EntityWrapper<BasRgvOpt> entityWrapper = new EntityWrapper<>();
            entityWrapper.eq("rgv_no", rgvId)
                    .orderBy("send_time");
            BasRgvOpt basRgvOpt = basRgvOptService.selectOne(entityWrapper);
            BasRgvOpt basRgvOpt = basRgvOptService.getBasRgvOpt(rgvId);
            // 防止重复下发命令
            if (basRgvOpt != null) {
                // 获取最新记录的 mode 对应的任务类型
                RgvTaskStatusType latestTaskStatus = RgvTaskStatusType.valueOf(basRgvOpt.getMode());
                // 判断当前命令与最新记录是否相同
                if (latestTaskStatus == type && basRgvOpt.getPosSta().equals(wrkMastSta.getWorkSta())) {
                if (typeNo.equals(basRgvOpt.getMode()) && basRgvOpt.getPosSta().equals(wrkMastSta.getWorkSta())) {
                    // 如果最新记录的 mode 和 posSta 与当前命令相同,认为是重复命令
                    log.error("命令重复下发,当前命令与最新记录相同,任务不下发!");
                    return false;
                }
            }
            rgvCommand.setTaskNo(Math.toIntExact(wrkMastSta.getWrkNo())); // 工位工作号
            rgvCommand.setTaskStatus(type); // 工位任务模式:  取货
            rgvCommand.setTargetPosition(targetPosition);   //工位目标站点
@@ -4826,6 +4819,10 @@
     * arm任务完成自动组托
     * */
    public synchronized void  armMissionAccomplished1() {
        Config configAGVAUTOIN = configService.selectConfigByCode("AGVAUTOIN");
        if(!Boolean.parseBoolean(configAGVAUTOIN.getValue())){
            return;
        }
        try{
            for (DevpSlave devp : slaveProperties.getDevp()) {
                // 遍历拣料入库口
@@ -4924,6 +4921,10 @@
     * arm任务完成自动组托
     * */
    public synchronized void  armMissionAccomplished2() {
        Config configAGVAUTOIN = configService.selectConfigByCode("AGVAUTOIN");
        if(!Boolean.parseBoolean(configAGVAUTOIN.getValue())){
            return;
        }
        try{
            List<BasArm> basArmList = basArmService.selectList(new EntityWrapper<BasArm>().gt("arm_no",4));
            for (BasArm basArm : basArmList) {
@@ -5122,7 +5123,7 @@
                                        new EntityWrapper<BasArmMast>()
                                                .eq("status", 2)
                                                .eq("binding_tags", basArmMast.getBindingTags()));
                                if (binding_tags<2){
                                if (binding_tags==1){
                                    BasArmMast basArmMastOne = basArmMastService.selectOne(
                                            new EntityWrapper<BasArmMast>()
                                                    .eq("status", 2)
@@ -5133,6 +5134,25 @@
                                        continue;
                                    }
                                } else if (binding_tags == 0){
                                    boolean signBinding_tags_barcode = false;
                                    List<BasArmMast> binding_tags_barcodeList = basArmMastService.selectList(
                                            new EntityWrapper<BasArmMast>()
                                                    .eq("barcode", barcode));
                                    for (BasArmMast basArmMastBarcode : binding_tags_barcodeList){
                                        Integer selectCountAndBindingTags = basArmMastService.selectCountAndBindingTags(basArmMastBarcode.getArmNo(), basArmMastBarcode.getOrderNo(), basArmMastBarcode.getMatnr(),basArmMastBarcode.getBindingTags());
                                        Integer selectCountAndBindingTagsLog = basArmMastService.selectCountAndBindingTagsLog(basArmMastBarcode.getArmNo(),basArmMastBarcode.getOrderNo(), basArmMastBarcode.getMatnr(),basArmMastBarcode.getBindingTags());
                                        Double anfmeSignOne = basArmMastService.selectBasArmMastSignValue(basArmMastBarcode.getOrderNo(), basArmMastBarcode.getMatnr(),basArmMastBarcode.getBindingTags());
                                        if ((selectCountAndBindingTags + selectCountAndBindingTagsLog) != anfmeSignOne.intValue()) {
//                                            signBinding_tags_barcode = true; /////
                                            break;
                                        }
                                    }
                                    if (signBinding_tags_barcode){
                                        armTaskAssignmentCallApiLogSave(staProtocol, "数据异常!!!", staProtocol.getSiteId()+"码垛位置,上一个分拣组未全部完成!!!", false);
                                        continue;
                                    }
                                }
                            }
//                            OrderDetlValueResultUtil orderDetlValueResultUtil = basArmMastService.selectOrderDetlValue(basArmMast.getOrderNo(), basArmMast.getMatnr());
@@ -5185,6 +5205,10 @@
     * arm任务下发
     * */
    public synchronized void armTaskAssignment2() {
        Config configAGVAUTOIN = configService.selectConfigByCode("AGVAUTOIN");
        if(!Boolean.parseBoolean(configAGVAUTOIN.getValue())){
            return;
        }
        try{
            List<BasArm> basArmList = basArmService.selectList(new EntityWrapper<BasArm>().gt("arm_no",4));
            for (BasArm basArm : basArmList) {
@@ -5519,7 +5543,7 @@
                    // 任务生成区 --------------------------------------------------------------------------
                    BasAgvMast basAgvMast = new BasAgvMast();
                    BasAgvWrkDetl basAgvWrkDetl = new BasAgvWrkDetl();
                    try {
                        LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
@@ -5706,6 +5730,9 @@
     * agv任务生成  Empty
     * */
    public synchronized void agvTaskCreateR() {
        Config configAGVAUTOIN = configService.selectConfigByCode("AGVAUTOIN");
        // 根据输送线plc遍历
        for (DevpSlave devp : slaveProperties.getDevp()) {
            // 遍历出库口
@@ -5745,20 +5772,22 @@
                                    .le("row1", 26)
                                    .orderBy("io_time",true)
                            );
                        }else if(inStaAgv.getStaNo() < 4000){
                        }else if(inStaAgv.getStaNo() < 4000 && Boolean.parseBoolean(configAGVAUTOIN.getValue())){
                            locMastList = locMastService.selectList(new EntityWrapper<LocMast>()
                                    .eq("loc_sts", "R")
                                    .ge("row1", 28)
                                    .le("row1", 31)
                                    .orderBy("io_time",true));
                            floorNo = 2;
                        }else{
                        }else if(inStaAgv.getStaNo() < 5000){
                            locMastList = locMastService.selectList(new EntityWrapper<LocMast>()
                                    .eq("loc_sts", "R")
                                    .ge("row1", 32)
                                    .le("row1", 38)
                                    .orderBy("io_time",true));
                            floorNo = 3;
                        }else{
                            continue;
                        }
                        for (LocMast locMast : locMastList){
@@ -5926,23 +5955,6 @@
                    if ((!Cools.isEmpty(staProtocol.getWorkNo()) && staProtocol.getWorkNo().equals(basAgvMast.getTaskNo())) || basAgvMast.getSourceStaNo().equals(2033)){
                        AgvTaskAssignmentParam agvTaskAssignmentParam = new AgvTaskAssignmentParam(basAgvMast);
                        if(basAgvMast.getFloorNo()==1) {
//                            WrkMast wrkMast = wrkMastService.selectByWrkNo(staProtocol.getWorkNo());
//                            AgvBindCtnrAndBinParam agvBindCtnrAndBinParam = new AgvBindCtnrAndBinParam(basAgvMast);
//                            agvBindCtnrAndBinParam.setCtnrCode(basAgvMast.getTimestamp().toString());
//                            agvBindCtnrAndBinParam.setCtnrTyp("1");
//                            ReturnT<String> resultBind = new PostMesDataUtils().postMesDataAgv("AGV容器绑定解绑", AgvConstant.AGV_URL, AgvConstant.AGV_CTNRANDBING, agvBindCtnrAndBinParam);
//                            if (resultBind.getCode()==200){
//                                //任务下发
//                                ReturnT<String> result = new PostMesDataUtils().postMesDataAgv("AGV任务下发", AgvConstant.AGV_URL, AgvConstant.AGV_ADAPTOR, agvTaskAssignmentParam);
//                                if (result.getCode()==200){
//                                    basAgvMast.setStatus(1);
//                                    basAgvMastService.updateById(basAgvMast);
//                                } else {
//                                    agvTaskAssignmentCallApiLogSave(basAgvMast, "AGV任务下发失败", "任务号:"+basAgvMast.getTaskNo()+"任务信息下发失败!!!", false);
//                                }
//                            } else {
//                                agvTaskAssignmentCallApiLogSave(basAgvMast, "AGV容器绑定解绑", "任务号:"+basAgvMast.getTaskNo()+"任务信息下发失败!!!", false);
//                            }
                            //任务下发
                            ReturnT<String> result = new PostMesDataUtils().postMesDataAgv("AGV任务下发", AgvConstant.AGV_URL, AgvConstant.AGV_ADAPTOR, agvTaskAssignmentParam);
                            if (result.getCode()==200){
@@ -5960,7 +5972,7 @@
                                    agvBindCtnrAndBinTwoParam.setPodcode(basAgvMast.getBarcode());
                                    agvBindCtnrAndBinTwoParam.setPositionCode(basAgvMast.getSourceStaNo().toString());
                                    agvBindCtnrAndBinTwoParam.setIndBind("1");;
                                    ReturnT<String> resultBind = new PostMesDataUtils().postMesDataArmGrating("AGV容器绑定解绑",
                                    ReturnT<String> resultBind = new PostMesDataUtils().postMesDataArmGrating("AGV容器绑定",
                                            AgvConstant.AGV_URL+"/"+AgvConstant.AGV_hikRpcService,AgvConstant.getAGVADAPTOR(2), agvBindCtnrAndBinTwoParam);
                                    if (resultBind.getCode()!=200){
                                        basAgvMast.setStatus(4);