From 7601173ea8653a80abda754d931c310b95154beb Mon Sep 17 00:00:00 2001 From: chenhao <852066789@qq.com> Date: Wed, 27 Aug 2025 18:15:50 +0800 Subject: [PATCH] =?UTF-8?q?feat(inventory):=20=E6=96=B0=E5=A2=9E=E5=85=A5?= =?UTF-8?q?=E5=BA=93=E5=8D=95=E9=99=84=E4=BB=B6=E4=B8=8A=E4=BC=A0=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在入库单添加页面增加附件上传功能 - 实现文件上传、删除和显示逻辑 - 添加文件上传相关接口和数据库表 - 优化订单信息页面布局和流转过程展示 --- .../controller/common/CommonController.java | 17 ++ .../templates/inventory/execution/edit.html | 100 ++++++++---- .../templates/inventory/inner/add.html | 110 ++++++++++++- .../templates/inventory/outer/edit.html | 8 +- .../templates/project/order/add.html | 2 +- .../templates/project/order/approve.html | 10 +- .../templates/project/order/edit.html | 24 ++- .../sip/controller/OmsFileLogController.java | 70 +++++++++ .../ProjectOrderInfoController.java | 8 +- .../java/com/ruoyi/sip/domain/OmsFileLog.java | 43 +++++ .../ruoyi/sip/domain/OmsInventoryInner.java | 3 + .../ruoyi/sip/mapper/OmsFileLogMapper.java | 49 ++++++ .../ruoyi/sip/service/IOmsFileLogService.java | 48 ++++++ .../service/impl/OmsFileLogServiceImpl.java | 70 +++++++++ .../impl/ProjectOrderInfoServiceImpl.java | 6 +- .../inventory/OmsInventoryInnerMapper.xml | 10 +- .../resources/mapper/sip/OmsFileLogMapper.xml | 147 ++++++++++++++++++ 17 files changed, 673 insertions(+), 52 deletions(-) create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/controller/OmsFileLogController.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsFileLog.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/OmsFileLogMapper.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/service/IOmsFileLogService.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsFileLogServiceImpl.java create mode 100644 ruoyi-sip/src/main/resources/mapper/sip/OmsFileLogMapper.xml diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java index 7f02469d..7b1fca45 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java @@ -4,6 +4,11 @@ import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; + +import cn.hutool.core.date.DateUtil; +import com.ruoyi.common.utils.ShiroUtils; +import com.ruoyi.sip.domain.OmsFileLog; +import com.ruoyi.sip.service.IOmsFileLogService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -35,6 +40,8 @@ public class CommonController @Autowired private ServerConfig serverConfig; + @Autowired + private IOmsFileLogService fileLogService; private static final String FILE_DELIMETER = ","; @@ -84,7 +91,17 @@ public class CommonController // 上传并返回新文件名称 String fileName = FileUploadUtils.upload(filePath, file); String url = serverConfig.getUrl() + fileName; + OmsFileLog omsFileLog =OmsFileLog.builder() + .url(url) + .fileName(fileName) + .newFilename(FileUtils.getName(fileName)) + .originalFilename(file.getOriginalFilename()) + .createBy(ShiroUtils.getUserId().toString()) + .createTime(DateUtil.date()) + .build(); + fileLogService.insert(omsFileLog); AjaxResult ajax = AjaxResult.success(); + ajax.put("id", omsFileLog.getId()); ajax.put("url", url); ajax.put("fileName", fileName); ajax.put("newFileName", FileUtils.getName(fileName)); diff --git a/ruoyi-admin/src/main/resources/templates/inventory/execution/edit.html b/ruoyi-admin/src/main/resources/templates/inventory/execution/edit.html index 2906ef9f..5201791c 100644 --- a/ruoyi-admin/src/main/resources/templates/inventory/execution/edit.html +++ b/ruoyi-admin/src/main/resources/templates/inventory/execution/edit.html @@ -104,7 +104,7 @@ display: none !important; } - +
@@ -543,8 +543,8 @@ function initWarehouseTable(data) { field: 'warehouseName', title: '仓库', formatter: function (value, row, index) { - var html = $.common.sprintf("" + - "", index, row.warehouseId, index, row.confirmQuantity); + var html = $.common.sprintf("" + , index, row.warehouseId); return value + html; } }, @@ -560,37 +560,52 @@ function initWarehouseTable(data) { { field: 'confirmQuantity', title: '本次提交出库', - editable: { - type: 'number', - min: 0, - title: '本次提交出库', - emptytext: "【本次提交出库】为空", - validate: function (value) { - if (!value) { - return '数量不能空'; - } - if (value > Number.MAX_VALUE) { - return '数量不能超过' + Number.MAX_VALUE; - } - if (value < 0) { - return '数量不能为负数'; - } - }, - toggleDisabled: function (isEnable) { - if (isEnable) { - console.log("enable") - this.enable();// 可编辑 - } else { - console.log("disable") - this.disabled();// 不可编辑 - } - } + formatter: function (value, row, index) { + return $.common.sprintf("", index, value, row.availableCount); } + + // editable: { + // type: 'number', + // min: 0, + // title: '本次提交出库', + // emptytext: "【本次提交出库】为空", + // validate: function (value) { + // if (!value) { + // return '数量不能空'; + // } + // if (value > Number.MAX_VALUE) { + // return '数量不能超过' + Number.MAX_VALUE; + // } + // if (value < 0) { + // return '数量不能为负数'; + // } + // }, + // toggleDisabled: function (isEnable) { + // if (isEnable) { + // console.log("enable") + // this.enable();// 可编辑 + // } else { + // console.log("disable") + // this.disabled();// 不可编辑 + // } + // } + // } }] }; $.table.init(options); } + function onEdit(value) { + let totalConfirmQuantity = 0; + $("input[name$='confirmQuantity']").each(function () { + let val = $(this).val(); + if (val && !isNaN(val)) { + totalConfirmQuantity += Number(val); + } + }); + $('#out-current-quantity').text(totalConfirmQuantity) + $('#out-current-quantity-commit').val(totalConfirmQuantity) + } function onEditableSave(field, row, rowIndex, oldValue, $el) { if (!row['defaultWarehouse'] && row[field] > row['availableCount']) { @@ -667,6 +682,31 @@ function initWarehouseTable(data) { content: $('#generateOuter'), // 捕获的元素 btn: ['确定', '关闭'], yes: function (index, layero, that) { + let totalConfirmQuantity = 0; + let errFlag = false; + $("input[name$='confirmQuantity']").each(function () { + let val = $(this).val(); + if (val && !isNaN(val)) { + if (Number(val) <= 0) { + errFlag = true; + } + totalConfirmQuantity += Number(val); + } + }); + if (errFlag) { + $.modal.msgError("本次提交出库数量应大于0") + return; + } + if (totalConfirmQuantity <= 0) { + $.modal.msgError("本次提交出库数量应大于0") + return; + } + let generateNumber = $('#out-generatedQuantity').text(); + let allTotal = totalConfirmQuantity + Number(generateNumber) + if (allTotal > Number($('#out-quantity').text())) { + $.modal.msgError("本次提交出库数量+已提交出库数量不能大于应出库数量") + return; + } $('#deliveryTime').attr('disabled', false); $.operate.post(outerPrefix + "/add", $('#generateOuterForm').serializeArray(), res => { refreshTable(); @@ -680,7 +720,7 @@ function initWarehouseTable(data) { // layer.msg('关闭后的回调', {icon:6}); } }); - layer.full(index); + // layer.full(index); }) } @@ -884,7 +924,7 @@ function initWarehouseTable(data) { // layer.msg('关闭后的回调', {icon:6}); } }); - layer.full(index); + // layer.full(index); }) } diff --git a/ruoyi-admin/src/main/resources/templates/inventory/inner/add.html b/ruoyi-admin/src/main/resources/templates/inventory/inner/add.html index 05b8cc3d..860cdfea 100644 --- a/ruoyi-admin/src/main/resources/templates/inventory/inner/add.html +++ b/ruoyi-admin/src/main/resources/templates/inventory/inner/add.html @@ -1,5 +1,5 @@ - + @@ -8,7 +8,7 @@ padding-right: 0px; } - +
@@ -42,16 +42,44 @@
+
+
+ +
+ +
+
+
+
+
+ +
+
+ +
+ + +
+
+ + +
+
+

产品信息

@@ -165,6 +193,7 @@