|
@@ -0,0 +1,111 @@
|
|
|
+package com.sd.business.service.common.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.ruoyi.common.core.domain.BaseIdPo;
|
|
|
+import com.ruoyi.common.utils.SecurityUtils;
|
|
|
+import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
+import com.sd.business.entity.common.dto.CommonPackingBomDto;
|
|
|
+import com.sd.business.entity.common.dto.CommonPackingBomSelectDto;
|
|
|
+import com.sd.business.entity.common.po.CommonPackingBom;
|
|
|
+import com.sd.business.entity.common.po.CommonPackingBomDetail;
|
|
|
+import com.sd.business.entity.common.vo.CommonPackingBomDetailVo;
|
|
|
+import com.sd.business.entity.common.vo.CommonPackingBomVo;
|
|
|
+import com.sd.business.mapper.common.CommonPackingBomMapper;
|
|
|
+import com.sd.business.service.bom.BomSpecService;
|
|
|
+import com.sd.business.service.common.CommonPackingBomDetailService;
|
|
|
+import com.sd.business.service.common.CommonPackingBomService;
|
|
|
+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.stream.Collectors;
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * <p>
|
|
|
+ * 常用包材组合 服务实现类
|
|
|
+ * </p>
|
|
|
+ *
|
|
|
+ * @author
|
|
|
+ * @since 2023-10-07
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class CommonPackingBomServiceImpl extends ServiceImpl<CommonPackingBomMapper, CommonPackingBom> implements CommonPackingBomService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private CommonPackingBomDetailService commonPackingBomDetailService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private BomSpecService bomSpecService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<CommonPackingBomVo> getPage(CommonPackingBomSelectDto dto) {
|
|
|
+ IWrapper<CommonPackingBom> wrapper = getWrapper();
|
|
|
+ wrapper.orderByDesc("cpb", CommonPackingBom::getId);
|
|
|
+ wrapper.like("cpb", CommonPackingBom::getName, dto.getName());
|
|
|
+ wrapper.eq("cpb", CommonPackingBom::getDepartmentId, SecurityUtils.getDeptId());
|
|
|
+ Page<CommonPackingBomVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
|
|
|
+ List<CommonPackingBomVo> records = page.getRecords();
|
|
|
+ if (records.isEmpty()) {
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ List<Long> idList = records.stream().map(BaseIdPo::getId).collect(Collectors.toList());
|
|
|
+ List<CommonPackingBomDetail> tempList = commonPackingBomDetailService.list(q -> q.in(CommonPackingBomDetail::getCommonPackingBomId, idList));
|
|
|
+ List<CommonPackingBomDetailVo> list = BeanUtil.copyToList(tempList, CommonPackingBomDetailVo.class);
|
|
|
+
|
|
|
+ bomSpecService.attributeAssign(list, CommonPackingBomDetail::getBomSpecId, (item, bomSpec) -> {
|
|
|
+ item.setBomSpecCode(bomSpec.getCode());
|
|
|
+ item.setBomSpecName(bomSpec.getName());
|
|
|
+ item.setUnitPrice(bomSpec.getInternalSellingPrice());
|
|
|
+ item.setMainImgUrl(bomSpec.getMainImgUrl());
|
|
|
+ });
|
|
|
+
|
|
|
+ Map<Long, List<CommonPackingBomDetailVo>> map = list.stream().collect(Collectors.groupingBy(CommonPackingBomDetail::getCommonPackingBomId));
|
|
|
+
|
|
|
+ for (CommonPackingBomVo record : records) {
|
|
|
+ record.setCommonPackingBomDetailList(map.getOrDefault(record.getId(), Collections.emptyList()));
|
|
|
+ }
|
|
|
+
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Override
|
|
|
+ public void add(CommonPackingBomDto commonPackingBomDto) {
|
|
|
+ commonPackingBomDto.setDepartmentId(SecurityUtils.getDeptId());
|
|
|
+ this.save(commonPackingBomDto);
|
|
|
+ List<CommonPackingBomDetail> commonPackingBomDetailList = commonPackingBomDto.getCommonPackingBomDetailList();
|
|
|
+ for (CommonPackingBomDetail commonPackingBomDetail : commonPackingBomDetailList) {
|
|
|
+ commonPackingBomDetail.setCommonPackingBomId(commonPackingBomDto.getId());
|
|
|
+ }
|
|
|
+ commonPackingBomDetailService.saveBatch(commonPackingBomDetailList);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Override
|
|
|
+ public void edit(CommonPackingBomDto commonPackingBomDto) {
|
|
|
+ this.updateById(commonPackingBomDto);
|
|
|
+ List<CommonPackingBomDetail> commonPackingBomDetailList = commonPackingBomDto.getCommonPackingBomDetailList();
|
|
|
+ for (CommonPackingBomDetail commonPackingBomDetail : commonPackingBomDetailList) {
|
|
|
+ commonPackingBomDetail.setCommonPackingBomId(commonPackingBomDto.getId());
|
|
|
+ }
|
|
|
+ commonPackingBomDetailService.editLinked(
|
|
|
+ commonPackingBomDetailList,
|
|
|
+ CommonPackingBomDetail::getCommonPackingBomId,
|
|
|
+ commonPackingBomDto.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Override
|
|
|
+ public void delete(Long id) {
|
|
|
+ this.removeById(id);
|
|
|
+ commonPackingBomDetailService.remove(q -> q.eq(CommonPackingBomDetail::getCommonPackingBomId, id));
|
|
|
+ }
|
|
|
+
|
|
|
+}
|