采购
This commit is contained in:
1 parent
f21df0dbef
commit
672dc98e68
8 files changed
+79
-45
No files matched your search
-1
@@ -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;
|
||||
|
||||
|
||||
+5
-1
@@ -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;
|
||||
|
||||
/**
|
||||
+1
-30
@@ -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;
|
||||
|
||||
}
|
||||
+2
-2
@@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
+4
-4
@@ -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);
|
||||
});
|
||||
|
||||
|
||||
|
||||
-4
@@ -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;
|
||||
|
||||
+15
@@ -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);
|
||||
}
|
||||
+52
-3
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user