田源
2023-05-09 d2570148ec3884de3af721bd99c4b7acbbdee075
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmAttributeServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,182 @@
package com.vci.ubcs.omd.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.omd.dto.BtmTypeLinkAttributesDTO;
import com.vci.ubcs.omd.entity.BtmTypeAttribute;
import com.vci.ubcs.omd.mapper.BtmTypeAttributeMapper;
import com.vci.ubcs.omd.service.IAttributeService;
import com.vci.ubcs.omd.service.IBtmTypeAttributeService;
import com.vci.ubcs.omd.vo.BtmTypeAttributeVO;
import com.vci.ubcs.omd.wrapper.BtmTypeAttributeWrapper;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
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.validation.constraints.NotEmpty;
import java.util.*;
/**
 * Description: ä¸šåŠ¡ç±»åž‹å…³è”å±žæ€§çš„æœåŠ¡å®žçŽ°ç±»
 *
 * @author LiHang
 * @date 2023/4/23
 */
@Service
public class BtmAttributeServiceImpl extends ServiceImpl<BtmTypeAttributeMapper, BtmTypeAttribute> implements IBtmTypeAttributeService {
   @Autowired
   private IAttributeService attributeService;
   @Override
   public boolean deleteLogic(@NotEmpty List<Long> ids) {
      return false;
   }
   @Override
   public boolean changeStatus(@NotEmpty List<Long> ids, Integer status) {
      return false;
   }
   /**
    * æ£€æŸ¥å±žæ€§å­˜åœ¨å¹¶æ·»åŠ 
    *
    * @param attributesDTOList é¡µé¢ä¼ è¾“对象集合
    * @return å—影响的行数
    */
   @Override
   public List<BtmTypeAttributeVO> checkAndInsert(String btmTypeOid, List<BtmTypeLinkAttributesDTO> attributesDTOList, String creator, Date now) {
      List<String> attributeIdList = new ArrayList<>();
      List<BtmTypeAttribute> btmTypeAttributeDOList = new ArrayList<>();
      if (!CollectionUtils.isEmpty(attributesDTOList)) {
         attributesDTOList.stream().forEachOrdered(s -> {
            attributeService.checkAttribute(s);
            btmTypeAttributeDOList.add(BtmTypeAttributeWrapper.build().copyBtmTypeAttributeDTO2Entity(s,btmTypeOid, creator, now));
            attributeIdList.add(s.getId().toLowerCase().trim());
         });
         //检查属性是否都存在
         boolean exists = attributeService.checkAttributeExists(attributeIdList);
         if (!exists){
            return null;
         }
         batchInsert(btmTypeAttributeDOList);
         return BtmTypeAttributeWrapper.build().listEntityVO(btmTypeAttributeDOList);
//            btmTypeAttributeDOList.stream().forEachOrdered(s -> {
//                btmTypeAttributeDOMapper.insert(s);
//            });
      }
      return null;
   }
   /**
    * æ£€æŸ¥å±žæ€§å­˜åœ¨å¹¶åˆ é™¤
    *
    * @param records ä¸»é”®é›†åˆ
    * @return å—影响的行数
    */
   @Override
   public int checkAndRemove(List<String> records) {
      if (CollectionUtils.isEmpty(records)){
         return 0;
      }
      return baseMapper.batchDelete(records);
   }
   /**
    * æ£€æŸ¥å±žæ€§å­˜åœ¨å¹¶æ·»åŠ 
    *
    * @param btmTypeOid        ä¸šåŠ¡ç±»åž‹ä¸»é”®
    * @param attributesDTOList é¡µé¢ä¼ è¾“对象集合
    * @param creator           åˆ›å»ºäºº
    * @param now               ts时间戳
    * @return å—影响的行数
    */
   @Override
   public List<BtmTypeAttributeVO> checkAndUpdate(String btmTypeOid, List<BtmTypeLinkAttributesDTO> attributesDTOList, String creator, Date now) {
      List<String> attributeIdList = new ArrayList<>();
      List<BtmTypeAttribute> btmTypeAttributeDOList = new ArrayList<>();
      if (!CollectionUtils.isEmpty(attributesDTOList)) {
         attributesDTOList.stream().forEachOrdered(s -> {
            attributeService.checkAttribute(s);
            btmTypeAttributeDOList.add(BtmTypeAttributeWrapper.build().copyBtmTypeAttributeDTO2Entity(s,btmTypeOid, creator, now));
            attributeIdList.add(s.getId().toLowerCase().trim());
         });
         //检查属性是否都存在
         boolean exists = attributeService.checkAttributeExists(attributeIdList);
         if (!exists){
            return null;
         }
         baseMapper.batchUpdate(btmTypeAttributeDOList);
         return BtmTypeAttributeWrapper.build().listEntityVO(btmTypeAttributeDOList);
//            btmTypeAttributeDOList.stream().forEachOrdered(s -> {
//                btmTypeAttributeDOMapper.insert(s);
//            });
      }
      return null;
   }
   /**
    * æ‰¹é‡æ’å…¥
    *
    * @param records æ•°æ®å¯¹è±¡é›†åˆ
    */
   @Override
   public int batchInsert(List<BtmTypeAttribute> records) {
      return baseMapper.insertBatchSomeColumn(records);
   }
   /**
    * ä¸šåŠ¡ç±»åž‹ä¸»é”®æŸ¥å±žæ€§
    * @param btmTypeOid ä¸šåŠ¡ç±»åž‹ä¸»é”®
    * @return æŸ¥è¯¢ç»“æžœ
    */
   @Override
   public List<BtmTypeAttributeVO> getAttributeByBtmTypeOid(String btmTypeOid){
      Func.requireNotNull(btmTypeOid,"业务类型主键");
      return BtmTypeAttributeWrapper.build().listEntityVO(
         Optional.ofNullable(
            baseMapper.selectList(Wrappers.<BtmTypeAttribute>query().lambda().eq(BtmTypeAttribute::getPkBtmType, btmTypeOid))
         ).orElseGet(ArrayList::new)
      );
   }
   /**
    * æ ¹æ®ä¸šåŠ¡ç±»åž‹ä¸»é”®èŽ·å–å…³è”çš„æ‰€æœ‰å±žæ€§å¯¹è±¡
    *
    * @param oidCollection ä¸šåŠ¡ç±»åž‹ä¸»é”®é›†åˆ
    * @return æ‰€æœ‰çš„属性对象,包括系统内置属性,key是业务类型主键,value是包含的属性
    * @throws VciBaseException ä¸šåŠ¡ç±»åž‹ä¸å­˜åœ¨ï¼Œå‚æ•°ä¸ºç©ºæˆ–è€…æŸ¥è¯¢å‡ºé”™æ—¶ä¼šæŠ›å‡ºå¼‚å¸¸
    */
   @Override
   public List<BtmTypeAttributeVO> batchListHasAttributesByBtmTypeOidCollection(Collection<String> oidCollection) throws VciBaseException {
      VciBaseUtil.alertNotNull(oidCollection,"业务类型主键");
      List<BtmTypeAttribute> doList = baseMapper.selectList(Wrappers.<BtmTypeAttribute>query().lambda().in(BtmTypeAttribute::getPkBtmType, oidCollection));
      return BtmTypeAttributeWrapper.build().listEntityVO(doList);
   }
   /**
    * èŽ·å–ä¸šåŠ¡ç±»åž‹ä¸­çš„æŒ‡å®šå±žæ€§
    *
    * @param id                    ä¸šåŠ¡ç±»åž‹çš„ä¸»é”®
    * @param attributeIdCollection å±žæ€§çš„id,若为空则获取全部
    * @return å±žæ€§çš„æ•°æ®å¯¹è±¡
    */
   @Override
   public List<BtmTypeAttribute> selectByBtmTypeIdAndAttributeIds(String id, Collection<String> attributeIdCollection) {
      return baseMapper.selectByBtmTypeIdAndAttributeIds(id,attributeIdCollection);
   }
   /**
    * é€šè¿‡ä¸šåŠ¡ç±»åž‹çš„è‹±æ–‡åç§°èŽ·å–å…³è”çš„å±žæ€§
    *
    * @param idList ä¸šåŠ¡ç±»åž‹çš„è‹±æ–‡åç§°é›†åˆ
    * @return åŒ…含的属性
    */
   @Override
   public List<BtmTypeAttribute> selectByBtmTypeIds(List<String> idList) {
      return baseMapper.selectByBtmTypeIds(idList);
   }
}