1. 增加出库单编辑功能

2. 修复紧急出库
This commit is contained in:
梁州 2025-05-21 16:21:19 +08:00
parent 60ca631acb
commit bc52d61307
5 changed files with 113 additions and 2 deletions

View File

@ -17,3 +17,12 @@ export const updateWmsTask = (params) => {
data: params data: params
}) })
} }
// 更新出库单任务
export const updateOutsTask = (params) => {
return request({
url: '/taskOperation/updateOutsTask',
method: 'post',
data: params
})
}

View File

@ -65,8 +65,10 @@
<el-table-column fixed="right" label="操作" width="170px"> <el-table-column fixed="right" label="操作" width="170px">
<template v-slot="scope"> <template v-slot="scope">
<div style="display: inline-block; align-content: center;"> <div style="display: inline-block; align-content: center;">
<el-button type="primary" <el-button type="danger"
@click="editCurrentRowFormEntity(scope.row)">编辑</el-button> @click="cancelOuts(scope.row)">取消</el-button>
<el-button type="success"
@click="finishOuts(scope.row)">完成</el-button>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
@ -95,6 +97,7 @@ import {labelPosition} from '@/constant/form.js'
import {outTypeOptions} from '@/constant/options.js' import {outTypeOptions} from '@/constant/options.js'
import {addAllOptionOfOptions} from '@/utils/generator.js' import {addAllOptionOfOptions} from '@/utils/generator.js'
import {loading} from '@/utils/loading' import {loading} from '@/utils/loading'
import {updateOutsTask} from "@/api/taskOperation";
/** /**
* 常量定义 * 常量定义
@ -191,6 +194,54 @@ const timeFormat = (row, column, cellValue, index) => {
const outsTypeFormat = (row, column, cellValue, index) => { const outsTypeFormat = (row, column, cellValue, index) => {
return outTaskTypeFormatter(cellValue) return outTaskTypeFormatter(cellValue)
} }
//
const cancelOuts = (row) => {
const request = {
taskId: row.taskId,
updateType: 1,
userName: USER_NAME,
standId: STAND_ID
}
loading.open('取消中...')
updateOutsTask(request).then(res => {
const response = res.data
if (response.code === 0) {
ElMessage.success(response.message)
} else {
ElMessage.error(response.message)
}
}).catch(err => {
console.log(err)
ElMessage.error('取消发生异常。')
}).finally(() => {
loading.close()
search()
})
}
//
const finishOuts = (row) => {
const request = {
taskId: row.taskId,
updateType: 2,
userName: USER_NAME,
standId: STAND_ID
}
loading.open('完成中...')
updateOutsTask(request).then(res => {
const response = res.data
if (response.code === 0) {
ElMessage.success(response.message)
} else {
ElMessage.error(response.message)
}
}).catch(err => {
console.log(err)
ElMessage.error('完成发生异常。')
}).finally(() => {
loading.close()
search()
})
}
</script> </script>
<style scoped> <style scoped>
.content { .content {

View File

@ -568,6 +568,8 @@ const ifNeedShowBoxSummary = () => {
|| confirmEntity.boxNo !== storeKittingWork.boxNo) { || confirmEntity.boxNo !== storeKittingWork.boxNo) {
printLacks(storeKittingWork.workOrder, storeKittingWork.productId, storeKittingWork.singleProductId, storeKittingWork.boxNo) printLacks(storeKittingWork.workOrder, storeKittingWork.productId, storeKittingWork.singleProductId, storeKittingWork.boxNo)
if (confirmEntity.workOrder === '') { if (confirmEntity.workOrder === '') {
// ---
// //
successBox('当前工单已完成。') successBox('当前工单已完成。')
} else if (confirmEntity.boxNo !== storeKittingWork.boxNo) { } else if (confirmEntity.boxNo !== storeKittingWork.boxNo) {

View File

@ -1,5 +1,6 @@
package com.wms_main.controller.wms; package com.wms_main.controller.wms;
import com.wms_main.model.dto.request.wms.OutsUpdateRequest;
import com.wms_main.model.dto.request.wms.WmsTaskRequest; import com.wms_main.model.dto.request.wms.WmsTaskRequest;
import com.wms_main.model.dto.response.wms.BaseWmsApiResponse; import com.wms_main.model.dto.response.wms.BaseWmsApiResponse;
import com.wms_main.service.controller.ITaskOperationControllerService; import com.wms_main.service.controller.ITaskOperationControllerService;
@ -37,4 +38,14 @@ public class TaskOperationController {
public BaseWmsApiResponse updateWmsTask(@RequestBody WmsTaskRequest wmsTaskRequest) { public BaseWmsApiResponse updateWmsTask(@RequestBody WmsTaskRequest wmsTaskRequest) {
return taskOperationControllerService.updateWmsTask(wmsTaskRequest); return taskOperationControllerService.updateWmsTask(wmsTaskRequest);
} }
/**
* 更新出库单信息
* @param outsUpdateRequest 请求
* @return 结果
*/
@PostMapping("/updateOutsTask")
public BaseWmsApiResponse updateOutsTask(@RequestBody OutsUpdateRequest outsUpdateRequest) {
return taskOperationControllerService.updateOutsTask(outsUpdateRequest);
}
} }

