diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/cgdd/SmErpCgDdVo.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/cgdd/SmErpCgDdVo.java index cb37e1987..83d233a7b 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/cgdd/SmErpCgDdVo.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/cgdd/SmErpCgDdVo.java @@ -3,7 +3,6 @@ package com.bsd.pjcloud.supermarket.vo.cgdd; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; -import com.bsd.pjcloud.supermarket.vo.cgplan.SmeErpCgPlanItemVo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/cgplan/SmeErpCgPlanItemVo.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/cgplan/SmErpCgPlanItemVo.java similarity index 86% rename from pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/cgplan/SmeErpCgPlanItemVo.java rename to pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/cgplan/SmErpCgPlanItemVo.java index 3163307d2..f24d4932e 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/cgplan/SmeErpCgPlanItemVo.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/cgplan/SmErpCgPlanItemVo.java @@ -17,7 +17,7 @@ import java.util.List; */ @Data @Schema(description = "采购计划-item") -public class SmeErpCgPlanItemVo { +public class SmErpCgPlanItemVo { @Schema(description = "id") private Long id; @@ -43,12 +43,16 @@ public class SmeErpCgPlanItemVo { * 进价 */ @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; /** diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/cgplan/SmErpCgPlanVo.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/cgplan/SmErpCgPlanVo.java index 7b924cc13..7a988f1eb 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/cgplan/SmErpCgPlanVo.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/cgplan/SmErpCgPlanVo.java @@ -28,11 +28,6 @@ public class SmErpCgPlanVo { @Schema(description="采购计划单据日期") private LocalDate planDate; - /** - * 仓库id - */ - @Schema(description="仓库id") - private String warehouseId; /** * 经办人id @@ -41,36 +36,12 @@ public class SmErpCgPlanVo { private Long handlerUserId; - /** - * 累计进货数量 - */ - @Schema(description="累计进货数量") - private Integer totalNumber; - - /** - * 累计总金额 - */ - @Schema(description="累计总金额") - private Integer totalAmount; - - /** - * 货商 - */ - @Schema(description="货商") - private Long supplierId; - /** * 备注 */ @Schema(description="备注") private String remark; - /** - * 订单编号 - */ - @Schema(description="订单编号") - private String orderNumber; - /** * 创建人 */ @@ -96,6 +67,6 @@ public class SmErpCgPlanVo { * @Link SmErpCgPlanVo */ @Schema(description="采购计划-item") - private List items; + private List items; } diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpCgDdController.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpCgDdController.java index a874a40b1..d5f902249 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpCgDdController.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpCgDdController.java @@ -169,7 +169,7 @@ public class SmErpCgDdController { * @param cGPlanLinkQueryDTO 采购计划 * @return */ - @Operation(summary = "分页查询" , description = "分页查询" ) + @Operation(summary = "采购申请单分页查询" , description = "关联采购申请" ) @GetMapping("/cgsq/page" ) @PreAuthorize("@pms.hasPermission('supermarket_smErpCgPlan_view')" ) public R getSmErpCgPlanPage(@ParameterObject Page page, @ParameterObject CGPlanLinkQueryDTO cGPlanLinkQueryDTO) { @@ -180,7 +180,7 @@ public class SmErpCgDdController { //todo 审核成功条件 // wrapper.eq(SmErpCgPlanEntity::getCheckStatus,); - return R.ok(smErpCgPlanService.page(page, wrapper)); + return R.ok(smErpCgPlanService.pageScope(page, wrapper)); } } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpCgPlanController.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpCgPlanController.java index eb6902e99..bc9a8f92d 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpCgPlanController.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpCgPlanController.java @@ -21,7 +21,7 @@ import com.bsd.pjcloud.supermarket.service.SmErpSpuService; import com.bsd.pjcloud.supermarket.service.SmErpUnitService; import com.bsd.pjcloud.supermarket.vo.cgplan.ErpUnitVo; import com.bsd.pjcloud.supermarket.vo.cgplan.SmErpCgPlanVo; -import com.bsd.pjcloud.supermarket.vo.cgplan.SmeErpCgPlanItemVo; +import com.bsd.pjcloud.supermarket.vo.cgplan.SmErpCgPlanItemVo; import org.springframework.security.access.prepost.PreAuthorize; import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; import io.swagger.v3.oas.annotations.security.SecurityRequirement; @@ -123,8 +123,8 @@ public class SmErpCgPlanController { SmErpCgPlanVo bean = BeanUtils.toBean(smErpCgPlanEntity, SmErpCgPlanVo.class, (source) -> { - List smeErpCgPlanItemVos = BeanUtils.toBean(list, SmeErpCgPlanItemVo.class); - smeErpCgPlanItemVos.stream().forEach(item -> { + List smErpCgPlanItemVos = BeanUtils.toBean(list, SmErpCgPlanItemVo.class); + smErpCgPlanItemVos.stream().forEach(item -> { List unitEntities = unitList.stream().filter(unit -> unit.getSpuId().equals(item.getErpSpuId())).collect(Collectors.toList()); // unitList.stream().forEach(unit -> { @@ -137,7 +137,7 @@ public class SmErpCgPlanController { // }); item.setErpUnitVos(BeanUtils.toBean(unitEntities, ErpUnitVo.class)); }); - source.setItems(smeErpCgPlanItemVos); + source.setItems(smErpCgPlanItemVos); }); 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 5425458b8..c4271529c 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 @@ -6,15 +6,11 @@ import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.bsd.pjcloud.common.core.util.BeanUtils; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.log.annotation.SysLog; import com.bsd.pjcloud.supermarket.dto.cgplan.ErpCgPlanDTO; import com.bsd.pjcloud.supermarket.entity.*; import com.bsd.pjcloud.supermarket.service.*; -import com.bsd.pjcloud.supermarket.vo.cgplan.ErpUnitVo; -import com.bsd.pjcloud.supermarket.vo.cgplan.SmErpCgPlanVo; -import com.bsd.pjcloud.supermarket.vo.cgplan.SmeErpCgPlanItemVo; import org.springframework.security.access.prepost.PreAuthorize; import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; import io.swagger.v3.oas.annotations.security.SecurityRequirement; diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SmErpCgPlanService.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SmErpCgPlanService.java index f40e61f7d..280d7ad4f 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SmErpCgPlanService.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SmErpCgPlanService.java @@ -1,10 +1,16 @@ 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.common.core.util.R; import com.bsd.pjcloud.supermarket.dto.cgplan.ErpCgPlanEditDTO; import com.bsd.pjcloud.supermarket.dto.cgplan.ErpCgPlanSaveDTO; import com.bsd.pjcloud.supermarket.entity.SmErpCgPlanEntity; +import com.bsd.pjcloud.supermarket.vo.cgdd.SmErpCgDdVo; +import com.bsd.pjcloud.supermarket.vo.cgplan.SmErpCgPlanVo; + +import java.util.List; public interface SmErpCgPlanService extends IService { @@ -22,4 +28,13 @@ public interface SmErpCgPlanService extends IService { * @return */ R updateByErpCgPlanEditDTO(ErpCgPlanEditDTO erpCgPlanEditDTO); + + + /** + * 分页获取采购申请单的详细信息,采购申请单关联采购计划 + * @param page + * @param wrapper + * @return + */ + Page pageScope(Page page, LambdaQueryWrapper wrapper); } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpCgPlanServiceImpl.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpCgPlanServiceImpl.java index b272da6f7..51c9ea9eb 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpCgPlanServiceImpl.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpCgPlanServiceImpl.java @@ -1,26 +1,33 @@ package com.bsd.pjcloud.supermarket.service.impl; +import com.alibaba.nacos.common.utils.CollectionUtils; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bsd.pjcloud.common.core.util.BeanUtils; import com.bsd.pjcloud.common.core.util.R; +import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.common.security.util.SecurityUtils; -import com.bsd.pjcloud.common.sequence.sequence.Sequence; import com.bsd.pjcloud.supermarket.dto.cgplan.ErpCgPlanEditDTO; import com.bsd.pjcloud.supermarket.dto.cgplan.ErpCgPlanSaveDTO; import com.bsd.pjcloud.supermarket.dto.cgplan.SmCgPlanEditItemDTO; import com.bsd.pjcloud.supermarket.dto.cgplan.SmCgPlanSaveItemDTO; import com.bsd.pjcloud.supermarket.entity.SmErpCgPlanEntity; import com.bsd.pjcloud.supermarket.entity.SmErpCgPlanItemEntity; -import com.bsd.pjcloud.supermarket.entity.SmErpUnitEntity; import com.bsd.pjcloud.supermarket.mapper.SmErpCgPlanItemMapper; import com.bsd.pjcloud.supermarket.mapper.SmErpCgPlanMapper; import com.bsd.pjcloud.supermarket.service.SmErpCgPlanService; +import com.bsd.pjcloud.supermarket.vo.cgdd.SmErpCgDdVo; +import com.bsd.pjcloud.supermarket.vo.cgplan.SmErpCgPlanVo; +import com.bsd.pjcloud.supermarket.vo.cgplan.SmErpCgPlanItemVo; import lombok.AllArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Collections; import java.util.List; +import java.util.Map; +import java.util.Set; import java.util.stream.Collectors; /** @@ -80,4 +87,46 @@ public class SmErpCgPlanServiceImpl extends ServiceImpl pageScope(Page page, LambdaQueryWrapper wrapper) { + // 1. 查询主表分页数据 + Page pageData = baseMapper.selectPageByScope(page, wrapper, DataScope.of()); + List records = pageData.getRecords(); + + // 2. 提前收集所有主表ID(去重处理) + Set planIds = records.stream() + .map(SmErpCgPlanEntity::getId) + .collect(Collectors.toSet()); + + // 3. 批量查询所有子表数据(仅1次数据库查询) + Map> itemMap; + if (!planIds.isEmpty()) { + LambdaQueryWrapper itemWrapper = new LambdaQueryWrapper<>(); + itemWrapper.in(SmErpCgPlanItemEntity::getPlanId, planIds); + List items = smErpCgPlanItemMapper.selectList(itemWrapper); + + // 按planId分组建立映射关系 + itemMap = items.stream() + .collect(Collectors.groupingBy(SmErpCgPlanItemEntity::getPlanId)); + } else { + itemMap = Collections.emptyMap(); + } + + // 4. 转换主表VO并关联子表数据 + List voList = BeanUtils.toBean(records, SmErpCgPlanVo.class); + voList.forEach(vo -> { + List itemVos = BeanUtils.toBean( + itemMap.getOrDefault(vo.getId(), Collections.emptyList()), + SmErpCgPlanItemVo.class + ); + vo.setItems(itemVos); + }); + Page resultPage = new Page<>(); + org.springframework.beans.BeanUtils.copyProperties(pageData, resultPage, "records"); // 复制分页参数 + + resultPage.setRecords(voList); + return resultPage; + } + } \ No newline at end of file