1、集团码返码接口下标越界bug。
2、集团返码,需要修改我们系统中的属性,修改时需要判断每一个字段,确定哪些有修改,然后用oldBusinessData字段记录下修改前旧的业务数据。
3、同步型号代号,记录下对方的创建时间和修改时间。
已修改7个文件
165 ■■■■ 文件已修改
Source/UBCS-WEB/vue.config.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-applyjtcodeservice-api/src/main/java/com/vci/ubcs/code/applyjtcodeservice/entity/DockingPreAttrMapping.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feigh/MdmInterJtClient.java 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingSyncServiceImpl.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllDmMapperProcessor.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllMapperProcessor.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/vue.config.js
@@ -22,11 +22,13 @@
  },
  //开发模式反向代理配置,生产模式请使用Nginx部署并配置反向代理
  devServer: {
    //port: 8080,
    port: 38000,
    proxy: {
      '/api': {
        //本地服务接口地址
        target: 'http://127.0.0.1:37000',
        //target: 'http://127.0.0.1',
        // target: 'http://192.168.1.51:37000',
        // target: 'http://dev.vci-tech.com:37000',
        //yxc
Source/UBCS/ubcs-service-api/ubcs-applyjtcodeservice-api/src/main/java/com/vci/ubcs/code/applyjtcodeservice/entity/DockingPreAttrMapping.java
@@ -34,6 +34,7 @@
     * 默认值
     */
    @ApiModelProperty(value = "源系统的属性oid")
    @TableField(value = "metaListId")
    private String metaListId;
    /**
Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feigh/MdmInterJtClient.java
@@ -14,6 +14,7 @@
import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
import com.vci.ubcs.starter.util.MdmBtmTypeConstant;
import com.vci.ubcs.starter.util.SaveLogUtil;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
@@ -197,20 +198,34 @@
                if (res) {
                    //此处需要查询业务数据,去更改
                    R<List<BaseModel>> R = mdmEngineClient.selectByTypeAndOid(jdatabtmname,jdataid);
                    // TODO:新增业务逻辑,需要根据集团返回的属性进行判断,如果集团对该属性进行了修改编码系统也就需要对属性进行修改
                    if(R.isSuccess()){
                        List<BaseModel> oldDatalist=new ArrayList<>();
                        List<BaseModel> newDatalist=R.getData();
                        if(!CollectionUtils.isEmpty(newDatalist)){
                        List<BaseModel> newDatalist=new ArrayList<>();
                        List<BaseModel> oldDatalist=R.getData();
                        if(!CollectionUtils.isEmpty(oldDatalist)){
                            if(editObjectMap.containsKey(jdatabtmname)){
                                oldDatalist=editObjectMap.getOrDefault(jdatabtmname,new ArrayList<>());
                                newDatalist=editObjectMap.getOrDefault(jdatabtmname,new ArrayList<>());
                            }
                            BaseModel baseModel=oldDatalist.get(0);
                            //DefaultAttrAssimtUtil.updateDefaultAttrAssimt(baseModel);
                            baseModel.setLastModifyTime(new Date());
                            baseModel.getData().put("groupcode",customCoding);
                            baseModel.getData().put("GROUPCODE",customCoding);
                            // 1、取到集团返回的ViewInfos中编码视图中的属性
                            List<Map<String, Object>> viewValueList = mainData.getViewInfos().stream().filter(item -> item.getViewName().equals("编码视图")).map(DockingViewVO::getViewValue).findFirst().orElse(null);
                            // 2、比对属性是否和oldDatalist属性一致,不一致就需要更改
                            if(Func.isNotEmpty(viewValueList)){
                                // 3、需要将集团属性转换为我们系统的属性,再和我们系统的现有属性比对
                                String codeclsfid = VciBaseUtil.getMapStrValueIgnoreCase(baseModel.getData(),"CODECLSFID");
                                // 3.1、通过该条数据的分类id,拿到集团属性映射配置,用来将集团的属性映射到我们系统的属性
                                List<DockingPreAttrMapping> dockingPreAttrMappings = dockingPreAttrMappingService.selectByWrapper(Wrappers.<DockingPreAttrMapping>query().lambda().eq(DockingPreAttrMapping::getTargetClassifyId, codeclsfid).eq(DockingPreAttrMapping::getViewName,"编码视图"));
                                if(Func.isNotEmpty(dockingPreAttrMappings)){
                                    //根据集团属性映射将集团转到我们系统,并修改不一致的到我们系统中对应的该条记录的值
                                    sourceAttrKey2TargetKey(dockingPreAttrMappings, viewValueList.get(0), oldDatalist, baseModel);
                                }
                            }
                            log.info("申请单:"+applyId+",集团码:"+customCoding+"编码:"+baseModel.getId());
                            oldDatalist.add(baseModel);
                            editObjectMap.put(jdatabtmname,oldDatalist);
                            newDatalist.add(baseModel);
                            editObjectMap.put(jdatabtmname,newDatalist);
                        }
                    }
                }
@@ -234,6 +249,37 @@
        return R.success("集团码赋值成功");
    }
    /**
     * 根据集团属性映射将集团转到我们系统
     * @param dockingPreAttrMappings
     * @param viewValueMap
     * @param oldDatalist
     * @param baseModel
     */
    private void sourceAttrKey2TargetKey(List<DockingPreAttrMapping> dockingPreAttrMappings,Map<String, Object> viewValueMap, List<BaseModel> oldDatalist,BaseModel baseModel){
        Map<String, Object> targetKeyMap = new HashMap<>();
        // 将集团属性转成我们系统属性的map
        dockingPreAttrMappings.stream().forEach(item->{
            targetKeyMap.put(item.getTargetAttrKey(),viewValueMap.get(item.getSourceAttrKey()));
        });
        // 比对baseModel的data中的属性是否和targetKeyMap不一致,不一致的话就需要将baseModel的data中的对应key的value值转成集团的
        boolean isEdit = false;
        for (Map.Entry<String, Object> entry : targetKeyMap.entrySet()) {
            String key = entry.getKey();
            Object targetValue = entry.getValue();
            String dataValue = baseModel.getData().get(key);
            if (targetValue != null && !targetValue.equals(dataValue)) {
                baseModel.getData().put(key, targetValue.toString());
                isEdit = true;
            }
        }
        // 集团对我们系统属性做了调整,我们需要对老的业务数据做记录
        if (isEdit) {
            baseModel.getData().put("oldbusinessdata", JSON.toJSONString(oldDatalist));
        }
    }
    /***
     * 接受集团分类主模型数据
     * @param dockingClassifyModelAttrVO
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingSyncServiceImpl.java
@@ -2,7 +2,6 @@
import com.alibaba.cloud.commons.lang.StringUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.shaded.com.google.protobuf.ServiceException;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -28,7 +27,6 @@
import com.vci.ubcs.code.enumpack.CodeDefaultLC;
import com.vci.ubcs.code.enumpack.CodeSecTypeEnum;
import com.vci.ubcs.code.enumpack.SysIntegrationDataFlowTypeEnum;
import com.vci.ubcs.code.feign.MdmSearchItemCodeProvider;
import com.vci.ubcs.code.mapper.CommonsMapper;
import com.vci.ubcs.code.service.*;
import com.vci.ubcs.code.util.gennerAttrMapUtil;
@@ -54,7 +52,6 @@
import com.vci.ubcs.starter.web.util.WebUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.map.CaseInsensitiveMap;
import org.springblade.core.redis.cache.BladeRedis;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
@@ -80,7 +77,6 @@
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
import static com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_TAKEBACK;
import static com.vci.ubcs.code.constant.MdmDuckingConstant.*;
import static com.vci.ubcs.code.constant.MdmEngineConstant.DEFAULT_SYNC_ATTR_LIST;
import static com.vci.ubcs.code.enumpack.CodeSecTypeEnum.CODE_CLASSIFY_SEC;
@@ -172,8 +168,8 @@
    /***
     * resdis缓存服务
     */
    @Resource
    private BladeRedis bladeRedis;
    //@Resource
    //private BladeRedis bladeRedis;
    @Resource
    private IDockingSysIntParamService dockingSysIntParamService;
@@ -181,8 +177,8 @@
    @Resource
    private IDockingSysIntHeaderService dockingSysIntHeaderService;
    @Autowired(required = false)
    private MdmSearchItemCodeProvider mdmSearchItemCodeProvider;
    //@Autowired(required = false)
    //private MdmSearchItemCodeProvider mdmSearchItemCodeProvider;
    @Resource
    private ICodeAllCodeService codeAllCodeService;
@@ -738,12 +734,17 @@
     initProperty("projectitem","",projectItem,propList);
     String materialCode=searchItemDataVO.getMATERIALCODE();//产品编码
     initProperty("materialcode","",materialCode,propList);
        Date cretaeDon = searchItemDataVO.getCREATEDON();//创建日期 日期型,如:2023-09-08 19:24:11
        initProperty("cretaedon", "", Func.formatDateTime(cretaeDon), propList);
        Date lastchangeDon = searchItemDataVO.getLASTCHANGEDON();//更改时间 日期型,如:2023-09-08 19:24:11
        initProperty("lastchangedon", "", Func.formatDateTime(lastchangeDon), propList);
     //组合属性的处理
     initProperty(attrKey,"",StringUtils.isNotBlank(projectItem)?projectItem:mmodelCode,propList);
     String creatBy=searchItemDataVO.getCREATBY();//创建者
     Date cretaeDon= searchItemDataVO.getCREATEDON();//创建日期 日期型,如:2023-09-08 19:24:11
        //Date cretaeDon = searchItemDataVO.getCREATEDON();//创建日期 日期型,如:2023-09-08 19:24:11
     String lastchangeBy=searchItemDataVO.getLASTCHANGEDBY();//更改者
     Date lastchangeDon=searchItemDataVO.getLASTCHANGEDON();//更改时间 日期型,如:2023-09-08 19:24:11
        //Date lastchangeDon = searchItemDataVO.getLASTCHANGEDON();//更改时间 日期型,如:2023-09-08 19:24:11
     String isenabled=  searchItemDataVO.getISENABLED();//字符型,枚举值;停用:0;启用:1;
     applyDataVO.setOperate(operation);
     applyDataVO.setCode(code);
@@ -961,11 +962,12 @@
                String classifyoid = dockingTask.getClassifyOid();
                //查询要推送的数据
                String btmoid = dockingTask.getBtmOid();//数据btmid
                String code=dockingTask.getId();;
                String code = dockingTask.getId();
                ;
                //表示是主数据
                CodeClassifyTemplateVO codeClassifyTemplateVO = mdmEngineServiceI.getUsedTemplateByClassifyOid(classifyoid);
                R<List<Map<String, String>>> r = mdmEngineServiceI.getDataByOid(btmoid, codeClassifyTemplateVO.getOid());
                log.info("推送人员数据,执行到查询主数据和模板属性阶段!!");
                List<CodeClassifyTemplateAttrVO> attrVOS = codeClassifyTemplateVO.getAttributes();
                Map<String/**英文名称**/, String/**中文名称**/> attrIdNameMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t.getName(), (o1, o2) -> o2));
                Map<String, String> data = new HashMap<>();
@@ -995,12 +997,12 @@
                    data = r.getData().get(0);
                }
                List<NodeProDTO> nodeProDTOS = new ArrayList<>();
                Map<String, String> finalData = data;
                AtomicReference<String> newItemId= new AtomicReference<>("");
                final Map<String, String> finalData = data;
                List<String> newItemId = new ArrayList<>();
                finalData.keySet().forEach(field -> {
                    if(field.toLowerCase(Locale.ROOT).equals(itemId.toLowerCase(Locale.ROOT))){
                        String Value = finalData.get(field);
                        newItemId.set(Value);
                        newItemId.add(Value);
                    }
                    String outName = attrIdNameMap.get(field);
                    if (finalData.containsKey(field)) {
@@ -1037,7 +1039,7 @@
                nodeObjectDTO.setCode(code);//设置编码
                nodeObjectDTO.setClassCode(classCodeLeves[0]);
                nodeObjectDTO.setStatus(data.get("lcstatus"));
                nodeObjectDTO.setItemid(newItemId.get());
                nodeObjectDTO.setItemid(newItemId.get(0));
                nodeObjectDTO.setLibrary(classCodeLeves[classCodeLeves.length - 1]);
                nodeObjectDTO.setPro(nodeProDTOS);
                List<NodeObjectDTO> nodeObjectDTOS = new ArrayList<>();
@@ -1057,6 +1059,7 @@
                    xStream.autodetectAnnotations(true);
                    sendString = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" + xStream.toXML(nodeDataDTO);
                }
                log.info("推送人员数据,执行到调用HR接口了!!");
                //调用接口
                callInterface(sendString,dockingSystemConfig, dockingTask,"pushData");
            }catch (Throwable e){
@@ -1118,6 +1121,7 @@
                    for (DockingSysIntHeader dockingSysIntHeader : dockingSysIntHeaderList) {
                        headers.add(dockingSysIntHeader.getHeaderKey(), dockingSysIntHeader.getHeaderValue());
                    }
                    log.info("推送人员数据,执行到调用接口了,地址:" + url);
                    backString = HttpUtils.postByMediaType(
                        url,
                        params,
@@ -1183,6 +1187,7 @@
            resultNodeObjectDTOS.add(resultNodeObjectDTO);
        }finally {
            boolean isSend = false;
            log.info("推送人员数据,执行到final阶段了");
            for (ResultNodeObjectDTO resultNodeObjectDTO:resultNodeObjectDTOS){
                String erroid = resultNodeObjectDTO.getErroid();
                msg = resultNodeObjectDTO.getMsg();
@@ -1271,6 +1276,7 @@
    /**
     * dockingdata根据oid修改sendflag
     *
     * @param oid
     * @param sendflag
     * @return
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
@@ -67,6 +67,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import javax.xml.bind.ValidationEvent;
import java.beans.BeanInfo;
@@ -168,7 +169,8 @@
    /**
     * 近义词规则查询服务
     */
    @Autowired ICodeSynonymService codeSynonymService;
    @Autowired
    ICodeSynonymService codeSynonymService;
    /**
     * 公式的服务
@@ -630,6 +632,7 @@
    /**
     * 获取码段宽度
     *
     * @param codeClassifyOid
     * @return
     */
@@ -733,6 +736,7 @@
    /**
     * 计算码段长度加前后缀的长度
     *
     * @param codeBasicSecVO
     * @param secWidth
     */
@@ -753,6 +757,7 @@
    /**
     * 导出的时候封装必输和关键属性
     *
     * @param attrVO 属性的显示对象
     * @param text 单元格的值
     */
@@ -1591,7 +1596,6 @@
        columnVOList.add(errorMsgColumnVO);
        ColumnVO pathColumnVO=new ColumnVO();
        pathColumnVO.setTitle("分类路径");
        pathColumnVO.setField("codeclsfid");
@@ -1612,11 +1616,11 @@
    /**
     * 错误信息返回excel
     *
     * @param rowDataList 所有的导入数据
     * @param errorMap 错误的信息
     * @param needRowIndexList 需要写入的数据的行号
     * @param titleRowData 标题行
     *
     * @return 错误的excel文件,没有错误会返回空
     */
    private String returnErrorToExcel(Collection<SheetRowData> rowDataList,
@@ -1657,6 +1661,7 @@
    /**
     * 校验模板是否为同步的
     *
     * @param sheetDataSetList excel里的内容
     * @param templateVO 模板的信息
     */
@@ -1883,7 +1888,6 @@
    }
    /**
     *
     * @param oid
     * @param redisOid
     * @return
@@ -1891,7 +1895,8 @@
    @Override
    public DataGrid<Map<String,String>> gridRowResemble(String oid,String redisOid){
        VciBaseUtil.alertNotNull(redisOid,"导入相似数据",redisOid,"数据缓存主键");
        List<DataResembleVO> codeImprotDataVOs = bladeRedis.get(redisOid);;
        List<DataResembleVO> codeImprotDataVOs = bladeRedis.get(redisOid);
        ;
        DataGrid<Map<String, String>> dataGrid = new DataGrid<>();
        List<Map<String, String>> dataList = new ArrayList<>();
@@ -2048,6 +2053,7 @@
    /**
     * 查询数据并导出到excel
     *
     * @param btmTypeId 业务类型
     * @param conditionMap 查询条件
     * @param pageHelper 分页
@@ -2132,6 +2138,7 @@
    /**
     * 相似项查询出来之后再点击确认时调用的
     *
     * @param codeImprotSaveDatVOList
     * @param classifyAttr
     * @param isImprot
@@ -2357,6 +2364,7 @@
    /**
     * 集成批量申请数据
     *
     * @param orderDTO 分类的主键
     * @param dataObjectVO 数据信息
     * @param resultDataObjectDetailDOs 错误信息
@@ -3267,6 +3275,7 @@
            log.error("设置默认的属性的值错误", e);
        }
    }
    /**
     * 设置新的值到申请对象上
     *
@@ -3396,6 +3405,7 @@
    /**
     * 获取分类的全路径
     *
     * @param classifyFullInfo 分类的全部信息
     * @return 全路径
     */
@@ -3412,6 +3422,7 @@
    /**
     * 检查码段的长度是否符合要求
     *
     * @param cboList 数据
     * @param classifyVOMap 分类映射
     * @param ruleVOMap 规则对象
@@ -3480,6 +3491,7 @@
    /**
     * excel转换为cbo的对象
     *
     * @param classifyFullInfo 分类的全部信息
     * @param fieldIndexMap 字段的位置
     * @param rowDataList excel里的行数据
@@ -3593,6 +3605,7 @@
    /**
     * excel转换为cbo的对象
     *
     * @param classifyFullInfo 分类的全部信息
     * @param codeImprotDataVO: 分类对应的数据
     * @param cboList 数据的列表
@@ -3643,6 +3656,7 @@
    /**
     * excel转换为cbo的对象
     *
     * @param classifyFullInfo 分类的全部信息
     * @param fieldIndexMap 字段的位置
     * @param rowDataList excel里的行数据
@@ -3705,6 +3719,7 @@
    /**
     * excel转换为cbo的对象
     *
     * @param fieldIndexMap 字段的位置
     * @param rowDataList excel里的行数据
     * @param orderDTO 整理的数据
@@ -3760,7 +3775,6 @@
        }
//        Iterator<Map.Entry<String, String>> iterator = cbos.entrySet().iterator();
//
//        Map.Entry<String, String> entry;
@@ -3805,6 +3819,7 @@
    /**
     * 检查校验规则没有通过的内容
     *
     * @param attrVOS 需要校验的属性
     * @param dataList 数据的列表
     * @param errorMap 错误的信息映射
@@ -3837,6 +3852,7 @@
    /**
     * 批量转换时间都为指定的格式
     *
     * @param attrVOS 模板属性
     * @param cboList 数据的列表
     * @param errorMap 错误的信息
@@ -3886,6 +3902,7 @@
    /**
     * 系统模板中默认值设置
     *
     * @param attrVOS 模板属性
     * @param dataList excel的数据内容
     */
@@ -3911,6 +3928,7 @@
    /**
     * 转移boolean型的属性
     *
     * @param attrVOS 属性的对象
     * @param dataList 数据
     */
@@ -3938,6 +3956,7 @@
    /**
     * 处理组合规则
     *
     * @param attrVOS 模板属性
     * @param dataList excel的数据内容
     */
@@ -3966,6 +3985,7 @@
    /**
     * 转换参照的值
     *
     * @param attrVOS 属性的显示对象
     * @param dataList 数据列表
     * @param errorMap 错误的信息
@@ -4064,6 +4084,7 @@
    /**
     * 批量检查企业编码是否存在
     *
     * @param templateVO 模板的显示对象
     * @param cboList 数据的列表
     * @param errorMap 错误的信息
@@ -4210,6 +4231,7 @@
    /**
     * 从属性上获取参照的内容
     *
     * @param attrVO 属性的信息
     * @return 参照的内容
     */
@@ -4228,6 +4250,7 @@
    /**
     * 获取参照中的值的字段
     *
     * @param referVO 参照的对象
     * @return 默认为Oid,有多个的时候,获取第一个
     */
@@ -4250,6 +4273,7 @@
    /**
     * 获取参照中的显示内容的字段
     *
     * @param referVO 参照的对象
     * @return 默认为name,有多个的时候,获取第一个
     */
@@ -4272,6 +4296,7 @@
    /**
     * 处理枚举的显示对象
     *
     * @param attrVOS 模板属性
     * @param dataList excel的数据内容
     * @param errorMap 错误信息的映射
@@ -4313,6 +4338,7 @@
    /**
     * 批量校验数据的信息
     *
     * @param templateVO 模板的显示对象
     * @param cboList 数据的内容
     */
@@ -4334,6 +4360,7 @@
    /**
     * 处理分类注入
     *
     * @param attrVOS 模板属性
     * @param dataList excel的数据内容
     * @param classifyFullInfo 分类的全路径
@@ -4391,6 +4418,7 @@
    /**
     * 校验关键属性,和近义词查询规则
     *
     * @param classifyFullInfo 分类的全部信息
     * @param templateVO 模板的内容,必须包含模板属性
     * @param cboList 批量的数据
@@ -4514,6 +4542,7 @@
    /**
     * 检查分类的路径是否存在
     *
     * @param cboList 业务数据
     * @param errorMap 错误信息
     * @param pathMap 路径和分类的映射
@@ -4545,6 +4574,7 @@
    /**
     * 检查分类以及子分类是否都有编码规则
     *
     * @param classifyVOMap 分类的显示对象映射
     * @param ruleOidMap 规则的主键映射
     * @param unExistRuleClassifyOidList 不存在编码规则的分类的主键
@@ -4569,8 +4599,10 @@
        }
        log.info(";;;;");
    }
    /**
     * 递归找编码规则
     *
     * @param classifyVOMap 分类的显示对象映射
     * @param classifyOid 分类的主键
     * @param ruleOidList 规则的主键list
@@ -4594,6 +4626,7 @@
    /**
     * 获取子分类的路径
     *
     * @param classifyFullInfo 分类全部信息
     * @param fullPath 分类的全路径
     * @return 子分类的路径,key是分类的主键
@@ -4618,6 +4651,7 @@
    /**
     * 获取导入的内容中关键属性近义词转换后重复的行号
     *
     * @param ketAttrMap 关键属性的映射
     * @param dataList 导入的数据
     * @param keyRuleVO 关键属性控制规则
@@ -4688,6 +4722,7 @@
    /**
     * excel的标题上获取字段所在的位置
     *
     * @param titleRowData 标题的内容
     * @param attrNameIdMap 模板中属性名称和英文的映射
     * @param fieldIndexMap 位置和英文字段的映射
@@ -4853,6 +4888,7 @@
    /**
     * 正确错误数据redis缓存
     *
     * @param uuid
     * @param templateVO
     * @param rowIndexCbo
@@ -5118,6 +5154,7 @@
    /**
     * 拷贝业务类型到map
     *
     * @param cbo 业务数据
     * @param map map
     */
@@ -5129,6 +5166,7 @@
    /**
     * 拷贝业务类型到map
     *
     * @param bo 业务数据
     * @param map map
     */
@@ -5532,7 +5570,6 @@
    }
    /**
     *
     * @param fieldIndexMap
     * @param rowDataList
     * @param cboList
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllDmMapperProcessor.java
@@ -70,7 +70,8 @@
        DdlFieldMappingAttrBO mappingBO = getMappingBO(fieldType);
        if (mappingBO.getDataLength() != null) {
            //mappingBO用来做最后的校验,如果定义的BO没有字段长度,则说明这个类型生成的sql不应该指定长度。如果指定了长度,说明是字段长度的最大值,VARCHAR、CLOB除外
            if (!(fieldType.equals(VciFieldTypeEnum.VTClob) || fieldType.equals(VciFieldTypeEnum.VTString))
            // TODO:2024-4-23修改,这儿第一组判断条件取反了,但是这儿应该是不取反才对
            if ((fieldType.equals(VciFieldTypeEnum.VTClob) || fieldType.equals(VciFieldTypeEnum.VTString))
                && attributeVO.getAttributeLength() > mappingBO.getDataLength()) {
                mappingBO.setDataLength(attributeVO.getAttributeLength());
            }
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllMapperProcessor.java
@@ -88,47 +88,37 @@
        return mapper.createViewBySql(viewCreateSql);
    }
    public int createTableBySql(String tableName, String attributeSql) {
        return mapper.createTableBySql(tableName, attributeSql);
    }
    public int commentTable(String tableName, String comment) {
        return mapper.commentTable(tableName, comment);
    }
    public int commentColumnTable(String tableName, String columnName, String comment) {
        return mapper.commentColumnTable(tableName, columnName, comment);
    }
    public int modifyTableBySql(String tableName, String attributeSql) {
        return mapper.modifyTableBySql(tableName, attributeSql);
    }
    public int addColumn2TableBySql(String tableName, String attributeSql) {
        return mapper.addColumn2TableBySql(tableName, attributeSql);
    }
    public int dropTable(String tableName) {
        return mapper.dropTable(tableName);
    }
    public int checkTableExist(String tableName) {
        return mapper.checkTableExist(tableName);
    }
    public int countAll(String tableName) {
        return mapper.countAll(tableName);
    }
    /**
     * 获取字段创建sql