rsf-admin/src/page/orders/wave/WaveList.jsx
@@ -227,9 +227,8 @@ const refresh = useRefresh() const notify = useNotify() const stopClick = async (event) => { event.stopPropagation() const { data: { code, data, msg } } = await request.post('', { val: true, flag: 'WaveAutoExce' }); const stopClick = async () => { const { data: { code, data, msg } } = await request.post('/wave/stop/pub/' + record?.id); if (code === 200) { notify(msg); } else { @@ -238,7 +237,7 @@ } return ( <ConfirmButton label={"toolbar.stopPub"} startIcon={<StopOutlinedIcon />} onConfirm={stopClick} size='small' /> record?.exceStatus != 3 ? <ConfirmButton label={"toolbar.stopPub"} startIcon={<StopOutlinedIcon />} onConfirm={stopClick} size='small' /> : <></> ) } rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaveController.java
@@ -24,6 +24,7 @@ import com.vincent.rsf.server.manager.service.TaskItemService; import com.vincent.rsf.server.manager.service.WaveService; import com.vincent.rsf.server.manager.service.impl.TaskItemLogServiceImpl; import com.vincent.rsf.server.manager.service.impl.WaveItemServiceImpl; import com.vincent.rsf.server.system.controller.BaseController; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; @@ -45,6 +46,8 @@ private OutStockService outStockService; @Autowired private TaskItemLogService taskItemLogService; @Autowired private WaveItemServiceImpl waveItemService; @PreAuthorize("hasAuthority('manager:wave:list')") @PostMapping("/wave/page") @@ -193,22 +196,7 @@ if (Objects.isNull(id)) { return R.error("参数不能为空!!"); } Wave wave = waveService.getById(id); if (Objects.isNull(wave)) { throw new CoolException("波次单不存在!!"); } List<TaskItemLog> taskItems = taskItemLogService.list(new LambdaQueryWrapper<TaskItemLog>().eq(TaskItemLog::getSourceId, wave.getId())); if (taskItems.isEmpty()) { } else { } waveService.update(new LambdaUpdateWrapper<Wave>() .eq(Wave::getId, id) .set(Wave::getExceStatus, WaveExceStatus.WAVE_EXCE_STATUS_TASK.val)); return R.ok(); return waveService.stopPubTask(id); } } rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaveService.java
@@ -47,4 +47,11 @@ * @time 2025/4/25 16:24 */ R waveToTask(Map<String, Object> map, Long loginUserId); /** * 终止下发 * @param id * @return */ R stopPubTask(Long id); } rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaveServiceImpl.java
@@ -56,6 +56,8 @@ private WaveService waveService; @Autowired private WaveRuleServiceImpl waveRuleService; @Autowired private WaveOrderRelaServiceImpl waveOrderRelaService; /** * @param @@ -213,6 +215,54 @@ } /** * 终止波次下发任务 * * @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<AsnOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().in(AsnOrderItem::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<AsnOrder>() .set(AsnOrder::getWorkQty, 0.0) .set(AsnOrder::getExceStatus, AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val) .in(AsnOrder::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