zyh
1 天以前 e98d4b1133ed058bfe1e6af75be9975aebfc32d8
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -6,6 +6,7 @@
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.mapper.BasCrnErrorMapper;
@@ -95,6 +96,8 @@
    private ConfigService configService;
    @Autowired
    private RedisUtil redisUtil;
    @Autowired
    private RcsService rcsService;
    @Value("${wms.url}")
    private String wmsUrl;
@@ -120,7 +123,7 @@
                }
                // 获取入库站信息
                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
                  SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
                StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
                if (staProtocol == null) {
                    continue;
@@ -264,9 +267,23 @@
                    try {
                        LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
                        // 输出库位类型信息
                        String locTypeStr = locTypeDto.getLocType1() == 1 ? "低库位" : "高库位";
                        log.info("[入库库位分配] 检测到" + locTypeStr + ",开始分配对应库位");
                        SearchLocParam param = new SearchLocParam();
                        param.setBarcode(barcode);
                        param.setIoType(1);
                        WaitPakin waitPakin = new WaitPakin();
                        List<WaitPakin> waitPakinList = waitPakinMapper.selectList(new EntityWrapper<WaitPakin>()
                                .eq("zpallet", param.getBarcode())
                        );
                        if (waitPakinList.isEmpty()) {
                            param.setIoType(10);
                        } else {
                            param.setIoType(1);
                        }
                        param.setSourceStaNo(inSta.getStaNo());
                        param.setLocType1(locTypeDto.getLocType1());
                        String response = new HttpHandler.Builder()
@@ -510,6 +527,10 @@
                        try {
                            LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
                            // 输出库位类型信息
                            String locTypeStr = locTypeDto.getLocType1() == 1 ? "低库位" : "高库位";
                            log.info("[入库库位分配] 检测到" + locTypeStr + ",开始分配对应库位");
                            SearchLocParam param = new SearchLocParam();
                            param.setBarcode(wrkMast.getBarcode());
@@ -1109,9 +1130,9 @@
                }
            }
            String ip = "";
            if (wrkMast.getStaNo()==401){
            if (wrkMast.getStaNo() == 401) {
                ip = "172.26.4.231";
            }else if (wrkMast.getStaNo()==402){
            } else if (wrkMast.getStaNo() == 402) {
                ip = "172.26.4.232";
            }else if (wrkMast.getStaNo()==307){
                ip = "172.26.1.231";
@@ -1267,9 +1288,44 @@
                    // 命令下发区 --------------------------------------------------------------------------
                    //判断是否有正在执行中的AGV任务
                    List<AgvTask> agvTasks = agvTaskService.selectList(new EntityWrapper<AgvTask>().eq("wrk_sts", 302).eq("source_sta_no", staProtocol.getSiteId()));
                    List<AgvTask> agvTasks = agvTaskService.selectList(new EntityWrapper<AgvTask>().eq("wrk_sts", 302).eq("sta_no", String.valueOf(staProtocol.getSiteId())));
                    if (agvTasks != null && agvTasks.size() > 0) {
                        continue;
                    }
                    //站点为401或者402时,任务备注为Q时判断该区域中最外侧站点是否能绑定
                    //能绑定说明站点为空,可以继续出库
                    //站点绑定失败则说明区域满了
                    if (staProtocol.getSiteId()==401||staProtocol.getSiteId()==402) {
                        BindOrUnbindParam bindOrUnbindParam = new BindOrUnbindParam();
                        String staNo1="LZP10";
                        String staNo2="LZP11";
                        if (wrkMast.getMemo().equals("Q-L2")){
                            staNo1="LZP15";
                            staNo2="LZP16";
                        }else if (wrkMast.getMemo().equals("Q-L3")){
                            staNo1="LZP20";
                            staNo2="LZP21";
                        }else if (wrkMast.getMemo().equals("Q-L4")){
                            staNo1="LZP26";
                            staNo2="LZP26";
                        }else if (wrkMast.getMemo().equals("Q-L5")){
                            staNo1="LZP30";
                            staNo2="LZP31";
                        }
                        bindOrUnbindParam.setSiteCode(staNo1);
                        R r = rcsService.bindOrUnbind(bindOrUnbindParam);
                        if (r != null && r.get("code").equals(200)) {
                        }else {
                            bindOrUnbindParam.setSiteCode(staNo2);
                            r = rcsService.bindOrUnbind(bindOrUnbindParam);
                            if (r != null && r.get("code").equals(200)) {
                            }else{
                                continue;
                            }
                        }
                    }
                    // 堆垛机控制过滤
                    if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
@@ -1894,6 +1950,10 @@
                    try {
                        LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
                        // 输出库位类型信息
                        String locTypeStr = locTypeDto.getLocType1() == 1 ? "低库位" : "高库位";
                        log.info("[入库库位分配] 检测到" + locTypeStr + ",开始分配对应库位");
                        SearchLocParam param = new SearchLocParam();
                        param.setIoType(10);
                        param.setSourceStaNo(emptyInSta.getStaNo());
@@ -2084,12 +2144,12 @@
                    staProtocol = staProtocol.clone();
                }
                // 获取工作档数据
                WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo());
                WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no",staProtocol.getWorkNo()));
//                if (null == wrkMast || wrkMast.getWrkSts() < 14 || wrkMast.getIoType() < 100) { continue; }
                if (null == wrkMast) {
                    continue;
                }
                News.warnNoLog(""+mark+" - 0"+" - 开始执行:出库  ===>> 工作档信息写入led显示器");
                News.warnNoLog("" + mark + " - 0" + " - 开始执行:出库  ===>> 工作档信息写入led显示器");
                wrkMasts.add(wrkMast);
                // 组装命令
                LedCommand ledCommand = new LedCommand();
@@ -2097,12 +2157,12 @@
                ledCommand.setIoType(wrkMast.getIoType());
                // 出库模式
                switch (wrkMast.getIoType()) {
                    case 1:
                        ledCommand.setTitle("全板入库");
                        break;
                    case 10:
                        ledCommand.setTitle("空板入库");
                        break;
//                    case 1:
//                        ledCommand.setTitle("全板入库");
//                        break;
//                    case 10:
//                        ledCommand.setTitle("空板入库");
//                        break;
                    case 101:
                        ledCommand.setTitle("全板出库");
                        break;
@@ -2119,40 +2179,45 @@
                        ledCommand.setTitle("空板出库");
                        ledCommand.setEmptyMk(true);
                        break;
                    case 53:
                        ledCommand.setTitle("拣料入库");
                        break;
                    case 57:
                        ledCommand.setTitle("盘点入库");
                        break;
                    case 54:
                        ledCommand.setTitle("并板入库");
                        break;
//                    case 53:
//                        ledCommand.setTitle("拣料入库");
//                        break;
//                    case 57:
//                        ledCommand.setTitle("盘点入库");
//                        break;
//                    case 54:
//                        ledCommand.setTitle("并板入库");
//                        break;
                    default:
                        News.error(""+mark+" - 1"+" - 任务入出库类型错误!!![工作号:{}] [入出库类型:{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
                        //News.error("" + mark + " - 1" + " - 任务入出库类型错误!!![工作号:{}] [入出库类型:{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
                        break;
                }
                ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
                ledCommand.setLocNo(wrkMast.getLocNo());
                ledCommand.setStaNo(wrkMast.getStaNo());
                ledCommand.setBarcode(wrkMast.getBarcode());
//                ledCommand.setSourceStaNo(wrkMast.getSourceStaNo());
                if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
                    List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
                    try{
                        if (wrkMast.getIoType()>100){
                            for (WrkDetl wrkDetl : wrkDetls){
                    try {
                        if (wrkMast.getIoType() > 100) {
                            for (WrkDetl wrkDetl : wrkDetls) {
                                LocDetl locDetl = locDetlService.selectMatnrSpecs(wrkDetl.getMatnr(), wrkDetl.getSpecs(), wrkMast.getSourceLocNo());
                                wrkDetl.setWeight(locDetl.getAnfme());
                                if (Cools.isEmpty(locDetl)) {
                                    wrkDetl.setWeight(0.0);
                                }else {
                                    wrkDetl.setWeight(locDetl.getAnfme());
                                }
                            }
                        }else {
                            for (WrkDetl wrkDetl : wrkDetls){
                        } else {
                            for (WrkDetl wrkDetl : wrkDetls) {
                                wrkDetl.setWeight(wrkDetl.getAnfme());
                            }
                        }
                    }catch (Exception e){
                        log.error("工作档案明细输入电视机失败1:异常信息==》"+e);
                    } catch (Exception e) {
                        log.error("工作档案明细输入电视机失败1:异常信息==》" + e);
                    }
                    wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(),wrkDetl.getWeight(),wrkDetl.getSpecs(),wrkDetl.getSku())));
                    wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(), wrkDetl.getWeight(), wrkDetl.getSpecs(), wrkDetl.getSku(),wrkDetl.getZpallet())));
                }
                commands.add(ledCommand);
            }
