From 26f6b2a5b7a7f4de9d2a1fcb6a5911ed6dc51091 Mon Sep 17 00:00:00 2001 From: zjf <1799650030@qq.com> Date: Wed, 19 Feb 2025 16:06:23 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=87=E8=B4=AD=E8=AE=A2=E5=8D=95=E5=88=86?= =?UTF-8?q?=E9=A1=B5=E5=85=B3=E8=81=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inventoryrecords/CGDdLinkQueryDTO.java | 26 ++++++++++ .../SmErpInventoryRecordsController.java | 23 +++++++++ .../supermarket/service/SmErpCgDdService.java | 12 +++++ .../service/impl/SmErpCgDdServiceImpl.java | 50 +++++++++++++++++++ 4 files changed, 111 insertions(+) create mode 100644 pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/inventoryrecords/CGDdLinkQueryDTO.java diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/inventoryrecords/CGDdLinkQueryDTO.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/inventoryrecords/CGDdLinkQueryDTO.java new file mode 100644 index 000000000..79c64a1ce --- /dev/null +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/inventoryrecords/CGDdLinkQueryDTO.java @@ -0,0 +1,26 @@ +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 CGDdLinkQueryDTO { + + /** + * 采购计划编号 + */ + @Schema(description="采购订单编号") + private String code; + + /** + * 采购计划单据日期 + */ + @Schema(description="单据日期") + private LocalDate dDate; +} 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 c4271529c..56b55102d 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 @@ -8,7 +8,9 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.log.annotation.SysLog; +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.entity.*; import com.bsd.pjcloud.supermarket.service.*; import org.springframework.security.access.prepost.PreAuthorize; @@ -43,6 +45,7 @@ public class SmErpInventoryRecordsController { private final SmErpCgPlanService smErpCgPlanService; private final SmErpSpuService smErpSpuService; private final SmErpUnitService smErpUnitService; + private final SmErpCgDdService smErpCgDdService; /** * 分页查询 @@ -198,4 +201,24 @@ public class SmErpInventoryRecordsController { } + + /** + * 分页查询 + * @param page 分页对象 + * @param cgDdLinkQueryDTO 采购计划 + * @return + */ + @Operation(summary = "采购订单分页查询" , description = "关联采购订单" ) + @GetMapping("/cgdd/page" ) + public R getSmErpCgPlanPage(@ParameterObject Page page, @ParameterObject CGDdLinkQueryDTO cgDdLinkQueryDTO) { + + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.like(StrUtil.isNotBlank(cgDdLinkQueryDTO.getCode()),SmErpCgDdEntity::getCode,cgDdLinkQueryDTO.getCode()); + wrapper.eq(Objects.nonNull(cgDdLinkQueryDTO.getDDate()),SmErpCgDdEntity::getDDate,cgDdLinkQueryDTO.getDDate()); + + //todo 审核成功条件 +// wrapper.eq(SmErpCgPlanEntity::getCheckStatus,); + return R.ok(smErpCgDdService.pageScope(page, wrapper)); + } + } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SmErpCgDdService.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SmErpCgDdService.java index 02703a82b..11705744c 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SmErpCgDdService.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SmErpCgDdService.java @@ -1,9 +1,12 @@ 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.cgdd.ErpCgDDEditDTO; import com.bsd.pjcloud.supermarket.dto.cgdd.ErpCgDDSaveDTO; import com.bsd.pjcloud.supermarket.entity.SmErpCgDdEntity; +import com.bsd.pjcloud.supermarket.entity.SmErpCgPlanEntity; public interface SmErpCgDdService extends IService { @@ -22,4 +25,13 @@ public interface SmErpCgDdService extends IService { * @return */ Object updateByErpCgDdEditDTO(ErpCgDDEditDTO erpCgDDEditDTO); + + + /** + * 关联采购订单分页查询 + * @param page + * @param wrapper + * @return + */ + Object 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/SmErpCgDdServiceImpl.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpCgDdServiceImpl.java index b5907e593..cc557fbf2 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpCgDdServiceImpl.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpCgDdServiceImpl.java @@ -1,8 +1,11 @@ package com.bsd.pjcloud.supermarket.service.impl; +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.supermarket.dto.cgdd.ErpCgDDEditDTO; import com.bsd.pjcloud.supermarket.dto.cgdd.ErpCgDDSaveDTO; @@ -17,10 +20,17 @@ import com.bsd.pjcloud.supermarket.entity.SmErpCgPlanItemEntity; import com.bsd.pjcloud.supermarket.mapper.SmErpCgDdItemMapper; import com.bsd.pjcloud.supermarket.mapper.SmErpCgDdMapper; import com.bsd.pjcloud.supermarket.service.SmErpCgDdService; +import com.bsd.pjcloud.supermarket.vo.cgdd.SmErpCgDdVo; +import com.bsd.pjcloud.supermarket.vo.cgdd.SmeErpCgDdItemVo; +import com.bsd.pjcloud.supermarket.vo.cgplan.SmErpCgPlanItemVo; +import com.bsd.pjcloud.supermarket.vo.cgplan.SmErpCgPlanVo; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; +import java.util.Collections; import java.util.List; +import java.util.Map; +import java.util.Set; import java.util.stream.Collectors; /** @@ -34,6 +44,7 @@ import java.util.stream.Collectors; public class SmErpCgDdServiceImpl extends ServiceImpl implements SmErpCgDdService { private final SmErpCgDdItemMapper smErpCgDDItemMapper; + @Override public Object saveCGDD(ErpCgDDSaveDTO erpCgDDSaveDTO) { Long deptId = SecurityUtils.getUser().getDeptId(); @@ -73,4 +84,43 @@ public class SmErpCgDdServiceImpl extends ServiceImpl wrapper) { + // 1. 查询主表分页数据 + Page pageData = baseMapper.selectPageByScope(page, wrapper, DataScope.of()); + List records = pageData.getRecords(); + + // 2. 提前收集所有主表ID(去重处理) + Set planIds = records.stream() + .map(SmErpCgDdEntity::getId) + .collect(Collectors.toSet()); + + // 3. 批量查询所有子表数据(仅1次数据库查询) + Map> itemMap; + if (!planIds.isEmpty()) { + LambdaQueryWrapper itemWrapper = new LambdaQueryWrapper<>(); + itemWrapper.in(SmErpCgDdItemEntity::getHId, planIds); + List items = smErpCgDDItemMapper.selectList(itemWrapper); + // 按planId分组建立映射关系 + itemMap = items.stream() + .collect(Collectors.groupingBy(SmErpCgDdItemEntity::getHId)); + } else { + itemMap = Collections.emptyMap(); + } + + // 4. 转换主表VO并关联子表数据 + List voList = BeanUtils.toBean(records, SmErpCgDdVo.class); + voList.forEach(vo -> { + List itemVos = BeanUtils.toBean( + itemMap.getOrDefault(vo.getId(), Collections.emptyList()), + SmeErpCgDdItemVo.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