From d2570148ec3884de3af721bd99c4b7acbbdee075 Mon Sep 17 00:00:00 2001 From: 田源 <lastanimals@163.com> Date: 星期二, 09 五月 2023 17:07:26 +0800 Subject: [PATCH] 前端代码提交 --- Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/AttributeServiceImpl.java | 230 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 230 insertions(+), 0 deletions(-) diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/AttributeServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/AttributeServiceImpl.java new file mode 100644 index 0000000..a2deddc --- /dev/null +++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/AttributeServiceImpl.java @@ -0,0 +1,230 @@ +package com.vci.ubcs.omd.service.impl; + +import com.alibaba.cloud.commons.lang.StringUtils; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.vci.ubcs.omd.constant.OmdCacheConstant; +import com.vci.ubcs.omd.dto.AttributeDTO; +import com.vci.ubcs.omd.dto.BtmTypeLinkAttributesDTO; +import com.vci.ubcs.omd.entity.Attribute; +import com.vci.ubcs.omd.mapper.AttributeMapper; +import com.vci.ubcs.omd.service.IAttributeService; +import com.vci.ubcs.omd.vo.AttributeVO; +import com.vci.ubcs.omd.wrapper.AttributeWrapper; +import com.vci.ubcs.starter.exception.VciBaseException; +import com.vci.ubcs.starter.web.constant.OmdRegExpConstant; +import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum; +import com.vci.ubcs.starter.web.util.VciBaseUtil; +import org.springblade.core.cache.utils.CacheUtil; +import org.springblade.core.log.exception.ServiceException; +import org.springblade.core.tool.constant.BladeConstant; +import org.springblade.core.tool.utils.BeanUtil; +import org.springblade.core.tool.utils.Func; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import javax.validation.constraints.NotEmpty; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + + +/** + * Description: 鍏冩暟鎹�(灞炴��)鐨勬湇鍔� + * + * @author LiHang + * @date 2023/4/3 + */ +@Service +public class AttributeServiceImpl extends ServiceImpl<AttributeMapper, Attribute> implements IAttributeService { + + @Override + public boolean deleteLogic(@NotEmpty List<Long> ids) { + return false; + } + + @Override + public boolean changeStatus(@NotEmpty List<Long> ids, Integer status) { + return false; + } + + /** + * 鑾峰彇鍏冩暟鎹鎯� + * + * @param id 涓婚敭 + * @return 鍏冩暟鎹樉绀哄璞� + */ + @Override + public AttributeVO getAttributeDetail(Long id) { + Func.requireNotNull(id,"涓婚敭涓嶈兘涓虹┖"); + return AttributeWrapper.build().entityVO(baseMapper.selectByPrimaryKey(id)); + } + + /** + * 鏂板鎴栦慨鏀� + * + * @param dto 椤甸潰浼犺緭瀵硅薄 + * @return 鎵ц缁撴灉 + */ + @Override + public boolean submit(AttributeDTO dto) { + LambdaQueryWrapper<Attribute> wrapper = Wrappers.<Attribute>query().lambda().eq(Attribute::getKey, dto.getKey()); + Long count = baseMapper.selectCount((Func.isEmpty(dto.getId())) ? wrapper : wrapper.notIn(Attribute::getId, dto.getId())); + if (count > 0L) { + throw new ServiceException("灞炴�у悕宸插瓨鍦�!"); + } + dto.setIsDeleted(BladeConstant.DB_NOT_DELETED); + Attribute omdAttribute = BeanUtil.copy(dto, Attribute.class); + CacheUtil.clear(OmdCacheConstant.ATTR_CACHE); + return saveOrUpdate(omdAttribute); + } + + /** + * 鍒犻櫎 + * + * @param ids 涓婚敭闆嗗悎 + * @return 鎵ц缁撴灉 + */ + @Override + public boolean removeAttrs(String ids) { + List<Long> idList = Func.toLongList(ids); + return !deleteLogic(idList) && removeByIds(idList); + } + + /** + * 鏌ョ湅搴旂敤鑼冨洿 + * + * @param id 涓婚敭 + * @return 鏌ヨ宸插簲鐢ㄧ殑涓氬姟绫诲瀷鍚嶇О + */ + @Override + public List<String> applyRange(Long id) { + return new ArrayList<>(); + } + + /** + * 妫�鏌ュ睘鎬ф槸鍚﹀瓨鍦� + * + * @param keyCollections 鑻辨枃鍚嶇О闆嗗悎 + * @return true琛ㄧず閮藉瓨鍦紝false琛ㄧず涓嶅瓨鍦紝涓嶅瓨鍦ㄧ殑鏃跺�欎細鎶涘嚭寮傚父 + * @throws VciBaseException 涓嶅瓨鍦ㄧ殑鏃跺�欎細鎶涘嚭寮傚父 + */ + @Override + public boolean checkAttributeExists(Collection<String> keyCollections) throws VciBaseException { + List<AttributeVO> existAttributeVOList = listAttributeByKeyCollection(keyCollections); + if (CollectionUtils.isEmpty(existAttributeVOList)) { + throw new VciBaseException("浣跨敤鐨勫睘鎬ч兘鍦ㄧ郴缁熶腑涓嶅瓨鍦紝璇峰厛鏌ヨ瘉"); + } else { + Set<String> existAttributeIdSet = (existAttributeVOList.stream().collect(Collectors.toMap(s -> s.getKey().toLowerCase().trim(), t -> t))).keySet(); + keyCollections.stream().forEach(s -> { + if (!existAttributeIdSet.contains(s)) { + throw new VciBaseException("浣跨敤鐨勫睘鎬0}鍦ㄧ郴缁熶腑涓嶅瓨鍦紝璇峰厛鏌ヨ瘉", new Object[]{s}); + } + }); + } + return true; + } + + + /** + * 鏍规嵁鑻辨枃鍚嶇О闆嗗悎鎵归噺鑾峰彇灞炴�у璞� + * + * @param attributeIdCollection 鑻辨枃鍚嶇О闆嗗悎 + * @return 灞炴�у璞″垪琛紝濡傛灉鏈変笉瀛樺湪鐨勪笉浼氳繑鍥烇紝鍏ㄩ儴涓嶅瓨鍦ㄧ殑鍒欒繑鍥炵┖鍒楄〃 + * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇� + */ + @Override + public List<AttributeVO> listAttributeByKeyCollection(Collection<String> attributeIdCollection) throws VciBaseException { + if(!CollectionUtils.isEmpty(attributeIdCollection)){ + List<Attribute> attributeDOList = listAttributeByKeyCollectionDO(attributeIdCollection); + if(!CollectionUtils.isEmpty(attributeDOList)) { + return AttributeWrapper.build().listEntityVO(attributeDOList); + } + } + return null; + } + + /** + * 鏍规嵁鑻辨枃鍚嶇О闆嗗悎鑾峰彇灞炴�ф暟鎹璞� + * @param attributeIdCollection 灞炴�х殑鑻辨枃鍚嶇О闆嗗悎 + * @return 灞炴�ф暟鎹璞″垪琛紝濡傛灉鏈変笉瀛樺湪鐨勪笉浼氳繑鍥烇紝鍏ㄩ儴涓嶅瓨鍦ㄧ殑鍒欒繑鍥炵┖鍒楄〃 + * @throws VciBaseException mybatis鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父 + */ + private List<Attribute> listAttributeByKeyCollectionDO(Collection<String> attributeIdCollection) throws VciBaseException { + if(!CollectionUtils.isEmpty(attributeIdCollection)){ + List<Attribute> attributeDOList = new ArrayList<>(); + Collection<String> distAttributeIdCollection = attributeIdCollection.stream().distinct().collect(Collectors.toList()); + Collection<Collection<String>> idCollections = VciBaseUtil.switchCollectionForOracleIn(distAttributeIdCollection); + if(!CollectionUtils.isEmpty(idCollections)) { + idCollections.stream().forEach(s -> { + List<Attribute> attributeDOS = baseMapper.selectList(Wrappers.<Attribute>query().lambda().in(Attribute::getKey, s)); + if(!CollectionUtils.isEmpty(attributeDOS)){ + attributeDOList.addAll(attributeDOS); + } + }); + } + return attributeDOList; + } + return null; + } + + /** + * 鍒ゆ柇灞炴�х殑鍐呭鏄惁绗﹀悎瑕佹眰 + * + * @param id 灞炴�х殑涓婚敭 + * @param attrDataType 灞炴�х殑绫诲瀷 + * @param attributeLength 灞炴�х殑闀垮害 + * @param defaultValue 榛樿鍊� + * @return true琛ㄧず绗﹀悎瑕佹眰锛屼笉绗﹀悎瑕佹眰浼氭姏鍑哄紓甯� + * @throws VciBaseException 涓嶇鍚堣姹備細鎶涘嚭寮傚父 + */ + @Override + public boolean checkAttributePass(String id, String attrDataType, Integer attributeLength, String defaultValue) throws VciBaseException { + String attributeDataTypeText = VciFieldTypeEnum.getTextByValue(attrDataType); + if(StringUtils.isBlank(attributeDataTypeText)){ + throw new VciBaseException("鑻辨枃鍚嶇О涓簕0}鐨勫睘鎬х殑绫诲瀷涓嶇鍚堣姹�",new Object[]{id}); + } + //蹇呴』瑕佽緭鍏ラ暱搴� + if( VciBaseUtil.inArray(new String[] {VciFieldTypeEnum.VTString.name()},attrDataType) + && (attributeLength == null ||attributeLength < 1)){ + throw new VciBaseException("鑻辨枃鍚嶇О涓簕0}鐨勫睘鎬х殑涓簕1}绫诲瀷鏃讹紝蹇呴』瑕佽緭鍏ラ暱搴︾殑鍊�",new Object[]{id,attributeDataTypeText}); + } + //鍒ゆ柇榛樿鍊� + if(StringUtils.isNotBlank(defaultValue)){ + if(VciFieldTypeEnum.VTDouble.name().equalsIgnoreCase(attrDataType) + && !defaultValue.matches(OmdRegExpConstant.DOUBLE)){ + throw new VciBaseException("鑻辨枃鍚嶇О涓簕0}鐨勫睘鎬х殑榛樿鍊间笉鏄弻绮惧害绫诲瀷",new Object[]{id}); + } + if(VciFieldTypeEnum.VTInteger.name().equalsIgnoreCase(defaultValue) + && !defaultValue.matches(OmdRegExpConstant.INT)){ + throw new VciBaseException("鑻辨枃鍚嶇О涓簕0}鐨勫睘鎬х殑榛樿鍊间笉鏄暣鏁板瀷",new Object[]{id}); + } + if(VciFieldTypeEnum.VTLong.name().equalsIgnoreCase(defaultValue) + && !defaultValue.matches(OmdRegExpConstant.LONG)){ + throw new VciBaseException("鑻辨枃鍚嶇О涓簕0}鐨勫睘鎬х殑榛樿鍊间笉鏄暱鏁村舰",new Object[]{id}); + } + } + return true; + } + + /** + * 鏍¢獙灞炴�ф槸鍚︾鍚堣姹� + * + * @param attributesDTO 灞炴�ф暟鎹紶杈撳璞� + * @return true 绗﹀悎 false 涓嶇鍚� + * @throws VciBaseException 涓嶇鍚堟椂鎶涘嚭寮傚父 + */ + @Override + public boolean checkAttribute(BtmTypeLinkAttributesDTO attributesDTO) throws VciBaseException { + VciBaseUtil.alertNotNull(attributesDTO.getId(), "灞炴�х殑鑻辨枃鍚嶇О", attributesDTO.getName(), "灞炴�х殑涓枃鍚嶇О", + attributesDTO.getAttrDataType(), "灞炴�х殑鏁版嵁绫诲瀷"); + boolean pass = checkAttributePass(attributesDTO.getId(), attributesDTO.getAttrDataType(), attributesDTO.getAttributeLength(), attributesDTO.getDefaultValue()); + if (!pass){ + throw new VciBaseException("灞炴�т笉绗﹀悎瑕佹眰"); + } + return pass; + } +} -- Gitblit v1.9.3