package com.qianwen.smartman.modules.cps.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import java.lang.invoke.SerializedLambda;
|
import java.util.List;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import com.qianwen.smartman.common.utils.MessageUtils;
|
import com.qianwen.core.log.exception.ServiceException;
|
import com.qianwen.core.mp.base.BaseServiceImpl;
|
import com.qianwen.core.secure.utils.AuthUtil;
|
import com.qianwen.core.tool.utils.CollectionUtil;
|
import com.qianwen.core.tool.utils.Func;
|
import com.qianwen.smartman.modules.cps.convert.BomVersionConvert;
|
import com.qianwen.smartman.modules.cps.entity.BomVersion;
|
import com.qianwen.smartman.modules.cps.enums.BomVersionStatusEnum;
|
import com.qianwen.smartman.modules.cps.mapper.BomVersionMapper;
|
import com.qianwen.smartman.modules.cps.service.IBomMaterialService;
|
import com.qianwen.smartman.modules.cps.service.IBomVersionService;
|
import com.qianwen.smartman.modules.cps.vo.BomMaterialVO;
|
import com.qianwen.smartman.modules.cps.vo.BomVersionDetailVO;
|
import com.qianwen.smartman.modules.cps.vo.BomVersionUpdateVO;
|
import com.qianwen.smartman.modules.cps.vo.BomVersionVO;
|
import com.qianwen.smartman.modules.system.service.IBasCoderuleService;
|
import com.qianwen.smartman.modules.system.service.ICodeGeneratorService;
|
import com.qianwen.smartman.modules.tpm.enums.MetaTypeEnum;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
@Service
|
/* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/cps/service/impl/BomVersionServiceImpl.class */
|
public class BomVersionServiceImpl extends BaseServiceImpl<BomVersionMapper, BomVersion> implements IBomVersionService {
|
private static final Logger log = LoggerFactory.getLogger(BomVersionServiceImpl.class);
|
private final IBasCoderuleService basCoderuleService;
|
private final ICodeGeneratorService codeGeneratorService;
|
private final IBomMaterialService bomMaterialService;
|
|
public BomVersionServiceImpl(IBasCoderuleService basCoderuleService, ICodeGeneratorService codeGeneratorService, IBomMaterialService bomMaterialService) {
|
this.basCoderuleService = basCoderuleService;
|
this.codeGeneratorService = codeGeneratorService;
|
this.bomMaterialService = bomMaterialService;
|
}
|
|
@Override // org.springblade.modules.cps.service.IBomVersionService
|
@Transactional(rollbackFor = {Exception.class})
|
public BomVersion insert(BomVersionVO bomVersionVO) {
|
BomVersion bomVersion = BomVersionConvert.INSTANCE.convert(bomVersionVO);
|
if (Func.isBlank(bomVersionVO.getVersion())) {
|
String version = this.codeGeneratorService.getGeneratorCode(bomVersion, MetaTypeEnum.BOM_VERSION.getCode());
|
log.info("Bom版本编码规则生成的version:{}", version + " ," + version.length());
|
bomVersion.setVersion(version);
|
}
|
if (checkNameIsExist(bomVersion.getVersion(), null, bomVersion.getProductId())) {
|
throw new ServiceException(MessageUtils.message("cps.production.bom.version.is.exist", new Object[0]));
|
}
|
save(bomVersion);
|
return bomVersion;
|
}
|
|
@Override // org.springblade.modules.cps.service.IBomVersionService
|
public BomVersionVO update(BomVersionUpdateVO bomVersionUpdateVO) {
|
BomVersion bomVersion = (BomVersion) getById(bomVersionUpdateVO.getId());
|
if (BomVersionStatusEnum.FINALIZED.getStatus().equals(bomVersion.getVersionStatus())) {
|
throw new ServiceException(MessageUtils.message("cps.production.bom.version.has.been.finalized.can.not.edit", new Object[0]));
|
}
|
if (!bomVersion.getVersion().equals(bomVersionUpdateVO.getVersion())) {
|
boolean existCodeRule = this.basCoderuleService.isExistCodeRule(MetaTypeEnum.BOM_VERSION.getCode());
|
if (existCodeRule) {
|
throw new ServiceException(MessageUtils.message("cps.production.bom.version.coding.rule.exists.can.not.edit", new Object[0]));
|
}
|
}
|
if (checkNameIsExist(bomVersionUpdateVO.getVersion(), bomVersionUpdateVO.getId(), bomVersion.getProductId())) {
|
throw new ServiceException(MessageUtils.message("cps.production.bom.version.name.is.exist", new Object[0]));
|
}
|
bomVersion.setVersion(bomVersionUpdateVO.getVersion());
|
bomVersion.setDescription(bomVersionUpdateVO.getDescription());
|
updateById(bomVersion);
|
return BomVersionConvert.INSTANCE.convert(bomVersion);
|
}
|
|
@Override // org.springblade.modules.cps.service.IBomVersionService
|
public BomVersionDetailVO getVersionById(Long id) {
|
return ((BomVersionMapper) this.baseMapper).getVersionById(id);
|
}
|
|
@Override // org.springblade.modules.cps.service.IBomVersionService
|
@Transactional(rollbackFor = {Exception.class})
|
public Boolean remove(Long id) {
|
BomVersion bomVersion = (BomVersion) getById(id);
|
if (BomVersionStatusEnum.FINALIZED.getStatus().equals(bomVersion.getVersionStatus())) {
|
throw new ServiceException(MessageUtils.message("cps.production.bom.version.has.been.finalized.can.not.delete", new Object[0]));
|
}
|
removeById(id);
|
this.bomMaterialService.deleteBomMaterial(id);
|
return true;
|
}
|
|
@Override // org.springblade.modules.cps.service.IBomVersionService
|
public Boolean fixVersion(Long id) {
|
List<BomMaterialVO> bomMaterialVOList = this.bomMaterialService.getBomMaterialVOListByBomId(id);
|
if (CollectionUtil.isEmpty(bomMaterialVOList)) {
|
throw new ServiceException(MessageUtils.message("cps.production.bom.version.have.no.bom.material.can.not.fixed", new Object[0]));
|
}
|
|
return Boolean.valueOf(update(Wrappers.<BomVersion>update().lambda().set(BomVersion::getVersionStatus, BomVersionStatusEnum.FINALIZED.getStatus()).eq(BomVersion::getId, id)));
|
/*
|
return Boolean.valueOf(update((Wrapper) ((LambdaUpdateWrapper) Wrappers.update().lambda().set((v0) -> {
|
return v0.getVersionStatus();
|
}, BomVersionStatusEnum.FINALIZED.getStatus())).eq((v0) -> {
|
return v0.getId();
|
}, id)));*/
|
}
|
|
@Override // org.springblade.modules.cps.service.IBomVersionService
|
public Boolean cancelFixVersion(Long id) {
|
return Boolean.valueOf(update(Wrappers.<BomVersion>update().lambda().set(BomVersion::getVersionStatus, BomVersionStatusEnum.DEFAULT.getStatus()).eq(BomVersion::getId, id)));
|
/*
|
return Boolean.valueOf(update((Wrapper) ((LambdaUpdateWrapper) Wrappers.update().lambda().set((v0) -> {
|
return v0.getVersionStatus();
|
}, BomVersionStatusEnum.DEFAULT.getStatus())).eq((v0) -> {
|
return v0.getId();
|
}, id)));
|
*/
|
}
|
|
private boolean checkNameIsExist(String version, Long id, Long productId) {
|
List<BomVersion> bomVersionList = (this.baseMapper.selectList(Wrappers.<BomVersion>query().lambda()
|
.eq(Func.isNotEmpty(AuthUtil.getTenantId()), BomVersion::getTenantId, AuthUtil.getTenantId())
|
.eq(Func.isNotBlank(version), BomVersion::getVersion, version)
|
.eq(Func.isNotEmpty(productId), BomVersion::getProductId, productId)
|
.notIn(Func.isNotEmpty(id), BomVersion::getId, id)));
|
/*
|
List<BomVersion> bomVersionList = ((BomVersionMapper) this.baseMapper).selectList(Wrappers.query().lambda().eq(Func.isNotEmpty(AuthUtil.getTenantId()), (v0) -> {
|
return v0.getTenantId();
|
}, AuthUtil.getTenantId()).eq(Func.isNotBlank(version), (v0) -> {
|
return v0.getVersion();
|
}, version).eq(Func.isNotEmpty(productId), (v0) -> {
|
return v0.getProductId();
|
}, productId).notIn(Func.isNotEmpty(id), (v0) -> {
|
return v0.getId();
|
}, new Object[]{id}))*/
|
return bomVersionList != null && bomVersionList.size() > 0;
|
}
|
}
|