From 5203081b68e3a8dc139d1807b2f8774e4a00a82a Mon Sep 17 00:00:00 2001 From: ludc <ludc@vci-tech.com> Date: 星期四, 16 一月 2025 11:11:59 +0800 Subject: [PATCH] 退出登录接口增加清除session、jwttoken等缓存信息 --- Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsAttributeServiceImpl.java | 259 ++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 214 insertions(+), 45 deletions(-) diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsAttributeServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsAttributeServiceImpl.java index c8facba..fbbf6db 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsAttributeServiceImpl.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsAttributeServiceImpl.java @@ -4,19 +4,17 @@ 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; @@ -25,18 +23,13 @@ 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; @@ -47,16 +40,12 @@ 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.*; /** @@ -91,14 +80,22 @@ private Integer NAME_MAX_LENGTH = 28; /** - * 绯荤粺涓彉閲忛厤缃枃浠朵腑閰嶇疆鐨刱ey + * 鏁版嵁搴撲腑鐨勪竴浜涘叧閿瓧 */ - private final String SYSUSEDNAMES = "sysUsedNames"; - - /** - * 鏁版嵁搴撲腑鍏抽敭瀛楅厤缃枃浠朵腑閰嶇疆鐨刱ey - */ - 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"); /** * 閾炬帴绫诲瀷鏈嶅姟 @@ -135,6 +132,100 @@ * 榛樿灞炴�х殑鏄犲皠锛宬ey鏄皬鍐� */ 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); + } + } + } /** * 鑾峰彇榛樿鐨勫睘鎬� @@ -247,13 +338,20 @@ attributeVO.setLastModifyTime(new Date(attribItem.modifyTime)); attributeVO.setTs(VciDateUtil.str2Date(attribItem.ts,VciDateUtil.DateTimeMillFormat)); }catch (Throwable e){ - + e.printStackTrace(); + String errorLog = "灞炴�O杞琕O鏃跺嚭閿欙紝鍘熷洜锛�"+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("<","<")); @@ -419,6 +517,32 @@ } /** + * 浣跨敤灞炴�х紪鍙疯幏鍙栧璞�--鎵归噺 + * + * @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 灞炴�х殑鍒楄〃 @@ -514,9 +638,10 @@ //妫�鏌ラ粯璁ゅ�间笌灞炴�х被鍨嬫槸鍚﹀尮閰� 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锛氭寜鐓т互鍓嶆搷浣滈厤缃枃妗d腑鐨勯�昏緫搴旇鏄細涓嶈鏄惁浜х敓鏁版嵁鍙琚紩鐢ㄥ氨闇�瑕佽鍒ゆ柇绫诲瀷鏄惁鍏煎锛堝VTString涓嶈兘杞负VTIntger鎴朧TLong锛� + if(checkAttrIsUse/*hasInstance*/ && !compatible){ throw new PLException("500",new String[]{"鏃犳晥鍙樻洿, 涓嶅吋瀹瑰凡浜х敓鐨勬暟鎹紒"}); } String userId = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(); @@ -669,6 +794,26 @@ } /** + * 鏌ョ湅灞炴�ф槸鍚﹁寮曠敤 + * @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 娌℃湁杩斿洖鍊硷紝瀛樺湪闂鐩存帴鎶涘嚭閿欒 @@ -777,10 +922,14 @@ * @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; } @@ -794,9 +943,7 @@ */ 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; @@ -849,11 +996,14 @@ 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); @@ -1073,7 +1223,7 @@ } 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()); @@ -1142,17 +1292,36 @@ * @return */ @Override - public List<OsAttributeVO> getOsAttributeVOSByBtName(String btName, int typeFlag) throws Exception{ + public List<OsAttributeVO> getOsAttributeVOSByBtName(String btName, int typeFlag,boolean isDefault) throws Exception{ VciBaseUtil.alertNotNull(btName,"鍙傛暟涓嶅厑璁镐负绌�",typeFlag,"鍙傛暟涓嶅厑璁镐负绌�"); List<OsAttributeVO> attributeVOS=new ArrayList<>(); + try { - AttributeDef[] attributeDefs=new AttributeDef[]{}; + List<AttributeDef> attributeDefList=new ArrayList<>(); if(typeFlag==0){ - attributeDefs= platformClientUtil.getBtmService().getAttributeDefs(btName); + 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{ - attributeDefs=platformClientUtil.getLinkTypeService().getAttributes(btName); + 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(Arrays.asList(attributeDefs)); + attributeVOS=attributeDO2VOs(attributeDefList); }catch (PLException e){ throw new Exception("鏍规嵁涓氬姟绫诲瀷鑾峰彇灞炴�у紓甯�"+e.getMessage()); } -- Gitblit v1.9.3