*
lsh
1 天以前 bcfe83d1795c3ba57334677ec2e18df1229f676e
*
4个文件已修改
114 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/mapper/TaskWrkMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/MainProcess.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/TaskWrkMapper.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/TaskWrkMapper.java
@@ -39,6 +39,7 @@
    TaskWrk selectCrnStaWorkingDemo(@Param("crnNo") Integer crnNo, @Param("targetPoint") String targetPoint);
    TaskWrk selectCrnNoInWorking(@Param("crnNo") Integer crnNo,@Param("workNo") Integer workNo);
    TaskWrk selectCrnNoInWorkingDemo(@Param("crnNo") Integer crnNo,@Param("workNo") Integer workNo);
//    TaskWrk selectWalkSta(@Param("crnNo") Integer crnNo,@Param("workNo") Integer workNo);
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -3177,7 +3177,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 +3186,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 +3280,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());
            }
        }
    }
}
src/main/java/com/zy/core/MainProcess.java
@@ -115,10 +115,12 @@
                if (!SystemProperties.WCS_RUNNING_STATUS_DEMO.get()) {
                    continue;
                }
                // 入出库  ===>>  堆垛机入出库作业下发
                mainService.crnIoExecuteDemo();
                // 出库  ===>>  堆垛机出库站到出库站
                mainService.crnStnToOutStnDemo();
                // 入出库  ===>>  堆垛机入出库作业下发
                mainService.crnIoExecuteDemo();
                // 入库  ===>> 执行对工作档的完成操作
                mainService.storeFinishedDemo();
                // 任务下发
                mainService.taskStartDemo();
            } catch (Exception e) {
src/main/resources/mapper/TaskWrkMapper.xml
@@ -155,11 +155,21 @@
        order by "IO_PRI" desc,"CREATE_TIME","WRK_NO" ASC
    </select>
    <select id="selectCrnNoInWorkingDemo" resultMap="BaseResultMap">
        select top 1 * from "SOURCE"."wcs_task_wrk"
        where 1=1
          and "IO_TYPE"=4
          and ("WRK_STS"=3 or "WRK_STS"=12)
          and "CRN_NO"=#{crnNo}
          and "WRK_NO"=#{workNo}
        order by "IO_PRI" desc,"CREATE_TIME","WRK_NO" ASC
    </select>
    <select id="selectToBeHistoryData" resultMap="BaseResultMap">
        select * from "SOURCE"."wcs_task_wrk"
        where 1=1
        and (("WRK_STS"=14 and "STATUS"=5) or "STATUS"=7 or "STATUS"=4
                 or ("WRK_STS"=4 and "STATUS"=5))
                 or ("WRK_STS"=4 and "STATUS"=5) or ("IO_TYPE"=4 and "WRK_STS"=4 and "STATUS"=5))
        order by "IO_PRI" desc,"CREATE_TIME","WRK_NO" ASC
    </select>