出库任务批量修改日期
This commit is contained in:
parent
c7eebdab59
commit
b75fceca38
|
|
@ -27,6 +27,14 @@ export const editDate = (params) => {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const batchEditDate = (params) => {
|
||||||
|
return request({
|
||||||
|
url: '/taskQuery/batchEditDate',
|
||||||
|
method: 'post',
|
||||||
|
data: params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据物料id查询物料信息
|
* 根据物料id查询物料信息
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
|
|
||||||
const request = axios.create({
|
const request = axios.create({
|
||||||
baseURL: 'http://172.18.222.253:12315/wms',
|
//baseURL: 'http://172.18.222.253:12315/wms',
|
||||||
//baseURL: 'http://localhost:12315/wms',
|
baseURL: 'http://localhost:12315/wms',
|
||||||
timeout: 5000
|
timeout: 5000
|
||||||
})
|
})
|
||||||
// 172.18.222.253
|
// 172.18.222.253
|
||||||
|
|
|
||||||
|
|
@ -43,8 +43,21 @@
|
||||||
:header-cell-style="{ 'text-align': 'center' }" :cell-style="{ 'text-align': 'center' }"
|
:header-cell-style="{ 'text-align': 'center' }" :cell-style="{ 'text-align': 'center' }"
|
||||||
@sort-change="handleSortChange">
|
@sort-change="handleSortChange">
|
||||||
<el-table-column width="65px" fixed="left">
|
<el-table-column width="65px" fixed="left">
|
||||||
|
<template #header>
|
||||||
|
<el-checkbox
|
||||||
|
v-model="isSelectAll"
|
||||||
|
@change="handleSelectAllChange">
|
||||||
|
|
||||||
|
</el-checkbox>
|
||||||
|
</template>
|
||||||
<template v-slot="scope">
|
<template v-slot="scope">
|
||||||
<el-radio :label="scope.row.goodsId" v-model="goodsId"> </el-radio>
|
<!-- 单选改为多选 -->
|
||||||
|
<el-checkbox
|
||||||
|
:label="scope.row.goodsId"
|
||||||
|
v-model="scope.row.checked"
|
||||||
|
@change="handleSelectionChange(scope.row)">
|
||||||
|
|
||||||
|
</el-checkbox>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="workOrder" label="工单详情" fixed="left" min-width="120px" sortable="custom"
|
<el-table-column prop="workOrder" label="工单详情" fixed="left" min-width="120px" sortable="custom"
|
||||||
|
|
@ -87,6 +100,19 @@
|
||||||
<el-button size="default" type="warning" @click.stop="handleDelete(scope.row)">加急</el-button>
|
<el-button size="default" type="warning" @click.stop="handleDelete(scope.row)">加急</el-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
<template #header>
|
||||||
|
<div style="display: flex; flex-direction: column; align-items: center;">
|
||||||
|
<span>操作</span>
|
||||||
|
<el-button
|
||||||
|
size="small"
|
||||||
|
type="primary"
|
||||||
|
@click="handleBatchEdit"
|
||||||
|
:disabled="selectedRows.length === 0"
|
||||||
|
style="margin-top: 5px;">
|
||||||
|
批量修改时间({{ selectedRows.length }})
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
@ -117,7 +143,25 @@
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
<el-dialog v-model="showBatchEditDialog" title="批量修改执行日期" width="30%" draggable>
|
||||||
|
<el-form ref="batchEditFormRef" :model="batchEditForm" label-width="100px">
|
||||||
|
<el-form-item label="执行时间">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="batchEditForm.pickingDate"
|
||||||
|
type="date"
|
||||||
|
placeholder="请选择执行时间"
|
||||||
|
format="YYYY-MM-DD"
|
||||||
|
value-format="YYYY-MM-DD" style="width: 100%">
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<template #footer>
|
||||||
|
<span class="dialog-footer">
|
||||||
|
<el-button @click="showBatchEditDialog = false">取消</el-button>
|
||||||
|
<el-button type="primary" @click="saveBatchEdit(batchEditForm)">确定</el-button>
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</el-container>
|
</el-container>
|
||||||
</el-config-provider>
|
</el-config-provider>
|
||||||
|
|
@ -126,7 +170,7 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
import store from '@/store'
|
import store from '@/store'
|
||||||
import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
|
import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
|
||||||
import {editDate, getGoodsInfoByPage, upOutsType} from '@/api/goods.js'
|
import {batchEditDate, editDate, getGoodsInfoByPage, upOutsType} from '@/api/goods.js'
|
||||||
import {ref, reactive, onMounted, nextTick, onBeforeUnmount} from 'vue'
|
import {ref, reactive, onMounted, nextTick, onBeforeUnmount} from 'vue'
|
||||||
import {ElMessage} from 'element-plus'
|
import {ElMessage} from 'element-plus'
|
||||||
import {genTableRequest} from '@/utils/generator.js'
|
import {genTableRequest} from '@/utils/generator.js'
|
||||||
|
|
@ -160,6 +204,11 @@ let searchQueryFormEntity = reactive({
|
||||||
goodsDesc: '',
|
goodsDesc: '',
|
||||||
workOrder: '',
|
workOrder: '',
|
||||||
})
|
})
|
||||||
|
let selectedRows = ref([]) // 新增:存储选中的行
|
||||||
|
let showBatchEditDialog = ref(false) // 新增:控制批量编辑对话框显示
|
||||||
|
const batchEditForm = reactive({
|
||||||
|
pickingDate: ''
|
||||||
|
}) // 新增:批量编辑表单
|
||||||
let searchQueryFormRef = ref()
|
let searchQueryFormRef = ref()
|
||||||
let rowEditFlag = ref(false)
|
let rowEditFlag = ref(false)
|
||||||
let goodsId = ''
|
let goodsId = ''
|
||||||
|
|
@ -184,6 +233,75 @@ const resizeHeight = () => {
|
||||||
maxHeight.value = window.innerHeight * 0.55
|
maxHeight.value = window.innerHeight * 0.55
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 处理选择变化
|
||||||
|
const handleSelectionChange = (row) => {
|
||||||
|
if (row.checked) {
|
||||||
|
// 如果选中且不在列表中,则添加
|
||||||
|
if (!selectedRows.value.some(item => item.goodsId === row.goodsId)) {
|
||||||
|
selectedRows.value.push(row)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 如果取消选中,则从列表中移除
|
||||||
|
selectedRows.value = selectedRows.value.filter(item => item.goodsId !== row.goodsId)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 批量编辑处理
|
||||||
|
const handleBatchEdit = () => {
|
||||||
|
if (selectedRows.value.length === 0) {
|
||||||
|
ElMessage.warning('请至少选择一条记录')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
batchEditForm.pickingDate = ''
|
||||||
|
showBatchEditDialog.value = true
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleSelectAllChange = (val) => {
|
||||||
|
tableData.value.forEach(row => {
|
||||||
|
row.checked = val
|
||||||
|
})
|
||||||
|
|
||||||
|
if (val) {
|
||||||
|
// 全选
|
||||||
|
selectedRows.value = [...tableData.value]
|
||||||
|
} else {
|
||||||
|
// 取消全选
|
||||||
|
selectedRows.value = []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 保存批量编辑
|
||||||
|
const saveBatchEdit = (form) => {
|
||||||
|
if (!form.pickingDate) {
|
||||||
|
ElMessage.warning('请选择执行时间')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const taskIds = selectedRows.value.map(row => row.taskId)
|
||||||
|
const request = {
|
||||||
|
taskIds: taskIds,
|
||||||
|
pickingDate: form.pickingDate
|
||||||
|
}
|
||||||
|
|
||||||
|
// 需要在API中实现批量更新接口
|
||||||
|
batchEditDate(request).then((res) => {
|
||||||
|
if (res.data.code === 0) {
|
||||||
|
ElMessage.success('批量修改成功')
|
||||||
|
showBatchEditDialog.value = false
|
||||||
|
search()
|
||||||
|
// 清空选择
|
||||||
|
selectedRows.value.forEach(row => {
|
||||||
|
row.checked = false
|
||||||
|
})
|
||||||
|
selectedRows.value = []
|
||||||
|
} else {
|
||||||
|
ElMessage.error(res.data.message)
|
||||||
|
}
|
||||||
|
}).catch(() => {
|
||||||
|
ElMessage.error('批量修改失败')
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// 保存编辑
|
// 保存编辑
|
||||||
const saveEdit = (editForm) => {
|
const saveEdit = (editForm) => {
|
||||||
let request = {
|
let request = {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
package com.wms_main.model.vo.wms;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class OutsBatchEditDateVo {
|
||||||
|
private List<String> taskIds; // 任务ID列表
|
||||||
|
private Date pickingDate; // 统一设置的执行时间
|
||||||
|
}
|
||||||
|
|
@ -62,6 +62,11 @@ public interface ITaskQueryControllerService {
|
||||||
|
|
||||||
WmsApiResponse<String> editDate(OutsVo outsVo);
|
WmsApiResponse<String> editDate(OutsVo outsVo);
|
||||||
|
|
||||||
|
|
||||||
|
// ITaskQueryControllerService.java
|
||||||
|
WmsApiResponse<String> batchEditDate(OutsBatchEditDateVo batchEditDateVo);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新出库单信息
|
* 更新出库单信息
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -297,6 +297,76 @@ public class TaskQueryControllerServiceImpl implements ITaskQueryControllerServi
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WmsApiResponse<String> batchEditDate(OutsBatchEditDateVo batchEditDateVo) {
|
||||||
|
// 1. 参数校验
|
||||||
|
if (batchEditDateVo == null || batchEditDateVo.getTaskIds() == null || batchEditDateVo.getTaskIds().isEmpty()) {
|
||||||
|
return WmsApiResponse.error("任务ID列表不能为空", null);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (StringUtils.isEmpty(String.valueOf(batchEditDateVo.getPickingDate()))) {
|
||||||
|
return WmsApiResponse.error("请选择执行时间", null);
|
||||||
|
}
|
||||||
|
|
||||||
|
int successCount = 0;
|
||||||
|
int failCount = 0;
|
||||||
|
StringBuilder errorMsg = new StringBuilder();
|
||||||
|
|
||||||
|
// 2. 遍历任务ID列表,逐个更新
|
||||||
|
for (String taskId : batchEditDateVo.getTaskIds()) {
|
||||||
|
try {
|
||||||
|
// 查询原任务
|
||||||
|
TAppOuts existingOuts = appOutsService.getOne(new LambdaQueryWrapper<TAppOuts>()
|
||||||
|
.eq(TAppOuts::getTaskId, taskId));
|
||||||
|
|
||||||
|
if (existingOuts == null) {
|
||||||
|
errorMsg.append("任务ID: ").append(taskId).append(" 未找到对应的任务; ");
|
||||||
|
failCount++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (existingOuts.getDistributeNum() > 0) {
|
||||||
|
errorMsg.append("任务ID: ").append(taskId).append(" 已经开始执行; ");
|
||||||
|
failCount++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查是否重复修改
|
||||||
|
if (existingOuts.getPickingDate() != null && existingOuts.getPickingDate().equals(batchEditDateVo.getPickingDate())) {
|
||||||
|
errorMsg.append("任务ID: ").append(taskId).append(" 请勿重复修改; ");
|
||||||
|
failCount++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新执行时间
|
||||||
|
existingOuts.setPickingDate(batchEditDateVo.getPickingDate());
|
||||||
|
|
||||||
|
// 执行更新操作
|
||||||
|
boolean updateSuccess = appOutsService.updateById(existingOuts);
|
||||||
|
|
||||||
|
if (updateSuccess) {
|
||||||
|
successCount++;
|
||||||
|
} else {
|
||||||
|
errorMsg.append("任务ID: ").append(taskId).append(" 更新失败; ");
|
||||||
|
failCount++;
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
errorMsg.append("任务ID: ").append(taskId).append(" 更新异常: ").append(e.getMessage()).append("; ");
|
||||||
|
failCount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. 返回结果
|
||||||
|
if (successCount > 0 && failCount == 0) {
|
||||||
|
return WmsApiResponse.success("全部执行时间更新成功,共更新" + successCount + "条记录", null);
|
||||||
|
} else if (successCount > 0 && failCount > 0) {
|
||||||
|
return WmsApiResponse.success("部分执行时间更新成功,成功" + successCount + "条,失败" + failCount + "条。失败原因:" + errorMsg.toString(), null);
|
||||||
|
} else {
|
||||||
|
return WmsApiResponse.error("执行时间更新全部失败。失败原因:" + errorMsg.toString(), null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WmsApiResponse<String> updateOutsInfo(TAppPickTask appTask) {
|
public WmsApiResponse<String> updateOutsInfo(TAppPickTask appTask) {
|
||||||
if (appTask == null || StringUtils.isEmpty(appTask.getPickId())) {
|
if (appTask == null || StringUtils.isEmpty(appTask.getPickId())) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user