pda界面和功能优化,完善mes下发版辊字段
This commit is contained in:
63
pda/api/warehouse/inbound/bindTray.js
Normal file
63
pda/api/warehouse/inbound/bindTray.js
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
|
||||||
|
// 根据入库明细ID查询物料信息(入库绑盘用)
|
||||||
|
export function getMaterialByDetailId(detailId) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/getProductInfoByInDetailId',
|
||||||
|
method: 'get',
|
||||||
|
params: { detailId }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据辊号查询物料信息(入库绑盘用)
|
||||||
|
export function getMaterialByRollerNumber(rollerNumber) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/getStockinInfoByRollerNumber',
|
||||||
|
method: 'get',
|
||||||
|
params: { rollerNumber }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function submitBindTray(data) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/bindTray',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function submitBindTrayMsg(data) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/bindTrayMsgs',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取入库待处理单据列表
|
||||||
|
export function getInboundStockList(query) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/inboundStockList',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取入库单据子单列表
|
||||||
|
export function getDetailList(query) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/getDetailListByStockinId',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 生成入库作业
|
||||||
|
export function submitAddInJob(data) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/addInJob',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
27
pda/api/warehouse/inbound/cancelBindTrayByRoller.js
Normal file
27
pda/api/warehouse/inbound/cancelBindTrayByRoller.js
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 根据入库明细ID查询物料信息(入库绑盘用)
|
||||||
|
export function getMaterialByDetailId(detailId) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/getProductInfoByInDetailId',
|
||||||
|
method: 'get',
|
||||||
|
params: { detailId }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据辊号查询物料信息(入库绑盘用)
|
||||||
|
export function getTrayMsgByRollerNumber(rollerNumber) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/getTrayMsgByRollerNumber',
|
||||||
|
method: 'get',
|
||||||
|
params: { rollerNumber }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function submitCancelTrayMsg(data) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/cancelTrayMsgs',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
28
pda/api/warehouse/inbound/cancelBindTrayByTrayCode.js
Normal file
28
pda/api/warehouse/inbound/cancelBindTrayByTrayCode.js
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
export function getTrayCodeDetail(trayCode) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/getTrayBindMsgInfoByTrayCode',
|
||||||
|
method: 'get',
|
||||||
|
params: { trayCode }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 取消版辊绑定状态
|
||||||
|
export function cancelTrayMsg(data) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/cancelTrayMsg',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 取消当前托盘的所有绑定信息
|
||||||
|
export function cancelTrayMsgAllByTrayCode(data) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/cancelTrayMsgs',
|
||||||
|
method: 'post',
|
||||||
|
// data: { trayCode: trayCode }
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
10
pda/api/warehouse/inbound/emptyTray.js
Normal file
10
pda/api/warehouse/inbound/emptyTray.js
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 生成空托入库作业
|
||||||
|
export function submitAddEmptyTrayJob(data) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/addEmptyTrayJob',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
19
pda/api/warehouse/inbound/index.js
Normal file
19
pda/api/warehouse/inbound/index.js
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 获取入库待处理任务列表
|
||||||
|
export function getInboundTaskList(query) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/inboundTaskList',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取入库待处理单据列表
|
||||||
|
export function getInboundStockList(query) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/inboundStockList',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
1
pda/api/warehouse/inbound/supply.js
Normal file
1
pda/api/warehouse/inbound/supply.js
Normal file
@@ -0,0 +1 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
2
pda/api/warehouse/inventory/index.js
Normal file
2
pda/api/warehouse/inventory/index.js
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
38
pda/api/warehouse/inventory/inventoryConfirm.js
Normal file
38
pda/api/warehouse/inventory/inventoryConfirm.js
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 获取盘点待处理任务列表
|
||||||
|
export function getInventoryOutTaskList(query) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/inventoryOutTaskList',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取出库盘点任务库存
|
||||||
|
export function getTrayCodeDetail(trayCode) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/getInventoryOutInfoByTrayCode',
|
||||||
|
method: 'get',
|
||||||
|
params: { trayCode }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 确认版辊库存状态
|
||||||
|
export function confirmExcetion(data) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/inventoryStockExcetion',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 确认托盘盘点出库完成 - 盘点出库
|
||||||
|
export function inventoryTrayCodeComplete(data) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/inventoryTrayCodeComplete',
|
||||||
|
method: 'post',
|
||||||
|
// data: { trayCode: trayCode }
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
21
pda/api/warehouse/inventory/jobList.js
Normal file
21
pda/api/warehouse/inventory/jobList.js
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
|
||||||
|
// 获取盘点待处理任务列表
|
||||||
|
export function getInventoryOutTaskList(query) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/inventoryOutTaskList',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 确认托盘盘点出库完成 - 盘点出库
|
||||||
|
export function inventoryTrayCodeComplete(data) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/inventoryTrayCodeComplete',
|
||||||
|
method: 'post',
|
||||||
|
// data: { trayCode: trayCode }
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
29
pda/api/warehouse/outbound/confirm.js
Normal file
29
pda/api/warehouse/outbound/confirm.js
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 获取出库任务详情
|
||||||
|
export function getOutboundDetail(rollerNumber) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/getStockoutInfoByRollerNumber',
|
||||||
|
method: 'get',
|
||||||
|
params: { rollerNumber }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 确认版辊出库数量 - 单独出库确认
|
||||||
|
export function confirmOutbound(data) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/stockoutDetailComplete',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 版辊强制出库确认
|
||||||
|
export function rollerNumberComplete(data) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/rollerNumberComplete',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
18
pda/api/warehouse/outbound/container.js
Normal file
18
pda/api/warehouse/outbound/container.js
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 呼叫空托出库
|
||||||
|
* @param {String} cargoAreaId 库区ID
|
||||||
|
* @param {Number} palletType 托盘类型
|
||||||
|
*/
|
||||||
|
export function callStockOutForContainer(cargoAreaId, palletType) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/callStockOutForContainer',
|
||||||
|
method: 'post',
|
||||||
|
data: {
|
||||||
|
cargoAreaId: cargoAreaId,
|
||||||
|
palletType: palletType
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
20
pda/api/warehouse/outbound/exception.js
Normal file
20
pda/api/warehouse/outbound/exception.js
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 获取出库任务详情
|
||||||
|
export function getOutboundDetail(rollerNumber) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/getStockoutInfoByRollerNumber',
|
||||||
|
method: 'get',
|
||||||
|
params: { rollerNumber }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 提交出库异常确认
|
||||||
|
export function submitOutboundException(data) {
|
||||||
|
return request({
|
||||||
|
url: '/wms/outbound/exception',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
10
pda/api/warehouse/outbound/index.js
Normal file
10
pda/api/warehouse/outbound/index.js
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 获取出库待处理任务列表
|
||||||
|
export function getOutboundTaskList(query) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/outboundTaskList',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
40
pda/api/warehouse/outbound/trayConfirm.js
Normal file
40
pda/api/warehouse/outbound/trayConfirm.js
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 获取出库任务详情 - 拣选/常规出库
|
||||||
|
export function getTrayCodeDetail(trayCode) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/getStockoutInfoByTrayCode',
|
||||||
|
method: 'get',
|
||||||
|
params: { trayCode }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 确认版辊出库数量 - 单独出库确认
|
||||||
|
export function confirmOutbound(data) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/stockoutDetailComplete',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 确认托盘出库完成 - 单据出库
|
||||||
|
export function stockoutTrayCodeComplete(trayCode) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/stockoutTrayCodeComplete',
|
||||||
|
method: 'post',
|
||||||
|
// data: { trayCode: trayCode }
|
||||||
|
params: { trayCode }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 确认托盘出库完成 - 一键确认
|
||||||
|
export function stockoutTrayCodeCompleteAll(trayCode) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/stockoutTrayCodeCompleteAll',
|
||||||
|
method: 'post',
|
||||||
|
// data: { trayCode: trayCode }
|
||||||
|
params: { trayCode }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
29
pda/api/warehouse/outbound/trayConfirmManual.js
Normal file
29
pda/api/warehouse/outbound/trayConfirmManual.js
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 获取出库任务详情 - 手动指定出库
|
||||||
|
export function getTrayCodeDetailForManual(trayCode) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/getManualStockoutInfoByTrayCode',
|
||||||
|
method: 'get',
|
||||||
|
params: { trayCode }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 确认版辊出库数量 - 单独出库确认
|
||||||
|
export function confirmOutbound(data) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/stockoutDetailComplete',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 确认托盘出库完成 - 手动出库
|
||||||
|
export function stockoutTrayCodeCompleteManual(trayCode) {
|
||||||
|
return request({
|
||||||
|
url: '/pda/stockoutTrayCodeCompleteManual',
|
||||||
|
method: 'post',
|
||||||
|
// data: { trayCode: trayCode }
|
||||||
|
params: { trayCode }
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -71,9 +71,14 @@
|
|||||||
"navigationBarTitleText": "入库绑盘"
|
"navigationBarTitleText": "入库绑盘"
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
"path": "pages/warehouse/inbound/cancelBindTray",
|
"path": "pages/warehouse/inbound/cancelBindTrayByTrayCode",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "版辊绑定取消"
|
"navigationBarTitleText": "取消版辊绑定信息"
|
||||||
|
}
|
||||||
|
},{
|
||||||
|
"path": "pages/warehouse/inbound/cancelBindTrayByRoller",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "单版辊绑定信息作废"
|
||||||
}
|
}
|
||||||
},{
|
},{
|
||||||
"path": "pages/warehouse/inbound/emptyTray",
|
"path": "pages/warehouse/inbound/emptyTray",
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="page-container">
|
<view class="page-container" style="margin-top: 50rpx;">
|
||||||
<!-- 顶部区域 -->
|
<!-- 顶部区域 -->
|
||||||
<view class="header">
|
<view class="header">
|
||||||
<view class="header-info">
|
<view class="header-info">
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
<uni-icons type="download" size="28" color="#fff"></uni-icons>
|
<uni-icons type="download" size="28" color="#fff"></uni-icons>
|
||||||
</view>
|
</view>
|
||||||
<text class="menu-label">入库管理</text>
|
<text class="menu-label">入库管理</text>
|
||||||
<text class="menu-desc">入库绑盘 / 补料入库</text>
|
<text class="menu-desc">入库绑盘 / 空托入库</text>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="menu-item" @click="navigateTo('/pages/warehouse/outbound/index')">
|
<view class="menu-item" @click="navigateTo('/pages/warehouse/outbound/index')">
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
<uni-icons type="upload" size="28" color="#fff"></uni-icons>
|
<uni-icons type="upload" size="28" color="#fff"></uni-icons>
|
||||||
</view>
|
</view>
|
||||||
<text class="menu-label">出库管理</text>
|
<text class="menu-label">出库管理</text>
|
||||||
<text class="menu-desc">出库确认 / 异常确认</text>
|
<text class="menu-desc">出库确认 / 空托呼叫</text>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="menu-item" @click="navigateTo('/pages/warehouse/inventory/index')">
|
<view class="menu-item" @click="navigateTo('/pages/warehouse/inventory/index')">
|
||||||
|
|||||||
@@ -68,21 +68,25 @@
|
|||||||
<text class="info-label">物料名称</text>
|
<text class="info-label">物料名称</text>
|
||||||
<text class="info-value">{{ currentMaterial.productName }}</text>
|
<text class="info-value">{{ currentMaterial.productName }}</text>
|
||||||
</view> -->
|
</view> -->
|
||||||
|
<view class="info-row">
|
||||||
|
<text class="info-label">子单号</text>
|
||||||
|
<text class="info-value">{{ currentMaterial.stockinDetailId }}</text>
|
||||||
|
</view>
|
||||||
<view class="info-row">
|
<view class="info-row">
|
||||||
<text class="info-label">辊号</text>
|
<text class="info-label">辊号</text>
|
||||||
<text class="info-value">{{ currentMaterial.rollerNumber }}</text>
|
<text class="info-value">{{ currentMaterial.rollerNumber }}</text>
|
||||||
</view>
|
</view>
|
||||||
|
<view class="info-row">
|
||||||
|
<text class="info-label">产品名称</text>
|
||||||
|
<text class="info-value">{{ currentMaterial.productName }}</text>
|
||||||
|
</view>
|
||||||
<view class="info-row">
|
<view class="info-row">
|
||||||
<text class="info-label">颜色</text>
|
<text class="info-label">版长</text>
|
||||||
<text class="info-value">{{ currentMaterial.color }}</text>
|
<text class="info-value">{{ currentMaterial.length }}</text>
|
||||||
</view>
|
</view>
|
||||||
<!-- <view class="info-row">
|
<view class="info-row">
|
||||||
<text class="info-label">色序</text>
|
<text class="info-label">版周</text>
|
||||||
<text class="info-value">{{ currentMaterial.colorSequence }}</text>
|
<text class="info-value">{{ currentMaterial.perimeter }}</text>
|
||||||
</view> -->
|
|
||||||
<view class="info-row">
|
|
||||||
<text class="info-label">子单号</text>
|
|
||||||
<text class="info-value">{{ currentMaterial.stockinDetailId }}</text>
|
|
||||||
</view>
|
</view>
|
||||||
<view class="form-item">
|
<view class="form-item">
|
||||||
<text class="form-label">绑定数量</text>
|
<text class="form-label">绑定数量</text>
|
||||||
@@ -114,17 +118,17 @@
|
|||||||
<text class="item-label">辊号</text>
|
<text class="item-label">辊号</text>
|
||||||
<text class="item-value">{{ item.rollerNumber }}</text>
|
<text class="item-value">{{ item.rollerNumber }}</text>
|
||||||
</view>
|
</view>
|
||||||
<!-- <view class="item-row">
|
<view class="item-row">
|
||||||
<text class="item-label">色序</text>
|
<text class="item-label">产品名称</text>
|
||||||
<text class="item-value">{{ item.colorSequence }}</text>
|
<text class="item-value">{{ item.productName }}</text>
|
||||||
</view> -->
|
|
||||||
<view class="item-row">
|
|
||||||
<text class="item-label">颜色</text>
|
|
||||||
<text class="item-value">{{ item.color }}</text>
|
|
||||||
</view>
|
</view>
|
||||||
<view class="item-row">
|
<view class="item-row">
|
||||||
<text class="item-label">规格</text>
|
<text class="item-label">版长</text>
|
||||||
<text class="item-value">{{ item.spec }}</text>
|
<text class="item-value">{{ item.length }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="item-row">
|
||||||
|
<text class="item-label">版周</text>
|
||||||
|
<text class="item-value">{{ item.perimeter }}</text>
|
||||||
</view>
|
</view>
|
||||||
<view class="item-row">
|
<view class="item-row">
|
||||||
<text class="item-label">绑定数量</text>
|
<text class="item-label">绑定数量</text>
|
||||||
@@ -157,7 +161,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getMaterialByDetailId, getMaterialByRollerNumber, submitBindTray, submitBindTrayMsg, submitAddInJob, getInboundStockList, getDetailList } from '@/api/warehouse/inbound'
|
import { getMaterialByDetailId, getMaterialByRollerNumber, submitBindTray, submitBindTrayMsg, submitAddInJob, getInboundStockList, getDetailList } from '@/api/warehouse/inbound/bindTray'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
@@ -556,7 +560,7 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
padding: 20rpx 0;
|
padding: 10rpx 0;
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -63,7 +63,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getMaterialByDetailId, getTrayMsgByRollerNumber, submitCancelTray, submitCancelTrayMsg } from '@/api/warehouse/inbound'
|
import { getMaterialByDetailId, getTrayMsgByRollerNumber, submitCancelTrayMsg } from '@/api/warehouse/inbound/cancelBindTrayByRoller'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
424
pda/pages/warehouse/inbound/cancelBindTrayByTrayCode.vue
Normal file
424
pda/pages/warehouse/inbound/cancelBindTrayByTrayCode.vue
Normal file
@@ -0,0 +1,424 @@
|
|||||||
|
<template>
|
||||||
|
<view class="page-container">
|
||||||
|
<!-- 任务信息 -->
|
||||||
|
<view class="task-info" v-if="taskNo">
|
||||||
|
<text class="task-label">出库任务编号</text>
|
||||||
|
<text class="task-value">{{ taskNo }}</text>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 扫码区域 -->
|
||||||
|
<view class="scan-section">
|
||||||
|
<view class="scan-header">
|
||||||
|
<text class="scan-title">扫描绑定托盘条码</text>
|
||||||
|
<view class="scan-btn" @click="startScan">
|
||||||
|
<uni-icons type="scan" size="18" color="#fa8c16"></uni-icons>
|
||||||
|
<text class="scan-btn-text orange">扫码</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="input-wrap">
|
||||||
|
<input class="scan-input" v-model="barcode" placeholder="请输入或扫描托盘条码"
|
||||||
|
@confirm="handleBarcode" focus />
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 出库信息 -->
|
||||||
|
<view class="form-section" v-for="(item, index) in inTrayMsgList" :key="index">
|
||||||
|
<view class="scan-header">
|
||||||
|
<text class="scan-title">绑定信息</text>
|
||||||
|
<view class="info-btn">
|
||||||
|
<button class="scan-btn-text red" @click="submitCancelTrayAction(item)">确认取消</button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="info-row">
|
||||||
|
<text class="info-label">版辊编号</text>
|
||||||
|
<text class="info-value">{{ item.rollerNumber }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="info-row">
|
||||||
|
<text class="info-label">产品名称</text>
|
||||||
|
<text class="info-value">{{ item.productName }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="info-row">
|
||||||
|
<text class="info-label">版长</text>
|
||||||
|
<text class="info-value">{{ item.length }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="info-row">
|
||||||
|
<text class="info-label">版周</text>
|
||||||
|
<text class="info-value">{{ item.perimeter }}</text>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 操作按钮 -->
|
||||||
|
<view class="btn-section" >
|
||||||
|
<button class="btn btn-orange" v-if="inTrayMsgList" @click="cancelBindTrayMsgsAll">取消全部</button>
|
||||||
|
<button class="btn btn-default" @click="resetForm">重置</button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { getTrayCodeDetail } from '@/api/warehouse/inbound/cancelBindTrayByTrayCode'
|
||||||
|
import { cancelTrayMsg } from '@/api/warehouse/inbound/cancelBindTrayByTrayCode'
|
||||||
|
import { cancelTrayMsgAllByTrayCode } from '@/api/warehouse/inbound/cancelBindTrayByTrayCode'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
taskNo: '',
|
||||||
|
barcode: '',
|
||||||
|
traCode: '',
|
||||||
|
outInventoryInfo: null,
|
||||||
|
inTrayMsgList: [],
|
||||||
|
|
||||||
|
confirmQty: '',
|
||||||
|
form: {
|
||||||
|
remark: ''
|
||||||
|
},
|
||||||
|
|
||||||
|
productDetailStatusMap: {
|
||||||
|
1: '正常',
|
||||||
|
2: '异常产品',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad(options) {
|
||||||
|
if (options.taskNo) {
|
||||||
|
this.taskNo = options.taskNo
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
startScan() {
|
||||||
|
var that = this
|
||||||
|
uni.scanCode({
|
||||||
|
onlyFromCamera: false,
|
||||||
|
scanType: ['barCode', 'qrCode'],
|
||||||
|
success: function(res) {
|
||||||
|
that.barcode = res.result
|
||||||
|
that.handleBarcode()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
handleBarcode() {
|
||||||
|
if (!this.barcode) {
|
||||||
|
this.$modal.msg('请输入托盘条码')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var that = this
|
||||||
|
// var params = { taskNo: this.taskNo, barcode: this.barcode }
|
||||||
|
var params = { barcode: this.barcode }
|
||||||
|
|
||||||
|
getTrayCodeDetail(this.barcode).then(function(res) {
|
||||||
|
if (Array.isArray(res.data)) {
|
||||||
|
that.inTrayMsgList = res.data
|
||||||
|
} else if (res.data) {
|
||||||
|
that.inTrayMsgList = [res.data]
|
||||||
|
} else {
|
||||||
|
that.inTrayMsgList = []
|
||||||
|
}
|
||||||
|
|
||||||
|
if (that.inTrayMsgList.length > 0) {
|
||||||
|
that.$modal.msgSuccess('获取到 ' + that.inTrayMsgList.length + ' 条绑定信息')
|
||||||
|
} else {
|
||||||
|
that.$modal.msg('未找到该托盘信息')
|
||||||
|
}
|
||||||
|
}).catch(function() {
|
||||||
|
that.inTrayMsgList = []
|
||||||
|
that.$modal.msg('找不到托盘明细信息,可能是任务类型不符或已确认出库完成')
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 取消版辊绑定信息
|
||||||
|
submitCancelTrayAction(item) {
|
||||||
|
// 构造你需要的参数
|
||||||
|
var params = {
|
||||||
|
barcode: item.rollerNumber,
|
||||||
|
productStatus: item.productStatus
|
||||||
|
}
|
||||||
|
|
||||||
|
uni.showLoading({ title: '提交中...' })
|
||||||
|
// TODO: 替换为你实际的后端确认接口
|
||||||
|
cancelTrayMsg(params).then(res => {
|
||||||
|
uni.hideLoading()
|
||||||
|
this.$modal.msgSuccess('版辊 ' + item.rollerNumber + ' 绑盘信息已取消')
|
||||||
|
// 可选:出库成功后从列表中移除该项,避免重复点击
|
||||||
|
this.inTrayMsgList = this.inTrayMsgList.filter(i => i.rollerNumber !== item.rollerNumber)
|
||||||
|
}).catch(err => {
|
||||||
|
// uni.hideLoading()
|
||||||
|
// this.$modal.msg('出库失败', err)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
//托盘物料盘点完成确认回流
|
||||||
|
cancelBindTrayMsgsAll() {
|
||||||
|
if (!this.barcode) {
|
||||||
|
this.$modal.msg('请输入托盘号')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var data = {
|
||||||
|
// taskNo: this.taskNo,
|
||||||
|
barcode: this.barcode,
|
||||||
|
}
|
||||||
|
|
||||||
|
// console.log(this.barcode)
|
||||||
|
|
||||||
|
this.$modal.confirm('取消全部操作会将该托盘所有版辊绑定信息移除,确认执行吗?后续你仍然可以重新进行绑定操作').then(() => {
|
||||||
|
cancelTrayMsgAllByTrayCode(data).then(() => {
|
||||||
|
this.$modal.msgSuccess(this.barcode + '托盘绑定信息已全部取消,可继续执行绑定操作')
|
||||||
|
this.inTrayMsgList = []
|
||||||
|
this.resetForm()
|
||||||
|
}).catch(() => {
|
||||||
|
// 全局拦截器通常已处理错误弹窗,这里可只处理状态重置
|
||||||
|
// console.log('出库确认失败')
|
||||||
|
})
|
||||||
|
}).then(() => {
|
||||||
|
this.$modal.msgSuccess(this.barcode + '取消成功');
|
||||||
|
this.inTrayMsgList = []
|
||||||
|
this.resetForm();
|
||||||
|
}).catch(() => {
|
||||||
|
// 全局拦截器通常已处理错误弹窗,这里可只处理状态重置
|
||||||
|
// console.log('出库确认失败或用户取消')
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
resetForm() {
|
||||||
|
this.barcode = ''
|
||||||
|
this.outInventoryInfo = null
|
||||||
|
this.inTrayMsgList = []
|
||||||
|
this.confirmQty = ''
|
||||||
|
this.form = {
|
||||||
|
remark: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
page {
|
||||||
|
background-color: #f5f7fa;
|
||||||
|
min-height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-container {
|
||||||
|
padding: 24rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.task-info {
|
||||||
|
background: #fff7e6;
|
||||||
|
border-radius: 12rpx;
|
||||||
|
padding: 20rpx 24rpx;
|
||||||
|
margin-bottom: 24rpx;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.task-label {
|
||||||
|
font-size: 26rpx;
|
||||||
|
color: #fa8c16;
|
||||||
|
}
|
||||||
|
|
||||||
|
.task-value {
|
||||||
|
font-size: 26rpx;
|
||||||
|
color: #333;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scan-section {
|
||||||
|
background: #fff;
|
||||||
|
border-radius: 16rpx;
|
||||||
|
padding: 28rpx;
|
||||||
|
margin-bottom: 24rpx;
|
||||||
|
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04);
|
||||||
|
}
|
||||||
|
|
||||||
|
.scan-header {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scan-title {
|
||||||
|
font-size: 30rpx;
|
||||||
|
font-weight: 500;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scan-btn {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
padding: 8rpx 20rpx;
|
||||||
|
border: 1rpx solid #fa8c16;
|
||||||
|
border-radius: 8rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scan-btn-text {
|
||||||
|
font-size: 24rpx;
|
||||||
|
margin-left: 8rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scan-btn-text.orange {
|
||||||
|
color: #fa8c16;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scan-btn-text.green {
|
||||||
|
color: #fff;
|
||||||
|
background-color: #00aa00;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scan-btn-text.red {
|
||||||
|
color: #fff;
|
||||||
|
background-color: #ef494c;
|
||||||
|
}
|
||||||
|
|
||||||
|
.input-wrap {
|
||||||
|
border: 1rpx solid #e8e8e8;
|
||||||
|
border-radius: 8rpx;
|
||||||
|
padding: 4rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scan-input {
|
||||||
|
font-size: 28rpx;
|
||||||
|
padding: 16rpx;
|
||||||
|
word-break: break-all;
|
||||||
|
width: 100%;
|
||||||
|
height: auto;
|
||||||
|
line-height: 1.4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-section {
|
||||||
|
background: #fff;
|
||||||
|
border-radius: 16rpx;
|
||||||
|
padding: 28rpx;
|
||||||
|
margin-bottom: 24rpx;
|
||||||
|
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04);
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-title {
|
||||||
|
font-size: 30rpx;
|
||||||
|
font-weight: 500;
|
||||||
|
color: #333;
|
||||||
|
margin-bottom: 24rpx;
|
||||||
|
padding-bottom: 16rpx;
|
||||||
|
border-bottom: 1rpx solid #f0f0f0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-section-input {
|
||||||
|
flex: 1;
|
||||||
|
font-size: 28rpx; /* ✅ 关键:字体大小必须与 label 一致 */
|
||||||
|
color: #333;
|
||||||
|
text-align: right; /* ✅ 关键:内容靠右对齐 */
|
||||||
|
height: 28rpx; /* ✅ 关键:明确设置高度 */
|
||||||
|
line-height: 28rpx; /* ✅ 关键:行高必须与 label 完全一致,解决多端对齐差异 */
|
||||||
|
padding: 0; /* ✅ 关键:清除 input 默认的 padding,防止错位 */
|
||||||
|
margin: 0; /* 清除默认 margin */
|
||||||
|
border: none; /* 如果需要无边框效果 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
padding: 16rpx 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-label {
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: #666;
|
||||||
|
width: 160rpx;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-input {
|
||||||
|
flex: 1;
|
||||||
|
font-size: 28rpx;
|
||||||
|
border: 1rpx solid #e8e8e8;
|
||||||
|
border-radius: 8rpx;
|
||||||
|
padding: 16rpx;
|
||||||
|
width: 100%;
|
||||||
|
height: auto;
|
||||||
|
line-height: 1.4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-row {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 12rpx 0;
|
||||||
|
border-bottom: 1rpx solid #f5f5f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-label {
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-value {
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-value.highlight {
|
||||||
|
color: #fa8c16;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-section {
|
||||||
|
padding: 24rpx 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
font-size: 30rpx;
|
||||||
|
border-radius: 12rpx;
|
||||||
|
margin-bottom: 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-orange {
|
||||||
|
background: #fa8c16;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-green {
|
||||||
|
background: #0cb306;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-default {
|
||||||
|
background: #fff;
|
||||||
|
color: #666;
|
||||||
|
border: 1rpx solid #d9d9d9;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ✅ 新增:按钮组容器,让两个按钮并排 */
|
||||||
|
.btn-group {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-left: 16rpx; /* 与输入框的间距 */
|
||||||
|
margin-top: 10rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 按钮基础样式(最大按钮) */
|
||||||
|
.btn-max {
|
||||||
|
font-size: 22rpx;
|
||||||
|
color: #fafafa;
|
||||||
|
background-color: #fa8c16;
|
||||||
|
border: 1rpx solid #fa8c16;
|
||||||
|
border-radius: 8rpx;
|
||||||
|
padding: 0 100rpx;
|
||||||
|
height: 50rpx;
|
||||||
|
line-height: 50rpx;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ✅ 新增:重置按钮样式(与最大按钮之间留一点间距) */
|
||||||
|
.btn-reset {
|
||||||
|
color: #fa8c16;
|
||||||
|
margin-right: 12rpx;
|
||||||
|
background-color: #fff7e6;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getMaterialByBarcode, submitSupplyInbound, submitAddEmptyTrayJob} from '@/api/warehouse/inbound'
|
import { getMaterialByBarcode, submitSupplyInbound, submitAddEmptyTrayJob} from '@/api/warehouse/inbound/emptyTray'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
|
|||||||
@@ -15,14 +15,27 @@
|
|||||||
<uni-icons type="right" size="18" color="#ccc"></uni-icons>
|
<uni-icons type="right" size="18" color="#ccc"></uni-icons>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="menu-card" @click="navigateTo('/pages/warehouse/inbound/cancelBindTray')">
|
<view class="menu-card" @click="navigateTo('/pages/warehouse/inbound/cancelBindTrayByTrayCode')">
|
||||||
|
<view class="card-left">
|
||||||
|
<view class="card-icon red">
|
||||||
|
<uni-icons type="scan" size="24" color="#fff"></uni-icons>
|
||||||
|
</view>
|
||||||
|
<view class="card-info">
|
||||||
|
<text class="card-title">选择托盘作废绑定信息</text>
|
||||||
|
<text class="card-desc">扫描或输入托盘条码选择版辊绑盘信息作废</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<uni-icons type="right" size="18" color="#ccc"></uni-icons>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="menu-card" @click="navigateTo('/pages/warehouse/inbound/cancelBindTrayByRoller')">
|
||||||
<view class="card-left">
|
<view class="card-left">
|
||||||
<view class="card-icon orange">
|
<view class="card-icon orange">
|
||||||
<uni-icons type="scan" size="24" color="#fff"></uni-icons>
|
<uni-icons type="scan" size="24" color="#fff"></uni-icons>
|
||||||
</view>
|
</view>
|
||||||
<view class="card-info">
|
<view class="card-info">
|
||||||
<text class="card-title">入库绑盘作废</text>
|
<text class="card-title">版辊绑定信息作废</text>
|
||||||
<text class="card-desc">扫描物料条码进行绑盘作废操作</text>
|
<text class="card-desc">扫描或输入辊号执行当前版辊绑盘信息作废</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<uni-icons type="right" size="18" color="#ccc"></uni-icons>
|
<uni-icons type="right" size="18" color="#ccc"></uni-icons>
|
||||||
@@ -41,18 +54,6 @@
|
|||||||
<uni-icons type="right" size="18" color="#ccc"></uni-icons>
|
<uni-icons type="right" size="18" color="#ccc"></uni-icons>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- <view class="menu-card" @click="navigateTo('/pages/warehouse/inbound/supply')">
|
|
||||||
<view class="card-left">
|
|
||||||
<view class="card-icon green">
|
|
||||||
<uni-icons type="plus" size="24" color="#fff"></uni-icons>
|
|
||||||
</view>
|
|
||||||
<view class="card-info">
|
|
||||||
<text class="card-title">补料入库</text>
|
|
||||||
<text class="card-desc">产线补料申请入库操作</text>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<uni-icons type="right" size="18" color="#ccc"></uni-icons>
|
|
||||||
</view> -->
|
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- 待处理单据 -->
|
<!-- 待处理单据 -->
|
||||||
@@ -110,7 +111,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getInboundTaskList, getInboundStockList } from '@/api/warehouse/inbound'
|
import { getInboundTaskList, getInboundStockList } from '@/api/warehouse/inbound/index'
|
||||||
import UniIcons from "../../../uni_modules/uni-icons/components/uni-icons/uni-icons.vue";
|
import UniIcons from "../../../uni_modules/uni-icons/components/uni-icons/uni-icons.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -213,6 +214,10 @@
|
|||||||
.card-icon.orange {
|
.card-icon.orange {
|
||||||
background: linear-gradient(135deg, #f8b12e, #f5eb69);
|
background: linear-gradient(135deg, #f8b12e, #f5eb69);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.card-icon.red {
|
||||||
|
background: linear-gradient(135deg, #df5254, #f56c6e);
|
||||||
|
}
|
||||||
|
|
||||||
.card-info {
|
.card-info {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|||||||
@@ -54,7 +54,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getInventoryOutTaskList, getTrayCodeDetail, confirmExcetion, inventoryTrayCodeComplete } from '@/api/warehouse/inventory'
|
import { getInventoryOutTaskList, getTrayCodeDetail, confirmExcetion, inventoryTrayCodeComplete } from '@/api/warehouse/inventory/inventoryConfirm'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
|
|||||||
@@ -80,8 +80,8 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getInventoryOutTaskList } from '@/api/warehouse/inventory'
|
import { getInventoryOutTaskList } from '@/api/warehouse/inventory/jobList'
|
||||||
import { inventoryTrayCodeComplete } from '@/api/warehouse/inventory'
|
import { inventoryTrayCodeComplete } from '@/api/warehouse/inventory/jobList'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
|
|||||||
@@ -47,12 +47,12 @@
|
|||||||
<text class="info-value">{{ outboundInfo.color }}</text>
|
<text class="info-value">{{ outboundInfo.color }}</text>
|
||||||
</view>
|
</view>
|
||||||
<view class="info-row">
|
<view class="info-row">
|
||||||
<text class="info-label">色序</text>
|
<text class="info-label">版长</text>
|
||||||
<text class="info-value">{{ outboundInfo.colorSequence }}</text>
|
<text class="info-value">{{ outboundInfo.length }}</text>
|
||||||
</view>
|
</view>
|
||||||
<view class="info-row">
|
<view class="info-row">
|
||||||
<text class="info-label">规格</text>
|
<text class="info-label">版周</text>
|
||||||
<text class="info-value">{{ outboundInfo.spec }}</text>
|
<text class="info-value">{{ outboundInfo.perimeter }}</text>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- <view class="info-row">
|
<!-- <view class="info-row">
|
||||||
@@ -107,7 +107,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getOutboundDetail, confirmOutbound, rollerNumberComplete } from '@/api/warehouse/outbound'
|
import { getOutboundDetail, confirmOutbound, rollerNumberComplete } from '@/api/warehouse/outbound/confirm'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getOutboundDetail, callStockOutForContainer, confirmOutbound } from '@/api/warehouse/outbound'
|
import { callStockOutForContainer } from '@/api/warehouse/outbound/container'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
|
|||||||
@@ -86,7 +86,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getOutboundDetail, submitOutboundException } from '@/api/warehouse/outbound'
|
import { getOutboundDetail, submitOutboundException } from '@/api/warehouse/outbound/exception'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
|
|||||||
@@ -135,7 +135,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getOutboundTaskList } from '@/api/warehouse/outbound'
|
import { getOutboundTaskList } from '@/api/warehouse/outbound/index'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
|
|||||||
@@ -65,7 +65,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getOutboundDetail, getTrayCodeDetail, confirmOutbound, stockoutTrayCodeComplete, stockoutTrayCodeCompleteAll } from '@/api/warehouse/outbound'
|
import { getTrayCodeDetail, confirmOutbound, stockoutTrayCodeComplete, stockoutTrayCodeCompleteAll } from '@/api/warehouse/outbound/trayConfirm'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
|
|||||||
@@ -69,7 +69,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getTrayCodeDetailForManual, confirmOutbound, stockoutTrayCodeCompleteManual } from '@/api/warehouse/outbound'
|
import { getTrayCodeDetailForManual, confirmOutbound, stockoutTrayCodeCompleteManual } from '@/api/warehouse/outbound/trayConfirmManual'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ public class ApiErpService implements IApiErpService {
|
|||||||
.stockinId((stockinId))
|
.stockinId((stockinId))
|
||||||
.inType("1")
|
.inType("1")
|
||||||
.stockSource("ERP")
|
.stockSource("ERP")
|
||||||
.status(StockStatusEnum.CREATE.getCode())
|
.status(StockStatusEnum.RUNNING.getCode())
|
||||||
.createDate(DateUtil.date())
|
.createDate(DateUtil.date())
|
||||||
.erpBill(docNo)
|
.erpBill(docNo)
|
||||||
.warehouseId("01")
|
.warehouseId("01")
|
||||||
@@ -205,7 +205,7 @@ public class ApiErpService implements IApiErpService {
|
|||||||
.stockoutId((stockoutId))
|
.stockoutId((stockoutId))
|
||||||
.outType("1")
|
.outType("1")
|
||||||
.stockSource("ERP")
|
.stockSource("ERP")
|
||||||
.status(StockStatusEnum.CREATE.getCode())
|
.status(StockStatusEnum.RUNNING.getCode())
|
||||||
.createDate(DateUtil.date())
|
.createDate(DateUtil.date())
|
||||||
.erpBill(docNo)
|
.erpBill(docNo)
|
||||||
.warehouseId("01")
|
.warehouseId("01")
|
||||||
|
|||||||
@@ -136,13 +136,13 @@ public class BasStock extends BaseEntity
|
|||||||
@Excel(name = "供应商名称")
|
@Excel(name = "供应商名称")
|
||||||
private String supplierName;
|
private String supplierName;
|
||||||
|
|
||||||
// /** 托盘类型 */
|
/** 版长 */
|
||||||
// @Excel(name = "托盘类型")
|
@Excel(name = "版长")
|
||||||
// private int trayType;
|
private BigDecimal length;
|
||||||
//
|
//
|
||||||
// /** 托盘可用位置 */
|
/** 版周 */
|
||||||
// @Excel(name = "可用位置")
|
@Excel(name = "版周")
|
||||||
// private int availablePlace;
|
private BigDecimal perimeter;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,6 +46,10 @@ public class InTrayMsg
|
|||||||
@Excel(name = "物料编码")
|
@Excel(name = "物料编码")
|
||||||
private String productId;
|
private String productId;
|
||||||
|
|
||||||
|
/** 物料名称 */
|
||||||
|
@Excel(name = "物料名称")
|
||||||
|
private String productName;
|
||||||
|
|
||||||
/** 绑定数量 */
|
/** 绑定数量 */
|
||||||
@Excel(name = "绑定数量")
|
@Excel(name = "绑定数量")
|
||||||
private BigDecimal quantity;
|
private BigDecimal quantity;
|
||||||
@@ -78,6 +82,14 @@ public class InTrayMsg
|
|||||||
@Excel(name = "色序")
|
@Excel(name = "色序")
|
||||||
private Integer colorSequence;
|
private Integer colorSequence;
|
||||||
|
|
||||||
|
/** 版长 */
|
||||||
|
@Excel(name = "版长")
|
||||||
|
private BigDecimal length;
|
||||||
|
|
||||||
|
/** 版周 */
|
||||||
|
@Excel(name = "版周")
|
||||||
|
private BigDecimal perimeter;
|
||||||
|
|
||||||
/** 颜色 */
|
/** 颜色 */
|
||||||
@Excel(name = "颜色")
|
@Excel(name = "颜色")
|
||||||
private String color;
|
private String color;
|
||||||
|
|||||||
@@ -19,6 +19,14 @@ public interface IInTrayMsgService
|
|||||||
*/
|
*/
|
||||||
public InTrayMsg selectInTrayMsgById(Long id);
|
public InTrayMsg selectInTrayMsgById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询入库信息
|
||||||
|
*
|
||||||
|
* @param rollerNumber 辊号
|
||||||
|
* @return 入库信息
|
||||||
|
*/
|
||||||
|
public InTrayMsg selectInTrayMsgByRollerNumber(String rollerNumber);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询入库信息列表
|
* 查询入库信息列表
|
||||||
*
|
*
|
||||||
@@ -59,7 +67,6 @@ public interface IInTrayMsgService
|
|||||||
*/
|
*/
|
||||||
public int deleteInTrayMsgById(Long id);
|
public int deleteInTrayMsgById(Long id);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除入库信息信息
|
* 删除入库信息信息
|
||||||
*
|
*
|
||||||
@@ -68,7 +75,6 @@ public interface IInTrayMsgService
|
|||||||
*/
|
*/
|
||||||
public int deleteInTrayMsgByTrayCode(String trayCode);
|
public int deleteInTrayMsgByTrayCode(String trayCode);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除入库信息信息
|
* 删除入库信息信息
|
||||||
*
|
*
|
||||||
@@ -77,7 +83,6 @@ public interface IInTrayMsgService
|
|||||||
*/
|
*/
|
||||||
public int deleteInTrayMsgByRollerNumber(String rollerNumber);
|
public int deleteInTrayMsgByRollerNumber(String rollerNumber);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除入库信息信息
|
* 删除入库信息信息
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -32,6 +32,18 @@ public class InTrayMsgServiceImpl implements IInTrayMsgService
|
|||||||
return inTrayMsgMapper.selectInTrayMsgById(id);
|
return inTrayMsgMapper.selectInTrayMsgById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询入库信息
|
||||||
|
*
|
||||||
|
* @param rollerNumber 入库信息主键
|
||||||
|
* @return 入库信息
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public InTrayMsg selectInTrayMsgByRollerNumber(String rollerNumber)
|
||||||
|
{
|
||||||
|
return inTrayMsgMapper.selectInTrayMsgByRollerNumber(rollerNumber);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询入库信息列表
|
* 查询入库信息列表
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -395,6 +395,7 @@ public class MydoJobServiceImpl implements IMydoJobService
|
|||||||
//每条子任务生成一条库存信息
|
//每条子任务生成一条库存信息
|
||||||
for (MydoJobDetail detail : details){
|
for (MydoJobDetail detail : details){
|
||||||
BasStock stock = basStockService.selectBasStockByRollerNumber(detail.getRollerNumber());
|
BasStock stock = basStockService.selectBasStockByRollerNumber(detail.getRollerNumber());
|
||||||
|
InTrayMsg inTrayMsg = inTrayMsgService.selectInTrayMsgByRollerNumber(detail.getRollerNumber());//获取当前板棍绑定信息 - 用于插入库存和移除绑定
|
||||||
//常规入库没有当前板棍库存的情况
|
//常规入库没有当前板棍库存的情况
|
||||||
if (ObjUtil.isNull(stock)){
|
if (ObjUtil.isNull(stock)){
|
||||||
//物料数量固定为1,辊号唯一
|
//物料数量固定为1,辊号唯一
|
||||||
@@ -407,28 +408,18 @@ public class MydoJobServiceImpl implements IMydoJobService
|
|||||||
.trayCode(detail.getTrayCode())
|
.trayCode(detail.getTrayCode())
|
||||||
.jobId(jobId)
|
.jobId(jobId)
|
||||||
.jobDetailId(jobId + "-" + num++)
|
.jobDetailId(jobId + "-" + num++)
|
||||||
.stockinId(inTrayMsgs.get(0).getStockinId())//获取单据号需要从托盘绑定信息表获取
|
.stockinId(inTrayMsg.getStockinId())//获取单据号需要从托盘绑定信息表获取
|
||||||
.stockinDetailId(inTrayMsgs.get(0).getStockinDetailId())
|
.stockinDetailId(inTrayMsg.getStockinDetailId())
|
||||||
.rollerNumber(detail.getRollerNumber())
|
.rollerNumber(detail.getRollerNumber())
|
||||||
.quantity(detail.getInQuantity())
|
.quantity(detail.getInQuantity())
|
||||||
.cargoSpaceId(mydoJob.getCargoSpaceId())
|
.cargoSpaceId(mydoJob.getCargoSpaceId())
|
||||||
.productId(detail.getProductId())
|
.productId(detail.getProductId())
|
||||||
.productName(detail.getProductName())
|
.productName(detail.getProductName())
|
||||||
|
.length(inTrayMsg.getLength())
|
||||||
|
.perimeter(inTrayMsg.getPerimeter())
|
||||||
.inDate(DateUtil.date().now())
|
.inDate(DateUtil.date().now())
|
||||||
.build()
|
.build()
|
||||||
);
|
);
|
||||||
|
|
||||||
log.info("【账务处理】新增库存明细,作业号:{},库存编号:{},辊号:{}", jobId, stockId, detail.getRollerNumber());
|
|
||||||
|
|
||||||
//更新实际数量 = 当前入库数量
|
|
||||||
InStockinDetail inStockinDetail = instockinDetailService.selectInStockinDetailByRollerNumber(detail.getRollerNumber());
|
|
||||||
if (ObjUtil.isNotNull(inStockinDetail)){
|
|
||||||
inStockinDetail.setAssignNum(detail.getInQuantity());
|
|
||||||
inStockinDetail.setStatus(1);
|
|
||||||
instockinDetailService.updateInStockinDetail(inStockinDetail);
|
|
||||||
}else{
|
|
||||||
log.info("【账务处理-异常提示】找不到版辊的子单明细,子单号:{},辊号:{}", inStockinDetail.getStockinDetailId(), detail.getRollerNumber());
|
|
||||||
}
|
|
||||||
}else{
|
}else{
|
||||||
//回流入库 - 已经有当前板棍的库存 - 更新货位即可
|
//回流入库 - 已经有当前板棍的库存 - 更新货位即可
|
||||||
stock.setCargoSpaceId(mydoJob.getCargoSpaceId());
|
stock.setCargoSpaceId(mydoJob.getCargoSpaceId());
|
||||||
@@ -438,13 +429,24 @@ public class MydoJobServiceImpl implements IMydoJobService
|
|||||||
basStockService.updateBasStock(stock);
|
basStockService.updateBasStock(stock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inTrayMsgService.deleteInTrayMsgByRollerNumber(inTrayMsg.getRollerNumber());
|
||||||
|
log.info("【账务处理】新增库存明细,移除库存辊号入库绑定信息,作业号:{},库存编号:{},辊号:{}", jobId, stockId, detail.getRollerNumber());
|
||||||
|
|
||||||
}
|
//更新实际数量 = 当前入库数量
|
||||||
|
InStockinDetail inStockinDetail = instockinDetailService.selectInStockinDetailByRollerNumber(detail.getRollerNumber());
|
||||||
|
if (ObjUtil.isNotNull(inStockinDetail)){
|
||||||
|
inStockinDetail.setAssignNum(detail.getInQuantity());
|
||||||
|
inStockinDetail.setStatus(1);
|
||||||
|
instockinDetailService.updateInStockinDetail(inStockinDetail);
|
||||||
|
}else{
|
||||||
|
log.info("【账务处理-异常提示】找不到版辊的子单明细,子单号:{},辊号:{}", inStockinDetail.getStockinDetailId(), detail.getRollerNumber());
|
||||||
|
}
|
||||||
|
|
||||||
|
}//子任务循环处理
|
||||||
|
|
||||||
//--------------------更新货位状态--------------------
|
//--------------------更新货位状态--------------------
|
||||||
BasCargoSpace cargoSpace = basCargoSpaceService.selectBasCargoSpaceByCargoSpaceId(mydoJob.getCargoSpaceId());
|
basCargoSpaceService.updateBasCargoSpaceStatus(mydoJob.getCargoSpaceId(), mydoJob.getTrayCode(), CargoSpaceCode.CARGOSPACE_STATUS_OCCUPIED);
|
||||||
basCargoSpaceService.updateBasCargoSpaceStatus(cargoSpace.getCargoSpaceId(), mydoJob.getTrayCode(), CargoSpaceCode.CARGOSPACE_STATUS_OCCUPIED);
|
log.info("【账务处理】更新货位状态<占用>,作业号:{},货位:{},托盘号:{}", jobId, mydoJob.getCargoSpaceId(), mydoJob.getTrayCode());
|
||||||
log.info("【账务处理】更新货位状态<已占用>,作业号:{},货位:{},托盘号:{}", jobId, cargoSpace.getCargoSpaceId(), mydoJob.getTrayCode());
|
|
||||||
|
|
||||||
//--------------------处理任务表和子任务表--------------------
|
//--------------------处理任务表和子任务表--------------------
|
||||||
//1.更新任务主表状态并移除作业
|
//1.更新任务主表状态并移除作业
|
||||||
@@ -457,9 +459,6 @@ public class MydoJobServiceImpl implements IMydoJobService
|
|||||||
mydoJobDetailService.insertMydoJobDetailsForJobFinish(jobId);
|
mydoJobDetailService.insertMydoJobDetailsForJobFinish(jobId);
|
||||||
mydoJobDetailService.deleteMydoJobDetailsByJobId(jobId);
|
mydoJobDetailService.deleteMydoJobDetailsByJobId(jobId);
|
||||||
|
|
||||||
//3.移除当前托盘的绑定信息
|
|
||||||
inTrayMsgService.deleteInTrayMsgByTrayCode(mydoJob.getTrayCode());
|
|
||||||
|
|
||||||
log.info("【账务处理】移除任务数据和绑定信息,生成历史记录,作业号:{},托盘号:{}", jobId, mydoJob.getTrayCode());
|
log.info("【账务处理】移除任务数据和绑定信息,生成历史记录,作业号:{},托盘号:{}", jobId, mydoJob.getTrayCode());
|
||||||
|
|
||||||
return AjaxResult.success();
|
return AjaxResult.success();
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import com.ruoyi.pda.domain.AddInJobRequest;
|
|||||||
import com.ruoyi.pda.domain.TrayMsgBinding;
|
import com.ruoyi.pda.domain.TrayMsgBinding;
|
||||||
import com.ruoyi.pda.domain.BindTrayRequest;
|
import com.ruoyi.pda.domain.BindTrayRequest;
|
||||||
import com.ruoyi.pda.service.IPdaService;
|
import com.ruoyi.pda.service.IPdaService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
@@ -31,6 +32,7 @@ import org.springframework.web.bind.annotation.*;
|
|||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 手持机 Controller
|
* 手持机 Controller
|
||||||
@@ -39,7 +41,8 @@ import java.util.Map;
|
|||||||
* @date 2026-05-11
|
* @date 2026-05-11
|
||||||
*/
|
*/
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/pda")
|
@RequestMapping("/pdaSevice")
|
||||||
|
@Slf4j
|
||||||
public class PdaController extends BaseController {
|
public class PdaController extends BaseController {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
@@ -170,13 +173,29 @@ public class PdaController extends BaseController {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 取消入库绑盘
|
* 取消入库绑盘 - 单版辊取消
|
||||||
|
*/
|
||||||
|
@PostMapping("/cancelTrayMsg")
|
||||||
|
@PreAuthorize("@ss.hasPermi('in:bound:msg:cancel')")
|
||||||
|
public AjaxResult cancelTray(@RequestBody Map<String, Object> params) {
|
||||||
|
try {
|
||||||
|
String rollerNumber = (String) params.get("barcode");
|
||||||
|
return pdaService.cancelTrayMsg(rollerNumber);
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
return AjaxResult.error(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 取消入库绑盘 - 托盘全部取消
|
||||||
*/
|
*/
|
||||||
@PostMapping("/cancelTrayMsgs")
|
@PostMapping("/cancelTrayMsgs")
|
||||||
@PreAuthorize("@ss.hasPermi('in:bound:msg:cancel')")
|
@PreAuthorize("@ss.hasPermi('in:bound:msg:cancel')")
|
||||||
public AjaxResult cancelTrays(@RequestBody String rollerNumber) {
|
public AjaxResult cancelTrays(@RequestBody Map<String, Object> params) {
|
||||||
try {
|
try {
|
||||||
return pdaService.cancelTrayMsg(rollerNumber);
|
String trayCode = (String) params.get("barcode");
|
||||||
|
return pdaService.cancelTrayMsgAll(trayCode);
|
||||||
} catch (RuntimeException e) {
|
} catch (RuntimeException e) {
|
||||||
return AjaxResult.error(e.getMessage());
|
return AjaxResult.error(e.getMessage());
|
||||||
}
|
}
|
||||||
@@ -217,7 +236,7 @@ public class PdaController extends BaseController {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 入库绑盘-查询物料信息(子单号查询)
|
* 入库绑盘-查询子单物料信息(子单号查询)
|
||||||
* @param detailId 子单号
|
* @param detailId 子单号
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -234,7 +253,7 @@ public class PdaController extends BaseController {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 入库绑盘-查询物料信息(辊号查询)
|
* 入库绑盘-查询子单物料信息(辊号查询)
|
||||||
* @param rollerNumber 辊号
|
* @param rollerNumber 辊号
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -268,12 +287,33 @@ public class PdaController extends BaseController {
|
|||||||
@PreAuthorize("@ss.hasPermi('in:bound:task:info')")
|
@PreAuthorize("@ss.hasPermi('in:bound:task:info')")
|
||||||
public AjaxResult getTrayMsgByRollerNumber(String rollerNumber) {
|
public AjaxResult getTrayMsgByRollerNumber(String rollerNumber) {
|
||||||
try {
|
try {
|
||||||
InTrayMsg msg = pdaService.getTrayMsgByRollerNumber(rollerNumber);
|
InTrayMsg info = pdaService.getTrayMsgByRollerNumber(rollerNumber);
|
||||||
if(ObjUtil.isNull(msg)){
|
if(ObjUtil.isNull(info)){
|
||||||
return AjaxResult.error("找不到当前辊号信息,请检查入库单据明细");
|
log.warn("【获取版辊绑定信息】找不到当前辊号的绑定信息,辊号:{}", rollerNumber);
|
||||||
}else{
|
return AjaxResult.error("找不到当前辊号的绑定信息");
|
||||||
return pdaService.cancelTrayMsg(rollerNumber);
|
|
||||||
}
|
}
|
||||||
|
return AjaxResult.success(info);
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
return AjaxResult.error(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入库绑盘作废-查询托盘已经绑定的版辊信息
|
||||||
|
* @param trayCode 托盘号
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GetMapping("/getTrayBindMsgInfoByTrayCode")
|
||||||
|
@PreAuthorize("@ss.hasPermi('in:bound:task:info')")
|
||||||
|
public AjaxResult getTrayMsgsByTrayCode(String trayCode) {
|
||||||
|
try {
|
||||||
|
List<InTrayMsg> inTrayMsgs = pdaService.getTrayMsgsByTrayCode(trayCode);
|
||||||
|
if(inTrayMsgs.isEmpty()){
|
||||||
|
log.warn("【获取托盘绑定信息】找不到当前托盘的任何绑定信息,托盘号:{}", trayCode);
|
||||||
|
return AjaxResult.error();
|
||||||
|
}
|
||||||
|
return AjaxResult.success(inTrayMsgs);
|
||||||
} catch (RuntimeException e) {
|
} catch (RuntimeException e) {
|
||||||
return AjaxResult.error(e.getMessage());
|
return AjaxResult.error(e.getMessage());
|
||||||
}
|
}
|
||||||
@@ -351,7 +391,7 @@ public class PdaController extends BaseController {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 入库绑定 - 通过入库单据号获取所有版辊信息集合
|
* 入库绑定 - 通过入库单据号获取所有未扫码的版辊信息集合
|
||||||
* @param stockinId 托盘号
|
* @param stockinId 托盘号
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -359,7 +399,9 @@ public class PdaController extends BaseController {
|
|||||||
@PreAuthorize("@ss.hasPermi('out:bound:task:info')")
|
@PreAuthorize("@ss.hasPermi('out:bound:task:info')")
|
||||||
public AjaxResult getDetailListByStockinId(String stockinId) {
|
public AjaxResult getDetailListByStockinId(String stockinId) {
|
||||||
try {
|
try {
|
||||||
List<InStockinDetail> details = inStockinDetailService.selectInStockinDetailByStockinId(stockinId);
|
List<InStockinDetail> details = inStockinDetailService.selectInStockinDetailByStockinId(stockinId)
|
||||||
|
.stream()
|
||||||
|
.filter(s -> DecimalUtil.eq(s.getScanNum(), BigDecimal.ZERO)).collect(Collectors.toList());
|
||||||
if(details.isEmpty()){
|
if(details.isEmpty()){
|
||||||
return AjaxResult.error();
|
return AjaxResult.error();
|
||||||
}else{
|
}else{
|
||||||
|
|||||||
@@ -0,0 +1,119 @@
|
|||||||
|
package com.ruoyi.pda.controller;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.ObjUtil;
|
||||||
|
import com.ruoyi.bas.stock.domain.BasStock;
|
||||||
|
import com.ruoyi.bas.stock.service.IBasStockService;
|
||||||
|
import com.ruoyi.common.TaskType;
|
||||||
|
import com.ruoyi.common.Utils.DecimalUtil;
|
||||||
|
import com.ruoyi.common.core.controller.BaseController;
|
||||||
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
|
import com.ruoyi.common.core.page.TableDataInfo;
|
||||||
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
|
import com.ruoyi.in.bind.domain.InTrayMsg;
|
||||||
|
import com.ruoyi.in.job.domain.MydoJob;
|
||||||
|
import com.ruoyi.in.job.service.IMydoJobService;
|
||||||
|
import com.ruoyi.in.jobdetail.domain.MydoJobDetail;
|
||||||
|
import com.ruoyi.in.stockin.domain.InStockin;
|
||||||
|
import com.ruoyi.in.stockin.service.IInStockinService;
|
||||||
|
import com.ruoyi.in.stockindetail.domain.InStockinDetail;
|
||||||
|
import com.ruoyi.in.stockindetail.service.IInStockinDetailService;
|
||||||
|
import com.ruoyi.out.stockoutdetail.domain.OutStockoutDetail;
|
||||||
|
import com.ruoyi.pda.domain.AddInJobRequest;
|
||||||
|
import com.ruoyi.pda.domain.BindTrayRequest;
|
||||||
|
import com.ruoyi.pda.domain.TrayMsgBinding;
|
||||||
|
import com.ruoyi.pda.service.IPdaService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 手持机 Controller
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
* @date 2026-05-11
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/pda")
|
||||||
|
@Slf4j
|
||||||
|
public class PdaInventoryController extends BaseController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IPdaService pdaService;
|
||||||
|
@Autowired
|
||||||
|
IMydoJobService mydoJobService;
|
||||||
|
@Autowired
|
||||||
|
IBasStockService basStockService;
|
||||||
|
|
||||||
|
|
||||||
|
//==================================== 盘点 ========================================
|
||||||
|
//==================================== 盘点 ========================================
|
||||||
|
//==================================== 盘点 ========================================
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 盘点出库待处理任务列表
|
||||||
|
*/
|
||||||
|
@GetMapping("/inventoryOutTaskList")
|
||||||
|
@PreAuthorize("@ss.hasPermi('inventory:task:list')")
|
||||||
|
public TableDataInfo listInventoryTask(MydoJob mydoJob) {
|
||||||
|
mydoJob.setInOrOut(TaskType.TASKTYPE_STOCKOUT_INVENTORY);
|
||||||
|
startPage();
|
||||||
|
List<MydoJob> list = mydoJobService.selectMydoJobList(mydoJob);
|
||||||
|
return getDataTable(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 盘点-查询物料库存(托盘号查询)
|
||||||
|
* @param trayCode 托盘号
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GetMapping("/getInventoryOutInfoByTrayCode")
|
||||||
|
@PreAuthorize("@ss.hasPermi('out:inventory:task:info')")
|
||||||
|
public AjaxResult getInventoryOutInfoByTrayCode(String trayCode) {
|
||||||
|
try {
|
||||||
|
MydoJob job = mydoJobService.selectMydoJobByTrayCode(trayCode);
|
||||||
|
// List<MydoJobDetail> info = pdaService.getStockoutInfoByTrayCode(trayCode);
|
||||||
|
List<BasStock> stocks = basStockService.selectBasStockListByTrayCode(trayCode);
|
||||||
|
if(ObjUtil.isNull(job) || stocks.isEmpty()){
|
||||||
|
return AjaxResult.error("找不到当前托盘出库明细,请检查作业状态");
|
||||||
|
}else{
|
||||||
|
return AjaxResult.success(stocks);
|
||||||
|
}
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
return AjaxResult.error(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料(版辊)库存【产品状态】异常标记
|
||||||
|
* @param params
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@PostMapping("/inventoryStockExcetion")
|
||||||
|
@PreAuthorize("@ss.hasPermi('out:inventory:task:info')")
|
||||||
|
public AjaxResult inventoryStockExcetion(@RequestBody Map<String, Object> params) {
|
||||||
|
return pdaService.inventoryStockExcetion(params);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 手动指定出库确认 - 版辊单独确认
|
||||||
|
* @param params
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@PostMapping("/inventoryTrayCodeComplete")
|
||||||
|
@PreAuthorize("@ss.hasPermi('out:bound:task:info')")
|
||||||
|
public AjaxResult inventoryTrayCodeComplete(@RequestBody Map<String, Object> params) {
|
||||||
|
return pdaService.inventoryTrayCodeComplete(params);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,315 @@
|
|||||||
|
package com.ruoyi.pda.controller;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.ObjUtil;
|
||||||
|
import com.ruoyi.bas.stock.domain.BasStock;
|
||||||
|
import com.ruoyi.bas.stock.service.IBasStockService;
|
||||||
|
import com.ruoyi.common.TaskType;
|
||||||
|
import com.ruoyi.common.Utils.DecimalUtil;
|
||||||
|
import com.ruoyi.common.core.controller.BaseController;
|
||||||
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
|
import com.ruoyi.common.core.page.TableDataInfo;
|
||||||
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
|
import com.ruoyi.in.bind.domain.InTrayMsg;
|
||||||
|
import com.ruoyi.in.job.domain.MydoJob;
|
||||||
|
import com.ruoyi.in.job.service.IMydoJobService;
|
||||||
|
import com.ruoyi.in.jobdetail.domain.MydoJobDetail;
|
||||||
|
import com.ruoyi.in.stockin.domain.InStockin;
|
||||||
|
import com.ruoyi.in.stockin.service.IInStockinService;
|
||||||
|
import com.ruoyi.in.stockindetail.domain.InStockinDetail;
|
||||||
|
import com.ruoyi.in.stockindetail.service.IInStockinDetailService;
|
||||||
|
import com.ruoyi.out.stockoutdetail.domain.OutStockoutDetail;
|
||||||
|
import com.ruoyi.pda.domain.AddInJobRequest;
|
||||||
|
import com.ruoyi.pda.domain.BindTrayRequest;
|
||||||
|
import com.ruoyi.pda.domain.TrayMsgBinding;
|
||||||
|
import com.ruoyi.pda.service.IPdaService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 手持机 Controller
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
* @date 2026-05-11
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/pda")
|
||||||
|
@Slf4j
|
||||||
|
public class PdaStockinController extends BaseController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IPdaService pdaService;
|
||||||
|
@Autowired
|
||||||
|
IInStockinDetailService inStockinDetailService;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入库待处理任务列表
|
||||||
|
*/
|
||||||
|
@GetMapping("/inboundTaskList")
|
||||||
|
@PreAuthorize("@ss.hasPermi('in:bound:task:list')")
|
||||||
|
public TableDataInfo list(InStockinDetail inStockinDetail) {
|
||||||
|
startPage();
|
||||||
|
List<InStockinDetail> list = pdaService.inboundTaskList(inStockinDetail);
|
||||||
|
return getDataTable(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入库待处理单据列表
|
||||||
|
*/
|
||||||
|
@GetMapping("/inboundStockList")
|
||||||
|
@PreAuthorize("@ss.hasPermi('in:bound:stock:list')")
|
||||||
|
public TableDataInfo list(InStockin inStockin) {
|
||||||
|
startPage();
|
||||||
|
List<InStockin> list = pdaService.inboundStockList(inStockin);
|
||||||
|
return getDataTable(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入库绑盘(支持一托多料)
|
||||||
|
* <p>
|
||||||
|
* 请求体示例:
|
||||||
|
* {
|
||||||
|
* "trayCode": "T001",
|
||||||
|
* "warehouseId": "WH01",
|
||||||
|
* "items": [
|
||||||
|
* { "stockinDetailId": "D001", "productId": "P001", "quantity": 10 },
|
||||||
|
* { "stockinDetailId": "D002", "productId": "P002", "quantity": 20 }
|
||||||
|
* ]
|
||||||
|
* }
|
||||||
|
*/
|
||||||
|
@PostMapping("/bindTray")
|
||||||
|
@PreAuthorize("@ss.hasPermi('in:bound:msg:add')")
|
||||||
|
public AjaxResult bindTray(@RequestBody BindTrayRequest request) {
|
||||||
|
try {
|
||||||
|
String res = pdaService.bindTray(request);
|
||||||
|
if (StringUtils.isEmpty(res)){
|
||||||
|
return AjaxResult.success();
|
||||||
|
}else {
|
||||||
|
return AjaxResult.error(res);
|
||||||
|
}
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
return AjaxResult.error(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入库绑盘
|
||||||
|
*/
|
||||||
|
@PostMapping("/bindTrayMsg")
|
||||||
|
@PreAuthorize("@ss.hasPermi('in:bound:msg:add')")
|
||||||
|
public AjaxResult bindTray(@RequestBody TrayMsgBinding bindTray) {
|
||||||
|
try {
|
||||||
|
if (bindTray == null) {
|
||||||
|
return AjaxResult.error();
|
||||||
|
}
|
||||||
|
|
||||||
|
return pdaService.bindingTrayMsg(bindTray);
|
||||||
|
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
return AjaxResult.error(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入库绑盘
|
||||||
|
*/
|
||||||
|
@PostMapping("/bindTrayMsgs")
|
||||||
|
@PreAuthorize("@ss.hasPermi('in:bound:msg:add')")
|
||||||
|
public AjaxResult bindTrays(@RequestBody BindTrayRequest bindTray) {
|
||||||
|
try {
|
||||||
|
if (bindTray == null) {
|
||||||
|
return AjaxResult.error();
|
||||||
|
}
|
||||||
|
|
||||||
|
return pdaService.bindingTrayMsg(bindTray);
|
||||||
|
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
return AjaxResult.error(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 取消入库绑盘 - 单版辊取消
|
||||||
|
*/
|
||||||
|
@PostMapping("/cancelTrayMsg")
|
||||||
|
@PreAuthorize("@ss.hasPermi('in:bound:msg:cancel')")
|
||||||
|
public AjaxResult cancelTray(@RequestBody Map<String, Object> params) {
|
||||||
|
try {
|
||||||
|
String rollerNumber = (String) params.get("barcode");
|
||||||
|
return pdaService.cancelTrayMsg(rollerNumber);
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
return AjaxResult.error(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 取消入库绑盘 - 托盘全部取消
|
||||||
|
*/
|
||||||
|
@PostMapping("/cancelTrayMsgs")
|
||||||
|
@PreAuthorize("@ss.hasPermi('in:bound:msg:cancel')")
|
||||||
|
public AjaxResult cancelTraysAll(@RequestBody Map<String, Object> params) {
|
||||||
|
try {
|
||||||
|
String trayCode = (String) params.get("barcode");
|
||||||
|
return pdaService.cancelTrayMsgAll(trayCode);
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
return AjaxResult.error(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生成入库作业
|
||||||
|
* @param request
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@PostMapping("/addInJob")
|
||||||
|
@PreAuthorize("@ss.hasPermi('in:job:add')")
|
||||||
|
public AjaxResult addInJob(@RequestBody AddInJobRequest request){
|
||||||
|
try {
|
||||||
|
String res = pdaService.addInJob(request);
|
||||||
|
return AjaxResult.success(res);
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
return AjaxResult.error(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生成空托盘入库绑定信息
|
||||||
|
* @param request
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@PostMapping("/addEmptyTrayJob")
|
||||||
|
@PreAuthorize("@ss.hasPermi('in:job:add')")
|
||||||
|
public AjaxResult addEmptyTrayJob(@RequestBody AddInJobRequest request){
|
||||||
|
try {
|
||||||
|
return pdaService.addEmptyTrayJob(request);
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
return AjaxResult.error(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入库绑盘-查询子单物料信息(子单号查询)
|
||||||
|
* @param detailId 子单号
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GetMapping("/getProductInfoByInDetailId")
|
||||||
|
@PreAuthorize("@ss.hasPermi('in:bound:task:info')")
|
||||||
|
public AjaxResult getProductInfoByInDetailId(String detailId) {
|
||||||
|
try {
|
||||||
|
InStockinDetail info = pdaService.getProductInfoByInDetailId(detailId);
|
||||||
|
return AjaxResult.success(info);
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
return AjaxResult.error(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入库绑盘-查询子单物料信息(辊号查询)
|
||||||
|
* @param rollerNumber 辊号
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GetMapping("/getStockinInfoByRollerNumber")
|
||||||
|
@PreAuthorize("@ss.hasPermi('in:bound:task:info')")
|
||||||
|
public AjaxResult getStockinInfoByRollerNumber(String rollerNumber) {
|
||||||
|
try {
|
||||||
|
InStockinDetail info = pdaService.getStockinInfoByRollerNumber(rollerNumber);
|
||||||
|
if(ObjUtil.isNull(info)){
|
||||||
|
return AjaxResult.error("找不到当前辊号信息,请检查入库单据明细");
|
||||||
|
}else{
|
||||||
|
if (DecimalUtil.eq(info.getScanNum(), BigDecimal.valueOf(0))) {
|
||||||
|
return AjaxResult.success(info);
|
||||||
|
}else{
|
||||||
|
return AjaxResult.warn("该版辊已经执行过绑定操作,请确认绑定信息");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
return AjaxResult.error(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入库绑盘作废-查询绑定信息(辊号查询)
|
||||||
|
* @param rollerNumber 辊号
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GetMapping("/getTrayMsgByRollerNumber")
|
||||||
|
@PreAuthorize("@ss.hasPermi('in:bound:task:info')")
|
||||||
|
public AjaxResult getTrayMsgByRollerNumber(String rollerNumber) {
|
||||||
|
try {
|
||||||
|
InTrayMsg info = pdaService.getTrayMsgByRollerNumber(rollerNumber);
|
||||||
|
if(ObjUtil.isNull(info)){
|
||||||
|
log.warn("【获取版辊绑定信息】找不到当前辊号的绑定信息,辊号:{}", rollerNumber);
|
||||||
|
return AjaxResult.error("找不到当前辊号的绑定信息");
|
||||||
|
}
|
||||||
|
return AjaxResult.success(info);
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
return AjaxResult.error(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入库绑盘作废-查询托盘已经绑定的版辊信息
|
||||||
|
* @param trayCode 托盘号
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GetMapping("/getTrayBindMsgInfoByTrayCode")
|
||||||
|
@PreAuthorize("@ss.hasPermi('in:bound:task:info')")
|
||||||
|
public AjaxResult getTrayMsgsByTrayCode(String trayCode) {
|
||||||
|
try {
|
||||||
|
List<InTrayMsg> inTrayMsgs = pdaService.getTrayMsgsByTrayCode(trayCode);
|
||||||
|
if(inTrayMsgs.isEmpty()){
|
||||||
|
log.warn("【获取托盘绑定信息】找不到当前托盘的任何绑定信息,托盘号:{}", trayCode);
|
||||||
|
return AjaxResult.error();
|
||||||
|
}
|
||||||
|
return AjaxResult.success(inTrayMsgs);
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
return AjaxResult.error(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入库绑定 - 通过入库单据号获取子单所有未扫码的明细集合
|
||||||
|
* @param stockinId 托盘号
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GetMapping("/getDetailListByStockinId")
|
||||||
|
@PreAuthorize("@ss.hasPermi('out:bound:task:info')")
|
||||||
|
public AjaxResult getDetailListByStockinId(String stockinId) {
|
||||||
|
try {
|
||||||
|
List<InStockinDetail> details = inStockinDetailService.selectInStockinDetailByStockinId(stockinId)
|
||||||
|
.stream()
|
||||||
|
.filter(s -> DecimalUtil.eq(s.getScanNum(), BigDecimal.ZERO)).collect(Collectors.toList());
|
||||||
|
if(details.isEmpty()){
|
||||||
|
return AjaxResult.error();
|
||||||
|
}else{
|
||||||
|
return AjaxResult.success(details);
|
||||||
|
}
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
return AjaxResult.error(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,219 @@
|
|||||||
|
package com.ruoyi.pda.controller;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.ObjUtil;
|
||||||
|
import com.ruoyi.bas.stock.domain.BasStock;
|
||||||
|
import com.ruoyi.bas.stock.service.IBasStockService;
|
||||||
|
import com.ruoyi.common.TaskType;
|
||||||
|
import com.ruoyi.common.Utils.DecimalUtil;
|
||||||
|
import com.ruoyi.common.core.controller.BaseController;
|
||||||
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
|
import com.ruoyi.common.core.page.TableDataInfo;
|
||||||
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
|
import com.ruoyi.in.bind.domain.InTrayMsg;
|
||||||
|
import com.ruoyi.in.job.domain.MydoJob;
|
||||||
|
import com.ruoyi.in.job.service.IMydoJobService;
|
||||||
|
import com.ruoyi.in.jobdetail.domain.MydoJobDetail;
|
||||||
|
import com.ruoyi.in.stockin.domain.InStockin;
|
||||||
|
import com.ruoyi.in.stockin.service.IInStockinService;
|
||||||
|
import com.ruoyi.in.stockindetail.domain.InStockinDetail;
|
||||||
|
import com.ruoyi.in.stockindetail.service.IInStockinDetailService;
|
||||||
|
import com.ruoyi.out.stockoutdetail.domain.OutStockoutDetail;
|
||||||
|
import com.ruoyi.pda.domain.AddInJobRequest;
|
||||||
|
import com.ruoyi.pda.domain.BindTrayRequest;
|
||||||
|
import com.ruoyi.pda.domain.TrayMsgBinding;
|
||||||
|
import com.ruoyi.pda.service.IPdaService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 手持机 Controller
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
* @date 2026-05-11
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/pda")
|
||||||
|
@Slf4j
|
||||||
|
public class PdaStockoutController extends BaseController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IPdaService pdaService;
|
||||||
|
@Autowired
|
||||||
|
IMydoJobService mydoJobService;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 出库待处理任务列表
|
||||||
|
*/
|
||||||
|
@GetMapping("/outboundStockList")
|
||||||
|
@PreAuthorize("@ss.hasPermi('out:bound:stock:list')")
|
||||||
|
public TableDataInfo list(OutStockoutDetail outStockoutDetail) {
|
||||||
|
startPage();
|
||||||
|
List<OutStockoutDetail> list = pdaService.outboundTaskList(outStockoutDetail);
|
||||||
|
return getDataTable(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 出库待处理任务列表
|
||||||
|
*/
|
||||||
|
@GetMapping("/outboundTaskList")
|
||||||
|
@PreAuthorize("@ss.hasPermi('out:bound:task:list')")
|
||||||
|
public TableDataInfo listTask(MydoJob mydoJob) {
|
||||||
|
startPage();
|
||||||
|
List<MydoJob> list = pdaService.selectMydoJobToDealList(mydoJob);
|
||||||
|
return getDataTable(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 出库确认-查询出库子单物料信息(辊号查询)
|
||||||
|
* @param rollerNumber 辊号
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GetMapping("/getStockoutInfoByRollerNumber")
|
||||||
|
@PreAuthorize("@ss.hasPermi('out:bound:task:info')")
|
||||||
|
public AjaxResult getStockoutInfoByRollerNumber(String rollerNumber) {
|
||||||
|
try {
|
||||||
|
OutStockoutDetail info = pdaService.getStockoutInfoByRollerNumber(rollerNumber);
|
||||||
|
if(ObjUtil.isNull(info)){
|
||||||
|
return AjaxResult.error("找不到当前辊号信息,请检查出库单据明细");
|
||||||
|
}else{
|
||||||
|
if (info.getAssignNum().equals(BigDecimal.valueOf(0))){
|
||||||
|
return AjaxResult.success(info);
|
||||||
|
}else{
|
||||||
|
return AjaxResult.warn("该版辊已经执行过出库确认操作");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
return AjaxResult.error(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 【常规出库】出库确认 - 托盘号查询 - 仅查询托盘上出库单中包含的版辊信息
|
||||||
|
* @param trayCode 托盘号
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GetMapping("/getStockoutInfoByTrayCode")
|
||||||
|
@PreAuthorize("@ss.hasPermi('out:bound:task:info')")
|
||||||
|
public AjaxResult getStockoutInfoByTrayCode(String trayCode) {
|
||||||
|
try {
|
||||||
|
MydoJob job = mydoJobService.selectMydoJobByTrayCode(trayCode);
|
||||||
|
List<MydoJobDetail> info = pdaService.getStockoutInfoByTrayCode(trayCode);
|
||||||
|
if(ObjUtil.isNull(job) || info.isEmpty()){
|
||||||
|
return AjaxResult.error("找不到当前托盘出库明细,请检查作业状态");
|
||||||
|
}else{
|
||||||
|
return AjaxResult.success(info);
|
||||||
|
}
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
return AjaxResult.error(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 【手动指定出库】出库确认 - 托盘号查询 - 仅查询托盘上出库单中包含的版辊信息
|
||||||
|
* @param trayCode 托盘号
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GetMapping("/getManualStockoutInfoByTrayCode")
|
||||||
|
@PreAuthorize("@ss.hasPermi('out:bound:task:info')")
|
||||||
|
public AjaxResult getManualStockoutInfoByTrayCode(String trayCode) {
|
||||||
|
try {
|
||||||
|
MydoJob job = mydoJobService.selectMydoJobByTrayCode(trayCode);
|
||||||
|
List<MydoJobDetail> info = pdaService.getStockoutInfoByTrayCode(trayCode);
|
||||||
|
if(ObjUtil.isNull(job) || info.isEmpty() || job.getInOrOut() != TaskType.TASKTYPE_STOCKOUT_MANUAL){
|
||||||
|
return AjaxResult.error("找不到当前<手动>出库作业明细,请检查作业状态");
|
||||||
|
}else{
|
||||||
|
return AjaxResult.success(info);
|
||||||
|
}
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
return AjaxResult.error(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 呼叫空托出库
|
||||||
|
* @param params 货位区域,托盘类型
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@PostMapping("/callStockOutForContainer")
|
||||||
|
@PreAuthorize("@ss.hasPermi('out:bound:task:info')")
|
||||||
|
public AjaxResult callStockOutForContainer(@RequestBody Map<String, Object> params) {
|
||||||
|
return pdaService.callContainerStockOut(params);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料(版辊)手动强制出库
|
||||||
|
* @param params
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@PostMapping("/rollerNumberComplete")
|
||||||
|
@PreAuthorize("@ss.hasPermi('out:bound:task:info')")
|
||||||
|
public AjaxResult rollerNumberComplete(@RequestBody Map<String, Object> params) {
|
||||||
|
return pdaService.rollerNumberComplete(params);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 出库确认 - 更新子任务中的出库数量 - 用于下一步执行托盘确认
|
||||||
|
* @param params
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@PostMapping("/stockoutDetailComplete")
|
||||||
|
@PreAuthorize("@ss.hasPermi('out:bound:task:info')")
|
||||||
|
public AjaxResult stockoutDetailComplete(@RequestBody Map<String, Object> params) {
|
||||||
|
return pdaService.stockoutDetailComplete(params);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 【常规/拣选出库】托盘出库确认 - 更新版辊出库数量
|
||||||
|
* @param trayCode
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@PostMapping("/stockoutTrayCodeComplete")
|
||||||
|
@PreAuthorize("@ss.hasPermi('out:bound:task:info')")
|
||||||
|
public AjaxResult stockoutTrayCodeComplete(String trayCode) {
|
||||||
|
return pdaService.stockoutTrayCodeComplete(trayCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 【手动指定出库】托盘出库确认 - 更新版辊出库数量
|
||||||
|
* @param trayCode
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@PostMapping("/stockoutTrayCodeCompleteManual")
|
||||||
|
@PreAuthorize("@ss.hasPermi('out:bound:task:info')")
|
||||||
|
public AjaxResult stockoutTrayCodeCompleteManual(String trayCode) {
|
||||||
|
return pdaService.stockoutTrayCodeCompleteManual(trayCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 出库确认 - 一键确认 - 托盘统一更新出库数量
|
||||||
|
* @param trayCode
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@PostMapping("/stockoutTrayCodeCompleteAll")
|
||||||
|
@PreAuthorize("@ss.hasPermi('out:bound:task:info')")
|
||||||
|
public AjaxResult stockoutTrayCodeCompleteAll(String trayCode) {
|
||||||
|
return pdaService.stockoutTrayCodeCompleteAll(trayCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -55,6 +55,10 @@ public class BindTrayRequest {
|
|||||||
// @NotNull
|
// @NotNull
|
||||||
private String productId;
|
private String productId;
|
||||||
|
|
||||||
|
/** 物料名称 */
|
||||||
|
// @NotNull
|
||||||
|
private String productName;
|
||||||
|
|
||||||
/** 绑定数量 */
|
/** 绑定数量 */
|
||||||
@NotNull
|
@NotNull
|
||||||
private BigDecimal quantity;
|
private BigDecimal quantity;
|
||||||
@@ -71,6 +75,12 @@ public class BindTrayRequest {
|
|||||||
/** 规格 */
|
/** 规格 */
|
||||||
private String spec;
|
private String spec;
|
||||||
|
|
||||||
|
/** 版长 */
|
||||||
|
private BigDecimal length;
|
||||||
|
|
||||||
|
/** 版周 */
|
||||||
|
private BigDecimal perimeter;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,13 +63,21 @@ public interface IPdaService {
|
|||||||
AjaxResult bindingTrayMsg(BindTrayRequest bindTray);
|
AjaxResult bindingTrayMsg(BindTrayRequest bindTray);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 取消入库绑盘(多托)
|
* 取消入库绑盘
|
||||||
*
|
*
|
||||||
* @param rollerNumber 绑盘请求体,包含托盘号和物料明细列表
|
* @param rollerNumber 辊号
|
||||||
* @return 成功插入条数
|
* @return 成功插入条数
|
||||||
*/
|
*/
|
||||||
AjaxResult cancelTrayMsg(String rollerNumber);
|
AjaxResult cancelTrayMsg(String rollerNumber);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 取消入库绑盘(整托)
|
||||||
|
*
|
||||||
|
* @param trayCode 托盘号
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
AjaxResult cancelTrayMsgAll(String trayCode);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 入库绑盘-查询物料信息
|
* 入库绑盘-查询物料信息
|
||||||
* @param detailId 入库子单号
|
* @param detailId 入库子单号
|
||||||
@@ -91,6 +99,12 @@ public interface IPdaService {
|
|||||||
*/
|
*/
|
||||||
InTrayMsg getTrayMsgByRollerNumber(String rollerNumber);
|
InTrayMsg getTrayMsgByRollerNumber(String rollerNumber);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入库绑盘作废-查询托盘绑定版辊信息集合
|
||||||
|
* @param trayCode 托盘号
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<InTrayMsg> getTrayMsgsByTrayCode(String trayCode);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 出库确认-查询物料信息
|
* 出库确认-查询物料信息
|
||||||
@@ -99,7 +113,6 @@ public interface IPdaService {
|
|||||||
*/
|
*/
|
||||||
OutStockoutDetail getStockoutInfoByRollerNumber(String rollerNumber);
|
OutStockoutDetail getStockoutInfoByRollerNumber(String rollerNumber);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 出库确认-查询物料信息
|
* 出库确认-查询物料信息
|
||||||
* @param trayCode 托盘号
|
* @param trayCode 托盘号
|
||||||
|
|||||||
@@ -197,6 +197,11 @@ public class PdaServiceImpl implements IPdaService {
|
|||||||
new InTrayMsg().builder()
|
new InTrayMsg().builder()
|
||||||
.trayCode(trayCode)
|
.trayCode(trayCode)
|
||||||
.productId(bindTrayMsg.getRollerNumber())
|
.productId(bindTrayMsg.getRollerNumber())
|
||||||
|
.productName(detail.getProductName())
|
||||||
|
.color(detail.getColor())
|
||||||
|
.colorSequence(detail.getColorSequence())
|
||||||
|
.length(detail.getLength())
|
||||||
|
.perimeter(detail.getPerimeter())
|
||||||
.quantity(bindTrayMsg.getQuantity())
|
.quantity(bindTrayMsg.getQuantity())
|
||||||
.rollerNumber(bindTrayMsg.getRollerNumber())
|
.rollerNumber(bindTrayMsg.getRollerNumber())
|
||||||
.stockinId(detail.getStockinId())
|
.stockinId(detail.getStockinId())
|
||||||
@@ -313,10 +318,15 @@ public class PdaServiceImpl implements IPdaService {
|
|||||||
new InTrayMsg().builder()
|
new InTrayMsg().builder()
|
||||||
.trayCode(trayCode)
|
.trayCode(trayCode)
|
||||||
.productId(item.getProductId())
|
.productId(item.getProductId())
|
||||||
|
.productName(item.getProductName())
|
||||||
.quantity(item.getQuantity())
|
.quantity(item.getQuantity())
|
||||||
.rollerNumber(item.getRollerNumber())
|
.rollerNumber(item.getRollerNumber())
|
||||||
.stockinId(detail.getStockinId())
|
.stockinId(detail.getStockinId())
|
||||||
.stockinDetailId(detail.getStockinDetailId())
|
.stockinDetailId(detail.getStockinDetailId())
|
||||||
|
.color(detail.getColor())
|
||||||
|
.colorSequence(detail.getColorSequence())
|
||||||
|
.length(detail.getLength())
|
||||||
|
.perimeter(detail.getPerimeter())
|
||||||
.warehouseId("01")
|
.warehouseId("01")
|
||||||
.trayType(type)
|
.trayType(type)
|
||||||
.status(trayMsgStatus)
|
.status(trayMsgStatus)
|
||||||
@@ -349,9 +359,10 @@ public class PdaServiceImpl implements IPdaService {
|
|||||||
public AjaxResult cancelTrayMsg(String rollerNumber){
|
public AjaxResult cancelTrayMsg(String rollerNumber){
|
||||||
|
|
||||||
//======================作废版辊绑定信息======================
|
//======================作废版辊绑定信息======================
|
||||||
if(StrUtil.isBlank(rollerNumber)){
|
InTrayMsg msg = getTrayMsgByRollerNumber(rollerNumber);
|
||||||
log.warn("【操作失败】找不到当前版辊的绑定信息,版辊号:{}", rollerNumber);
|
if(ObjUtil.isNull(msg)){
|
||||||
return AjaxResult.error("【操作失败】找不到当前版辊的绑定信息");
|
log.warn("【操作失败】找不到当前辊号的绑定信息,请检查是否执行过绑定操作,辊号:{}", rollerNumber);
|
||||||
|
return AjaxResult.error("找不到当前辊号信息,请检查是否执行过绑定操作,辊号:" + rollerNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
inTrayMsgService.deleteInTrayMsgByRollerNumber(rollerNumber);
|
inTrayMsgService.deleteInTrayMsgByRollerNumber(rollerNumber);
|
||||||
@@ -360,6 +371,7 @@ public class PdaServiceImpl implements IPdaService {
|
|||||||
InStockinDetail detail = inStockinDetailService.selectInStockinDetailByRollerNumber(rollerNumber);
|
InStockinDetail detail = inStockinDetailService.selectInStockinDetailByRollerNumber(rollerNumber);
|
||||||
if (ObjUtil.isNotNull(detail)){
|
if (ObjUtil.isNotNull(detail)){
|
||||||
detail.setScanNum(BigDecimal.valueOf(0));
|
detail.setScanNum(BigDecimal.valueOf(0));
|
||||||
|
detail.setStatus(0);
|
||||||
inStockinDetailService.updateInStockinDetail(detail);
|
inStockinDetailService.updateInStockinDetail(detail);
|
||||||
log.info("【操作成功】辊号:<{}>的出库子单明细扫描数量已更新为初始状态", rollerNumber);
|
log.info("【操作成功】辊号:<{}>的出库子单明细扫描数量已更新为初始状态", rollerNumber);
|
||||||
}
|
}
|
||||||
@@ -369,6 +381,37 @@ public class PdaServiceImpl implements IPdaService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AjaxResult cancelTrayMsgAll(String trayCode){
|
||||||
|
//======================作废版辊绑定信息======================
|
||||||
|
if(StrUtil.isBlank(trayCode)){
|
||||||
|
log.warn("【操作失败】托盘条码空,请输入有效的托盘条码,条码:{}", trayCode);
|
||||||
|
return AjaxResult.error("【操作失败】托盘条码空,请输入有效的托盘条码");
|
||||||
|
}
|
||||||
|
|
||||||
|
List<InTrayMsg> msgs = getTrayMsgsByTrayCode(trayCode);
|
||||||
|
if (msgs.isEmpty()){
|
||||||
|
log.warn("【操作失败】找不到该托盘的任何绑定信息,请确认该托盘是否已经执行过绑定操作,托盘号:{}", trayCode);
|
||||||
|
return AjaxResult.error("【操作失败】找不到该托盘的绑定信息,请确认该托盘是否已经执行过绑定操");
|
||||||
|
}
|
||||||
|
|
||||||
|
inTrayMsgService.deleteInTrayMsgByTrayCode(trayCode);
|
||||||
|
log.info("【操作成功】已经取消托盘号:<{}>的所有版辊绑定信息", trayCode);
|
||||||
|
|
||||||
|
for (InTrayMsg msg : msgs){
|
||||||
|
InStockinDetail detail = inStockinDetailService.selectInStockinDetailByRollerNumber(msg.getRollerNumber());
|
||||||
|
if (ObjUtil.isNotNull(detail)){
|
||||||
|
detail.setScanNum(BigDecimal.valueOf(0));
|
||||||
|
detail.setStatus(0);
|
||||||
|
inStockinDetailService.updateInStockinDetail(detail);
|
||||||
|
log.info("【操作成功】辊号:<{}>的出库子单明细扫描数量已更新为初始状态,子单号:{}", detail.getStockinDetailId(), msg.getRollerNumber());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return AjaxResult.success("操作成功");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public InStockinDetail getProductInfoByInDetailId(String detailId) {
|
public InStockinDetail getProductInfoByInDetailId(String detailId) {
|
||||||
return inStockinDetailMapper.selectInStockinDetailByStockinDetailId(detailId);
|
return inStockinDetailMapper.selectInStockinDetailByStockinDetailId(detailId);
|
||||||
@@ -397,6 +440,14 @@ public class PdaServiceImpl implements IPdaService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<InTrayMsg> getTrayMsgsByTrayCode(String trayCode){
|
||||||
|
return inTrayMsgService.selectInTrayMsgList(
|
||||||
|
new InTrayMsg().builder().trayCode(trayCode).build()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public OutStockoutDetail getStockoutInfoByRollerNumber(String rollerNumber) {
|
public OutStockoutDetail getStockoutInfoByRollerNumber(String rollerNumber) {
|
||||||
return outStockoutDetailService.selectOutStockoutDetailByRollerNumber(rollerNumber);
|
return outStockoutDetailService.selectOutStockoutDetailByRollerNumber(rollerNumber);
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package com.ruoyi.scheduleTask;
|
|||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.ObjUtil;
|
import cn.hutool.core.util.ObjUtil;
|
||||||
import com.ruoyi.api.service.IApiWcsService;
|
import com.ruoyi.api.service.IApiWcsService;
|
||||||
|
import com.ruoyi.bas.cargospace.domain.BasCargoSpace;
|
||||||
import com.ruoyi.bas.cargospace.service.IBasCargoSpaceService;
|
import com.ruoyi.bas.cargospace.service.IBasCargoSpaceService;
|
||||||
import com.ruoyi.bas.id.job.service.IBasJobIdService;
|
import com.ruoyi.bas.id.job.service.IBasJobIdService;
|
||||||
import com.ruoyi.bas.stock.domain.BasStock;
|
import com.ruoyi.bas.stock.domain.BasStock;
|
||||||
@@ -11,6 +12,7 @@ import com.ruoyi.bas.stock.service.IBasStockInfoService;
|
|||||||
import com.ruoyi.bas.stock.service.IBasStockService;
|
import com.ruoyi.bas.stock.service.IBasStockService;
|
||||||
import com.ruoyi.common.*;
|
import com.ruoyi.common.*;
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
|
import com.ruoyi.in.bind.domain.InTrayMsg;
|
||||||
import com.ruoyi.in.bind.service.IInTrayMsgService;
|
import com.ruoyi.in.bind.service.IInTrayMsgService;
|
||||||
import com.ruoyi.in.job.domain.MydoJob;
|
import com.ruoyi.in.job.domain.MydoJob;
|
||||||
import com.ruoyi.in.job.service.IMydoJobService;
|
import com.ruoyi.in.job.service.IMydoJobService;
|
||||||
@@ -61,6 +63,8 @@ public class MydoJobHandler {
|
|||||||
IPdStockpdService pdStockpdService;
|
IPdStockpdService pdStockpdService;
|
||||||
@Autowired
|
@Autowired
|
||||||
IPdStockpdDetailService pdStockpdDetailService;
|
IPdStockpdDetailService pdStockpdDetailService;
|
||||||
|
@Autowired
|
||||||
|
IInTrayMsgService inTrayMsgService;
|
||||||
|
|
||||||
|
|
||||||
private static final int TIMEINTERVAL_DEFAULT = 1000;
|
private static final int TIMEINTERVAL_DEFAULT = 1000;
|
||||||
@@ -659,23 +663,37 @@ public class MydoJobHandler {
|
|||||||
|
|
||||||
//每条子任务生成一条库存信息
|
//每条子任务生成一条库存信息
|
||||||
for (MydoJobDetail detail : details){
|
for (MydoJobDetail detail : details){
|
||||||
|
BasStock stock = basStockService.selectBasStockByRollerNumber(detail.getRollerNumber());
|
||||||
//物料数量固定为1,辊号唯一
|
InTrayMsg inTrayMsg = inTrayMsgService.selectInTrayMsgByRollerNumber(detail.getRollerNumber());//获取当前板棍绑定信息 - 用于插入库存和移除绑定
|
||||||
//插入库存明细信息
|
if (ObjUtil.isNull(inTrayMsg)){
|
||||||
BasStock stockInit = new BasStock().builder()
|
//物料数量固定为1,辊号唯一
|
||||||
.stockId(stockId)
|
//插入库存明细信息
|
||||||
.stockDetailId(stockId + "-" + num)
|
BasStock stockInit = new BasStock().builder()
|
||||||
.stockStatus(BasStockCode.STOCK_STATUS_AVAILABLE)
|
.stockId(stockId)
|
||||||
.jobId(mydoJob.getJobId())
|
.stockDetailId(stockId + "-" + num)
|
||||||
.jobDetailId(mydoJob.getJobId() + "-" + num++)
|
.stockStatus(BasStockCode.STOCK_STATUS_AVAILABLE)
|
||||||
.rollerNumber(detail.getRollerNumber())
|
.jobId(mydoJob.getJobId())
|
||||||
.quantity(detail.getInQuantity())
|
.jobDetailId(mydoJob.getJobId() + "-" + num++)
|
||||||
.cargoSpaceId(mydoJob.getCargoSpaceId())
|
.stockinId(inTrayMsg.getStockinId())//获取单据号需要从托盘绑定信息表获取
|
||||||
.productId(detail.getProductId())
|
.stockinDetailId(inTrayMsg.getStockinDetailId())
|
||||||
.productName(detail.getProductName())
|
.rollerNumber(detail.getRollerNumber())
|
||||||
.inDate(DateUtil.date().now())
|
.quantity(detail.getInQuantity())
|
||||||
.build();
|
.cargoSpaceId(mydoJob.getCargoSpaceId())
|
||||||
basStockService.insertBasStock(stockInit);
|
.productId(detail.getProductId())
|
||||||
|
.productName(detail.getProductName())
|
||||||
|
.length(inTrayMsg.getLength())
|
||||||
|
.perimeter(inTrayMsg.getPerimeter())
|
||||||
|
.inDate(DateUtil.date().now())
|
||||||
|
.build();
|
||||||
|
basStockService.insertBasStock(stockInit);
|
||||||
|
}else{
|
||||||
|
//回流入库 - 已经有当前板棍的库存 - 更新货位即可
|
||||||
|
stock.setCargoSpaceId(mydoJob.getCargoSpaceId());
|
||||||
|
stock.setStockStatus(BasStockCode.STOCK_STATUS_AVAILABLE);
|
||||||
|
stock.setJobId(detail.getJobId());
|
||||||
|
stock.setJobDetailId(detail.getJobDetailId());
|
||||||
|
basStockService.updateBasStock(stock);
|
||||||
|
}
|
||||||
|
|
||||||
//更新子单数量
|
//更新子单数量
|
||||||
InStockinDetail inStockinDetail = inStockinDetailService.selectInStockinDetailByRollerNumber(detail.getRollerNumber());
|
InStockinDetail inStockinDetail = inStockinDetailService.selectInStockinDetailByRollerNumber(detail.getRollerNumber());
|
||||||
@@ -684,18 +702,20 @@ public class MydoJobHandler {
|
|||||||
inStockinDetail.setAssignNum(BigDecimal.ONE);
|
inStockinDetail.setAssignNum(BigDecimal.ONE);
|
||||||
inStockinDetail.setStatus(1);
|
inStockinDetail.setStatus(1);
|
||||||
inStockinDetailService.updateInStockinDetail(inStockinDetail);
|
inStockinDetailService.updateInStockinDetail(inStockinDetail);
|
||||||
|
|
||||||
stockInit.setStockinId(inStockinDetail.getStockinId());
|
|
||||||
stockInit.setStockDetailId(inStockinDetail.getStockinDetailId());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
intrayMsgService.deleteInTrayMsgByRollerNumber(detail.getRollerNumber());
|
intrayMsgService.deleteInTrayMsgByRollerNumber(detail.getRollerNumber());
|
||||||
|
|
||||||
mydoJobService.insertMydoJobFinish(mydoJob.getJobId());
|
}//子任务循环处理
|
||||||
mydoJobService.deleteMydoJobByJobId(mydoJob.getJobId());
|
|
||||||
|
|
||||||
log.info("【账务处理-入库】任务完成,移除作业和绑定信息,更新货位信息,作业号:{}", mydoJob.getJobId());
|
//--------------------更新货位状态--------------------
|
||||||
}
|
basCargoSpaceService.updateBasCargoSpaceStatus(mydoJob.getCargoSpaceId(), mydoJob.getTrayCode(), CargoSpaceCode.CARGOSPACE_STATUS_OCCUPIED);
|
||||||
|
log.info("【账务处理】更新货位状态<占用>,作业号:{},货位:{},托盘号:{}", mydoJob.getJobId(), mydoJob.getCargoSpaceId(), mydoJob.getTrayCode());
|
||||||
|
|
||||||
|
mydoJobService.insertMydoJobFinish(mydoJob.getJobId());
|
||||||
|
mydoJobService.deleteMydoJobByJobId(mydoJob.getJobId());
|
||||||
|
|
||||||
|
log.info("【账务处理-入库】任务完成,移除作业和绑定信息,更新货位信息,作业号:{}", mydoJob.getJobId());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -756,7 +776,6 @@ public class MydoJobHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
basStockInfoService.deleteBasStockInfoByTrayCode(mydoJob.getTrayCode());
|
basStockInfoService.deleteBasStockInfoByTrayCode(mydoJob.getTrayCode());
|
||||||
|
|
||||||
basCargoSpaceService.updateBasCargoSpaceStatus(mydoJob.getCargoSpaceId(), "", CargoSpaceCode.CARGOSPACE_STATUS_AVAILABLE);
|
basCargoSpaceService.updateBasCargoSpaceStatus(mydoJob.getCargoSpaceId(), "", CargoSpaceCode.CARGOSPACE_STATUS_AVAILABLE);
|
||||||
log.info("【账务处理-出库】任务完成,移除托盘库存,更新货位和库存信息,作业号:{},托盘号:{}", mydoJob.getJobId(), mydoJob.getTrayCode());
|
log.info("【账务处理-出库】任务完成,移除托盘库存,更新货位和库存信息,作业号:{},托盘号:{}", mydoJob.getJobId(), mydoJob.getTrayCode());
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<result property="productId" column="product_id" />
|
<result property="productId" column="product_id" />
|
||||||
<result property="productName" column="product_name" />
|
<result property="productName" column="product_name" />
|
||||||
<result property="rollerNumber" column="roller_number" />
|
<result property="rollerNumber" column="roller_number" />
|
||||||
|
<result property="length" column="length" />
|
||||||
|
<result property="perimeter" column="perimeter" />
|
||||||
|
<result property="rollerNumber" column="roller_number" />
|
||||||
<result property="quantity" column="quantity" />
|
<result property="quantity" column="quantity" />
|
||||||
<result property="jobId" column="job_id" />
|
<result property="jobId" column="job_id" />
|
||||||
<result property="jobDetailId" column="job_detail_id" />
|
<result property="jobDetailId" column="job_detail_id" />
|
||||||
@@ -36,7 +39,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
|
|
||||||
<sql id="selectBasStockVo">
|
<sql id="selectBasStockVo">
|
||||||
select stock_id, stock_detail_id, cargo_space_id, stock_status, product_status, lot_no, in_date, back_date, product_id, product_name, roller_number,
|
select stock_id, stock_detail_id, cargo_space_id, stock_status, product_status, lot_no, in_date, back_date, product_id, product_name, roller_number,
|
||||||
quantity, job_id, job_detail_id, tray_code, out_quantity, stockin_detail_id, stockin_id, in_type, warehouse_id, warehouse_name,
|
length, perimeter, quantity, job_id, job_detail_id, tray_code, out_quantity, stockin_detail_id, stockin_id, in_type, warehouse_id, warehouse_name,
|
||||||
user_id, user_name, dept_id, dept_name, supplier_id, supplier_name
|
user_id, user_name, dept_id, dept_name, supplier_id, supplier_name
|
||||||
from bas_stock_detail
|
from bas_stock_detail
|
||||||
</sql>
|
</sql>
|
||||||
@@ -44,7 +47,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<select id="selectBasStockList" parameterType="BasStock" resultMap="BasStockResult">
|
<select id="selectBasStockList" parameterType="BasStock" resultMap="BasStockResult">
|
||||||
select bs.stock_id, bs.stock_detail_id, bs.cargo_space_id, bs.stock_status, bs.product_status,
|
select bs.stock_id, bs.stock_detail_id, bs.cargo_space_id, bs.stock_status, bs.product_status,
|
||||||
bs.lot_no, bs.in_date, bs.back_date, bs.product_id, bs.product_name,bs.roller_number,
|
bs.lot_no, bs.in_date, bs.back_date, bs.product_id, bs.product_name,bs.roller_number,
|
||||||
bs.quantity, bs.job_id, bs.job_detail_id, bs.tray_code, bs.out_quantity,
|
bs.length, bs.perimeter, bs.quantity, bs.job_id, bs.job_detail_id, bs.tray_code, bs.out_quantity,
|
||||||
bs.stockin_detail_id, bs.stockin_id, bs.in_type, bs.warehouse_id, bs.warehouse_name,
|
bs.stockin_detail_id, bs.stockin_id, bs.in_type, bs.warehouse_id, bs.warehouse_name,
|
||||||
bs.user_id, bs.user_name, bs.dept_id, bs.dept_name, bs.supplier_id, bs.supplier_name
|
bs.user_id, bs.user_name, bs.dept_id, bs.dept_name, bs.supplier_id, bs.supplier_name
|
||||||
from bas_stock_detail bs
|
from bas_stock_detail bs
|
||||||
@@ -60,6 +63,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="productId != null and productId != ''"> and bs.product_id = #{productId}</if>
|
<if test="productId != null and productId != ''"> and bs.product_id = #{productId}</if>
|
||||||
<if test="productName != null and productName != ''"> and bs.product_name like concat('%', #{productName}, '%')</if>
|
<if test="productName != null and productName != ''"> and bs.product_name like concat('%', #{productName}, '%')</if>
|
||||||
<if test="rollerNumber != null and rollerNumber != ''"> and bs.roller_number like concat('%', #{rollerNumber}, '%')</if>
|
<if test="rollerNumber != null and rollerNumber != ''"> and bs.roller_number like concat('%', #{rollerNumber}, '%')</if>
|
||||||
|
<if test="length != null "> and bs.length = #{length}</if>
|
||||||
|
<if test="perimeter != null "> and bs.perimeter = #{quantity}</if>
|
||||||
<if test="quantity != null "> and bs.quantity = #{quantity}</if>
|
<if test="quantity != null "> and bs.quantity = #{quantity}</if>
|
||||||
<if test="jobId != null and jobId != ''"> and bs.job_id = #{jobId}</if>
|
<if test="jobId != null and jobId != ''"> and bs.job_id = #{jobId}</if>
|
||||||
<if test="jobDetailId != null and jobDetailId != ''"> and bs.job_detail_id = #{jobDetailId}</if>
|
<if test="jobDetailId != null and jobDetailId != ''"> and bs.job_detail_id = #{jobDetailId}</if>
|
||||||
@@ -78,7 +83,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<select id="selectBasStockListForEmptyTray" parameterType="BasStock" resultMap="BasStockResult">
|
<select id="selectBasStockListForEmptyTray" parameterType="BasStock" resultMap="BasStockResult">
|
||||||
select bs.stock_id, bs.stock_detail_id, bs.cargo_space_id, bs.stock_status, bs.product_status,
|
select bs.stock_id, bs.stock_detail_id, bs.cargo_space_id, bs.stock_status, bs.product_status,
|
||||||
bs.lot_no, bs.in_date, bs.back_date, bs.product_id, bs.product_name,bs.roller_number,
|
bs.lot_no, bs.in_date, bs.back_date, bs.product_id, bs.product_name,bs.roller_number,
|
||||||
bs.quantity, bs.job_id, bs.job_detail_id, bs.tray_code, bs.out_quantity,
|
bs.length, bs.perimeter, bs.quantity, bs.job_id, bs.job_detail_id, bs.tray_code, bs.out_quantity,
|
||||||
bs.stockin_detail_id, bs.stockin_id, bs.in_type, bs.warehouse_id, bs.warehouse_name,
|
bs.stockin_detail_id, bs.stockin_id, bs.in_type, bs.warehouse_id, bs.warehouse_name,
|
||||||
bs.user_id, bs.user_name, bs.dept_id, bs.dept_name, bs.supplier_id, bs.supplier_name, bcs.iss_double, bcs.cargo_area_id, bcs.the_type
|
bs.user_id, bs.user_name, bs.dept_id, bs.dept_name, bs.supplier_id, bs.supplier_name, bcs.iss_double, bcs.cargo_area_id, bcs.the_type
|
||||||
from bas_stock_detail bs
|
from bas_stock_detail bs
|
||||||
@@ -94,6 +99,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="params.beginBackDate != null and params.beginBackDate != '' and params.endBackDate != null and params.endBackDate != ''"> and bs.back_date between #{params.beginBackDate} and #{params.endBackDate}</if>
|
<if test="params.beginBackDate != null and params.beginBackDate != '' and params.endBackDate != null and params.endBackDate != ''"> and bs.back_date between #{params.beginBackDate} and #{params.endBackDate}</if>
|
||||||
<if test="productName != null and productName != ''"> and bs.product_name like concat('%', #{productName}, '%')</if>
|
<if test="productName != null and productName != ''"> and bs.product_name like concat('%', #{productName}, '%')</if>
|
||||||
<if test="rollerNumber != null and rollerNumber != ''"> and bs.roller_number like concat('%', #{rollerNumber}, '%')</if>
|
<if test="rollerNumber != null and rollerNumber != ''"> and bs.roller_number like concat('%', #{rollerNumber}, '%')</if>
|
||||||
|
<if test="length != null "> and bs.length = #{length}</if>
|
||||||
|
<if test="perimeter != null "> and bs.perimeter = #{quantity}</if>
|
||||||
<if test="quantity != null "> and bs.quantity = #{quantity}</if>
|
<if test="quantity != null "> and bs.quantity = #{quantity}</if>
|
||||||
<if test="jobId != null and jobId != ''"> and bs.job_id = #{jobId}</if>
|
<if test="jobId != null and jobId != ''"> and bs.job_id = #{jobId}</if>
|
||||||
<if test="jobDetailId != null and jobDetailId != ''"> and bs.job_detail_id = #{jobDetailId}</if>
|
<if test="jobDetailId != null and jobDetailId != ''"> and bs.job_detail_id = #{jobDetailId}</if>
|
||||||
@@ -143,6 +150,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="productId != null">product_id,</if>
|
<if test="productId != null">product_id,</if>
|
||||||
<if test="productName != null">product_name,</if>
|
<if test="productName != null">product_name,</if>
|
||||||
<if test="rollerNumber != null">roller_number,</if>
|
<if test="rollerNumber != null">roller_number,</if>
|
||||||
|
<if test="length != null">length,</if>
|
||||||
|
<if test="perimeter != null">perimeter,</if>
|
||||||
<if test="quantity != null">quantity,</if>
|
<if test="quantity != null">quantity,</if>
|
||||||
<if test="jobId != null">job_id,</if>
|
<if test="jobId != null">job_id,</if>
|
||||||
<if test="jobDetailId != null">job_detail_id,</if>
|
<if test="jobDetailId != null">job_detail_id,</if>
|
||||||
@@ -172,6 +181,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="productId != null">#{productId},</if>
|
<if test="productId != null">#{productId},</if>
|
||||||
<if test="productName != null">#{productName},</if>
|
<if test="productName != null">#{productName},</if>
|
||||||
<if test="rollerNumber != null">#{rollerNumber},</if>
|
<if test="rollerNumber != null">#{rollerNumber},</if>
|
||||||
|
<if test="length != null">#{length},</if>
|
||||||
|
<if test="perimeter != null">#{perimeter},</if>
|
||||||
<if test="quantity != null">#{quantity},</if>
|
<if test="quantity != null">#{quantity},</if>
|
||||||
<if test="jobId != null">#{jobId},</if>
|
<if test="jobId != null">#{jobId},</if>
|
||||||
<if test="jobDetailId != null">#{jobDetailId},</if>
|
<if test="jobDetailId != null">#{jobDetailId},</if>
|
||||||
@@ -203,6 +214,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="productId != null">product_id = #{productId},</if>
|
<if test="productId != null">product_id = #{productId},</if>
|
||||||
<if test="productName != null">product_name = #{productName},</if>
|
<if test="productName != null">product_name = #{productName},</if>
|
||||||
<if test="rollerNumber != null">roller_number = #{rollerNumber},</if>
|
<if test="rollerNumber != null">roller_number = #{rollerNumber},</if>
|
||||||
|
<if test="length != null">length = #{length},</if>
|
||||||
|
<if test="perimeter != null">perimeter = #{perimeter},</if>
|
||||||
<if test="quantity != null">quantity = #{quantity},</if>
|
<if test="quantity != null">quantity = #{quantity},</if>
|
||||||
<if test="jobId != null">job_id = #{jobId},</if>
|
<if test="jobId != null">job_id = #{jobId},</if>
|
||||||
<if test="jobDetailId != null">job_detail_id = #{jobDetailId},</if>
|
<if test="jobDetailId != null">job_detail_id = #{jobDetailId},</if>
|
||||||
|
|||||||
@@ -20,10 +20,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<result property="colorSequence" column="color_sequence" />
|
<result property="colorSequence" column="color_sequence" />
|
||||||
<result property="color" column="color" />
|
<result property="color" column="color" />
|
||||||
<result property="status" column="status" />
|
<result property="status" column="status" />
|
||||||
|
<result property="length" column="length" />
|
||||||
|
<result property="perimeter" column="perimeter" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<sql id="selectInTrayMsgVo">
|
<sql id="selectInTrayMsgVo">
|
||||||
select id, tray_code, stockin_detail_id, product_id, quantity, warehouse_id, user_id, dept_id, create_time, tray_type, roller_number, color_sequence, color, status from in_tray_msg
|
select id, tray_code, stockin_detail_id, product_id, quantity, warehouse_id, user_id, dept_id, create_time, tray_type, roller_number, color_sequence, color, length, perimeter, status from in_tray_msg
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
<select id="selectInTrayMsgList" parameterType="InTrayMsg" resultMap="InTrayMsgResult">
|
<select id="selectInTrayMsgList" parameterType="InTrayMsg" resultMap="InTrayMsgResult">
|
||||||
@@ -42,6 +44,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="colorSequence != null "> and color_sequence = #{colorSequence}</if>
|
<if test="colorSequence != null "> and color_sequence = #{colorSequence}</if>
|
||||||
<if test="color != null and color != ''"> and color = #{color}</if>
|
<if test="color != null and color != ''"> and color = #{color}</if>
|
||||||
<if test="status != null "> and status = #{status}</if>
|
<if test="status != null "> and status = #{status}</if>
|
||||||
|
<if test="length != null "> and length = #{length}</if>
|
||||||
|
<if test="perimeter != null "> and perimeter = #{perimeter}</if>
|
||||||
</where>
|
</where>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
@@ -78,6 +82,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="colorSequence != null ">color_sequence,</if>
|
<if test="colorSequence != null ">color_sequence,</if>
|
||||||
<if test="color != null ">color,</if>
|
<if test="color != null ">color,</if>
|
||||||
<if test="status != null ">status,</if>
|
<if test="status != null ">status,</if>
|
||||||
|
<if test="length != null ">length,</if>
|
||||||
|
<if test="perimeter != null ">perimeter,</if>
|
||||||
</trim>
|
</trim>
|
||||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
<if test="trayCode != null">#{trayCode},</if>
|
<if test="trayCode != null">#{trayCode},</if>
|
||||||
@@ -94,6 +100,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="colorSequence != null ">#{colorSequence},</if>
|
<if test="colorSequence != null ">#{colorSequence},</if>
|
||||||
<if test="color != null ">#{color},</if>
|
<if test="color != null ">#{color},</if>
|
||||||
<if test="status != null ">#{status},</if>
|
<if test="status != null ">#{status},</if>
|
||||||
|
<if test="length != null ">#{length},</if>
|
||||||
|
<if test="perimeter != null ">#{perimeter},</if>
|
||||||
</trim>
|
</trim>
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
@@ -114,6 +122,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="colorSequence != null ">color_sequence = #{colorSequence},</if>
|
<if test="colorSequence != null ">color_sequence = #{colorSequence},</if>
|
||||||
<if test="color != null ">color = #{color},</if>
|
<if test="color != null ">color = #{color},</if>
|
||||||
<if test="status != null ">status = #{status},</if>
|
<if test="status != null ">status = #{status},</if>
|
||||||
|
<if test="length != null ">length = #{length},</if>
|
||||||
|
<if test="perimeter != null ">perimeter = #{perimeter},</if>
|
||||||
</trim>
|
</trim>
|
||||||
where id = #{id}
|
where id = #{id}
|
||||||
</update>
|
</update>
|
||||||
|
|||||||
@@ -19,13 +19,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<result property="colorSequence" column="color_sequence" />
|
<result property="colorSequence" column="color_sequence" />
|
||||||
<result property="color" column="color" />
|
<result property="color" column="color" />
|
||||||
<result property="spec" column="spec" />
|
<result property="spec" column="spec" />
|
||||||
|
<result property="length" column="length" />
|
||||||
|
<result property="perimeter" column="perimeter" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<sql id="selectOutStockoutDetailVo">
|
<sql id="selectOutStockoutDetailVo">
|
||||||
select stockout_detail_id, stockout_id, lot_no, product_id, product_name, quantity, allot_num, assign_num, roller_number, color_sequence, color, spec, status, remark from out_stockout_detail
|
select stockout_detail_id, stockout_id, lot_no, product_id, product_name, quantity, allot_num, assign_num, roller_number, color_sequence, color, spec, length, perimeter, status, remark from out_stockout_detail
|
||||||
</sql>
|
</sql>
|
||||||
<sql id="selectOutStockoutDetailFinishVo">
|
<sql id="selectOutStockoutDetailFinishVo">
|
||||||
select stockout_detail_id, stockout_id, lot_no, product_id, product_name, quantity, allot_num, assign_num, roller_number, color_sequence, color, spec, status, remark from out_stockout_detail_finish
|
select stockout_detail_id, stockout_id, lot_no, product_id, product_name, quantity, allot_num, assign_num, roller_number, color_sequence, color, spec, length, perimeter, status, remark from out_stockout_detail_finish
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
<select id="selectOutStockoutDetailList" parameterType="OutStockoutDetail" resultMap="OutStockoutDetailResult">
|
<select id="selectOutStockoutDetailList" parameterType="OutStockoutDetail" resultMap="OutStockoutDetailResult">
|
||||||
@@ -42,6 +44,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="colorSequence != null "> and color_sequence = #{colorSequence}</if>
|
<if test="colorSequence != null "> and color_sequence = #{colorSequence}</if>
|
||||||
<if test="color != null "> and color = #{color}</if>
|
<if test="color != null "> and color = #{color}</if>
|
||||||
<if test="spec != null and spec != '' "> and spec like concat('%', #{spec}, '%')</if>
|
<if test="spec != null and spec != '' "> and spec like concat('%', #{spec}, '%')</if>
|
||||||
|
<if test="length != null"> and length = #{length}</if>
|
||||||
|
<if test="perimeter != null"> and perimeter = #{perimeter}</if>
|
||||||
<if test="status != null"> and status = #{status}</if>
|
<if test="status != null"> and status = #{status}</if>
|
||||||
</where>
|
</where>
|
||||||
</select>
|
</select>
|
||||||
@@ -81,6 +85,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="color != null "> and color = #{color}</if>
|
<if test="color != null "> and color = #{color}</if>
|
||||||
<if test="spec != null and spec != '' "> and spec like concat('%', #{spec}, '%')</if>
|
<if test="spec != null and spec != '' "> and spec like concat('%', #{spec}, '%')</if>
|
||||||
<if test="status != null"> and status = #{status}</if>
|
<if test="status != null"> and status = #{status}</if>
|
||||||
|
<if test="length != null"> and length = #{length}</if>
|
||||||
|
<if test="perimeter != null"> and perimeter = #{perimeter}</if>
|
||||||
</where>
|
</where>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
@@ -101,6 +107,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="spec != null ">spec,</if>
|
<if test="spec != null ">spec,</if>
|
||||||
<if test="remark != null">remark,</if>
|
<if test="remark != null">remark,</if>
|
||||||
<if test="status != null">status,</if>
|
<if test="status != null">status,</if>
|
||||||
|
<if test="length != null">length,</if>
|
||||||
|
<if test="perimeter != null">perimeter,</if>
|
||||||
</trim>
|
</trim>
|
||||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
<if test="stockoutDetailId != null">#{stockoutDetailId},</if>
|
<if test="stockoutDetailId != null">#{stockoutDetailId},</if>
|
||||||
@@ -117,6 +125,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="spec != null ">#{spec},</if>
|
<if test="spec != null ">#{spec},</if>
|
||||||
<if test="remark != null">#{remark},</if>
|
<if test="remark != null">#{remark},</if>
|
||||||
<if test="status != null">#{status},</if>
|
<if test="status != null">#{status},</if>
|
||||||
|
<if test="length != null">#{length},</if>
|
||||||
|
<if test="perimeter != null">#{perimeter},</if>
|
||||||
</trim>
|
</trim>
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
@@ -136,6 +146,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="spec != null ">spec = #{spec},</if>
|
<if test="spec != null ">spec = #{spec},</if>
|
||||||
<if test="remark != null">remark = #{remark},</if>
|
<if test="remark != null">remark = #{remark},</if>
|
||||||
<if test="status != null">status = #{status},</if>
|
<if test="status != null">status = #{status},</if>
|
||||||
|
<if test="length != null">length = #{length},</if>
|
||||||
|
<if test="perimeter != null">perimeter = #{perimeter},</if>
|
||||||
</trim>
|
</trim>
|
||||||
where stockout_detail_id = #{stockoutDetailId}
|
where stockout_detail_id = #{stockoutDetailId}
|
||||||
</update>
|
</update>
|
||||||
|
|||||||
@@ -33,6 +33,14 @@
|
|||||||
@keyup.enter.native="handleQuery"
|
@keyup.enter.native="handleQuery"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="物料名称" prop="productName">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.productName"
|
||||||
|
placeholder="请输入物料名称"
|
||||||
|
clearable
|
||||||
|
@keyup.enter.native="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="版辊编号" prop="rollerNumber">
|
<el-form-item label="版辊编号" prop="rollerNumber">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.rollerNumber"
|
v-model="queryParams.rollerNumber"
|
||||||
@@ -41,6 +49,22 @@
|
|||||||
@keyup.enter.native="handleQuery"
|
@keyup.enter.native="handleQuery"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="版长" prop="length">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.length"
|
||||||
|
placeholder="请输入版长"
|
||||||
|
clearable
|
||||||
|
@keyup.enter.native="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="版周" prop="perimeter">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.perimeter"
|
||||||
|
placeholder="请输入版周"
|
||||||
|
clearable
|
||||||
|
@keyup.enter.native="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="入库数量" prop="quantity">
|
<el-form-item label="入库数量" prop="quantity">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.quantity"
|
v-model="queryParams.quantity"
|
||||||
@@ -141,7 +165,10 @@
|
|||||||
<el-table-column label="入库主单" align="center" prop="stockinId" />
|
<el-table-column label="入库主单" align="center" prop="stockinId" />
|
||||||
<el-table-column label="入库子单" align="center" prop="stockinDetailId" />
|
<el-table-column label="入库子单" align="center" prop="stockinDetailId" />
|
||||||
<el-table-column label="物料编码" align="center" prop="productId" />
|
<el-table-column label="物料编码" align="center" prop="productId" />
|
||||||
|
<el-table-column label="物料名称" align="center" prop="productName" />
|
||||||
<el-table-column label="版辊编号" align="center" prop="rollerNumber" />
|
<el-table-column label="版辊编号" align="center" prop="rollerNumber" />
|
||||||
|
<el-table-column label="版长" align="center" prop="length" />
|
||||||
|
<el-table-column label="版周" align="center" prop="perimeter" />
|
||||||
<el-table-column label="入库数量" align="center" prop="quantity" />
|
<el-table-column label="入库数量" align="center" prop="quantity" />
|
||||||
<el-table-column label="用户编码" align="center" prop="userId" />
|
<el-table-column label="用户编码" align="center" prop="userId" />
|
||||||
<el-table-column label="部门编码" align="center" prop="deptId" />
|
<el-table-column label="部门编码" align="center" prop="deptId" />
|
||||||
@@ -151,20 +178,15 @@
|
|||||||
<dict-tag :options="dict.type.in_tray_msg_status" :value="scope.row.status" />
|
<dict-tag :options="dict.type.in_tray_msg_status" :value="scope.row.status" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- <el-table-column label="${comment}" align="center" prop="jobId" />
|
<!-- <el-table-column label="${comment}" align="center" prop="jobId" />-->
|
||||||
<el-table-column label="${comment}" align="center" prop="jobDetailId" /> -->
|
<!-- <el-table-column label="${comment}" align="center" prop="jobDetailId" />-->
|
||||||
<!-- <el-table-column label="${comment}" align="center" prop="supplierId" />
|
<!-- <el-table-column label="${comment}" align="center" prop="supplierId" />-->
|
||||||
<el-table-column label="${comment}" align="center" prop="spec" />
|
<!-- <el-table-column label="${comment}" align="center" prop="spec" />-->
|
||||||
<el-table-column label="${comment}" align="center" prop="rollerNumber" />
|
<!-- <el-table-column label="${comment}" align="center" prop="rollerNumber" />-->
|
||||||
<el-table-column label="${comment}" align="center" prop="diameter" />
|
<!-- <el-table-column label="${comment}" align="center" prop="diameter" />-->
|
||||||
<el-table-column label="${comment}" align="center" prop="splicingLength" />
|
<!-- <el-table-column label="${comment}" align="center" prop="length" />-->
|
||||||
<el-table-column label="${comment}" align="center" prop="plugHole" /> -->
|
<!-- <el-table-column label="${comment}" align="center" prop="plugHole" />-->
|
||||||
<el-table-column label="颜色" align="center" prop="color" />
|
<el-table-column label="颜色" align="center" prop="color" />
|
||||||
<!-- <el-table-column label="${comment}" align="center" prop="productName" />
|
|
||||||
<el-table-column label="${comment}" align="center" prop="warehouseName" />
|
|
||||||
<el-table-column label="${comment}" align="center" prop="userName" />
|
|
||||||
<el-table-column label="${comment}" align="center" prop="deptName" />
|
|
||||||
<el-table-column label="${comment}" align="center" prop="supplierName" /> -->
|
|
||||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button
|
<el-button
|
||||||
@@ -184,7 +206,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
||||||
<pagination
|
<pagination
|
||||||
v-show="total>0"
|
v-show="total>0"
|
||||||
:total="total"
|
:total="total"
|
||||||
@@ -207,6 +229,16 @@
|
|||||||
<el-input v-model="form.rollerNumber" :disabled="isBindEmptyTray" placeholder="请输入版辊编号" />
|
<el-input v-model="form.rollerNumber" :disabled="isBindEmptyTray" placeholder="请输入版辊编号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="版长" prop="length">
|
||||||
|
<el-input v-model="form.length" placeholder="请输入版长" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="版周" prop="perimeter">
|
||||||
|
<el-input v-model="form.perimeter" placeholder="请输入版周" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="入库数量" prop="quantity">
|
<el-form-item label="入库数量" prop="quantity">
|
||||||
<el-input v-model="form.quantity" disabled placeholder="1" />
|
<el-input v-model="form.quantity" disabled placeholder="1" />
|
||||||
@@ -270,7 +302,8 @@ export default {
|
|||||||
spec: null,
|
spec: null,
|
||||||
rollerNumber: null,
|
rollerNumber: null,
|
||||||
diameter: null,
|
diameter: null,
|
||||||
splicingLength: null,
|
length: null,
|
||||||
|
perimeter: null,
|
||||||
plugHole: null,
|
plugHole: null,
|
||||||
colorSequence: null,
|
colorSequence: null,
|
||||||
color: null,
|
color: null,
|
||||||
@@ -333,7 +366,8 @@ export default {
|
|||||||
spec: null,
|
spec: null,
|
||||||
rollerNumber: null,
|
rollerNumber: null,
|
||||||
diameter: null,
|
diameter: null,
|
||||||
splicingLength: null,
|
length: null,
|
||||||
|
perimeter: null,
|
||||||
plugHole: null,
|
plugHole: null,
|
||||||
colorSequence: null,
|
colorSequence: null,
|
||||||
color: null,
|
color: null,
|
||||||
@@ -351,7 +385,7 @@ export default {
|
|||||||
this.queryParams.pageNum = 1
|
this.queryParams.pageNum = 1
|
||||||
this.getList()
|
this.getList()
|
||||||
},
|
},
|
||||||
|
|
||||||
/** 重置按钮操作 */
|
/** 重置按钮操作 */
|
||||||
resetQuery() {
|
resetQuery() {
|
||||||
this.resetForm("queryForm")
|
this.resetForm("queryForm")
|
||||||
@@ -424,7 +458,7 @@ export default {
|
|||||||
this.getList()
|
this.getList()
|
||||||
}).catch(() => {})
|
}).catch(() => {})
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/** 删除按钮操作 */
|
/** 删除按钮操作 */
|
||||||
|
|||||||
@@ -226,6 +226,8 @@
|
|||||||
<el-table-column label="物料编码" align="center" prop="productId" width="150"/>
|
<el-table-column label="物料编码" align="center" prop="productId" width="150"/>
|
||||||
<el-table-column label="物料名称" align="center" prop="productName" min-width="150" show-overflow-tooltip/>
|
<el-table-column label="物料名称" align="center" prop="productName" min-width="150" show-overflow-tooltip/>
|
||||||
<el-table-column label="版辊编号" align="center" prop="rollerNumber"/>
|
<el-table-column label="版辊编号" align="center" prop="rollerNumber"/>
|
||||||
|
<el-table-column label="版长" align="center" prop="length"/>
|
||||||
|
<el-table-column label="版周" align="center" prop="perimeter"/>
|
||||||
<el-table-column label="计划数量" align="center" prop="quantity" width="100"/>
|
<el-table-column label="计划数量" align="center" prop="quantity" width="100"/>
|
||||||
<el-table-column label="扫码数量" align="center" prop="scanNum" width="100"/>
|
<el-table-column label="扫码数量" align="center" prop="scanNum" width="100"/>
|
||||||
<el-table-column label="实际数量" align="center" prop="assignNum" width="100"/>
|
<el-table-column label="实际数量" align="center" prop="assignNum" width="100"/>
|
||||||
@@ -328,8 +330,8 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="仓库ID562" prop="warehouseId">
|
<el-form-item label="仓库ID" prop="warehouseId">
|
||||||
<el-input v-model="form.warehouseId" placeholder="请输入仓库ID562"/>
|
<el-input v-model="form.warehouseId" placeholder="请输入仓库ID"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
|
|||||||
@@ -249,6 +249,8 @@
|
|||||||
<el-table-column label="子单ID" align="center" prop="stockoutDetailId" width="180"/>
|
<el-table-column label="子单ID" align="center" prop="stockoutDetailId" width="180"/>
|
||||||
<el-table-column label="批次" align="center" prop="lotNo" width="150"/>
|
<el-table-column label="批次" align="center" prop="lotNo" width="150"/>
|
||||||
<el-table-column label="辊号" align="center" prop="rollerNumber" width="150"/>
|
<el-table-column label="辊号" align="center" prop="rollerNumber" width="150"/>
|
||||||
|
<el-table-column label="版长" align="center" prop="length" width="150"/>
|
||||||
|
<el-table-column label="版周" align="center" prop="perimeter" width="150"/>
|
||||||
<el-table-column label="物料编码" align="center" prop="productId" width="150"/>
|
<el-table-column label="物料编码" align="center" prop="productId" width="150"/>
|
||||||
<el-table-column label="物料名称" align="center" prop="productName" min-width="150" show-overflow-tooltip/>
|
<el-table-column label="物料名称" align="center" prop="productName" min-width="150" show-overflow-tooltip/>
|
||||||
<el-table-column label="计划数量" align="center" prop="quantity" width="100"/>
|
<el-table-column label="计划数量" align="center" prop="quantity" width="100"/>
|
||||||
@@ -290,6 +292,8 @@
|
|||||||
<el-table-column type="selection" width="55" align="center"/>
|
<el-table-column type="selection" width="55" align="center"/>
|
||||||
<el-table-column label="库存ID" prop="stockId" align="center"/>
|
<el-table-column label="库存ID" prop="stockId" align="center"/>
|
||||||
<el-table-column label="辊号" prop="rollerNumber" align="center"/>
|
<el-table-column label="辊号" prop="rollerNumber" align="center"/>
|
||||||
|
<el-table-column label="版长" prop="length" align="center"/>
|
||||||
|
<el-table-column label="版周" prop="perimeter" align="center"/>
|
||||||
<el-table-column label="物料编码" prop="productId" align="center"/>
|
<el-table-column label="物料编码" prop="productId" align="center"/>
|
||||||
<el-table-column label="物料名称" prop="productName" align="center"/>
|
<el-table-column label="物料名称" prop="productName" align="center"/>
|
||||||
<el-table-column label="批次" prop="lotNo" align="center"/>
|
<el-table-column label="批次" prop="lotNo" align="center"/>
|
||||||
|
|||||||
@@ -183,17 +183,41 @@
|
|||||||
style="width:140px;margin-right:8px;"
|
style="width:140px;margin-right:8px;"
|
||||||
@keyup.enter.native="searchStock"
|
@keyup.enter.native="searchStock"
|
||||||
/>
|
/>
|
||||||
|
<el-input
|
||||||
|
v-model="stockQuery.productId"
|
||||||
|
placeholder="物料编码"
|
||||||
|
size="small"
|
||||||
|
clearable
|
||||||
|
style="width:140px;margin-right:8px;"
|
||||||
|
@keyup.enter.native="searchStock"
|
||||||
|
/>
|
||||||
<el-input
|
<el-input
|
||||||
v-model="stockQuery.productName"
|
v-model="stockQuery.productName"
|
||||||
placeholder="物料名称"
|
placeholder="物料名称"
|
||||||
size="small"
|
size="small"
|
||||||
clearable
|
clearable
|
||||||
style="width:160px;margin-right:8px;"
|
style="width:140px;margin-right:8px;"
|
||||||
@keyup.enter.native="searchStock"
|
@keyup.enter.native="searchStock"
|
||||||
/>
|
/>
|
||||||
<el-input
|
<el-input
|
||||||
v-model="stockQuery.productId"
|
v-model="stockQuery.rollerNumber"
|
||||||
placeholder="物料编码"
|
placeholder="辊号"
|
||||||
|
size="small"
|
||||||
|
clearable
|
||||||
|
style="width:140px;margin-right:8px;"
|
||||||
|
@keyup.enter.native="searchStock"
|
||||||
|
/>
|
||||||
|
<el-input
|
||||||
|
v-model="stockQuery.length"
|
||||||
|
placeholder="版长"
|
||||||
|
size="small"
|
||||||
|
clearable
|
||||||
|
style="width:140px;margin-right:8px;"
|
||||||
|
@keyup.enter.native="searchStock"
|
||||||
|
/>
|
||||||
|
<el-input
|
||||||
|
v-model="stockQuery.perimeter"
|
||||||
|
placeholder="版周"
|
||||||
size="small"
|
size="small"
|
||||||
clearable
|
clearable
|
||||||
style="width:140px;margin-right:8px;"
|
style="width:140px;margin-right:8px;"
|
||||||
@@ -228,6 +252,9 @@
|
|||||||
<el-table-column label="货位" prop="cargoSpaceId" align="center" width="100" />
|
<el-table-column label="货位" prop="cargoSpaceId" align="center" width="100" />
|
||||||
<el-table-column label="物料编码" prop="productId" align="center" width="120" />
|
<el-table-column label="物料编码" prop="productId" align="center" width="120" />
|
||||||
<el-table-column label="物料名称" prop="productName" align="center" min-width="130" show-overflow-tooltip />
|
<el-table-column label="物料名称" prop="productName" align="center" min-width="130" show-overflow-tooltip />
|
||||||
|
<el-table-column label="辊号" prop="rollerNumber" align="center" width="120" />
|
||||||
|
<el-table-column label="版长" prop="length" align="center" width="120" />
|
||||||
|
<el-table-column label="版周" prop="perimeter" align="center" width="120" />
|
||||||
<el-table-column label="批次" prop="lotNo" align="center" width="120" />
|
<el-table-column label="批次" prop="lotNo" align="center" width="120" />
|
||||||
<el-table-column label="托盘条码" prop="trayCode" align="center" width="120" show-overflow-tooltip />
|
<el-table-column label="托盘条码" prop="trayCode" align="center" width="120" show-overflow-tooltip />
|
||||||
<el-table-column label="可用库存" prop="quantity" align="center" width="90" />
|
<el-table-column label="可用库存" prop="quantity" align="center" width="90" />
|
||||||
@@ -425,6 +452,7 @@ export default {
|
|||||||
warehouseId: null,
|
warehouseId: null,
|
||||||
productId: null,
|
productId: null,
|
||||||
productName: null,
|
productName: null,
|
||||||
|
rollerNumber: null,
|
||||||
lotNo: null
|
lotNo: null
|
||||||
},
|
},
|
||||||
selectedStocks: [],
|
selectedStocks: [],
|
||||||
|
|||||||
Reference in New Issue
Block a user