src/main/java/com/zy/asrs/task/BareBoardScheduler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/common/properties/SlaveWmsParameterProperties.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/application.yml | ●●●●● 补丁 | 查看 | 原始文档 | 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