package com.chinaztt.mes.quality.service.impl; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; import com.chinaztt.mes.common.numgen.NumberGenerator; import com.chinaztt.mes.quality.entity.QualityTestApplyRule; import com.chinaztt.mes.quality.mapper.QualityTestApplyRuleMapper; import com.chinaztt.mes.quality.service.QualityTestApplyRuleService; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; /** * @Description : 检测申请规则 * @ClassName : QualityTestApplyRuleServiceImpl * @Author : sll * @Date: 2022-08-21 12:00 */ @Service @AllArgsConstructor @Transactional(rollbackFor = Exception.class) public class QualityTestApplyRuleServiceImpl extends ServiceImpl implements QualityTestApplyRuleService{ private NumberGenerator qualityTestApplyRuleNumberGenerator; /** * 检验编号 * @param qualityTestApplyRule */ private void checkRuleNo(QualityTestApplyRule qualityTestApplyRule) { if (StringUtils.isBlank(qualityTestApplyRule.getRuleNo())) { // 1. 自动生成编号 qualityTestApplyRule.setRuleNo(qualityTestApplyRuleNumberGenerator.generateNumberWithPrefix(QualityTestApplyRule.DIGIT, QualityTestApplyRule.PREFIX, QualityTestApplyRule::getRuleNo)); } else { // 2.判断是否重复 List ruleNos = baseMapper.selectList(Wrappers.query().lambda().eq(QualityTestApplyRule::getRuleNo, qualityTestApplyRule.getRuleNo()).ne(QualityTestApplyRule::getId, qualityTestApplyRule.getId())); if (CollectionUtil.isNotEmpty(ruleNos)) { throw new RuntimeException("编号重复"); } } } private void checkInspectionTypeReUse(QualityTestApplyRule qualityTestApplyRule){ if(null == qualityTestApplyRule.getId() || qualityTestApplyRule.getId() == 0){ //新增 List qualityTestApplyRuleList = baseMapper.selectList(Wrappers.lambdaQuery() .eq(QualityTestApplyRule::getOperationNo,qualityTestApplyRule.getOperationNo()) .eq(QualityTestApplyRule::getInspectionType,qualityTestApplyRule.getInspectionType())); if(CollectionUtils.isNotEmpty(qualityTestApplyRuleList)){ throw new RuntimeException("工序名称 = 【" + qualityTestApplyRule.getOperationName() + "】 -> 检测类型 = 【" + qualityTestApplyRule.getInspectionType() + "】配置已存在"); } }else{ //修改 List qualityTestApplyRuleList = baseMapper.selectList(Wrappers.lambdaQuery() .eq(QualityTestApplyRule::getOperationNo,qualityTestApplyRule.getOperationNo()) .eq(QualityTestApplyRule::getInspectionType,qualityTestApplyRule.getInspectionType()) .ne(QualityTestApplyRule::getId,qualityTestApplyRule.getId())); if(CollectionUtils.isNotEmpty(qualityTestApplyRuleList)){ throw new RuntimeException("工序名称 = 【" + qualityTestApplyRule.getOperationName() + "】 -> 检测类型 = 【" + qualityTestApplyRule.getInspectionType() + "】配置已存在"); } } } public void isNeedFieldValueEmpty(QualityTestApplyRule qualityTestApplyRule){ if(null == qualityTestApplyRule){ throw new RuntimeException("数据请求对象为空"); }else{ if(StringUtils.isBlank(qualityTestApplyRule.getRuleName()) || StringUtils.isBlank(qualityTestApplyRule.getInspectionType()) || StringUtils.isBlank(qualityTestApplyRule.getOperationNo()) || StringUtils.isBlank(qualityTestApplyRule.getOperationName())){ throw new RuntimeException("必要字段值不可为空"); } } } @Override public boolean save(QualityTestApplyRule qualityTestApplyRule){ isNeedFieldValueEmpty(qualityTestApplyRule); checkRuleNo(qualityTestApplyRule); checkInspectionTypeReUse(qualityTestApplyRule); return SqlHelper.retBool(baseMapper.insert(qualityTestApplyRule)); } @Override public boolean updateById(QualityTestApplyRule qualityTestApplyRule) { isNeedFieldValueEmpty(qualityTestApplyRule); checkRuleNo(qualityTestApplyRule); checkInspectionTypeReUse(qualityTestApplyRule); return SqlHelper.retBool(baseMapper.updateById(qualityTestApplyRule)); } }