src/main/java/com/zy/asrs/service/BasCrnpService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/BasCrnpServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/common/model/Shelves.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/common/service/CommonService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/service/BasCrnpService.java
@@ -7,4 +7,6 @@ BasCrnp checkSiteStatus(Integer crnId); boolean checkSiteError(Integer crnNo, boolean pakin); } src/main/java/com/zy/asrs/service/impl/BasCrnpServiceImpl.java
@@ -6,8 +6,10 @@ import com.zy.asrs.entity.BasCrnp; import com.zy.asrs.mapper.BasCrnpMapper; import com.zy.asrs.service.BasCrnpService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @Slf4j @Service("basCrnpService") public class BasCrnpServiceImpl extends ServiceImpl<BasCrnpMapper, BasCrnp> implements BasCrnpService { @@ -25,4 +27,37 @@ } return crnp; } @Override public boolean checkSiteError(Integer crnNo, boolean pakin) { BasCrnp crnp = this.selectById(crnNo); if (Cools.isEmpty(crnp)) { log.error("{}号堆垛机不存在", crnNo); return false; } if (pakin) { if ("N".equals(crnp.getInEnable())) { log.error("{}号堆垛机不可入", crnNo); return false; } } else { if ("N".equals(crnp.getOutEnable())) { log.error("{}号堆垛机不可出", crnNo); return false; } } if (crnp.getCrnSts() != null) { if (crnp.getCrnSts() == 10) { log.error("{}号堆垛机状态为10.错误", crnNo); return false; } } if (crnp.getCrnErr() != null) { if (crnp.getCrnErr() != 0) { log.error("{}号堆垛机异常,异常码{}", crnNo, crnp.getCrnErr()); return false; } } return true; } } src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -882,7 +882,7 @@ } // 站点条件判断 if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isEmptyMk() && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() == 9999) && staProtocol.isPakMk()) { && staProtocol.isEmptyMk() && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() == 9999 || staProtocol.getWorkNo() == 9990) && staProtocol.isPakMk()) { // 检索库位 LocTypeDto locTypeDto = new LocTypeDto(staProtocol); StartupDto startupDto = commonService.getLocNo(1, 10, emptyInSta.getStaNo(), null, locTypeDto, 0); src/main/java/com/zy/common/model/Shelves.java
@@ -1,5 +1,8 @@ package com.zy.common.model; import com.alibaba.fastjson.JSON; import com.core.exception.CoolException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -11,13 +14,13 @@ public class Shelves { // 货架排数量 private final int size; public final int size; // 货架组数量 private final int group; public final int group; // 偏移量[default:0] private final int offset; public final int offset; // 货架实例节点集合 public List<List<Integer>> nodes; @@ -97,6 +100,14 @@ return -1; } public Integer get(Integer curRow) { for (List<Integer> node : nodes){ if (node.contains(curRow)) { return nodes.indexOf(node) + 1; } } throw new CoolException("货排检索系统报错, node:" + JSON.toJSONString(nodes) + ", curRow:" + curRow); } public static void main(String[] args) throws InterruptedException { Shelves shelves = new Shelves(8,2); src/main/java/com/zy/common/service/CommonService.java
@@ -113,7 +113,6 @@ default: throw new CoolException("库位排号分配错误, 源站号:" + sourceStaNo); } startupDto.setWorkNo(workNo); RowLastno rowLastno = rowLastnoService.selectById(whsType); if (Cools.isEmpty(rowLastno)) { throw new CoolException("数据异常,请联系管理员"); @@ -141,10 +140,12 @@ // 检测目标库位是否为空库位 LocMast shallowLoc = locMastService.selectById(shallowLocNo); if (shallowLoc != null && shallowLoc.getLocSts().equals("O")) { if (basCrnpService.checkSiteError(shallowLoc.getCrnNo(), true)) { if (VersionUtils.locMoveCheckLocType(shallowLoc, locTypeDto)) { locMast = shallowLoc; crnNo = locMast.getCrnNo(); break; } } } } @@ -162,9 +163,12 @@ // 检测目标库位是否为空库位 LocMast shallowLoc = locMastService.selectById(shallowLocNo); if (shallowLoc != null && shallowLoc.getLocSts().equals("O")) { if (basCrnpService.checkSiteError(shallowLoc.getCrnNo(), true)) { locMast = shallowLoc; crnNo = locMast.getCrnNo(); break; } } } } @@ -172,55 +176,56 @@ // 如果没有相近物料,则按规则轮询货架 if (null == locMast) { Shelves shelves = new Shelves(rowCount, crn_qty); // 1-4排 if (whsType == 1) { // 获取目标站所在货架排号 Shelves shelves = new Shelves(rowCount, crn_qty); for (int i = 0; i < shelves.group; i ++) { curRow = shelves.start(curRow); if (curRow < 0) { throw new CoolException("检索库位失败,请联系管理员"); } for (List<Integer> node : shelves.nodes){ if (node.contains(curRow)) { crnNo = shelves.nodes.indexOf(node) + 1; Integer crnNo1 = shelves.get(curRow); if (basCrnpService.checkSiteError(crnNo1, true)) { crnNo = crnNo1; break; } } // 5-8排 } else if (whsType == 2) { // 获取目标站所在货架排号 Shelves shelves = new Shelves(rowCount, crn_qty); curRow = shelves.start(curRow - 4); if (curRow < 0) { throw new CoolException("检索库位失败,请联系管理员"); } for (List<Integer> node : shelves.nodes){ if (node.contains(curRow)) { crnNo = shelves.nodes.indexOf(node) + 1; break; } } // 偏移量补偿 curRow = curRow + 4; crnNo = crnNo + 1; // 126空板入 1-8排 } else { // 获取目标站所在货架排号 Shelves shelves = new Shelves(rowCount, crn_qty); curRow = curRow - 4; for (int i = 0; i < shelves.group; i ++) { curRow = shelves.start(curRow); if (curRow < 0) { throw new CoolException("检索库位失败,请联系管理员"); } for (List<Integer> node : shelves.nodes){ if (node.contains(curRow)) { crnNo = shelves.nodes.indexOf(node) + 1; Integer crnNo1 = shelves.get(curRow); if (basCrnpService.checkSiteError(crnNo1 + 1, true)) { // 偏移量补偿 curRow = curRow + 4; crnNo = crnNo1 + 1; break; } } // 126空板入 1-8排 } else { for (int i = 0; i < shelves.group; i ++) { curRow = shelves.start(curRow); if (curRow < 0) { throw new CoolException("检索库位失败,请联系管理员"); } Integer crnNo1 = shelves.get(curRow); if (basCrnpService.checkSiteError(crnNo1, true)) { crnNo = crnNo1; break; } } } } basCrnpService.checkSiteStatus(crnNo); if (crnNo == 0) { throw new CoolException("没有可用的堆垛机"); } // 获取目标站 Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() .eq("type_no", staDescId) @@ -228,11 +233,13 @@ .eq("crn_no", crnNo); StaDesc staDesc = staDescService.selectOne(wrapper); if (Cools.isEmpty(staDesc)) { log.error("type_no={},stn_no={},crn_no={}", staDescId, sourceStaNo, crnNo); throw new CoolException("入库路径不存在"); } BasDevp staNo = basDevpService.selectById(staDesc.getCrnStn()); int inQty = staNo.getInQty()==null?0:staNo.getInQty(); if (staNo.getAutoing().equals("Y") && inQty<2) { if (!staNo.getAutoing().equals("Y")) { throw new CoolException("目标站"+staDesc.getCrnStn()+"不可用"); } // 更新库位排号 rowLastno.setCurrentRow(curRow); rowLastnoService.updateById(rowLastno); @@ -262,13 +269,11 @@ String locNo = locMast.getLocNo(); // 返回dto startupDto.setWorkNo(workNo); startupDto.setCrnNo(crnNo); startupDto.setSourceStaNo(sourceStaNo); startupDto.setStaNo(staNo.getDevNo()); startupDto.setLocNo(locNo); } else { throw new CoolException("目标站"+staDesc.getCrnStn()+"不可用"); } return startupDto; }