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" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +