diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/BinController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/BinController.java index 404bbfae..012993ec 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/BinController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/BinController.java @@ -87,7 +87,7 @@ public class BinController extends BaseController { } /** - * 导出选中的仓库,为空时导出模版 + * 导出选中的储位,为空时导出模版 * @param ids 选中的id集合 */ @PostMapping("export") diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/BomController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/BomController.java index 5b68bc83..ff4fc1e3 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/BomController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/BomController.java @@ -6,6 +6,7 @@ import com.nflg.wms.common.pojo.PageData; import com.nflg.wms.common.pojo.dto.BomMaterialDTO; import com.nflg.wms.common.pojo.qo.BomSearchQO; import com.nflg.wms.common.pojo.qo.BomUpdateQO; +import com.nflg.wms.common.pojo.vo.BomMaterialVO; import com.nflg.wms.starter.BaseController; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletResponse; @@ -50,7 +51,7 @@ public class BomController extends BaseController { * @param request 搜索参数 */ @PostMapping("search") - public ApiResult> search(@Valid @RequestBody BomSearchQO request){ + public ApiResult> search(@Valid @RequestBody BomSearchQO request){ return ApiResult.success(bomControllerService.search(request)); } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/DeliverNormalOrderController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/DeliverNormalOrderController.java index 802d1d87..1c3fa0b5 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/DeliverNormalOrderController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/DeliverNormalOrderController.java @@ -8,6 +8,7 @@ import com.google.common.collect.Sets; import com.nflg.wms.admin.util.DateTimeUtil; 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.UserType; import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.PageData; @@ -37,10 +38,7 @@ import org.springframework.core.io.ClassPathResource; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import org.thymeleaf.TemplateEngine; -import org.thymeleaf.context.Context; -import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver; -import java.math.BigDecimal; import java.net.URL; import java.time.LocalDateTime; import java.util.*; @@ -157,18 +155,18 @@ public class DeliverNormalOrderController extends BaseController { */ @GetMapping("exportPdf") public void exportPdf(HttpServletResponse response, @Valid @RequestParam @NotNull Long id) throws Exception { -// List orders = deliverNormalOrderItemService.getByDeliverId(id); -// VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(orders)).throwMessage("没有需要导出的数据"); - List orders=new ArrayList<>(); - orders.add(new WmsDeliverNormalOrderItem() - .setMaterialNo("TEST00001") - .setMaterialDesc("测试物料") - .setBatchNum(new BigDecimal("36")) - .setLableNum(4) - .setMinPackageNum(new BigDecimal("10")) - .setUniqNo(DateTimeUtil.getForDeliverOrderItemNo()) - .setBatchNo("TEST00001") - ); + List orders = deliverNormalOrderItemService.getByDeliverId(id); + VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(orders)).throwMessage("没有需要导出的数据"); +// List orders=new ArrayList<>(); +// orders.add(new WmsDeliverNormalOrderItem() +// .setMaterialNo("TEST00001") +// .setMaterialDesc("测试物料") +// .setBatchNum(new BigDecimal("36")) +// .setLableNum(4) +// .setMinPackageNum(new BigDecimal("10")) +// .setUniqNo(DateTimeUtil.getForDeliverOrderItemNo()) +// .setBatchNo("TEST00001") +// ); List datas = new ArrayList<>(); for (WmsDeliverNormalOrderItem order : orders) { for (int i = 0; i < order.getLableNum(); i++) { @@ -184,15 +182,9 @@ public class DeliverNormalOrderController extends BaseController { datas.add(dto); } } - ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver(); - resolver.setPrefix("/template/qrcode/"); - resolver.setSuffix(".html"); - templateEngine.setTemplateResolver(resolver); Map variables = new HashMap<>(); variables.put("list", datas); - Context context = new Context(); - context.setVariables(variables); - String html = templateEngine.process("dp", context); + String html = ThymeleafUtil.generator("/template/qrcode/", "dp", ".html", variables); URL baseUrl = new ClassPathResource("template/qrcode/").getURL(); PdfGeneratorUtil.generatePdf("普通物料条码", html,baseUrl.toString(), response); } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageController.java index c29e61e7..727624fc 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageController.java @@ -123,10 +123,10 @@ public class StructuralPackageController extends BaseController { } /** - * 导出钢构包 + * 导出钢构包,id为空时导出模板 */ @GetMapping("exportKit") - public void exportKit(HttpServletResponse response,@Valid @RequestParam @NotNull Long id) throws Exception { + public void exportKit(HttpServletResponse response,@RequestParam(required = false) Long id) throws Exception { packageControllerService.exportKit(response,id); } 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 e52450f8..f39ac0b0 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 @@ -12,6 +12,7 @@ import com.nflg.wms.common.pojo.dto.BomImportExcelDTO; import com.nflg.wms.common.pojo.dto.BomMaterialDTO; import com.nflg.wms.common.pojo.qo.BomSearchQO; import com.nflg.wms.common.pojo.qo.BomUpdateQO; +import com.nflg.wms.common.pojo.vo.BomMaterialVO; import com.nflg.wms.common.util.DateTimeUtil; import com.nflg.wms.common.util.EecExcelUtil; import com.nflg.wms.common.util.UserUtil; @@ -81,7 +82,7 @@ public class BomControllerService { }).toList()); } - public PageData search(@Valid BomSearchQO request) { + public PageData search(@Valid BomSearchQO request) { return bomService.search(request); } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/StorageControllerService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/StorageControllerService.java index 945d8d14..b7b83a95 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/StorageControllerService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/StorageControllerService.java @@ -103,7 +103,13 @@ public class StorageControllerService { } public IPage search(@Valid StorageSearchQO request) { - return storageService.search(request); + IPage page = storageService.search(request); + page.getRecords().forEach(storageVO -> + { + List binNos = StrUtil.split(storageVO.getBinNos(), ","); + storageVO.setBinIds(binService.lambdaQuery().select(WmsBin::getId).in(WmsBin::getNo,binNos).list().stream().map(WmsBin::getId).toList()); + }); + return page; } @Transactional 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 50d10986..fe56a45e 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 @@ -7,6 +7,7 @@ import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.nflg.wms.admin.util.PdfGeneratorUtil; +import com.nflg.wms.admin.util.ThymeleafUtil; import com.nflg.wms.common.constant.STATE; import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.PageData; @@ -40,8 +41,6 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import org.thymeleaf.TemplateEngine; -import org.thymeleaf.context.Context; -import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver; import org.ttzero.excel.entity.ListSheet; import org.ttzero.excel.entity.TemplateSheet; import org.ttzero.excel.entity.Workbook; @@ -325,32 +324,34 @@ public class StructuralPackageControllerService { return ApiResult.success(); } - public void exportKit(HttpServletResponse response, @Valid @NotNull Long id) throws IOException { - PackageVO packageInfo = packageService.getInfo(id); - VUtil.trueThrowBusinessError(Objects.isNull(packageInfo)).throwMessage("数据不存在"); - List list = JSONUtil.toList(packageInfo.getMaterials(), PackageMaterialDTO.class); - response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); - response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode(packageInfo.getNo()+"钢构包.xlsx", StandardCharsets.UTF_8)); - new Workbook() - .addSheet(new TemplateSheet(new ClassPathResource("template/钢构包导出.xlsx").getInputStream()) - .setData(packageInfo) - .setData("list", list) - ).writeTo(response.getOutputStream()); + public void exportKit(HttpServletResponse response, Long id) throws IOException { + if (Objects.isNull(id)) { + response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("钢构包导入模板.xlsx", StandardCharsets.UTF_8)); + new Workbook() + .addSheet(new TemplateSheet(new ClassPathResource("template/钢构包导出.xlsx").getInputStream())) + .writeTo(response.getOutputStream()); + } else { + PackageVO packageInfo = packageService.getInfo(id); + VUtil.trueThrowBusinessError(Objects.isNull(packageInfo)).throwMessage("数据不存在"); + List list = JSONUtil.toList(packageInfo.getMaterials(), PackageMaterialDTO.class); + response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode(packageInfo.getNo() + "钢构包.xlsx", StandardCharsets.UTF_8)); + new Workbook() + .addSheet(new TemplateSheet(new ClassPathResource("template/钢构包导出.xlsx").getInputStream()) + .setData(packageInfo) + .setData("list", list) + ).writeTo(response.getOutputStream()); + } } public void exportPdf(HttpServletResponse response, @Valid @NotNull Long id) throws Exception { PackageVO vo = packageService.getInfo(id); VUtil.trueThrowBusinessError(Objects.isNull(vo)).throwMessage("数据不存在"); - ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver(); - resolver.setPrefix("/template/"); - resolver.setSuffix(".html"); - templateEngine.setTemplateResolver(resolver); Map variables = new HashMap<>(); variables.put("info", vo); variables.put("list", vo.getMaterialList()); - Context context = new Context(); - context.setVariables(variables); - String html = templateEngine.process("StructuralPackage", context); + String html = ThymeleafUtil.generator("/template/", "StructuralPackage", ".html", variables); PdfGeneratorUtil.generatePdf(vo.getNo() + "老鼠图", html, response); } } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/util/ThymeleafUtil.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/util/ThymeleafUtil.java new file mode 100644 index 00000000..f06cec3f --- /dev/null +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/util/ThymeleafUtil.java @@ -0,0 +1,22 @@ +package com.nflg.wms.admin.util; + +import org.thymeleaf.context.Context; +import org.thymeleaf.spring6.SpringTemplateEngine; +import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver; + +import java.util.Map; + +public class ThymeleafUtil { + + public static String generator(String prefix,String template,String suffix, Map variables){ + ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver(); + resolver.setPrefix(prefix); + resolver.setSuffix(".html"); + SpringTemplateEngine engine = new SpringTemplateEngine(); + engine.setTemplateResolver(resolver); + engine.setEnableSpringELCompiler(true); + Context context = new Context(); + context.setVariables(variables); + return engine.process("StructuralPackage", context); + } +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/BinExcelExportDTO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/BinExcelExportDTO.java index ab2dd489..2488fb5b 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/BinExcelExportDTO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/BinExcelExportDTO.java @@ -12,7 +12,7 @@ public class BinExcelExportDTO { * 仓库编码 */ @ExcelColumn("*仓库编码") - private String warehouseCode; + private String warehouseNo; /** * 储位编码 diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PackageSearchQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PackageSearchQO.java index 5cc56397..78a950d8 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PackageSearchQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PackageSearchQO.java @@ -15,5 +15,5 @@ public class PackageSearchQO extends PageQO { /** * 机型id */ - private Long modelId; + private String modelId; } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/BomMaterialVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/BomMaterialVO.java new file mode 100644 index 00000000..5308c893 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/BomMaterialVO.java @@ -0,0 +1,70 @@ +package com.nflg.wms.common.pojo.vo; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +@Data +@Accessors(chain = true) +public class BomMaterialVO { + + private Long id; + + /** + * 上级id + */ + private Long parentId; + + /** + * SAP料号 + */ + private String materialNo; + + /** + * 物料描述 + */ + private String materialDesc; + + /** + * 图号 + */ + private String drawingNo; + + /** + * 数量 + */ + private BigDecimal num; + + /** + * 重量 + */ + private BigDecimal materialWeight; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 最后更新人 + */ + private String updateBy; + + /** + * 最后更新时间 + */ + private LocalDateTime updateTime; + + /** + * 子节点 + */ + private List children; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/StorageVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/StorageVO.java index a4a2ff84..8fb706f6 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/StorageVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/StorageVO.java @@ -3,6 +3,7 @@ package com.nflg.wms.common.pojo.vo; import lombok.Data; import java.time.LocalDateTime; +import java.util.List; @Data public class StorageVO { @@ -19,11 +20,21 @@ public class StorageVO { */ private String materialDescribe; + /** + * 仓库id + */ + private String warehouseId; + /** * 仓库编码 */ private String warehouseNo; + /** + * 储位id列表 + */ + private List binIds; + /** * 储位编码 */ diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsBomService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsBomService.java index 62b90f03..f823f846 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsBomService.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsBomService.java @@ -2,8 +2,8 @@ package com.nflg.wms.repository.service; import com.baomidou.mybatisplus.extension.service.IService; import com.nflg.wms.common.pojo.PageData; -import com.nflg.wms.common.pojo.dto.BomMaterialDTO; import com.nflg.wms.common.pojo.qo.BomSearchQO; +import com.nflg.wms.common.pojo.vo.BomMaterialVO; import com.nflg.wms.repository.entity.WmsBom; import jakarta.validation.Valid; @@ -23,5 +23,5 @@ public interface IWmsBomService extends IService { void update(Long parentId, List list); - PageData search(@Valid BomSearchQO request); + PageData search(@Valid BomSearchQO request); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsBomServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsBomServiceImpl.java index 2867c8da..d33b1fc9 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsBomServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsBomServiceImpl.java @@ -4,8 +4,8 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.nflg.wms.common.pojo.PageData; -import com.nflg.wms.common.pojo.dto.BomMaterialDTO; import com.nflg.wms.common.pojo.qo.BomSearchQO; +import com.nflg.wms.common.pojo.vo.BomMaterialVO; import com.nflg.wms.common.util.UserUtil; import com.nflg.wms.common.util.VUtil; import com.nflg.wms.repository.entity.WmsBom; @@ -55,7 +55,7 @@ public class WmsBomServiceImpl extends ServiceImpl impleme } @Override - public PageData search(BomSearchQO request) { + public PageData search(BomSearchQO request) { List boms = lambdaQuery() .like(StrUtil.isNotBlank(request.getNo()), WmsBom::getNo, request.getNo()) .like(StrUtil.isNotBlank(request.getDescribe()), WmsBom::getDescribe, request.getDescribe()) @@ -64,34 +64,34 @@ public class WmsBomServiceImpl extends ServiceImpl impleme if (CollectionUtil.isNotEmpty(parentIds)) { boms.addAll(listByIds(parentIds)); } - List datas = boms.stream() + List datas = boms.stream() .filter(it -> it.getParentId() == 0L) .sorted(Comparator.comparing(WmsBom::getId)) .skip((long) (request.getPage() - 1) * request.getPageSize()) .limit(request.getPageSize()) - .map(it -> new BomMaterialDTO() + .map(it -> new BomMaterialVO() .setId(it.getId()) .setParentId(it.getParentId()) .setMaterialNo(it.getNo()) .setMaterialDesc(it.getDescribe()) .setDrawingNo(it.getDrawingNo()) .setNum(it.getNum()) - .setMaterialWeight(String.valueOf(it.getWeight())) + .setMaterialWeight(it.getWeight()) .setChildren(boms.stream() .filter(child -> child.getParentId().equals(it.getId())) .map(child -> { - return new BomMaterialDTO() + return new BomMaterialVO() .setId(child.getId()) .setParentId(child.getParentId()) .setMaterialNo(child.getNo()) .setMaterialDesc(child.getDescribe()) .setDrawingNo(child.getDrawingNo()) .setNum(child.getNum()) - .setMaterialWeight(String.valueOf(child.getWeight())); + .setMaterialWeight(child.getWeight()); }) .toList() )).toList(); - return new PageData() + return new PageData() .setPage(request.getPage()) .setPageSize(request.getPageSize()) .setTotal(datas.size()) diff --git a/nflg-wms-repository/src/main/resources/mapper/WmsStorageMapper.xml b/nflg-wms-repository/src/main/resources/mapper/WmsStorageMapper.xml index 0184a950..d4f8be9d 100644 --- a/nflg-wms-repository/src/main/resources/mapper/WmsStorageMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/WmsStorageMapper.xml @@ -7,6 +7,7 @@ FROM ( SELECT s.*, + wh.id AS "warehouseId", wh.no AS "warehouseNo", m.no AS "materialNo", m.describe AS "materialDescribe",