LSH
2023-07-25 cdcda32802aabe65fc6d20fb06907998b3bb9a61
#码垛位自动补充空板:驱动拆盘机输出托盘实装
7个文件已修改
171 ■■■■ 已修改文件
src/main/java/com/zy/asrs/entity/WaitPakin.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/WrkDetl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/WrkMast.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/MainProcess.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/WrkMastMapper.xml 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/WaitPakin.java
@@ -61,7 +61,8 @@
    /**
     * 仓库号
     */
     * 徐工汉云上饶江铜:木箱类型
     * */
    @ApiModelProperty(value= "品项数")
    private String brand;
src/main/java/com/zy/asrs/entity/WrkDetl.java
@@ -224,6 +224,7 @@
    /**
     * 要求检验 1: 是  0: 否
     * 徐工汉云拆垛标记  0: 未拆(默认)  1: 已拆
     */
    @ApiModelProperty(value= "要求检验 1: 是  0: 否  ")
    private Integer inspect;
src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -74,6 +74,9 @@
    @TableField("rgv_no")
    private Integer rgvNo;
    /**
     * 徐工汉云拆垛标记  0: 未拆  1: 已拆  2:已处理可下一步(转历史档)
     */
    @ApiModelProperty(value= "")
    @TableField("sheet_no")
    private String sheetNo;
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -174,7 +174,10 @@
     */
    List<WrkMast> selectRgvOutWorking(@Param("rgvNo")Integer rgvNo);
    /*================================================RGV任务绑定相关 ==================================================*/
    /*..............................徐工汉云..............以下.............上饶江铜..............................*/
    /*...............................Created by Monkey D. Luffy on 2023.07.19................................*/
    /*=========================================== RGV任务绑定相关 ========================================*/
    /**
     * 获取等待绑定RGV的任务
@@ -219,5 +222,24 @@
    WrkMast selectRgvOutSteNo(@Param("rgvNo")Integer rgvNo);
    /*================================================RGV任务绑定相关 ==================================================*/
    /*=========================================== RGV任务绑定相关 ========================================*/
    /*=========================================== 自动补空板相关 ========================================*/
    /**
     * 查找是否存在出库工作中等待RGV搬运的任务
     */
    List<WrkMast> selectDischargingMachineOutputTray();
    int selectConfigCount10468N();
    // update Config  -- Y
    @Update("update sys_config set value='Y' where 1=1 and id=10468 and value = 'N'")
    int updateConfig10468Y();
    /*=========================================== 自动补空板相关 ========================================*/
    /*..............................上饶江铜..............以上.............徐工汉云..............................*/
}
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -586,6 +586,8 @@
        for (WrkMast wrkMast : wrkMasts) {
            //目标站
            Integer staNo = wrkMast.getStaNo();
            //源站
            Integer sourceStaNo = wrkMast.getSourceStaNo();
            //通过目标站搜索rgv号
            Integer rgvNo = this.searchRgvNo(staNo);
            if (rgvNo == null) {//未找到可用的rgv
@@ -3258,4 +3260,81 @@
            }
        }
    }
    /**
     * 其他  ===>> 码垛位自动补充空板:驱动拆盘机输出托盘
     */
    public synchronized void dischargingMachineOutputTray() {
        try {
            List<WrkMast> wrkMasts = wrkMastMapper.selectDischargingMachineOutputTray();
            if (Cools.isEmpty(wrkMasts) || wrkMasts.size()>3){
                return;
            }
            // 获取入库站信息
            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
            StaProtocol staProtocol = devpThread.getStation().get(213);
            if (staProtocol == null) {
                log.error("码垛位自动补充空板:驱动拆盘机输出托盘,任务下发失败,站点查询失败");
                return;
            } else {
                staProtocol = staProtocol.clone();
            }
            if (!staProtocol.isLoading()){
                log.info("码垛位自动补充空板:驱动拆盘机输出托盘,任务下发失败,站点无物,正在自动调出空板!");
                int i = wrkMastMapper.selectConfigCount10468N();
                if (i==1){
                    wrkMastMapper.updateConfig10468Y();
                }
                return;
            }else {
                int i = wrkMastMapper.selectConfigCount10468N();
                if (i==0){
                    return;
                }
            }
            // 判断是否满足入库条件
            if (staProtocol.isAutoing() && staProtocol.getWorkNo() == 0 && staProtocol.isPakMk()) {
                staProtocol.setWorkNo((short)9999);
                staProtocol.setStaNo((short)214);
                devpThread.setPakMk(staProtocol.getSiteId(), false);
                boolean result = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(2, staProtocol));
                if (!result) {
                    throw new CoolException("更新plc站点信息失败==>码垛位自动补充空板:驱动拆盘机输出托盘!");
                }
                log.info("码垛位自动补充空板:驱动拆盘机输出托盘,任务下发成功:工作号9999、目标站214!");
            }else {
                log.error("码垛位自动补充空板:驱动拆盘机输出托盘,任务下发失败,站点状态不符合!");
            }
        }catch (Exception e){
            e.printStackTrace();
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        }
    }
    /**
     * 其他  ===>> 拆盘机处空板扫码,驱动托盘向码垛位,不入库
     */
    public synchronized void scanBarcodeEmptyBoard() {
        try {
        }catch (Exception e){
            e.printStackTrace();
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        }
    }
    /**
     * 其他  ===>> 码垛完成驱动托盘下一步扫码入库
     */
    public synchronized void stackingCompletionDriveTray() {
        try {
        }catch (Exception e){
            e.printStackTrace();
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        }
    }
}
src/main/java/com/zy/core/MainProcess.java
@@ -63,18 +63,19 @@
                    // 入库  ===>> 执行对工作档的完成操作
                    mainService.storeFinished();
                    ///////////////////////RGV调度/////////////////////////////////////
                    //绑定小车方法
                    mainService.rgvBindSte();
                    // 入出库  ===>>  RGV入出库作业下发
                    mainService.rgvIoExecute();
                    // RGV入库  ===>> 根据RGV完成信号,执行对工作档的完成操作
                    mainService.rgvFinished();
                    /////////////////////////////////////RGV调度/////////////////////////////////////
