| | |
| | | import com.vci.client.common.datatype.VTInteger; |
| | | 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.vrm.VersionRule; |
| | | import com.vci.dto.OsAttributeDTO; |
| | | import com.vci.dto.OsEnumDTO; |
| | | import com.vci.dto.OsEnumItemDTO; |
| | | import com.vci.enumpck.UI.ItemTypeEnum; |
| | | import com.vci.model.OsAttributeDO; |
| | | import com.vci.omd.dataType.VTDataType; |
| | | import com.vci.pagemodel.OsEnumItemVO; |
| | | import com.vci.omd.objects.OtherInfo; |
| | | import com.vci.pagemodel.OsAttributeVO; |
| | | import com.vci.pagemodel.OsEnumVO; |
| | | import com.vci.pagemodel.OsUsedAttributeVO; |
| | | import com.vci.po.OsAttributePO; |
| | | import com.vci.po.OsEnumPO; |
| | | import com.vci.starter.poi.bo.ReadExcelOption; |
| | | import com.vci.starter.poi.bo.WriteExcelData; |
| | | import com.vci.starter.poi.bo.WriteExcelOption; |
| | |
| | | import com.vci.starter.web.annotation.log.VciUnLog; |
| | | import com.vci.starter.web.enumpck.VciFieldTypeEnum; |
| | | import com.vci.starter.web.exception.VciBaseException; |
| | | import com.vci.starter.web.pagemodel.BaseQueryObject; |
| | | import com.vci.starter.web.pagemodel.BaseResult; |
| | | import com.vci.starter.web.pagemodel.DataGrid; |
| | | import com.vci.starter.web.pagemodel.*; |
| | | import com.vci.starter.web.util.*; |
| | | import com.vci.model.OsAttributeDO; |
| | | import com.vci.pagemodel.OsAttributeVO; |
| | | import com.vci.web.properties.UsedNames; |
| | | import com.vci.web.enumpck.PortalVITypeFlag; |
| | | import com.vci.web.service.OsAttributeServiceI; |
| | | import com.vci.web.service.OsBaseServiceI; |
| | | import com.vci.web.service.OsEnumServiceI; |
| | | import com.vci.web.service.OsLinkTypeServiceI; |
| | | import com.vci.web.util.Func; |
| | | import com.vci.starter.web.util.Lcm.Func; |
| | | import com.vci.web.util.PlatformClientUtil; |
| | | import com.vci.web.util.WebUtil; |
| | | import org.apache.commons.lang3.StringUtils; |
| | |
| | | import org.springframework.context.annotation.Lazy; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import javax.swing.*; |
| | | import java.awt.*; |
| | | import java.io.File; |
| | | 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.*; |
| | | |
| | | /** |
| | |
| | | private Integer NAME_MAX_LENGTH = 28; |
| | | |
| | | /** |
| | | * 系统中变量配置文件中配置的key |
| | | * 数据库中的一些关键字 |
| | | */ |
| | | private final String SYSUSEDNAMES = "sysUsedNames"; |
| | | |
| | | /** |
| | | * 数据库中关键字配置文件中配置的key |
| | | */ |
| | | private final String DATABASEUSEDNAMES = "dataBaseUsedNames"; |
| | | private final List<String> DATABASEUSEDNAMELIST = Arrays.asList( |
| | | "ACCESS", "ADD", "ALL", "ALTER", "AND", "ANY", "AS", "ASC", "AUDIT", "BETWEEN", |
| | | "BY", "CHAR", "CHECK", "CLUSTER", "COLUMN", "COMMENT", "COMPRESS", "CONNECT", |
| | | "CREATE", "CURRENT", "DATE", "DECIMAL", "DEFAULT", "DELETE", "DESC", "DISTINCT", |
| | | "DROP", "ELSE", "EXCLUSIVE", "EXISTS", "FILE", "FLOAT", "FOR", "FROM", "GRANT", "GROUP", |
| | | "HAVING", "IDENTIFIED", "IMMEDIATE", "IN", "INCREMENT", "INDEX", "INITIAL", |
| | | "INSERT", "INTEGER", "INTERSECT", "INTO", "IS", "LEVEL", "LIKE", "LOCK", "LONG", |
| | | "MAXEXTENTS", "MINUS", "MLSLABEL", "MODE", "MODIFY", "NOAUDIT", "NOCOMPRESS", |
| | | "NOT", "NOWAIT", "NULL", "NUMBER", "OF", "OFFLINE", "ON", "ONLINE", "OPTION", "OR", "ORDER", |
| | | "P", "CTFREE", "PRIOR", "PRIVILEGES", "PUBLIC", "RAW", "RENAME", "RESOURCE", "REVOKE", |
| | | "ROW", "ROWID", "ROWNUM", "ROWS", "SELECT", "SESSION", "SET", "SHARE", "SIZE", "SMALLINT", |
| | | "START", "SUCCESSFUL", "SYNONYM", "SYSDATE", "TABLE", "THEN", "TO", "TRIGGER", "UID", "UNION", |
| | | "UNIQUE", "UPDATE", "USER", "VALIDATE", "VALUES", "VARCHAR", "VARCHAR2", "VIEW", |
| | | "WHENEVER", "WHERE", "WITH"); |
| | | |
| | | /** |
| | | * 链接类型服务 |
| | |
| | | * 默认属性的映射,key是小写 |
| | | */ |
| | | private static Map<String,OsAttributeVO> defaultAttributeVOMap = new HashMap<>(); |
| | | |
| | | @Override |
| | | public List<Tree> getTreeAttributesByBtmName(TreeQueryObject treeQueryObject) { |
| | | List<Tree> rootTreeList=new ArrayList<>(); |
| | | |
| | | Map<String, String> conditionMap = treeQueryObject.getConditionMap(); |
| | | if (conditionMap == null) { |
| | | conditionMap = new HashMap<>(); |
| | | } |
| | | String typeName = StringUtils.isBlank(conditionMap.get("typeName")) ? "" : conditionMap.get("typeName"); |
| | | if (StringUtils.isBlank(typeName)) { |
| | | VciBaseUtil.alertNotNull(typeName,"业务类型名称"); |
| | | } |
| | | try { |
| | | String typeFlag=StringUtils.isBlank(conditionMap.get("typeFlag"))?"":conditionMap.get("typeFlag"); |
| | | PortalVITypeFlag portalVITypeFlag= PortalVITypeFlag.getByName(typeFlag); |
| | | Short viTypeFlag=-1; |
| | | if(portalVITypeFlag!=null){ |
| | | viTypeFlag=portalVITypeFlag.getIntVal(); |
| | | } |
| | | boolean isDefault =Boolean.parseBoolean(conditionMap.get("isDefault")); |
| | | Tree tree = new Tree("root", "【" + typeName + "】属性信息", "root"); |
| | | tree.setLevel(0); |
| | | rootTreeList.add(tree); |
| | | getChildTree(rootTreeList,typeName, viTypeFlag,isDefault); |
| | | }catch (Throwable e){ |
| | | e.printStackTrace(); |
| | | } |
| | | return rootTreeList; |
| | | } |
| | | |
| | | /** |
| | | * 构造属性树节点 |
| | | * @param parentTreeList |
| | | * @param refTypeName |
| | | * @param refFlag |
| | | * @param isDefault |
| | | * @throws Exception |
| | | */ |
| | | private void getChildTree(List<Tree> parentTreeList,String refTypeName,int refFlag,boolean isDefault) throws Exception { |
| | | for (Tree pTree : parentTreeList) { |
| | | if (pTree.getLevel()>= 3) { |
| | | continue; |
| | | } |
| | | Object o= pTree.getData(); |
| | | String pName=pTree.getText(); |
| | | boolean isOsAttributeVO=false; |
| | | if(o instanceof OsAttributeVO){ |
| | | isOsAttributeVO=true; |
| | | OsAttributeVO osAttributeVO=(OsAttributeVO)o; |
| | | String other = osAttributeVO.getOther(); |
| | | OtherInfo otherInfo = OtherInfo.getOtherInfoByText(other); |
| | | refFlag = otherInfo.getRefFlag(); |
| | | refTypeName = otherInfo.getRefTypeName(); |
| | | } |
| | | List<OsAttributeVO> childOsAttributeVOList=new ArrayList<>(); |
| | | if (refFlag != -1) { |
| | | // pName: 为参照属性名加上路径 |
| | | childOsAttributeVOList=getOsAttributeVOSByBtName(refTypeName,refFlag,isDefault); |
| | | if(!CollectionUtils.isEmpty(childOsAttributeVOList)) { |
| | | List<Tree> childTreeList= new ArrayList<>(); |
| | | boolean finalIsOsAttributeVO = isOsAttributeVO; |
| | | childOsAttributeVOList.stream().forEach(childOsAttributeVO->{ |
| | | Tree childTree = new Tree(childOsAttributeVO.getOid(), childOsAttributeVO.getId(), childOsAttributeVO); |
| | | childTree.setOid(childOsAttributeVO.getOid()); |
| | | childTree.setParentName(pTree.getText()); |
| | | childTree.setParentId(pTree.getOid()); |
| | | childTree.setLevel(pTree.getLevel()+1); |
| | | childTree.setLeaf(true); |
| | | if(finalIsOsAttributeVO) { |
| | | childTree.setText(pName + "." + childOsAttributeVO.getId()); |
| | | }else{ |
| | | childTree.setText(childOsAttributeVO.getId()); |
| | | } |
| | | if (childTree.getLevel()>= 3) { |
| | | childTree.setLeaf(true); |
| | | } |
| | | childTreeList.add(childTree); |
| | | }); |
| | | if(childTreeList.size()>0){ |
| | | pTree.setChildren(childTreeList); |
| | | pTree.setExpanded(false); |
| | | getChildTree(childTreeList,refTypeName,refFlag,isDefault); |
| | | }else{ |
| | | pTree.setLeaf(true); |
| | | pTree.setExpanded(true); |
| | | } |
| | | |
| | | } |
| | | }else{ |
| | | pTree.setExpanded(true); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取默认的属性 |
| | |
| | | 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 属性的列表 |
| | |
| | | ); |
| | | //属性英文名称校验(判空、系统中判重、是否关键字、是否合规等) |
| | | checkName(osAttributeDTO.getId()); |
| | | //检查属性名是否已存在与系统中 |
| | | if(platformClientUtil.getAttributeService().checkRowIsExists(osAttributeDTO.getId())){ |
| | | throw new PLException("500",new String[]{"属性名称【" + osAttributeDTO.getId() + "】在系统中已存在!"}); |
| | | } |
| | | //检查默认值与属性类型是否匹配 |
| | | checkDefValue(osAttributeDTO); |
| | | //dto对象转换为存储所需对象 |
| | | osAttributeDTO.setOid(VciBaseUtil.getPk().toUpperCase(Locale.ROOT)); |
| | | //osAttributeDTO.setOid(VciBaseUtil.getPk().toUpperCase(Locale.ROOT)); |
| | | AttributeDef attributeDef = this.osAttributeDTO2AttributeDef(osAttributeDTO); |
| | | return platformClientUtil.getAttributeService().addAttributeDef(attributeDef); |
| | | } |
| | |
| | | //检查默认值与属性类型是否匹配 |
| | | 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(); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 查看属性是否被引用 |
| | | * @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; |
| | | } |
| | | |
| | | /** |
| | | * 检查属性名称是否符合规范 |
| | | * @param attributeName |
| | | * @return 没有返回值,存在问题直接抛出错误 |
| | |
| | | throw new PLException("500",new String[]{"属性名无效,原因:属性名是数据库关键字!"}); |
| | | } |
| | | //检查属性名是否已存在与系统中 |
| | | if(platformClientUtil.getAttributeService().checkRowIsExists(abName)){ |
| | | throw new PLException("500",new String[]{"属性名称在系统中已存在!"}); |
| | | } |
| | | /*if(platformClientUtil.getAttributeService().checkRowIsExists(abName)){ |
| | | throw new PLException("500",new String[]{"属性名称【" + abName + "】在系统中已存在!"}); |
| | | }*/ |
| | | } |
| | | |
| | | /** |
| | |
| | | * @param abName |
| | | * @return |
| | | */ |
| | | private boolean usedBySystem(String abName) { |
| | | private boolean usedBySystem(String abName) throws PLException { |
| | | boolean flag = false; |
| | | String[] names = UsedNames.getProperty(SYSUSEDNAMES).toUpperCase().split(","); |
| | | List<String> nameList = Arrays.asList(names); |
| | | AttributeDef[] sysAttributeDefs = platformClientUtil.getBtmService().getSysAttributeDefs(); |
| | | List<String> nameList = null; |
| | | if(Func.isNotEmpty(sysAttributeDefs)){ |
| | | nameList = Arrays.stream(sysAttributeDefs) |
| | | .map(item -> item.name.toUpperCase(Locale.ROOT)).collect(Collectors.toList()); |
| | | } |
| | | if(nameList.contains(abName.toUpperCase())){ |
| | | flag = true; |
| | | } |
| | |
| | | */ |
| | | private boolean usedByDataBase(String abName){ |
| | | boolean flag = false; |
| | | String[] names = UsedNames.getProperty(DATABASEUSEDNAMES).toUpperCase().split(","); |
| | | List<String> nameList = Arrays.asList(names); |
| | | if(nameList.contains(abName.toUpperCase())){ |
| | | if(DATABASEUSEDNAMELIST.contains(abName.toUpperCase())){ |
| | | flag = true; |
| | | } |
| | | return flag; |
| | |
| | | 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); |
| | |
| | | excelDataList.add(new WriteExcelData(0,index, columns.get(index))); |
| | | } |
| | | //按照属性名查询属性,然后处理属性导出 |
| | | List<String> enumNameList = Func.toStrList(attrNames); |
| | | List<OsAttributeVO> osAttributeVOS = this.listAttrByIds(enumNameList); |
| | | List<String> attrameList = Func.toStrList(attrNames); |
| | | List<OsAttributeVO> osAttributeVOS = this.listAttrByIds(attrameList); |
| | | if(Func.isEmpty(osAttributeVOS)){ |
| | | excelDataList.add(new WriteExcelData(1,1, "根据属性名称未查询到属性信息,请刷新后尝试重新导出!")); |
| | | }else{ |
| | |
| | | /** |
| | | * 导入属性 |
| | | * @param file |
| | | * @param isContinue 系统中出现重复是否跳过报错继续执行 |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public BaseResult importAttributes(File file) throws Exception{ |
| | | public BaseResult importAttributes(File file, boolean isContinue) throws Exception{ |
| | | VciBaseUtil.alertNotNull(file,"excel文件"); |
| | | if(!file.exists()){ |
| | | throw new VciBaseException("导入的excel文件不存在,{0}",new String[]{file.getPath()}); |
| | |
| | | List<OsAttributeDTO> dtoList = new ArrayList<>(); |
| | | //当前excel中是否重复用的判重Map:(key:判重属性,value:行号) |
| | | Map<String, String> excelReapeat = new HashMap<>(); |
| | | //判断必填属性是否为空,用户是否已存在,以及部门是否填错等校验逻辑 |
| | | poList.stream().forEach(osAttributePO -> { |
| | | for (int i = 0; i < poList.size(); i++) { |
| | | OsAttributePO osAttributePO = poList.get(i); |
| | | if(Func.isBlank(osAttributePO.getId())){//属性名判空 |
| | | throw new VciBaseException("第【"+osAttributePO.getRowIndex()+"】行,enumnameerror"); |
| | | throw new VciBaseException("第【"+osAttributePO.getRowIndex()+"】行,attrnameerror"); |
| | | }else if(Func.isBlank(osAttributePO.getAttributeDataType())){ |
| | | throw new VciBaseException("第【"+osAttributePO.getRowIndex()+"】行,typeerror"); |
| | | }else if(excelReapeat.containsKey(osAttributePO.getId())){//属性名表格中判重 |
| | | throw new VciBaseException("第【"+excelReapeat.get(osAttributePO.getId())+"】行和第【"+osAttributePO.getRowIndex()+"】行数据,属性名重复"); |
| | | }else { |
| | | try { |
| | | if(platformClientUtil.getAttributeService().checkRowIsExists(osAttributePO.getId())){ |
| | | throw new PLException("500",new String[]{"属性名称【" + osAttributePO.getId() + "】在系统中已存在!"}); |
| | | } |
| | | } catch (PLException e) { |
| | | e.printStackTrace(); |
| | | String errorMsg = "与系统中属性名查重时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e); |
| | | logger.error(errorMsg); |
| | | //是否跳过当期重复数据 |
| | | if(isContinue){ |
| | | continue; |
| | | } |
| | | throw new VciBaseException(errorMsg); |
| | | } |
| | | } |
| | | //属性名校验 |
| | | try { |
| | |
| | | //属性名excel中判重处理 |
| | | excelReapeat.put(osAttributePO.getId(),osAttributePO.getRowIndex()); |
| | | OsAttributeDTO osAttributeDTO = new OsAttributeDTO(); |
| | | //查询枚举是否存在,填写了枚举但没填写取值范围,这时候直接使用枚举项值作为默认的range |
| | | //查询属性是否存在,填写了枚举但没填写取值范围,这时候直接使用枚举项值作为默认的range |
| | | if(Func.isNotBlank(osAttributePO.getEnumId()) && Func.isBlank(osAttributePO.getRange())){ |
| | | try { |
| | | OsEnumVO enumVO = enumService.getEnumTypeById(osAttributePO.getEnumId()); |
| | |
| | | } |
| | | 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()); |
| | |
| | | checkDefValue(osAttributeDTO); |
| | | } catch (PLException e) { |
| | | e.printStackTrace(); |
| | | throw new VciBaseException(e.getMessage()); |
| | | throw new VciBaseException(VciBaseUtil.getExceptionMessage(e)); |
| | | } |
| | | dtoList.add(osAttributeDTO); |
| | | }); |
| | | } |
| | | //执行保存操作 |
| | | dtoList.stream().forEach(dto->{ |
| | | try { |
| | |
| | | }); |
| | | }catch (Exception e){ |
| | | if(logger.isErrorEnabled()){ |
| | | logger.error("读取excel内容时或保存用户信息时出现了错误,具体原因:",VciBaseUtil.getExceptionMessage(e)); |
| | | logger.error("读取excel内容时或保存属性时出现了错误,具体原因:",VciBaseUtil.getExceptionMessage(e)); |
| | | } |
| | | e.printStackTrace(); |
| | | return BaseResult.fail(VciBaseUtil.getExceptionMessage(e),new String[]{},e); |
| | | } |
| | | return BaseResult.success("枚举导入成功!"); |
| | | return BaseResult.success("属性导入成功!"); |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | |
| | | /** |
| | | * 根据业务类型获取属性信息 |
| | | * @param btName 业务类型/链接类型 |
| | | * @param typeFlag 0:业务类型,1:链接类型 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<OsAttributeVO> getOsAttributeVOSByBtName(String btName, int typeFlag,boolean isDefault) throws Exception{ |
| | | VciBaseUtil.alertNotNull(btName,"参数不允许为空",typeFlag,"参数不允许为空"); |
| | | List<OsAttributeVO> attributeVOS=new ArrayList<>(); |
| | | |
| | | try { |
| | | List<AttributeDef> attributeDefList=new ArrayList<>(); |
| | | if(typeFlag==0){ |
| | | AttributeDef [] attributeDefs= platformClientUtil.getBtmService().getAttributeDefs(btName); |
| | | if(attributeDefs!=null){ |
| | | attributeDefList.addAll(Arrays.stream(attributeDefs).collect(Collectors.toList())); |
| | | } |
| | | if(isDefault){ |
| | | AttributeDef [] sysAttributeDefs=platformClientUtil.getBtmService().getSysAttributeDefs(); |
| | | if(sysAttributeDefs!=null){ |
| | | attributeDefList.addAll(Arrays.stream(sysAttributeDefs).collect(Collectors.toList())); |
| | | } |
| | | } |
| | | }else{ |
| | | AttributeDef [] attributeDefs=platformClientUtil.getLinkTypeService().getAttributes(btName); |
| | | if(attributeDefs!=null){ |
| | | attributeDefList.addAll(Arrays.stream(attributeDefs).collect(Collectors.toList())); |
| | | } |
| | | if(isDefault){ |
| | | AttributeDef[] sysAbItems = platformClientUtil.getLinkTypeService().getSysAttributeDefs(); |
| | | if(sysAbItems!=null){ |
| | | attributeDefList.addAll(Arrays.stream(sysAbItems).collect(Collectors.toList())); |
| | | } |
| | | } |
| | | } |
| | | attributeVOS=attributeDO2VOs(attributeDefList); |
| | | }catch (PLException e){ |
| | | throw new Exception("根据业务类型获取属性异常"+e.getMessage()); |
| | | } |
| | | |
| | | return attributeVOS; |
| | | } |
| | | |
| | | /** |
| | | * 是否为参照属性 |
| | | * @param other 配置的其他 |
| | | * @return true 是参照 |