*
lsh
21 小时以前 d7ec100166068db8197d218c57d2a6c86a5289a4
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -2756,51 +2756,58 @@
     * 演示模式启动
     */
    public boolean crnStnDEMOOpen1() {
        int selectCount = taskWrkService.selectCount(new EntityWrapper<TaskWrk>());
        if (selectCount>0) {
            return false;
        }
        for (CrnSlave crn : slaveProperties.getCrn()) {
            // 获取堆垛机信息
            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
            CrnProtocol crnProtocol = crnThread.getCrnProtocol();
            if (crnProtocol == null) {
                continue;
        try{
            int selectCount = taskWrkService.selectCount(new EntityWrapper<TaskWrk>());
            if (selectCount>0) {
                return false;
            }
            BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
            if (basCrnp == null) {
                log.error("{}号堆垛机尚未在数据库进行维护!", crn.getId());
                continue;
            }
            if (Cools.isEmpty(basCrnp.getHpMk()) || !basCrnp.getHpMk().equals("Y")){
                CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "存在其它堆垛机开启演示模式!");
                continue;
            }
            CrnSlave crnSlave = new CrnSlave(crn);
            if (Cools.isEmpty(crnProtocol.getLaneNo()) || crnProtocol.getLaneNo()==0){
                CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "堆垛机巷道号异常!");
                continue;
            }
            if (!crn.getId().equals(crnProtocol.getLaneNo())) {
                for (CrnSlave crnOther : slaveProperties.getCrn()) {
                    if (crnOther.getId().equals(crnProtocol.getLaneNo())) {
                        crnSlave.updateCrnInStn(crnOther);
            for (CrnSlave crn : slaveProperties.getCrn()) {
                try{
                    // 获取堆垛机信息
                    CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
                    CrnProtocol crnProtocol = crnThread.getCrnProtocol();
                    if (crnProtocol == null) {
                        continue;
                    }
                }
            }
            for (String locNo : crnProtocol.getLocMastDemoList()){
                LocMast locMast = locMastService.selectByLocNo(locNo);
                TaskCreateParam taskCreateParam = new TaskCreateParam(crnSlave,locMast);
                taskCreateParam.setStartPointSta(crnProtocol.getStaIntDemo());
                taskCreateParam.setTargetPointSta(crnProtocol.getStaOutDemo());
                openService.taskCreate(taskCreateParam);
            }
                    BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
                    if (basCrnp == null) {
                        log.error("{}号堆垛机尚未在数据库进行维护!", crn.getId());
                        continue;
                    }
            return true;
                    if (Cools.isEmpty(basCrnp.getHpMk()) || !basCrnp.getHpMk().equals("Y")){
                        CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "存在其它堆垛机开启演示模式!");
                        continue;
                    }
//
                    CrnSlave crnSlave = new CrnSlave(crn);
                    if (Cools.isEmpty(crnProtocol.getLaneNo()) || crnProtocol.getLaneNo()==0){
                        CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "堆垛机巷道号异常!");
                        continue;
                    }
                    if (!crn.getId().equals(crnProtocol.getLaneNo())) {
                        for (CrnSlave crnOther : slaveProperties.getCrn()) {
                            if (crnOther.getId().equals(crnProtocol.getLaneNo())) {
                                crnSlave.updateCrnInStn(crnOther);
                            }
                        }
                    }
                    for (String locNo : crnProtocol.getLocMastDemoList()){
                        LocMast locMast = locMastService.selectByLocNo(locNo);
                        TaskCreateParam taskCreateParam = new TaskCreateParam(crnSlave,locMast);
                        taskCreateParam.setStartPointSta(crnProtocol.getStaIntDemo());
                        taskCreateParam.setTargetPointSta(crnProtocol.getStaOutDemo());
                        openService.taskCreate(taskCreateParam);
                    }
                } catch (Exception e) {
                    CrnErrCache.updateCrnErr(crn.getId(), "演示模式生成任务异常!");
                    continue;
                }
                return true;
            }
        } catch (Exception e) {
        }
        return false;
    }
@@ -3000,7 +3007,7 @@
     * 2022-06-09 TQS修改,查询工作档LIST,遍历下发,防止第一个任务堵塞出库
     */
    public void locToCrnStnDemo(CrnSlave slave, CrnProtocol crnProtocol) {
        List<TaskWrk> taskWrksInitial = taskWrkMapper.selectPakOut(crnProtocol.getLaneNo(), null);
        List<TaskWrk> taskWrksInitial = taskWrkMapper.selectPakOutDemo(crnProtocol.getLaneNo(), null);
        if (taskWrksInitial.size() == 0) {
            return;
        }
@@ -3177,7 +3184,6 @@
                                continue;
                            }
                            log.info("下发输送线任务:taskWrk:" + JSON.toJSONString(taskWrk));
//                            R r = siteController.siteDetlUpdate(Integer.valueOf(taskWrk.getTargetPoint()), taskWrk.getWrkNo().shortValue(), (short) 0, "Y", false, false);
                            staProtocol.setWorkNo(taskWrk.getWrkNo());
                            staProtocol.setStaNo(BarcodeUtils.getStaNo(staProtocol.getSiteId()));
                            boolean offer = false;
