| | |
| | | private CheckDiffService checkDiffService; |
| | | @Autowired |
| | | private CheckDiffItemService checkDiffItemService; |
| | | @Autowired |
| | | private BasContainerService basContainerService; |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | |
| | | throw new CoolException("请检查组拖状态是否完成!!"); |
| | | } |
| | | waitPakins.forEach(pakin -> { |
| | | BasContainer container = basContainerService.getOne(new LambdaUpdateWrapper<BasContainer>() |
| | | .eq(BasContainer::getCode, pakin.getBarcode())); |
| | | /**获取库位*/ |
| | | String targetLoc = LocManageUtil.getTargetLoc(warehouseArea.getId()); |
| | | String targetLoc = LocManageUtil.getTargetLoc(warehouseArea.getId(), container.getContainerType()); |
| | | if (Cools.isEmpty(targetLoc)) { |
| | | throw new CoolException("该站点对应库区未找到库位"); |
| | | } |
| | |
| | | if (!this.save(task)) { |
| | | throw new CoolException("任务保存失败!!"); |
| | | } |
| | | BasStation station = basStationService.getOne(new LambdaQueryWrapper<BasStation>() |
| | | .eq(BasStation::getStationName, deviceSite.getSite())); |
| | | if (Objects.isNull(station) || !station.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) { |
| | | throw new CoolException("站点不存在或站点不处于空库状态!!"); |
| | | } |
| | | station.setUseStatus(LocStsType.LOC_STS_TYPE_R.type); |
| | | |
| | | if (!basStationService.updateById(station)) { |
| | | throw new CoolException("站点状态更新失败!!"); |
| | | } |
| | | |
| | | |
| | | if (!locService.update(new LambdaUpdateWrapper<Loc>().eq(Loc::getCode, task.getTargLoc()) |
| | | .set(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_S.type).set(Loc::getBarcode, pakin.getBarcode()))) { |
| | | throw new CoolException("库位预约失败!!"); |
| | |
| | | } else if (task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type)) { |
| | | List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().in(TaskItem::getTaskId, Arrays.asList(ids))); |
| | | if (!taskItems.isEmpty()) { |
| | | |
| | | taskItems.forEach(taskItem -> { |
| | | if (!checkOrderItemService.update(new LambdaUpdateWrapper<WkOrderItem>() |
| | | .eq(WkOrderItem::getId, taskItem.getOrderItemId()) |
| | |
| | | if (Objects.isNull(waveItem)) { |
| | | throw new CoolException("波次明细不存在!!"); |
| | | } |
| | | Double workQty = Math.round((waveItem.getWorkQty() - item.getAnfme()) * 10000) / 10000.0; |
| | | Double workQty = Math.round((waveItem.getWorkQty() - item.getAnfme()) * 100) / 100.0; |
| | | waveItem.setWorkQty(workQty).setExceStatus(WaveItemExceStatus.WAVE_ITEM_EXCE_STATUS_UN.val); |
| | | if (!waveItemService.updateById(waveItem)) { |
| | | throw new CoolException("波次明细更新失败!!"); |
| | |
| | | if (Objects.isNull(wkOrder)) { |
| | | throw new CoolException("数据错误:单据已不存在!!"); |
| | | } |
| | | Double workQty = Math.round((wkOrder.getWorkQty() - item.getAnfme()) * 10000) / 10000.0; |
| | | Double workQty = Math.round((wkOrder.getWorkQty() - item.getAnfme()) * 100) / 100.0; |
| | | |
| | | wkOrder.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val) |
| | | .setWorkQty(workQty.compareTo(0.00) > 0 ? workQty : 0.00) |
| | |
| | | throw new CoolException("数据错误:单据明细已不存在!!"); |
| | | } |
| | | |
| | | Double workItmQty = Math.round((orderItem.getWorkQty() - item.getAnfme()) * 10000) / 10000.0; |
| | | Double workItmQty = Math.round((orderItem.getWorkQty() - item.getAnfme()) * 100) / 100.0; |
| | | orderItem.setWorkQty(workItmQty); |
| | | |
| | | if (!outStockItemService.updateById(orderItem)) { |
| | |
| | | if (taskItem.getMatnrId().equals(working.getMatnrId())) { |
| | | Double minQty = taskItem.getAnfme(); |
| | | if (!task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type)) { |
| | | minQty = Math.round((working.getAnfme() - taskItem.getAnfme()) * 10000) / 10000.0; |
| | | minQty = Math.round((working.getAnfme() - taskItem.getAnfme()) * 100) / 100.0; |
| | | } |
| | | if (minQty.compareTo(0.0) > 0) { |
| | | taskItem.setAnfme(minQty); |
| | |
| | | } |
| | | } else { |
| | | if (!taskItemService.removeById(taskItem)) { |
| | | throw new CoolException("任务明细修改失败!!"); |
| | | log.error("任务明细修改失败!!"); |
| | | } |
| | | } |
| | | } |
| | | }); |
| | | }); |
| | | List<Long> matnrIds = taskItems.stream().map(TaskItem::getMatnrId).collect(Collectors.toList()); |
| | | List<String> matnrIds = taskItems.stream().map(TaskItem::getFieldsIndex).collect(Collectors.toList()); |
| | | //删除与任务明细重复的库存信息,以任务明细为准 |
| | | List<LocItemWorking> itemWorkings = tempLocs.stream() |
| | | .filter(working -> !matnrIds.contains(working.getMatnrId())) |
| | | .filter(working -> !matnrIds.contains(working.getFieldsIndex())) |
| | | .collect(Collectors.toList()); |
| | | itemWorkings.forEach(working -> { |
| | | TaskItem taskItem = taskItems.stream().findFirst().get(); |
| | |
| | | if (Objects.isNull(waveItem)) { |
| | | throw new CoolException("波次明细不存在!!"); |
| | | } |
| | | try { |
| | | saveOutStockItem(maps.get(key), null, waveItem, null, loginUserId); |
| | | } catch (Exception e) { |
| | | throw new CoolException(e.getMessage()); |
| | | } |
| | | // try { |
| | | // saveOutStockItem(maps.get(key), null, waveItem, null, loginUserId); |
| | | // } catch (Exception e) { |
| | | // throw new CoolException(e.getMessage()); |
| | | // } |
| | | } else if (task.getResource().equals(TaskResouceType.TASK_RESOUCE_ORDER_TYPE.val)) { |
| | | WkOrderItem orderItem = asnOrderItemService.getById(key); |
| | | if (Objects.isNull(orderItem)) { |
| | |
| | | * @description: 出库信息保存至库存明细表 |
| | | * @version 1.0 |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void saveOutStockItem(List<TaskItem> taskItems, WkOrderItem orderItem, WaveItem waveItem, WkOrderItem diffItem, Long loginUserId) throws Exception { |
| | | Stock stock = new Stock(); |
| | |
| | | stock.setSourceId(waveItem.getId()).setType(OrderType.ORDER_OUT.type); |
| | | } else if (!Objects.isNull(orderItem) && StringUtils.isNotBlank(orderItem.getId() + "")) { |
| | | WkOrder wkOrder = asnOrderService.getById(orderItem.getOrderId()); |
| | | Double qty = Math.round((wkOrder.getQty() + sum) * 10000) / 10000.0; |
| | | Double qty = Math.round((wkOrder.getQty() + sum) * 100) / 100.0; |
| | | wkOrder.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_WORKING.val) |
| | | .setQty(qty); |
| | | if (!asnOrderService.updateById(wkOrder)) { |
| | |
| | | if (Objects.isNull(itemServiceOne)) { |
| | | throw new CoolException("数据错误:请查看请货区库存是否存在!!"); |
| | | } |
| | | Double workQty = Math.round((itemServiceOne.getWorkQty() - pakinItem.getAnfme()) * 10000) / 10000.0; |
| | | Double qty = Math.round((itemServiceOne.getQty() + pakinItem.getAnfme()) * 10000) / 10000.0; |
| | | Double workQty = Math.round((itemServiceOne.getWorkQty() - pakinItem.getAnfme()) * 100) / 100.0; |
| | | Double qty = Math.round((itemServiceOne.getQty() + pakinItem.getAnfme()) * 100) / 100.0; |
| | | itemServiceOne.setWorkQty(workQty).setQty(qty); |
| | | |
| | | if (!waitPakinService.update(new LambdaUpdateWrapper<WaitPakin>() |
| | |
| | | .setType(taskItem.getOrderType()); |
| | | locItems.add(item); |
| | | } else { |
| | | locItem.setAnfme(Math.round((locItem.getAnfme() + taskItem.getAnfme()) * 10000) / 10000.0) |
| | | locItem.setAnfme(Math.round((locItem.getAnfme() + taskItem.getAnfme()) * 100) / 100.0) |
| | | .setUpdateTime(new Date()); |
| | | locItems.add(locItem); |
| | | } |