自动化立体仓库 - WMS系统
#
lsh
2024-05-20 1053f15fecff14e486b734d83426fe6f26f9b7cf
#
3个文件已修改
1个文件已添加
245 ■■■■ 已修改文件
src/main/java/com/zy/asrs/task/BareBoardScheduler.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/properties/SlaveWmsParameterProperties.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/BareBoardScheduler.java
@@ -6,6 +6,7 @@
import com.zy.asrs.service.*;
import com.zy.asrs.task.handler.BareBoardHandler;
import com.zy.asrs.task.handler.WorkMastHandler;
import com.zy.common.properties.SlaveWmsParameterProperties;
import com.zy.system.entity.Config;
import com.zy.system.service.ConfigService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -34,49 +35,66 @@
    private RgvOneSignService rgvOneSignService;
    @Autowired
    private WrkMastStaService wrkMastStaService;
    @Autowired
    private SlaveWmsParameterProperties slaveWmsParameterProperties;
//    @Scheduled(cron = "0/3 * * * * ? ")
    private void execute(){//自动调空板出库 2楼码垛位置
        Config config = configService.selectOne(new EntityWrapper<Config>().eq("code","bareBoard"));
        if (!Cools.isEmpty(config) && !Cools.isEmpty(config.getValue()) && config.getValue().equals("Y")){
            BasDevp basDevp = basDevpService.selectById(213);
            if (!Cools.isEmpty(basDevp) && basDevp.getWrkNo()==0 && basDevp.getAutoing().equals("Y") && basDevp.getLoading().equals("N")){
                bareBoardHandler.start(213);
            }
        }
    }