@@ -3187,18 +3193,17 @@
                                log.error("下发输送线任务失败:异常:" + e);
                                log.error("下发输送线任务失败:异常:offer:" + offer);
                            }
//                            JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(r));
                            if (offer) {
                                log.info("下发输送线任务成功:taskWrk:" + JSON.toJSONString(taskWrk));
                                Date now = new Date();
//                                taskWrk.setStatus(TaskStatusType.OVER3.id);
                                taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);
                                taskWrk.setWrkSts(2);
                                taskWrk.setModiTime(now);
                                taskWrk.setCompleteTime(now);
                                taskWrkService.updateById(taskWrk);
                            } else {
                                log.error("下发输送线任务失败:taskWrk:" + JSON.toJSONString(taskWrk));
//                                log.error("下发输送线任务失败:异常信息:"+JSON.toJSONString(r));
                            }
                        }
                    } catch (Exception e) {
@@ -3282,4 +3287,93 @@
        }
    }
    /**
     * 执行对工作档的完成操作
     */
    public void storeFinishedDemo() throws InterruptedException {
        for (CrnSlave crnSlave : slaveProperties.getCrn()) {
            try{
                // 获取堆垛机信息
                CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnSlave.getId());
                CrnProtocol crnProtocol = crnThread.getCrnProtocol();
                if (crnProtocol == null) {
                    continue;
                }
                BasCrnp basCrnp = basCrnpService.selectById(crnSlave.getId());
                if (basCrnp == null) {
                    log.error("{}号堆垛机尚未在数据库进行维护!", crnSlave.getId());
                    continue;
                }
                CrnSlave crn = new CrnSlave(crnSlave);
                if (Cools.isEmpty(crnProtocol.getLaneNo()) || crnProtocol.getLaneNo()==0){
                    CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "堆垛机巷道号异常!");
                    continue;
                }
                if (!crnSlave.getId().equals(crnProtocol.getLaneNo())) {
                    for (CrnSlave crnOther : slaveProperties.getCrn()) {
                        if (crnOther.getId().equals(crnProtocol.getLaneNo())) {
                            crn.updateCrnInStn(crnOther);
                        }
                    }
                }
                //  状态:等待确认 并且  任务完成位 = 1
                if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) {
                    //获取入库待确认工作档
                    TaskWrk taskWrk = taskWrkMapper.selectCrnNoInWorkingDemo(crnProtocol.getLaneNo(), crnProtocol.getTaskNo().intValue());
                    if (Cools.isEmpty(taskWrk) && crnProtocol.getTaskNo() != 999) {
                        log.error("堆垛机处于等待确认且任务完成状态,但未找到工作档。堆垛机号={},巷道号={},工作号={}", crn.getId(), crnProtocol.getLaneNo(), crnProtocol.getTaskNo());
                        continue;
                    }
                    Date now = new Date();
                    crnThread.setResetFlag(true);
                    if (!Cools.isEmpty(taskWrk)) {
                        if (taskWrk.getIoType() == 4 && taskWrk.getWrkSts() == 3) {
                            taskWrk.setWrkSts(11);//入库完成
                            taskWrk.setStatus(TaskStatusType.RECEIVE.id);//接收
                            if (Cools.isEmpty(basCrnp.getHpMk()) || !basCrnp.getHpMk().equals("Y")) {
                                taskWrk.setWrkSts(4);
                                taskWrk.setStatus(TaskStatusType.OVER.id);
                            }
                            //更新库位状态
                            LocMast locMast = locMastService.selectByLocNo(taskWrk.getTargetPoint());
                            locMast.setLocSts("R");//F.在库
                            if (Cools.isEmpty(basCrnp.getHpMk()) || !basCrnp.getHpMk().equals("Y")) {
                                locMast.setLocSts("F");//F.在库
                            }
                            locMast.setBarcode(taskWrk.getBarcode());//托盘码
                            locMast.setModiTime(now);
                            locMast.setModiUser(9999L);
                            locMastService.updateById(locMast);
                        } else if (taskWrk.getIoType() == 4 && taskWrk.getWrkSts() == 12) {
                            taskWrk.setWrkSts(13);//出库完成
                            taskWrk.setStatus(TaskStatusType.RECEIVE.id);//接收
                            //更新库位状态
                            LocMast locMast = locMastService.selectByLocNo(taskWrk.getStartPoint());
                            locMast.setLocSts("S");//O.空库位
                            locMast.setBarcode(taskWrk.getBarcode());//托盘码
                            locMast.setModiTime(now);
                            locMast.setModiUser(9999L);
                            locMastService.updateById(locMast);
                        }
                        taskWrk.setModiTime(now);
                        taskWrk.setCompleteTime(now);
                        taskWrkService.updateById(taskWrk);
                    }
                }
            } catch (Exception e){
                log.error("堆垛机执行对工作档的完成操作失败 ===>> [id:{}] [error:{}]", crnSlave.getId(), e.getMessage());
            }
        }
    }
}