package com.qianwen.smartman.modules.smis.service.impl; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.qianwen.core.log.exception.ServiceException; import com.qianwen.core.mp.base.BaseServiceImpl; import com.qianwen.smartman.common.utils.MessageUtils; import com.qianwen.smartman.modules.smis.convert.BomProcessConvert; import com.qianwen.smartman.modules.smis.entity.BomProcess; import com.qianwen.smartman.modules.smis.entity.BomVersion; import com.qianwen.smartman.modules.smis.enums.BomVersionStatusEnum; import com.qianwen.smartman.modules.smis.mapper.BomProcessMapper; import com.qianwen.smartman.modules.smis.service.IBomProcessService; import com.qianwen.smartman.modules.smis.service.IBomVersionService; import com.qianwen.smartman.modules.smis.vo.BomProcessAddVO; import com.qianwen.smartman.modules.smis.vo.BomProcessDeleteVO; import com.qianwen.smartman.modules.smis.vo.BomProcessDetailVO; import com.qianwen.smartman.modules.smis.vo.BomProcessVO; @Service public class BomProcessServiceImpl extends BaseServiceImpl implements IBomProcessService { @Autowired @Lazy private IBomVersionService bomVersionService; @Override public Boolean saveBomProcess(Long bomId, Long bomMaterialId, List bomProcessVOList) { List processIdList = bomProcessVOList.stream().map((v0) -> { return v0.getProcessId(); }).distinct().collect(Collectors.toList()); if (processIdList.size() != bomProcessVOList.size()) { throw new ServiceException(MessageUtils.message("cps.production.bom.material.process.is.repeat", new Object[0])); } List list = bomProcessVOList.stream().map(i -> { BomProcess bomProcess = new BomProcess(); bomProcess.setBomMaterialId(bomMaterialId); bomProcess.setMolecule(i.getMolecule()); bomProcess.setDenominator(i.getDenominator()); bomProcess.setProcessId(i.getProcessId()); bomProcess.setLoss(i.getLoss()); return bomProcess; }).collect(Collectors.toList()); return Boolean.valueOf(saveBatch(list)); } @Override public Boolean deleteBomProcess(List bomMaterialIdList) { return Boolean.valueOf(remove(Wrappers.update().lambda() .in(BomProcess::getBomMaterialId, bomMaterialIdList))); } @Override public List getBomProcessDetailVOList(Map params) { return ((BomProcessMapper) this.baseMapper).getBomProcessDetailVOList(params); } @Override public IPage getBomProcessDetailVOPage(IPage page, Map params) { return page.setRecords(((BomProcessMapper) this.baseMapper).getBomProcessDetailVOPage(page, params)); } @Override public BomProcessVO addBomProcess(BomProcessAddVO bomProcessAddVO) { BomVersion bomVersion = (BomVersion) this.bomVersionService.getById(bomProcessAddVO.getBomId()); if (BomVersionStatusEnum.FINALIZED.getStatus().equals(bomVersion.getVersionStatus())) { throw new ServiceException(MessageUtils.message("cps.production.bom.version.has.been.finalized.can.not.add.bom.process", new Object[0])); } BomProcess bomProcess = new BomProcess(); bomProcess.setProcessId(bomProcessAddVO.getProcessId()); bomProcess.setBomMaterialId(bomProcessAddVO.getBomMaterialId()); bomProcess.setLoss(bomProcessAddVO.getLoss()); bomProcess.setDenominator(bomProcessAddVO.getDenominator()); bomProcess.setMolecule(bomProcessAddVO.getMolecule()); save(bomProcess); return BomProcessConvert.INSTANCE.convert(bomProcess); } @Override public Boolean removeBomProcessById(BomProcessDeleteVO bomProcessDeleteVO) { BomVersion bomVersion = (BomVersion) this.bomVersionService.getById(bomProcessDeleteVO.getBomId()); if (BomVersionStatusEnum.FINALIZED.getStatus().equals(bomVersion.getVersionStatus())) { throw new ServiceException(MessageUtils.message("cps.production.bom.version.has.been.finalized.can.not.delete.bom.process", new Object[0])); } return Boolean.valueOf(removeById(bomProcessDeleteVO.getId())); } }