采购订单分页关联
This commit is contained in:
1 parent
d085d6a640
commit
26f6b2a5b7
4 files changed
+111
No files matched your search
+26
@@ -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;
|
||||
}
|
||||
+23
@@ -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<SmErpCgDdEntity> 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));
|
||||
}
|
||||
|
||||
}
|
||||
+12
@@ -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<SmErpCgDdEntity> {
|
||||
|
||||
@@ -22,4 +25,13 @@ public interface SmErpCgDdService extends IService<SmErpCgDdEntity> {
|
||||
* @return
|
||||
*/
|
||||
Object updateByErpCgDdEditDTO(ErpCgDDEditDTO erpCgDDEditDTO);
|
||||
|
||||
|
||||
/**
|
||||
* 关联采购订单分页查询
|
||||
* @param page
|
||||
* @param wrapper
|
||||
* @return
|
||||
*/
|
||||
Object pageScope(Page page, LambdaQueryWrapper<SmErpCgDdEntity> wrapper);
|
||||
}
|
||||
+50
@@ -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<SmErpCgDdMapper, SmErpCgDdEntity> 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<SmErpCgDdMapper, SmErpCgDd
|
||||
smErpCgDDItemMapper.insertOrUpdate(cgPlanItemEntities);
|
||||
return R.ok(i);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object pageScope(Page page, LambdaQueryWrapper<SmErpCgDdEntity> wrapper) {
|
||||
// 1. 查询主表分页数据
|
||||
Page<SmErpCgDdEntity> pageData = baseMapper.selectPageByScope(page, wrapper, DataScope.of());
|
||||
List<SmErpCgDdEntity> records = pageData.getRecords();
|
||||
|
||||
// 2. 提前收集所有主表ID(去重处理)
|
||||
Set<Long> planIds = records.stream()
|
||||
.map(SmErpCgDdEntity::getId)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
// 3. 批量查询所有子表数据(仅1次数据库查询)
|
||||
Map<Long, List<SmErpCgDdItemEntity>> itemMap;
|
||||
if (!planIds.isEmpty()) {
|
||||
LambdaQueryWrapper<SmErpCgDdItemEntity> itemWrapper = new LambdaQueryWrapper<>();
|
||||
itemWrapper.in(SmErpCgDdItemEntity::getHId, planIds);
|
||||
List<SmErpCgDdItemEntity> items = smErpCgDDItemMapper.selectList(itemWrapper);
|
||||
// 按planId分组建立映射关系
|
||||
itemMap = items.stream()
|
||||
.collect(Collectors.groupingBy(SmErpCgDdItemEntity::getHId));
|
||||
} else {
|
||||
itemMap = Collections.emptyMap();
|
||||
}
|
||||
|
||||
// 4. 转换主表VO并关联子表数据
|
||||
List<SmErpCgDdVo> voList = BeanUtils.toBean(records, SmErpCgDdVo.class);
|
||||
voList.forEach(vo -> {
|
||||
List<SmeErpCgDdItemVo> itemVos = BeanUtils.toBean(
|
||||
itemMap.getOrDefault(vo.getId(), Collections.emptyList()),
|
||||
SmeErpCgDdItemVo.class
|
||||
);
|
||||
vo.setItems(itemVos);
|
||||
});
|
||||
Page<SmErpCgDdVo> resultPage = new Page<>();
|
||||
org.springframework.beans.BeanUtils.copyProperties(pageData, resultPage, "records"); // 复制分页参数
|
||||
resultPage.setRecords(voList);
|
||||
return resultPage;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user