¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.vci.ubcs.omd.service.impl; |
| | | |
| | | import com.alibaba.cloud.commons.lang.StringUtils; |
| | | import com.alibaba.nacos.api.exception.NacosException; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.vci.ubcs.omd.constant.BtmTypeFieldConstant; |
| | | import com.vci.ubcs.omd.dto.BtmAndLinkTypeDdlDTO; |
| | | import com.vci.ubcs.omd.repeater.DomainRepeater; |
| | | import com.vci.ubcs.omd.service.IBtmTypeAttributeService; |
| | | import com.vci.ubcs.omd.service.IModifyAttributeService; |
| | | import com.vci.ubcs.omd.wrapper.BtmTypeAttributeWrapper; |
| | | import com.vci.ubcs.omd.wrapper.BtmTypeWrapper; |
| | | import com.vci.ubcs.omd.wrapper.ModifyAttributeWrapper; |
| | | import com.vci.ubcs.starter.web.constant.OmdRegExpConstant; |
| | | import com.vci.ubcs.omd.dto.BtmTypeDTO; |
| | | import com.vci.ubcs.omd.dto.BtmTypeLinkAttributesDTO; |
| | | import com.vci.ubcs.omd.entity.BtmType; |
| | | import com.vci.ubcs.omd.entity.BtmTypeAttribute; |
| | | import com.vci.ubcs.omd.entity.ModifyAttributeInfo; |
| | | import com.vci.ubcs.omd.mapper.BtmTypeMapper; |
| | | import com.vci.ubcs.omd.service.IBtmTypeService; |
| | | import com.vci.ubcs.omd.vo.BtmTypeVO; |
| | | import com.vci.ubcs.omd.vo.BtmTypeAttributeVO; |
| | | import com.vci.ubcs.omd.vo.LinkTypeVO; |
| | | import com.vci.ubcs.starter.exception.VciBaseException; |
| | | import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum; |
| | | import com.vci.ubcs.starter.web.util.VciBaseUtil; |
| | | import com.vci.ubcs.starter.web.util.VciDateUtil; |
| | | import org.springblade.core.log.exception.ServiceException; |
| | | import org.springblade.core.secure.utils.AuthUtil; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springblade.core.tool.utils.BeanUtil; |
| | | import org.springblade.core.tool.utils.Func; |
| | | import org.springblade.core.tool.utils.StringPool; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.jdbc.datasource.DataSourceTransactionManager; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.TransactionDefinition; |
| | | import org.springframework.transaction.TransactionStatus; |
| | | import org.springframework.transaction.support.DefaultTransactionDefinition; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import javax.validation.constraints.NotEmpty; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * Description: ä¸å¡ç±»åæå¡çå®ç°ç±» |
| | | * |
| | | * @author LiHang |
| | | * @date 2023/4/23 |
| | | */ |
| | | @Service |
| | | public class BtmTypeServiceImpl extends ServiceImpl<BtmTypeMapper, BtmType> implements IBtmTypeService { |
| | | |
| | | /** |
| | | * äºå¡ç®¡ç |
| | | */ |
| | | @Autowired |
| | | private DataSourceTransactionManager dataSourceTransactionManager; |
| | | |
| | | /** |
| | | * ä¸å¡ç±»åå
³è屿§æå¡ |
| | | */ |
| | | @Autowired |
| | | private IBtmTypeAttributeService btmTypeAttributeService; |
| | | |
| | | /** |
| | | * åæ®µä¿®æ¹ä¿¡æ¯çæå¡ |
| | | */ |
| | | @Autowired |
| | | private IModifyAttributeService modifyAttributeService; |
| | | |
| | | /** |
| | | * 表ååç¼ |
| | | */ |
| | | public static final String PL = "PL"; |
| | | |
| | | /** |
| | | * è®¾ç½®å¹³å°æ¬èº«çä¸å¡ç±»å |
| | | * |
| | | * @param platformBtmType 平尿¬èº«çä¸å¡ç±»å |
| | | */ |
| | | @Override |
| | | public void setPlatformBtmType(Collection<String> platformBtmType) { |
| | | |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®ä¸»é®è·åä¸å¡ç±»å |
| | | * |
| | | * @param pkBtmType ä¸å¡ç±»åä¸»é® |
| | | * @return ä¸å¡ç±»åï¼å¦æä¸åå¨ä¼è¿ånull |
| | | * @throws ServiceException åæ°ä¸ºç©ºæè
æ¥è¯¢åºéæ¶ä¼æåºé误 |
| | | */ |
| | | @Override |
| | | public BtmTypeVO getBtmTypeByOid(String pkBtmType) throws ServiceException { |
| | | Func.requireNotNull(pkBtmType,"ä¸å¡ç±»å主é®ä¸è½ä¸ºç©º"); |
| | | BtmTypeVO btmTypeVO = BtmTypeWrapper.build().entityVO(baseMapper.selectOne(Wrappers.<BtmType>query().lambda().eq(BtmType::getOid, pkBtmType))); |
| | | btmTypeVO.setAttributes(btmTypeAttributeService.getAttributeByBtmTypeOid(pkBtmType)); |
| | | return btmTypeVO; |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®ä¸»é®æ¹éè·åä¸å¡ç±»å |
| | | * |
| | | * @param pkBtmTypes ä¸å¡ç±»å主é®ï¼ç¨éå·åé |
| | | * @return ä¸å¡ç±»åå表ï¼å¦ææä¸åå¨çä¸ä¼è¿åï¼å
¨é¨ä¸åå¨çåè¿å空å表 |
| | | * @throws ServiceException åæ°ä¸ºç©ºæè
æ¥è¯¢åºéæ¶ä¼æåºé误 |
| | | */ |
| | | @Override |
| | | public List<BtmTypeVO> listBtmTypeByOids(String pkBtmTypes) throws ServiceException { |
| | | VciBaseUtil.alertNotNull(pkBtmTypes, "ä¸å¡ç±»åç主é®"); |
| | | List<String> pkList = new ArrayList<>(); |
| | | Collections.addAll(pkList, pkBtmTypes.split(",")); |
| | | return listBtmTypeByOidCollection(pkList); |
| | | } |
| | | |
| | | /** |
| | | * æ¹éæ ¹æ®ä¸»é®è·åä¸å¡ç±»å |
| | | * |
| | | * @param pkBtmTypeCollection ä¸å¡ç±»å主é®éå |
| | | * @return ä¸å¡ç±»åå表ï¼å¦ææä¸åå¨çä¸ä¼è¿åï¼å
¨é¨ä¸åå¨çåè¿å空å表 |
| | | * @throws ServiceException åæ°ä¸ºç©ºæè
æ¥è¯¢åºéæ¶ä¼æåºé误 |
| | | */ |
| | | @Override |
| | | public List<BtmTypeVO> listBtmTypeByOidCollection(Collection<String> pkBtmTypeCollection) throws ServiceException { |
| | | if (!CollectionUtils.isEmpty(pkBtmTypeCollection)) { |
| | | List<BtmType> btmTypeDOList = listBtmTypeDOByOidCollection(pkBtmTypeCollection); |
| | | if (!CollectionUtils.isEmpty(btmTypeDOList)) { |
| | | return BtmTypeWrapper.build().listEntityVO(btmTypeDOList); |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®è±æåç§°è·åä¸å¡ç±»å |
| | | * |
| | | * @param id è±æåç§° |
| | | * @return ä¸å¡ç±»åï¼å¦æä¸åå¨ä¼è¿ånull |
| | | * @throws ServiceException åæ°ä¸ºç©ºæè
æ¥è¯¢åºéæ¶ä¼æåºé误 |
| | | */ |
| | | @Override |
| | | public BtmTypeVO getBtmTypeById(String id) throws ServiceException { |
| | | VciBaseUtil.alertNotNull(id, "ä¸å¡ç±»åçè±æåç§°"); |
| | | List<BtmTypeVO> btmTypeVOList = listBtmTypeByIds(id); |
| | | if (!CollectionUtils.isEmpty(btmTypeVOList)) { |
| | | return btmTypeVOList.get(0); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®è±æåç§°æ¹éè·åä¸å¡ç±»å |
| | | * |
| | | * @param ids è±æåç§°ï¼ä½¿ç¨éå·åé |
| | | * @return ä¸å¡ç±»åå表ï¼å¦ææä¸åå¨çä¸ä¼è¿åï¼å
¨é¨ä¸åå¨çåè¿å空å表 |
| | | * @throws ServiceException åæ°ä¸ºç©ºæè
æ¥è¯¢åºéæ¶ä¼æåºé误 |
| | | */ |
| | | @Override |
| | | public List<BtmTypeVO> listBtmTypeByIds(String ids) throws ServiceException { |
| | | Func.requireNotNull(ids,"è±æåç§°ä¸è½ä¸ºç©º"); |
| | | return listBtmTypeByIdCollection(Func.toStrList(",",ids)); |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®è±æåç§°éåæ¹éè·åä¸å¡ç±»å |
| | | * |
| | | * @param idCollection è±æåç§°éå |
| | | * @return ä¸å¡ç±»åå表ï¼å¦ææä¸åå¨çä¸ä¼è¿åï¼å
¨é¨ä¸åå¨çåè¿å空å表 |
| | | * @throws ServiceException åæ°ä¸ºç©ºæè
æ¥è¯¢åºéæ¶ä¼æåºé误 |
| | | */ |
| | | @Override |
| | | public List<BtmTypeVO> listBtmTypeByIdCollection(Collection<String> idCollection) throws ServiceException { |
| | | return CollectionUtils.isEmpty(idCollection) ? null : BtmTypeWrapper.build().listEntityVO(baseMapper.selectList(Wrappers.<BtmType>query().lambda().in(BtmType::getId,idCollection))); |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®è±æåç§°éåæ¹éè·åä¸å¡ç±»åçæ°æ®å¯¹è±¡ |
| | | * |
| | | * @param idCollection è±æåç§°éå |
| | | * @return ä¸å¡ç±»åå表ï¼å¦ææä¸åå¨çä¸ä¼è¿åï¼å
¨é¨ä¸åå¨çåè¿å空å表 |
| | | * @throws ServiceException åæ°ä¸ºç©ºæè
æ¥è¯¢åºéæ¶ä¼æåºé误 |
| | | */ |
| | | @Override |
| | | public List<BtmType> listBtmTypeDOByIdCollection(Collection<String> idCollection) throws ServiceException { |
| | | return CollectionUtils.isEmpty(idCollection) ? null : baseMapper.selectList(Wrappers.<BtmType>query().lambda().in(BtmType::getId, idCollection)); |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®ä¸»é®éåæ¹éè·åä¸å¡ç±»åçæ°æ®å¯¹è±¡ |
| | | * |
| | | * @param oidCollection ä¸»é® |
| | | * @return ä¸å¡ç±»åå表ï¼å¦ææä¸åå¨çä¸ä¼è¿åï¼å
¨é¨ä¸åå¨çåè¿å空å表 |
| | | * @throws ServiceException åæ°ä¸ºç©ºæè
æ¥è¯¢åºéæ¶ä¼æåºé误 |
| | | */ |
| | | @Override |
| | | public List<BtmType> listBtmTypeDOByOidCollection(Collection<String> oidCollection) throws ServiceException { |
| | | if (!CollectionUtils.isEmpty(oidCollection)) { |
| | | return baseMapper.selectList(Wrappers.<BtmType>query().lambda().in(BtmType::getOid, oidCollection)); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®ä¸å¡ç±»å主é®è·å䏿åç§° |
| | | * |
| | | * @param oid ä¸å¡ç±»å主é®ï¼å¤ä¸ªä½¿ç¨éå·åé |
| | | * @return 䏿åç§°ï¼å¦æä¸åå¨ä¼è¿ånull;å¤ä¸ªä¼ä»¥éå·åé |
| | | * @throws ServiceException åæ°ä¸ºç©ºæè
æ¥è¯¢åºéæ¶ä¼æåºé误 |
| | | */ |
| | | @Override |
| | | public String getNameByOid(String oid) throws ServiceException { |
| | | return Objects.requireNonNull(baseMapper.selectOne(Wrappers.<BtmType>query().lambda().eq(BtmType::getOid,oid))).getName(); |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®ä¸å¡ç±»åè±æåç§°è·å䏿åç§° |
| | | * |
| | | * @param id ä¸å¡ç±»åè±æåç§° |
| | | * @return 䏿åç§°ï¼å¦æä¸åå¨ä¼è¿ånull;å¤ä¸ªä¼ä»¥éå·åé |
| | | * @throws ServiceException åæ°ä¸ºç©ºæè
æ¥è¯¢åºéæ¶ä¼æåºé误 |
| | | */ |
| | | @Override |
| | | public String getNameById(String id) throws ServiceException { |
| | | return Objects.requireNonNull(baseMapper.selectOne(Wrappers.<BtmType>query().lambda().eq(BtmType::getId,id))).getName(); |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®ä¸å¡ç±»å主é®è·åå
³èçææå±æ§å¯¹è±¡ |
| | | * |
| | | * @param oid ä¸å¡ç±»åä¸»é® |
| | | * @return ææç屿§å¯¹è±¡ï¼å
æ¬ç³»ç»å±æ§ |
| | | * @throws ServiceException ä¸å¡ç±»åä¸åå¨ï¼åæ°ä¸ºç©ºææ¥è¯¢åºéæ¶ä¼æåºé误 |
| | | */ |
| | | @Override |
| | | public List<BtmTypeAttributeVO> listHasAttributesByOid(String oid) throws ServiceException { |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®ä¸å¡ç±»åè±æåç§°è·åå
³èçææå±æ§å¯¹è±¡ |
| | | * |
| | | * @param id ä¸å¡ç±»åè±æåç§° |
| | | * @return ææç屿§å¯¹è±¡ï¼å
æ¬ç³»ç»å
ç½®å±æ§ |
| | | * @throws ServiceException ä¸å¡ç±»åä¸åå¨ï¼åæ°ä¸ºç©ºæè
æ¥è¯¢åºéæ¶ä¼æåºå¼å¸¸ |
| | | */ |
| | | @Override |
| | | public List<BtmTypeAttributeVO> listHasAttributeById(String id) throws ServiceException { |
| | | VciBaseUtil.alertNotNull(id,"ä¸å¡ç±»åè±æåç§°"); |
| | | List<String> ids = Func.toStrList(",", id); |
| | | Map<String, List<BtmTypeAttributeVO>> attributeMap = batchListHasAttributesByIdCollection(ids); |
| | | if (!CollectionUtils.isEmpty(attributeMap)) { |
| | | List<BtmTypeAttributeVO> attributeVOList = new ArrayList<>(); |
| | | attributeMap.forEach((k, v) -> { |
| | | attributeVOList.addAll(v); |
| | | }); |
| | | return attributeVOList; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®ä¸å¡ç±»å主é®è·åå
³èçææå±æ§å¯¹è±¡ |
| | | * |
| | | * @param oidCollection ä¸å¡ç±»å主é®éå |
| | | * @return ææç屿§å¯¹è±¡ï¼å
æ¬ç³»ç»å
ç½®å±æ§ï¼keyæ¯ä¸å¡ç±»å主é®ï¼valueæ¯å
å«ç屿§ |
| | | * @throws ServiceException ä¸å¡ç±»åä¸åå¨ï¼åæ°ä¸ºç©ºæè
æ¥è¯¢åºéæ¶ä¼æåºå¼å¸¸ |
| | | */ |
| | | @Override |
| | | public Map<String, List<BtmTypeAttributeVO>> batchListHasAttributesByOidCollection(Collection<String> oidCollection) throws ServiceException { |
| | | return btmTypeAttributeService.batchListHasAttributesByBtmTypeOidCollection(oidCollection).stream().collect(Collectors.groupingBy(BtmTypeAttributeVO::getPkBtmType)); |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®ä¸å¡ç±»åè±æåç§°è·åå
³èçææå±æ§å¯¹è±¡ |
| | | * |
| | | * @param idCollection ä¸å¡ç±»åè±æåç§°éå |
| | | * @return ææç屿§å¯¹è±¡ï¼å
æ¬ç³»ç»å
ç½®å±æ§ï¼keyæ¯ä¸å¡ç±»å主é®ï¼valueæ¯å
å«ç屿§ |
| | | * @throws ServiceException ä¸å¡ç±»åä¸åå¨ï¼åæ°ä¸ºç©ºæè
æ¥è¯¢åºéæ¶ä¼æåºå¼å¸¸ |
| | | */ |
| | | @Override |
| | | public Map<String, List<BtmTypeAttributeVO>> batchListHasAttributesByIdCollection(Collection<String> idCollection) throws ServiceException { |
| | | List<String> btmTypeOidList = baseMapper.selectList(Wrappers.<BtmType>query().lambda().in(BtmType::getId, idCollection)).stream().map(BtmType::getOid).collect(Collectors.toList()); |
| | | return btmTypeAttributeService.batchListHasAttributesByBtmTypeOidCollection(btmTypeOidList).stream().collect(Collectors.groupingBy(BtmTypeAttributeVO::getPkBtmType)); |
| | | } |
| | | |
| | | /** |
| | | * è·å使ç¨ä¸å¡ç±»åç龿¥ç±»å |
| | | * |
| | | * @param pkBtmType ä¸å¡ç±»åä¸»é® |
| | | * @return å¼ç¨ç龿¥ç±»å |
| | | * @throws ServiceException åæ°ä¸ºç©ºæè
æ¥è¯¢åºéæ¶ä¼æåºå¼å¸¸ |
| | | */ |
| | | @Override |
| | | public List<LinkTypeVO> listLinkTypeForUsedBtmType(String pkBtmType) throws ServiceException { |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * æ ¡éªä¸å¡ç±»åæ¯å¦è¢«å¼ç¨ |
| | | * |
| | | * @param pkBtmType ä¸å¡ç±»åçä¸»é® |
| | | * @return true表示被å¼ç¨ï¼ false表示没æè¢«å¼ç¨ |
| | | * @throws ServiceException åæ°ä¸ºç©ºæè
æ¥è¯¢åºéæ¶ä¼æåºé误 |
| | | */ |
| | | @Override |
| | | public boolean checkBtmTypeUsed(String pkBtmType) throws ServiceException { |
| | | VciBaseUtil.alertNotNull(pkBtmType, "ä¸å¡ç±»å主é®"); |
| | | return checkBtmTypeUseds(VciBaseUtil.str2List(pkBtmType)); |
| | | } |
| | | |
| | | /** |
| | | * æ ¡éªä¸å¡ç±»åæ¯å¦è¢«å¼ç¨ |
| | | * |
| | | * @param oidCollection ä¸å¡ç±»åç主é®éå |
| | | * @return true表示被å¼ç¨ï¼ false表示没æè¢«å¼ç¨ |
| | | * @throws ServiceException åæ°ä¸ºç©ºæè
æ¥è¯¢åºéæ¶ä¼æåºé误 |
| | | */ |
| | | @Override |
| | | public boolean checkBtmTypeUseds(Collection<String> oidCollection) throws ServiceException { |
| | | VciBaseUtil.alertCollectionNotNull("æ ¡éªæ¯å¦å¼ç¨çä¸å¡ç±»å对象ç主é®", oidCollection); |
| | | //æ£æ¥é¾æ¥ç±»å |
| | | //å ä¸ºé¾æ¥ç±»åä¸fromBtmTypeåtoBtmType齿¯éå·åéçï¼æä»¥ç´æ¥æ¥è¯¢ææç龿¥ç±»åä¸ç使ç¨çä¸å¡ç±»ååç§° |
| | | List<BtmType> btmTypeDOList = listBtmTypeDOByOidCollection(oidCollection); |
| | | if (CollectionUtils.isEmpty(btmTypeDOList)) { |
| | | return false; |
| | | } |
| | | /*Set<String> usedBtmTypeSet = linkTypeServiceI.listUsedBtmType(); |
| | | if (btmTypeDOList.stream().anyMatch(s -> usedBtmTypeSet.contains(s.getId().trim().toLowerCase()))) { |
| | | return true; |
| | | }*/ |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * æ·»å é»è®¤çåæ®µ |
| | | * @param attributes åæ®µé |
| | | * @param fieldMap é»è®¤å段é |
| | | * @return æ·»å åçåæ®µé |
| | | */ |
| | | private List<BtmTypeLinkAttributesDTO> addAttributeByFieldMap(List<BtmTypeLinkAttributesDTO> attributes, Map<String, String> fieldMap) { |
| | | Map<String, BtmTypeLinkAttributesDTO> existFieldMap = attributes.stream().collect(Collectors.toMap(BtmTypeLinkAttributesDTO::getId, t -> t, (o1, o2) -> o1)); |
| | | fieldMap.forEach((k,v) -> { |
| | | if (!existFieldMap.containsKey(k)){ |
| | | BtmTypeLinkAttributesDTO attr = new BtmTypeLinkAttributesDTO(); |
| | | attr.setId(k); |
| | | attr.setAttrDataType(VciFieldTypeEnum.VTString.name()); |
| | | attr.setAttributeLength(50); |
| | | attr.setNullableFlag(false); |
| | | attr.setDescription(v); |
| | | attributes.add(attr); |
| | | } |
| | | }); |
| | | return attributes; |
| | | } |
| | | |
| | | /** |
| | | * æ£æ¥ä¸å¡ç±»åç屿§æ¯å¦åæ°æ®åºä¸ç¸å |
| | | * |
| | | * @param btmTypeVO ä¸å¡ç±»åçæ¾ç¤ºå¯¹è±¡ |
| | | */ |
| | | private void checkTableSame(BtmTypeVO btmTypeVO) { |
| | | List<BtmTypeVO> btmTypeVOList = new ArrayList<>(); |
| | | btmTypeVOList.add(btmTypeVO); |
| | | BtmAndLinkTypeDdlDTO ddlDTO = new BtmAndLinkTypeDdlDTO(); |
| | | ddlDTO.setBtmTypeList(btmTypeVOList); |
| | | try { |
| | | // å°ä»¥åçcheckDifferentåreflexDifferentç»åäº |
| | | R result = DomainRepeater.checkDifferent(ddlDTO,btmTypeVO.getDomain()); |
| | | if (result.isSuccess()){ |
| | | List<ModifyAttributeInfo> infoList = new ArrayList<>(); |
| | | Object data = result.getData(); |
| | | if (data instanceof List){ |
| | | List dataList = (List) data; |
| | | dataList.forEach(s -> { |
| | | if (s instanceof ModifyAttributeInfo){ |
| | | ModifyAttributeInfo info = (ModifyAttributeInfo) s; |
| | | infoList.add(info); |
| | | } |
| | | }); |
| | | modifyAttributeService.saveBatch(ModifyAttributeWrapper.build().listEntityBeforeSave(infoList)); |
| | | } |
| | | } |
| | | } catch (NacosException e) { |
| | | if (log.isDebugEnabled()) { |
| | | log.error("ä¿åãä¿®æ¹å±æ§ãæ°æ®", e); |
| | | } |
| | | throw new RuntimeException(e); |
| | | } |
| | | // modifyAttributeServiceI.finishModify(modifyAttributeInfoList); |
| | | } |
| | | |
| | | /** |
| | | * æ·»å 屿§å°ä¸å¡ç±»åä¸ |
| | | * |
| | | * @param btmTypeDTO ä¸å¡ç±»åçæ°æ®ä¼ è¾å¯¹è±¡ |
| | | */ |
| | | private List<BtmTypeAttributeVO> addAttributeForBtm(BtmTypeDTO btmTypeDTO) throws VciBaseException{ |
| | | List<BtmTypeLinkAttributesDTO> attributesDTOList = btmTypeDTO.getAttributes(); |
| | | return btmTypeAttributeService.checkAndInsert(btmTypeDTO.getOid(),attributesDTOList,AuthUtil.getUserAccount(),new Date()); |
| | | } |
| | | |
| | | /** |
| | | * å é¤ä¸å¡ç±»å |
| | | * |
| | | * @param btmTypeVO ä¸å¡ç±»åæ¾ç¤ºå¯¹è±¡ |
| | | * @param autoDeleteTable èªå¨å é¤è¡¨æ ¼ |
| | | * @throws ServiceException 妿ä¸å¡ç±»å被å¼ç¨ï¼æè
å é¤åºéæ¶ä¼æåºå¼å¸¸ |
| | | */ |
| | | @Override |
| | | public void delete(BtmTypeVO btmTypeVO, boolean autoDeleteTable) throws ServiceException { |
| | | |
| | | } |
| | | |
| | | /** |
| | | * æ¹éå é¤ä¸å¡ç±»å |
| | | * |
| | | * @param btmTypeVOList è¦å é¤çä¸å¡ç±»åæ¾ç¤ºå¯¹è±¡å表 |
| | | * @param autoDeleteTable èªå¨å é¤è¡¨æ ¼ |
| | | * @throws ServiceException 妿ä¸å¡ç±»å被å¼ç¨ï¼æè
å é¤åºéæ¶ä¼æåºå¼å¸¸ |
| | | */ |
| | | @Override |
| | | public void batchDelete(List<BtmTypeVO> btmTypeVOList, boolean autoDeleteTable) throws ServiceException { |
| | | |
| | | } |
| | | |
| | | /** |
| | | * æ£æ¥ä¸å¡ç±»å䏿°æ®åºè¡¨æ¯å¦ä¸è´ |
| | | * |
| | | * @param pkBtmType ä¸å¡ç±»åä¸»é® |
| | | * @return ä¸åç屿§ä¿¡æ¯ |
| | | * @throws ServiceException åæ°ä¸ºç©ºæè
æ¥è¯¢åºéæ¶ä¼æåºå¼å¸¸ |
| | | */ |
| | | @Override |
| | | public List<ModifyAttributeInfo> checkDbTableSame(String pkBtmType) throws ServiceException { |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * è·åæ°æ®åºè¡¨ï¼æ¯æä¸å¡ç±»ååè§å¾ |
| | | * |
| | | * @param id ä¸å¡ç±»åçåç§° |
| | | * @return æ°æ®åºè¡¨çåç§° |
| | | * @throws ServiceException åæ°ä¸ºç©ºçæ¶å伿åºå¼å¸¸ |
| | | */ |
| | | @Override |
| | | public String getTableName(String id,String domain) throws ServiceException { |
| | | VciBaseUtil.alertNotNull(id,"ä¸å¡ç±»åè±æåç§°",domain,"é¢ååç§°"); |
| | | if (domain.contains("ubcs-")){ |
| | | domain = domain.split("ubcs-")[1]; |
| | | }else { |
| | | throw new VciBaseException("é¢ååç§°ä¸ç¬¦åè§å"); |
| | | } |
| | | return PL + StringPool.UNDERSCORE + domain + StringPool.UNDERSCORE + id; |
| | | } |
| | | |
| | | /** |
| | | * æ°å¢æä¿®æ¹ä¸å¡ç±»å |
| | | * |
| | | * @param btmTypeDTO ä¸å¡ç±»å页é¢ä¼ è¾å¯¹è±¡ |
| | | * @return æ§è¡ç»æ |
| | | */ |
| | | @Override |
| | | public R submit(BtmTypeDTO btmTypeDTO, boolean autoCreateTable) { |
| | | TransactionStatus transaction = null; |
| | | DefaultTransactionDefinition def = null; |
| | | if (autoCreateTable) { |
| | | def = new DefaultTransactionDefinition(); |
| | | def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); |
| | | // äºç©é离级å«ï¼å¼å¯æ°äºå¡ï¼è¿æ ·ä¼æ¯è¾å®å
¨äºã |
| | | transaction = dataSourceTransactionManager.getTransaction(def); |
| | | // è·å¾äºå¡ç¶æ |
| | | } |
| | | checkBtmTypeBeforeSave(btmTypeDTO); |
| | | BtmType btmTypeDO = Optional.ofNullable(BeanUtil.copy(btmTypeDTO, BtmType.class)).orElseGet(BtmType::new); |
| | | List<BtmTypeLinkAttributesDTO> attributes = btmTypeDTO.getAttributes(); |
| | | List<BtmTypeAttributeVO> afterAttributes; |
| | | if (StringUtils.isBlank(btmTypeDO.getOid())){ |
| | | btmTypeDO = BtmTypeWrapper.build().entityBeforeInsert(btmTypeDO); |
| | | if (StringUtils.isBlank(btmTypeDO.getTableName())) { |
| | | btmTypeDO.setTableName(getTableName(btmTypeDO.getId(),btmTypeDO.getDomain())); |
| | | } |
| | | // æ·»å 屿§ |
| | | afterAttributes = addAttributeForBtm(btmTypeDTO); |
| | | baseMapper.insert(btmTypeDO); |
| | | }else { |
| | | BtmTypeVO btmTypeByOid = getBtmTypeByOid(btmTypeDO.getOid()); |
| | | List<BtmTypeAttributeVO> beforeAttributes = btmTypeByOid.getAttributes(); |
| | | // å¤ç屿§ï¼å¤ä½çå é¤ï¼ä¸åå¨çæ·»å |
| | | afterAttributes = updateAttributeForBtm(btmTypeByOid.getOid(),beforeAttributes, attributes); |
| | | } |
| | | BtmTypeVO btmTypeVO = BtmTypeWrapper.build().entityVO(btmTypeDO); |
| | | btmTypeVO.setAttributes(afterAttributes); |
| | | try { |
| | | if (autoCreateTable) { |
| | | checkTableSame(btmTypeVO); |
| | | R result = DomainRepeater.submitBtmType(btmTypeDTO.getDomain(), btmTypeVO); |
| | | if (result.isSuccess()){ |
| | | List<ModifyAttributeInfo> infoList = new ArrayList<>(); |
| | | Object data = result.getData(); |
| | | if (data instanceof List){ |
| | | List dataList = (List) data; |
| | | dataList.forEach(s -> { |
| | | if (s instanceof ModifyAttributeInfo){ |
| | | ModifyAttributeInfo info = (ModifyAttributeInfo) s; |
| | | infoList.add(info); |
| | | } |
| | | }); |
| | | modifyAttributeService.saveBatch(ModifyAttributeWrapper.build().listEntityBeforeSave(infoList)); |
| | | } |
| | | dataSourceTransactionManager.commit(transaction); |
| | | }else { |
| | | dataSourceTransactionManager.rollback(transaction); |
| | | } |
| | | } |
| | | } catch (Throwable e) { |
| | | if (autoCreateTable) { |
| | | dataSourceTransactionManager.rollback(transaction); |
| | | } |
| | | } |
| | | return R.data(btmTypeVO); |
| | | } |
| | | |
| | | /** |
| | | * æ´æ°ä¸å¡ç±»åç屿§ |
| | | * @param oid 鿏 |
| | | * @param beforeAttr æ´æ°åç屿§ |
| | | * @param afterAttr æ´æ°åç屿§ |
| | | */ |
| | | private List<BtmTypeAttributeVO> updateAttributeForBtm(String oid, List<BtmTypeAttributeVO> beforeAttr, List<BtmTypeLinkAttributesDTO> afterAttr) { |
| | | List<BtmTypeAttributeVO> deleteList = beforeAttr.stream().filter(before -> afterAttr.stream().noneMatch(after -> StringUtils.equals(before.getId(), after.getId()))).collect(Collectors.toList()); |
| | | List<BtmTypeLinkAttributesDTO> addList = afterAttr.stream().filter(after -> beforeAttr.stream().noneMatch(before -> StringUtils.equals(before.getId(), after.getId()))).collect(Collectors.toList()); |
| | | List<BtmTypeLinkAttributesDTO> modifyList = new ArrayList<>(); |
| | | Map<String, BtmTypeAttributeVO> beforeAttrMap = beforeAttr.stream().collect(Collectors.toMap(BtmTypeAttributeVO::getId, t -> t, (o1, o2) -> o1)); |
| | | Map<String, BtmTypeLinkAttributesDTO> afterAttrMap = afterAttr.stream().collect(Collectors.toMap(BtmTypeLinkAttributesDTO::getId, t -> t, (o1, o2) -> o1)); |
| | | afterAttrMap.forEach((k,v) -> { |
| | | if (beforeAttrMap.containsKey(k)){ |
| | | modifyList.add(v); |
| | | } |
| | | }); |
| | | btmTypeAttributeService.checkAndRemove(deleteList.stream().map(BtmTypeAttributeVO::getOid).collect(Collectors.toList())); |
| | | List<BtmTypeAttributeVO> voListAdd = btmTypeAttributeService.checkAndInsert(oid, addList, AuthUtil.getUserAccount(), new Date()); |
| | | List<BtmTypeAttributeVO> voListUpdate = btmTypeAttributeService.checkAndUpdate(oid, modifyList, AuthUtil.getUserAccount(), new Date()); |
| | | List<BtmTypeAttributeVO> returnList = new ArrayList<>(); |
| | | returnList.addAll(Objects.requireNonNull(voListAdd)); |
| | | returnList.addAll(Objects.requireNonNull(voListUpdate)); |
| | | return returnList; |
| | | } |
| | | |
| | | /** |
| | | * æ£æ¥ä¸å¡ç±»å符åè§è |
| | | * @param btmTypeDTO ä¸å¡ç±»å页é¢ä¼ è¾å¯¹è±¡ |
| | | */ |
| | | private void checkBtmTypeBeforeSave(BtmTypeDTO btmTypeDTO) { |
| | | VciBaseUtil.alertNotNull(btmTypeDTO, "è¦æ·»å çä¸å¡ç±»å", btmTypeDTO.getId(), "ä¸å¡ç±»åçè±æåç§°", btmTypeDTO.getName(), "ä¸å¡ç±»å䏿åç§°"); |
| | | if (btmTypeDTO.isViewFlag() && (StringUtils.isBlank(btmTypeDTO.getViewCreateSql()) |
| | | || StringUtils.isBlank(btmTypeDTO.getTableName()))) { |
| | | throw new VciBaseException("妿å½åæ¯ä¸å¡ç±»åæ¯è§å¾çæ¶åï¼è¯·å¿
é¡»è¾å
¥è§å¾çå建è¯å¥åè§å¾åç§°"); |
| | | } |
| | | if (!btmTypeDTO.isViewFlag()) { |
| | | VciBaseUtil.alertCollectionNotNull("屿§", btmTypeDTO.getAttributes()); |
| | | } |
| | | if (!btmTypeDTO.getId().matches(OmdRegExpConstant.LETTER)) { |
| | | throw new VciBaseException("ä¸å¡ç±»åè±æåç§°åªè½æ¯çº¯è±æï¼ç®å为{0}", new Object[]{btmTypeDTO.getId()}); |
| | | } |
| | | if (btmTypeDTO.getId().length() > 24) { |
| | | throw new VciBaseException("ä¸å¡ç±»åè±æåç§°ä¸è½è¶
è¿18ï¼ç®åé¿åº¦ä¸º{0}", new Object[]{btmTypeDTO.getId().length()}); |
| | | } |
| | | List<BtmType> btmTypeDOList = listBtmTypeDOByIdCollection(VciBaseUtil.str2List(btmTypeDTO.getId())); |
| | | if (!CollectionUtils.isEmpty(btmTypeDOList) && btmTypeDOList.size() > 0) { |
| | | BtmType existBtmType = btmTypeDOList.get(0); |
| | | throw new VciBaseException("ä¸å¡ç±»åè±æåç§°å·²ç»åå¨ï¼ä¸åºå大å°åï¼ï¼è¿ä¸ªè±æå称对åºç䏿å称为{0},å建人{1},å建æ¶é´{2}" |
| | | , new Object[]{existBtmType.getName(), existBtmType.getCreator(), VciDateUtil.date2Str(existBtmType.getCreateTime(), VciDateUtil.DateFormat)}); |
| | | } |
| | | if (btmTypeDTO.isRevisionFlag()){ |
| | | // éè¦æ§å¶çæ¬ |
| | | // æ£æ¥ä½¿ç¨ççæ¬è§åæ¯å¦åå¨ |
| | | // if (StringUtils.isNotBlank(btmTypeDTO.getRevisionRuleId())) { |
| | | // if (revisionRuleServiceI.checkRevisionRuleExist(btmTypeDTO.getRevisionRuleId())) { |
| | | // throw new VciBaseException("çæ¬è§å{0}[{1}]å¨ç³»ç»ä¸ä¸åå¨ï¼è¯·å
æ¥è¯", |
| | | // new Object[]{btmTypeDTO.getRevisionRuleId(), btmTypeDTO.getRevisionRuleName()}); |
| | | // } |
| | | // } |
| | | btmTypeDTO.setAttributes(addAttributeByFieldMap(btmTypeDTO.getAttributes(),BtmTypeFieldConstant.REVISION_MANAGE_FIELD_MAP)); |
| | | } |
| | | if (btmTypeDTO.isLifeCycleFlag()){ |
| | | // éè¦æ§å¶çå½å¨æ |
| | | //æ£æ¥ä½¿ç¨ççå½å¨ææ¯å¦åå¨ |
| | | // if (StringUtils.isNotBlank(btmTypeDTO.getLifeCycleId()) |
| | | // && !FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE.equalsIgnoreCase(btmTypeDTO.getLifeCycleId())) { |
| | | // if (lifeCycleServiceI.checkLifeCycleExist(btmTypeDTO.getLifeCycleId())) { |
| | | // throw new VciBaseException("çå½å¨æ{0}[{1}]å¨ç³»ç»ä¸ä¸åå¨ï¼è¯·å
æ¥è¯", |
| | | // new Object[]{btmTypeDTO.getLifeCycleId(), btmTypeDTO.getLifeCycleName()}); |
| | | // } |
| | | // } |
| | | // if (StringUtils.isNotBlank(btmTypeDTO.getSubLifeCycleId())) { |
| | | // if (lifeCycleServiceI.checkLifeCycleExist(btmTypeDTO.getSubLifeCycleId())) { |
| | | // throw new VciBaseException("å¤ç¨çå½å¨æ{0}[{1}]ä¸å
¶ä¸ææäºå¨ç³»ç»ä¸ä¸åå¨ï¼è¯·å
æ¥è¯", |
| | | // new Object[]{btmTypeDTO.getSubLifeCycleId(), btmTypeDTO.getSubLifeCycleName()}); |
| | | // } |
| | | // } |
| | | btmTypeDTO.setAttributes(addAttributeByFieldMap(btmTypeDTO.getAttributes(),BtmTypeFieldConstant.LIFECYCLE_MANAGE_FIELD_MAP)); |
| | | } |
| | | if (btmTypeDTO.isSecretFlag()){ |
| | | // éè¦æ§å¶å¯çº§ |
| | | btmTypeDTO.setAttributes(addAttributeByFieldMap(btmTypeDTO.getAttributes(),BtmTypeFieldConstant.SECRET_MANAGE_FIELD_MAP)); |
| | | } |
| | | if (StringUtils.isBlank(btmTypeDTO.getOid())) { |
| | | btmTypeDTO.setOid(VciBaseUtil.getPk()); |
| | | } |
| | | } |
| | | @Override |
| | | public boolean deleteLogic(@NotEmpty List<Long> ids) { |
| | | return false; |
| | | } |
| | | |
| | | @Override |
| | | public boolean changeStatus(@NotEmpty List<Long> ids, Integer status) { |
| | | return false; |
| | | } |
| | | } |