license.licBinary files differ
pom.xml
@@ -124,7 +124,7 @@ </dependencies> <build> <finalName>gtSxkWms</finalName> <finalName>fyxcwms</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> src/main/java/com/zy/asrs/controller/OutController.java
@@ -7,6 +7,7 @@ import com.core.common.BaseRes; import com.core.common.Cools; import com.core.common.R; import com.core.exception.CoolException; import com.zy.asrs.entity.BasDevp; import com.zy.asrs.entity.LocDetl; import com.zy.asrs.entity.LocMast; @@ -58,6 +59,286 @@ return R.ok().add(orderDetlService.selectByOrderId(orderId).stream().map(OrderDetl::getId).distinct().collect(Collectors.toList())); } @PostMapping("/out/pakout/OrderOutGetLoc/auth") @ManagerAuth public R OrderOutGetLoc(@RequestBody List<Long> ids) { if (Cools.isEmpty(ids)) { return R.parse(BaseRes.PARAM); } // 获取订单明细并处理 List<OrderDetl> orderDetls = orderDetlService.selectBatchIds(ids); Set<String> processedLocs = new HashSet<>(); // 已处理货位缓存 Set<ExistDto> processedStock = new HashSet<>(); // 已处理库存缓存 List<LocDto> result = new ArrayList<>(); for (OrderDetl detl : orderDetls) { result.addAll(processOrderDetl(detl, null, processedLocs, processedStock)); } return R.ok().add(result); } /** 处理订单出库货位分配 * @param jsonObject 请求参数(包含订单明细ID列表和出库数量) */ @PostMapping("/out/pakout/OrderOutGetLoc.number/auth") @ManagerAuth public R OrderOutGetLocNumber(@RequestBody JSONObject jsonObject) { // 参数校验 if (!jsonObject.containsKey("ids") || !jsonObject.containsKey("amount")) { return R.parse(BaseRes.PARAM); } // 提取并转换参数 List<Long> ids = jsonObject.getJSONArray("ids").toJavaList(Long.class); Double amount = jsonObject.getDouble("amount"); // 获取订单明细并处理 List<OrderDetl> orderDetls = orderDetlService.selectBatchIds(ids); Set<String> processedLocs = new HashSet<>(); // 已处理货位缓存 Set<ExistDto> processedStock = new HashSet<>(); // 已处理库存缓存 List<LocDto> result = new ArrayList<>(); for (OrderDetl detl : orderDetls) { result.addAll(processOrderDetl(detl, amount, processedLocs, processedStock)); } return R.ok().add(result); } /** * 处理单个订单明细的货位分配 * @param orderDetl 订单明细 * @param requiredAmount 需求出库量 * @param processedLocs 已处理的货位集合(用于去重) * @param processedStock 已处理的库存记录集合(用于去重) */ private List<LocDto> processOrderDetl(OrderDetl orderDetl, Double requiredAmount, Set<String> processedLocs, Set<ExistDto> processedStock) { List<LocDto> result = new ArrayList<>(); double remaining = Optional.ofNullable(orderDetl.getAnfme() - orderDetl.getWorkQty()).orElse(0.0D); // 调整校验逻辑:当requiredAmount不为null时才校验 if (requiredAmount != null) { if (requiredAmount <= 0) { throw new CoolException("出库数量必须大于0"); } if (requiredAmount > remaining) { throw new CoolException("订单"+orderDetl.getOrderNo()+"请求数量超过可出库数量,剩余可出:" + remaining); } // 当指定数量时,使用指定数量覆盖剩余量 remaining = Math.min(requiredAmount, remaining); } // 获取可用库存记录 List<LocDetl> stocks = locDetlService.queryStock( orderDetl.getMatnr(), orderDetl.getBatch(), null, processedLocs, orderDetl.getSupp(), orderDetl.getTemp1(), orderDetl.getTemp2() ); // 遍历处理每个库存记录 for (LocDetl stock : stocks) { if (remaining <= 0) break; LocMast locMast = locMastService.selectOne( new EntityWrapper<LocMast>().eq("loc_no", stock.getLocNo())); // 非7号堆垛机处理逻辑 if (locMast.getCrnNo() != 7) { processNormalLocation(stock, orderDetl, remaining, processedStock, result); } // 7号堆垛机特殊处理 else { processCrn7Location(locMast, stock, orderDetl, remaining, processedStock, result); } remaining -= stock.getAnfme(); } // 处理缺量情况 if (remaining > 0) { result.add(createShortageDto(orderDetl, remaining)); } return result; } /** 创建缺量DTO */ private LocDto createShortageDto(OrderDetl orderDetl, double qty) { LocDto dto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), qty); dto.setLack(true); return dto; } /** 处理普通货位 */ private void processNormalLocation(LocDetl stock, OrderDetl orderDetl, double remaining, Set<ExistDto> processedStock, List<LocDto> result) { ExistDto exist = new ExistDto() .setLocNo(stock.getLocNo()) .setMatnr(stock.getMatnr()) .setBatch(stock.getBatch()); if (processedStock.add(exist)) { double allocateQty = Math.min(remaining, stock.getAnfme()); result.add(buildLocDto(stock, orderDetl, allocateQty)); } } /** 处理7号堆垛机货位 */ private void processCrn7Location(LocMast baseLoc, LocDetl stock, OrderDetl orderDetl, double remaining, Set<ExistDto> processedStock, List<LocDto> result) { // 构建查询条件 EntityWrapper<LocMast> wrapper = (EntityWrapper<LocMast>) new EntityWrapper<LocMast>() .eq("gro1", baseLoc.getGro1()) .eq("crn_no", 7) .eq("loc_type1", baseLoc.getLocType1()) .orderBy("bay1", (baseLoc.getBay1() == 6 || baseLoc.getBay1() == 5)); // 获取同组货位并处理 locMastService.selectList(wrapper).stream() .filter(loc -> "F".equals(loc.getLocSts())) .forEach(loc -> processCrn7SubLocation(loc, stock, orderDetl, remaining, processedStock, result)); } /** 处理7号堆垛机子货位 */ private void processCrn7SubLocation(LocMast loc, LocDetl stock, OrderDetl orderDetl, double remaining, Set<ExistDto> processedStock, List<LocDto> result) { LocDetl subStock = locDetlService.selectOne( new EntityWrapper<LocDetl>() .eq("loc_No", loc.getLocNo()) .eq("matnr", stock.getMatnr()) .eq("batch", stock.getBatch())); if (!Cools.isEmpty(subStock)) { ExistDto exist = new ExistDto() .setLocNo(subStock.getLocNo()) .setMatnr(subStock.getMatnr()) .setBatch(subStock.getBatch()); if (processedStock.add(exist) && remaining > 0) { double allocateQty = Math.min(remaining, subStock.getAnfme()); result.add(buildLocDto(subStock, orderDetl, allocateQty)); } } } /** 构建货位DTO通用方法 */ private LocDto buildLocDto(LocDetl stock, OrderDetl orderDetl, double qty) { LocDto dto = new LocDto( stock.getLocNo(), stock.getMatnr(), stock.getMaktx(), stock.getBatch(), orderDetl.getOrderNo(), qty ); // 获取工作站并转换 List<Integer> staNos = staDescService.queryOutStaNosByLocNo( stock.getLocNo(), qty >= stock.getAnfme() ? 101 : 103); List<LocDto.staListDto> staList = staNos.stream() .map(staNo -> new LocDto.staListDto() .setStaNo(staNo) .setStaName(Utils.getStaName(staNo))) .collect(Collectors.toList()); dto.setStaNos(staList); return dto; } // 新增方法 // private List<LocDto> processOrderDetl(OrderDetl orderDetl, Double amount, Set<String> exist, Set<ExistDto> existDtos) { // List<LocDto> result = new ArrayList<>(); // double issued = Optional.ofNullable(orderDetl.getAnfme() - orderDetl.getWorkQty()).orElse(0.0D); // // if (amount != null && amount > issued) { // throw new CoolException("数量高于可出库数量"); // } // // List<LocDetl> locDetls = locDetlService.queryStockCrn(orderDetl.getMatnr(), orderDetl.getBatch(), null, exist, orderDetl.getSupp(), orderDetl.getTemp1(), orderDetl.getTemp2()); // for (LocDetl locDetl : locDetls) { // if (issued <= 0) break; // LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetl.getLocNo())); // if (locMast.getCrnNo() != 7) { // ExistDto existDto = new ExistDto(); // existDto.setLocNo(locDetl.getLocNo()); // existDto.setMatnr(locDetl.getMatnr()); // existDto.setBatch(locDetl.getBatch()); // if (existDtos.add(existDto)) { // LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(), // issued >= locDetl.getAnfme() ? locDetl.getAnfme() : issued); // List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), issued >= locDetl.getAnfme() ? 101 : 103); // List<LocDto.staListDto> maps = new ArrayList<>(); // for (Integer staNo : staNos) { // LocDto.staListDto staListDto = new LocDto.staListDto(); // staListDto.setStaNo(staNo); // staListDto.setStaName(Utils.getStaName(staNo)); // maps.add(staListDto); // } // locDto.setStaNos(maps); // result.add(locDto); // // 剩余待出数量递减 // issued = issued - locDetl.getAnfme(); // } // }else { // List<LocMast> locMasts = new ArrayList<>(); // if (locMast.getBay1() ==6 || locMast.getBay1()==5){ // locMasts = locMastService.selectList(new EntityWrapper<LocMast>() // .eq("gro1", locMast.getGro1()) // .eq("crn_no", 7) // .eq("loc_type1",locMast.getLocType1()) // .orderBy("bay1", true)); // }else{ // locMasts = locMastService.selectList(new EntityWrapper<LocMast>() // .eq("gro1", locMast.getGro1()) // .eq("crn_no", 7) // .eq("loc_type1",locMast.getLocType1()) // .orderBy("bay1", false)); // } // for (LocMast locMast1 : locMasts){ // if (locMast1.getLocSts().equals("F")){ // LocDetl locDetl1 = locDetlService.selectOne(new EntityWrapper<LocDetl>() // .eq("loc_No", locMast1.getLocNo()) // .eq("matnr", locDetl.getMatnr()).eq("batch", locDetl.getBatch())); // if (!Cools.isEmpty(locDetl1)) { // ExistDto existDto = new ExistDto(); // existDto.setLocNo(locDetl1.getLocNo()); // existDto.setMatnr(locDetl1.getMatnr()); // existDto.setBatch(locDetl1.getBatch()); // if (existDtos.add(existDto)){ // if (issued <= 0) break; // LocDto locDto = new LocDto(locDetl1.getLocNo(), locDetl1.getMatnr(), locDetl1.getMaktx(), locDetl1.getBatch(), orderDetl.getOrderNo(), // issued >= locDetl1.getAnfme() ? locDetl1.getAnfme() : issued); // List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl1.getLocNo(), issued >= locDetl1.getAnfme() ? 101 : 103); // List<LocDto.staListDto> maps = new ArrayList<>(); // for (Integer staNo : staNos) { // LocDto.staListDto staListDto = new LocDto.staListDto(); // staListDto.setStaNo(staNo); // staListDto.setStaName(Utils.getStaName(staNo)); // maps.add(staListDto); // } // locDto.setStaNos(maps); // result.add(locDto); // // 剩余待出数量递减 // issued = issued - locDetl.getAnfme(); // // } // } // } // } // } // } // if (issued > 0) { // LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued); // locDto.setLack(Boolean.TRUE); // result.add(locDto); // } // return result; // } /** 四向库订单出库 **/ @PostMapping("/out/pakout/previewCustomQuantity/auth/sxk") src/main/java/com/zy/asrs/service/WorkService.java
@@ -37,6 +37,7 @@ void stockOut(BasDevp staNo, TaskDto taskDto, Long userId); void stockOutSxk(BasDevp staNo, TaskDto taskDto, Long userId); void stockOutLibraryType(BasDevp staNo, TaskDto taskDto, Long userId); /** * 空板入库 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -419,6 +419,12 @@ @Override @Transactional public void stockOutLibraryType(BasDevp staNo, TaskDto taskDto, Long userId) { } @Override @Transactional public void stockOut(BasDevp staNo, TaskDto taskDto, Long userId) { Date now = new Date(); List<LocDto> locDtos = taskDto.getLocDtos(); src/main/java/com/zy/asrs/task/WorkMastScheduler.java
@@ -154,7 +154,7 @@ } @Scheduled(cron = "0/3 * * * * ? ") //移库任务下发 // @Scheduled(cron = "0/3 * * * * ? ") //移库任务下发 private void ShuttleMoveTaskSend(){ List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 11).eq("io_type",11)); if (wrkMasts.isEmpty()) { src/main/java/com/zy/asrs/utils/Utils.java
@@ -40,7 +40,7 @@ map.put(3010,"堆垛机库南三楼出入库口");map.put(3012,"堆垛机库南三楼出库口"); return map.get(sta); return map.get(sta)==null?sta.toString():map.get(sta); } public static boolean isNorth(Integer sourceStaNo){ @@ -527,34 +527,24 @@ //满板正常入库 switch (curRow){ case 1: necessaryParameters[1] = 4; //curRow 最深库位排 necessaryParameters[2] = sCrnNo; //crnNo 堆垛机号 necessaryParameters[3] = 3; //nearRow 最浅库位排 break; case 4: necessaryParameters[1] = 5; //curRow 最深库位排 necessaryParameters[2] = sCrnNo; //crnNo 堆垛机号 necessaryParameters[3] = 4; //nearRow 最浅库位排 necessaryParameters[3] = 6; //nearRow 最浅库位排 break; case 5: necessaryParameters[1] = 6; //curRow 最深库位排 necessaryParameters[1] = 8; //curRow 最深库位排 necessaryParameters[2] = sCrnNo; //crnNo 堆垛机号 necessaryParameters[3] = 7; //nearRow 最浅库位排 necessaryParameters[3] = 8; //nearRow 最浅库位排 break; case 6: necessaryParameters[1] = 10; //curRow 最深库位排 necessaryParameters[2] = sCrnNo; //crnNo 堆垛机号 necessaryParameters[3] = 9; //nearRow 最浅库位排 break; case 10: necessaryParameters[1] = 11; //curRow 最深库位排 necessaryParameters[2] = sCrnNo; //crnNo 堆垛机号 necessaryParameters[3] = 12; //nearRow 最浅库位排 break; case 11: necessaryParameters[1] = 14; //curRow 最深库位排 necessaryParameters[2] = sCrnNo; //crnNo 堆垛机号 necessaryParameters[3] = 14; //nearRow 最浅库位排 break; case 14: case 8: necessaryParameters[1] = 1; //curRow 最深库位排 necessaryParameters[2] = sCrnNo; //crnNo 堆垛机号 necessaryParameters[3] = 2; //nearRow 最浅库位排 necessaryParameters[3] = 1; //nearRow 最浅库位排 break; default: throw new CoolException("库位排号异常:排号:" + curRow); src/main/java/com/zy/common/model/ExistDto.java
@@ -1,8 +1,10 @@ package com.zy.common.model; import lombok.Data; import lombok.experimental.Accessors; @Data @Accessors(chain = true) public class ExistDto { private String locNo; private String matnr; src/main/java/com/zy/common/model/LocDto.java
@@ -2,6 +2,7 @@ import com.core.common.Cools; import lombok.Data; import lombok.experimental.Accessors; import java.util.List; import java.util.Map; @@ -10,6 +11,7 @@ * Created by vincent on 2022/3/28 */ @Data @Accessors(chain = true) public class LocDto { private String locNo; @@ -48,7 +50,6 @@ this.orderNo = orderNo; this.anfme = anfme; } public LocDto(String locNo, String matnr, String maktx, String batch, String orderNo, Double anfme) { this.locNo = locNo; this.matnr = matnr; src/main/java/com/zy/common/service/CommonService.java
@@ -127,7 +127,7 @@ RowLastno rowLastno = rowLastnoService.selectById(whsType); RowLastnoType rowLastnoType = rowLastnoTypeService.selectById(rowLastno.getTypeId()); /** * 库型 1: 标准堆垛机库 2: 平库 3: 穿梭板 4: 四向车 5: AGV 0: 未知 * 库型 1: 标准堆垛机库 2: 平库 3: 穿梭板 4: 四向车混载 5: AGV 6:四向车不混载 0: 未知 */ switch (rowLastnoType.getType()){ case 1: @@ -142,6 +142,8 @@ return getLocNoRun4(whsType,staDescId,sourceStaNo,matnr,batch,grade,4,locTypeDto,0,mixture); case 5: return getLocNoRun5(whsType,staDescId,sourceStaNo,matnr,batch,grade,0,locTypeDto,0); case 6: return getLocNoRun6(whsType,staDescId,sourceStaNo,matnr,batch,grade,4,locTypeDto,0,mixture); default: log.error("站点={} 未查询到对应的规则",sourceStaNo); break; @@ -472,6 +474,9 @@ } public StartupDto getLocNoRun4(Integer whsType, Integer staDescId, Integer sourceStaNo, String matnr, String batch, String grade, Integer moveCrnNo, LocTypeDto locTypeDto, int times,boolean mixture) { if (mixture){ throw new CoolException("混载禁止入库"); } if (Cools.isEmpty(matnr)) { //物料号 matnr = ""; } @@ -811,6 +816,212 @@ return startupDto; } public StartupDto getLocNoRun6(Integer whsType, Integer staDescId, Integer sourceStaNo, String matnr, String batch, String grade, Integer moveCrnNo, LocTypeDto locTypeDto, int times,boolean mixture) { if (Cools.isEmpty(matnr)) { //物料号 matnr = ""; } if (Cools.isEmpty(batch)) { //批次 batch = ""; } if (Cools.isEmpty(grade)) { //备用 grade = ""; } // 初始化参数 int crnNo = 0; //堆垛机号 int nearRow = 0; //最浅库位排 int curRow = 0; //最深库位排 int rowCount = 0; //轮询轮次 LocMast locMast = null; // 目标库位 StartupDto startupDto = new StartupDto(); RowLastno rowLastno = rowLastnoService.selectById(whsType); if (Cools.isEmpty(rowLastno)) { throw new CoolException("数据异常,请联系管理员===>库位规则未知"); } RowLastnoType rowLastnoType = rowLastnoTypeService.selectById(rowLastno.getTypeId()); if (Cools.isEmpty(rowLastnoType)) { throw new CoolException("数据异常,请联系管理员===》库位规则类型未知"); } int sRow = rowLastno.getsRow(); int eRow = rowLastno.geteRow(); int crnNumber = rowLastno.getCrnQty(); // ===============>>>> 开始执行 curRow = rowLastno.getCurrentRow(); if (!Cools.isEmpty(moveCrnNo) && moveCrnNo!=0){ crnNumber = moveCrnNo; } //此程序用于优化堆垛机异常时的运行时间 for (int i = times; i < crnNumber*2; i++) { int[] locNecessaryParameters = Utils.LocNecessaryParameters(rowLastno, curRow, crnNumber,whsType); rowCount = locNecessaryParameters[0]; curRow = locNecessaryParameters[1]; crnNo = locNecessaryParameters[2]; nearRow = locNecessaryParameters[3]; List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>() .eq("crn_no", crnNo).eq("loc_sts", "O").eq("whs_type",rowLastnoType.getType().longValue())); if (locMasts.size()<=5){ times++; continue; } break; } if (crnNo == 0) { throw new CoolException("无可用库位"); } // 相似工作档案 --- 同天同规格物料 if (!Cools.isEmpty(matnr) && (staDescId == 1 || staDescId == 11 || staDescId == 111) && !mixture ) { //查询相似工作档案 List<WrkMast> wrkMasts = wrkMastService.selectWrkMastWrkDetlMatnrBatch(staDescId, matnr, batch,grade, crnNo); int nearbay = 0; //相似工作档案 目标库位列 int nearlev = 0; //相似工作档案 目标库位层 for (WrkMast wrkMast:wrkMasts){ LocMast locMastWrk = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getLocNo())); List<LocMast> locMasts = new ArrayList<>(); if (locMastWrk.getBay1() >=5 && locMastWrk.getBay1()<=6){ locMasts = locMastService.selectList(new EntityWrapper<LocMast>() .eq("gro1", locMastWrk.getGro1()) .eq("crn_no", 7) .eq("loc_type1",locTypeDto.getLocType1()) .orderBy("bay1", true)); }else { locMasts = locMastService.selectList(new EntityWrapper<LocMast>() .eq("gro1", locMastWrk.getGro1()) .eq("crn_no", 7) .eq("loc_type1",locTypeDto.getLocType1()) .orderBy("bay1", false)); } if (Cools.isEmpty(locMasts)) { continue; } for (LocMast locMastGro1 : locMasts) { if (locMastGro1.getLocSts().equals("P") || locMastGro1.getLocSts().equals("Q") || locMastGro1.getLocSts().equals("R") || locMastGro1.getLocSts().equals("X")) { break; } if (locMastGro1.getLocSts().equals("O")){ locMast = locMastGro1; break; } } } } Wrapper<StaDesc> wrapper = null; StaDesc staDesc = null; BasDevp staNo = null; if (Utils.BooleanWhsTypeSta(rowLastno, staDescId)) { // 获取目标站 wrapper = new EntityWrapper<StaDesc>() .eq("type_no", staDescId) .eq("stn_no", sourceStaNo) .eq("crn_no", crnNo); staDesc = staDescService.selectOne(wrapper); if (Cools.isEmpty(staDesc)) { log.error("入库路径不存在:type_no={},stn_no={},crn_no={}", staDescId, sourceStaNo, crnNo); crnNo = 0; }else { staNo = basDevpService.selectById(staDesc.getCrnStn()); if (!staNo.getAutoing().equals("Y")) { log.error("目标站"+staDesc.getCrnStn()+"不可用"); crnNo = 0; } startupDto.setStaNo(staNo.getDevNo()); } } // 更新库位排号 if (Utils.BooleanWhsTypeSta(rowLastno, staDescId) && Cools.isEmpty(locMast)) { rowLastno.setCurrentRow(curRow); rowLastnoService.updateById(rowLastno); } // 开始查找库位 ==============================>> // 1.按规则查找库位 if (Cools.isEmpty(locMast) && crnNo != 0) { List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>() .eq("bay1", nearRow) .in("loc_sts", "O").eq("whs_type",rowLastnoType.getType().longValue()) .eq("crn_no",7) .eq("loc_type1",locTypeDto.getLocType1()) .orderBy("lev1",true).orderBy("row1",false));//最浅库位 for (LocMast locMast1 : locMasts) { if (locMast != null){ break; } if (!VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) { continue; } if (Utils.BooleanWhsTypeStaIoType(rowLastno)){ List<LocMast> locMasts1 = null; if (nearRow == 6){ locMasts1 = locMastService.selectList(new EntityWrapper<LocMast>() .eq("gro1", locMast1.getGro1()) .eq("crn_no",7) .eq("loc_type1",locTypeDto.getLocType1()) .orderBy("bay1",true)); }else { locMasts1 = locMastService.selectList(new EntityWrapper<LocMast>() .eq("gro1", locMast1.getGro1()) .eq("crn_no",7) .eq("loc_type1",locTypeDto.getLocType1()) .orderBy("bay1",false)); } if (Cools.isEmpty(locMasts1)) { continue; } for (LocMast locMastGro1 : locMasts1) { if (locMastGro1.getLocSts().equals("F")){ LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_No", locMastGro1.getLocNo())); if (!locDetl.getMatnr().equals(matnr) || !locDetl.getBatch().equals(batch)){ break; } } if (locMastGro1.getLocSts().equals("P") || locMastGro1.getLocSts().equals("Q") || locMastGro1.getLocSts().equals("R")) { break; } if (locMastGro1.getLocSts().equals("O")){ locMast = locMastGro1; break; } } } } } // 递归查询 if (Cools.isEmpty(locMast) || !locMast.getLocSts().equals("O")) { // 当前巷道无空库位时,递归调整至下一巷道,检索全部巷道无果后,跳出递归 if (times < rowCount*2) { times = times + 1; return getLocNoRun6(whsType, staDescId, sourceStaNo, matnr, batch, grade,moveCrnNo, locTypeDto, times,mixture); } log.error("系统没有空库位!!! 尺寸规格: {}, 轮询次数:{}", JSON.toJSONString(locTypeDto), times); throw new CoolException("没有空库位"); } String locNo = locMast.getLocNo(); // 生成工作号 int workNo = getWorkNo(0); // 返回dto startupDto.setWorkNo(workNo); startupDto.setCrnNo(crnNo); startupDto.setSourceStaNo(sourceStaNo); startupDto.setLocNo(locNo); return startupDto; } public static String zerofill(String msg, Integer count) { if (msg.length() == count) { return msg; 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=jxgtasrs url: jdbc:sqlserver://127.0.0.1:1433;databasename=fyxcasrs username: sa password: sa@123 mvc: @@ -39,7 +39,7 @@ #License相关配置 license: subject: jxgtwms subject: fyxcwms publicAlias: publicCert storePass: public_zhongyang_123456789 licensePath: license.lic src/main/resources/license.licBinary files differ
src/main/webapp/static/js/common.js
@@ -1,4 +1,4 @@ var baseUrl = "/gtSxkWms"; var baseUrl = "/fyxcwms"; // 详情窗口-高度 var detailHeight = '80%'; src/main/webapp/static/js/order/out.js
@@ -164,7 +164,7 @@ function pakoutPreview(ids,amount) { let loadIndex = layer.load(2); $.ajax({ url: baseUrl + "/out/pakout/preview/auth/sxk", url: baseUrl + "/out/pakout/OrderOutGetLoc/auth", headers: {'token': localStorage.getItem('token')}, contentType: 'application/json;charset=UTF-8', data: JSON.stringify(ids), @@ -324,7 +324,7 @@ json.ids = ids json.amount = amount $.ajax({ url: baseUrl + "/out/pakout/previewCustomQuantity/auth/sxk", url: baseUrl + "/out/pakout/OrderOutGetLoc.number/auth", headers: {'token': localStorage.getItem('token')}, contentType: 'application/json;charset=UTF-8', data: JSON.stringify(json), @@ -479,7 +479,7 @@ // let loadIndex = layer.load(2); notice.msg('正在生成出库任务......', {icon: 4}); $.ajax({ url: baseUrl + "/out/pakout/auth/sxk", url: baseUrl + "/out/pakout/auth", headers: {'token': localStorage.getItem('token')}, contentType: 'application/json;charset=UTF-8', data: JSON.stringify(tableCache),