自动化立体仓库 - WCS系统
#
Junjie
2023-12-08 e3d8bc857d087f2f8bcabc4437b73c66ee329ddc
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -2211,4 +2211,111 @@
        }
    }
    /**
     * 扫描碟盘机自动入库空托盘
     */
    public synchronized void autoEmptyIn() {
        for (CrnSlave crnSlave : slaveProperties.getCrn()) {
            // 遍历空板入库口
            for (CrnSlave.CrnStn emptyInStn : crnSlave.getEmptyCrnInStn()) {
                // 获取空板入库站信息
                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, emptyInStn.getDevpPlcId());
                StaProtocol staProtocol = devpThread.getStation().get(emptyInStn.getStaNo());
                if (staProtocol == null) {
                    continue;
                } else {
                    staProtocol = staProtocol.clone();
                }
                // 站点条件判断
                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()
                        && staProtocol.isEmptyMk() && (staProtocol.getWorkNo() >= 9990
                        && staProtocol.getWorkNo() <= 9999)) {
                    try {
                        LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
                        SearchLocParam param = new SearchLocParam();
                        param.setIoType(10);
                        param.setSourceStaNo(emptyInStn.getStaNo());
                        param.setLocType1(locTypeDto.getLocType1());
                        String response = new HttpHandler.Builder()
                                .setUri(wmsUrl)
                                .setPath("/rpc/pakin/loc/v1")
                                .setJson(JSON.toJSONString(param))
                                .build()
                                .doPost();
                        JSONObject jsonObject = JSON.parseObject(response);
                        if (jsonObject.getInteger("code").equals(200)) {
                            StartupDto dto = jsonObject.getObject("data", StartupDto.class);
                            // 更新站点信息 且 下发plc命令
                            staProtocol.setWorkNo(dto.getWorkNo().shortValue());
                            staProtocol.setStaNo(dto.getStaNo().shortValue());
                            devpThread.setPakMk(staProtocol.getSiteId(), false);
                            boolean result = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(2, staProtocol));
                            if (!result) {
                                throw new CoolException("更新plc站点信息失败");
                            }
                        } else {
                            log.error("请求接口失败!!!url:{};request:{};response:{}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                    }
                }
            }
        }
    }
    /**
     * 扫描拆盘机自动出库空托盘
     */
    public synchronized void autoEmptyOut() {
        for (CrnSlave crnSlave : slaveProperties.getCrn()) {
            for (CrnSlave.CrnStn emptyOutStn : crnSlave.getEmptyCrnOutStn()) {
                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, emptyOutStn.getDevpPlcId());
                StaProtocol staProtocol = devpThread.getStation().get(emptyOutStn.getStaNo());
                if (staProtocol == null) {
                    return;
                } else {
                    staProtocol = staProtocol.clone();
                }
                if (staProtocol.isAutoing()  //自动
                        && !staProtocol.isLoading()  //无物
                        && staProtocol.isOutEnable()  //可出信号
                        && staProtocol.getWorkNo() == 0
                ) {
                    WrkMast pakoutEmpty = wrkMastMapper.selectPakoutEmpty(emptyOutStn.getStaNo());
                    if (null != pakoutEmpty) {
                        return;
                    }
                    try {
                        HashMap<String, Object> map = new HashMap<>();
                        map.put("crnNo", crnSlave.getId());
                        String response = new HttpHandler.Builder()
                                .setUri(wmsUrl)
                                .setParams(map)
                                .setPath("/rpc/auto/emptyOut/v1")
                                .build()
                                .doPost();
                        JSONObject jsonObject = JSON.parseObject(response);
                        if (jsonObject.getInteger("code").equals(200)) {
                            JSONObject data = (JSONObject) jsonObject.get("data");
                            log.info((String) data.get("msg"));
                        } else {
                            log.error("请求接口失败!!!url:{};request:{};response:{}", wmsUrl + "/rpc/auto/emptyOut/v1","", response);
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                    }
                }
            }
        }
    }
}