#
Junjie
2025-06-09 84dc7fa60ba6c5c412f194bfe22c14e3eceebde4
#
8个文件已修改
89 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/WrkMastService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/utils/Utils.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/protocol/CrnProtocol.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SiemensCrnThread.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/WrkMastMapper.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -109,5 +109,9 @@
    WrkMast selectPakoutEmpty(@Param("staNo")Integer outSite);
    List<WrkMast> selectLaneWrkMastIn();//查询入库任务
    List<WrkMast> selectLaneWrkMastOut();//查询出库任务
}
src/main/java/com/zy/asrs/service/WrkMastService.java
@@ -15,4 +15,6 @@
    int getOutToStn182(Integer devpNo);
    List<WrkMast> selectLaneWrkMast(Integer lane, Boolean pakIn);//查询指定巷道任务
}
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -87,6 +87,8 @@
    private BasErrLogService basErrLogService;
    @Autowired
    private BasCrnErrorMapper basCrnErrorMapper;
    @Autowired
    private WrkMastService wrkMastService;
    @Value("${wms.url}")
    private String wmsUrl;
@@ -722,6 +724,17 @@
                continue;
            }
            if (crnProtocol.getCrnNo() == 1) {
                //判断堆垛机和当前任务是否处于一个巷道
                if (Utils.getLaneByLocNo(wrkMast.getLocNo()) != crnProtocol.getCrnLane()) {
                    //判断堆垛机所在巷道是否存在其他任务,如存在则优先执行
                    List<WrkMast> currentWrkMasts = wrkMastService.selectLaneWrkMast(crnProtocol.getCrnLane(), false);
                    if (!currentWrkMasts.isEmpty()) {
                        continue;//当前堆垛机所在巷道存在任务
                    }
                }
            }
            // 双深库位且浅库位有货,则需先对浅库位进行库位移转
            if (Utils.isDeepLoc(slaveProperties, wrkMast.getLocNo())) {
                News.warnNoLog(""+mark+" - 1"+" - 8"+" - 双深库位且浅库位有货,则需先对浅库位进行库位移转 : 开始执行 任务号={}",wrkMast.getWrkNo());
@@ -875,6 +888,17 @@
                        break;
                    }
                    if (crnProtocol.getCrnNo() == 1) {
                        //判断堆垛机和当前任务是否处于一个巷道
                        if (Utils.getLaneByLocNo(wrkMast.getLocNo()) != crnProtocol.getCrnLane()) {
                            //判断堆垛机所在巷道是否存在其他任务,如存在则优先执行
                            List<WrkMast> currentWrkMasts = wrkMastService.selectLaneWrkMast(crnProtocol.getCrnLane(), false);
                            if (!currentWrkMasts.isEmpty()) {
                                continue;//当前堆垛机所在巷道存在任务
                            }
                        }
                    }
                    // 双深库位且浅库位有货,则需先对浅库位进行库位移转
                    if (Utils.isDeepLoc(slaveProperties, wrkMast.getSourceLocNo())) {
                        News.warnNoLog(""+mark+" - 2"+" - 6"+" - 双深库位且浅库位有货,则需先对浅库位进行库位移转 : 开始执行 任务号={}",wrkMast.getWrkNo());
src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
@@ -5,8 +5,10 @@
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.mapper.WrkMastMapper;
import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.utils.Utils;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service("wrkMastService")
@@ -31,4 +33,27 @@
    public int getOutToStn182(Integer devpNo) {
        return selectCount(new EntityWrapper<WrkMast>().eq("sta_no", devpNo).in("wrk_sts",11,12));
    }
    @Override
    public List<WrkMast> selectLaneWrkMast(Integer lane, Boolean pakIn) {
        List<WrkMast> list = new ArrayList<>();
        List<WrkMast> wrkMasts = null;
        if (pakIn) {
            wrkMasts = this.baseMapper.selectLaneWrkMastIn();
        }else {
            wrkMasts = this.baseMapper.selectLaneWrkMastOut();
        }
        if (wrkMasts == null) {
            return list;
        }
        for (WrkMast wrkMast : wrkMasts) {
            if (Utils.getLaneByLocNo(wrkMast.getIoType() > 100 ? wrkMast.getSourceLocNo() : wrkMast.getLocNo()) == lane) {
                list.add(wrkMast);
            }
        }
        return list;
    }
}
src/main/java/com/zy/asrs/utils/Utils.java
@@ -164,6 +164,24 @@
    }
    /**
     * 通过库位号获取所在巷道
     */
    public static int getLaneByLocNo(String locNo) {
        int row = Utils.getRow(locNo);
        switch (row) {
            case 1:
            case 2:
            case 3:
                return 1;
            case 4:
            case 5:
            case 6:
                return 2;
        }
        return 0;
    }
    public static void main(String[] args) {
        SlaveProperties slaveProperties = new SlaveProperties();
        slaveProperties.setDoubleDeep(true);
src/main/java/com/zy/core/model/protocol/CrnProtocol.java
@@ -187,6 +187,11 @@
     */
    public Float yDuration;
    /**
     * 堆垛机所在巷道
     */
    private Integer crnLane = 1;
    public void setMode(Short mode) {
        this.mode = mode;
        this.modeType = CrnModeType.get(mode);
src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -181,6 +181,9 @@
                crnProtocol.setyDistance(siemensNet.getByteTransform().TransInt16(result.Content, 44));
                crnProtocol.setxDuration(siemensNet.getByteTransform().TransInt16(result.Content, 48));
                crnProtocol.setyDuration(siemensNet.getByteTransform().TransInt16(result.Content, 52));
                if (slave.getId() == 1) {
                    crnProtocol.setCrnLane((int) siemensNet.getByteTransform().TransInt16(result.Content, 56));
                }
                OutputQueue.CRN.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId()));
src/main/resources/mapper/WrkMastMapper.xml
@@ -189,4 +189,12 @@
    <select id="selectPakoutEmpty" resultMap="BaseResultMap">
        select top 1 * from dbo.asr_wrk_mast where  io_type = 110 and sta_no = #{staNo} order by io_time,wrk_no
    </select>
    <select id="selectLaneWrkMastIn" resultMap="BaseResultMap">
        select * from dbo.asr_wrk_mast where wrk_sts=2 and (io_type=1 or io_type=10 or io_type=53 or io_type=54 or io_type=57) order by io_pri desc,io_time,wrk_no ASC
    </select>
    <select id="selectLaneWrkMastOut" resultMap="BaseResultMap">
        select * from dbo.asr_wrk_mast where wrk_sts in (11,12,13,14) and io_type>100 order by io_pri desc,io_time,wrk_no asc
    </select>
</mapper>