//                    //绑定小车方法
//                    mainService.rgvBindSte();
//                    // 入出库  ===>>  RGV入出库作业下发
//                    mainService.rgvIoExecute();
//                    // RGV入库  ===>> 根据RGV完成信号,执行对工作档的完成操作
//                    mainService.rgvFinished();
//                    // 入出库  ===>>  RGV出库站到系统入出库站
//                    mainService.rgvDestStnToCrnStn();
//                    // 出库  ===>>  RGV出库站到系统出库站
//                    mainService.rgvOutDStnToOutStn();
                    //////////////////////////////////////////////////////////////////
                    /////////////////////////////////////RGV调度/////////////////////////////////////
                    // 异常信息记录
                    mainService.recErr();
@@ -85,19 +86,29 @@
                    // 其他  ===>> LED显示器复位,显示默认信息
                    mainService.ledReset();
                    mainService.outOfDevp();
//                    mainService.outOfDevp();
                    //空托盘自动出库
                    mainService.autoEmptyOut();
//                    //空托盘自动出库
//                    mainService.autoEmptyOut();
//                    //空托盘自动入库
//                    mainService.autoEmptyIn();
                    // 其他  ===>> 入出库模式切换
                    i++;
                    if (i > 1) {
                        mainService.ioConvert();
                        i = 0;
                    }
//                    // 其他  ===>> 入出库模式切换
//                    i++;
//                    if (i > 1) {
//                        mainService.ioConvert();
//                        i = 0;
//                    }
                    //码垛位自动补充空板:驱动拆盘机输出托盘
                    mainService.dischargingMachineOutputTray();
                    //拆盘机处空板扫码,驱动托盘向码垛位,不入库
                    mainService.scanBarcodeEmptyBoard();
                    //码垛完成驱动托盘下一步扫码入库
                    mainService.stackingCompletionDriveTray();
                } catch (Exception e) {
                    e.printStackTrace();
src/main/resources/mapper/WrkMastMapper.xml
@@ -243,7 +243,7 @@
    <select id="selectWaitBindRGV" resultMap="BaseResultMap">
        select * from dbo.asr_wrk_mast
        where 1=1
        and wrk_sts in (2,22)
        and wrk_sts in (2,14)
        and rgv_no is null
    </select>
@@ -264,7 +264,7 @@
    </select>
    <select id="selectRgvInSteNo" resultMap="BaseResultMap">
        select top 1 * from dbo.asr_wrk_mast where 1=1 and wrk_sts =12 and rgv_no=#{rgvNo}
        select top 1 * from dbo.asr_wrk_mast where 1=1 and wrk_sts =14 and rgv_no=#{rgvNo}
        <if test="rgvNo == 1">
            order by rgv_dsta_no
        </if>
@@ -284,5 +284,15 @@
    </select>
    <!-- ==============================================RGV任务绑定相关 ============================================== -->
    <!-- ==============================================自动补空板相关 ============================================== -->
    <select id="selectConfigCount10468N" resultMap="BaseResultMap">
        select * from dbo.asr_wrk_mast where 1=1 and io_type = 201
    </select>
    <select id="selectExistInEmpty" resultType="java.lang.Integer">
        SELECT COUNT(1) FROM dbo.sys_config Where 1=1 and id=10468 and value = 'N'
    </select>
    <!-- ==============================================自动补空板相关 ============================================== -->
</mapper>