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.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.quality.mapper.QualityInspectMapper; import com.ruoyi.quality.mapper.QualityInspectParamMapper; import com.ruoyi.quality.mapper.QualityTestStandardMapper; import com.ruoyi.quality.pojo.QualityInspect; import com.ruoyi.quality.pojo.QualityInspectParam; import com.ruoyi.quality.pojo.QualityTestStandard; import com.ruoyi.quality.service.IQualityInspectParamService; import com.ruoyi.quality.service.IQualityInspectService; import com.ruoyi.staff.mapper.StaffJoinLeaveRecordMapper; import com.ruoyi.staff.mapper.StaffOnJobMapper; import com.ruoyi.staff.pojo.StaffJoinLeaveRecord; import com.ruoyi.staff.pojo.StaffOnJob; import com.ruoyi.staff.service.IStaffOnJobService; import lombok.AllArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.stream.Collectors; @AllArgsConstructor @Service @Transactional(rollbackFor = Exception.class) public class QualityInspectServiceImpl extends ServiceImpl implements IQualityInspectService { private QualityInspectMapper qualityInspectMapper; private IQualityInspectParamService qualityInspectParamService; private QualityTestStandardMapper qualityTestStandardMapper; @Override public int add(QualityInspect qualityInspect) { String[] ignoreProperties = {"id"};//排除id属性 //根据产品id查询指标维护对应新增检验参数 List qualityTestStandards = qualityTestStandardMapper.selectList(Wrappers.lambdaQuery() .eq(QualityTestStandard::getProductId, qualityInspect.getProductId())); if (qualityTestStandards.size()>0){ qualityInspectMapper.insert(qualityInspect); List qualityInspectParams = qualityTestStandards.stream().map(qualityTestStandard -> { QualityInspectParam qualityInspectParam = new QualityInspectParam(); BeanUtils.copyProperties(qualityTestStandard, qualityInspectParam,ignoreProperties); qualityInspectParam.setInspectId(qualityInspect.getId()); return qualityInspectParam; }).collect(Collectors.toList()); qualityInspectParamService.saveBatch(qualityInspectParams); }else{ throw new BaseException("该产品没有维护检验指标,请检查!!!!!!!!"); } return 0; } @Override public int updateQualityInspect(QualityInspect qualityInspect) { String[] ignoreProperties = {"id"};//排除id属性 //先删除所有检验参数再新增 qualityInspectParamService.remove(Wrappers.lambdaQuery() .eq(QualityInspectParam::getInspectId,qualityInspect.getId())); //根据产品id查询指标维护对应新增检验参数 List qualityTestStandards = qualityTestStandardMapper.selectList(Wrappers.lambdaQuery() .eq(QualityTestStandard::getProductId, qualityInspect.getProductId())); if (qualityTestStandards.size()>0){ List qualityInspectParams = qualityTestStandards.stream().map(qualityTestStandard -> { QualityInspectParam qualityInspectParam = new QualityInspectParam(); BeanUtils.copyProperties(qualityTestStandard, qualityInspectParam,ignoreProperties); qualityInspectParam.setInspectId(qualityInspect.getId()); return qualityInspectParam; }).collect(Collectors.toList()); qualityInspectParamService.saveBatch(qualityInspectParams); }else{ throw new BaseException("该产品没有维护检验指标,请检查!!!!!!!!"); } return qualityInspectMapper.updateById(qualityInspect); } @Override public IPage qualityInspectListPage(Page page, QualityInspect qualityInspect) { return qualityInspectMapper.qualityInspectListPage(page,qualityInspect); } @Override public void qualityInspectExport(HttpServletResponse response, QualityInspect qualityInspect) { List qualityInspects =qualityInspectMapper.qualityInspectExport(qualityInspect); ExcelUtil util = new ExcelUtil(QualityInspect.class); switch (qualityInspect.getInspectType()){ case 0: util.exportExcel(response, qualityInspects, "原材料检验导出"); break; case 1: util.exportExcel(response, qualityInspects, "过程检验导出"); break; case 2: util.exportExcel(response, qualityInspects, "出厂检验导出"); break; } } }