//    private void execute(){//自动调空板出库 2楼码垛位置
//        if (slaveWmsParameterProperties.isAutomaticFillingBoardStaNosBoolean()){
//            Config config = configService.selectOne(new EntityWrapper<Config>().eq("code","bareBoard"));
//            if (!Cools.isEmpty(config) && !Cools.isEmpty(config.getValue()) && config.getValue().equals("Y")){
//                BasDevp basDevp = basDevpService.selectById(213);
//                if (!Cools.isEmpty(basDevp) && basDevp.getWrkNo()==0 && basDevp.getAutoing().equals("Y") && basDevp.getLoading().equals("N")){
//                    bareBoardHandler.start(213);
//                }
//            }
//        }
//    }
//    @Scheduled(cron = "0/3 * * * * ? ")
    private void executeOne(){//自动调空板出库 1楼码垛位置
        Config config = configService.selectOne(new EntityWrapper<Config>().eq("code","bareBoard"));
        if (!Cools.isEmpty(config) && !Cools.isEmpty(config.getValue()) && config.getValue().equals("Y")){
            boolean sign = true;
            WrkMastSta wrkMastSta = wrkMastStaService.selectOne(new EntityWrapper<WrkMastSta>()
                    .eq("type", 2).eq("wrk_sts", 0).eq("wrk_type", 2));
            WrkMastSta wrkMastSta2 = wrkMastStaService.selectOne(new EntityWrapper<WrkMastSta>()
                    .eq("type", 2).eq("wrk_sts", 0).eq("wrk_type", 1));
            if (Cools.isEmpty(wrkMastSta) || !Cools.isEmpty(wrkMastSta2)){
                sign=false;
            }
            RgvOneSign rgvOneSign = rgvOneSignService.selectOne(new EntityWrapper<RgvOneSign>().eq("rgv_one_type","oneSign"));
            if (rgvOneSign.getRgvOneSign()!=1 || !sign){
                sign = false;
            }else {
                List<BasRgv> basRgvs = basRgvService.selectList(new EntityWrapper<BasRgv>());
                for (BasRgv basRgv : basRgvs){
                    if (basRgv.getLoaded2()!=0 && basRgv.getRgvSts()==3){
                        sign = false;
                        break;
                    }
//    private void executeOne() {//自动调空板出库 1楼码垛位置
//        if (slaveWmsParameterProperties.isAutomaticFillingBoardStaNosBoolean()){
//            Config config = configService.selectOne(new EntityWrapper<Config>().eq("code","bareBoard"));
//            if (!Cools.isEmpty(config) && !Cools.isEmpty(config.getValue()) && config.getValue().equals("Y")){
//                boolean sign = true;
//                WrkMastSta wrkMastSta = wrkMastStaService.selectOne(new EntityWrapper<WrkMastSta>()
//                        .eq("type", 2).eq("wrk_sts", 0).eq("wrk_type", 2));
//                WrkMastSta wrkMastSta2 = wrkMastStaService.selectOne(new EntityWrapper<WrkMastSta>()
//                        .eq("type", 2).eq("wrk_sts", 0).eq("wrk_type", 1));
//                if (Cools.isEmpty(wrkMastSta) || !Cools.isEmpty(wrkMastSta2)){
//                    sign=false;
//                }
//                RgvOneSign rgvOneSign = rgvOneSignService.selectOne(new EntityWrapper<RgvOneSign>().eq("rgv_one_type","oneSign"));
//                if (rgvOneSign.getRgvOneSign()!=1 || !sign){
//                    sign = false;
//                }else {
//                    List<BasRgv> basRgvs = basRgvService.selectList(new EntityWrapper<BasRgv>());
//                    for (BasRgv basRgv : basRgvs){
//                        if (basRgv.getLoaded2()!=0 && basRgv.getRgvSts()==3){
//                            sign = false;
//                            break;
//                        }
//                    }
//                }
//
//                if (sign){
//                    bareBoardHandler.start(122);
//                }
////            }
//            }
//        }
//    }
    @Scheduled(cron = "0/3 * * * * ? ")
    private void execute(){//自动调空板出库 煜星二楼小料箱  172
        if (slaveWmsParameterProperties.isAutomaticFillingBoardStaNosBoolean()){
            Config config = configService.selectOne(new EntityWrapper<Config>().eq("code","bareBoard172"));
            if (!Cools.isEmpty(config) && !Cools.isEmpty(config.getValue()) && config.getValue().equals("Y")){
                int loadIngCount = basDevpService.selectCount(new EntityWrapper<BasDevp>().ge("dev_no", 160).le("dev_no", 172).eq("loading", "Y"));
                if (loadIngCount<=10){
                    bareBoardHandler.startYx(172);
                }
            }
            if (sign){
                bareBoardHandler.start(122);
            }
//            BasDevp basDevp = basDevpService.selectById(213);
//            if (!Cools.isEmpty(basDevp) && basDevp.getWrkNo()==0 && basDevp.getAutoing().equals("Y") && basDevp.getLoading().equals("N")){
//            }
        }
    }
src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java
@@ -8,12 +8,11 @@
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.entity.StaDesc;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.service.BasCrnpService;
import com.zy.asrs.service.LocMastService;
import com.zy.asrs.service.StaDescService;
import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.entity.param.EmptyPlateOutParam;
import com.zy.asrs.service.*;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.utils.Utils;
import com.zy.common.model.enums.WorkNoType;
import com.zy.common.service.CommonService;
import lombok.extern.slf4j.Slf4j;
@@ -44,8 +43,10 @@
    private StaDescService staDescService;
    @Autowired
    private BasCrnpService basCrnpService;
    @Autowired
    private WorkService workService;
    public ReturnT<String> start(Integer staNo) {
    public ReturnT<String>  start(Integer staNo) {
        try {
            if (!Cools.isEmpty(wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 110).eq("sta_no", staNo)))){
                return null;
@@ -143,4 +144,106 @@
        }
        return SUCCESS;
    }
    public ReturnT<String>  startYx(Integer staNo) {
        try {
//            if (!Cools.isEmpty(wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 110).eq("sta_no", staNo)))){
//                return null;
//            }
            int wrkCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 110).eq("sta_no", staNo));
            if (wrkCount>10){
                return null;
            }
            ArrayList<Integer> crns =new ArrayList<>();
            crns.add(1);
            crns.add(2);
            boolean sign = true;
            for (Integer crnNo : crns){
                List<String> locNoList = new ArrayList<>();
                BasCrnp basCrnp = basCrnpService.selectById(crnNo);
                if (basCrnp.getCrnSts()!=3 || !basCrnp.getOutEnable().equals("Y")){
                    continue;
                }
                sign = true;
                // 获取库位
                LocMast locMastS = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts","D").eq("crn_no",crnNo));
                if (Cools.isEmpty(locMastS)) {
//                    throw new CoolException("库中无空板!!!");
                    log.error(crnNo+"号堆垛机无空板!");
                    sign=false;
                }
                if (sign && !locMastS.getLocSts().equals("D")){
//                    throw new CoolException("所选库位存在状态不为D的库位,库位号:"+locMast.getLocNo()+" 、当前状态:"+locMast.getLocSts()+"-"+locMast.getLocSts$());
                    log.error(crnNo+"号堆垛机"+"所选库位存在状态不为D的库位,库位号:"+locMastS.getLocNo()+" 、当前状态:"+locMastS.getLocSts()+"-"+locMastS.getLocSts$());
                    sign=false;
                }
                locNoList.add(locMastS.getLocNo());
                //小料箱伴生出库
                if (Utils.getRow(locMastS.getLocNo())<=8){
                    String locNoOther = staNoOther(locMastS.getLocNo());
                    LocMast locMastOther = locMastService.selectById(locNoOther);
                    if (locMastOther.getLocSts().equals("D")){
                        locNoList.add(locNoOther);
                    }
                }
                if (sign) {
                    EmptyPlateOutParam param = new EmptyPlateOutParam();
                    param.setOutSite(172);
                    param.setLocNos(locNoList);
                    try{
                        workService.emptyPlateOut(param, 9999L);
                    }catch (Exception e){
                        log.error("二楼小料箱自动补空板失败!!异常原因:"+e);
                    }
                    return SUCCESS;
                }
            }
            if (!sign){
                log.error("未查到可出库的空板!!!");
                return null;
            }
        }catch (Exception e){
            log.error("异常!!!"+e);
            return null;
        }
        return SUCCESS;
    }
    public String staNoOther(String locNo){
        int row = Utils.getRow(locNo);
        if (row%4==0 || row%4==1){
            return getDeepLoc2(locNo,row);
        }else {
            return getDeepLoc(locNo,row);
        }
    }
    /**
     * 获取 深库位对应的浅库位号
     */
    public static String getDeepLoc2(String shallowLoc,int row) {
        if (row == 1 || row == 5) {
            return Utils.zerofill(String.valueOf(row+1), 2) + shallowLoc.substring(2);
        } else if (row == 4 || row == 8) {
            return Utils.zerofill(String.valueOf(row-1), 2) + shallowLoc.substring(2);
        }else {
            return null;
        }
    }
    /**
     * 获取 浅库位对应的深库位号
     */
    public static String getDeepLoc(String shallowLoc,int row) {
        if (row == 2 || row == 6) {
            return Utils.zerofill(String.valueOf(row-1), 2) + shallowLoc.substring(2);
        } else if (row == 3 || row == 7) {
            return Utils.zerofill(String.valueOf(row+1), 2) + shallowLoc.substring(2);
        }else {
            return shallowLoc;
        }
    }
}
src/main/java/com/zy/common/properties/SlaveWmsParameterProperties.java
New file
@@ -0,0 +1,27 @@
package com.zy.common.properties;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import java.util.ArrayList;
import java.util.List;
/**
 * Created by vincent on 2023/10/25
 */
@Data
@Configuration
@ConfigurationProperties(prefix = "wms-parameter")
public class SlaveWmsParameterProperties {
    // 自动补空板功能开关
    private boolean automaticFillingBoardStaNosBoolean;
    // 自动移库功能开关
    private boolean autoLocMoveBoolean;
    // 自动移库功能开关 111
    private boolean autoLocMoveUnilateralBoolean;
    // 自动补空板站点
    private List<Integer> automaticFillingBoardStaNos = new ArrayList<>();
}
src/main/resources/application.yml
@@ -10,7 +10,7 @@
    enabled: false
  datasource:
    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
    url: jdbc:sqlserver://127.0.0.1:1433;databasename=ahyxasrs
    url: jdbc:sqlserver://10.10.10.254:1433;databasename=ahyxasrs
    username: sa
    password: sa@123
  mvc:
@@ -61,7 +61,16 @@
  doubleLocsLeft : 1,5,9,13,17,21
  # 右深库位排号
  doubleLocsRight : 4,8,12,16,20,24
# wms参数配置
wms-parameter:
  # 自动补空板功能开关
  automaticFillingBoardStaNosBoolean: true
  # 自动补空板站点
  automaticFillingBoardStaNos: 112,101
  # 自动移库功能开关
  autoLocMoveBoolean: false
  # 自动移库功能开关 穿梭
  autoLocMoveUnilateralBoolean: false
comb:
  limit: 5000