| | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public R OutCallAgv(AgvCallParams params, Long userId) { |
| | | /**获取入库最早的一条数据**/ |
| | | LocCache locCaches = locCacheService.selectOne(new EntityWrapper<LocCache>() |
| | | List<LocCache> locCaches = locCacheService.selectList(new EntityWrapper<LocCache>() |
| | | .eq("loc_sts", LocStsType.LOC_STS_TYPE_F.type) |
| | | .eq("frozen", 0) |
| | | .orderDesc(Arrays.asList("sort", "first_time")) |
| | | .last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY")); |
| | | if (Objects.isNull(locCaches)) { |
| | | .orderDesc(Arrays.asList("sort", "first_time"))); |
| | | |
| | | if (locCaches.isEmpty()) { |
| | | throw new CoolException("暂无满足需求库位!"); |
| | | } |
| | | |
| | | //获取缓存区信息 |
| | | BasAreas basAreas = basAreasService.selectOne(new EntityWrapper<BasAreas>().eq("whs_type_id", LocAreaType.LOC_AREA_TYPE_IN_CACHE.type)); |
| | | if (Objects.isNull(basAreas)) { |
| | | throw new CoolException("库区不存在!!"); |
| | | for (LocCache locCache : locCaches) { |
| | | //获取缓存区信息 |
| | | BasAreas basAreas = basAreasService.selectOne(new EntityWrapper<BasAreas>().eq("whs_type_id", LocAreaType.LOC_AREA_TYPE_IN_CACHE.type)); |
| | | if (Objects.isNull(basAreas)) { |
| | | throw new CoolException("库区不存在!!"); |
| | | } |
| | | |
| | | List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>() |
| | | .eq("area_id", basAreas.getId()) |
| | | .eq("loc_no", locCache.getLocNo())); |
| | | if (Objects.isNull(locDetls) || locDetls.isEmpty()) { |
| | | throw new CoolException("库存明细不存在!!"); |
| | | } |
| | | |
| | | Set<String> set = locDetls.stream().map(LocDetl::getMatnr).collect(Collectors.toSet()); |
| | | List<Mat> matList = matService.selectList(new EntityWrapper<Mat>().in("matnr", set)); |
| | | if (Objects.isNull(matList) || matList.isEmpty()) { |
| | | throw new CoolException("物料库不存在该物料!!"); |
| | | } |
| | | Set<Long> longs = matList.stream().map(Mat::getTagId).collect(Collectors.toSet()); |
| | | if (!longs.isEmpty() && longs.size() > 1) { |
| | | throw new CoolException("物料类型不一致,请检查数据是否正确!!"); |
| | | } |
| | | |
| | | Mat mat = matList.stream().findFirst().get(); |
| | | |
| | | BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>() |
| | | .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type) |
| | | .eq("ctn_type", mat.getTagId()) |
| | | .eq("dev_no", params.getTarSite())); |
| | | if (Objects.isNull(station)) { |
| | | continue; |
| | | } |
| | | |
| | | /**生成缓存区出库任务*/ |
| | | generateCacheOutTask(station, locCache, userId); |
| | | |
| | | /**生成立库出库任务*/ |
| | | generateCRNOutTask(station, locCache, userId); |
| | | |
| | | return R.ok(); |
| | | } |
| | | |
| | | List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>() |
| | | .eq("area_id", basAreas.getId()) |
| | | .eq("loc_no", locCaches.getLocNo())); |
| | | if (Objects.isNull(locDetls) || locDetls.isEmpty()) { |
| | | throw new CoolException("库存明细不存在!!"); |
| | | } |
| | | |
| | | Set<String> set = locDetls.stream().map(LocDetl::getMatnr).collect(Collectors.toSet()); |
| | | List<Mat> matList = matService.selectList(new EntityWrapper<Mat>().in("matnr", set)); |
| | | if (Objects.isNull(matList) || matList.isEmpty()) { |
| | | throw new CoolException("物料库不存在该物料!!"); |
| | | } |
| | | Set<Long> longs = matList.stream().map(Mat::getTagId).collect(Collectors.toSet()); |
| | | if (!longs.isEmpty() && longs.size() > 1) { |
| | | throw new CoolException("物料类型不一致,请检查数据是否正确!!"); |
| | | } |
| | | |
| | | Mat mat = matList.stream().findFirst().get(); |
| | | |
| | | BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>() |
| | | .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type) |
| | | .eq("crn_type", mat.getTagId()) |
| | | .eq("dev_no", params.getTarSite())); |
| | | if (Objects.isNull(station)) { |
| | | throw new CoolException("站点正在执行任务!!"); |
| | | } |
| | | |
| | | /**生成缓存区出库任务*/ |
| | | generateCacheOutTask(station, locCaches, userId); |
| | | |
| | | /**生成立库出库任务*/ |
| | | generateCRNOutTask(station, locCaches, userId); |
| | | |
| | | return R.ok(); |
| | | return R.error("未找到与站点类型匹配的库存"); |
| | | } |
| | | |
| | | @Override |
| | |
| | | task.setWrkNo(workNo) |
| | | .setIoTime(new Date()) |
| | | .setWrkSts(11L) // 工作状态:11.生成出库ID |
| | | .setIoType(loc.getLocSts().equals("D") ? 110 : 103) // 入出库状态: 11.库格移载 |
| | | .setIoType(loc.getLocSts().equals("D") ? 110 : 101) // 入出库状态: 11.库格移载 |
| | | .setTaskType("agv") |
| | | .setIoPri(10D) |
| | | .setFullPlt(loc.getLocSts().equals("D") ? "N" : "Y") // 满板:Y |