| | |
| | | import com.vci.client.common.datatype.VTLong; |
| | | import com.vci.client.common.datatype.VTString; |
| | | import com.vci.client.mw.ClientSessionUtility; |
| | | import com.vci.common.utility.ObjectUtility; |
| | | import com.vci.corba.common.PLException; |
| | | import com.vci.corba.omd.atm.AttributeDef; |
| | | import com.vci.corba.omd.ltm.LinkType; |
| | |
| | | import com.vci.starter.web.pagemodel.*; |
| | | import com.vci.starter.web.util.*; |
| | | import com.vci.model.OsAttributeDO; |
| | | import com.vci.web.enumpck.ItemTypeEnum; |
| | | import com.vci.web.enumpck.PortalVITypeFlag; |
| | | import com.vci.web.properties.UsedNames; |
| | | import com.vci.web.service.OsAttributeServiceI; |
| | |
| | | import java.util.*; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | import java.util.stream.Stream; |
| | | |
| | | //import static com.vci.client.omd.attribpool.ui.VTDataTypePanel.*; |
| | | import static com.vci.omd.constants.AttributeConstants.*; |
| | |
| | | } |
| | | |
| | | /** |
| | | * 够着属性树节点 |
| | | * 构造属性树节点 |
| | | * @param parentTreeList |
| | | * @param refTypeName |
| | | * @param refFlag |
| | |
| | | attributeVO.setLastModifyTime(new Date(attribItem.modifyTime)); |
| | | attributeVO.setTs(VciDateUtil.str2Date(attribItem.ts,VciDateUtil.DateTimeMillFormat)); |
| | | }catch (Throwable e){ |
| | | |
| | | e.printStackTrace(); |
| | | String errorLog = "属性DO转VO时出错,原因:"+VciBaseUtil.getExceptionMessage(e); |
| | | logger.error(errorLog); |
| | | throw new VciBaseException(errorLog); |
| | | } |
| | | attributeVO.setLastModifier(attribItem.modifier); |
| | | attributeVO.setName(attribItem.label); |
| | | attributeVO.setDescription(attribItem.description); |
| | | attributeVO.setAttributeDataType(attribItem.vtDataType); |
| | | attributeVO.setAttributeDataTypeText(VciFieldTypeEnum.getTextByValue(attribItem.vtDataType)); |
| | | //获取UI属性类型 |
| | | attributeVO.setAttributeUIType(ItemTypeEnum.convertAttributeTypeTOUITypeTextByValue(attribItem.vtDataType,false)); |
| | | //获取UI属性类型文本 |
| | | attributeVO.setAttributeUITypeText(ItemTypeEnum.convertAttributeTypeTOUITypeTextByValue(attribItem.vtDataType,true)); |
| | | attributeVO.setDefaultValue(attribItem.defValue); |
| | | if(Func.isNotBlank(attribItem.rage)){ |
| | | attributeVO.setRange(attribItem.rage.replace("<","<")); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 使用属性编号获取对象--批量 |
| | | * |
| | | * @param attrCodes 属性的英文名称 |
| | | * @param attributeVOMap 属性对象 |
| | | * @return 属性的显示对象 |
| | | */ |
| | | @Override |
| | | public List<OsAttributeVO> listAttrByIds(Collection<String> attrCodes,Map<String, OsAttributeVO> attributeVOMap) { |
| | | if(CollectionUtils.isEmpty(attrCodes)){ |
| | | return null; |
| | | } |
| | | if(attributeVOMap == null){ |
| | | attributeVOMap = self.selectAllAttributeMap(); |
| | | } |
| | | List<OsAttributeVO> attributeVOS = new ArrayList<>(); |
| | | Map<String, OsAttributeVO> finalAttributeVOMap = attributeVOMap; |
| | | attrCodes.stream().forEach(attrCode->{ |
| | | OsAttributeVO attributeVO = finalAttributeVOMap.getOrDefault(attrCode.toLowerCase(),null); |
| | | if(attributeVO!=null){ |
| | | attributeVOS.add(attributeVO); |
| | | } |
| | | }); |
| | | return attributeVOS; |
| | | } |
| | | |
| | | /** |
| | | * 批量添加属性 |
| | | * |
| | | * @param attribItemList 属性的列表 |
| | |
| | | //检查默认值与属性类型是否匹配 |
| | | checkDefValue(osAttributeDTO); |
| | | boolean compatible = isCompatible(osAttributeVO,osAttributeDTO); |
| | | boolean hasInstance = hasInstance(osAttributeDTO.getName()); |
| | | //产生数据, 并且不兼容 |
| | | if(hasInstance && !compatible){ |
| | | //boolean hasInstance = hasInstance(osAttributeDTO.getId()); //不判断是否产生数据只要被引用就需要进一步判断类型是否兼容 |
| | | boolean checkAttrIsUse = this.checkAttrIsUse(osAttributeDTO.getId()); |
| | | //TODO:按照以前操作配置文档中的逻辑应该是:不论是否产生数据只要被引用就需要要判断类型是否兼容(如VTString不能转为VTIntger或VTLong) |
| | | if(checkAttrIsUse/*hasInstance*/ && !compatible){ |
| | | throw new PLException("500",new String[]{"无效变更, 不兼容已产生的数据!"}); |
| | | } |
| | | String userId = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(); |
| | |
| | | */ |
| | | private boolean hasInstance(String abName) throws PLException { |
| | | return osBtmService.hasInstance(abName) && osLinkTypeServiceI.hasInstance(abName); |
| | | } |
| | | |
| | | /** |
| | | * 查看属性是否被引用 |
| | | * @param abName |
| | | * @return false未被引用 true被引用 |
| | | */ |
| | | private boolean checkAttrIsUse(String abName) throws PLException { |
| | | if(Func.isBlank(abName)){ |
| | | return false; |
| | | } |
| | | String[] btNames = platformClientUtil.getBtmService().getBTNamesByAPName(abName); |
| | | if(Func.isNotEmpty(btNames)){ |
| | | return true; |
| | | } |
| | | String[] ltNames = platformClientUtil.getLinkTypeService().getLTNamesByAPName(abName); |
| | | if(Func.isNotEmpty(ltNames)){ |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | |
| | | throw new PLException("500",new String[]{"请选择要查询应用范围的属性!"}); |
| | | } |
| | | String[] btNames = platformClientUtil.getBtmService().getBTNamesByAPName(attributeName); |
| | | if(Func.isEmpty(btNames)){ |
| | | String[] ltNames = platformClientUtil.getLinkTypeService().getLTNamesByAPName(attributeName); |
| | | String[] mergedArray = Stream.concat(Stream.of(btNames), Stream.of(ltNames)).toArray(String[]::new); |
| | | |
| | | if(Func.isEmpty(mergedArray)){ |
| | | return new ArrayList<>(); |
| | | } |
| | | List<Map<String,String>> btmNameMapList = new ArrayList<>(); |
| | | Arrays.stream(btNames).forEach(btName->{ |
| | | Arrays.stream(mergedArray).forEach(btName->{ |
| | | Map<String, String> itemMap = new HashMap<>(); |
| | | itemMap.put("attributeName",attributeName); |
| | | itemMap.put("source",btName); |
| | |
| | | } |
| | | osAttributeDTO.setBtmTypeId(osAttributePO.getEnumId()); |
| | | } |
| | | osAttributeDTO.setOid(VciBaseUtil.getPk().toUpperCase(Locale.ROOT)); |
| | | osAttributeDTO.setOid(ObjectUtility.getNewObjectID36()); |
| | | osAttributeDTO.setId(osAttributePO.getId()); |
| | | osAttributeDTO.setName(osAttributePO.getName()); |
| | | osAttributeDTO.setDescription(osAttributePO.getDescription()); |