From 58dd71c0c2e78b5dc035e3b488d4cb273f3f9567 Mon Sep 17 00:00:00 2001 From: zjf <1799650030@qq.com> Date: Thu, 16 Oct 2025 17:44:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=A5=E5=BA=93=E6=98=8E=E7=BB=86excel?= =?UTF-8?q?=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../InventoryDetailQueryDTO.java | 21 ++++++++---- .../SmErpInventoryRecordsController.java | 19 +++++++++-- .../service/SmErpInventoryRecordsService.java | 7 ++++ .../SmErpInventoryRecordsServiceImpl.java | 34 ++++++++++++++++++- .../mapper/SmErpInventoryRecordsMapper.xml | 10 ++++-- 5 files changed, 79 insertions(+), 12 deletions(-) diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/inventoryrecords/InventoryDetailQueryDTO.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/inventoryrecords/InventoryDetailQueryDTO.java index 860a1b686..69945db3f 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/inventoryrecords/InventoryDetailQueryDTO.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/inventoryrecords/InventoryDetailQueryDTO.java @@ -12,17 +12,26 @@ import java.time.LocalDate; public class InventoryDetailQueryDTO { /** - * 编号 + * 编号、商品名称、供应商(模糊查询) */ - @Schema(description="关键字") + @Schema(description="关键字(单据编号/商品名称/供应商)") private String key; /** - * 单据日期 + * 开始日期 */ - @Schema(description="单据日期") - private LocalDate inventoryDate; + @Schema(description="开始日期") + private LocalDate startDate; - @Schema(description="1入库 2出库") + /** + * 结束日期 + */ + @Schema(description="结束日期") + private LocalDate endDate; + + /** + * 1入库 2出库 + */ + @Schema(description="订单类型:1=入库,2=出库") private Integer orderType; } diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpInventoryRecordsController.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpInventoryRecordsController.java index 2abe634d6..d6a0649be 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpInventoryRecordsController.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpInventoryRecordsController.java @@ -323,15 +323,30 @@ public class SmErpInventoryRecordsController { /** - * 分页查询 + * 分页查询出入库明细 * @param page 分页对象 + * @param inventoryDetailQueryDTO 查询条件 * @return */ - @Operation(summary = "分页获取出入库明细" , description = "出库明细,入库明细" ) + @Operation(summary = "分页获取出入库明细" , description = "出库明细,入库明细,支持日期区间查询" ) @GetMapping("/inventoryType/page" ) public R getinventoryTypePage(@ParameterObject Page page, @ParameterObject InventoryDetailQueryDTO inventoryDetailQueryDTO) { return R.ok(smErpInventoryRecordsService.getInventoryDetailPage(page, inventoryDetailQueryDTO)); } + + /** + * 导出出入库明细 + * @param inventoryDetailQueryDTO 查询条件 + * @return excel 文件流 + */ + @ResponseExcel + @GetMapping("/inventoryType/export") + @Operation(summary = "导出出入库明细", description = "导出出入库明细数据为Excel文件") + @SysLog("导出出入库明细") + @PreAuthorize("@pms.hasPermission('supermarket_smErpInventoryRecords_export')") + public List exportInventoryDetail(@ParameterObject InventoryDetailQueryDTO inventoryDetailQueryDTO) { + return smErpInventoryRecordsService.exportInventoryDetail(inventoryDetailQueryDTO); + } /** * *根据单号获取明细 diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SmErpInventoryRecordsService.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SmErpInventoryRecordsService.java index 7cb06a6e8..a9edca6c2 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SmErpInventoryRecordsService.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SmErpInventoryRecordsService.java @@ -102,6 +102,13 @@ public interface SmErpInventoryRecordsService extends IService exportInventoryRecordsSummary(SmErpInventoryRecordsEntity smErpInventoryRecords, Long[] ids); + /** + * 导出出入库明细 + * @param inventoryDetailQueryDTO 查询条件 + * @return 明细导出数据列表 + */ + List exportInventoryDetail(InventoryDetailQueryDTO inventoryDetailQueryDTO); + /** * 批量删除 * @param list diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpInventoryRecordsServiceImpl.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpInventoryRecordsServiceImpl.java index 77032dcbc..884c7f513 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpInventoryRecordsServiceImpl.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpInventoryRecordsServiceImpl.java @@ -1285,6 +1285,38 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl(summaryMap.values()); } - + @Override + public List exportInventoryDetail(InventoryDetailQueryDTO inventoryDetailQueryDTO) { + // 查询明细数据(不分页) + Page page = new Page<>(1, 10000); + Page pageData = baseMapper.getInventoryDetailPageByScope(page, inventoryDetailQueryDTO, DataScope.of()); + + List records = pageData.getRecords(); + + // 转换为导出DTO + return records.stream().map(vo -> { + InventoryDetailExcelDTO dto = new InventoryDetailExcelDTO(); + dto.setInventoryCode(vo.getInventoryCode()); + dto.setInventoryDate(vo.getInventoryDate()); + dto.setProductName(vo.getProductName()); + dto.setSpec(vo.getSpec()); + dto.setUnit(vo.getUnit()); + dto.setPackageNum(vo.getPackageNum()); + dto.setQuantity(vo.getQuantity()); + + // 金额从分转换为元 + if (vo.getUnitPrice() != null) { + dto.setUnitPrice(BigDecimal.valueOf(vo.getUnitPrice()).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP)); + } + if (vo.getTotalAmount() != null) { + dto.setTotalAmount(BigDecimal.valueOf(vo.getTotalAmount()).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP)); + } + + dto.setSupplierName(vo.getSupplierName()); + dto.setRemark(vo.getRemark()); + + return dto; + }).collect(Collectors.toList()); + } } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SmErpInventoryRecordsMapper.xml b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SmErpInventoryRecordsMapper.xml index 62052c9ba..e54875ef6 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SmErpInventoryRecordsMapper.xml +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SmErpInventoryRecordsMapper.xml @@ -45,7 +45,8 @@ u.package_num, u.retail_price, supp.supplier_name, - r.inventory_date + r.inventory_date, + r.dept_id FROM sm_erp_inventory_records_item i LEFT JOIN sm_erp_inventory_records r on i.inventory_id = r.id @@ -62,8 +63,11 @@ and r.order_type = #{inventoryDetailQueryDTO.orderType} - - and r.inventory_date = #{inventoryDetailQueryDTO.inventoryDate} + + and r.inventory_date >= #{inventoryDetailQueryDTO.startDate} + + + and r.inventory_date <= #{inventoryDetailQueryDTO.endDate} and (r.inventory_code like concat('%',#{inventoryDetailQueryDTO.key},'%')