lihang
2023-07-10 0a6ab7fccd8db586125dbe3a9b80841f1c0d3d5f
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/AttributeServiceImpl.java
@@ -4,15 +4,12 @@
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.github.yulichang.wrapper.MPJLambdaWrapper;
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.entity.BtmType;
import com.vci.ubcs.omd.entity.BtmTypeAttribute;
import com.vci.ubcs.omd.mapper.AttributeMapper;
import com.vci.ubcs.omd.mapper.BtmTypeMapper;
import com.vci.ubcs.omd.service.IAttributeService;
import com.vci.ubcs.omd.vo.AttributeVO;
import com.vci.ubcs.omd.vo.BtmTypeVO;
@@ -24,19 +21,13 @@
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.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import javax.validation.constraints.NotEmpty;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import java.util.*;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
@@ -82,13 +73,10 @@
    */
   @Override
   public boolean submit(AttributeDTO dto) {
      if (!Pattern.compile(REGEXP).matcher(dto.getId()).matches()){
         throw new VciBaseException("属性名称{0}只能是英文",new Object[]{dto.getId()});
      }
      LambdaQueryWrapper<Attribute> wrapper = Wrappers.<Attribute>query().lambda().eq(Attribute::getId, dto.getId());
      Long count = baseMapper.selectCount((Func.isEmpty(dto.getOid())) ? wrapper : wrapper.notIn(Attribute::getOid, dto.getOid()));
      if (count > 0L) {
         throw new ServiceException("属性名已存在!");
      VciBaseUtil.alertNotNull(dto.getId(),"属性编号",dto.getName(),"属性名称",dto.getTypeKey(),"属性类型",dto.getMaxLength(),"属性长度");
      String msg = checkAttributeId(dto.getId(),dto.getOid());
      if (StringUtils.isNotBlank(msg)){
         throw new VciBaseException(msg);
      }
      Attribute attribute = AttributeWrapper.build().copyBeforeSave(dto);
      CacheUtil.clear(OmdCacheConstant.ATTR_CACHE);
@@ -96,15 +84,36 @@
   }
   /**
    * 元数据的ID校验
    * @param id 编号值
    * @param oid 数据主键
    * @return 校验结果
    */
   private String checkAttributeId(String id, String oid) {
      if (!Pattern.compile(REGEXP).matcher(id).matches()){
         return "属性编号"+id+"只能是英文";
      }
      Long count = baseMapper.checkIdExist(id.toLowerCase(Locale.ROOT),oid);
      if (count > 0L) {
         return "属性编号"+id+"(不区分大小写)已存在!";
      }
      return null;
   }
   /**
    * 删除
    *
    * @param ids 主键集合
    * @param oids 主键集合
    * @return 执行结果
    */
   @Override
   public boolean removeAttrs(String ids) {
      List<Long> idList = Func.toLongList(ids);
      return !deleteLogic(idList) && removeByIds(idList);
   public boolean removeAttrs(String oids) {
      List<String> oidList = Func.toStrList(",", oids);
      List<Attribute> list = list(Wrappers.<Attribute>query().lambda().in(Attribute::getOid, oidList));
      if (!CollectionUtils.isEmpty(list)){
         baseMapper.delete(Wrappers.<Attribute>query().lambda().in(Attribute::getOid,list.stream().map(Attribute::getOid).collect(Collectors.toList())));
      }
      return true;
   }
   /**
@@ -116,15 +125,10 @@
   @Override
   public List<BtmTypeVO> applyRange(String oid) {
      List<BtmType> btmTypes = baseMapper.selectApplyRange(oid);
      if (!CollectionUtils.isEmpty(btmTypes)){
         return btmTypes.stream().map(btm -> {
            BtmTypeVO vo = new BtmTypeVO();
            vo.setId(btm.getId());
            vo.setName(btm.getName());
            return vo;
         }).collect(Collectors.toList());
      if (CollectionUtils.isEmpty(btmTypes)){
         return null;
      }
      return null;
      return BtmTypeWrapper.build().listEntityVO(btmTypes);
   }
   /**
@@ -140,7 +144,7 @@
      if (CollectionUtils.isEmpty(existAttributeVOList)) {
         throw new VciBaseException("使用的属性都在系统中不存在,请先查证");
      } else {
         Set<String> existAttributeOidSet = (existAttributeVOList.stream().collect(Collectors.toMap(s -> s.getId().toLowerCase().trim(), t -> t))).keySet();
         Set<String> existAttributeOidSet = (existAttributeVOList.stream().collect(Collectors.toMap(s -> s.getId().trim(), t -> t))).keySet();
         keyCollections.stream().forEach(s -> {
            if (!existAttributeOidSet.contains(s)) {
               throw new VciBaseException("使用的属性{0}在系统中不存在,请先查证", new Object[]{s});
@@ -169,7 +173,7 @@
   }
   /**
    * 根据编号集合获取属性数据对象
    * 根据编号集合获取属性数据对象,其中默认的属性应当剔除
    * @param attributeIdCollection 属性的编号集合
    * @return 属性数据对象列表,如果有不存在的不会返回,全部不存在的则返回空列表
    * @throws VciBaseException mybatis查询出错的时候会抛出异常
@@ -248,4 +252,20 @@
      }
      return pass;
   }
   /**
    * 单个删除
    *
    * @param oid 主键
    * @return 执行结果
    */
   @Override
   public R remove(String oid) {
      List<BtmTypeVO> vos = applyRange(oid);
      if (CollectionUtils.isEmpty(vos)){
          return R.status(removeAttrs(oid));
      }else {
         return R.fail("该属性已被使用,不允许删除");
      }
   }
}