From 860aecf2082aee1a7f9a681c39269888df250edc Mon Sep 17 00:00:00 2001 From: zjf <1799650030@qq.com> Date: Tue, 4 Mar 2025 17:25:22 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Derp=E9=83=A8=E5=88=86?= =?UTF-8?q?=EF=BC=8C=E6=B7=BB=E5=8A=A0=E5=87=BA=E5=85=A5=E5=BA=93=E6=98=8E?= =?UTF-8?q?=E7=BB=86=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../InventoryDetailQueryDTO.java | 28 ++++ .../vo/cgplan/ErpSpuWithUnitPageVo.java | 2 +- .../supermarket/vo/cgplan/ErpUnitVo.java | 7 + .../InventoryRecordPageVo.java | 135 ++++++++++++++++++ .../SmErpInventoryRecordsController.java | 27 ++++ .../mapper/SmErpInventoryRecordsMapper.java | 13 ++ .../supermarket/mapper/SmErpUnitMapper.java | 7 + .../service/SmErpInventoryRecordsService.java | 10 ++ .../SmErpInventoryRecordsServiceImpl.java | 11 ++ .../service/impl/SmErpSpuServiceImpl.java | 16 ++- .../mapper/SmErpInventoryRecordsMapper.xml | 37 +++++ 11 files changed, 291 insertions(+), 2 deletions(-) create mode 100644 pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/inventoryrecords/InventoryDetailQueryDTO.java create mode 100644 pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/inventoryrecord/InventoryRecordPageVo.java diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/inventoryrecords/InventoryDetailQueryDTO.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/inventoryrecords/InventoryDetailQueryDTO.java new file mode 100644 index 000000000..d21074074 --- /dev/null +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/inventoryrecords/InventoryDetailQueryDTO.java @@ -0,0 +1,28 @@ +package com.bsd.pjcloud.supermarket.dto.inventoryrecords; + + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDate; + + +@Data +@Schema(description = "出入库明细条件查询") +public class InventoryDetailQueryDTO { + + /** + * 编号 + */ + @Schema(description="关键字") + private String key; + + /** + * 单据日期 + */ + @Schema(description="单据日期") + private LocalDate ddDate; + + @Schema(description="1入库 2出库") + private Integer orderType; +} diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/cgplan/ErpSpuWithUnitPageVo.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/cgplan/ErpSpuWithUnitPageVo.java index b9f928f6f..09842f16d 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/cgplan/ErpSpuWithUnitPageVo.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/cgplan/ErpSpuWithUnitPageVo.java @@ -64,7 +64,7 @@ public class ErpSpuWithUnitPageVo { */ @Schema(description="库存") @TableField(exist = false) - private Integer stock; + private Double stock; /** * 部门id diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/cgplan/ErpUnitVo.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/cgplan/ErpUnitVo.java index cb22558aa..4e1259ff6 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/cgplan/ErpUnitVo.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/cgplan/ErpUnitVo.java @@ -16,6 +16,13 @@ public class ErpUnitVo { @Schema(description="包装单位id") private Long id; + + /** + * 条码 + */ + @Schema(description="条码") + private String barCode; + /** * 规格 */ diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/inventoryrecord/InventoryRecordPageVo.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/inventoryrecord/InventoryRecordPageVo.java new file mode 100644 index 000000000..4550ac56b --- /dev/null +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/inventoryrecord/InventoryRecordPageVo.java @@ -0,0 +1,135 @@ +package com.bsd.pjcloud.supermarket.vo.inventoryrecord; + + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.bsd.pjcloud.common.core.util.MoneyDeserializer; +import com.bsd.pjcloud.common.core.util.MoneySerializer; +import com.bsd.pjcloud.supermarket.vo.cgplan.ErpUnitVo; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; + +@Schema(description = "出入库明细分页vo") +@Data +public class InventoryRecordPageVo { + + @Schema(description ="包装单位id") + private Long id; + + + @Schema(description="编号") + private String inventoryCode; + + /** + * 采购计划单据日期 + */ + @Schema(description="单据日期") + private LocalDate inventoryDate; + + + @Schema(description="商品名称") + private String productName; + + + + @Schema(description="供应商id") + private Long supplierId; + /** + * 备注 + */ + @Schema(description="备注") + private String remark; + + /** + * 创建人 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description="创建人") + private String createBy; + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description="创建时间") + private LocalDateTime createTime; + + /** + * 审批状态 + */ + @Schema(description="审批状态") + private String checkStatus; + + + @Schema(description="关联码") + private String linkCode; + + + /** + * 库存商品id + */ + @Schema(description="库存商品id") + private Long erpSpuId; + + /** + * 数量 + */ + @Schema(description="数量") + private Integer quantity; + + /** + * 进价 + */ + @Schema(description="进价") + @JsonSerialize(using = MoneySerializer.class) // 分 -> 元 + @JsonDeserialize(using = MoneyDeserializer.class) // 元 -> 分 + private Integer unitPrice; + + /** + * 累计总金额 + */ + @Schema(description="累计总金额") + @JsonSerialize(using = MoneySerializer.class) // 分 -> 元 + @JsonDeserialize(using = MoneyDeserializer.class) // 元 -> 分 + private Integer totalAmount; + + + /** + * 包装单位id + */ + @Schema(description="包装单位id") + private Long unitId; + + + /** + * 规格 + */ + @Schema(description="规格") + private String spec; + + /** + * 单位 + */ + @Schema(description="单位") + private String unit; + + /** + * 装数 + */ + @Schema(description="装数") + private Integer packageNum; + + /** + * 进价(分为单位) + */ + @Schema(description="进价(分为单位)") + @JsonSerialize(using = MoneySerializer.class) // 分 -> 元 + @JsonDeserialize(using = MoneyDeserializer.class) // 元 -> 分 + private Integer purchasePrice; +} diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpInventoryRecordsController.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpInventoryRecordsController.java index 603fddbd2..05db2d333 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpInventoryRecordsController.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpInventoryRecordsController.java @@ -13,6 +13,7 @@ import com.bsd.pjcloud.common.security.util.SecurityUtils; import com.bsd.pjcloud.supermarket.dto.cgdd.CGPlanLinkQueryDTO; import com.bsd.pjcloud.supermarket.dto.cgplan.ErpCgPlanDTO; import com.bsd.pjcloud.supermarket.dto.inventoryrecords.CGDdLinkQueryDTO; +import com.bsd.pjcloud.supermarket.dto.inventoryrecords.InventoryDetailQueryDTO; import com.bsd.pjcloud.supermarket.dto.inventoryrecords.InventoryLinkQueryDTO; import com.bsd.pjcloud.supermarket.dto.inventoryrecords.InventoryRecordSaveDTO; import com.bsd.pjcloud.supermarket.entity.*; @@ -20,6 +21,7 @@ import com.bsd.pjcloud.supermarket.service.*; import com.bsd.pjcloud.supermarket.vo.cgplan.ErpUnitVo; import com.bsd.pjcloud.supermarket.vo.inventoryrecord.InventoryRecordItemVo; import com.bsd.pjcloud.supermarket.vo.inventoryrecord.InventoryRecordVo; +import org.apache.commons.lang3.StringUtils; import org.springframework.security.access.prepost.PreAuthorize; import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; import io.swagger.v3.oas.annotations.security.SecurityRequirement; @@ -64,9 +66,13 @@ public class SmErpInventoryRecordsController { @GetMapping("/page" ) @PreAuthorize("@pms.hasPermission('supermarket_smErpInventoryRecords_view')" ) public R getSmErpInventoryRecordsPage(@ParameterObject Page page, @ParameterObject SmErpInventoryRecordsEntity smErpInventoryRecords) { + if (smErpInventoryRecords.getInventoryType() == null){ + return R.failed("缺失参数!"); + } LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); wrapper.eq(Objects.nonNull(smErpInventoryRecords.getHandlerUserId()),SmErpInventoryRecordsEntity::getHandlerUserId,smErpInventoryRecords.getHandlerUserId()); wrapper.eq(StrUtil.isNotBlank(smErpInventoryRecords.getCheckStatus()),SmErpInventoryRecordsEntity::getCheckStatus,smErpInventoryRecords.getCheckStatus()); + wrapper.eq(SmErpInventoryRecordsEntity::getInventoryType, smErpInventoryRecords.getInventoryType()); return R.ok(smErpInventoryRecordsService.pageScope(page, wrapper)); } @@ -243,4 +249,25 @@ public class SmErpInventoryRecordsController { // wrapper.eq(SmErpCgPlanEntity::getCheckStatus,); return R.ok(smErpInventoryRecordsService.pageInventoryScope(page, wrapper)); } + + + /** + * 分页查询 + * @param page 分页对象 + * @return + */ + @Operation(summary = "分页获取出入库明细" , description = "出库明细,入库明细" ) + @GetMapping("/inventoryDetail/page" ) + public R getInventoryDetailPage(@ParameterObject Page page, @ParameterObject InventoryDetailQueryDTO inventoryDetailQueryDTO) { + + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + if (StringUtils.isNotBlank(inventoryDetailQueryDTO.getKey())){ + wrapper.like(SmErpInventoryRecordsEntity::getProductName,inventoryDetailQueryDTO.getKey()); + } + wrapper.eq(Objects.nonNull(inventoryDetailQueryDTO.getDdDate()),SmErpInventoryRecordsEntity::getInventoryDate,inventoryDetailQueryDTO.getDdDate()); + wrapper.eq(SmErpInventoryRecordsEntity::getOrderType,inventoryDetailQueryDTO.getOrderType()); + //todo 审核成功条件 +// wrapper.eq(SmErpCgPlanEntity::getCheckStatus,); + return R.ok(smErpInventoryRecordsService.getInventoryDetailPage(page, inventoryDetailQueryDTO)); + } } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/SmErpInventoryRecordsMapper.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/SmErpInventoryRecordsMapper.java index 10024686d..4146f1999 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/SmErpInventoryRecordsMapper.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/SmErpInventoryRecordsMapper.java @@ -1,11 +1,24 @@ package com.bsd.pjcloud.supermarket.mapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; +import com.bsd.pjcloud.supermarket.dto.inventoryrecords.InventoryDetailQueryDTO; import com.bsd.pjcloud.supermarket.entity.SmErpInventoryRecordsEntity; +import com.bsd.pjcloud.supermarket.vo.inventoryrecord.InventoryRecordPageVo; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; @Mapper public interface SmErpInventoryRecordsMapper extends PjcloudBaseMapper { + /** + * 分页获取出入库明细分页 + * @param inventoryDetailQueryDTO + * @param of + * @return + */ + Page getInventoryDetailPageByScope(@Param("inventoryDetailQueryDTO") InventoryDetailQueryDTO inventoryDetailQueryDTO, DataScope of); } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/SmErpUnitMapper.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/SmErpUnitMapper.java index 245c814e9..fa59215a2 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/SmErpUnitMapper.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/SmErpUnitMapper.java @@ -1,8 +1,12 @@ package com.bsd.pjcloud.supermarket.mapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; +import com.bsd.pjcloud.supermarket.dto.inventoryrecords.InventoryDetailQueryDTO; import com.bsd.pjcloud.supermarket.entity.SmErpUnitEntity; import com.bsd.pjcloud.supermarket.vo.erp.SmErpUnitWithSpuVo; +import com.bsd.pjcloud.supermarket.vo.inventoryrecord.InventoryRecordPageVo; import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -17,4 +21,7 @@ public interface SmErpUnitMapper extends PjcloudBaseMapper { * @return */ List getSupermarketUnitsWithSpu(List ids); + + + } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SmErpInventoryRecordsService.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SmErpInventoryRecordsService.java index 1485f93a1..ec593cb1c 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SmErpInventoryRecordsService.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SmErpInventoryRecordsService.java @@ -3,6 +3,7 @@ package com.bsd.pjcloud.supermarket.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.bsd.pjcloud.supermarket.dto.inventoryrecords.InventoryDetailQueryDTO; import com.bsd.pjcloud.supermarket.dto.inventoryrecords.InventoryRecordSaveDTO; import com.bsd.pjcloud.supermarket.entity.SmErpInventoryRecordsEntity; @@ -32,4 +33,13 @@ public interface SmErpInventoryRecordsService extends IService wrapper); + + + /** + * 出库入库明细查询 + * @param page + * @param inventoryDetailQueryDTO + * @return + */ + Object getInventoryDetailPage(Page page, InventoryDetailQueryDTO inventoryDetailQueryDTO); } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpInventoryRecordsServiceImpl.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpInventoryRecordsServiceImpl.java index 204693377..9695bf428 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpInventoryRecordsServiceImpl.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpInventoryRecordsServiceImpl.java @@ -10,6 +10,7 @@ import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.common.security.util.SecurityUtils; import com.bsd.pjcloud.supermarket.constant.OrderTypeEnum; import com.bsd.pjcloud.supermarket.dto.cgdd.SmCgDDSaveItemDTO; +import com.bsd.pjcloud.supermarket.dto.inventoryrecords.InventoryDetailQueryDTO; import com.bsd.pjcloud.supermarket.dto.inventoryrecords.InventoryRecordSaveDTO; import com.bsd.pjcloud.supermarket.dto.inventoryrecords.InventoryRecordSaveItemDTO; import com.bsd.pjcloud.supermarket.dto.inventoryrecords.UpdateStockDTO; @@ -20,6 +21,7 @@ import com.bsd.pjcloud.supermarket.service.SmErpStockService; import com.bsd.pjcloud.supermarket.vo.cgplan.SmErpCgPlanItemVo; import com.bsd.pjcloud.supermarket.vo.cgplan.SmErpCgPlanVo; import com.bsd.pjcloud.supermarket.vo.inventoryrecord.InventoryRecordItemVo; +import com.bsd.pjcloud.supermarket.vo.inventoryrecord.InventoryRecordPageVo; import com.bsd.pjcloud.supermarket.vo.inventoryrecord.InventoryRecordVo; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; @@ -229,4 +231,13 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl pagedata=baseMapper.getInventoryDetailPageByScope(inventoryDetailQueryDTO, DataScope.of()); + + return pagedata; + } + + } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpSpuServiceImpl.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpSpuServiceImpl.java index 16b5fa78f..640051b59 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpSpuServiceImpl.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpSpuServiceImpl.java @@ -340,9 +340,23 @@ public class SmErpSpuServiceImpl extends ServiceImpl unitList = smErpUnitService.list(new LambdaQueryWrapper().in(SmErpUnitEntity::getSpuId, spuIds)); + // 批量查询库存信息 + List stocks = smErpStockMapper.selectList( + new LambdaQueryWrapper() + .in(SmErpStockEntity::getErpSpuId, spuIds)); + + // 建立SPU ID与库存的映射关系 + Map stockMap = stocks.stream() + .collect(Collectors.toMap(SmErpStockEntity::getErpSpuId, smErpStockEntity -> smErpStockEntity)); + + voList.stream().forEach(vo -> { List unitEntities = unitList.stream().filter(unit -> unit.getSpuId().equals(vo.getId())).collect(Collectors.toList()); - vo.setErpUnitVos(BeanUtils.toBean(unitEntities, ErpUnitVo.class)); + List bean = BeanUtils.toBean(unitEntities, ErpUnitVo.class); + vo.setErpUnitVos(bean); + //库存 + SmErpStockEntity smErpStockEntity = stockMap.get(vo.getId()); + vo.setStock(smErpStockEntity != null ? smErpStockEntity.getCurrentStock() : 0); }); // 创建新的 Page 对象并设置数据 diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SmErpInventoryRecordsMapper.xml b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SmErpInventoryRecordsMapper.xml index d23f9386e..7ca921ae2 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SmErpInventoryRecordsMapper.xml +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SmErpInventoryRecordsMapper.xml @@ -28,4 +28,41 @@ + \ No newline at end of file