#
tqs
2023-02-01 3c4373138377314b4a67528b24b107e18b11326e
#
5个文件已修改
1个文件已添加
148 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/MainProcess.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/enums/IoModeType.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SiemensDevpThread.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/WrkMastMapper.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -116,4 +116,7 @@
    List<WrkMast> selectWrkStsAndIoType(@Param("sour")Integer sour);
    List<WrkMast> selectWrkStsAndIoType0(@Param("sour")Integer sour);
    WrkMast selectWorkingPakin(@Param("sourceStaNo")Integer sourceStaNo);
    WrkMast selectWorkingPakout(@Param("sourceStaNo")Integer sourceStaNo);
}
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -3863,4 +3863,63 @@
        }
    }
    /**
     * 入出库模式切换函数
     */
    public synchronized void ioConvert() {
        try {
            // 根据输送线plc遍历
            for (DevpSlave devp : slaveProperties.getDevp()) {
                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
                for (DevpSlave.Sta inSta : devp.getInSta()) {
                    Integer sourceStaNo = inSta.getStaNo()==103 ? 104 : 204;
                    WrkMast pakout = wrkMastMapper.selectWorkingPakout(sourceStaNo);
                    switch (inSta.getStaNo()) {
                        case 103://1F
                            if (pakout != null) {
                                if (devpThread.ioModeOf1F != IoModeType.PAKOUT_MODE) {
                                    // 出库切换中
//                                    devpThread.ioModeOf1F = IoModeType.PAKOUT_BOOTING;
//                                    WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo());
//                                    if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
//                                            && !devpThread.getStation().get(inSta.getStaNo()+1).isLoading()
//                                            && devpThread.getStation().get(inSta.getStaNo()+1).getWorkNo()==0) {
//                                        // 出库模式
                                        devpThread.ioModeOf1F = IoModeType.PAKOUT_MODE;
//                                    }
                                }
                            } else {
                                // 入库模式
                                devpThread.ioModeOf1F = IoModeType.PAKIN_MODE;
                            }
                            break;
                        case 203://2F
                            if (pakout != null) {
                                if (devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
                                    // 出库切换中
//                                    devpThread.ioModeOf2F = IoModeType.PAKOUT_BOOTING;
//                                    WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo());
//                                    if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
//                                            && !devpThread.getStation().get(inSta.getStaNo()-1).isLoading()
//                                            && devpThread.getStation().get(inSta.getStaNo()-1).getWorkNo()==0) {
//                                        // 出库模式
                                        devpThread.ioModeOf2F = IoModeType.PAKOUT_MODE;
//                                    }
                                }
                            } else {
                                // 入库模式
                                devpThread.ioModeOf2F = IoModeType.PAKIN_MODE;
                            }
                            break;
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
src/main/java/com/zy/core/MainProcess.java
@@ -22,6 +22,8 @@
    private MainServiceImpl mainService;
    // 所属线程
    private Thread thread;
    // 频率
    private int i = 0;
    /**
     * =====>>  开始工作
@@ -75,6 +77,13 @@
                    // 穿梭车 ===>> 小车电量检测充电
                    mainService.loopSteCharge();
                    // 其他  ===>> 入出库模式切换
                    i++;
                    if (i > 1) {
                        mainService.ioConvert();
                        i = 0;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
src/main/java/com/zy/core/enums/IoModeType.java
New file
@@ -0,0 +1,32 @@
package com.zy.core.enums;
/**
 * 入出库模式枚举
 */
public enum IoModeType {
    NONE((short) 0, "未知"),
    PAKIN_BOOTING((short) 1, "入库启动中"),
    PAKIN_MODE((short) 2, "入库模式"),
    PAKOUT_BOOTING((short) 3, "出库启动中"),
    PAKOUT_MODE((short) 4, "出库模式"),
    ;
    public Short id;
    public String desc;
    IoModeType(Short id, String desc) {
        this.id = id;
        this.desc = desc;
    }
    public static IoModeType get(Short id) {
        for (IoModeType type : IoModeType.values()) {
            if (id.equals(type.id)) {
                return type;
            }
        }
        return IoModeType.NONE;
    }
}
src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -15,6 +15,7 @@
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.OutputQueue;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.IoModeType;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.DevpSlave;
import com.zy.core.model.Task;
@@ -57,6 +58,17 @@
    public SiemensDevpThread(DevpSlave slave) {
        this.slave = slave;
    }
    /**
     * 入出库模式
     * 0:未知
     * 1:入库启动中
     * 2.入库模式
     * 3.出库启动中 (不能生成入库工作档)
     * 4.出库模式
     */
    public IoModeType ioModeOf1F = IoModeType.NONE;
    public IoModeType ioModeOf2F = IoModeType.NONE;
    @Override
    @SuppressWarnings("InfiniteLoopStatement")
@@ -114,6 +126,8 @@
     * 读取状态 ====> 整块plc
     */
    private void read() throws InterruptedException {
        // 更新入出库模式
        updateIoMode();
        OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) 50);
        if (result.IsSuccess) {
            for (int i = 0; i < 25; i++) {
@@ -238,6 +252,22 @@
        }
    }
    // 更新入出库模式
    private void updateIoMode() throws InterruptedException {
        if (this.ioModeOf1F != IoModeType.NONE) {
            if (!siemensS7Net.Write("DB100.180", this.ioModeOf1F.id).IsSuccess) {
                OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线103入出库模式失败。输送线plc编号={1}", slave.getId()));
                News.error("写入输送线103入出库模式失败。输送线plc编号={}", slave.getId());
            }
        }
        if (this.ioModeOf2F != IoModeType.NONE) {
            if (!siemensS7Net.Write("DB100.182", this.ioModeOf2F.id).IsSuccess) {
                OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线203入出库模式失败。输送线plc编号={1}", slave.getId()));
                News.error("写入输送线203入出库模式失败。输送线plc编号={}", slave.getId());
            }
        }
    }
    /**
     * 心跳
     */
src/main/resources/mapper/WrkMastMapper.xml
@@ -209,4 +209,19 @@
        </if>
    </select>
    <!--                                       入出库模式相关                                      -->
    <select id="selectWorkingPakin" resultMap="BaseResultMap">
        select top 1 * from dbo.asr_wrk_mast where wrk_sts in (2,3,4) and io_type != 11 and source_sta_no = #{sourceStaNo} order by io_time,wrk_no
    </select>
    <select id="selectWorkingPakout" resultMap="BaseResultMap">
        select top 1 *
        from dbo.asr_wrk_mast
        where wrk_sts > 10
        and io_type > 100 and io_type != 11
        and source_sta_no = #{sourceStaNo}
        order by io_time,wrk_no
    </select>
</mapper>