pom.xml
@@ -119,7 +119,7 @@ </dependencies> <build> <finalName>wms</finalName> <finalName>nwswms</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> src/main/java/com/zy/asrs/controller/StaDescController.java
@@ -117,7 +117,7 @@ wrapper.ge(entry.getKey(), DateUtils.convert(dates[0])); wrapper.le(entry.getKey(), DateUtils.convert(dates[1])); } else { wrapper.like(entry.getKey(), val); wrapper.eq(entry.getKey(), val); } } } src/main/java/com/zy/asrs/controller/WorkController.java
@@ -176,7 +176,7 @@ @ManagerAuth(memo = "生成任务") public R createWaitPainWrkMastStart(@RequestBody List<WaitPakin> list) { StartupDto startupDto = workService.createWaitPainWrkMastStart(list, getUserId()); return R.ok("任务号:" + startupDto.getTaskNo() + ";目标库位:" + startupDto.getLocNo()); return R.ok("任务号:" + startupDto.getWorkNo() + ";目标库位:" + startupDto.getLocNo()); } @RequestMapping("/deal/preHave/start") src/main/java/com/zy/asrs/entity/StaDesc.java
@@ -27,7 +27,6 @@ */ @ApiModelProperty(value = "路径ID") @TableId(value = "type_id", type = IdType.AUTO) @TableField("type_id") private Long typeId; /** src/main/java/com/zy/asrs/mapper/LocMastMapper.java
@@ -66,4 +66,13 @@ String findFirstFrozenLocNo(@Param("locNoList") List<String> locNoList); List<LocMast> selectLocByTypeAndRowsToList(@Param("locType") Integer locType,@Param("rows") List<Integer> rows); /** * * 根据库位类型来搜索空库位(站点的不同限制堆垛机) * @param locType1 0123 * @param crnNo 堆垛机号 * @return 库位集合 */ List<LocMast> selectLocByTypeToList(@Param("locType1") int locType1,@Param("crnNo") int crnNo); } src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java
@@ -49,24 +49,24 @@ throw new CoolException(devpNo + "站点不存在"); } if (pakin) { if(station.getCanining()==null || !station.getAutoing().equals("Y")) { if(station.getCanining()==null || !station.getCanining().equals("Y")) { throw new CoolException(devpNo+"站点不是能入状态"); } // if (station.getAutoing() == null || !station.getAutoing().equals("Y")) { // throw new CoolException(devpNo + "站点不是自动状态"); // } // if (station.getLoading() == null || !station.getLoading().equals("Y")) { // throw new CoolException(devpNo + "站点无物"); // } // if (station.getWrkNo() != null && station.getWrkNo() > 0 && station.getWrkNo() < 9990) { // throw new CoolException(devpNo + "站点已有工作号"); // } // if(!station.getInEnable().equals("Y")) { // throw new CoolException(devpNo+"站点不是可入状态"); // } // if (wrkMastService.getWorkingMast(devpNo) > 0) { // throw new CoolException(devpNo + "站点不能同时生成两笔入库工作档"); // } if (station.getAutoing() == null || !station.getAutoing().equals("Y")) { throw new CoolException(devpNo + "站点不是自动状态"); } if (station.getLoading() == null || !station.getLoading().equals("Y")) { throw new CoolException(devpNo + "站点无物"); } if (station.getWrkNo() != null && station.getWrkNo() > 0 && station.getWrkNo() < 9990) { throw new CoolException(devpNo + "站点已有工作号"); } if(!station.getInEnable().equals("Y")) { throw new CoolException(devpNo+"站点不是可入状态"); } if (wrkMastService.getWorkingMast(devpNo) > 0) { throw new CoolException(devpNo + "站点不能同时生成两笔入库工作档"); } } return station; } src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -119,7 +119,7 @@ throw new CoolException("查询库位失败!!==》startupFullPutStore ==》 commonService.getLocNo"); } // 生成工作号 int workNo = dto.getTaskNo(); int workNo = dto.getWorkNo(); // 生成工作档 WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); @@ -184,7 +184,7 @@ @Transactional public void startupFullTakeStore(StockOutParam param, Long userId) { // 目标站点状态检测 // BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite()); BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite()); // 获取库位明细 List<LocDetlDto> locDetlDtos = new ArrayList<>(); for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) { @@ -332,7 +332,7 @@ // } // 获取路径 // StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), outSta); StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), outSta); // 生成工作号 int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType)); // 生成工作档 @@ -343,7 +343,7 @@ wrkMast.setIoType(ioType); // 入出库状态 wrkMast.setIoPri(13D); // 优先级:13 wrkMast.setCrnNo(locMast.getCrnNo()); wrkMast.setSourceStaNo("0"); // 源站 wrkMast.setSourceStaNo(staDesc.getCrnStn$()); // 源站 wrkMast.setStaNo(String.valueOf(outSta)); // 目标站 wrkMast.setSourceLocNo(dto.getLocNo()); // 源库位 wrkMast.setFullPlt("Y"); // 满板:Y @@ -494,7 +494,7 @@ FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(); StartupDto dto = commonService.getLocNo(10, devpNo, findLocNoAttributeVo, locTypeDto); int workNo = dto.getTaskNo(); int workNo = dto.getWorkNo(); Date now = new Date(); // 生成工作档 WrkMast wrkMast = new WrkMast(); @@ -569,15 +569,15 @@ throw new CoolException("所选库位存在状态不为D的库位,库位号:" + locMast.getLocNo() + " 、当前状态:" + locMast.getLocSts() + "-" + locMast.getLocSts$()); } // 获取源站 // Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() // .eq("type_no", 110) // .eq("stn_no", param.getOutSite()) // .eq("crn_no", locMast.getCrnNo()); // StaDesc staDesc = staDescService.selectOne(wrapper); // Integer sourceStaNo = staDesc.getCrnStn(); // if (Cools.isEmpty(sourceStaNo)) { // throw new CoolException("检索源站失败"); // } Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() .eq("type_no", 110) .eq("stn_no", param.getOutSite()) .eq("crn_no", locMast.getCrnNo()); StaDesc staDesc = staDescService.selectOne(wrapper); Integer sourceStaNo = staDesc.getCrnStn(); if (Cools.isEmpty(sourceStaNo)) { throw new CoolException("检索源站失败"); } Date now = new Date(); // 保存工作档 WrkMast wrkMast = new WrkMast(); @@ -586,7 +586,7 @@ wrkMast.setWrkSts(11L); // 工作状态:11.生成出库ID wrkMast.setIoType(110); // 入出库状态: 110.空板出库 wrkMast.setIoPri(10D); wrkMast.setSourceStaNo("0"); // 源站 wrkMast.setSourceStaNo(staDesc.getCrnStn$()); // 源站 wrkMast.setStaNo(param.getOutSite() + ""); // 目标站 wrkMast.setCrnNo(locMast.getCrnNo()); wrkMast.setSourceLocNo(locNo); // 源库位 src/main/java/com/zy/asrs/task/WcsScheduler.java
@@ -27,7 +27,7 @@ /** * 定时任务读取出库任务派发给WCS */ @Scheduled(cron = "0/10 * * * * ? ") // @Scheduled(cron = "0/10 * * * * ? ") private void outboundTaskDispatch() { List<WrkMast> wrkMastList = wrkMastService.selectList(new EntityWrapper<WrkMast>().in("io_type", 11, 101, 103, 107, 110).eq("wrk_sts", 11)); for (WrkMast wrkMast : wrkMastList) { src/main/java/com/zy/asrs/task/handler/WcsSchedulerHandler.java
@@ -41,7 +41,7 @@ public void outboundTaskDispatch(WrkMast wrkMast) { StartupDto startupDto = new StartupDto(); startupDto.setTaskNo(wrkMast.getWrkNo()); startupDto.setWorkNo(wrkMast.getWrkNo()); startupDto.setTaskPri(wrkMast.getIoPri()); src/main/java/com/zy/common/model/StartupDto.java
@@ -16,7 +16,7 @@ private String locNo; private Integer taskNo; private Integer workNo; private Double taskPri; src/main/java/com/zy/common/service/CommonService.java
@@ -20,8 +20,8 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.List; import java.util.Optional; import java.util.*; import java.util.stream.Collectors; /** * 货架核心功能 @@ -448,7 +448,7 @@ // 生成工作号 int workNo = getWorkNo(0); // 返回dto startupDto.setTaskNo(workNo); startupDto.setWorkNo(workNo); startupDto.setCrnNo(crnNo); startupDto.setSourceStaNo(sourceStaNo); startupDto.setLocNo(locNo); @@ -893,7 +893,7 @@ // 生成工作号 int workNo = getWorkNo(0); // 返回dto startupDto.setTaskNo(workNo); startupDto.setWorkNo(workNo); startupDto.setCrnNo(crnNo); startupDto.setSourceStaNo(sourceStaNo); startupDto.setLocNo(locNo); @@ -1006,7 +1006,7 @@ // 生成工作号 int workNo = getWorkNo(0); // 返回dto startupDto.setTaskNo(workNo); startupDto.setWorkNo(workNo); startupDto.setCrnNo(crnNo); startupDto.setSourceStaNo(sourceStaNo); startupDto.setLocNo(locNo); @@ -1034,56 +1034,113 @@ // 寻找到的库位 LocMast locMast = null; // 按库位类型获取库位 List<LocMast> locMasts = locMastMapper.selectLocByTypeAndRowsToList(locType,rows); // todo 如果当前类型库位剩余不多,是一直放满,还是兼容到下一种库位类型 // 考虑移库需要同类型库位,这里限制不能放满,兼容下一种库位类型 if (locMasts.size() <= 4) { switch (locType) { case 0: return getLocNoNew(ioType, sourceStaNo, 1,rows); case 1: return getLocNoNew(ioType, sourceStaNo, 2,rows); case 2: return getLocNoNew(ioType, sourceStaNo, 3,rows); case 3: log.warn("当前库位排:{},剩余{}个用于移库,无法占用",rows,locMasts.size()); return null; default: } // 可用堆垛机 List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts", 3).eq("crn_err", 0).eq("in_enable","Y")); if (basCrnps.size() == 0) { log.error("入库请求库位失败,没有联机堆垛机或堆垛机异常"); throw new CoolException("入库请求库位失败,没有联机堆垛机或堆垛机异常"); } // 先取深库位 Optional<LocMast> first = locMasts.stream().filter(o -> o.getRow1() == 1 || o.getRow1() == 4 || o.getRow1() == 5 || o.getRow1() == 8|| o.getRow1() == 9 || o.getRow1() == 12).findFirst(); if (first.isPresent()) { locMast = first.get(); // 一次查所有堆垛机任务数(group by) List<Map<String, Object>> countList = locMastMapper.selectMaps( new EntityWrapper<LocMast>() .setSqlSelect("crn_no, COUNT(*) AS cnt") .eq("loc_sts", "S") .in("crn_no", basCrnps.stream().map(BasCrnp::getCrnNo).collect(Collectors.toList())) .groupBy("crn_no") ); // 堆垛机对应任务数 Map<Integer, Integer> countMap = countList.stream() .collect(Collectors.toMap( m -> (Integer) m.get("crn_no"), m -> ((Number) m.get("cnt")).intValue() )); // 所有满足条件的库位 List<LocMast> allLocs = locMastMapper.selectList( new EntityWrapper<LocMast>() .eq("loc_type1", locType) .eq("loc_sts" ,'O') .in("crn_no", basCrnps.stream().map(BasCrnp::getCrnNo).collect(Collectors.toList())) .last("ORDER BY CASE WHEN row1 IN (1,4,5,8,9,12) THEN 0 ELSE 1 END, lev1, bay1, row1") ); // 按堆垛机分组 Map<Integer, List<LocMast>> locMap = allLocs.stream() .collect(Collectors.groupingBy(LocMast::getCrnNo)); // 堆垛机对应库位类型的剩余库位数大于4个的堆垛机保留 List<BasCrnp> availableCrn = basCrnps.stream() .filter(c -> locMap.containsKey(c.getCrnNo()) && locMap.get(c.getCrnNo()).size() > 4) .collect(Collectors.toList()); if (availableCrn.isEmpty()) { // 递归兼容 if (locType >= 3) return null; return getLocNoNew(ioType, sourceStaNo, locType + 1, rows); } availableCrn.sort(Comparator.comparing(c -> countMap.getOrDefault(c.getCrnNo(), 0))); for (BasCrnp crnp : availableCrn) { List<LocMast> locs = locMap.get(crnp.getCrnNo()); if (locs == null || locs.isEmpty()) { continue; } Map<String, LocMast> locNoMap = locs.stream() .collect(Collectors.toMap(LocMast::getLocNo, e -> e)); for(LocMast locMast1: locs) { String locNo = locMast1.getLocNo(); // 是深库位 if(Utils.isDeepLoc(slaveProperties,locMast1.getLocNo())){ // 获取浅库位 String shallowLoc = Utils.getShallowLoc(slaveProperties, locNo); LocMast shallow = locNoMap.get(shallowLoc); // 浅库位无货 if (shallow == null) { locMast = locMast1; break; } } else { // 是浅库位,判断深库位是否为空,是则放,不是则跳过 // 获取深库位 String deepLoc = Utils.getDeepLoc(slaveProperties, locNo); LocMast deep = locNoMap.get(deepLoc); // 深库位不空放深库位 if (deep != null) { locMast = deep; break; } else { // 深库位里面没有从浅库位里面取 Optional<LocMast> first2 = locMasts.stream().filter(o -> o.getRow1() == 2 || o.getRow1() == 3 || o.getRow1() == 6 || o.getRow1() == 7 || o.getRow1() == 10 || o.getRow1() == 11).findFirst(); if(first2.isPresent()) { locMast = first2.get(); locMast = locMast1; break; } } } if (locMast != null) { break; } } if (locMast == null) { return null; if (locType >= 3) return null; return getLocNoNew(ioType, sourceStaNo, locType + 1, rows); } // 根据入库类型和源站点获取工作路径 // StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>().eq("type_no", ioType).eq("stn_no", sourceStaNo).eq("crn_no",locMast.getCrnNo())); // if (staDesc == null) { // log.error("获取工作路径异常,类型:{},源站点:{},库位:{}",ioType,sourceStaNo,locMast.getLocNo()); // return null; // } StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>().eq("type_no", ioType).eq("stn_no", sourceStaNo).eq("crn_no",locMast.getCrnNo())); if (staDesc == null) { log.error("获取工作路径异常,类型:{},源站点:{},库位:{}",ioType,sourceStaNo,locMast.getLocNo()); throw new CoolException("获取工作路径异常"); } // 生成工作号 int workNo = getWorkNo(0); // 返回dto StartupDto startupDto = new StartupDto(); startupDto.setTaskNo(workNo); startupDto.setWorkNo(workNo); startupDto.setCrnNo(locMast.getCrnNo()); startupDto.setSourceStaNo(sourceStaNo); startupDto.setStaNo(0); startupDto.setStaNo(staDesc.getCrnStn()); startupDto.setLocNo(locMast.getLocNo()); startupDto.setTaskPri(13D); src/main/java/com/zy/common/web/WcsController.java
@@ -64,76 +64,57 @@ @ResponseBody public synchronized R getLocNo(@RequestBody SearchLocParam param) { log.info("收到WCS入库接口请求====>>入参:{}", param); // if (Cools.isEmpty(param.getIoType())) { // return R.error("入出库类型不能为空"); // } if (Cools.isEmpty(param.getIoType())) { return R.error("入出库类型不能为空"); } if (Cools.isEmpty(param.getSourceStaNo())) { return R.error("源站编号不能为空"); } if (param.getRow().length == 0) { return R.error("WCS上报无可用设备"); } // //wcs调用此接口向组托表插入一条数据模拟组托 // WaitPakin waitPakin = new WaitPakin(); // waitPakin.setZpallet(param.getBarcode()); // waitPakin.setBatch("20260305002"); // waitPakin.setAnfme(100.0D); // waitPakin.setMatnr("YJ2026030509353203"); // waitPakin.setMaktx("上拉杆_左前右后毛坯"); // waitPakin.setSpecs("50001LR-71"); // waitPakin.setModel("skv"); // waitPakinService.insert(waitPakin); // // WaitPakin waitPakin2 = new WaitPakin(); // waitPakin2.setZpallet(param.getBarcode()); // waitPakin2.setBatch("20260305002"); // waitPakin2.setAnfme(100.0D); // waitPakin2.setMatnr("YJ2026030509494873"); // waitPakin2.setMaktx("螺杆先"); // waitPakin2.setSpecs("50001LR-71"); // waitPakin2.setModel("skv"); // waitPakinService.insert(waitPakin2); // if (param.getRow().length == 0) { // return R.error("WCS上报无可用设备"); // } List<WaitPakin> waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode())); if (param.getIoType() == 1) { if (Cools.isEmpty(param.getBarcode())) { return R.error("条码不能为空"); } WrkMast wrkMast1 = wrkMastService.selectByBarcode(param.getBarcode()); if (wrkMast1 != null) { Integer ioType = wrkMast1.getIoType(); if ((ioType == 103 || ioType == 107) && wrkMast1.getWrkSts() == 14) { // 转换工作档 if (!wrkMastLogService.save(wrkMast1.getWrkNo())) { throw new CoolException("保存工作主档历史档失败"); } Date now = new Date(); // 更新工作档数据状态 wrkMast1.setIoType(wrkMast1.getIoType() - 50); // 入出库类型: 103->53,104->54,107->57 wrkMast1.setWrkSts(2L); // 工作状态: 2.设备上走 wrkMast1.setSourceStaNo(String.valueOf(param.getSourceStaNo())); // 源站 wrkMast1.setStaNo("0"); // 目标站 wrkMast1.setLocNo(wrkMast1.getSourceLocNo()); wrkMast1.setSourceLocNo(""); // 源库位清空 wrkMast1.setModiTime(now); if (!wrkMastService.updateById(wrkMast1)) { throw new CoolException("更新工作档数据状态失败"); } // 修改库位状态 Q.拣料/盘点/并板再入库 LocMast locMast = locMastService.selectById(wrkMast1.getLocNo()); locMast.setLocSts("Q"); locMast.setModiTime(now); if (!locMastService.updateById(locMast)) { throw new CoolException("修改库位状态失败"); } } StartupDto startupDto = new StartupDto(); startupDto.setTaskNo(wrkMast1.getWrkNo()); startupDto.setSourceStaNo(Integer.valueOf(wrkMast1.getSourceStaNo())); startupDto.setTaskPri(wrkMast1.getIoPri()); startupDto.setCrnNo(wrkMast1.getCrnNo()); startupDto.setLocNo(Utils.locToLocNo(wrkMast1.getLocNo())); return R.ok().add(startupDto); } // WrkMast wrkMast1 = wrkMastService.selectByBarcode(param.getBarcode()); // if (wrkMast1 != null) { // Integer ioType = wrkMast1.getIoType(); // if ((ioType == 103 || ioType == 107) && wrkMast1.getWrkSts() == 14) { // // 转换工作档 // if (!wrkMastLogService.save(wrkMast1.getWrkNo())) { // throw new CoolException("保存工作主档历史档失败"); // } // Date now = new Date(); // // 更新工作档数据状态 // wrkMast1.setIoType(wrkMast1.getIoType() - 50); // 入出库类型: 103->53,104->54,107->57 // wrkMast1.setWrkSts(2L); // 工作状态: 2.设备上走 // wrkMast1.setSourceStaNo(String.valueOf(param.getSourceStaNo())); // 源站 // wrkMast1.setStaNo("0"); // 目标站 // wrkMast1.setLocNo(wrkMast1.getSourceLocNo()); // wrkMast1.setSourceLocNo(""); // 源库位清空 // wrkMast1.setModiTime(now); // if (!wrkMastService.updateById(wrkMast1)) { // throw new CoolException("更新工作档数据状态失败"); // } // // 修改库位状态 Q.拣料/盘点/并板再入库 // LocMast locMast = locMastService.selectById(wrkMast1.getLocNo()); // locMast.setLocSts("Q"); // locMast.setModiTime(now); // if (!locMastService.updateById(locMast)) { // throw new CoolException("修改库位状态失败"); // } // } // StartupDto startupDto = new StartupDto(); // startupDto.setTaskNo(wrkMast1.getWrkNo()); // startupDto.setSourceStaNo(Integer.valueOf(wrkMast1.getSourceStaNo())); // startupDto.setTaskPri(wrkMast1.getIoPri()); // startupDto.setCrnNo(wrkMast1.getCrnNo()); // startupDto.setLocNo(Utils.locToLocNo(wrkMast1.getLocNo())); // return R.ok().add(startupDto); // } if (Cools.isEmpty(waitPakins)) { WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarcode()); if (wrkMast != null && wrkMast.getIoType() == 103) { @@ -152,15 +133,15 @@ } // 源站点状态检测 // BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getSourceStaNo(), true); // sourceStaNo.setLocType1(param.getLocType1()); LocTypeDto locTypeDto = new LocTypeDto(); locTypeDto.setLocType1(param.getLocType1()); if(!waitPakins.isEmpty()) { // 判断是否是空托盘 if (waitPakins.get(0).getMatnr().equals("1") ) { param.setIoType(10); } } BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getSourceStaNo(), true); sourceStaNo.setLocType1(param.getLocType1()); LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo); // locTypeDto.setLocType1(param.getLocType1()); // if(!waitPakins.isEmpty()) { // 判断是否是空托盘 // if (waitPakins.get(0).getMatnr().equals("1") ) { // param.setIoType(10); // } // } StartupDto dto = null; switch (param.getIoType()) { @@ -266,7 +247,7 @@ Date now = new Date(); // 获取工作号 int workNo = commonService.getWorkNo(WorkNoType.PICK.type); dto.setTaskNo(workNo); dto.setWorkNo(workNo); // 保存工作档 WrkMast wrkMast = new WrkMast(); @@ -353,7 +334,7 @@ Date now = new Date(); // 生成工作档 WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(dto.getTaskNo()); wrkMast.setWrkNo(dto.getWorkNo()); wrkMast.setIoTime(now); wrkMast.setWrkSts(1L); wrkMast.setIoPri(13D); @@ -398,27 +379,28 @@ @Transactional public StartupDto startupFullPutStore(Integer devpNo, String barcode, LocTypeDto locTypeDto, List<WaitPakin> waitPakins, int[] row) { // 源站点状态检测 // BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true); BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true); // 检索库位 // FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(waitPakins.get(0)); // StartupDto dto = commonService.getLocNo(1, devpNo, findLocNoAttributeVo, locTypeDto); StartupDto dto = null; // 根据库位排映射堆垛机 for(int i = 0; i < row.length/4 ; i ++) { ArrayList<Integer> rows = new ArrayList<>(); rows.add(row[i * 4]); rows.add(row[i * 4 + 1]); rows.add(row[i * 4 + 2]); rows.add(row[i * 4 + 3]); dto = commonService.getLocNoNew(1, devpNo, Integer.valueOf(locTypeDto.getLocType1()),rows); if (dto != null) { break; } } // StartupDto dto = null; // // 根据库位排映射堆垛机 // for(int i = 0; i < row.length/4 ; i ++) { // ArrayList<Integer> rows = new ArrayList<>(); // rows.add(row[i * 4]); // rows.add(row[i * 4 + 1]); // rows.add(row[i * 4 + 2]); // rows.add(row[i * 4 + 3]); // dto = commonService.getLocNoNew(1, devpNo, Integer.valueOf(locTypeDto.getLocType1()),rows); // if (dto != null) { // break; // } // } StartupDto dto = commonService.getLocNoNew(1, devpNo, Integer.valueOf(locTypeDto.getLocType1()),null);; if (dto == null) { throw new CoolException("没有匹配到库位,检查可用库位/堆垛机报警"); } int workNo = dto.getTaskNo(); int workNo = dto.getWorkNo(); Date now = new Date(); // 生成工作档 WrkMast wrkMast = new WrkMast(); @@ -468,11 +450,11 @@ throw new CoolException("更新通知档失败"); } // 更新源站点信息 // sourceStaNo.setWrkNo(workNo); // sourceStaNo.setModiTime(now); // if (!basDevpService.updateById(sourceStaNo)) { // throw new CoolException("更新源站失败"); // } sourceStaNo.setWrkNo(workNo); sourceStaNo.setModiTime(now); if (!basDevpService.updateById(sourceStaNo)) { throw new CoolException("更新源站失败"); } // 更新目标库位状态 LocMast locMast = locMastService.selectById(dto.getLocNo()); if (locMast.getLocSts().equals("O")) { @@ -484,35 +466,36 @@ } else { throw new CoolException(dto.getLocNo() + "目标库位已被占用"); } dto.setLocNo(Utils.locToLocNo(dto.getLocNo())); // dto.setLocNo(Utils.locToLocNo(dto.getLocNo())); return dto; } @Transactional public StartupDto emptyPlateIn(Integer devpNo, LocTypeDto locTypeDto, String barcode, int[] row) { // 源站点状态检测 // BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true); BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true); // 检索库位 // FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(); // StartupDto dto = commonService.getLocNo(10, devpNo, findLocNoAttributeVo, locTypeDto); StartupDto dto = null; // 根据库位排映射堆垛机 for(int i = 0; i < row.length/4 ; i ++) { ArrayList<Integer> rows = new ArrayList<>(); rows.add(row[i * 4]); rows.add(row[i * 4 + 1]); rows.add(row[i * 4 + 2]); rows.add(row[i * 4 + 3]); dto = commonService.getLocNoNew(1, devpNo, Integer.valueOf(locTypeDto.getLocType1()),rows); if (dto != null) { break; } } // StartupDto dto = null; // // 根据库位排映射堆垛机 // for(int i = 0; i < row.length/4 ; i ++) { // ArrayList<Integer> rows = new ArrayList<>(); // rows.add(row[i * 4]); // rows.add(row[i * 4 + 1]); // rows.add(row[i * 4 + 2]); // rows.add(row[i * 4 + 3]); // dto = commonService.getLocNoNew(1, devpNo, Integer.valueOf(locTypeDto.getLocType1()),rows); // if (dto != null) { // break; // } // } StartupDto dto = commonService.getLocNoNew(10, devpNo, Integer.valueOf(locTypeDto.getLocType1()),null);; if (dto == null) { throw new CoolException("没有匹配到库位,检查可用库位/堆垛机报警"); } int workNo = dto.getTaskNo(); int workNo = dto.getWorkNo(); Date now = new Date(); // 生成工作档 WrkMast wrkMast = new WrkMast(); @@ -539,15 +522,11 @@ if (!res) { throw new CoolException("保存工作档失败"); } // 更新入库通知档 ioStatus ===>> Y Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>() .eq("zpallet", barcode); WaitPakin setParam = new WaitPakin(); setParam.setLocNo(dto.getLocNo()); setParam.setIoStatus("Y"); setParam.setModiTime(now); if (!waitPakinService.update(setParam, wrapper)) { throw new CoolException("更新通知档失败"); // 更新源站点信息 sourceStaNo.setWrkNo(workNo); sourceStaNo.setModiTime(new Date()); if (!basDevpService.updateById(sourceStaNo)) { throw new CoolException("更新源站失败"); } // 更新目标库位状态 LocMast locMast = locMastService.selectById(dto.getLocNo()); @@ -560,7 +539,7 @@ } else { throw new CoolException(dto.getLocNo() + "目标库位已被占用"); } dto.setLocNo(Utils.locToLocNo(dto.getLocNo())); // dto.setLocNo(Utils.locToLocNo(dto.getLocNo())); return dto; } src/main/java/com/zy/common/web/param/SearchLocParam.java
@@ -8,7 +8,7 @@ @Data public class SearchLocParam { private Integer ioType = 1; private Integer ioType; private Integer sourceStaNo; src/main/java/com/zy/system/entity/license/CustomLicenseManager.java
@@ -123,9 +123,9 @@ //2. 然后校验自定义的License参数 //License中可被允许的参数信息 Object extra = content.getExtra(); String text = ((String) extra).trim(); LicenseCheck expectedCheckModel = JSON.parseObject(text, LicenseCheck.class); // Object extra = content.getExtra(); // String text = ((String) extra).trim(); LicenseCheck expectedCheckModel = (LicenseCheck) content.getExtra();; //当前服务器真实的参数信息 LicenseCheck serverCheckModel = getServerInfos(); src/main/resources/mapper/LocMastMapper.xml
@@ -217,5 +217,8 @@ </foreach> order by lev1, bay1, row1 </select> <select id="selectLocByTypeToList" resultType="com.zy.asrs.entity.LocMast"> select loc_no locNo,loc_type1 locType1,crn_no crnNo,row1 from asr_loc_mast where loc_sts = 'O' and loc_type1 = #{locType1} AND crn_no = #{crnNo} order by lev1,bay1,row1 </select> </mapper> src/main/webapp/static/js/common.js
@@ -1,4 +1,4 @@ var baseUrl = "/wms"; var baseUrl = "/nwswms"; // 详情窗口-高度 var detailHeight = '80%';