diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/controller/admin/DlRepairSoController.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/controller/admin/DlRepairSoController.java index 50572a79..b3b1cdef 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/controller/admin/DlRepairSoController.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/controller/admin/DlRepairSoController.java @@ -6,10 +6,12 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.module.stockOperate.entity.DlRepairSo; +import cn.iocoder.yudao.module.stockOperate.entity.DlRepairSoi; import cn.iocoder.yudao.module.stockOperate.service.DlRepairSoService; import cn.iocoder.yudao.module.stockOperate.vo.DlRepairSoReqVO; import cn.iocoder.yudao.module.stockOperate.vo.DlRepairSoRespVO; import cn.iocoder.yudao.module.stockOperate.vo.RepairSoExportVO; +import com.alibaba.excel.util.DateUtils; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; @@ -72,7 +74,25 @@ public class DlRepairSoController { Page page = new Page<>(pageNo, pageSize); return success(dlRepairSoService.getRepairSoPage(repairSoReqVO, page)); } - + + /** + * 采购单/领料单新增分页(包含子表数据) + * + * @param repairSoReqVO 查询对象 + * @param pageNo 页码 + * @param pageSize 条数 + * @author 小李 + * @date 18:14 2024/9/14 + **/ + @GetMapping("/page-with-items") + @Operation(summary = "采购单/领料单 分页(包含子表数据)") + public CommonResult getRepairSoPageWithItems(DlRepairSoReqVO repairSoReqVO, + @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) { + Page page = new Page<>(pageNo, pageSize); + return success(dlRepairSoService.getRepairSoPageWithItems(repairSoReqVO, page)); + } + /** * 统计采购金额 * @@ -115,8 +135,8 @@ public class DlRepairSoController { /** * 领料单、退料单APP查看 - * @author vinjor-M - * @date 11:10 2024/11/21 + * @author vinjor-M + * @date 11:10 2024/11/21 * @param id 单据id * @return cn.iocoder.yudao.framework.common.pojo.CommonResult **/ @@ -192,5 +212,92 @@ public class DlRepairSoController { } ExcelUtils.write(response, "单据数据.xls", "数据", RepairSoExportVO.class, list); } + + @GetMapping("/export-with-items") + @Operation(summary = "导出数据(包含子表)") + public void exportWithItems(DlRepairSoReqVO repairSoReqVO, HttpServletResponse response) throws IOException { + int pageNo = 1, pageSize = 1000; + Page page = new Page<>(pageNo, pageSize); + + List list = new ArrayList<>(); + do { + IPage repairSoPage = dlRepairSoService.getRepairSoPageWithItems(repairSoReqVO, page); + List records = repairSoPage.getRecords(); + if (CollUtil.isEmpty(records)){ + break; + } + list.addAll(records); + pageNo++; + page.setCurrent(pageNo); + } while (true); + + if (CollUtil.isEmpty(list)) { + throw exception0(500, "没有数据可以导出"); + } + + // 构建导出数据 + List> rows = new ArrayList<>(); + + // 表头 + rows.add(CollUtil.newArrayList( + "序号", "单号", "数量", "金额", "供应商", "时间", "操作人", + "商品", "商品数量", "商品价格", "仓库" + )); + + int index = 1; + for (DlRepairSo so : list) { + // 获取子表项目列表 + List items = so.getItems(); + + // 如果没有子项,则至少添加一行显示主表信息 + if (CollUtil.isEmpty(items)) { + rows.add(CollUtil.newArrayList( + String.valueOf(index++), + so.getSoNo() != null ? so.getSoNo() : "", + so.getItemCount() != null ? so.getItemCount().toString() : "0", + so.getTotalPrice() != null ? so.getTotalPrice().toString() : "0", + so.getSupplierName() != null ? so.getSupplierName() : "", + so.getSoTime() != null ? so.getSoTime().toString() : "", + so.getUserName() != null ? so.getUserName() : "", + "", "", "", "" + )); + } else { + // 有子项时,第一行显示主表信息和第一个子项信息 + DlRepairSoi firstItem = items.get(0); + rows.add(CollUtil.newArrayList( + String.valueOf(index++), + so.getSoNo() != null ? so.getSoNo() : "", + so.getItemCount() != null ? so.getItemCount().toString() : "0", + so.getTotalPrice() != null ? so.getTotalPrice().toString() : "0", + so.getSupplierName() != null ? so.getSupplierName() : "", + so.getSoTime() != null ? DateUtils.format(so.getSoTime(), "yyyy-MM-dd HH:mm:ss") : "", + so.getUserName() != null ? so.getUserName() : "", + firstItem.getWares() != null && firstItem.getWares().getName() != null ? firstItem.getWares().getName() : "", + firstItem.getGoodsCount() != null ? firstItem.getGoodsCount().toString() : "0", + firstItem.getGoodsPrice() != null ? firstItem.getGoodsPrice().toString() : "0", + firstItem.getHouseName() != null ? firstItem.getHouseName() : "" + )); + + // 后续行只显示子项信息 + for (int i = 1; i < items.size(); i++) { + DlRepairSoi item = items.get(i); + rows.add(CollUtil.newArrayList( + "", so.getSoNo() != null ? so.getSoNo() : "", + so.getItemCount() != null ? so.getItemCount().toString() : "0", + so.getTotalPrice() != null ? so.getTotalPrice().toString() : "0", + so.getSupplierName() != null ? so.getSupplierName() : "", + so.getSoTime() != null ? DateUtils.format(so.getSoTime(), "yyyy-MM-dd HH:mm:ss") : "", + so.getUserName() != null ? so.getUserName() : "", + item.getWares() != null && item.getWares().getName() != null ? item.getWares().getName() : "", + item.getGoodsCount() != null ? item.getGoodsCount().toString() : "0", + item.getGoodsPrice() != null ? item.getGoodsPrice().toString() : "0", + firstItem.getHouseName() != null ? firstItem.getHouseName() : "" + )); + } + } + } + + ExcelUtils.exportExcel(("06").equals(repairSoReqVO.getSoType()) ?"采购退货单明细" : "采购单明细", rows, CollUtil.newArrayList(6), response); + } } diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/entity/DlRepairSo.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/entity/DlRepairSo.java index 200b0673..67cead36 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/entity/DlRepairSo.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/entity/DlRepairSo.java @@ -12,6 +12,7 @@ import org.springframework.format.annotation.DateTimeFormat; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 采购单领料单 @@ -127,4 +128,10 @@ public class DlRepairSo extends TenantBaseDO { /** 用户记录那些人可以看这条记录 */ private String userIds; + + /** + * 子表数据 + */ + @TableField(exist = false) + private List items; } \ No newline at end of file diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/entity/DlRepairSoi.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/entity/DlRepairSoi.java index 6c7f55b6..6ced3266 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/entity/DlRepairSoi.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/entity/DlRepairSoi.java @@ -84,4 +84,10 @@ public class DlRepairSoi extends TenantBaseDO { */ @TableField(exist = false) private String typeName; -} \ No newline at end of file + + /** + * 仓库名称 + */ + @TableField(exist = false) + private String houseName; +} diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/mapper/DlRepairSoMapper.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/mapper/DlRepairSoMapper.java index e30321c5..30730e96 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/mapper/DlRepairSoMapper.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/mapper/DlRepairSoMapper.java @@ -50,8 +50,19 @@ public interface DlRepairSoMapper extends BaseMapper { * @return java.util.List **/ List selectByIdGroup(@Param("id")String id); -} - - - - + + /** + * 根据ID查询主表及子表数据 + * @param id 主表ID + * @return DlRepairSo 主表及子表数据 + */ + DlRepairSo selectWithItemsById(@Param("id") String id); + + /** + * 分页查询主表及子表数据 + * @param repairSoReqVO 查询条件 + * @param page 分页参数 + * @return IPage 分页结果 + */ + IPage getRepairSoPageWithItems(@Param("map") DlRepairSoReqVO repairSoReqVO, Page page); +} \ No newline at end of file diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/service/DlRepairSoService.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/service/DlRepairSoService.java index d82f66f1..67db020d 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/service/DlRepairSoService.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/service/DlRepairSoService.java @@ -35,6 +35,17 @@ public interface DlRepairSoService extends IService { **/ IPage getRepairSoPage(DlRepairSoReqVO repairSoReqVO, Page page); + /** + * 采购单/领料单新增分页(包含子表数据) + * + * @param repairSoReqVO 查询对象 + * @param page 分页参数 + * @return IPage 分页结果 + * @author 小李 + * @date 18:14 2024/9/14 + **/ + IPage getRepairSoPageWithItems(DlRepairSoReqVO repairSoReqVO, Page page); + /** * 统计采购金额 * diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/service/impl/DlRepairSoServiceImpl.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/service/impl/DlRepairSoServiceImpl.java index 836780e3..37dc18b2 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/service/impl/DlRepairSoServiceImpl.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/service/impl/DlRepairSoServiceImpl.java @@ -183,6 +183,19 @@ public class DlRepairSoServiceImpl extends ServiceImpl getRepairSoPage(DlRepairSoReqVO repairSoReqVO, Page page) { return baseMapper.getRepairSoPage(repairSoReqVO, page); } + + /** + * 采购单/领料单新增分页(包含子表数据) + * @param repairSoReqVO 查询对象 + * @param page 分页参数 + * @return IPage 分页结果 + * @author 小李 + * @date 18:14 2024/9/14 + **/ + @Override + public IPage getRepairSoPageWithItems(DlRepairSoReqVO repairSoReqVO, Page page) { + return baseMapper.getRepairSoPageWithItems(repairSoReqVO, page); + } @Override public BigDecimal getPurchaseAmount(DlRepairSoReqVO repairSoReqVO) { diff --git a/dl-module-repair/src/main/resources/mapper/stockOperate/DlRepairSoMapper.xml b/dl-module-repair/src/main/resources/mapper/stockOperate/DlRepairSoMapper.xml index b31e0227..53577f88 100644 --- a/dl-module-repair/src/main/resources/mapper/stockOperate/DlRepairSoMapper.xml +++ b/dl-module-repair/src/main/resources/mapper/stockOperate/DlRepairSoMapper.xml @@ -29,6 +29,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select so.id, so.so_type, @@ -58,6 +126,109 @@ where so.deleted = '0' + + - + + + +