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 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 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.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.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 bomVersionList = (this.baseMapper.selectList(Wrappers.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 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; } }