From e58b6cb9ce66542bbc57b10067d4ac82614a84e1 Mon Sep 17 00:00:00 2001 From: rcx <3084692334@qq.com> Date: Wed, 9 Sep 2026 15:49:09 +0800 Subject: [PATCH] =?UTF-8?q?feat(oms/wms):=20=E5=87=BA=E5=85=A5=E5=BA=93?= =?UTF-8?q?=E6=98=8E=E7=BB=86=E6=9F=A5=E8=AF=A2-=E5=B7=B2=E5=85=A5?= =?UTF-8?q?=E5=BA=93/=E5=B7=B2=E5=87=BA=E5=BA=93=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E3=80=81WMS=E6=96=B0=E5=A2=9E=E5=87=BA?= =?UTF-8?q?=E5=85=A5=E5=BA=93=E6=98=8E=E7=BB=86=E6=9F=A5=E8=AF=A2=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E5=8F=8A=E4=B8=93=E7=94=A8=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 一、OMS 入库/出库明细查询(修复+导出) - 出库明细SQL状态过滤由=9改为in(9,12,13):已出库/已复核/已交接均算已出库,与出库排名统计口径一致 - 入库明细SQL固定只统计已入库(status=5)单据 - 入/出库明细SQL新增实际入仓/出仓日期区间过滤(IFNULL(实际日期,建档时间)兜底),支持统计当天 - 新增Excel导出接口 /executionInMaterialDetailApi/exportWithOrder、/executionOutMaterialDetailApi/exportWithOrder(全量不分页) - 退货回仓统计:通过入库单类型 inOrderTypeCode=tui_huo_ru_ku(退货入库)过滤 二、WMS 新增入库/出库明细查询页面 - 入库明细查询:GET /materialDetailApi/listWithOrder(明细关联入库单,固定已入库(5),level=1防父子行重复计数) - 出库明细查询:GET /outMaterialDetailApi/listWithOrder(新建OutMaterialDetailApi,关联出库单,固定in(9,12,13)) - 返回单头字段:单据状态/审核状态/货主/供应商/客户/单据类型/实际入仓出仓日期/保额/货物类型等 - 入库客户编号/名称/客户预约名称经通知单号关联notice_order取得(入库单表无客户字段) 三、WMS 明细导出专用列集 - 出库导出/exportWithOrder:按客户要求30列导出,含出库单号/出库日期/客户信息/LOT号/费用组(单价、总价、折扣、仓租、合同收费)等 - 入库导出/exportWithOrder:按客户要求30列导出,含客户信息/入库日期/每件保额/收费标准/有效期等 - 单据状态、货物种类导出时自动转文字;导出列顺序与客户清单一致 - 火险保费、入库单件净重(KG)暂无数据来源,导出空列占位,待确认数据来源后补充 四、其他 - 查询条件不传日期时默认查全部日期,统计当天由前端传当天日期区间实现 - 数据权限:非平台超管按登录人一级组织过滤 --- .../ExecutionInMaterialDetailWithOrderPO.java | 8 + .../ExecutionInMaterialDetailQueryDTO.java | 6 + .../todo/QueryOrderOverStockDO.java | 6 + ...ExecutionOutMaterialDetailWithOrderPO.java | 9 + .../ExecutionOutMaterialDetailQueryDTO.java | 6 + .../todo/QueryOrderOverStockDO.java | 6 + .../ExecutionInMaterialDetailApi.java | 23 ++ .../ExecutionOutMaterialDetailApi.java | 22 ++ .../executionInMaterialDetailMapper.xml | 12 +- .../ExecutionOutMaterialDetailMapper.xml | 12 +- .../InMaterialDetailApplicationService.java | 38 ++++ .../OutMaterialDetailApplicationService.java | 54 +++++ .../facade/IInMaterialDetailService.java | 12 ++ .../mapper/InMaterialDetailMapper.java | 12 ++ .../persistence/InMaterialDetailImpl.java | 18 ++ .../po/InMaterialDetailExportPO.java | 109 ++++++++++ .../po/InMaterialDetailWithOrderPO.java | 41 ++++ .../InMaterialDetailDomainService.java | 17 ++ .../facade/IOutMaterialDetailService.java | 12 ++ .../mapper/OutMaterialDetailMapper.java | 12 ++ .../persistence/OutMaterialDetailImpl.java | 18 ++ .../po/OutMaterialDetailExportPO.java | 108 ++++++++++ .../po/OutMaterialDetailWithOrderPO.java | 55 +++++ .../OutMaterialDetailDomainService.java | 17 ++ .../todo/QueryOrderOverStockDO.java | 12 ++ .../InMaterialDetailAssembler.java | 12 ++ .../OutMaterialDetailAssembler.java | 39 ++++ .../InMaterialDetailQueryDTO.java | 58 +++++ .../OutMaterialDetailQueryDTO.java | 58 +++++ .../inMaterialDetail/InMaterialDetailApi.java | 41 ++++ .../OutMaterialDetailApi.java | 69 ++++++ .../OutMaterialDetailMapper.xml | 201 ++++++++++++++++++ .../InMaterialDetailMapper.xml | 197 +++++++++++++++++ 33 files changed, 1314 insertions(+), 6 deletions(-) create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/outMaterialDetail/OutMaterialDetailApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/po/InMaterialDetailExportPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/po/InMaterialDetailWithOrderPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/po/OutMaterialDetailExportPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/po/OutMaterialDetailWithOrderPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/outMaterialDetail/OutMaterialDetailAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inMaterialDetail/InMaterialDetailQueryDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/outMaterialDetail/OutMaterialDetailQueryDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/outMaterialDetail/OutMaterialDetailApi.java diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/executionInMaterialDetail/repository/po/ExecutionInMaterialDetailWithOrderPO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/executionInMaterialDetail/repository/po/ExecutionInMaterialDetailWithOrderPO.java index 3bb849e16..8b1e53786 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/executionInMaterialDetail/repository/po/ExecutionInMaterialDetailWithOrderPO.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/executionInMaterialDetail/repository/po/ExecutionInMaterialDetailWithOrderPO.java @@ -1,5 +1,7 @@ package com.mhd.oms.domain.executionInMaterialDetail.repository.po; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,20 +18,26 @@ public class ExecutionInMaterialDetailWithOrderPO extends ExecutionInMaterialDet private static final long serialVersionUID = 1L; @ApiModelProperty("入库单状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库 6-已取消 7-已关闭") + @Excel(name = "入库单状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库 6-已取消 7-已关闭") private Integer inOrderStatus; @ApiModelProperty("入库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + @Excel(name = "入库单审核状态: 1-未审核 2-审核不通过 3-审核通过") private Integer inOrderAuditStatus; @ApiModelProperty("货主ID") private Long orderShipperId; @ApiModelProperty("货主编码") + @Excel(name = "货主编码") private String orderShipperCode; @ApiModelProperty("货主名称") + @Excel(name = "货主名称") private String orderShipperName; @ApiModelProperty("入库日期") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @Excel(name = "入仓日期", width = 30, dateFormat = "yyyy-MM-dd") private Date warehouseDate; } diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/executionInMaterialDetail/repository/todo/ExecutionInMaterialDetailQueryDTO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/executionInMaterialDetail/repository/todo/ExecutionInMaterialDetailQueryDTO.java index b48723a4f..bc082e42f 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/executionInMaterialDetail/repository/todo/ExecutionInMaterialDetailQueryDTO.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/executionInMaterialDetail/repository/todo/ExecutionInMaterialDetailQueryDTO.java @@ -66,4 +66,10 @@ public class ExecutionInMaterialDetailQueryDTO extends BaseVOEntity { @ApiModelProperty("物料名称") private String materialName; + + @ApiModelProperty("实际入仓日期 开始(yyyy-MM-dd,为空按建档时间兜底)") + private String warehouseDateStart; + + @ApiModelProperty("实际入仓日期 结束(yyyy-MM-dd,为空按建档时间兜底)") + private String warehouseDateEnd; } diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/executionInMaterialDetail/repository/todo/QueryOrderOverStockDO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/executionInMaterialDetail/repository/todo/QueryOrderOverStockDO.java index df2f48055..4c6cedc24 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/executionInMaterialDetail/repository/todo/QueryOrderOverStockDO.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/executionInMaterialDetail/repository/todo/QueryOrderOverStockDO.java @@ -137,4 +137,10 @@ public class QueryOrderOverStockDO extends BaseVOEntity { @ApiModelProperty("越库单状态 0:无状态 1:处理中 2:越库完成") @Excel(name = "越库单状态 0:无状态 1:处理中 2:越库完成") private Integer overStockStatus; + + @ApiModelProperty("实际入仓日期 开始(yyyy-MM-dd,为空按建档时间兜底)") + private String warehouseDateStart; + + @ApiModelProperty("实际入仓日期 结束(yyyy-MM-dd,为空按建档时间兜底)") + private String warehouseDateEnd; } \ No newline at end of file diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/executionOutMaterialDetail/repository/po/ExecutionOutMaterialDetailWithOrderPO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/executionOutMaterialDetail/repository/po/ExecutionOutMaterialDetailWithOrderPO.java index 8534f26b5..cf87264db 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/executionOutMaterialDetail/repository/po/ExecutionOutMaterialDetailWithOrderPO.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/executionOutMaterialDetail/repository/po/ExecutionOutMaterialDetailWithOrderPO.java @@ -1,6 +1,7 @@ package com.mhd.oms.domain.executionOutMaterialDetail.repository.po; import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; @@ -19,33 +20,41 @@ public class ExecutionOutMaterialDetailWithOrderPO extends ExecutionOutMaterialD private static final long serialVersionUID = 1L; @ApiModelProperty("出库单状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-拣货中 6-波次中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭") + @Excel(name = "出库单状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-拣货中 6-波次中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭 12-已复核 13-已交接") private Integer outOrderStatus; @ApiModelProperty("出库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + @Excel(name = "出库单审核状态: 1-未审核 2-审核不通过 3-审核通过") private Integer outOrderAuditStatus; @ApiModelProperty("货主ID") private Long orderShipperId; @ApiModelProperty("货主编码") + @Excel(name = "货主编码") private String orderShipperCode; @ApiModelProperty("货主名称") + @Excel(name = "货主名称") private String orderShipperName; @ApiModelProperty("出仓日期") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "出仓日期", width = 30, dateFormat = "yyyy-MM-dd") private Date orderOutboundDate; @ApiModelProperty("出库时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "出库时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") private Date orderOutboundTime; @ApiModelProperty("保额") + @Excel(name = "保额") private BigDecimal insureAmount; @ApiModelProperty("货物类型:0-物料 1-半成品 2-成品") + @Excel(name = "货物类型: 0-物料 1-半成品 2-成品") private Integer goodsType; } diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/executionOutMaterialDetail/repository/todo/ExecutionOutMaterialDetailQueryDTO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/executionOutMaterialDetail/repository/todo/ExecutionOutMaterialDetailQueryDTO.java index e21050c93..8d51f6774 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/executionOutMaterialDetail/repository/todo/ExecutionOutMaterialDetailQueryDTO.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/executionOutMaterialDetail/repository/todo/ExecutionOutMaterialDetailQueryDTO.java @@ -66,4 +66,10 @@ public class ExecutionOutMaterialDetailQueryDTO extends BaseVOEntity { @ApiModelProperty("物料名称") private String materialName; + + @ApiModelProperty("实际出仓日期 开始(yyyy-MM-dd,为空按建档时间兜底)") + private String outboundDateStart; + + @ApiModelProperty("实际出仓日期 结束(yyyy-MM-dd,为空按建档时间兜底)") + private String outboundDateEnd; } diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationInMaterialDetail/repository/todo/QueryOrderOverStockDO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationInMaterialDetail/repository/todo/QueryOrderOverStockDO.java index 3310cedd1..332e32915 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationInMaterialDetail/repository/todo/QueryOrderOverStockDO.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationInMaterialDetail/repository/todo/QueryOrderOverStockDO.java @@ -137,4 +137,10 @@ public class QueryOrderOverStockDO extends BaseVOEntity { @ApiModelProperty("越库单状态 0:无状态 1:处理中 2:越库完成") @Excel(name = "越库单状态 0:无状态 1:处理中 2:越库完成") private Integer overStockStatus; + + @ApiModelProperty("实际出仓日期 开始(yyyy-MM-dd,为空按建档时间兜底)") + private String outboundDateStart; + + @ApiModelProperty("实际出仓日期 结束(yyyy-MM-dd,为空按建档时间兜底)") + private String outboundDateEnd; } \ No newline at end of file diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/executionInMaterialDetail/ExecutionInMaterialDetailApi.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/executionInMaterialDetail/ExecutionInMaterialDetailApi.java index 56546052e..b466834d4 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/executionInMaterialDetail/ExecutionInMaterialDetailApi.java +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/executionInMaterialDetail/ExecutionInMaterialDetailApi.java @@ -3,6 +3,7 @@ package com.mhd.oms.interfaces.facade.executionInMaterialDetail; import com.mhd.common.core.web.controller.BaseController; import com.mhd.common.core.web.domain.AjaxResult; import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.common.core.utils.poi.ExcelUtil; import com.mhd.oms.domain.executionInMaterialDetail.repository.po.ExecutionInMaterialDetailPO; import com.mhd.oms.domain.executionInMaterialDetail.repository.po.ExecutionInMaterialDetailWithOrderPO; import com.mhd.oms.domain.executionInMaterialDetail.repository.todo.ExecutionInMaterialDetailDO; @@ -16,6 +17,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.net.URLEncoder; import java.util.List; /** @@ -96,4 +99,24 @@ public class ExecutionInMaterialDetailApi extends BaseController { return getDataTable(list); } + /** + * 导出入库明细查询Excel(关联入库执行单,全量不分页; + * SQL固定只统计已入库(5)单据,可按单据类型(如退货入库tui_huo_ru_ku)与实际入仓日期区间过滤) + */ + @ApiOperation("导出入库明细查询Excel") + @GetMapping("/exportWithOrder") + public void exportWithOrder(HttpServletResponse response, ExecutionInMaterialDetailQueryDTO queryDTO) throws Exception + { + //转换实体(不分页,导出全量) + QueryOrderOverStockDO queryDO = inMaterialDetailAssembler.toQueryDO(queryDTO); + List list = inMaterialDetailApplicationService.queryInOrderDetailList(queryDO); + + String fileName = URLEncoder.encode("入库明细查询", "UTF-8").replaceAll("\\+", "%20"); + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); + ExcelUtil util = new ExcelUtil<>(ExecutionInMaterialDetailWithOrderPO.class); + util.exportExcel(response, list, "入库明细查询"); + } + } \ No newline at end of file diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/executionOutMaterialDetail/ExecutionOutMaterialDetailApi.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/executionOutMaterialDetail/ExecutionOutMaterialDetailApi.java index dc8e1a808..7ffdd719f 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/executionOutMaterialDetail/ExecutionOutMaterialDetailApi.java +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/executionOutMaterialDetail/ExecutionOutMaterialDetailApi.java @@ -2,6 +2,7 @@ package com.mhd.oms.interfaces.facade.executionOutMaterialDetail; import com.mhd.common.core.web.controller.BaseController; import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.common.core.utils.poi.ExcelUtil; import com.mhd.oms.domain.executionOutMaterialDetail.repository.po.ExecutionOutMaterialDetailWithOrderPO; import com.mhd.oms.domain.executionOutMaterialDetail.repository.todo.ExecutionOutMaterialDetailQueryDTO; import com.mhd.oms.domain.executionOutMaterialDetail.service.ExecutionOutMaterialDetailApplicationService; @@ -14,6 +15,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.net.URLEncoder; import java.util.List; /** @@ -41,4 +44,23 @@ public class ExecutionOutMaterialDetailApi extends BaseController { List list = outMaterialDetailApplicationService.queryOutOrderDetailList(queryDO); return getDataTable(list); } + + /** + * 导出出库明细查询Excel(关联出库执行单,全量不分页; + * SQL固定只统计已出库(9/12/13)单据,可按单据类型与实际出仓日期区间过滤) + */ + @ApiOperation("导出出库明细查询Excel") + @GetMapping("/exportWithOrder") + public void exportWithOrder(HttpServletResponse response, ExecutionOutMaterialDetailQueryDTO queryDTO) throws Exception { + //转换实体(不分页,导出全量) + QueryOrderOverStockDO queryDO = outMaterialDetailAssembler.toQueryDO(queryDTO); + List list = outMaterialDetailApplicationService.queryOutOrderDetailList(queryDO); + + String fileName = URLEncoder.encode("出库明细查询", "UTF-8").replaceAll("\\+", "%20"); + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); + ExcelUtil util = new ExcelUtil<>(ExecutionOutMaterialDetailWithOrderPO.class); + util.exportExcel(response, list, "出库明细查询"); + } } diff --git a/mhd_oms/src/main/resources/mapper/executionInMaterialDetail/executionInMaterialDetailMapper.xml b/mhd_oms/src/main/resources/mapper/executionInMaterialDetail/executionInMaterialDetailMapper.xml index 66dc5a801..0c295a199 100644 --- a/mhd_oms/src/main/resources/mapper/executionInMaterialDetail/executionInMaterialDetailMapper.xml +++ b/mhd_oms/src/main/resources/mapper/executionInMaterialDetail/executionInMaterialDetailMapper.xml @@ -450,15 +450,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and b.order_type_code = #{inOrderTypeCode} - - and b.status = #{inStatus} - + + and b.status = 5 and b.expect_time >= #{inOrderExpectStartTime} and b.expect_time <= #{inOrderExpectEndTime} + + + and date_format(IFNULL(b.warehouse_date, b.create_time), '%Y-%m-%d') >= #{warehouseDateStart} + + + and date_format(IFNULL(b.warehouse_date, b.create_time), '%Y-%m-%d') <= #{warehouseDateEnd} + and a.del_flag = 1 and b.del_flag = 1 diff --git a/mhd_oms/src/main/resources/mapper/executionOutMaterialDetail/ExecutionOutMaterialDetailMapper.xml b/mhd_oms/src/main/resources/mapper/executionOutMaterialDetail/ExecutionOutMaterialDetailMapper.xml index 6f7068f7a..c4674e9bd 100644 --- a/mhd_oms/src/main/resources/mapper/executionOutMaterialDetail/ExecutionOutMaterialDetailMapper.xml +++ b/mhd_oms/src/main/resources/mapper/executionOutMaterialDetail/ExecutionOutMaterialDetailMapper.xml @@ -543,15 +543,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and b.order_type_code = #{outOrderTypeCode} - - and b.status = #{outStatus} - + + and b.status in (9, 12, 13) and b.expect_time >= #{outOrderExpectStartTime} and b.expect_time <= #{outOrderExpectEndTime} + + + and date_format(IFNULL(b.OUTBOUND_DATE, b.create_time), '%Y-%m-%d') >= #{outboundDateStart} + + + and date_format(IFNULL(b.OUTBOUND_DATE, b.create_time), '%Y-%m-%d') <= #{outboundDateEnd} + and a.del_flag = 1 and b.del_flag = 1 diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/inMaterialDetail/InMaterialDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/inMaterialDetail/InMaterialDetailApplicationService.java index 4d399367f..ffcb7be66 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/inMaterialDetail/InMaterialDetailApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/inMaterialDetail/InMaterialDetailApplicationService.java @@ -2,9 +2,12 @@ package com.mhd.wms.application.service.inMaterialDetail; import com.mhd.common.security.utils.SecurityUtils; import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailExportPO; import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailPO; +import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailWithOrderPO; import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO; import com.mhd.wms.domain.inMaterialDetail.service.InMaterialDetailDomainService; +import com.mhd.wms.domain.overStock.repository.todo.QueryOrderOverStockDO; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -39,6 +42,41 @@ public class InMaterialDetailApplicationService { return inMaterialDetailDomainService.queryList(inMaterialDetailDO); } + /** + * 入库明细查询(关联入库单,只统计已入库(5)单据) + */ + public List queryInOrderDetailList(QueryOrderOverStockDO queryOrderOverStockDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + queryOrderOverStockDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return inMaterialDetailDomainService.queryInOrderDetailList(queryOrderOverStockDO); + } + + /** + * 入库明细导出(专用列集,口径同 queryInOrderDetailList,不分页) + */ + public List exportInOrderDetailList(QueryOrderOverStockDO queryOrderOverStockDO) { + return inMaterialDetailDomainService.exportInOrderDetailList(setDataPermission(queryOrderOverStockDO)); + } + + /** + * 数据权限:非平台超管(1)按登录人一级组织过滤 + */ + private QueryOrderOverStockDO setDataPermission(QueryOrderOverStockDO queryOrderOverStockDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + queryOrderOverStockDO.setTopOrganizationId(topOrganizationId); + } + } + return queryOrderOverStockDO; + } + /** * 新增物料明细 diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/outMaterialDetail/OutMaterialDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/outMaterialDetail/OutMaterialDetailApplicationService.java new file mode 100644 index 000000000..6ac385f51 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/outMaterialDetail/OutMaterialDetailApplicationService.java @@ -0,0 +1,54 @@ +package com.mhd.wms.application.service.outMaterialDetail; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailExportPO; +import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailWithOrderPO; +import com.mhd.wms.domain.outMaterialDetail.service.OutMaterialDetailDomainService; +import com.mhd.wms.domain.overStock.repository.todo.QueryOrderOverStockDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 出库物料明细ApplicationService + * + * @author rcx + * @date 2026-09-09 + */ +@Service +@Slf4j +public class OutMaterialDetailApplicationService { + @Autowired + private OutMaterialDetailDomainService outMaterialDetailDomainService; + + /** + * 出库明细查询(关联出库单,只统计已出库(9/12/13)单据) + */ + public List queryOutOrderDetailList(QueryOrderOverStockDO queryOrderOverStockDO) { + return outMaterialDetailDomainService.queryOutOrderDetailList(setDataPermission(queryOrderOverStockDO)); + } + + /** + * 出库明细导出(专用列集,口径同 queryOutOrderDetailList,不分页) + */ + public List exportOutOrderDetailList(QueryOrderOverStockDO queryOrderOverStockDO) { + return outMaterialDetailDomainService.exportOutOrderDetailList(setDataPermission(queryOrderOverStockDO)); + } + + /** + * 数据权限:非平台超管(1)按登录人一级组织过滤 + */ + private QueryOrderOverStockDO setDataPermission(QueryOrderOverStockDO queryOrderOverStockDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + queryOrderOverStockDO.setTopOrganizationId(topOrganizationId); + } + } + return queryOrderOverStockDO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/facade/IInMaterialDetailService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/facade/IInMaterialDetailService.java index 6e1e83472..947d987d2 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/facade/IInMaterialDetailService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/facade/IInMaterialDetailService.java @@ -2,7 +2,9 @@ package com.mhd.wms.domain.inMaterialDetail.repository.facade; import com.baomidou.mybatisplus.extension.service.IService; import com.mhd.wms.domain.inMaterialDetail.entity.InMaterialDetail; +import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailExportPO; import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailPO; +import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailWithOrderPO; import com.mhd.wms.domain.inMaterialDetail.repository.po.InStockListMaterialAgg; import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailBaseDO; import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO; @@ -27,6 +29,16 @@ public interface IInMaterialDetailService extends IService public List queryInOrderList(QueryOrderOverStockDO queryOrderOverStockDO); + /** + * 入库明细查询(关联入库单,只统计已入库(5)单据) + */ + public List queryInOrderDetailList(QueryOrderOverStockDO queryOrderOverStockDO); + + /** + * 入库明细导出(专用列集,口径同 queryInOrderDetailList,不分页) + */ + public List exportInOrderDetailList(QueryOrderOverStockDO queryOrderOverStockDO); + /** * 分页查询物料明细列表 */ diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/mapper/InMaterialDetailMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/mapper/InMaterialDetailMapper.java index 92a00e1a1..4600f5004 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/mapper/InMaterialDetailMapper.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/mapper/InMaterialDetailMapper.java @@ -2,7 +2,9 @@ package com.mhd.wms.domain.inMaterialDetail.repository.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.mhd.wms.domain.inMaterialDetail.entity.InMaterialDetail; +import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailExportPO; import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailPO; +import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailWithOrderPO; import com.mhd.wms.domain.inMaterialDetail.repository.po.InStockListMaterialAgg; import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO; import com.mhd.wms.domain.overStock.repository.todo.QueryOrderOverStockDO; @@ -28,6 +30,16 @@ public interface InMaterialDetailMapper extends BaseMapper */ public List queryInOrderList(QueryOrderOverStockDO queryOrderOverStockDO); + /** + * 入库明细查询(关联入库单,只统计已入库(5)单据) + */ + public List queryInOrderDetailList(QueryOrderOverStockDO queryOrderOverStockDO); + + /** + * 入库明细导出(专用列集,口径同 queryInOrderDetailList,不分页) + */ + public List exportInOrderDetailList(QueryOrderOverStockDO queryOrderOverStockDO); + /** * 入库列表页:按入库单号批量取去重后的 Invoice No(仅 level=1) */ diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/persistence/InMaterialDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/persistence/InMaterialDetailImpl.java index 761c3d6b4..7809a2a6b 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/persistence/InMaterialDetailImpl.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/persistence/InMaterialDetailImpl.java @@ -13,7 +13,9 @@ import com.mhd.system.api.model.LoginUser; import com.mhd.wms.domain.inMaterialDetail.entity.InMaterialDetail; import com.mhd.wms.domain.inMaterialDetail.repository.facade.IInMaterialDetailService; import com.mhd.wms.domain.inMaterialDetail.repository.mapper.InMaterialDetailMapper; +import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailExportPO; import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailPO; +import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailWithOrderPO; import com.mhd.wms.domain.inMaterialDetail.repository.po.InStockListMaterialAgg; import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailBaseDO; import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO; @@ -72,6 +74,22 @@ public class InMaterialDetailImpl extends ServiceImpl queryInOrderDetailList(QueryOrderOverStockDO queryOrderOverStockDO) { + return inMaterialDetailMapper.queryInOrderDetailList(queryOrderOverStockDO); + } + + /** + * 入库明细导出(专用列集,口径同 queryInOrderDetailList,不分页) + */ + @Override + public List exportInOrderDetailList(QueryOrderOverStockDO queryOrderOverStockDO) { + return inMaterialDetailMapper.exportInOrderDetailList(queryOrderOverStockDO); + } + /** * 查询物料明细列表 */ diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/po/InMaterialDetailExportPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/po/InMaterialDetailExportPO.java new file mode 100644 index 000000000..a9a81a591 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/po/InMaterialDetailExportPO.java @@ -0,0 +1,109 @@ +package com.mhd.wms.domain.inMaterialDetail.repository.po; + +import com.mhd.common.core.annotation.Excel; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 入库明细导出专用PO(仅含客户要求的导出列,列顺序即导出顺序; + * 火险保费 WMS 库暂无数据来源,先占位导出空列; + * 单件净重(KG) 入库明细表无单件净重列,先占位导出空列) + * + * @author rcx + * @date 2026-09-09 + */ +@Data +public class InMaterialDetailExportPO { + + @Excel(name = "客户编号", sort = 1) + private String customerCode; + + @Excel(name = "客户名称", sort = 2) + private String customerName; + + @Excel(name = "入库单号", sort = 3) + private String inOrderNumber; + + @Excel(name = "入库日期", width = 30, dateFormat = "yyyy-MM-dd", sort = 4) + private Date warehouseDate; + + @Excel(name = "LOT编号", sort = 5) + private String lotNo; + + @Excel(name = "客户预约名称", sort = 6) + private String customerOrderNumber; + + @Excel(name = "物料名称", sort = 7) + private String materialName; + + @Excel(name = "物料编码", sort = 8) + private String materialCode; + + @Excel(name = "库存单位", sort = 9) + private String unitName; + + @Excel(name = "件数", sort = 10) + private BigDecimal pieceCount; + + @Excel(name = "仓库", sort = 11) + private String warehouseName; + + @Excel(name = "饮用日期", width = 30, dateFormat = "yyyy-MM-dd", sort = 12) + private Date drinkDate; + + @Excel(name = "库位", sort = 13) + private String storageLocationName; + + @Excel(name = "单件净重(KG)", sort = 14) + private BigDecimal netWeight; + + @Excel(name = "单件体积(CBM)", sort = 15) + private BigDecimal singleVolume; + + @Excel(name = "单价", sort = 16) + private BigDecimal unitPrice; + + @Excel(name = "总价", sort = 17) + private BigDecimal totalPrice; + + @Excel(name = "折扣(%)", sort = 18) + private BigDecimal discountRate; + + @Excel(name = "每月仓租", sort = 19) + private BigDecimal monthlyWarehouseFee; + + @Excel(name = "半月仓租", sort = 20) + private BigDecimal halfMonthWhFee; + + @Excel(name = "合同收费", sort = 21) + private BigDecimal contractFee; + + @Excel(name = "火险保费", sort = 22) + private BigDecimal fireInsureFee; + + @Excel(name = "备注", sort = 23) + private String remark; + + @Excel(name = "货物种类", sort = 24, readConverterExp = "0=物料,1=半成品,2=成品") + private Integer goodsType; + + @Excel(name = "总重量", sort = 25) + private BigDecimal totalGrossWeight; + + @Excel(name = "每件保额", sort = 26) + private BigDecimal insureAmount; + + @Excel(name = "仓位/库位", sort = 27) + private String storageName; + + @Excel(name = "收费标准", sort = 28) + private BigDecimal chargeStandard; + + @Excel(name = "有效期", width = 30, dateFormat = "yyyy-MM-dd", sort = 29) + private Date expiryDate; + + @Excel(name = "单据状态", sort = 30, readConverterExp = "5=已入库") + private Integer inOrderStatus; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/po/InMaterialDetailWithOrderPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/po/InMaterialDetailWithOrderPO.java new file mode 100644 index 000000000..d429210e5 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/po/InMaterialDetailWithOrderPO.java @@ -0,0 +1,41 @@ +package com.mhd.wms.domain.inMaterialDetail.repository.po; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 入库明细查询结果(关联入库单,只统计已入库单据) + * + * @author rcx + * @date 2026-09-09 + */ +@Data +public class InMaterialDetailWithOrderPO extends InMaterialDetailPO { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("入库单状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库 6-已取消 7-已关闭") + @Excel(name = "入库单状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库 6-已取消 7-已关闭") + private Integer inOrderStatus; + + @ApiModelProperty("入库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + @Excel(name = "入库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + private Integer inOrderAuditStatus; + + @ApiModelProperty("入仓日期") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @Excel(name = "入仓日期", width = 30, dateFormat = "yyyy-MM-dd") + private Date warehouseDate; + + @ApiModelProperty("保额") + @Excel(name = "保额") + private BigDecimal insureAmount; + + @ApiModelProperty("货物类型: 0-物料 1-半成品 2-成品") + @Excel(name = "货物类型: 0-物料 1-半成品 2-成品") + private Integer goodsType; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/service/InMaterialDetailDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/service/InMaterialDetailDomainService.java index c3adc2ffe..e46710cf1 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/service/InMaterialDetailDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/service/InMaterialDetailDomainService.java @@ -1,8 +1,11 @@ package com.mhd.wms.domain.inMaterialDetail.service; import com.mhd.wms.domain.inMaterialDetail.repository.facade.IInMaterialDetailService; +import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailExportPO; import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailPO; +import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailWithOrderPO; import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO; +import com.mhd.wms.domain.overStock.repository.todo.QueryOrderOverStockDO; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -30,6 +33,20 @@ public class InMaterialDetailDomainService { return materialDetailService.queryList(inMaterialDetailDO); } + /** + * 入库明细查询(关联入库单,只统计已入库(5)单据) + */ + public List queryInOrderDetailList(QueryOrderOverStockDO queryOrderOverStockDO) { + return materialDetailService.queryInOrderDetailList(queryOrderOverStockDO); + } + + /** + * 入库明细导出(专用列集,口径同 queryInOrderDetailList,不分页) + */ + public List exportInOrderDetailList(QueryOrderOverStockDO queryOrderOverStockDO) { + return materialDetailService.exportInOrderDetailList(queryOrderOverStockDO); + } + /** * 新增物料明细 diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/facade/IOutMaterialDetailService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/facade/IOutMaterialDetailService.java index d562a6faa..3e2f6ebfd 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/facade/IOutMaterialDetailService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/facade/IOutMaterialDetailService.java @@ -3,7 +3,9 @@ package com.mhd.wms.domain.outMaterialDetail.repository.facade; import com.baomidou.mybatisplus.extension.service.IService; import com.mhd.wms.domain.outMaterialDetail.entity.OutMaterialDetail; import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialCheckPO; +import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailExportPO; import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailPO; +import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailWithOrderPO; import com.mhd.wms.domain.outMaterialDetail.repository.po.OutStockListMaterialAgg; import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailBaseDO; import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailDO; @@ -32,6 +34,16 @@ public interface IOutMaterialDetailService extends IService */ public List queryOutOrderList(QueryOrderOverStockDO queryOrderOverStockDO); + /** + * 出库明细查询(关联出库单,只统计已出库(9/12/13)单据) + */ + public List queryOutOrderDetailList(QueryOrderOverStockDO queryOrderOverStockDO); + + /** + * 出库明细导出(专用列集,口径同 queryOutOrderDetailList,不分页) + */ + public List exportOutOrderDetailList(QueryOrderOverStockDO queryOrderOverStockDO); + public List queryListChildren(OutMaterialDetailDO outMaterialDetailDO); diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/mapper/OutMaterialDetailMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/mapper/OutMaterialDetailMapper.java index 2a854e320..6188f8d7c 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/mapper/OutMaterialDetailMapper.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/mapper/OutMaterialDetailMapper.java @@ -2,7 +2,9 @@ package com.mhd.wms.domain.outMaterialDetail.repository.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.mhd.wms.domain.outMaterialDetail.entity.OutMaterialDetail; +import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailExportPO; import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailPO; +import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailWithOrderPO; import com.mhd.wms.domain.outMaterialDetail.repository.po.OutStockListMaterialAgg; import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailDO; import com.mhd.wms.domain.overStock.repository.todo.QueryOrderOverStockDO; @@ -28,6 +30,16 @@ public interface OutMaterialDetailMapper extends BaseMapper */ public List queryOutOrderList(QueryOrderOverStockDO queryOrderOverStockDO); + /** + * 出库明细查询(关联出库单,只统计已出库(9/12/13)单据) + */ + public List queryOutOrderDetailList(QueryOrderOverStockDO queryOrderOverStockDO); + + /** + * 出库明细导出(专用列集,口径同 queryOutOrderDetailList,不分页) + */ + public List exportOutOrderDetailList(QueryOrderOverStockDO queryOrderOverStockDO); + /** * @description 批量修改指定物料明细分配数量 diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/persistence/OutMaterialDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/persistence/OutMaterialDetailImpl.java index a473fa5ed..ca40439a2 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/persistence/OutMaterialDetailImpl.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/persistence/OutMaterialDetailImpl.java @@ -34,7 +34,9 @@ import com.mhd.wms.domain.outMaterialDetail.entity.OutMaterialDetail; import com.mhd.wms.domain.outMaterialDetail.repository.facade.IOutMaterialDetailService; import com.mhd.wms.domain.outMaterialDetail.repository.mapper.OutMaterialDetailMapper; import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialCheckPO; +import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailExportPO; import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailPO; +import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailWithOrderPO; import com.mhd.wms.domain.outMaterialDetail.repository.po.OutStockListMaterialAgg; import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailBaseDO; import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailDO; @@ -107,6 +109,22 @@ public class OutMaterialDetailImpl extends ServiceImpl queryOutOrderDetailList(QueryOrderOverStockDO queryOrderOverStockDO) { + return outMaterialDetailMapper.queryOutOrderDetailList(queryOrderOverStockDO); + } + + /** + * 出库明细导出(专用列集,口径同 queryOutOrderDetailList,不分页) + */ + @Override + public List exportOutOrderDetailList(QueryOrderOverStockDO queryOrderOverStockDO) { + return outMaterialDetailMapper.exportOutOrderDetailList(queryOrderOverStockDO); + } + /** * 查询物料明细列表 */ diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/po/OutMaterialDetailExportPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/po/OutMaterialDetailExportPO.java new file mode 100644 index 000000000..a34896773 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/po/OutMaterialDetailExportPO.java @@ -0,0 +1,108 @@ +package com.mhd.wms.domain.outMaterialDetail.repository.po; + +import com.mhd.common.core.annotation.Excel; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 出库明细导出专用PO(仅含客户要求的导出列,列顺序即导出顺序; + * 火险保费 WMS 库暂无数据来源,先占位导出空列) + * + * @author rcx + * @date 2026-09-09 + */ +@Data +public class OutMaterialDetailExportPO { + + @Excel(name = "出库单号", sort = 1) + private String outOrderNumber; + + @Excel(name = "出库日期", width = 30, dateFormat = "yyyy-MM-dd", sort = 2) + private Date outboundDate; + + @Excel(name = "创建日期", width = 30, dateFormat = "yyyy-MM-dd", sort = 3) + private Date createTime; + + @Excel(name = "客户编号", sort = 4) + private String customerCode; + + @Excel(name = "客户名称", sort = 5) + private String customerName; + + @Excel(name = "LOT编号", sort = 6) + private String lotNo; + + @Excel(name = "客户预约名称", sort = 7) + private String customerOrderNumber; + + @Excel(name = "物料名称", sort = 8) + private String materialName; + + @Excel(name = "物料编码", sort = 9) + private String materialCode; + + @Excel(name = "库存单位", sort = 10) + private String stockUnit; + + @Excel(name = "件数", sort = 11) + private BigDecimal pieceCount; + + @Excel(name = "仓库", sort = 12) + private String warehouseName; + + @Excel(name = "饮用日期", width = 30, dateFormat = "yyyy-MM-dd", sort = 13) + private Date drinkDate; + + @Excel(name = "库位", sort = 14) + private String storageLocationName; + + @Excel(name = "单件净重(KG)", sort = 15) + private BigDecimal weightLimit; + + @Excel(name = "单件体积(CBM)", sort = 16) + private BigDecimal singleVolume; + + @Excel(name = "单价", sort = 17) + private BigDecimal unitPrice; + + @Excel(name = "总价", sort = 18) + private BigDecimal totalPrice; + + @Excel(name = "折扣(%)", sort = 19) + private BigDecimal discountRate; + + @Excel(name = "每月仓租", sort = 20) + private BigDecimal monthlyWarehouseFee; + + @Excel(name = "半月仓租", sort = 21) + private BigDecimal halfMonthWhFee; + + @Excel(name = "合同收费", sort = 22) + private BigDecimal contractFee; + + @Excel(name = "火险保费", sort = 23) + private BigDecimal fireInsureFee; + + @Excel(name = "备注", sort = 24) + private String remark; + + @Excel(name = "总重量(KG)", sort = 25) + private BigDecimal totalGrossWeight; + + @Excel(name = "仓位/库位", sort = 26) + private String storageName; + + @Excel(name = "入库单号", sort = 27) + private String inOrderNumber; + + @Excel(name = "种类", sort = 28, readConverterExp = "0=物料,1=半成品,2=成品") + private Integer goodsType; + + @Excel(name = "总价值", sort = 29) + private BigDecimal totalAmount; + + @Excel(name = "单据状态", sort = 30, readConverterExp = "9=已出库,12=已复核,13=已交接") + private Integer outOrderStatus; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/po/OutMaterialDetailWithOrderPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/po/OutMaterialDetailWithOrderPO.java new file mode 100644 index 000000000..794e5252d --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/po/OutMaterialDetailWithOrderPO.java @@ -0,0 +1,55 @@ +package com.mhd.wms.domain.outMaterialDetail.repository.po; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 出库明细查询结果(关联出库单,只统计已出库单据) + * + * @author rcx + * @date 2026-09-09 + */ +@Data +public class OutMaterialDetailWithOrderPO extends OutMaterialDetailPO { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("客户id") + @Excel(name = "客户id") + private Long customerId; + + @ApiModelProperty("客户编码") + @Excel(name = "客户编码") + private String customerCode; + + @ApiModelProperty("客户名称") + @Excel(name = "客户名称") + private String customerName; + + @ApiModelProperty("出库单状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭 12-已复核 13-已交接") + @Excel(name = "出库单状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭 12-已复核 13-已交接") + private Integer outOrderStatus; + + @ApiModelProperty("出库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + @Excel(name = "出库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + private Integer outOrderAuditStatus; + + @ApiModelProperty("出仓日期") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "出仓日期", width = 30, dateFormat = "yyyy-MM-dd") + private Date outboundDate; + + @ApiModelProperty("保额") + @Excel(name = "保额") + private BigDecimal insureAmount; + + @ApiModelProperty("货物类型: 0-物料 1-半成品 2-成品") + @Excel(name = "货物类型: 0-物料 1-半成品 2-成品") + private Integer goodsType; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/service/OutMaterialDetailDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/service/OutMaterialDetailDomainService.java index 7ddef5c48..2e4f8b626 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/service/OutMaterialDetailDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/service/OutMaterialDetailDomainService.java @@ -1,8 +1,11 @@ package com.mhd.wms.domain.outMaterialDetail.service; import com.mhd.wms.domain.outMaterialDetail.repository.facade.IOutMaterialDetailService; +import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailExportPO; import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailPO; +import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailWithOrderPO; import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailDO; +import com.mhd.wms.domain.overStock.repository.todo.QueryOrderOverStockDO; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -30,6 +33,20 @@ public class OutMaterialDetailDomainService { return outMaterialDetailService.queryList(outMaterialDetailDO); } + /** + * 出库明细查询(关联出库单,只统计已出库(9/12/13)单据) + */ + public List queryOutOrderDetailList(QueryOrderOverStockDO queryOrderOverStockDO) { + return outMaterialDetailService.queryOutOrderDetailList(queryOrderOverStockDO); + } + + /** + * 出库明细导出(专用列集,口径同 queryOutOrderDetailList,不分页) + */ + public List exportOutOrderDetailList(QueryOrderOverStockDO queryOrderOverStockDO) { + return outMaterialDetailService.exportOutOrderDetailList(queryOrderOverStockDO); + } + /** * 新增物料明细 diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/todo/QueryOrderOverStockDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/todo/QueryOrderOverStockDO.java index a5ffd9009..fd74d7ab8 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/todo/QueryOrderOverStockDO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/todo/QueryOrderOverStockDO.java @@ -137,4 +137,16 @@ public class QueryOrderOverStockDO extends BaseVOEntity { @ApiModelProperty("越库单状态 0:无状态 1:处理中 2:越库完成") @Excel(name = "越库单状态 0:无状态 1:处理中 2:越库完成") private Integer overStockStatus; + + @ApiModelProperty("实际入仓日期 开始(yyyy-MM-dd,为空按建档时间兜底)") + private String warehouseDateStart; + + @ApiModelProperty("实际入仓日期 结束(yyyy-MM-dd,为空按建档时间兜底)") + private String warehouseDateEnd; + + @ApiModelProperty("实际出仓日期 开始(yyyy-MM-dd,为空按建档时间兜底)") + private String outboundDateStart; + + @ApiModelProperty("实际出仓日期 结束(yyyy-MM-dd,为空按建档时间兜底)") + private String outboundDateEnd; } diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inMaterialDetail/InMaterialDetailAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inMaterialDetail/InMaterialDetailAssembler.java index 968243957..aadbb8858 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inMaterialDetail/InMaterialDetailAssembler.java +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inMaterialDetail/InMaterialDetailAssembler.java @@ -8,7 +8,9 @@ import com.mhd.common.core.utils.bean.BeanUtils; import com.mhd.common.security.utils.SecurityUtils; import com.mhd.system.api.model.LoginUser; import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO; +import com.mhd.wms.domain.overStock.repository.todo.QueryOrderOverStockDO; import com.mhd.wms.interfaces.dto.inMaterialDetail.InMaterialDetailDTO; +import com.mhd.wms.interfaces.dto.inMaterialDetail.InMaterialDetailQueryDTO; import org.springframework.stereotype.Component; import java.util.Date; @@ -32,6 +34,16 @@ public class InMaterialDetailAssembler { return inMaterialDetailDO; } + /** + * 入库明细查询(关联入库单)查询参数转换 + */ + public QueryOrderOverStockDO toQueryDO(InMaterialDetailQueryDTO queryDTO) { + QueryOrderOverStockDO queryDO = new QueryOrderOverStockDO(); + // 拷贝 + BeanUtils.copyProperties(queryDTO, queryDO, IgnoreNullUtil.getNullPropertyNames(queryDTO)); + return queryDO; + } + /** * 转换实体 */ diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/outMaterialDetail/OutMaterialDetailAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/outMaterialDetail/OutMaterialDetailAssembler.java new file mode 100644 index 000000000..33eabfceb --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/outMaterialDetail/OutMaterialDetailAssembler.java @@ -0,0 +1,39 @@ +package com.mhd.wms.interfaces.assember.outMaterialDetail; + +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailDO; +import com.mhd.wms.domain.overStock.repository.todo.QueryOrderOverStockDO; +import com.mhd.wms.interfaces.dto.outMaterialDetail.OutMaterialDetailDTO; +import com.mhd.wms.interfaces.dto.outMaterialDetail.OutMaterialDetailQueryDTO; +import org.springframework.stereotype.Component; + +/** + * 出库物料明细Assembler + * + * @author rcx + * @date 2026-09-09 + */ +@Component +public class OutMaterialDetailAssembler { + + /** + * 转换实体 + */ + public OutMaterialDetailDO toDO(OutMaterialDetailDTO outMaterialDetailDTO) { + OutMaterialDetailDO outMaterialDetailDO = new OutMaterialDetailDO(); + // 拷贝 + BeanUtils.copyProperties(outMaterialDetailDTO, outMaterialDetailDO, IgnoreNullUtil.getNullPropertyNames(outMaterialDetailDTO)); + return outMaterialDetailDO; + } + + /** + * 出库明细查询(关联出库单)查询参数转换 + */ + public QueryOrderOverStockDO toQueryDO(OutMaterialDetailQueryDTO queryDTO) { + QueryOrderOverStockDO queryDO = new QueryOrderOverStockDO(); + // 拷贝 + BeanUtils.copyProperties(queryDTO, queryDO, IgnoreNullUtil.getNullPropertyNames(queryDTO)); + return queryDO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inMaterialDetail/InMaterialDetailQueryDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inMaterialDetail/InMaterialDetailQueryDTO.java new file mode 100644 index 000000000..b32387b5e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inMaterialDetail/InMaterialDetailQueryDTO.java @@ -0,0 +1,58 @@ +package com.mhd.wms.interfaces.dto.inMaterialDetail; + +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 入库明细查询参数 DTO(关联入库单,只统计已入库单据) + * + * @author rcx + * @date 2026-09-09 + */ +@Data +public class InMaterialDetailQueryDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("组织表ID") + private Long organizationId; + + @ApiModelProperty("一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("入库单号") + private String inOrderNumber; + + @ApiModelProperty("仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + private String shipperName; + + @ApiModelProperty("入库单类型编码(如退货入库 tui_huo_ru_ku)") + private String inOrderTypeCode; + + @ApiModelProperty("物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + private String materialName; + + @ApiModelProperty("实际入仓日期 开始(yyyy-MM-dd,为空按建档时间兜底)") + private String warehouseDateStart; + + @ApiModelProperty("实际入仓日期 结束(yyyy-MM-dd,为空按建档时间兜底)") + private String warehouseDateEnd; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/outMaterialDetail/OutMaterialDetailQueryDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/outMaterialDetail/OutMaterialDetailQueryDTO.java new file mode 100644 index 000000000..450819254 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/outMaterialDetail/OutMaterialDetailQueryDTO.java @@ -0,0 +1,58 @@ +package com.mhd.wms.interfaces.dto.outMaterialDetail; + +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 出库明细查询参数 DTO(关联出库单,只统计已出库单据) + * + * @author rcx + * @date 2026-09-09 + */ +@Data +public class OutMaterialDetailQueryDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("组织表ID") + private Long organizationId; + + @ApiModelProperty("一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("出库单号") + private String outOrderNumber; + + @ApiModelProperty("仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + private String shipperName; + + @ApiModelProperty("出库单类型编码") + private String outOrderTypeCode; + + @ApiModelProperty("物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + private String materialName; + + @ApiModelProperty("实际出仓日期 开始(yyyy-MM-dd,为空按建档时间兜底)") + private String outboundDateStart; + + @ApiModelProperty("实际出仓日期 结束(yyyy-MM-dd,为空按建档时间兜底)") + private String outboundDateEnd; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inMaterialDetail/InMaterialDetailApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inMaterialDetail/InMaterialDetailApi.java index 0a756e040..8959bd5f1 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inMaterialDetail/InMaterialDetailApi.java +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inMaterialDetail/InMaterialDetailApi.java @@ -1,18 +1,25 @@ package com.mhd.wms.interfaces.facadeApi.inMaterialDetail; +import com.mhd.common.core.utils.poi.ExcelUtil; import com.mhd.common.core.web.controller.BaseController; import com.mhd.common.core.web.domain.AjaxResult; import com.mhd.common.core.web.page.TableDataInfo; import com.mhd.wms.application.service.inMaterialDetail.InMaterialDetailApplicationService; +import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailExportPO; import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailPO; +import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailWithOrderPO; import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO; +import com.mhd.wms.domain.overStock.repository.todo.QueryOrderOverStockDO; import com.mhd.wms.interfaces.assember.inMaterialDetail.InMaterialDetailAssembler; import com.mhd.wms.interfaces.dto.inMaterialDetail.InMaterialDetailDTO; +import com.mhd.wms.interfaces.dto.inMaterialDetail.InMaterialDetailQueryDTO; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.net.URLEncoder; import java.util.List; /** @@ -43,6 +50,40 @@ public class InMaterialDetailApi extends BaseController { return getDataTable(list); } + /** + * 入库明细查询(关联入库单,只统计已入库(5)单据; + * 退货回仓按入库单类型 inOrderTypeCode=退货入库(tui_huo_ru_ku) 过滤) + */ + @ApiOperation("入库明细查询(关联入库单)") + @GetMapping("/listWithOrder") + public TableDataInfo listWithOrder(InMaterialDetailQueryDTO queryDTO) + { + //转换实体 + QueryOrderOverStockDO queryDO = inMaterialDetailAssembler.toQueryDO(queryDTO); + startPage(); + List list = inMaterialDetailApplicationService.queryInOrderDetailList(queryDO); + return getDataTable(list); + } + + /** + * 导出入库明细查询Excel(专用列集,全量不分页,只统计已入库(5)单据) + */ + @ApiOperation("导出入库明细查询Excel") + @GetMapping("/exportWithOrder") + public void exportWithOrder(HttpServletResponse response, InMaterialDetailQueryDTO queryDTO) throws Exception + { + //转换实体(不分页,导出全量) + QueryOrderOverStockDO queryDO = inMaterialDetailAssembler.toQueryDO(queryDTO); + List list = inMaterialDetailApplicationService.exportInOrderDetailList(queryDO); + + String fileName = URLEncoder.encode("入库明细查询", "UTF-8").replaceAll("\\+", "%20"); + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); + ExcelUtil util = new ExcelUtil<>(InMaterialDetailExportPO.class); + util.exportExcel(response, list, "入库明细查询"); + } + /** * 编辑物料明细 */ diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/outMaterialDetail/OutMaterialDetailApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/outMaterialDetail/OutMaterialDetailApi.java new file mode 100644 index 000000000..998684da2 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/outMaterialDetail/OutMaterialDetailApi.java @@ -0,0 +1,69 @@ +package com.mhd.wms.interfaces.facadeApi.outMaterialDetail; + +import com.mhd.common.core.utils.poi.ExcelUtil; +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.outMaterialDetail.OutMaterialDetailApplicationService; +import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailExportPO; +import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailWithOrderPO; +import com.mhd.wms.domain.overStock.repository.todo.QueryOrderOverStockDO; +import com.mhd.wms.interfaces.assember.outMaterialDetail.OutMaterialDetailAssembler; +import com.mhd.wms.interfaces.dto.outMaterialDetail.OutMaterialDetailQueryDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.net.URLEncoder; +import java.util.List; + +/** + * 出库物料明细Api + * + * @author rcx + * @date 2026-09-09 + */ +@RestController +@RequestMapping("/outMaterialDetailApi") +public class OutMaterialDetailApi extends BaseController { + @Autowired + private OutMaterialDetailApplicationService outMaterialDetailApplicationService; + @Resource + private OutMaterialDetailAssembler outMaterialDetailAssembler; + + /** + * 出库明细查询(关联出库单,只统计已出库(9/12/13)单据) + */ + @ApiOperation("出库明细查询(关联出库单)") + @GetMapping("/listWithOrder") + public TableDataInfo listWithOrder(OutMaterialDetailQueryDTO queryDTO) + { + //转换实体 + QueryOrderOverStockDO queryDO = outMaterialDetailAssembler.toQueryDO(queryDTO); + startPage(); + List list = outMaterialDetailApplicationService.queryOutOrderDetailList(queryDO); + return getDataTable(list); + } + + /** + * 导出出库明细查询Excel(专用列集,全量不分页,只统计已出库(9/12/13)单据) + */ + @ApiOperation("导出出库明细查询Excel") + @GetMapping("/exportWithOrder") + public void exportWithOrder(HttpServletResponse response, OutMaterialDetailQueryDTO queryDTO) throws Exception + { + //转换实体(不分页,导出全量) + QueryOrderOverStockDO queryDO = outMaterialDetailAssembler.toQueryDO(queryDTO); + List list = outMaterialDetailApplicationService.exportOutOrderDetailList(queryDO); + + String fileName = URLEncoder.encode("出库明细查询", "UTF-8").replaceAll("\\+", "%20"); + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); + ExcelUtil util = new ExcelUtil<>(OutMaterialDetailExportPO.class); + util.exportExcel(response, list, "出库明细查询"); + } +} diff --git a/mhd_wms/src/main/resources/mapper/OutMaterialDetail/OutMaterialDetailMapper.xml b/mhd_wms/src/main/resources/mapper/OutMaterialDetail/OutMaterialDetailMapper.xml index e50a7b25d..ed4d52f07 100644 --- a/mhd_wms/src/main/resources/mapper/OutMaterialDetail/OutMaterialDetailMapper.xml +++ b/mhd_wms/src/main/resources/mapper/OutMaterialDetail/OutMaterialDetailMapper.xml @@ -373,6 +373,207 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + UPDATE out_material_detail diff --git a/mhd_wms/src/main/resources/mapper/inMaterialDetail/InMaterialDetailMapper.xml b/mhd_wms/src/main/resources/mapper/inMaterialDetail/InMaterialDetailMapper.xml index b671a31eb..9940f961f 100644 --- a/mhd_wms/src/main/resources/mapper/inMaterialDetail/InMaterialDetailMapper.xml +++ b/mhd_wms/src/main/resources/mapper/inMaterialDetail/InMaterialDetailMapper.xml @@ -357,6 +357,203 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +