This commit is contained in:
zjf committed 2025-02-19 15:04:04 +08:00
1 parent f21df0dbef
commit 672dc98e68
8 files changed
+79 -45

No files matched your search

@@ -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;
@@ -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;
/**
@@ -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<SmeErpCgPlanItemVo> items;
private List<SmErpCgPlanItemVo> items;
}
@@ -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));
}
}
@@ -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<SmeErpCgPlanItemVo> smeErpCgPlanItemVos = BeanUtils.toBean(list, SmeErpCgPlanItemVo.class);
smeErpCgPlanItemVos.stream().forEach(item -> {
List<SmErpCgPlanItemVo> smErpCgPlanItemVos = BeanUtils.toBean(list, SmErpCgPlanItemVo.class);
smErpCgPlanItemVos.stream().forEach(item -> {
List<SmErpUnitEntity> 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);
});
@@ -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;
@@ -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<SmErpCgPlanEntity> {
@@ -22,4 +28,13 @@ public interface SmErpCgPlanService extends IService<SmErpCgPlanEntity> {
* @return
*/
R updateByErpCgPlanEditDTO(ErpCgPlanEditDTO erpCgPlanEditDTO);
/**
* 分页获取采购申请单的详细信息,采购申请单关联采购计划
* @param page
* @param wrapper
* @return
*/
Page<SmErpCgPlanVo> pageScope(Page page, LambdaQueryWrapper<SmErpCgPlanEntity> wrapper);
}
@@ -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<SmErpCgPlanMapper, SmErp
return R.ok(i);
}
@Override
public Page<SmErpCgPlanVo> pageScope(Page page, LambdaQueryWrapper<SmErpCgPlanEntity> wrapper) {
// 1. 查询主表分页数据
Page<SmErpCgPlanEntity> pageData = baseMapper.selectPageByScope(page, wrapper, DataScope.of());
List<SmErpCgPlanEntity> records = pageData.getRecords();
// 2. 提前收集所有主表ID(去重处理)
Set<Long> planIds = records.stream()
.map(SmErpCgPlanEntity::getId)
.collect(Collectors.toSet());
// 3. 批量查询所有子表数据(仅1次数据库查询)
Map<Long, List<SmErpCgPlanItemEntity>> itemMap;
if (!planIds.isEmpty()) {
LambdaQueryWrapper<SmErpCgPlanItemEntity> itemWrapper = new LambdaQueryWrapper<>();
itemWrapper.in(SmErpCgPlanItemEntity::getPlanId, planIds);
List<SmErpCgPlanItemEntity> items = smErpCgPlanItemMapper.selectList(itemWrapper);
// 按planId分组建立映射关系
itemMap = items.stream()
.collect(Collectors.groupingBy(SmErpCgPlanItemEntity::getPlanId));
} else {
itemMap = Collections.emptyMap();
}
// 4. 转换主表VO并关联子表数据
List<SmErpCgPlanVo> voList = BeanUtils.toBean(records, SmErpCgPlanVo.class);
voList.forEach(vo -> {
List<SmErpCgPlanItemVo> itemVos = BeanUtils.toBean(
itemMap.getOrDefault(vo.getId(), Collections.emptyList()),
SmErpCgPlanItemVo.class
);
vo.setItems(itemVos);
});
Page<SmErpCgPlanVo> resultPage = new Page<>();
org.springframework.beans.BeanUtils.copyProperties(pageData, resultPage, "records"); // 复制分页参数
resultPage.setRecords(voList);
return resultPage;
}
}