View File

@ -922,18 +922,56 @@ public class OutsExecutorServiceImpl implements IOutsExecutorService {
List<TAppOuts> emergeOuts = allOuts.stream().filter(appOuts -> appOuts.getOutType().equals(WmsOutTypeEnums.EMERGE.getCode())).toList(); List<TAppOuts> emergeOuts = allOuts.stream().filter(appOuts -> appOuts.getOutType().equals(WmsOutTypeEnums.EMERGE.getCode())).toList();
List<String> emergeGoodsIds = emergeOuts.stream().map(TAppOuts::getGoodsId).distinct().toList(); List<String> emergeGoodsIds = emergeOuts.stream().map(TAppOuts::getGoodsId).distinct().toList();
if (!emergeGoodsIds.isEmpty()) { if (!emergeGoodsIds.isEmpty()) {
// 查询库存
List<TAppStock> emergeStocks = appStockService.list(new LambdaQueryWrapper<TAppStock>() List<TAppStock> emergeStocks = appStockService.list(new LambdaQueryWrapper<TAppStock>()
.in(TAppStock::getGoodsId, emergeGoodsIds)); .in(TAppStock::getGoodsId, emergeGoodsIds));
// 查询拣选计划
List<TAppPickPlan> emergePlans = appPickPlanService.list(new LambdaQueryWrapper<TAppPickPlan>()
.in(TAppPickPlan::getWorkIndex, emergeOuts.stream().map(TAppOuts::getTaskId).distinct().toList()));
// 查询到拣选任务
List<TAppPickTask> emergePickTasks = new ArrayList<>();
if (emergePlans != null && !emergePlans.isEmpty()) {
emergePickTasks = appPickTaskService.list(new LambdaQueryWrapper<TAppPickTask>()
.in(TAppPickTask::getVehicleId, emergePlans.stream().map(TAppPickPlan::getVehicleId).distinct().toList()));
}
for (TAppOuts emergeOut : emergeOuts) { for (TAppOuts emergeOut : emergeOuts) {
List<TAppStock> emergeStocksOfThisGoodsId = emergeStocks.stream().filter(stock -> stock.getGoodsId().equals(emergeOut.getGoodsId())).toList(); List<TAppStock> emergeStocksOfThisGoodsId = emergeStocks.stream().filter(stock -> stock.getGoodsId().equals(emergeOut.getGoodsId())).toList();
// 库存不足之后移除该任务
if (emergeStocksOfThisGoodsId.isEmpty()) { if (emergeStocksOfThisGoodsId.isEmpty()) {
addRemovingOutsAndRecord(needRemoveOutIds, emergeOut, needAddOutRecords); addRemovingOutsAndRecord(needRemoveOutIds, emergeOut, needAddOutRecords);
continue;
}
// 当拣选完之后也要判断是否要移除
if (emergeOut.getDistributeNum() >= emergeOut.getNeedNum()) {
if (emergePlans == null || emergePlans.isEmpty()) {
// 没有拣选计划直接移除
addRemovingOutsAndRecord(needRemoveOutIds, emergeOut, needAddOutRecords);
continue;
}
// 根据拣选计划+拣选任务来判断
List<TAppPickPlan> thisOutsPickPlans = emergePlans.stream().filter(pickPlan -> pickPlan.getWorkIndex().equals(emergeOut.getTaskId())).toList();
if (thisOutsPickPlans.isEmpty()) {
// 没有拣选计划直接移除
addRemovingOutsAndRecord(needRemoveOutIds, emergeOut, needAddOutRecords);
continue;
}
// 待拣选的载具列表
List<String> vehicleIdsOfPlans = thisOutsPickPlans.stream().map(TAppPickPlan::getVehicleId).distinct().toList();
// 判断是否还有去这个站台的拣选任务
List<TAppPickTask> thisOutsPickTasks = emergePickTasks.stream().filter(pickTask -> vehicleIdsOfPlans.contains(pickTask.getVehicleId()) && Objects.equals(pickTask.getPickStand(), emergeOut.getDestination())).toList();
if (thisOutsPickTasks.isEmpty()) {
// 没有拣选任务直接移除
addRemovingOutsAndRecord(needRemoveOutIds, emergeOut, needAddOutRecords);
}
} }
} }
} }
// 移除任务 // 移除任务
if (!needRemoveOutIds.isEmpty()) { if (!needRemoveOutIds.isEmpty()) {
appOutsService.removeBatchByIds(needRemoveOutIds); appOutsService.removeBatchByIds(needRemoveOutIds);
// 需要移除pickPlan
appPickPlanService.remove(new LambdaQueryWrapper<TAppPickPlan>()
.in(TAppPickPlan::getWorkIndex, needRemoveOutIds));
} }
// 添加任务记录 // 添加任务记录
if (!needAddOutRecords.isEmpty()) { if (!needAddOutRecords.isEmpty()) {