package com.chinaztt.mes.plan.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.BeanUtils; 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.chinaztt.mes.plan.dto.ManufacturingOrderDTO; import com.chinaztt.mes.plan.dto.MoTestStandardDTO; import com.chinaztt.mes.plan.entity.MoRoutingOperation; import com.chinaztt.mes.plan.entity.MoSamplingRule; import com.chinaztt.mes.plan.entity.MoTestStandard; import com.chinaztt.mes.plan.entity.MoTestStandardParam; import com.chinaztt.mes.plan.mapper.MoRoutingOperationMapper; import com.chinaztt.mes.plan.mapper.MoSamplingRuleMapper; import com.chinaztt.mes.plan.mapper.MoTestStandardMapper; import com.chinaztt.mes.plan.mapper.MoTestStandardParamMapper; import com.chinaztt.mes.plan.service.MoTestStandardService; import com.chinaztt.mes.quality.entity.SamplingRule; import com.chinaztt.mes.quality.mapper.SamplingRuleMapper; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; /** * 制造订单-检测标准主表 * * @author cxf * @date 2021-04-27 13:27:47 */ @Service @Transactional(rollbackFor = Exception.class) @AllArgsConstructor public class MoTestStandardServiceImpl extends ServiceImpl implements MoTestStandardService { private MoTestStandardParamMapper moTestStandardParamMapper; private MoRoutingOperationMapper moRoutingOperationMapper; private MoSamplingRuleMapper moSamplingRuleMapper; private SamplingRuleMapper samplingRuleMapper; @Override public List addRoutingTestStandard(ManufacturingOrderDTO manufacturingOrderDTO) { MoRoutingOperation moRoutingOperation = moRoutingOperationMapper.selectById(manufacturingOrderDTO.getMoRoutingOperationId()); List moTestStandardList = manufacturingOrderDTO.getMoTestStandardList(); if (CollectionUtil.isNotEmpty(moTestStandardList)) { moTestStandardList.stream().forEach(moTestStandard -> { Long testStandardId = moTestStandard.getId(); moTestStandard.setMoRoutingOperationId(moRoutingOperation.getId()); moTestStandard.setRoutingOperationId(moRoutingOperation.getTechnologyRoutingOperationId()); moTestStandard.setMoId(manufacturingOrderDTO.getId()); // moTestStandard.setJudgeFormula(URLDecoder.decode(moTestStandard.getJudgeFormula(), Charset.forName("UTF-8"))); if(null != moTestStandard.getJudgeFormula()){ moTestStandard.setJudgeFormula(moTestStandard.getJudgeFormula().replaceAll("&", "&")); } baseMapper.insert(moTestStandard); // 备份检测标准参数 baseMapper.copyParamByTestStandardId(moTestStandard.getId(), testStandardId); // 生成抽检记录 Integer samplingRuleNum = moSamplingRuleMapper.selectCount(Wrappers.lambdaQuery() .eq(MoSamplingRule::getMoId, manufacturingOrderDTO.getId()) .eq(MoSamplingRule::getMoRoutingOperationId, moRoutingOperation.getId()) .eq(MoSamplingRule::getApplyType, moTestStandard.getInspectionType())); if (samplingRuleNum == 0) { SamplingRule samplingRule = samplingRuleMapper.selectOne(Wrappers.lambdaQuery() .eq(SamplingRule::getSamplingOperationId, moRoutingOperation.getOperationId()) .eq(SamplingRule::getApplyType, moTestStandard.getInspectionType())); MoSamplingRule moSamplingRule = BeanUtil.copyProperties(samplingRule, MoSamplingRule.class); moSamplingRule.setMoId(manufacturingOrderDTO.getId()); moSamplingRule.setMoRoutingOperationId(moRoutingOperation.getId()); moSamplingRuleMapper.insert(moSamplingRule); } }); } return moTestStandardList; } @Override public List getRoutingTestStandardList(ManufacturingOrderDTO manufacturingOrderDTO) { return baseMapper.selectList(Wrappers.lambdaQuery() .eq(MoTestStandard::getMoRoutingOperationId, manufacturingOrderDTO.getMoRoutingOperationId()) .eq(MoTestStandard::getMoId, manufacturingOrderDTO.getId()).orderByAsc(MoTestStandard::getId)); } @Override public boolean deleteRoutingTestStandard(Long id) { baseMapper.deleteById(id); moTestStandardParamMapper.delete(Wrappers.lambdaQuery().eq(MoTestStandardParam::getMoTestStandardId, id)); return true; } @Override public IPage getManufacturingOrderStand(Page page, QueryWrapper moTestStandardDTO) { return baseMapper.getManufacturingOrderStand(page, moTestStandardDTO); } }