自动化立体仓库 - WCS系统
#
LSH
2023-11-15 2d69236d4361213ebd98b57aca4f36b6d299754f
#
3个文件已添加
3个文件已修改
305 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/entity/WrkMastSta.java 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/utils/RouteUtils.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/MainProcess.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/WrkMastStaMapper.xml 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/WrkMastSta.java
New file
@@ -0,0 +1,169 @@
package com.zy.asrs.entity;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import com.core.common.Cools;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
@Data
@TableName("asr_wrk_mast_sta")
public class WrkMastSta implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * ID
     */
    @ApiModelProperty(value= "ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * 工作号
     */
    @ApiModelProperty(value= "工作号")
    @TableField("wrk_no")
    private Long wrkNo;
    /**
     * 工作档开始位置
     */
    @ApiModelProperty(value= "工作档开始位置")
    @TableField("wrk_start")
    private Integer wrkStart;
    /**
     * 工作档结束位置
     */
    @ApiModelProperty(value= "工作档结束位置")
    @TableField("wrk_end")
    private Integer wrkEnd;
    /**
     * 小车接货位置
     */
    @ApiModelProperty(value= "小车接货位置")
    @TableField("sta_start")
    private Integer staStart;
    /**
     * 小车放货位置
     */
    @ApiModelProperty(value= "小车放货位置")
    @TableField("sta_end")
    private Integer staEnd;
    /**
     * 添加时间
     */
    @ApiModelProperty(value= "添加时间")
    @TableField("create_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    /**
     * 修改时间
     */
    @ApiModelProperty(value= "修改时间")
    @TableField("update_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
    /**
     * 类型 0:非空  1:空板
     */
    @ApiModelProperty(value= "类型 0:非空  1:空板")
    private Integer type;
    /**
     * 工作状态 0:初始 1:等待小车取 2:等待小车放 3:完成
     */
    @ApiModelProperty(value= "工作状态 0:初始 1:等待小车取 2:等待小车放 3:完成")
    @TableField("wrk_sts")
    private Integer wrkSts;
    /**
     * 行号
     */
    @ApiModelProperty(value= "行号")
    @TableField("line_number")
    private Integer lineNumber;
    /**
     * 工作类型
     */
    @ApiModelProperty(value= "工作类型")
    @TableField("wrk_type")
    private Integer wrkType;
    /**
     * 标记时间
     */
    @ApiModelProperty(value= "标记时间")
    @TableField("bign_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date bignTime;
    public WrkMastSta() {}
    public WrkMastSta(Long wrkNo, Integer wrkStart, Integer wrkEnd, Integer staStart, Integer staEnd, Date createTime, Date updateTime, Integer type, Integer wrkSts, Integer lineNumber, Integer wrkType, Date bignTime) {
        this.wrkNo = wrkNo;
        this.wrkStart = wrkStart;
        this.wrkEnd = wrkEnd;
        this.staStart = staStart;
        this.staEnd = staEnd;
        this.createTime = createTime;
        this.updateTime = updateTime;
        this.type = type;
        this.wrkSts = wrkSts;
        this.lineNumber = lineNumber;
        this.wrkType = wrkType;
        this.bignTime = bignTime;
    }
//    WrkMastSta wrkMastSta = new WrkMastSta(
//            null,    // 工作号[非空]
//            null,    // 工作档开始位置[非空]
//            null,    // 工作档结束位置[非空]
//            null,    // 小车接货位置[非空]
//            null,    // 小车放货位置[非空]
//            null,    // 添加时间
//            null,    // 修改时间
//            null,    // 类型 0:非空  1:空板[非空]
//            null,    // 工作状态 0:初始 1:等待小车取 2:等待小车放 3:完成[非空]
//            null,    // 行号[非空]
//            null,    // 工作类型[非空]
//            null    // 标记时间
//    );
    public String getCreateTime$(){
        if (Cools.isEmpty(this.createTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
    }
    public String getUpdateTime$(){
        if (Cools.isEmpty(this.updateTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
    }
    public String getBignTime$(){
        if (Cools.isEmpty(this.bignTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.bignTime);
    }
}
src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java
New file
@@ -0,0 +1,36 @@
package com.zy.asrs.mapper;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.zy.asrs.entity.WrkMastSta;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.Date;
import java.util.List;
@Mapper
@Repository
public interface WrkMastStaMapper extends BaseMapper<WrkMastSta> {
    /*
    * 获取所有任务数量
    * */
    Integer selectAllWrkCount();
    /*
    * 获取所有可执行任务
    * */
    List<WrkMastSta> selectAllWrkMastStaList();
    /*
    * 查询指定工作号任务
    * */
    WrkMastSta selectByWrkNo(@Param("workNo") Integer workNo);
    /*
    * 查询不干涉的可执行任务
    * */
    WrkMastSta selectNoInterfere(@Param("staStarts") List<Integer> staStarts,@Param("staEnds") List<Integer> staEnds);
}
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -8,10 +8,7 @@
import com.core.common.DateUtils;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.mapper.BasCrnErrorMapper;
import com.zy.asrs.mapper.BasRgvErrMapper;
import com.zy.asrs.mapper.WaitPakinMapper;
import com.zy.asrs.mapper.WrkMastMapper;
import com.zy.asrs.mapper.*;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.Utils;
import com.zy.asrs.utils.VersionUtils;
@@ -96,6 +93,8 @@
    private BasRgvPathService basRgvPathService;
    @Autowired
    private RedisUtil redisUtil;
    @Autowired
    private WrkMastStaMapper wrkMastStaMapper;
    @Value("${wms.url}")
    private String wmsUrl;
@@ -3806,4 +3805,32 @@
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        }
    }
    /**
     *  完成小车任务
     */
    public synchronized void rgvCompleteWrkMastSta() {
    }
    /**
     * 执行小车搬运任务
     */
    public synchronized void rgvRunWrkMastSta() {
        Integer signCount = 0;
        for (RgvSlave rgvSlave:slaveProperties.getRgv()){
            if (true){//rgv可用
                signCount++;
            }
        }
        List<WrkMastSta> wrkMastStas = wrkMastStaMapper.selectAllWrkMastStaList();
        for (WrkMastSta wrkMastSta : wrkMastStas) {
            // 只有当堆垛机空闲 并且 无任务时才继续执行
            if (true) {
            }
        }
    }
}
src/main/java/com/zy/asrs/utils/RouteUtils.java
@@ -37,7 +37,7 @@
    public static List<Integer> getRoute(Integer groupStart,Integer groupEnd){
        boolean sign = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(groupStart) < TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(groupEnd);
        List<Integer> result = new ArrayList<>();
        List<Integer> groupRoute = null;
        List<Integer> groupRoute = new ArrayList<>();
        if (sign){
            groupRoute = TRACK_POSITION_POSITIVE_SEQUENCE;
        }else {
src/main/java/com/zy/core/MainProcess.java
@@ -77,7 +77,10 @@
//                    // 出库  ===>>  RGV出库站到系统出库站
//                    mainService.rgvOutDStnToOutStn();
                    //完成小车任务
                    mainService.rgvCompleteWrkMastSta();
                    //执行小车搬运任务
                    mainService.rgvRunWrkMastSta();
                    /////////////////////////////////////RGV调度/////////////////////////////////////
src/main/resources/mapper/WrkMastStaMapper.xml
New file
@@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zy.asrs.mapper.WrkMastStaMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.WrkMastSta">
        <id column="id" property="id" />
        <result column="wrk_no" property="wrkNo" />
        <result column="wrk_start" property="wrkStart" />
        <result column="wrk_end" property="wrkEnd" />
        <result column="sta_start" property="staStart" />
        <result column="sta_end" property="staEnd" />
        <result column="create_time" property="createTime" />
        <result column="update_time" property="updateTime" />
        <result column="type" property="type" />
        <result column="wrk_sts" property="wrkSts" />
        <result column="line_number" property="lineNumber" />
        <result column="wrk_type" property="wrkType" />
        <result column="bign_time" property="bignTime" />
    </resultMap>
    <select id="selectAllWrkMastStaList" resultMap="BaseResultMap">
        select * from asr_wrk_mast_sta and wrk_sts=0 order by line_number,id
    </select>
    <select id="selectByWrkNo" resultMap="BaseResultMap">
        select top 1 * from asr_wrk_mast_sta
        where 1=1
        and wrk_no = #{wrkNo}
    </select>
    <select id="selectNoInterfere" resultMap="BaseResultMap">
        select top 1 * from asr_wrk_mast_sta
        where 1=1
        and (sta_start in
        <foreach item="item" collection="staStarts" index="index" separator="," open="(" close=")">
            #{item}
        </foreach>
        or sta_start = 0
        )
        and (sta_end in
        <foreach item="item" collection="staEnds" index="index" separator="," open="(" close=")">
            #{item}
        </foreach>
        or sta_end = 0
        )
        and wrk_sts=0
        order by line_number,id
    </select>
    <select id="selectAllWrkCount" resultMap="Integer">
        select count(1) from asr_wrk_mast_sta
    </select>
</mapper>