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<BomProcessMapper, BomProcess> implements IBomProcessService {
|
@Autowired
|
@Lazy
|
private IBomVersionService bomVersionService;
|
|
@Override
|
public Boolean saveBomProcess(Long bomId, Long bomMaterialId, List<BomProcessVO> bomProcessVOList) {
|
List<Long> 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<BomProcess> 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<Long> bomMaterialIdList) {
|
return Boolean.valueOf(remove(Wrappers.<BomProcess>update().lambda()
|
.in(BomProcess::getBomMaterialId, bomMaterialIdList)));
|
}
|
|
@Override
|
public List<BomProcessDetailVO> getBomProcessDetailVOList(Map<String, Object> params) {
|
return ((BomProcessMapper) this.baseMapper).getBomProcessDetailVOList(params);
|
}
|
|
@Override
|
public IPage<BomProcessDetailVO> getBomProcessDetailVOPage(IPage<BomProcessDetailVO> page, Map<String, Object> 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()));
|
}
|
}
|