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