|
@@ -1,20 +1,32 @@
|
|
|
package com.sd.business.service.purchase.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
+import com.sd.business.entity.bom.po.Bom;
|
|
|
import com.sd.business.entity.bom.po.BomSpec;
|
|
|
import com.sd.business.entity.purchase.dto.PurchaseBomSelectDto;
|
|
|
import com.sd.business.entity.purchase.dto.PurchaseInTransitBomSelectDto;
|
|
|
import com.sd.business.entity.purchase.po.Purchase;
|
|
|
import com.sd.business.entity.purchase.po.PurchaseBom;
|
|
|
+import com.sd.business.entity.purchase.vo.PurchaseBomInfoVo;
|
|
|
+import com.sd.business.entity.purchase.vo.PurchaseBomSelectVo;
|
|
|
import com.sd.business.entity.purchase.vo.PurchaseBomVo;
|
|
|
import com.sd.business.entity.purchase.vo.PurchaseInTransitBomVo;
|
|
|
import com.sd.business.mapper.purchase.PurchaseBomMapper;
|
|
|
+import com.sd.business.service.bom.BomClassifyService;
|
|
|
+import com.sd.business.service.bom.BomSpecService;
|
|
|
import com.sd.business.service.purchase.PurchaseBomService;
|
|
|
+import com.sd.framework.util.Assert;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -27,11 +39,58 @@ import org.springframework.stereotype.Service;
|
|
|
@Service
|
|
|
public class PurchaseBomServiceImpl extends ServiceImpl<PurchaseBomMapper, PurchaseBom> implements PurchaseBomService {
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private BomSpecService bomSpecService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private BomClassifyService bomClassifyService;
|
|
|
+
|
|
|
+
|
|
|
@Override
|
|
|
- public Page<PurchaseBomVo> getPage(PurchaseBomSelectDto dto) {
|
|
|
+ public Page<PurchaseBomSelectVo> getPage(PurchaseBomSelectDto dto) {
|
|
|
+ Assert.notEmpty(dto.getPurchaseId(), "采购合同id不能为空");
|
|
|
IWrapper<PurchaseBom> wrapper = getWrapper();
|
|
|
+ wrapper.eq("pb", PurchaseBom::getPurchaseId, dto.getPurchaseId());
|
|
|
+ wrapper.like("b", Bom::getName, dto.getBomName());
|
|
|
+ wrapper.like("b", Bom::getCode, dto.getBomCode());
|
|
|
+ wrapper.eq("b", Bom::getSpecies, dto.getSpecies());
|
|
|
+ wrapper.eq("b", Bom::getChromatophore, dto.getChromatophore());
|
|
|
+ wrapper.eq("b", Bom::getEmbossingProcess, dto.getEmbossingProcess());
|
|
|
+ wrapper.eq("b", Bom::getFrontGrain, dto.getFrontGrain());
|
|
|
+ wrapper.eq("b", Bom::getReverseGrain, dto.getReverseGrain());
|
|
|
+ wrapper.eq("bs", BomSpec::getColour, dto.getColour());
|
|
|
+ wrapper.eq("bs", BomSpec::getCode, dto.getBomSpecCode());
|
|
|
+ wrapper.eq("bs", BomSpec::getName, dto.getBomSpecName());
|
|
|
+ if (ObjectUtil.isNotNull(dto.getBomClassifyId())) {
|
|
|
+ List<Long> childrenIdList = bomClassifyService.getChildrenIdList(dto.getBomClassifyId());
|
|
|
+ wrapper.in("b", Bom::getBomClassifyId, childrenIdList);
|
|
|
+ }
|
|
|
+ if (ObjectUtil.isNotNull(dto.getBomClassifyIdList())) {
|
|
|
+ List<Long> childrenIdList = bomClassifyService.getChildrenIdList(dto.getBomClassifyIdList());
|
|
|
+ wrapper.in("b", Bom::getBomClassifyId, childrenIdList);
|
|
|
+ }
|
|
|
+ wrapper.orderByDesc("b", Bom::getId);
|
|
|
+ wrapper.groupBy("b.id");
|
|
|
+ Page<PurchaseBomSelectVo> page = this.baseMapper.getPurchaseBomPage(dto.getPage(), wrapper);
|
|
|
+ List<PurchaseBomSelectVo> records = page.getRecords();
|
|
|
+ if (records.size() == 0) {
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ List<Long> bomIdList = records.stream().map(PurchaseBomSelectVo::getBomId).collect(Collectors.toList());
|
|
|
+ wrapper = IWrapper.getWrapper();
|
|
|
+ wrapper.eq("pb", PurchaseBom::getPurchaseId, dto.getPurchaseId());
|
|
|
+ wrapper.in("bs", BomSpec::getBomId, bomIdList);
|
|
|
+ wrapper.eq("bs", BomSpec::getColour, dto.getColour());
|
|
|
+ wrapper.eq("bs", BomSpec::getCode, dto.getBomSpecCode());
|
|
|
+ wrapper.eq("bs", BomSpec::getName, dto.getBomSpecName());
|
|
|
wrapper.orderByDesc("pb", PurchaseBom::getId);
|
|
|
- Page<PurchaseBomVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
|
|
|
+ List<PurchaseBomInfoVo> list = this.baseMapper.getPurchaseBomInfoList(wrapper);
|
|
|
+ Map<Long, List<PurchaseBomInfoVo>> bomSpecIdMap = list.stream().collect(Collectors.groupingBy(PurchaseBomInfoVo::getBomId));
|
|
|
+
|
|
|
+ for (PurchaseBomSelectVo record : records) {
|
|
|
+ record.setPurchaseBomInfoList(bomSpecIdMap.get(record.getBomId()));
|
|
|
+ }
|
|
|
return page;
|
|
|
}
|
|
|
|