package com.ruoyi.quality.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.basic.mapper.ProductMapper; import com.ruoyi.basic.mapper.ProductModelMapper; import com.ruoyi.basic.pojo.Product; import com.ruoyi.basic.pojo.ProductModel; import com.ruoyi.common.enums.RawMaterialCheckResult; import com.ruoyi.common.enums.RawMaterialCheckType; import com.ruoyi.common.enums.RawMaterialInspectState; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.inspectiontask.mapper.QualityInspectItemMapper; import com.ruoyi.inspectiontask.pojo.QualityInspectItem; import com.ruoyi.quality.dto.RawMaterialDto; import com.ruoyi.quality.mapper.RawMaterialMapper; import com.ruoyi.quality.pojo.RawMaterial; import com.ruoyi.quality.pojo.RawMaterialQualityInspectItem; import com.ruoyi.quality.service.RawMaterialQualityInspectItemService; import com.ruoyi.quality.service.RawMaterialService; import lombok.AllArgsConstructor; import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** *

* 服务实现类 *

* * @author 芯导软件(江苏)有限公司 * @since 2026-03-13 02:44:09 */ @AllArgsConstructor @Service public class RawMaterialServiceImpl extends ServiceImpl implements RawMaterialService { private RawMaterialMapper rawMaterialMapper; private RawMaterialQualityInspectItemService rawMaterialQualityInspectItemService; private QualityInspectItemMapper qualityInspectItemMapper; private ProductModelMapper productModelMapper; private ProductMapper productMapper; @Override public IPage listPage(Page page, RawMaterialDto rawMaterialDto) { IPage pageRes = rawMaterialMapper.listPage(page, rawMaterialDto); List rawMaterials = pageRes.getRecords(); Map productModelMap = new HashMap<>(); Map productMap = new HashMap<>(); if (CollectionUtils.isNotEmpty(rawMaterials)) { List productModelIds = rawMaterials.stream().map(RawMaterialDto::getProductModelId).collect(Collectors.toList()); List productModels = productModelMapper.selectList(new LambdaQueryWrapper() .in(ProductModel::getId, productModelIds)); productModelMap = productModels.stream().collect(Collectors.toMap(ProductModel::getId, productModel -> productModel)); List productIds = productModels.stream().map(ProductModel::getProductId).collect(Collectors.toList()); List products = productMapper.selectList(new LambdaQueryWrapper() .in(Product::getId, productIds)); productMap = products.stream().collect(Collectors.toMap(Product::getId, product -> product)); } for (RawMaterialDto rawMaterial : pageRes.getRecords()) { rawMaterial.setCheckTypeText(RawMaterialCheckType.fromValue(rawMaterial.getCheckType()) == null ? "" : RawMaterialCheckType.fromValue(rawMaterial.getCheckType()).getValue()); rawMaterial.setCheckResultText(RawMaterialCheckResult.fromValue(rawMaterial.getCheckResult()) == null ? "" : RawMaterialCheckResult.fromValue(rawMaterial.getCheckResult()).getValue()); rawMaterial.setInspectStateText(RawMaterialInspectState.fromValue(rawMaterial.getInspectState()) == null ? "" : RawMaterialInspectState.fromValue(rawMaterial.getInspectState()).getValue()); rawMaterial.setProductName(productMap.get(productModelMap.get(rawMaterial.getProductModelId()).getProductId()).getProductName()); rawMaterial.setModel(productModelMap.get(rawMaterial.getProductModelId()).getModel()); rawMaterial.setProductId(productModelMap.get(rawMaterial.getProductModelId()).getProductId()); } return pageRes; } @Override public RawMaterialDto detail(Long id) { RawMaterial rawMaterial = rawMaterialMapper.selectById(id); RawMaterialDto rawMaterialDto = new RawMaterialDto(); BeanUtils.copyBeanProp(rawMaterialDto, rawMaterial); // 获取检测项关联关系 List rawQualityList = rawMaterialQualityInspectItemService.list(new LambdaQueryWrapper() .eq(RawMaterialQualityInspectItem::getRawMaterialId, id)); Map map = rawQualityList.stream().collect(Collectors.toMap(RawMaterialQualityInspectItem::getQualityInspectItemId, qualityInspectItem -> qualityInspectItem)); // 获取检验项目 List qualityInspectItems = qualityInspectItemMapper.selectList(new LambdaQueryWrapper() .in(QualityInspectItem::getId, rawQualityList.stream().map(RawMaterialQualityInspectItem::getQualityInspectItemId).collect(Collectors.toList()))); // 替换化验值 qualityInspectItems.forEach(qualityInspectItem -> { qualityInspectItem.setTestValue(map.get(qualityInspectItem.getId()).getTestValue()); }); rawMaterialDto.setQualityInspectItem(qualityInspectItems); // 查询产品id ProductModel productModel = productModelMapper.selectById(rawMaterialDto.getProductModelId()); rawMaterialDto.setProductId(productModel.getProductId()); rawMaterialDto.setUnit(productModel.getUnit()); return rawMaterialDto; } @Override @Transactional(rollbackFor = Exception.class) public boolean add(RawMaterialDto rawMaterialDto) { rawMaterialDto.setInspectState(RawMaterialInspectState.RawMaterialInspectStateUnsubmitted.getCode()); // 新增原料 int i = rawMaterialMapper.insert(rawMaterialDto); // 新增检测项关联关系 if (CollectionUtils.isNotEmpty(rawMaterialDto.getQualityInspectItem())) { List rawMaterialQualityInspectItems = rawMaterialDto.getQualityInspectItem().stream() .map(qualityInspectItem -> { RawMaterialQualityInspectItem item = new RawMaterialQualityInspectItem(); item.setRawMaterialId(rawMaterialDto.getId()); item.setQualityInspectItemId(qualityInspectItem.getId()); item.setTestValue(qualityInspectItem.getTestValue()); return item; }) .collect(Collectors.toList()); rawMaterialQualityInspectItemService.saveBatch(rawMaterialQualityInspectItems); } return i > 0; } @Override public boolean update(RawMaterialDto rawMaterialDto) { // 删除所有关联项目重新加载 rawMaterialQualityInspectItemService.remove(new LambdaQueryWrapper() .eq(RawMaterialQualityInspectItem::getRawMaterialId, rawMaterialDto.getId())); int i = rawMaterialMapper.updateById(rawMaterialDto); // 新增检测项关联关系 if (CollectionUtils.isNotEmpty(rawMaterialDto.getQualityInspectItem())) { List rawMaterialQualityInspectItems = rawMaterialDto.getQualityInspectItem().stream() .map(qualityInspectItem -> { RawMaterialQualityInspectItem item = new RawMaterialQualityInspectItem(); item.setRawMaterialId(rawMaterialDto.getId()); item.setQualityInspectItemId(qualityInspectItem.getId()); item.setTestValue(qualityInspectItem.getTestValue()); return item; }) .collect(Collectors.toList()); rawMaterialQualityInspectItemService.saveBatch(rawMaterialQualityInspectItems); } return i > 0; } }