*
lsh
2025-11-06 81464f74e4b9a08d0a1df6a6f3dd6a6ec62f5a09
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -116,6 +116,7 @@
    @Autowired
    private BasPlcerrorLogServiceImpl basPlcerrorLogService;
    public Long currentTimeMilliConnectCrnAuto= 0L;
    public boolean[] signIntOut= new boolean[]{false,false,false,false,false};
    public void generateStoreWrkFile() {
        try {
@@ -2816,21 +2817,33 @@
                // 如果最近一次是入库模式
                if (crnProtocol.getLastIo().equals("I")) {
                    if (basCrnp.getInEnable().equals("Y")) {
                        this.crnStnToLocDemo(crnSlave, crnProtocol); //  入库
                        crnProtocol.setLastIo("O");
                        boolean crnStnToLocDemo = this.crnStnToLocDemo(crnSlave, crnProtocol);//  入库
                        if (crnStnToLocDemo){
                            crnProtocol.setLastIo("O");
                        }
                    } else if (basCrnp.getOutEnable().equals("Y")) {
                        this.locToCrnStnDemo(crnSlave, crnProtocol); //  出库
                        crnProtocol.setLastIo("I");
                        boolean locToCrnStnDemo = this.locToCrnStnDemo(crnSlave, crnProtocol);//  出库
                        if (locToCrnStnDemo && signIntOut[crnSlave.getId()-1]){
                            crnProtocol.setLastIo("I");
                        } else if (locToCrnStnDemo && !signIntOut[crnSlave.getId()-1]){
                            signIntOut[crnSlave.getId()-1] = true;
                        }
                    }
                }
                // 如果最近一次是出库模式
                else if (crnProtocol.getLastIo().equals("O")) {
                    if (basCrnp.getOutEnable().equals("Y")) {
                        this.locToCrnStnDemo(crnSlave, crnProtocol); //  出库
                        crnProtocol.setLastIo("I");
                        boolean locToCrnStnDemo = this.locToCrnStnDemo(crnSlave, crnProtocol);//  出库
                        if (locToCrnStnDemo && signIntOut[crnSlave.getId()-1]){
                            crnProtocol.setLastIo("I");
                        } else if (locToCrnStnDemo && !signIntOut[crnSlave.getId()-1]){
                            signIntOut[crnSlave.getId()-1] = true;
                        }
                    } else if (basCrnp.getInEnable().equals("Y")) {
                        this.crnStnToLocDemo(crnSlave, crnProtocol); //  入库
                        crnProtocol.setLastIo("O");
                        boolean crnStnToLocDemo = this.crnStnToLocDemo(crnSlave, crnProtocol);//  入库
                        if (crnStnToLocDemo){
                            crnProtocol.setLastIo("O");
                        }
                    }
                }
            }  else {
@@ -2852,7 +2865,8 @@
    /**
     * 入库  ===>>  堆垛机站到库位
     */
    public void crnStnToLocDemo(CrnSlave slave, CrnProtocol crnProtocol) throws IOException {
    public boolean crnStnToLocDemo(CrnSlave slave, CrnProtocol crnProtocol) throws IOException {
        boolean result = false;
        for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) {
            List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("CRN_NO", crnProtocol.getLaneNo()).eq("CRN_STN", crnStn.getStaNo()));
@@ -2944,6 +2958,7 @@
                    throw new CoolException("堆垛机命令生成失败");
                } else {
                    result = true;
                    try {
                        devpThread.setErrorDev(staProtocol.getSiteId(), "-");
                        CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "-");
@@ -2956,16 +2971,18 @@
                }
            }
        }
        return result;
    }
    /**
     * 出库  ===>>  库位到堆垛机站
     * 2022-06-09 TQS修改,查询工作档LIST,遍历下发,防止第一个任务堵塞出库
     */
    public void locToCrnStnDemo(CrnSlave slave, CrnProtocol crnProtocol) {
    public boolean locToCrnStnDemo(CrnSlave slave, CrnProtocol crnProtocol) {
        boolean result = false;
        List<TaskWrk> taskWrksInitial = taskWrkMapper.selectPakOut(crnProtocol.getLaneNo(), null);
        if (taskWrksInitial.size() == 0) {
            return;
            return result;
        }
        for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
            List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("CRN_NO", crnProtocol.getLaneNo()).eq("CRN_STN", crnStn.getStaNo()));
@@ -3038,6 +3055,7 @@
                            CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "运行命令下发失败");
                            throw new CoolException("堆垛机命令生成失败");
                        } else {
                            result = true;
                            try {
                                // 修改工作档状态 11.生成出库ID => 12.吊车出库中
                                Date now = new Date();
@@ -3054,36 +3072,6 @@
                            } catch (Exception e) {
                                log.error("修改工作档状态 11.生成出库ID => 12.吊车出库中 失败!!,工作号={}", taskWrk.getWrkNo());
                                log.error("修改工作档状态 11.生成出库ID => 12.吊车出库中 失败!!,异常:" + e);
                            }
                            try {
                                HashMap<String, Object> headParam = new HashMap<>();
                                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)
                                        .setUri(wmsUrl)
                                        .setPath(taskStatusFeedbackPath)
                                        .setJson(JSON.toJSONString(headParam))
                                        .build()
                                        .doPost();
                                JSONObject jsonObject = JSON.parseObject(response);
                                apiLogService.save("wcs派发出库任务上报wms"
                                        , wmsUrl + taskStatusFeedbackPath
                                        , null
                                        , "127.0.0.1"
                                        , JSON.toJSONString(headParam)
                                        , response
                                        , true
                                );
                            } catch (Exception e) {
                                log.error("wcs派发出库任务上报wms失败", JSON.toJSONString(taskWrk));
//                                throw new CoolException("wcs派发入库任务上报wms失败");
                            }
                        }
                    } else {
@@ -3108,6 +3096,7 @@
                }
            }
        }
        return result;
    }
    /**