skyouc
22 小时以前 02686110a20d0ab23fa33315c855f1cfa76cc57e
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaveServiceImpl.java
@@ -134,7 +134,9 @@
                throw new CoolException("当前状态无法下发执行!!");
            }
            List<WaveItem> items = waveItemService.list(new LambdaQueryWrapper<WaveItem>().eq(WaveItem::getWaveId, wave.getId()));
            List<WaveItem> items = waveItemService.list(new LambdaQueryWrapper<WaveItem>()
                    .le(WaveItem::getExceStatus, WaveExceStatus.WAVE_EXCE_STATUS_EXCING.val)
                    .eq(WaveItem::getWaveId, wave.getId()));
            if (items.isEmpty()) {
                throw new CoolException("波次明细不存在!!");
            }
@@ -187,7 +189,7 @@
            }
            for (TaskItem item : taskItems) {
                WaveItem waveItem = waveItemService.getById(item.getSource());
                Double workQty = Math.round((waveItem.getWorkQty() + item.getAnfme()) * 10000) / 10000.0;
                Double workQty = Math.round((waveItem.getWorkQty() + item.getAnfme()) * 1000000) / 1000000.0;
                waveItem.setWorkQty(workQty);
                if (workQty.compareTo(waveItem.getAnfme()) < 0) {
                    waveItem.setExceStatus(WaveExceStatus.WAVE_EXCE_STATUS_EXCING.val);
@@ -204,14 +206,29 @@
                    throw new CoolException("下发执行异常,请稍候重试!");
                }
            }
            if (!waveService.update(new LambdaUpdateWrapper<Wave>()
                    .set(Wave::getExceStatus, WaveExceStatus.WAVE_EXCE_STATUS_TASK.val)
                    .set(Wave::getWorkQty, taskItems.stream().mapToDouble(TaskItem::getAnfme).sum())
                    .set(Wave::getUpdateBy, loginUserId)
                    .set(Wave::getMemo, null)
                    .set(Wave::getUpdateTime, new Date())
                    .eq(Wave::getId, wave.getId()))) {
                throw new CoolException("波次状态修改失败!!");
            Double sum = taskItems.stream().mapToDouble(TaskItem::getAnfme).sum();
            Double v = Math.round((wave.getWorkQty() + sum) * 1000000) / 1000000.0;
            if (wave.getAnfme().compareTo(v) == 0) {
                if (!waveService.update(new LambdaUpdateWrapper<Wave>()
                        .set(Wave::getExceStatus, WaveExceStatus.WAVE_EXCE_STATUS_TASK.val)
                        .set(Wave::getWorkQty, v)
                        .set(Wave::getUpdateBy, loginUserId)
                        .set(Wave::getMemo, null)
                        .set(Wave::getUpdateTime, new Date())
                        .eq(Wave::getId, wave.getId()))) {
                    throw new CoolException("波次状态修改失败!!");
                }
            } else {
                if (!waveService.update(new LambdaUpdateWrapper<Wave>()
                        .set(Wave::getExceStatus, WaveExceStatus.WAVE_EXCE_STATUS_EXCING.val)
                        .set(Wave::getWorkQty, v)
                        .set(Wave::getUpdateBy, loginUserId)
                        .set(Wave::getMemo, null)
                        .set(Wave::getUpdateTime, new Date())
                        .eq(Wave::getId, wave.getId()))) {
                    throw new CoolException("波次状态修改失败!!");
                }
            }
        }
@@ -281,7 +298,7 @@
    public void generateOutTask(List<OrderOutItemDto> itemParams, Long loginUserId, Wave wave) throws Exception {
        Map<Long, List<OrderOutItemDto>> listMap = itemParams.stream().collect(Collectors.groupingBy(OrderOutItemDto::getLocId));
        listMap.keySet().forEach(id -> {
            double sum = listMap.get(id).stream().mapToDouble(OrderOutItemDto::getAnfme).sum();
//            double sum = listMap.get(id).stream().mapToDouble(OrderOutItemDto::getAnfme).sum();
            List<LocItem> items = new ArrayList<>();
            //生成明细
            listMap.get(id).forEach(orderOutItemDto -> {
@@ -290,7 +307,7 @@
            //获取不为空站点
            List<OrderOutItemDto> itemDtos = listMap.get(id).stream().filter(orderOutItemDto -> !Objects.isNull(orderOutItemDto.getSitesNo())).collect(Collectors.toList());
            OrderOutItemDto itemDto = itemDtos.stream().findFirst().get();
            itemDto.setAnfme(sum);
//            itemDto.setAnfme(sum);
            LocToTaskParams taskParams = new LocToTaskParams();
            Loc loc = locService.getById(itemDto.getLocId());
            taskParams.setItems(items)