From 10108d9b4180666bd27fa7730017de9b9aa2b8ab Mon Sep 17 00:00:00 2001 From: liuxiaoxu <1793812695@qq.com> Date: Tue, 9 Jul 2024 10:50:58 +0800 Subject: [PATCH] =?UTF-8?q?[feat]=20=E5=93=81=E8=B4=A8=E7=AE=A1=E7=90=86?= =?UTF-8?q?=20=E4=BB=93=E5=BA=93=E7=AE=A1=E7=90=86=20=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E7=AE=A1=E7=90=86=20=E9=94=80=E5=94=AE=E7=AE=A1=E7=90=86=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=93=81=E8=B4=A8=E7=AE=A1=E7=90=86=20?= =?UTF-8?q?=E8=AE=A1=E7=AE=97=E4=B8=8D=E8=89=AF=E6=95=B0=E9=87=8F=E7=9A=84?= =?UTF-8?q?=E5=90=88=E8=AE=A1=E5=80=BC=E3=80=82=E5=8E=BB=E6=8E=89=E4=B8=8D?= =?UTF-8?q?=E5=90=88=E6=A0=BC=E5=88=86=E7=B1=BB=E5=88=97=E8=A1=A8=E4=B8=BA?= =?UTF-8?q?=E7=A9=BA=E7=9A=84=E6=8A=9B=E5=87=BA=E5=BC=82=E5=B8=B8=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=20=E4=BF=AE=E6=94=B9=E4=BB=93=E5=BA=93=20=E7=94=9F?= =?UTF-8?q?=E4=BA=A7=E5=85=A5=E5=BA=93=E5=89=8D=E7=AB=AF=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=20=E4=BF=AE=E6=94=B9=E4=BB=93=E5=BA=93=20=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E5=85=A5=E5=BA=93=E8=AF=A6=E6=83=85=E5=89=8D=E7=AB=AF=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=20=E4=BF=AE=E6=94=B9=E4=BB=93=E5=BA=93=20=E5=A7=94?= =?UTF-8?q?=E5=86=85=E5=85=A5=E5=BA=93=E5=89=8D=E7=AB=AF=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=20=E4=BF=AE=E6=94=B9=E4=BB=93=E5=BA=93=E5=85=A5=E5=BA=93?= =?UTF-8?q?=E5=8D=95=20=E7=94=9F=E4=BA=A7=E5=85=A5=E5=BA=93=20=E5=85=A5?= =?UTF-8?q?=E5=BA=93=E7=9A=84=E6=8C=89=E9=92=AE=E6=98=BE=E7=A4=BA=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6=20=E6=96=B0=E5=A2=9E=20=E5=85=A5=E5=BA=93-=E7=94=9F?= =?UTF-8?q?=E4=BA=A7=E8=AE=A2=E5=8D=95(=E7=94=9F=E4=BA=A7=E5=85=A5?= =?UTF-8?q?=E5=BA=93)=20=E5=AE=A2=E6=88=B7=E7=89=A9=E6=96=99=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E5=88=97=E8=A1=A8=20=E9=94=80=E5=94=AE=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=90=8E=E7=AB=AF=E6=96=B0=E5=A2=9E=20=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E9=94=80=E5=94=AE=E5=8D=95=E5=8F=B7=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E9=94=80=E5=94=AE=E8=AE=A2=E5=8D=95=E6=95=B0=E6=8D=AE=20?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=85=A5=E5=BA=93=E7=94=9F=E4=BA=A7=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E7=9A=84=E5=85=A5=E5=BA=93=E4=BF=AE=E6=94=B9=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E6=96=B9=E6=B3=95=EF=BC=8C=E6=96=B0=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=90=8C=E6=97=B6=E4=BF=AE=E6=94=B9=E7=94=9F=E4=BA=A7=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=92=8C=E9=94=80=E5=94=AE=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/QualityOrderReportServiceImpl.java | 12 +- .../system/service/ISysSalesOrderService.java | 5 + .../impl/SysSalesOrderServiceImpl.java | 12 ++ .../WarehouseStorageOrderController.java | 9 +- .../WarehouseStorageOrderServiceImpl.java | 119 ++++++++++++--- .../warehouse/storageOrder/storageMake.html | 142 ++++++++---------- .../storageOrder/storageMakeDetail.html | 140 +++++++---------- .../storageOrder/storageMakeInDetail.html | 11 -- .../warehouse/storageOrder/storageOrder.html | 4 +- 9 files changed, 250 insertions(+), 204 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/quality/service/impl/QualityOrderReportServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/quality/service/impl/QualityOrderReportServiceImpl.java index e0b9ff4b..5c49c6ee 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/quality/service/impl/QualityOrderReportServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/quality/service/impl/QualityOrderReportServiceImpl.java @@ -328,12 +328,16 @@ public class QualityOrderReportServiceImpl implements IQualityOrderReportService qualityOrderDetail.setQualityHasqualifiedNum(qualityQualifiedNum); //获得品质报告中的不合格数模块数据 List unqualifiedDataList = qualityOrderReport.getUnqualifiedDataList(); - if (CollectionUtils.isEmpty(unqualifiedDataList)){ - throw new BusinessException("品质单不合格数数据为空"); +// if (CollectionUtils.isEmpty(unqualifiedDataList)){ +// throw new BusinessException("品质单不合格数数据为空"); +// } + int processBadNumTotal = 0; + if (!CollectionUtils.isEmpty(unqualifiedDataList)){ + //计算不良数量的合计值 + processBadNumTotal = unqualifiedDataList.stream().mapToInt(QualityOrderReportUnqualified::getProcessBadNum).sum(); } - //计算不良数量的合计值 - int processBadNumTotal = unqualifiedDataList.stream().mapToInt(QualityOrderReportUnqualified::getProcessBadNum).sum(); + //更新品质报告详情品质不合格数 qualityOrderDetail.setQualityUnqualifiedNum(processBadNumTotal); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysSalesOrderService.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysSalesOrderService.java index 06f448eb..40877029 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysSalesOrderService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysSalesOrderService.java @@ -82,4 +82,9 @@ public interface ISysSalesOrderService * 提交申请*/ public ProcessInstance submitApply(SysSalesOrder sysSalesOrder); + + /* + * 根据销售单号更新销售订单 + * */ + int updateSysSalesOrderBySalesOrderCode(SysSalesOrder sysSalesOrder); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesOrderServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesOrderServiceImpl.java index a7c0f06b..cbaa4013 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesOrderServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesOrderServiceImpl.java @@ -340,6 +340,18 @@ public class SysSalesOrderServiceImpl implements ISysSalesOrderService return processInstance; } + /* + * 根据销售单号更新销售订单 + * */ + @Override + public int updateSysSalesOrderBySalesOrderCode(SysSalesOrder sysSalesOrder) { + + sysSalesOrder.setUpdateTime(new Date()); + sysSalesOrder.setUpdateBy(ShiroUtils.getLoginName()); + + return sysSalesOrderMapper.updateSysSalesOrderBySalesOrderCode(sysSalesOrder); + } + private ProcessInstance startProcessInstance(String applyTitle,String instanceType,SysSalesOrder sysSalesOrder, SysUser user) { Long nessKey = sysSalesOrder.getSalesOrderId(); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseStorageOrderController.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseStorageOrderController.java index 4a0941fa..76ad0a88 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseStorageOrderController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseStorageOrderController.java @@ -538,10 +538,11 @@ public class WarehouseStorageOrderController extends BaseController */ @ResponseBody @RequestMapping("/storageMakeDetailList") - public Map> storageMakeDetail(String warehouseStorageCode){ - List allDetails = storageOrderDetailService.selectStorageOrderDetailListByCode(warehouseStorageCode); - Map> groupedDetails = allDetails.stream().collect(Collectors.groupingBy(WarehouseStorageOrderDetail::getCustomerId)); - return groupedDetails; + public TableDataInfo storageMakeDetailList(WarehouseStorageOrder warehouseStorageOrder){ + startPage(); + String warehouseStorageCode = warehouseStorageOrder.getWarehouseStorageCode(); + List list = storageOrderDetailService.selectStorageOrderDetailListByCode(warehouseStorageCode); + return getDataTable(list) ; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java index 9c87e3b8..3e4b3320 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java @@ -18,7 +18,12 @@ import com.ruoyi.quality.mapper.QualityOrderMapper; import com.ruoyi.quality.mapper.QualityOrderReportMapper; import com.ruoyi.quality.mapper.QualityOrderReportUnqualifiedMapper; import com.ruoyi.quality.service.IQualityOrderService; +import com.ruoyi.system.domain.SysMakeOrder; +import com.ruoyi.system.domain.SysSalesOrder; +import com.ruoyi.system.mapper.SysMakeOrderMapper; +import com.ruoyi.system.mapper.SysSalesOrderMapper; import com.ruoyi.system.service.ISysMakeOrderService; +import com.ruoyi.system.service.ISysSalesOrderService; import com.ruoyi.warehouse.domain.WarehouseStorageOrderDetail; import com.ruoyi.warehouse.mapper.WarehouseStorageOrderDetailMapper; import lombok.extern.slf4j.Slf4j; @@ -55,6 +60,16 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS @Autowired private ISysMakeOrderService sysMakeOrderService; + @Autowired + private SysSalesOrderMapper salesOrderMapper; + + @Autowired + private ISysSalesOrderService salesOrderService; + + @Autowired + private SysMakeOrderMapper sysMakeOrderMapper; + + @Autowired private RedisCache redisCache; @@ -434,7 +449,7 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS //设置委内加工费单价 warehouseStorageOrderDetail.setMakeInUnitPrice(qualityOrderDetail.getMakeInUnitPrice()); //设置品质已合格数 - warehouseStorageOrderDetail.setQualityHasQualifiedNum(qualityOrderDetail.getQualityHasqualifiedNum()); + warehouseStorageOrderDetail.setQualityHasQualifiedNum(qualityOrderDetail.getQualityQualifiedNum()); warehouseStorageOrderDetail.setMaterialNo(qualityOrderDetail.getMaterialNo()); warehouseStorageOrderDetail.setMaterialName(qualityOrderDetail.getMaterialName()); warehouseStorageOrderDetail.setMaterialBrand(qualityOrderDetail.getMaterialBrand()); @@ -615,7 +630,7 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS //生产入库数 warehouseStorageOrderDetail.setMakeStorageNum(qualityOrderDetail.getMakeCompletionNum()); //设置品质已合格数 - warehouseStorageOrderDetail.setQualityHasQualifiedNum(qualityOrderDetail.getQualityHasqualifiedNum()); + warehouseStorageOrderDetail.setQualityHasQualifiedNum(qualityOrderDetail.getQualityQualifiedNum()); warehouseStorageOrderDetail.setMaterialNo(qualityOrderDetail.getMaterialNo()); warehouseStorageOrderDetail.setMaterialName(qualityOrderDetail.getMaterialName()); warehouseStorageOrderDetail.setMaterialBrand(qualityOrderDetail.getMaterialBrand()); @@ -720,33 +735,97 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS /* * 入库-生产订单 * */ + @Transactional(rollbackFor = Exception.class) @Override public int updateStorageMake(WarehouseStorageOrder warehouseStorageOrder) { String loginName = ShiroUtils.getLoginName(); + + //假设全部入库 + warehouseStorageOrder.setWarehouseStorageStatus("4"); warehouseStorageOrder.setUpdateBy(loginName); - warehouseStorageOrder.setUpdateTime(DateUtils.getNowDate()); + warehouseStorageOrder.setUpdateTime(new Date()); + //记录一下入库时间 + warehouseStorageOrder.setStorageTime(new Date()); + String warehouseCode = warehouseStorageOrder.getWarehouseCode(); + String warehouseName = warehouseStorageOrder.getWarehouseName(); + if (StringUtils.isNotEmpty(warehouseCode)){ + warehouseStorageOrder.setWarehouseCode(warehouseCode); + } + if (StringUtils.isNotEmpty(warehouseName)){ + warehouseStorageOrder.setWarehouseName(warehouseName); + } - List storageOrderDetailList = warehouseStorageOrder.getWarehouseStorageOrderDetailList(); + List warehouseStorageOrderDetailList = warehouseStorageOrder.getWarehouseStorageOrderDetailList(); + if (StringUtils.isEmpty(warehouseStorageOrderDetailList)){ + log.warn("入库单详情数据为空:{}",warehouseStorageOrderDetailList); + throw new BusinessException("入库单详情数据为空"); + } - if (StringUtils.isEmpty(storageOrderDetailList)){ - log.warn("入库单详情为空:{}",storageOrderDetailList); - }else { - for (WarehouseStorageOrderDetail warehouseStorageOrderDetail : storageOrderDetailList) { - warehouseStorageOrderDetail.setWarehouseStorageCode(warehouseStorageOrder.getWarehouseStorageCode()); - WarehouseStorageOrderDetail tempStorageOrderDetail = new WarehouseStorageOrderDetail(); - tempStorageOrderDetail.setMaterialNo(warehouseStorageOrderDetail.getMaterialNo()); - tempStorageOrderDetail.setCustomerId(warehouseStorageOrderDetail.getCustomerId()); - tempStorageOrderDetail.setWarehouseStorageCode(warehouseStorageOrder.getWarehouseStorageCode()); - WarehouseStorageOrderDetail storageOrderDetailFromData = storageOrderDetailMapper.selectWarehouseStorageMakeOrderByObject(tempStorageOrderDetail); - if (storageOrderDetailFromData == null){ - log.warn("数据库中入库单详情为空:{}",tempStorageOrderDetail); - }else { - storageOrderDetailMapper.updateWarehouseStorageMakeOrderDetailByObject(warehouseStorageOrderDetail); - } + //入库数 + Integer storageNum = 0; + + // 检查storageNum是否含有null值 + boolean hasThisStorageNumNull = warehouseStorageOrderDetailList.stream() + .anyMatch(item -> item.getStorageNum() == null); + + if (hasThisStorageNumNull) { + throw new BusinessException("存在入库数为空,请检查!"); + } + // 计算各个字段的总和 + storageNum = warehouseStorageOrderDetailList.stream() + .mapToInt(WarehouseStorageOrderDetail::getStorageNum) + .sum(); + + //插入主表入库数量 + warehouseStorageOrder.setStorageNum(storageNum); + + + //更新生产订单的数据 + SysMakeOrder tempSysMakeOrder = sysMakeOrderMapper.selectMakeOrderByMakeNo(warehouseStorageOrder.getRelatedOrderCode()); + tempSysMakeOrder.setEceiptNum(Long.valueOf(storageNum)); + //设置生产状态为全部完成 + tempSysMakeOrder.setMakeStatus("6"); + int updateMakeOrderResult = sysMakeOrderService.updateByMakeNo(tempSysMakeOrder); + if (updateMakeOrderResult <= 0){ + throw new BusinessException("更新生产订单数据失败"); + } + + //更新销售订单数据 + SysSalesOrder sysSalesOrder = salesOrderMapper.selectSysSalesOrderBySalesOrderCode(tempSysMakeOrder.getSaleNo()); + //设置为全部完成 + sysSalesOrder.setMakeStatus("6"); + //设置为待出货 + sysSalesOrder.setDeliveryStatus("2"); + int updateSalesOrderResult = salesOrderService.updateSysSalesOrderBySalesOrderCode(sysSalesOrder); + if (updateSalesOrderResult <= 0){ + throw new BusinessException("更新销售订单数据失败"); + } + + +// //更新生产单数据 +// int updateMakeOrderResult = sysMakeOrderService.updateSysMakeOrderByWarehouseStorageOrder(warehouseStorageOrder, warehouseStorageOrderDetailList); +// if (updateMakeOrderResult <= 0){ +// throw new BusinessException("更新生产订单失败,未影响任何行"); +// } + + for (WarehouseStorageOrderDetail warehouseStorageOrderDetail : warehouseStorageOrderDetailList) { + //更新入库单详情的数据 + warehouseStorageOrderDetail.setUpdateBy(loginName); + warehouseStorageOrderDetail.setUpdateTime(new Date()); + //更新已入库数 + warehouseStorageOrderDetail.setHasStorageNum(warehouseStorageOrderDetail.getStorageNum()); + int updateWarehouseStorageOrderDetailResult = storageOrderDetailMapper.updateWarehouseStorageOrderDetail(warehouseStorageOrderDetail); + if (updateWarehouseStorageOrderDetailResult <= 0){ + throw new BusinessException("更新仓库入库单详情失败,未影响任何行"); } } + //更新入库单的数据 + int updateResult = warehouseStorageOrderMapper.updateWarehouseStorageOrder(warehouseStorageOrder); - return warehouseStorageOrderMapper.updateWarehouseStorageOrder(warehouseStorageOrder); + if (updateResult <= 0){ + log.warn("更新入库单失败,未影响任何行"); + } + return updateResult; } diff --git a/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storageMake.html b/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storageMake.html index b2b1075b..f81ab4fe 100644 --- a/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storageMake.html +++ b/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storageMake.html @@ -13,7 +13,7 @@
-
+
@@ -74,11 +74,11 @@
+
-
-
- +
+
@@ -92,54 +92,48 @@ var warehouseStorageCode = [[${warehouseStorageOrder.warehouseStorageCode}]] var warehouseCode = [[${warehouseStorageOrder.warehouseCode}]] var prefix = ctx + "warehouse/storageOrder"; - $("#form-temporaryPurchaseWarehouse-edit").validate({ + $("#form-storageMakeIn-edit").validate({ focusCleanup: true }); - //生成的不同table的id集合 - var tableDatas = []; + // 新增提交 function submitHandler() { - const storageOrderData = $("#form-temporaryPurchaseWarehouse-edit").serializeArray().reduce((obj, item) => { + // 获取表单数据 + const storageMakeInData = $("#form-storageMakeIn-edit").serializeArray().reduce((obj, item) => { obj[item.name] = item.value; return obj; }, {}); - // 初始化一个数组用于存放所有表格的数据 - let allMaterialDataList = []; - for(let i in tableDatas){ - $('#' + tableDatas[i]).each(function() { - const tableData = $(this).bootstrapTable('getData'); - console.log(JSON.stringify(tableData)); - // 将表数据转换成与qualityReportData格式一致的数组 - var materialDataList = tableData.map(function (item) { - // 根据实际字段名调整 - return { - "customerId": item.customerId, - "materialNo": item.materialNo, - "materialName": item.materialName, - "materialType": item.materialType, - "materialPhotourl": item.materialPhotourl, - "materialDescribe": item.materialDescribe, - "materialBrand": item.materialBrand, - "materialUnit": item.materialUnit, - "materialProcessMethod": item.materialProcessMethod, - "qualityHasQualifiedNum": item.qualityHasQualifiedNum, - "hasStorageNum": item.hasStorageNum, - "makeStorageNum": item.makeStorageNum, - "storageNum": item.storageNum, - "storageLocation": item.storageLocation, - // ...其他字段 - }; - }); - allMaterialDataList = allMaterialDataList.concat(materialDataList); - }); - } + // 获取bootstrap-table的数据,这里假设你使用bootstrap-table的API获取所有数据 + var table = $('#bootstrap-table').bootstrapTable('getData'); - const combinedData = Object.assign({}, storageOrderData, { - warehouseStorageOrderDetailList: allMaterialDataList + // 将表数据转换成与complaintNoticeData格式一致的数组 + var materialDataList = table.map(function(item) { + // 根据实际字段名调整 + return { + "warehouseStorageDetailId":item.warehouseStorageDetailId, + "materialNo": item.materialNo, + "materialName": item.materialName, + "materialType": item.materialType, + "materialPhotourl": item.materialPhotourl, + "materialDescribe": item.materialDescribe, + "materialBrand": item.materialBrand, + "materialUnit": item.materialUnit, + "materialProcessMethod": item.materialProcessMethod, + "makeTotal": item.makeTotal, + "qualityHasQualifiedNum": item.qualityHasQualifiedNum, + "hasStorageNum": item.hasStorageNum, + "makeStorageNum": item.makeStorageNum, + "storageNum": item.storageNum, + "storageLocation": item.storageLocation, + // ...其他字段 + }; + }); + + const combinedData = Object.assign({}, storageMakeInData, { + warehouseStorageOrderDetailList: materialDataList, }); // 合并表单数据和表格数据 - // const combinedData = Object.assign({}, ...complaintNoticeData.array(item => ({ [item.name]: item.value })), ...materialData); console.log(combinedData) // 使用 JSON.stringify() 序列化数据 const jsonData = JSON.stringify(combinedData); @@ -147,6 +141,9 @@ $.operate.saveJson(prefix + "/storageMake", jsonData); } + + + $("input[name='arrivedTime']").datetimepicker({ format: "yyyy-mm-dd", minView: "month", @@ -159,44 +156,24 @@ autoclose: true }); - $(function() { - // 假设qualityOrderCode已经定义或者可以通过某种方式获取到 - var warehouseStorageCode = [[${warehouseStorageOrder.warehouseStorageCode}]]; // 这里需要实际赋值,比如从前端某个地方读取 - - $.getJSON(prefix + "/storageMakeDetailList?warehouseStorageCode=" + warehouseStorageCode, function(data) { - for (var customerId in data) { - if (data.hasOwnProperty(customerId)) { - var customerData = data[customerId]; - createTableForCustomer(customerId, customerData); - } - } - }); - }); - function createTableForCustomer(customerId, customerData) { - var tableId = 'bootstrap-table-' + customerId.replace(/[^a-z0-9]/gi, '_').toLowerCase(); - tableDatas.push(tableId); - var $tableWrapper = $('
'); - - // 确保customerData至少有一条记录,并从中提取客户详细信息 - var customerInfo = customerData.length > 0 ? customerData[0] : {}; // 默认为空对象,以防数据不存在 - - // 构建含有额外客户信息的标题字符串 - var headerTitle ='客户'+'
'+customerId + ' - ' + (customerInfo.customerName || 'N/A') + - '
' + (customerInfo.customerContactPeople || 'N/A') + - ' - ' + (customerInfo.customerContactNumber || 'N/A') + - ' - ' + (customerInfo.customerCompanyAddress || 'N/A'); - var $header = $('

' + headerTitle + '

'); - var $table = $('
'); - - $table.bootstrapTable({ - data: customerData, + //物料信息展示列表 + $(function() { + var options = { + modalName: "选择物料", + url: prefix + "/storageMakeDetailList", + queryParams: queryParams, + showSearch: false, + showRefresh: false, + showToggle: false, + showColumns: false, + pagination: false, // 设置不分页 columns: [{ checkbox: true }, { - title: '客户ID', - field: 'customerId', + title: '入库单详情Id', + field: 'warehouseStorageDetailId', visible: false }, { @@ -231,7 +208,7 @@ field: 'materialProcessMethod', }, { - title: '订单数', + title: '生产订单数', field: 'makeTotal', }, { @@ -245,6 +222,7 @@ { title: '生产入库数', field: 'makeStorageNum', + }, { title: '入库数', @@ -265,14 +243,20 @@ field: 'storageLocation', editable: true }] - }); + }; + $.table.init(options); + }) - $tableWrapper.append($header).append($table); - $('#tablesContainer').append($tableWrapper); + function queryParams(params) { + var curParams = { + // 传递参数查询参数 + warehouseStorageCode: warehouseStorageCode + }; + console.log(curParams); + return curParams; } - //根据仓库ID查询仓库名称 $(document).ready(function() { // 初始化时默认加载仓库ID列表 diff --git a/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storageMakeDetail.html b/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storageMakeDetail.html index 1ed06a60..a5ecc58e 100644 --- a/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storageMakeDetail.html +++ b/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storageMakeDetail.html @@ -13,7 +13,7 @@
- +
@@ -74,11 +74,11 @@
+
-
-
- +
+
@@ -92,61 +92,53 @@ var warehouseStorageCode = [[${warehouseStorageOrder.warehouseStorageCode}]] var warehouseCode = [[${warehouseStorageOrder.warehouseCode}]] var prefix = ctx + "warehouse/storageOrder"; - $("#form-temporaryPurchaseWarehouse-edit").validate({ + $("#form-storageMakeInDetail-edit").validate({ focusCleanup: true }); - //生成的不同table的id集合 - var tableDatas = []; - + // 新增提交 function submitHandler() { - const storageOrderData = $("#form-temporaryPurchaseWarehouse-edit").serializeArray().reduce((obj, item) => { + // 获取表单数据 + const storageMakeInData = $("#form-storageMakeInDetail-edit").serializeArray().reduce((obj, item) => { obj[item.name] = item.value; return obj; }, {}); - // 初始化一个数组用于存放所有表格的数据 - let allMaterialDataList = []; - for(let i in tableDatas){ - $('#' + tableDatas[i]).each(function() { - const tableData = $(this).bootstrapTable('getData'); - console.log(JSON.stringify(tableData)); - // 将表数据转换成与qualityReportData格式一致的数组 - var materialDataList = tableData.map(function (item) { - // 根据实际字段名调整 - return { - "customerId": item.customerId, - "materialNo": item.materialNo, - "materialName": item.materialName, - "materialType": item.materialType, - "materialPhotourl": item.materialPhotourl, - "materialDescribe": item.materialDescribe, - "materialBrand": item.materialBrand, - "materialUnit": item.materialUnit, - "materialProcessMethod": item.materialProcessMethod, - "qualityHasQualifiedNum": item.qualityHasQualifiedNum, - "hasStorageNum": item.hasStorageNum, - "makeStorageNum": item.makeStorageNum, - "storageNum": item.storageNum, - "storageLocation": item.storageLocation, - // ...其他字段 - }; - }); - allMaterialDataList = allMaterialDataList.concat(materialDataList); - }); - } + // 获取bootstrap-table的数据,这里假设你使用bootstrap-table的API获取所有数据 + var table = $('#bootstrap-table').bootstrapTable('getData'); + + // 将表数据转换成与complaintNoticeData格式一致的数组 + var materialDataList = table.map(function(item) { + // 根据实际字段名调整 + return { + "materialNo": item.materialNo, + "materialName": item.materialName, + "materialType": item.materialType, + "materialPhotourl": item.materialPhotourl, + "materialDescribe": item.materialDescribe, + "materialBrand": item.materialBrand, + "materialUnit": item.materialUnit, + "materialProcessMethod": item.materialProcessMethod, + "qualityHasQualifiedNum": item.qualityHasQualifiedNum, + "hasStorageNum": item.hasStorageNum, + "makeStorageNum": item.makeStorageNum, + "storageNum": item.storageNum, + "storageLocation": item.storageLocation, + // ...其他字段 + }; + }); - const combinedData = Object.assign({}, storageOrderData, { - warehouseStorageOrderDetailList: allMaterialDataList + const combinedData = Object.assign({}, storageMakeInData, { + warehouseStorageOrderDetailList: materialDataList, }); // 合并表单数据和表格数据 - // const combinedData = Object.assign({}, ...complaintNoticeData.array(item => ({ [item.name]: item.value })), ...materialData); console.log(combinedData) // 使用 JSON.stringify() 序列化数据 const jsonData = JSON.stringify(combinedData); // 发送 AJAX 请求到后端接口 - $.operate.saveJson(prefix + "/storageMake", jsonData); + $.operate.saveJson(prefix + "/storageMakeDetail", jsonData); } + $("input[name='arrivedTime']").datetimepicker({ format: "yyyy-mm-dd", minView: "month", @@ -159,46 +151,20 @@ autoclose: true }); + //物料信息展示列表 $(function() { - // 假设qualityOrderCode已经定义或者可以通过某种方式获取到 - var warehouseStorageCode = [[${warehouseStorageOrder.warehouseStorageCode}]]; // 这里需要实际赋值,比如从前端某个地方读取 - - $.getJSON(prefix + "/storageMakeDetailList?warehouseStorageCode=" + warehouseStorageCode, function(data) { - for (var customerId in data) { - if (data.hasOwnProperty(customerId)) { - var customerData = data[customerId]; - createTableForCustomer(customerId, customerData); - } - } - }); - }); - function createTableForCustomer(customerId, customerData) { - var tableId = 'bootstrap-table-' + customerId.replace(/[^a-z0-9]/gi, '_').toLowerCase(); - tableDatas.push(tableId); - var $tableWrapper = $('
'); - - // 确保customerData至少有一条记录,并从中提取客户详细信息 - var customerInfo = customerData.length > 0 ? customerData[0] : {}; // 默认为空对象,以防数据不存在 - - // 构建含有额外客户信息的标题字符串 - var headerTitle ='客户'+'
'+customerId + ' - ' + (customerInfo.customerName || 'N/A') + - '
' + (customerInfo.customerContactPeople || 'N/A') + - ' - ' + (customerInfo.customerContactNumber || 'N/A') + - ' - ' + (customerInfo.customerCompanyAddress || 'N/A'); - - var $header = $('

' + headerTitle + '

'); - var $table = $('
'); - - $table.bootstrapTable({ - data: customerData, + var options = { + modalName: "选择物料", + url: prefix + "/storageMakeDetailList", + queryParams: queryParams, + showSearch: false, + showRefresh: false, + showToggle: false, + showColumns: false, + pagination: false, // 设置不分页 columns: [{ checkbox: true }, - { - title: '客户ID', - field: 'customerId', - visible: false - }, { title: '料号', field: 'materialNo' @@ -231,7 +197,7 @@ field: 'materialProcessMethod', }, { - title: '订单数', + title: '生产订单数', field: 'makeTotal', }, { @@ -254,14 +220,20 @@ title: '存放位置', field: 'storageLocation', }] - }); + }; + $.table.init(options); + }) - $tableWrapper.append($header).append($table); - $('#tablesContainer').append($tableWrapper); + function queryParams(params) { + var curParams = { + // 传递参数查询参数 + warehouseStorageCode: warehouseStorageCode + }; + console.log(curParams); + return curParams; } - //根据仓库ID查询仓库名称 $(document).ready(function() { // 初始化时默认加载仓库ID列表 diff --git a/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storageMakeInDetail.html b/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storageMakeInDetail.html index 9340e4be..125463d8 100644 --- a/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storageMakeInDetail.html +++ b/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storageMakeInDetail.html @@ -211,21 +211,10 @@ { title: '入库数', field: 'storageNum', - editable:{ - type: 'text', - mode:'inline', - validate: function (v) { - if (!v) return '数量不能为空'; - if (isNaN(v)) return '数量必须是数字'; - var processBadNum = parseInt(v); - if (processBadNum <= 0) return '数量必须是正整数'; - } - } }, { title: '存放位置', field: 'storageLocation', - editable: true }] }; $.table.init(options); diff --git a/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storageOrder.html b/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storageOrder.html index 363cfb1b..10e3dd25 100644 --- a/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storageOrder.html +++ b/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storageOrder.html @@ -301,13 +301,13 @@ } /*入库-生产订单(生产入库)*/ - if ( row.warehouseStorageType == 5 && row.warehouseDeptType == 1 && row.warehouseOrderType == 1 && (row.warehouseStorageStatus == 2 || row.warehouseStorageStatus == 3) ){ + if ( row.warehouseStorageType == 5 && row.warehouseOrderType == 1 && (row.warehouseStorageStatus == 2 || row.warehouseStorageStatus == 3) ){ actions.push('入库 '); } /*入库-生产订单(生产入库) 详情*/ - if ( row.warehouseStorageType == 5 && row.warehouseDeptType == 1 && row.warehouseOrderType == 1 && (row.warehouseStorageStatus == 2 || row.warehouseStorageStatus == 3 || row.warehouseStorageStatus == 4) ){ + if ( row.warehouseStorageType == 5 && row.warehouseOrderType == 1 && (row.warehouseStorageStatus == 2 || row.warehouseStorageStatus == 3 || row.warehouseStorageStatus == 4) ){ actions.push('详情 '); }