skyouc
22 小时以前 ebdfa825c07189b5f8e89f147d96d1bc612589db
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaveServiceImpl.java
@@ -19,8 +19,6 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vincent.rsf.server.manager.utils.LocManageUtil;
import com.vincent.rsf.server.manager.utils.OptimalAlgorithmUtil;
import com.vincent.rsf.server.system.constant.SerialRuleCode;
import com.vincent.rsf.server.system.utils.SerialRuleUtils;
import lombok.Synchronized;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@@ -56,6 +54,8 @@
    private WaveService waveService;
    @Autowired
    private WaveRuleServiceImpl waveRuleService;
    @Autowired
    private WaveOrderRelaServiceImpl waveOrderRelaService;
    /**
     * @param
@@ -102,9 +102,9 @@
        }
        List<Long> orderIds = waveItems.stream().map(WaveItem::getOrderId).collect(Collectors.toList());
        /**修改出库单状态*/
        if (!asnOrderService.update(new LambdaUpdateWrapper<AsnOrder>()
                .set(AsnOrder::getExceStatus, AsnExceStatus.OUT_STOCK_STATUS_TASK_WORKING.val)
                .in(AsnOrder::getId, orderIds))) {
        if (!asnOrderService.update(new LambdaUpdateWrapper<WkOrder>()
                .set(WkOrder::getExceStatus, AsnExceStatus.OUT_STOCK_STATUS_TASK_WORKING.val)
                .in(WkOrder::getId, orderIds))) {
            throw new CoolException("出库单据状态修改失败!!");
        }
        return R.ok();
@@ -129,6 +129,10 @@
            throw new CoolException("数据错误: 波次不存在!!");
        }
        for (Wave wave : waves) {
            if (wave.getExceStatus() >= WaveExceStatus.WAVE_EXCE_STATUS_EXCING.val) {
                throw new CoolException("当前状态无法下发执行!!");
            }
            List<WaveItem> items = waveItemService.list(new LambdaQueryWrapper<WaveItem>().eq(WaveItem::getWaveId, wave.getId()));
            if (items.isEmpty()) {
                throw new CoolException("波次明细不存在!!");
@@ -163,6 +167,7 @@
                } else {
                    wave.setExceStatus(WaveExceStatus.WAVE_EXCE_STATUS_EXCING.val);
                }
                wave.setMemo("-->库存不足");
                waveService.updateById(wave);
                return R.ok();
            }
@@ -212,6 +217,55 @@
    }
    /**
     * 终止波次下发任务
     *
     * @param id
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R stopPubTask(Long id) {
        Wave wave = this.getById(id);
        if (Objects.isNull(wave)) {
            throw new CoolException("波次单不存在!!");
        }
        List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>()
                .eq(TaskItem::getSourceId, wave.getId()));
        if (!taskItems.isEmpty()) {
            throw new CoolException("已生成任务不可终止当前波次!!");
        }
        List<WaveOrderRela> orderRelas = waveOrderRelaService.list(new LambdaQueryWrapper<WaveOrderRela>().eq(WaveOrderRela::getWaveId, id));
        if (orderRelas.isEmpty()) {
            throw new CoolException("无关联明细!!");
        }
        List<Long> orderIds = orderRelas.stream().map(WaveOrderRela::getOrderItemId).collect(Collectors.toList());
        List<WkOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>().in(WkOrderItem::getId, orderIds));
        orderItems.forEach(asnOrderItem -> {
            asnOrderItem.setWorkQty(0.0);
            if (!asnOrderItemService.updateById(asnOrderItem)) {
                throw new CoolException("单据明细更新失败!!");
            }
        });
        List<Long> orders = orderRelas.stream().map(WaveOrderRela::getOrderId).collect(Collectors.toList());
        if (!asnOrderService.update(new LambdaUpdateWrapper<WkOrder>()
                .set(WkOrder::getWorkQty, 0.0)
                .set(WkOrder::getExceStatus, AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val)
                .in(WkOrder::getId, orders))) {
            throw new CoolException("单据更新失败!!");
        }
        this.update(new LambdaUpdateWrapper<Wave>()
                .eq(Wave::getId, id)
                .set(Wave::getExceStatus, WaveExceStatus.WAVE_EXCE_STATUS_TASK.val));
        return R.ok();
    }
    /**
     * @param
     * @param loginUserId
     * @param wave