From 3020a4244d74edb25ea37231727dbc3c38374645 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A0=82=E7=B3=96?= Date: Sat, 11 Apr 2026 15:36:50 +0800 Subject: [PATCH] =?UTF-8?q?feat(wms):=20=E6=96=B0=E5=A2=9E=E6=8A=A5?= =?UTF-8?q?=E8=A1=A8=E5=AF=BC=E5=87=BA=E6=96=87=E4=BB=B6=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增报表导出文件管理模块,包含后端接口和前端页面 在各类报表页面添加保存报表功能 优化CoilSelector和CoilCard组件显示 调整分页大小和表格高度 统一各产线报表配置 修复文件预览组件高度问题 --- klp-ui/src/api/wms/exportFile.js | 44 ++ klp-ui/src/components/CoilSelector/index.vue | 2 +- .../FilePreview/preview/xlsx/index.vue | 8 +- .../KLPService/Renderer/CoilCard.vue | 2 +- .../views/crm/components/DeliveryTable.vue | 60 +++ .../crm/contract/components/ContractTabs.vue | 163 +++++--- klp-ui/src/views/crm/order/index.vue | 20 +- klp-ui/src/views/wms/coil/panels/base.vue | 4 +- klp-ui/src/views/wms/report/delivery.vue | 28 +- .../views/wms/report/duge/comprehensive.vue | 1 + klp-ui/src/views/wms/report/duge/day.vue | 1 + klp-ui/src/views/wms/report/duge/loss.vue | 9 +- klp-ui/src/views/wms/report/duge/month.vue | 1 + klp-ui/src/views/wms/report/duge/out.vue | 13 +- klp-ui/src/views/wms/report/duge/team.vue | 1 + klp-ui/src/views/wms/report/duge/year.vue | 1 + klp-ui/src/views/wms/report/export/index.vue | 379 ++++++++++++++++++ klp-ui/src/views/wms/report/js/config.js | 9 +- klp-ui/src/views/wms/report/js/reportFile.js | 54 +++ .../views/wms/report/lajiao/comprehensive.vue | 1 + klp-ui/src/views/wms/report/lajiao/day.vue | 1 + klp-ui/src/views/wms/report/lajiao/loss.vue | 9 +- klp-ui/src/views/wms/report/lajiao/month.vue | 1 + klp-ui/src/views/wms/report/lajiao/out.vue | 13 +- klp-ui/src/views/wms/report/lajiao/team.vue | 1 + klp-ui/src/views/wms/report/lajiao/year.vue | 1 + klp-ui/src/views/wms/report/receive.vue | 43 +- .../views/wms/report/shuang/comprehensive.vue | 1 + klp-ui/src/views/wms/report/shuang/day.vue | 1 + klp-ui/src/views/wms/report/shuang/loss.vue | 9 +- klp-ui/src/views/wms/report/shuang/month.vue | 1 + klp-ui/src/views/wms/report/shuang/out.vue | 13 +- klp-ui/src/views/wms/report/shuang/team.vue | 1 + klp-ui/src/views/wms/report/shuang/year.vue | 1 + .../views/wms/report/split/comprehensive.vue | 1 + klp-ui/src/views/wms/report/split/day.vue | 1 + klp-ui/src/views/wms/report/split/loss.vue | 3 + klp-ui/src/views/wms/report/split/month.vue | 1 + klp-ui/src/views/wms/report/split/out.vue | 1 + klp-ui/src/views/wms/report/split/team.vue | 1 + klp-ui/src/views/wms/report/split/year.vue | 1 + .../wms/report/template/comprehensive.vue | 51 ++- klp-ui/src/views/wms/report/template/day.vue | 54 ++- klp-ui/src/views/wms/report/template/loss.vue | 29 ++ .../src/views/wms/report/template/merge.vue | 53 ++- .../src/views/wms/report/template/month.vue | 51 ++- klp-ui/src/views/wms/report/template/out.vue | 29 +- klp-ui/src/views/wms/report/template/team.vue | 51 ++- klp-ui/src/views/wms/report/template/year.vue | 51 ++- .../views/wms/report/tuozhi/comprehensive.vue | 1 + klp-ui/src/views/wms/report/tuozhi/day.vue | 1 + klp-ui/src/views/wms/report/tuozhi/loss.vue | 9 +- klp-ui/src/views/wms/report/tuozhi/month.vue | 1 + klp-ui/src/views/wms/report/tuozhi/out.vue | 1 + klp-ui/src/views/wms/report/tuozhi/team.vue | 1 + klp-ui/src/views/wms/report/tuozhi/year.vue | 1 + .../views/wms/report/zha/comprehensive.vue | 1 + klp-ui/src/views/wms/report/zha/day.vue | 1 + klp-ui/src/views/wms/report/zha/loss.vue | 9 +- klp-ui/src/views/wms/report/zha/month.vue | 1 + klp-ui/src/views/wms/report/zha/out.vue | 16 +- klp-ui/src/views/wms/report/zha/team.vue | 1 + klp-ui/src/views/wms/report/zha/year.vue | 1 + .../views/wms/report/zinc/comprehensive.vue | 1 + klp-ui/src/views/wms/report/zinc/day.vue | 1 + klp-ui/src/views/wms/report/zinc/loss.vue | 9 +- klp-ui/src/views/wms/report/zinc/month.vue | 1 + klp-ui/src/views/wms/report/zinc/out.vue | 14 +- klp-ui/src/views/wms/report/zinc/team.vue | 1 + klp-ui/src/views/wms/report/zinc/year.vue | 1 + .../ReportExportFileController.java | 99 +++++ .../java/com/klp/domain/ReportExportFile.java | 65 +++ .../com/klp/domain/bo/ReportExportFileBo.java | 64 +++ .../com/klp/domain/vo/ReportExportFileVo.java | 77 ++++ .../klp/mapper/ReportExportFileMapper.java | 15 + .../klp/service/IReportExportFileService.java | 49 +++ .../impl/ReportExportFileServiceImpl.java | 115 ++++++ .../mapper/klp/ReportExportFileMapper.xml | 25 ++ 78 files changed, 1697 insertions(+), 160 deletions(-) create mode 100644 klp-ui/src/api/wms/exportFile.js create mode 100644 klp-ui/src/views/crm/components/DeliveryTable.vue create mode 100644 klp-ui/src/views/wms/report/export/index.vue create mode 100644 klp-ui/src/views/wms/report/js/reportFile.js create mode 100644 klp-wms/src/main/java/com/klp/controller/ReportExportFileController.java create mode 100644 klp-wms/src/main/java/com/klp/domain/ReportExportFile.java create mode 100644 klp-wms/src/main/java/com/klp/domain/bo/ReportExportFileBo.java create mode 100644 klp-wms/src/main/java/com/klp/domain/vo/ReportExportFileVo.java create mode 100644 klp-wms/src/main/java/com/klp/mapper/ReportExportFileMapper.java create mode 100644 klp-wms/src/main/java/com/klp/service/IReportExportFileService.java create mode 100644 klp-wms/src/main/java/com/klp/service/impl/ReportExportFileServiceImpl.java create mode 100644 klp-wms/src/main/resources/mapper/klp/ReportExportFileMapper.xml diff --git a/klp-ui/src/api/wms/exportFile.js b/klp-ui/src/api/wms/exportFile.js new file mode 100644 index 00000000..0d1b555a --- /dev/null +++ b/klp-ui/src/api/wms/exportFile.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询报导出文件列表 +export function listExportFile(query) { + return request({ + url: '/wms/exportFile/list', + method: 'get', + params: query + }) +} + +// 查询报导出文件详细 +export function getExportFile(id) { + return request({ + url: '/wms/exportFile/' + id, + method: 'get' + }) +} + +// 新增报导出文件 +export function addExportFile(data) { + return request({ + url: '/wms/exportFile', + method: 'post', + data: data + }) +} + +// 修改报导出文件 +export function updateExportFile(data) { + return request({ + url: '/wms/exportFile', + method: 'put', + data: data + }) +} + +// 删除报导出文件 +export function delExportFile(id) { + return request({ + url: '/wms/exportFile/' + id, + method: 'delete' + }) +} diff --git a/klp-ui/src/components/CoilSelector/index.vue b/klp-ui/src/components/CoilSelector/index.vue index 5af706fe..14309f0e 100644 --- a/klp-ui/src/components/CoilSelector/index.vue +++ b/klp-ui/src/components/CoilSelector/index.vue @@ -267,7 +267,7 @@ export default { selectedCoil: null, queryParams: { pageNum: 1, - pageSize: 10, + pageSize: 50, currentCoilNo: null, grade: null, itemSpecification: null, diff --git a/klp-ui/src/components/FilePreview/preview/xlsx/index.vue b/klp-ui/src/components/FilePreview/preview/xlsx/index.vue index 0904805b..817d802a 100644 --- a/klp-ui/src/components/FilePreview/preview/xlsx/index.vue +++ b/klp-ui/src/components/FilePreview/preview/xlsx/index.vue @@ -1,5 +1,5 @@ @@ -18,6 +18,11 @@ export default { type: String, required: true, description: "Excel文件的URL或路径" + }, + height: { + type: String, + default: "70vh", + description: "预览区域高度" } }, methods: { @@ -32,7 +37,6 @@ export default { \ No newline at end of file diff --git a/klp-ui/src/components/KLPService/Renderer/CoilCard.vue b/klp-ui/src/components/KLPService/Renderer/CoilCard.vue index 9468480d..7cf97a37 100644 --- a/klp-ui/src/components/KLPService/Renderer/CoilCard.vue +++ b/klp-ui/src/components/KLPService/Renderer/CoilCard.vue @@ -7,7 +7,7 @@
- {{ coil.coilName || '—' }} + {{ coil.itemName || '—' }}
diff --git a/klp-ui/src/views/crm/components/DeliveryTable.vue b/klp-ui/src/views/crm/components/DeliveryTable.vue new file mode 100644 index 00000000..9851a337 --- /dev/null +++ b/klp-ui/src/views/crm/components/DeliveryTable.vue @@ -0,0 +1,60 @@ + + + \ No newline at end of file diff --git a/klp-ui/src/views/crm/contract/components/ContractTabs.vue b/klp-ui/src/views/crm/contract/components/ContractTabs.vue index 151345a0..6ac435b3 100644 --- a/klp-ui/src/views/crm/contract/components/ContractTabs.vue +++ b/klp-ui/src/views/crm/contract/components/ContractTabs.vue @@ -1,60 +1,61 @@ diff --git a/klp-ui/src/views/wms/report/duge/loss.vue b/klp-ui/src/views/wms/report/duge/loss.vue index a10dfd6b..05516db1 100644 --- a/klp-ui/src/views/wms/report/duge/loss.vue +++ b/klp-ui/src/views/wms/report/duge/loss.vue @@ -2,11 +2,15 @@ + + diff --git a/klp-ui/src/views/wms/report/js/config.js b/klp-ui/src/views/wms/report/js/config.js index 3563efa2..e27df9f4 100644 --- a/klp-ui/src/views/wms/report/js/config.js +++ b/klp-ui/src/views/wms/report/js/config.js @@ -13,6 +13,7 @@ export const dugeConfig = { { label: '废品库', value: '2019583429955104769' }, { label: '退货库', value: '2019583137616310273' }, ], + productionLine: '镀铬线', } export const lajiaoConfig = { @@ -30,6 +31,7 @@ export const lajiaoConfig = { { label: '废品库', value: '2019583429955104769' }, { label: '退货库', value: '2019583137616310273' }, ], + productionLine: '拉矫线', } export const shuangConfig = { @@ -47,6 +49,7 @@ export const shuangConfig = { { label: '废品库', value: '2019583429955104769' }, { label: '退货库', value: '2019583137616310273' }, ], + productionLine: '双机架线', } export const tuozhiConfig = { @@ -64,6 +67,7 @@ export const tuozhiConfig = { { label: '废品库', value: '2019583429955104769' }, { label: '退货库', value: '2019583137616310273' }, ], + productionLine: '脱脂线', } export const suanzhaConfig = { @@ -84,6 +88,7 @@ export const suanzhaConfig = { { label: '废品库', value: '2019583429955104769' }, { label: '退货库', value: '2019583137616310273' }, ], + productionLine: '酸轧线', } export const zincConfig = { @@ -102,6 +107,7 @@ export const zincConfig = { { value: '2019583429955104769', label: '废品库' }, { value: '2019583137616310273', label: '退货库' }, ], + productionLine: '镀锌线', } export const splitConfig = { @@ -117,6 +123,7 @@ export const splitConfig = { { value: '1988150800092950529', label: '退火分条成品' }, { value: '1988150380649967617', label: '镀锌分条成品' }, { value: '1988151027466170370', label: '拉矫分条成品' }, - ] + ], + productionLine: '分条线', } diff --git a/klp-ui/src/views/wms/report/js/reportFile.js b/klp-ui/src/views/wms/report/js/reportFile.js new file mode 100644 index 00000000..bbd3919b --- /dev/null +++ b/klp-ui/src/views/wms/report/js/reportFile.js @@ -0,0 +1,54 @@ +import { uploadFile } from "@/api/system/oss"; +import { exportCoilWithAll } from "@/api/wms/coil"; +import { addExportFile } from "@/api/wms/exportFile"; + +export async function saveReportFile(coilIds, { reportParams, productionLine, reportType }) { + // 使用exportCoilWithAll接口传入coilIds获取二进制文件数据 + if (!coilIds) { + throw new Error('无数据,无法保存') + } + const response = await exportCoilWithAll({ coilIds }) + // 构建报告标题 + function addZero(num) { + return num < 10 ? '0' + num : num + } + + const now = new Date() + const year = now.getFullYear() + const month = addZero(now.getMonth() + 1) + const day = addZero(now.getDate()) + console.log(productionLine) + const reportTitle = `${year}-${month}-${day}_${reportType}_${productionLine || '全厂'}` + // reportName 后再增加时间戳,避免重复 + const reportName = `${reportTitle}_${new Date().getTime()}` + + const file = new Blob([response], { type: 'application/vnd.ms-excel' }) + const fileName = reportTitle + '.xlsx' + // 通过new File构建出excel文件 + const excelFile = new File([file], fileName, { type: 'application/vnd.ms-excel' }) + // 上传文件到minio + const uploadResponse = await uploadFile(excelFile) + // 构建请求体创建文件保存记录 + const reportExportFile = { + reportName, + reportTitle, + reportParams: JSON.stringify(reportParams, null, 2), + productionLine, + reportType, + attachment: uploadResponse.data.url, + ossId: uploadResponse.data.ossId, + } + // 调用addExportFile接口创建文件保存记录 + const res = await addExportFile(reportExportFile) + return true; +} + +function createReportTitle(reportType, productionLine) { + // 获取一个yyyy-MM-dd格式的北京时间字符串 + const now = new Date() + const year = now.getFullYear() + const month = addZero(now.getMonth() + 1) + const day = addZero(now.getDate()) + console.log(year, month, day) + return `${year}-${month}-${day}_${reportType}_${productionLine || '全场'}` +} diff --git a/klp-ui/src/views/wms/report/lajiao/comprehensive.vue b/klp-ui/src/views/wms/report/lajiao/comprehensive.vue index 07b7770a..e42ae0c9 100644 --- a/klp-ui/src/views/wms/report/lajiao/comprehensive.vue +++ b/klp-ui/src/views/wms/report/lajiao/comprehensive.vue @@ -4,6 +4,7 @@ :actionQueryParams="actionQueryParams" :baseQueryParams="baseQueryParams" :warehouseOptions="warehouseOptions" + :productionLine="productionLine" /> diff --git a/klp-ui/src/views/wms/report/lajiao/day.vue b/klp-ui/src/views/wms/report/lajiao/day.vue index dadea9f8..0e3dd0dd 100644 --- a/klp-ui/src/views/wms/report/lajiao/day.vue +++ b/klp-ui/src/views/wms/report/lajiao/day.vue @@ -4,6 +4,7 @@ :actionQueryParams="actionQueryParams" :baseQueryParams="baseQueryParams" :warehouseOptions="warehouseOptions" + :productionLine="productionLine" /> diff --git a/klp-ui/src/views/wms/report/lajiao/loss.vue b/klp-ui/src/views/wms/report/lajiao/loss.vue index be1cf80b..135441e3 100644 --- a/klp-ui/src/views/wms/report/lajiao/loss.vue +++ b/klp-ui/src/views/wms/report/lajiao/loss.vue @@ -2,11 +2,15 @@