From 5fb0ed5b9d0dee3e728fe7394715c4ea54702987 Mon Sep 17 00:00:00 2001 From: 10001392 <1055202292@qq.com> Date: Mon, 25 May 2026 15:46:54 +0800 Subject: [PATCH 1/2] =?UTF-8?q?1463=20WMS=E7=B3=BB=E7=BB=9F=E9=92=A2?= =?UTF-8?q?=E6=9E=84=E5=8C=85=E9=87=87=E8=B4=AD=E4=B8=9A=E5=8A=A1=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/nflg/wms/admin/util/NoUtil.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/util/NoUtil.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/util/NoUtil.java index d441fac4..d961156c 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/util/NoUtil.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/util/NoUtil.java @@ -49,8 +49,7 @@ public class NoUtil { return new StructuralPackageMaterialQRCodeContentDTO() .setUniqNo(c1s.size() == 1 ? qrCode : CollectionUtil.get(c1s, 0)) .setMaterialNo(c1s.size() == 1 ? CollectionUtil.get(c1s, 0) : CollectionUtil.get(c1s, 1)) - .setTrayNo(CollectionUtil.get(contents, 1)) - .setNum(new BigDecimal(CollectionUtil.get(contents, 2))) + .setNum(new BigDecimal(CollectionUtil.get(contents, 1))) .setContent(qrCode); } } From 7436b8cca29a84a3473920fe15fdba19fd18ee65 Mon Sep 17 00:00:00 2001 From: 10001392 <1055202292@qq.com> Date: Mon, 25 May 2026 16:58:19 +0800 Subject: [PATCH 2/2] =?UTF-8?q?1513=20=E9=92=A2=E6=9E=84=E5=8C=85=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=AF=BC=E5=85=A5=E6=A8=A1=E6=9D=BF=E4=B8=AD=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E3=80=90=E6=89=98=E7=9B=98=E6=95=B0=E9=87=8F=E3=80=91?= =?UTF-8?q?=EF=BC=8C=E7=BC=96=E8=BE=91=E5=8F=96=E6=B6=88=E6=89=98=E7=9B=98?= =?UTF-8?q?=E5=BA=8F=E5=8F=B7=E6=A0=A1=E9=AA=8C=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StructuralPackageControllerService.java | 51 ++++++++++-------- .../resources/template/钢构包导出.xlsx | Bin 10944 -> 10292 bytes 2 files changed, 28 insertions(+), 23 deletions(-) diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/StructuralPackageControllerService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/StructuralPackageControllerService.java index bb302b6a..b44e38b4 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/StructuralPackageControllerService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/StructuralPackageControllerService.java @@ -2,30 +2,32 @@ package com.nflg.wms.admin.service; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; -import cn.hutool.core.lang.Pair; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.nflg.wms.admin.pojo.dto.PdfPageDTO; -import com.nflg.wms.admin.pojo.dto.ZWM3A17DTO; -import com.nflg.wms.admin.pojo.dto.ZWM3A17Item1DTO; import com.nflg.wms.admin.util.PdfGeneratorUtil; import com.nflg.wms.admin.util.QRCodeUtil; import com.nflg.wms.admin.util.ThymeleafUtil; -import com.nflg.wms.common.constant.Constant; import com.nflg.wms.common.constant.STATE; import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.PageData; -import com.nflg.wms.common.pojo.dto.*; +import com.nflg.wms.common.pojo.dto.BomMaterialDTO; +import com.nflg.wms.common.pojo.dto.PackageMaterialDTO; +import com.nflg.wms.common.pojo.dto.PackageMaterialExcelExportDTO; +import com.nflg.wms.common.pojo.dto.PackageMaterialExcelImportDTO; import com.nflg.wms.common.pojo.qo.*; import com.nflg.wms.common.pojo.vo.PackageVO; import com.nflg.wms.common.util.DateTimeUtil; import com.nflg.wms.common.util.EecExcelUtil; import com.nflg.wms.common.util.UserUtil; import com.nflg.wms.common.util.VUtil; -import com.nflg.wms.repository.entity.*; +import com.nflg.wms.repository.entity.WmsInTaskItem; +import com.nflg.wms.repository.entity.WmsMaterial; +import com.nflg.wms.repository.entity.WmsModel; +import com.nflg.wms.repository.entity.WmsStructuralPackage; import com.nflg.wms.repository.service.*; import com.nflg.wms.starter.service.BomMaterialService; import com.nflg.wms.starter.service.FileUploadService; @@ -184,8 +186,8 @@ public class StructuralPackageControllerService { .addSheet(new ListSheet<>(List.of(new PackageMaterialExcelExportDTO() .setNo("(必填)零件编码") .setName("(必填)零件名称") - .setStation("(必填)工位序号") - .setTray("(必填)托盘序号") +// .setStation("(必填)工位序号") +// .setTray("(必填)托盘序号") .setWeight(BigDecimal.ZERO) .setNum(BigDecimal.ZERO) .setVersion("(必填)图纸版本")))) @@ -200,8 +202,8 @@ public class StructuralPackageControllerService { datas.add(new PackageMaterialExcelExportDTO() .setNo("(必填)零件编码") .setName("(必填)零件名称") - .setStation("(必填)工位序号") - .setTray("(必填)托盘序号") +// .setStation("(必填)工位序号") +// .setTray("(必填)托盘序号") .setWeight(BigDecimal.ZERO) .setNum(BigDecimal.ZERO) .setVersion("(必填)图纸版本")); @@ -250,16 +252,16 @@ public class StructuralPackageControllerService { } else { materialDTO.setName(dto.getName()); } - if (StrUtil.isBlank(dto.getStation())) { + /*if (StrUtil.isBlank(dto.getStation())) { sb.append("工位序号不能为空;"); - } else { + } else {*/ materialDTO.setStation(dto.getStation()); - } + /*} if (StrUtil.isBlank(dto.getTray())) { sb.append("托盘序号不能为空;"); - } else { + } else {*/ materialDTO.setTray(dto.getTray()); - } +// } if (StrUtil.isBlank(dto.getNum())) { sb.append("数量不能为空;"); } else if (!NumberUtils.isCreatable(dto.getNum())) { @@ -355,8 +357,12 @@ public class StructuralPackageControllerService { && packageService.lambdaQuery().eq(WmsStructuralPackage::getNo, packageInfo.getNo()).exists()) .throwMessage("修改日志不能为空"); break; + case 6: + BigDecimal trayNum = row.getDecimal(1); + packageInfo.setTrayNum(trayNum); + break; default: - if (row.getRowNum() > 7) { + if (row.getRowNum() > 8) { String mno = StrUtil.trim(row.getString(0)); if (StrUtil.isBlank(mno)) { // sb.append(StrUtil.format("第{}行零件编码不能为空;", row.getRowNum())); @@ -372,15 +378,14 @@ public class StructuralPackageControllerService { dto.setName(material1.getDescribe()); dto.setDrawingNo(material1.getDrawingNo()); dto.setImage(material1.getImage()); - String v = row.getString(6); + String v = row.getString(5); if (StrUtil.isNotBlank(v)) { dto.setVersion(Integer.valueOf(v)); } else { dto.setVersion(material1.getVersion()); } dto.setStation(row.getString(2)); - dto.setTray(row.getString(3)); - String num = row.getString(4); + String num = row.getString(3); if (StrUtil.isBlank(num)) { sb.append(StrUtil.format("第{}行数量不能为空;", row.getRowNum())); } else if (!NumberUtils.isCreatable(num)) { @@ -388,13 +393,13 @@ public class StructuralPackageControllerService { } else { dto.setNum(new BigDecimal(num)); } - num = row.getString(5); - if (StrUtil.isBlank(num)) { + String singleWeight = row.getString(4); + if (StrUtil.isBlank(singleWeight)) { sb.append(StrUtil.format("第{}行重量不能为空;", row.getRowNum())); - } else if (!NumberUtils.isCreatable(num)) { + } else if (!NumberUtils.isCreatable(singleWeight)) { sb.append(StrUtil.format("第{}行重量无效;", row.getRowNum())); } else { - dto.setWeight(new BigDecimal(num)); + dto.setWeight(new BigDecimal(singleWeight)); } dto.setCreateBy(UserUtil.getUserName()); dto.setCreateTime(DateTimeUtil.format(LocalDate.now(), "yyyy-MM-dd")); diff --git a/nflg-wms-admin/src/main/resources/template/钢构包导出.xlsx b/nflg-wms-admin/src/main/resources/template/钢构包导出.xlsx index ad80eb6cffb9d0bccc138d5a886c3a31384bc698..58b13f23c2cd0a870c69193277009d44a73f4d86 100644 GIT binary patch delta 7019 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 xkrklC>>|j{P*rvy?SHe9f298kdk{fm*v