Source/UBCS-WEB/src/views/monitor/log/operateLog.vue
@@ -63,18 +63,18 @@ label: "ç¨æ·å", prop: "userName", search: true, width:'100' width:'120' }, { label: "å§å", prop: "realName", search: true, width:'100' width:'120' }, { label: "ç¨æ·ip", prop: "ip", width:'100' width:'130' }, { label: "模å", @@ -89,7 +89,7 @@ { label: "æä½ç»æ", prop: "operateResult", width:'100' width:'110' }, { label: "æè¿°", Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/impl/LogLocalServiceImpl.java
@@ -82,7 +82,7 @@ * @param logParentPath * @return */ //@Override @Override public List<LocalLogVO> getSystemLogList(String logParentPath) { List<LocalLogVO> localLogsVO = new ArrayList<>(); // ä¸ä¸ºç©ºè¯´ææ¯å è½½å½åè¿ä¸ªæå¡è·¯å¾ä¸çæ¥å¿æä»¶ @@ -90,6 +90,7 @@ File file = new File(logParentPath); if (file.isDirectory()) { File[] files = file.listFiles(); if(Func.isNotEmpty(files) && files.length>0){ Arrays.stream(files).forEach(item->{ // ç»å»ºæ¥å¿æä»¶å¯¹è±¡ LocalLogVO localLog = new LocalLogVO(); @@ -105,9 +106,11 @@ localLogsVO.add(localLog); }); } } }else { File fileDir = new File(PARENTPATH); File[] childDir = fileDir.listFiles(); if(Func.isNotEmpty(childDir) && childDir.length > 0){ Arrays.stream(childDir).forEach(dir->{ if(dir.getName().contains("ubcs_")){ String fullPath = dir.getPath() + LOGPATH; @@ -129,6 +132,7 @@ } }); } } return localLogsVO; } Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeRuleCharacterVO.java
@@ -23,6 +23,10 @@ * å符é */ private String chartValue; /** * éæ¿æ¢çå符 */ private String oldChartValue; /*** * å符类å */ Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/SpecialCharacterConverter.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,35 @@ package com.vci.ubcs.starter.util; import net.logstash.logback.encoder.org.apache.commons.lang3.StringEscapeUtils; /** * * @author ludc * @date 2023/12/1 9:16 */ public class SpecialCharacterConverter { /** * ç¹æ®åç¬¦è½¬ä¹ * @param input * @return */ public static String escapeSpecialCharacters(String input) { input = input.replace("'", "''"); // 转ä¹åå¼å· input = input.replace("\"", "\\\""); // 转ä¹åå¼å· input = input.replace("%", "\\%"); // 转ä¹ç¾åå· input = input.replace("_", "\\_"); // 转ä¹ä¸å线 input = input.replace("\\", "\\\\"); // 转ä¹åææ return input; } public static String unescapeSpecialCharacters(String input) { input = input.replace("''", "'"); // å转ä¹åå¼å· input = input.replace("\\\"", "\""); // å转ä¹åå¼å· input = input.replace("\\%", "%"); // å转ä¹ç¾åå· input = input.replace("\\_", "_"); // å转ä¹ä¸å线 input = input.replace("\\\\", "\\"); // å转ä¹åææ return input; } } Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeRuleCharacterController.java
@@ -35,7 +35,7 @@ */ @PostMapping("/addSave") public R addSave(@RequestBody CodeRuleCharacterVO codeRuleCharacterVO){ return iCodeRuleCharacterService.saveOrUpdate(codeRuleCharacterVO); return iCodeRuleCharacterService.saveOrUpdate(codeRuleCharacterVO,1); } /** * ä¿®æ¹è§å对象 @@ -44,7 +44,7 @@ */ @PostMapping("/editSave") public R editSave(@RequestBody CodeRuleCharacterVO codeRuleCharacterVO){ return iCodeRuleCharacterService.saveOrUpdate(codeRuleCharacterVO); return iCodeRuleCharacterService.saveOrUpdate(codeRuleCharacterVO,2); } /** @@ -54,6 +54,6 @@ */ @PostMapping("/delete") public R delete(@RequestBody CodeRuleCharacterVO codeRuleCharacterVO){ return iCodeRuleCharacterService.saveOrUpdate(codeRuleCharacterVO); return iCodeRuleCharacterService.saveOrUpdate(codeRuleCharacterVO,3); } } Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java
@@ -769,4 +769,26 @@ public R addSaveBZ (@RequestBody CodeBZApplyDTO codeBZApplyDTO) throws Exception { return R.success(engineService.addSaveBZ(codeBZApplyDTO)); } /** * ä¸è½½æ¹éç³è¯·çå¯¼å ¥æ¨¡æ¿ * @param codeClassifyOid åç±»çä¸»é® * @param response ååºå¯¹è±¡ * @throws IOException æåºå¼å¸¸ */ @GetMapping("/exportGroupCodeExcel") @VciBusinessLog(operateName = "导åºéå¢ç ") public void exportGroupCodeExcel(String codeClassifyOid, HttpServletResponse response) throws IOException{ String excelName = mdmIOService.createImportExcel(codeClassifyOid,false); try { ControllerUtil.writeFileToResponse(response,excelName); } catch (Throwable e) { //妿åºé,æé误信æ¯åå°text String msg = LangBaseUtil.getErrorMsg(e); if(StringUtils.isBlank(msg)){ msg = "æªç¥é误"; } ControllerUtil.writeDataToResponse(response,msg.getBytes(StandardCharsets.UTF_8),null); } } } Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeRuleCharacterService.java
@@ -32,8 +32,9 @@ /*** * ä¿åç¼ç è§åå符é * @param codeRuleCharacterVO * @param operationType * @return */ R saveOrUpdate(CodeRuleCharacterVO codeRuleCharacterVO)throws VciBaseException; R saveOrUpdate(CodeRuleCharacterVO codeRuleCharacterVO,int operationType)throws VciBaseException; } Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleCharacterServiceImpl.java
@@ -10,6 +10,7 @@ import com.vci.ubcs.code.service.ICodeRuleCharacterService; import com.vci.ubcs.code.vo.pagemodel.CodeRuleCharacterVO; import com.vci.ubcs.starter.exception.VciBaseException; import com.vci.ubcs.starter.poi.bo.SheetRowData; import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil; import com.vci.ubcs.starter.web.util.VciBaseUtil; import org.springblade.core.tool.api.R; @@ -41,6 +42,7 @@ public List<Map<String, String>> getDataByRuleId(String codeRuleId,String chartType) throws VciBaseException { List<Map<String,String>> charValueList=new ArrayList<>(); CodeRuleCharacter codeRuleCharacter=codeRuleCharacterMapper.selectOne(Wrappers.<CodeRuleCharacter>query().lambda().eq(CodeRuleCharacter::getCodeRuleId,codeRuleId).eq(CodeRuleCharacter::getChartType,chartType)); if(codeRuleCharacter!=null&&StringUtils.isNotBlank(codeRuleCharacter.getOid())){ List<Character> characterList=codeRuleCharacter.getChartValue().chars().mapToObj(c -> (char) c).collect(Collectors.toList()); for (int i = 0; i < characterList.size(); i += 15) { final int startIndex = i; @@ -54,6 +56,8 @@ } charValueList.add(chartMap); } } return charValueList; } /*** @@ -63,12 +67,13 @@ * @throws VciBaseException */ @Override public R saveOrUpdate(CodeRuleCharacterVO codeRuleCharacterVO) throws VciBaseException { public R saveOrUpdate(CodeRuleCharacterVO codeRuleCharacterVO,int operation) throws VciBaseException { VciBaseUtil.alertNotNull(codeRuleCharacterVO.getCodeRuleId(),"ç¼ç è§åid",codeRuleCharacterVO.getChartType(),"å符éç±»å"); CodeRuleCharacter codeRuleCharacter=codeRuleCharacterMapper.selectOne(Wrappers.<CodeRuleCharacter>query().lambda().eq(CodeRuleCharacter::getCodeRuleId,codeRuleCharacterVO.getCodeRuleId()).eq(CodeRuleCharacter::getChartType,codeRuleCharacterVO.getChartType())); if(codeRuleCharacter!=null&& StringUtils.isNotBlank(codeRuleCharacter.getOid())) { List<Character> oldCharacterList = StringUtils.isBlank(codeRuleCharacter.getChartValue())?new ArrayList<>():codeRuleCharacter.getChartValue().chars().mapToObj(c -> (char) c).collect(Collectors.toList()); List<Character> newCharacterList = StringUtils.isBlank(codeRuleCharacterVO.getChartValue())?new ArrayList<>():codeRuleCharacterVO.getChartValue().chars().mapToObj(c -> (char) c).collect(Collectors.toList()); if(operation==1) {//æ°å¢æ¶å List<Character> intersectList = intersect(oldCharacterList, newCharacterList); if (intersectList.size() > 0) { String ss = Joiner.on(",").join(intersectList); @@ -77,6 +82,33 @@ List<Character> allCharacterList = union(oldCharacterList, newCharacterList); String str = allCharacterList.stream().map(integer -> Func.isNotEmpty(integer)?integer.toString():"").collect(Collectors.joining()); codeRuleCharacter.setChartValue(str); }else if(operation==2){//ä¿®æ¹ String oldChartValue= codeRuleCharacterVO.getOldChartValue(); String chartValue= codeRuleCharacterVO.getChartValue(); Map<String,String> oldChartNewChartMap=new HashMap<>(); List<Character> chartValueList = StringUtils.isBlank(chartValue)?new ArrayList<>():chartValue.chars().mapToObj(c -> (char) c).collect(Collectors.toList()); List<Character> oldChartValueList = StringUtils.isBlank(oldChartValue)?new ArrayList<>():oldChartValue.chars().mapToObj(c -> (char) c).collect(Collectors.toList()); if(chartValueList.size()!=oldChartValueList.size()){ throw new VciBaseException("æ¿æ¢çå¼ä¸ªæ°ä¸éä¸å¼ç个æ°ä¸ç¸ç"); } /*** * id */ for (int i=0;i<oldChartValueList.size();i++){ Character oldValue=oldChartValueList.get(i); if(oldCharacterList.contains(oldValue)){ int index =oldCharacterList.indexOf(oldValue); oldCharacterList.set(index,chartValueList.get(i)); } } String str = oldCharacterList.stream().map(integer -> Func.isNotEmpty(integer) ? integer.toString() : "").collect(Collectors.joining()); codeRuleCharacter.setChartValue(str); }else{//å é¤ oldCharacterList.removeAll(newCharacterList); String str = oldCharacterList.stream().map(integer -> Func.isNotEmpty(integer) ? integer.toString() : "").collect(Collectors.joining()); codeRuleCharacter.setChartValue(str); } codeRuleCharacterMapper.updateById(codeRuleCharacter); }else{ codeRuleCharacter=new CodeRuleCharacter(); Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -44,6 +44,7 @@ import com.vci.ubcs.starter.revision.service.RevisionModelUtil; import com.vci.ubcs.starter.util.MdmBtmTypeConstant; import com.vci.ubcs.starter.util.SaveLogUtil; import com.vci.ubcs.starter.util.SpecialCharacterConverter; import com.vci.ubcs.starter.util.UBCSSqlKeyword; import com.vci.ubcs.starter.web.constant.QueryOptionConstant; import com.vci.ubcs.starter.web.constant.RegExpConstant; @@ -791,6 +792,7 @@ sql[0] += " and oid != '" + orderDTO.getCopyFromVersion() + "'"; } sql[0] += " and lastR = '1' and lastV = '1' "; // è·åä¸å䏿 ¡éªçåç±»oid String isParticipateCheckOids = classifyService.selectLeafByParentClassifyOid(classifyFullInfo.getTopClassifyVO().getOid(), classifyFullInfo.getCurrentClassifyVO().getOid()); if(Func.isNotEmpty(isParticipateCheckOids)){ sql[0] += " and codeclsfid not in(" + isParticipateCheckOids + ")"; @@ -1193,12 +1195,12 @@ temp = "%s"; } queryKey = String.format(temp, "nvl("+ "t." + attrId +",'/')"); queryValue = String.format(temp, "'" + (trim ? value.trim() : value) + "'"); queryValue = String.format(temp, "'" + (trim ? SpecialCharacterConverter.escapeSpecialCharacters(value.trim()):SpecialCharacterConverter.escapeSpecialCharacters(value)) + "'"); conditionMap.put(queryKey, queryValue); } else { if(StringUtils.isNotBlank(value)) { //ä¸ºç©ºçæ¶åä¸ä»£è¡¨ä¸æ ¡éªï¼åªæ¯ä¸å»é¤ç¸å ³çä¿¡æ¯ conditionMap.put("nvl("+ "t." + attrId+",'/')", "'" + value + "'"); conditionMap.put("nvl("+ "t." + attrId+",'/')", "'" + SpecialCharacterConverter.escapeSpecialCharacters(value) + "'"); }else{ conditionMap.put("t." + attrId, QueryOptionConstant.ISNULL); } @@ -2472,7 +2474,6 @@ return getSqlByValue(key, value, attrVOMap,btmType); } }*/ } /** Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
@@ -3824,7 +3824,7 @@ private void batchSwitchClassifyAttrOnOrder(Collection<CodeClassifyTemplateAttrVO> attrVOS,List<ClientBusinessObject> dataList, CodeClassifyFullInfoBO classifyFullInfo,boolean isImPort) { Map<String, CodeClassifyTemplateAttrVO> dateAttrVOMap = attrVOS.stream().filter( s -> StringUtils.isNotBlank(s.getClassifyInvokeAttr()) && StringUtils.isNotBlank(s.getClassifyInvokeAttr()) s -> StringUtils.isNotBlank(s.getClassifyInvokeAttr()) ).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); Map<String,CodeClassifyFullInfoBO> classifyFullInfoMap=new HashMap<>(); classifyFullInfoMap.put(classifyFullInfo.getCurrentClassifyVO().getOid(),classifyFullInfo);