田源
2023-12-01 504dcb79430e0010e6b443e1ae2ef7f35b86e1a7
Merge remote-tracking branch 'origin/master'
已修改9个文件
已添加1个文件
127 ■■■■ 文件已修改
Source/UBCS-WEB/src/views/monitor/log/operateLog.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/impl/LogLocalServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeRuleCharacterVO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/SpecialCharacterConverter.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeRuleCharacterController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeRuleCharacterService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleCharacterServiceImpl.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);