package com.ruoyi.quality.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.DictUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.quality.mapper.QualityInspectMapper; import com.ruoyi.quality.mapper.QualityTestStandardBindingMapper; import com.ruoyi.quality.mapper.QualityTestStandardParamMapper; import com.ruoyi.quality.pojo.QualityInspect; import com.ruoyi.quality.pojo.QualityTestStandard; import com.ruoyi.quality.mapper.QualityTestStandardMapper; import com.ruoyi.quality.pojo.QualityTestStandardParam; import com.ruoyi.quality.service.IQualityTestStandardService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.quality.service.QualityTestStandardParamService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; /** *

* 检测标准主表 服务实现类 *

* * @author 芯导软件(江苏)有限公司 * @since 2026-01-13 03:40:24 */ @Service public class QualityTestStandardServiceImpl extends ServiceImpl implements IQualityTestStandardService { @Autowired private QualityTestStandardMapper qualityTestStandardMapper; @Autowired private QualityTestStandardParamMapper qualityTestStandardParamMapper; @Autowired private QualityTestStandardParamService qualityTestStandardParamService; @Autowired private QualityTestStandardBindingMapper qualityTestStandardBindingMapper; @Autowired private QualityInspectMapper qualityInspectMapper; @Override public IPage qualityTestStandardListPage(Page page, QualityTestStandard qualityTestStandard) { return qualityTestStandardMapper.qualityTestStandardListPage(page, qualityTestStandard); } @Override public int copyParam(QualityTestStandard qualityTestStandard) { //先查询被复制的检测标准的详情参数 List oldQualityTestStandardParams = qualityTestStandardParamMapper.selectList(Wrappers.lambdaQuery().eq(QualityTestStandardParam::getTestStandardId, qualityTestStandard.getId())); QualityTestStandard testStandard = qualityTestStandardMapper.selectById(qualityTestStandard.getId()); testStandard.setId(null); testStandard.setStandardNo(null); qualityTestStandardMapper.insert(testStandard); List newQualityTestStandardParams = oldQualityTestStandardParams.stream().map(oldQualityTestStandardParam -> { oldQualityTestStandardParam.setTestStandardId(testStandard.getId()); oldQualityTestStandardParam.setId(null); return oldQualityTestStandardParam; }).collect(Collectors.toList()); qualityTestStandardParamService.saveBatch(newQualityTestStandardParams); return 0; } @Override public List getQualityTestStandardByProductId(Long productId, Integer inspectType, String process) { return qualityTestStandardMapper.getQualityTestStandardByProductId(productId, inspectType, process); } @Override public int delQualityTestStandard(List ids) { //先查询该检测标准是否有被引用如果被引用就不允许删除 List qualityInspects = qualityInspectMapper.selectList(Wrappers.lambdaQuery().in(QualityInspect::getTestStandardId, ids)); if (qualityInspects.size() > 0) { throw new RuntimeException("该检测标准有被引用不允许删除"); } return qualityTestStandardMapper.deleteBatchIds(ids); } @Override @Transactional(rollbackFor = Exception.class) public boolean saveWithProcessTypeValidate(QualityTestStandard qualityTestStandard) { validateProcessType(qualityTestStandard); return this.save(qualityTestStandard); } @Override public boolean updateWithProcessTypeValidate(QualityTestStandard qualityTestStandard) { validateProcessType(qualityTestStandard); return this.updateById(qualityTestStandard); } private void validateProcessType(QualityTestStandard qualityTestStandard) { if (qualityTestStandard == null || qualityTestStandard.getProcessType() == null) { return; } String dictType = "product_process_type"; String input = String.valueOf(qualityTestStandard.getProcessType()); String dictValue = DictUtils.getDictValue(dictType, input); if (StringUtils.isNotEmpty(dictValue)) { qualityTestStandard.setProcessType(Integer.valueOf(dictValue)); return; } String dictValues = DictUtils.getDictValues(dictType); if (StringUtils.isNotEmpty(dictValues)) { List valueList = Arrays.asList(dictValues.split(DictUtils.SEPARATOR)); if (valueList.contains(input)) { return; } } throw new ServiceException("工序类型【" + input + "】不存在,请填写正确的类型:" + DictUtils.getDictLabels(dictType)); } }