From 45d678f980ec53c7354477c9b031b16f21aeb961 Mon Sep 17 00:00:00 2001 From: zhangke Date: Tue, 23 Sep 2025 16:37:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E9=92=A2=E6=9E=84?= =?UTF-8?q?=E5=8C=85=E5=92=8C=E6=99=AE=E9=80=9A=E7=89=A9=E6=96=99=E6=89=93?= =?UTF-8?q?=E5=8D=B0=E6=9D=A1=E7=A0=81=E6=97=B6=E6=9F=A5=E8=AF=A2=E5=92=8C?= =?UTF-8?q?=E5=AD=98=E5=82=A8=E7=9A=84=E4=BE=9B=E5=BA=94=E5=95=86=E7=BC=96?= =?UTF-8?q?=E5=8F=B7=E4=B8=BAId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/service/BomControllerService.java | 74 ++++++++++--------- 1 file changed, 40 insertions(+), 34 deletions(-) diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/BomControllerService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/BomControllerService.java index 4c7507f2..b62d1fa6 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/BomControllerService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/BomControllerService.java @@ -58,16 +58,22 @@ public class BomControllerService { @Transactional public void add(@Valid BomMaterialDTO dto) { + VUtil.trueThrowBusinessError(StrUtil.isBlank(dto.getMaterialNo())).throwMessage("物料编号不能为空"); + VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(dto.getChildren())).throwMessage("子级物料不可以为空!"); + + BigDecimal totalWight = dto.getChildren().stream() + .map(child -> child.getMaterialWeight() != null ? child.getMaterialWeight() : new BigDecimal(0)) + .reduce(BigDecimal.ZERO, BigDecimal::add); WmsBom parent = new WmsBom() .setParentId(0L) .setNo(dto.getMaterialNo()) .setDescribe(dto.getMaterialDesc()) .setDrawingNo(dto.getDrawingNo()) - .setWeight(dto.getMaterialWeight()) - .setNum(dto.getNum()) + .setWeight(totalWight) + .setNum(new BigDecimal(1)) .setCreateBy(UserUtil.getUserName()) .setCreateTime(LocalDateTime.now()); - bomService.add(parent, dto.getChildren().stream().map(it-> new WmsBom() + bomService.add(parent, dto.getChildren().stream().map(it -> new WmsBom() .setNo(it.getMaterialNo()) .setDescribe(it.getMaterialDesc()) .setDrawingNo(it.getDrawingNo()) @@ -86,7 +92,7 @@ public class BomControllerService { .setDrawingNo(it.getDrawingNo()) .setWeight(it.getMaterialWeight()) .setNum(it.getNum()); - if (Objects.isNull(wmsBom.getId())){ + if (Objects.isNull(wmsBom.getId())) { wmsBom.setParentId(request.getId()); wmsBom.setCreateBy(UserUtil.getUserName()); wmsBom.setCreateTime(LocalDateTime.now()); @@ -108,14 +114,14 @@ public class BomControllerService { } else { response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode(getResultName(file.getOriginalFilename()), StandardCharsets.UTF_8)); - try(ByteArrayOutputStream osOut = new ByteArrayOutputStream()) { + try (ByteArrayOutputStream osOut = new ByteArrayOutputStream()) { new Workbook() .addSheet(new ListSheet<>(data)) .writeTo(osOut); - try(ByteArrayInputStream isIn = new ByteArrayInputStream(osOut.toByteArray())) { + try (ByteArrayInputStream isIn = new ByteArrayInputStream(osOut.toByteArray())) { return ApiResult.error(STATE.DataNoCheckPass, "导入文件失败", fileUploadService.upload("temp/" + DateTimeUtil.format(LocalDate.now(), "yyyyMMdd") + "/" + IdUtil.fastUUID() + ".xlsx", isIn, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")); } - }catch (Exception e){ + } catch (Exception e) { return ApiResult.error(STATE.BusinessError, "保存文件出错"); } } @@ -135,7 +141,7 @@ public class BomControllerService { if (Objects.isNull(pm)) { sb.append("父级物料编号无效"); } else { - WmsBom pb=bomService.lambdaQuery().eq(WmsBom::getParentId, 0L).eq(WmsBom::getNo, dto.getParentNo()).one(); + WmsBom pb = bomService.lambdaQuery().eq(WmsBom::getParentId, 0L).eq(WmsBom::getNo, dto.getParentNo()).one(); if (Objects.isNull(pb)) { pb = new WmsBom() .setId(IdUtil.getSnowflakeNextId()) @@ -152,12 +158,12 @@ public class BomControllerService { } if (StrUtil.isBlank(dto.getChildNo())) { sb.append("子级物料编号不能为空;"); - }else { + } else { BomMaterialDTO cm = bomMaterialService.getMaterialInfo(dto.getChildNo()); if (Objects.isNull(cm)) { sb.append("子级物料编号无效;"); - }else if (bom.getParentId()!=0L){ - WmsBom cb=bomService.lambdaQuery().eq(WmsBom::getParentId, bom.getParentId()).eq(WmsBom::getNo, dto.getChildNo()).one(); + } else if (bom.getParentId() != 0L) { + WmsBom cb = bomService.lambdaQuery().eq(WmsBom::getParentId, bom.getParentId()).eq(WmsBom::getNo, dto.getChildNo()).one(); if (Objects.isNull(cb)) { bom.setNo(dto.getChildNo()) .setDrawingNo(cm.getDrawingNo()) @@ -175,18 +181,18 @@ public class BomControllerService { } if (StrUtil.isBlank(dto.getNum())) { sb.append("数量不能为空;"); - } else if (!NumberUtils.isCreatable(dto.getNum())){ + } else if (!NumberUtils.isCreatable(dto.getNum())) { sb.append("数量格式错误;"); - }else { + } else { bom.setNum(new BigDecimal(dto.getNum())); } dto.setError(sb.toString()); } if (data.stream().noneMatch(it -> StrUtil.isNotBlank(it.getError()))) { - if (CollectionUtil.isNotEmpty(bomForSave)){ + if (CollectionUtil.isNotEmpty(bomForSave)) { bomService.saveBatch(bomForSave); } - if (CollectionUtil.isNotEmpty(bomForUpdate)){ + if (CollectionUtil.isNotEmpty(bomForUpdate)) { bomService.updateBatchById(bomForUpdate); } return true; @@ -194,25 +200,25 @@ public class BomControllerService { return false; } - private String getResultName(String name){ - int index=name.lastIndexOf("."); - return name.substring(0,index)+"_结果"+"."+name.substring(index+1); + private String getResultName(String name) { + int index = name.lastIndexOf("."); + return name.substring(0, index) + "_结果" + "." + name.substring(index + 1); } public void exportSelect(HttpServletResponse response, List ids) throws IOException { - if (CollectionUtil.isEmpty(ids)){ + if (CollectionUtil.isEmpty(ids)) { exportTemplate(response); - }else { + } else { List parents = bomService.lambdaQuery().eq(WmsBom::getParentId, 0L).in(WmsBom::getId, ids).list(); - if (CollectionUtil.isEmpty(parents)){ + if (CollectionUtil.isEmpty(parents)) { exportTemplate(response); return; } - List datas=new ArrayList<>(); - parents.forEach(p->{ - List children=bomService.lambdaQuery().eq(WmsBom::getParentId, p.getId()).list(); - if (CollectionUtil.isNotEmpty(children)){ - datas.addAll(children.stream().map(c->new BomExportExcelDTO() + List datas = new ArrayList<>(); + parents.forEach(p -> { + List children = bomService.lambdaQuery().eq(WmsBom::getParentId, p.getId()).list(); + if (CollectionUtil.isNotEmpty(children)) { + datas.addAll(children.stream().map(c -> new BomExportExcelDTO() .setParentNo(p.getNo()) .setParentDrawingNo(p.getDrawingNo()) .setParentDesc(p.getDescribe()) @@ -222,7 +228,7 @@ public class BomControllerService { .setNum(String.valueOf(c.getNum()))).toList()); } }); - if (CollectionUtil.isEmpty(datas)){ + if (CollectionUtil.isEmpty(datas)) { exportTemplate(response); return; } @@ -237,7 +243,7 @@ public class BomControllerService { private void exportTemplate(HttpServletResponse response) throws IOException { response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("齐套导入模板.xlsx", StandardCharsets.UTF_8)); - List datas=new ArrayList<>(); + List datas = new ArrayList<>(); datas.add(new BomExportExcelDTO() .setParentNo("父级物料编号") .setParentDrawingNo("父级物料图号") @@ -252,11 +258,11 @@ public class BomControllerService { } public void exportSearch(HttpServletResponse response, @Valid BomSearchQO request) throws IOException { - List list=bomService.searchNonPage(request); - List datas=new ArrayList<>(); - list.forEach(p->{ - if (CollectionUtil.isNotEmpty(p.getChildren())){ - datas.addAll(p.getChildren().stream().map(c->new BomExportExcelDTO() + List list = bomService.searchNonPage(request); + List datas = new ArrayList<>(); + list.forEach(p -> { + if (CollectionUtil.isNotEmpty(p.getChildren())) { + datas.addAll(p.getChildren().stream().map(c -> new BomExportExcelDTO() .setParentNo(p.getMaterialNo()) .setParentDrawingNo(p.getDrawingNo()) .setParentDesc(p.getMaterialDesc()) @@ -266,7 +272,7 @@ public class BomControllerService { .setNum(String.valueOf(c.getNum()))).toList()); } }); - if (CollectionUtil.isEmpty(datas)){ + if (CollectionUtil.isEmpty(datas)) { datas.add(new BomExportExcelDTO()); } response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);