@@ -2163,31 +2228,12 @@
            if (CollectionUtils.equals(ledThread.getWorkNos(), workNos)) {
                continue;
            }
//             命令下发 -------------------------------------------------------------------------------
//            if (!commands.isEmpty()) {
//                if (led.getId() < 7) {
//                    if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, commands))) {
//                        News.error(""+mark+" - 2"+" - {}号LED命令下发失败!!![ip:{}] [port:{}]", led.getId(), led.getIp(), led.getPort());
//                        continue;
//                    } else {
//                        ledThread.setLedMk(false);
//                    }
//                } else {
//                    if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(1, commands))) {
//                        News.error(""+mark+" - 3"+" - {}号LED命令下发失败!!![ip:{}] [port:{}]", led.getId(), led.getIp(), led.getPort());
//                        continue;
//                    } else {
//                        ledThread.setLedMk(false);
//                    }
//                }
//
//            }
            // 命令下发 -------------------------------------------------------------------------------
            if (!commands.isEmpty()) {
                if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, commands))) {
                    News.error("{}号LED命令下发失败!!![ip:{}] [port:{}]", led.getId(), led.getIp(), led.getPort());
                    continue;
                }else {
                } else {
                    ledThread.setLedMk(false);
                }
            }
@@ -2198,7 +2244,7 @@
                    wrkMast.setOveMk("Y");
                    wrkMast.setModiTime(new Date());
                    if (wrkMastMapper.updateById(wrkMast) == 0) {
                        News.errorNoLog(""+mark+" - 4"+" - 更新工作档失败");
                        News.errorNoLog("" + mark + " - 4" + " - 更新工作档失败");
                        throw new CoolException("更新工作档失败");
                    }
                }
@@ -2212,7 +2258,7 @@
            }
        }
        News.infoNoLog(""+mark+" - 0"+" - 出库  ===>> 工作档信息写入led显示器执行完成");
        News.infoNoLog("" + mark + " - 0" + " - 出库  ===>> 工作档信息写入led显示器执行完成");
    }
    /**