ludc
2024-02-01 a8d80ddd0aef61cbaf1dbe9fe7abec12f0835399
代码合并
已修改13个文件
615 ■■■■■ 文件已修改
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/MdmSearchItemCodeProvider.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyTemplateAttrVO.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/service/impl/GroupMdmInterServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeSyncUniversalController.java 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeSynonymService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingSyncServiceImpl.java 471 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSynonymServiceImpl.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/PasswordFreeLoginServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeCLassifyMapper.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/MdmSearchItemCodeProvider.java
@@ -26,5 +26,5 @@
     * @return 执行结果
     */
    @PostMapping("/api/pp/pp/ext/extend/v1.0/getppModelByElem")
    SearchItemVO getppModelByElem(@RequestParam Map<String,String> searchDataMap);
    SearchItemVO getppModelByElem(@RequestBody SearchItemParam searchItemParam);
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyTemplateAttrVO.java
@@ -1,5 +1,6 @@
package com.vci.ubcs.code.vo.pagemodel;
import com.baomidou.mybatisplus.annotation.TableField;
import com.vci.ubcs.starter.revision.model.BaseModel;
import lombok.Data;
@@ -73,6 +74,11 @@
    private String sysonymRuleOids;
    /**
     * 近义词查询规则显示值
     */
    private String sysonymRuleOidsText;
    /**
    * 是否排序
    */
    private String sortAttrFlag;
Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/service/impl/GroupMdmInterServiceImpl.java
@@ -702,7 +702,7 @@
            for (DockingClassifyViewVO viewInfo : list) {
                String viewName = com.alibaba.cloud.commons.lang.StringUtils.isBlank(viewInfo.getViewName())?"":viewInfo.getViewName();
                String impactList = viewInfo.getImpactList() == null ? "" : viewInfo.getImpactList().get(0).get(0);
                String impactList = viewInfo.getImpactList() == null ? "" : viewInfo.getImpactList().get(0)==null||viewInfo.getImpactList().get(0).size()==0?"":viewInfo.getImpactList().get(0).get(0);
                log.info("VilewMode:-------------->视图名称:"+viewName);
                log.info("VilewMode:-------------->影响编码项:"+impactList);
                log.info("VilewMode:--------------> 集团分类主键:"+jclassId);
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeSyncUniversalController.java
@@ -1,15 +1,14 @@
package com.vci.ubcs.code.controller;
import com.vci.ubcs.code.service.UniversalInterfaceI;
import com.vci.ubcs.code.vo.webserviceModel.person.PersonData;
import com.vci.ubcs.code.vo.webserviceModel.person.ResultOrgData;
import org.apache.tools.ant.taskdefs.condition.Http;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.core.tool.api.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
@@ -157,6 +156,27 @@
        return result;
    }
    /****
     * 人员集成接口
     * @param personData 数据信息
     * @return
     * @throws Throwable
     */
    @PostMapping("/syncDataForPerson")
    public ResultOrgData syncDataForPerson(@RequestBody PersonData personData){
        ResultOrgData result = new ResultOrgData();
        try {
            result= universalInterfaceI.syncDataForPerson(personData);
        }catch (Throwable e){
            e.printStackTrace();
            logger.error("ResultOrgData->"+e.getMessage());
        }
        return result;
    }
    /**
     * 设置request,到ThreadLocal中
     * @param request
@@ -167,6 +187,7 @@
        universalInterfaceI.setThreadLocal(threadLocal);
    }
    /***
     *
     * @param dataString
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyMapper.java
@@ -190,4 +190,11 @@
     */
    List<CodeClassify> selectLeafByParentClassifyOid(@Param("topOid") String topOid,@Param("currentOid")String currentOid);
    /**
     *  根据顶层节点oid查询所有叶子节点分类oid
     * @param pid
     * @return
     */
    List<CodeClassify> selectLeafByPid(@Param("pid") String pid);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyService.java
@@ -316,4 +316,12 @@
     * 流水依赖生成
     */
    R flowingDependencyGen(String classifyOid);
    /**
     *  根据顶层节点oid查询所有叶子节点分类oid
     * @param pid
     * @return
     */
    String selectLeafByPid(String pid);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeSynonymService.java
@@ -16,6 +16,9 @@
 */
package com.vci.ubcs.code.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.code.entity.CodeSynonym;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
@@ -67,4 +70,11 @@
     */
    List<CodeClassifyTemplateAttrVO> listUseRangeInClsTempAttr(String oid);
    /**
     * 根绝wrapper查询近义词查询规则
     * @param wrappers
     * @return
     */
    String selectNameByWrapper(LambdaQueryWrapper<CodeSynonym> wrappers);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
@@ -749,6 +749,24 @@
    }
    /**
     *  根据顶层节点oid查询所有叶子节点分类oid
     * @param pid
     * @return
     */
    @Override
    public String selectLeafByPid(String pid) {
        List<CodeClassify> codeClassifies = codeClassifyMapper.selectLeafByPid(pid);
        if(codeClassifies.isEmpty()){
            return "";
        }
        String oids = codeClassifies.stream()
            .map(CodeClassify::getOid)
            .map(s ->s)
            .collect(Collectors.joining(","));;
        return oids;
    }
    /**
     * 流水依赖生成
     */
    @Override
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java
@@ -3,8 +3,10 @@
import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.common.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
@@ -13,14 +15,17 @@
import com.vci.ubcs.code.entity.CodeClassify;
import com.vci.ubcs.code.entity.CodeClassifyTemplateAttr;
import com.vci.ubcs.code.entity.CodeClassifyTemplate;
import com.vci.ubcs.code.entity.CodeSynonym;
import com.vci.ubcs.code.enumpack.CodeLevelTypeEnum;
import com.vci.ubcs.code.mapper.CodeClassifyTemplateAttrMapper;
import com.vci.ubcs.code.mapper.CodeClassifyTemplateMapper;
import com.vci.ubcs.code.service.ICodeClassifyTemplateAttrService;
import com.vci.ubcs.code.service.ICodeReferConfigService;
import com.vci.ubcs.code.service.ICodeSynonymService;
import com.vci.ubcs.code.service.ICodeTempphaseService;
import com.vci.ubcs.code.vo.CodeReferConfigVO;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
import com.vci.ubcs.code.vo.pagemodel.CodeSynonymVO;
import com.vci.ubcs.code.vo.pagemodel.UIFormReferVO;
import com.vci.ubcs.code.wrapper.CodeClassifyTemplateAttrWrapper;
import com.vci.ubcs.omd.feign.IBtmTypeClient;
@@ -97,6 +102,10 @@
     */
    @Resource
    private IBtmTypeClient btmTypeClient;
    @Resource
    @Lazy
    private ICodeSynonymService codeSynonymService;
    /**
     * 查询所有的主题库分类的模板属性
@@ -213,6 +222,14 @@
            BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateAttrDO,vo);
            //如果有lcstatus的类的话
            vo.setAttributeDataTypeText(VciFieldTypeEnum.getTextByValue(vo.getAttributeDataType()));
            if(Func.isNotBlank(codeClassifyTemplateAttrDO.getSysonymRuleOids())){
                vo.setSysonymRuleOidsText(
                    codeSynonymService.selectNameByWrapper(
                        Wrappers.<CodeSynonym>query()
                            .lambda().in(CodeSynonym::getOid, Func.toStrList(",", codeClassifyTemplateAttrDO.getSysonymRuleOids()))
                    )
                );
            }
        }
        return vo;
    }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingSyncServiceImpl.java
@@ -7,7 +7,6 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
import com.vci.ubcs.code.Scheduling.NonWebRequestAttributes;
import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
import com.vci.ubcs.code.constant.MdmDuckingConstant;
import com.vci.ubcs.code.dto.CodeOrderDTO;
@@ -287,7 +286,9 @@
        searchItemParam.setLastchangedon(lastchangedon);
        searchItemParam.setStatus(itemStatus);//
        Map<String,String>searchDataMap=  VciBaseUtil.objectToMapString(searchItemParam);
        SearchItemVO searchItemVO= mdmSearchItemCodeProvider.getppModelByElem(searchDataMap);
        try {
            paramString=JSONObject.toJSON(searchItemParam).toString();
            SearchItemVO searchItemVO = mdmSearchItemCodeProvider.getppModelByElem(searchItemParam);
        /*SearchItemVO searchItemVO=new SearchItemVO();
        List<SearchItemDataVO> data=new ArrayList<>();
        SearchItemDataVO searchItemDataVO1=initData("1","","pro-00001");
@@ -297,152 +298,170 @@
        searchItemVO.setData(data);
        searchItemVO.setCode("200");
        searchItemVO.setMsg("");*/
        if(searchItemVO!=null) {
            paramString = JSONObject.toJSON(searchItemVO).toString();
            try {
                //免密登录申请token,request中添加用户信息
            if (searchItemVO != null) {
                paramString = JSONObject.toJSON(searchItemVO).toString();
                try {
                    passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(Locale.ROOT),getRequest());
                }catch (Throwable e){
                    throw new Throwable("用户鉴权失败.");
                }
                final BladeUser user = AuthUtil.getUser();
                List<CodeClassify> codeClassifyList = codeClassifyService.selectByWrapper(Wrappers.<CodeClassify>query().lambda().in(CodeClassify::getId, btmName));
                if (CollectionUtils.isEmpty(codeClassifyList)) {
                    throw new Throwable("分类未查询到");
                }
                CodeClassify codeClassify= codeClassifyList.get(0);
                CodeClassifyTemplateVO templateVO = mdmEngineServiceI.getUsedTemplateByClassifyOid(codeClassify.getOid());
                if(templateVO==null||StringUtils.isBlank(templateVO.getOid())){
                    throw  new  Throwable ("根据传输的分类,未获取MDM系统中对应模板");
                }
                List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) &&
                    ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
                ).collect(Collectors.toList());
                List<SearchItemDataVO> dataList = searchItemVO.getData();
                Map<String, SearchItemDataVO> dataVOMap = new HashMap<>();
                List<String> itemCodeList = new ArrayList<>();
                ApplyDatasVO allDatasVO = new ApplyDatasVO();
                List<ApplyDataVO> allObjectList=new ArrayList<>();
                if (!CollectionUtils.isEmpty(dataList)) {
                    dataList.stream().forEach(searchItemDataVO -> {
                        String itemCode = StringUtils.isNotBlank(searchItemDataVO.getProjectitem()) ? searchItemDataVO.getProjectitem() : searchItemDataVO.getMmodelcode();//项目代号
                        dataVOMap.put(itemCode, searchItemDataVO);
                        itemCodeList.add(itemCode);
                    });
                    String tableName = "";
                    R<BtmTypeVO> r = btmTypeClient.getAllAttributeByBtmId(codeClassify.getBtmTypeId());
                    if (!r.isSuccess()) {
                        throw new Throwable(r.getMsg());
                    //免密登录申请token,request中添加用户信息
                    try {
                        passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(Locale.ROOT), getRequest());
                    } catch (Throwable e) {
                        throw new Throwable("用户鉴权失败.");
                    }
                    BtmTypeVO btmTypeVO = r.getData();
                    if (btmTypeVO == null) {
                        throw new Throwable("根据业务类型未查询到业务类型对象!");
                    final BladeUser user = AuthUtil.getUser();
                    List<CodeClassify> codeClassifyList = codeClassifyService.selectByWrapper(Wrappers.<CodeClassify>query().lambda().in(CodeClassify::getId, btmName));
                    if (CollectionUtils.isEmpty(codeClassifyList)) {
                        throw new Throwable("分类未查询到");
                    }
                    tableName = btmTypeVO.getTableName();
                    if (StringUtils.isBlank(tableName)) {
                        throw new Throwable("根据业务类型未查询到业务类型相关联的表");
                    CodeClassify codeClassify = codeClassifyList.get(0);
                    CodeClassifyTemplateVO templateVO = mdmEngineServiceI.getUsedTemplateByClassifyOid(codeClassify.getOid());
                    if (templateVO == null || StringUtils.isBlank(templateVO.getOid())) {
                        throw new Throwable("根据传输的分类,未获取MDM系统中对应模板");
                    }
                    StringBuffer sb = new StringBuffer();
                    sb.append(" select * from  ");
                    sb.append(tableName);
                    sb.append(" where 1=1");
                    sb.append(" and lastr=1 and lastv=1");
                    sb.append(" and codeclsfid = '" + codeClassify.getOid() + "' ");
                    sb.append(" and "+ VciBaseUtil.toInSql(attrKey,itemCodeList.toArray(new String[]{})));
                    List<Map<String, String>> newDataList = commonsMapper.queryByOnlySqlForMap(sb.toString());
                    //List<BaseModel> baseModelList=new ArrayList<>();
                    Map<String,BaseModel> baseModelMap=new HashMap<>();
                    newDataList.stream().forEach(dataMap->{
                        BaseModel baseModel=new BaseModel();
                        Map<String,String> newDateMap=new CaseInsensitiveMap<>(dataMap);
                        DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(newDateMap,baseModel,true,user);
                        DefaultAttrAssimtUtil.updateDefaultAttrAssimt(baseModel,user);
                        //baseModelList.add(baseModel);
                    List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) &&
                        ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
                    ).collect(Collectors.toList());
                    List<SearchItemDataVO> dataList = searchItemVO.getData();
                    Map<String, SearchItemDataVO> dataVOMap = new HashMap<>();
                    List<String> itemCodeList = new ArrayList<>();
                    ApplyDatasVO allDatasVO = new ApplyDatasVO();
                    List<ApplyDataVO> allObjectList = new ArrayList<>();
                    if (!CollectionUtils.isEmpty(dataList)) {
                        dataList.stream().forEach(searchItemDataVO -> {
                            String itemCode = StringUtils.isNotBlank(searchItemDataVO.getProjectitem()) ? searchItemDataVO.getProjectitem() : searchItemDataVO.getMmodelcode();//项目代号
                            dataVOMap.put(itemCode, searchItemDataVO);
                            itemCodeList.add(itemCode);
                        });
                        String tableName = "";
                        R<BtmTypeVO> r = btmTypeClient.getAllAttributeByBtmId(codeClassify.getBtmTypeId());
                        if (!r.isSuccess()) {
                            throw new Throwable(r.getMsg());
                        }
                        BtmTypeVO btmTypeVO = r.getData();
                        if (btmTypeVO == null) {
                            throw new Throwable("根据业务类型未查询到业务类型对象!");
                        }
                        tableName = btmTypeVO.getTableName();
                        if (StringUtils.isBlank(tableName)) {
                            throw new Throwable("根据业务类型未查询到业务类型相关联的表");
                        }
                        StringBuffer sb = new StringBuffer();
                        sb.append(" select * from  ");
                        sb.append(tableName);
                        sb.append(" where 1=1");
                        sb.append(" and lastr=1 and lastv=1");
                        sb.append(" and codeclsfid = '" + codeClassify.getOid() + "' ");
                        sb.append(" and " + VciBaseUtil.toInSql(attrKey, itemCodeList.toArray(new String[]{})));
                        List<Map<String, String>> newDataList = commonsMapper.queryByOnlySqlForMap(sb.toString());
                        //List<BaseModel> baseModelList=new ArrayList<>();
                        Map<String, BaseModel> baseModelMap = new HashMap<>();
                        newDataList.stream().forEach(dataMap -> {
                            BaseModel baseModel = new BaseModel();
                            Map<String, String> newDateMap = new CaseInsensitiveMap<>(dataMap);
                            DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(newDateMap, baseModel, true, user);
                            DefaultAttrAssimtUtil.updateDefaultAttrAssimt(baseModel, user);
                            //baseModelList.add(baseModel);
                        String attrKeyValue=newDateMap.getOrDefault(attrKey,"");
                        baseModelMap.put(attrKeyValue,baseModel);
                    });
                            String attrKeyValue = newDateMap.getOrDefault(attrKey, "");
                            baseModelMap.put(attrKeyValue, baseModel);
                        });
                    List<ApplyDataVO> addObjectList=new ArrayList<>();
                    List<ApplyDataVO> editObjectList=new ArrayList<>();
                    dataVOMap.forEach((key,value)->{
                        if(baseModelMap.containsKey(key)){
                            BaseModel baseModel=baseModelMap.get(key);
                            changeObjectToMap(value,baseModel.getId(),user,"editstatus",editObjectList);
                        }else{
                            changeObjectToMap(value,"",user,"create",addObjectList);
                        List<ApplyDataVO> addObjectList = new ArrayList<>();
                        List<ApplyDataVO> editObjectList = new ArrayList<>();
                        dataVOMap.forEach((key, value) -> {
                            if (baseModelMap.containsKey(key)) {
                                BaseModel baseModel = baseModelMap.get(key);
                                changeObjectToMap(value, baseModel.getId(), user, "editstatus", editObjectList);
                            } else {
                                changeObjectToMap(value, "", user, "create", addObjectList);
                            }
                        });
                        allObjectList.addAll(addObjectList);
                        allObjectList.addAll(editObjectList);
                        allDatasVO.setObject(allObjectList);
                        LinkedList<XMLResultDataObjectDetailDO> allResultDataObjectDetailDOS = new LinkedList<>();
                        if (!CollectionUtils.isEmpty(addObjectList)) {
                            //规则的主键需要去获取
                            CodeClassifyFullInfoBO classifyFullInfo = codeClassifyService.getClassifyFullInfo(codeClassify.getOid());
                            if (classifyFullInfo == null || classifyFullInfo.getCurrentClassifyVO() == null || StringUtils.isBlank(classifyFullInfo.getCurrentClassifyVO().getOid())) {
                                log.info("classifyFullInfo:" + "根据传输的分类,未获取分类相关信息");
                                throw new Throwable("根据传输的分类,未获取分类相关信息");
                            }
                            CodeRuleVO ruleVO = mdmEngineServiceI.getCodeRuleByClassifyFullInfo(classifyFullInfo);
                            if (ruleVO == null || StringUtils.isBlank(ruleVO.getOid())) {
                                throw new Throwable("根据传输的分类,未获取MDM系统中对应规则");
                            }
                            DataObjectVO dataObjectVO = new DataObjectVO();
                            ApplyDatasVO applyDatasVO = new ApplyDatasVO();
                            applyDatasVO.setObject(addObjectList);
                            LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs = new LinkedList<>();
                            this.getConfigDatas(systemId, btmName, applyDatasVO, attrVOS, dataObjectVO);
                            CodeOrderDTO orderDTO = new CodeOrderDTO();
                            orderDTO.setCodeClassifyOid(codeClassify.getOid());//分类主键
                            //码段设置
                            List<SectionVO> section = new ArrayList<>();
                            SectionVO sectionVO = new SectionVO();
                            sectionVO.setValue(secValue);
                            sectionVO.setName(secName);
                            section.add(sectionVO);
                            log.info("end:规则获取完毕");
                            List<CodeOrderSecDTO> codeOrderSecDTOList = getRuleCodeOrderSecDTOs(section, ruleVO, classifyFullInfo);
                            log.info("end:码段获取完毕");
                            orderDTO.setSecDTOList(codeOrderSecDTOList);//分类码段
                            mdmIOService.batchSyncApplyCode(orderDTO, dataObjectVO, resultDataObjectDetailDOs, false);
                            allResultDataObjectDetailDOS.addAll(resultDataObjectDetailDOs);
                        }
                    });
                    allObjectList.addAll(addObjectList);
                    allObjectList.addAll(editObjectList);
                    allDatasVO.setObject(allObjectList);
                    LinkedList<XMLResultDataObjectDetailDO> allResultDataObjectDetailDOS=new LinkedList<>();
                    if(!CollectionUtils.isEmpty(addObjectList)){
                        //规则的主键需要去获取
                        CodeClassifyFullInfoBO classifyFullInfo = codeClassifyService.getClassifyFullInfo(codeClassify.getOid());
                        if(classifyFullInfo==null ||classifyFullInfo.getCurrentClassifyVO()==null || StringUtils.isBlank(classifyFullInfo.getCurrentClassifyVO().getOid())){
                            log.info("classifyFullInfo:"+"根据传输的分类,未获取分类相关信息");
                            throw  new  Throwable ("根据传输的分类,未获取分类相关信息");
                        //更新数据(更新状态)
                        if (!CollectionUtils.isEmpty(editObjectList)) {
                            DataObjectVO dataObjectVO = new DataObjectVO();
                            ApplyDatasVO applyDatasVO = new ApplyDatasVO();
                            applyDatasVO.setObject(editObjectList);
                            LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs = new LinkedList<>();
                            CodeClassifyVO codeClassifyVO = new CodeClassifyVO();
                            BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassify, codeClassifyVO);
                            this.getConfigDatas(systemId, btmName, applyDatasVO, attrVOS, dataObjectVO);
                            mdmIOService.batchSyncEditDatas(codeClassifyVO, dataObjectVO, resultDataObjectDetailDOs, false);
                            allResultDataObjectDetailDOS.addAll(resultDataObjectDetailDOs);
                        }
                        CodeRuleVO ruleVO = mdmEngineServiceI.getCodeRuleByClassifyFullInfo(classifyFullInfo);
                        if(ruleVO==null||StringUtils.isBlank(ruleVO.getOid())){
                            throw  new  Throwable ("根据传输的分类,未获取MDM系统中对应规则");
                        }
                        DataObjectVO dataObjectVO = new DataObjectVO();
                        ApplyDatasVO applyDatasVO = new ApplyDatasVO();
                        applyDatasVO.setObject(addObjectList);
                        LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs = new LinkedList<>();
                        this.getConfigDatas(systemId, btmName, applyDatasVO, attrVOS, dataObjectVO);
                        CodeOrderDTO orderDTO = new CodeOrderDTO();
                        orderDTO.setCodeClassifyOid(codeClassify.getOid());//分类主键
                        //码段设置
                        List<SectionVO> section=new ArrayList<>();
                        SectionVO sectionVO=new SectionVO();
                        sectionVO.setValue(secValue);
                        sectionVO.setName(secName);
                        section.add(sectionVO);
                        log.info("end:规则获取完毕");
                        List<CodeOrderSecDTO> codeOrderSecDTOList = getRuleCodeOrderSecDTOs(section, ruleVO,classifyFullInfo);
                        log.info("end:码段获取完毕");
                        orderDTO.setSecDTOList(codeOrderSecDTOList);//分类码段
                        mdmIOService.batchSyncApplyCode(orderDTO, dataObjectVO, resultDataObjectDetailDOs,false);
                        allResultDataObjectDetailDOS.addAll(resultDataObjectDetailDOs);
                        Object paramObject = JSONObject.toJSON(allDatasVO);
                        paramString = Func.isEmpty(paramObject) ? "" : paramObject.toString();
                        Object backObject = JSONObject.toJSON(allResultDataObjectDetailDOS);
                        backString = Func.isEmpty(backObject) ? "" : backObject.toString();
                    }
                    //更新数据(更新状态)
                    if(!CollectionUtils.isEmpty(editObjectList)){
                        DataObjectVO dataObjectVO = new DataObjectVO();
                        ApplyDatasVO applyDatasVO = new ApplyDatasVO();
                        applyDatasVO.setObject(editObjectList);
                        LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs = new LinkedList<>();
                        CodeClassifyVO codeClassifyVO=new CodeClassifyVO();
                        BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassify, codeClassifyVO);
                        this.getConfigDatas(systemId, btmName, applyDatasVO, attrVOS, dataObjectVO);
                        mdmIOService.batchSyncEditDatas(codeClassifyVO,dataObjectVO, resultDataObjectDetailDOs,false);
                        allResultDataObjectDetailDOS.addAll(resultDataObjectDetailDOs);
                    }
                    Object paramObject = JSONObject.toJSON(allDatasVO);
                    paramString=Func.isEmpty(paramObject)?"":paramObject.toString();
                    Object backObject = JSONObject.toJSON(allResultDataObjectDetailDOS);
                    backString=Func.isEmpty(backObject)?"":backObject.toString();
                }
            }
            catch (Throwable e){
                e.printStackTrace();;
                log.error("查询失败--->"+e);
                success=false;
                backString="查询失败--->"+e;
                msg="查询失败--->"+e;
                throw new VciBaseException(e.getMessage());
            }finally {
                try {
                    //记录日志
                    this.saveLogs(systemId, systemId, paramString, backString, success, msg, "queryData");
                }catch (Throwable e){
                } catch (Throwable e) {
                    e.printStackTrace();
                    log.error(e.getMessage());
                    ;
                    log.error("查询失败--->" + e);
                    success = false;
                    backString = "查询失败--->" + e;
                    msg = "查询失败--->" + e;
                    throw new VciBaseException(e.getMessage());
                } finally {
                    try {
                        //记录日志
                        this.saveLogs(systemId, systemId, paramString, backString, success, msg, "queryData");
                    } catch (Throwable e) {
                        e.printStackTrace();
                        log.error(e.getMessage());
                        throw new VciBaseException(e.getMessage());
                    }
                }
            }else{
                throw  new Throwable("接口未返回信息");
            }
        }catch (Throwable e1){
            e1.printStackTrace();
            log.error("查询失败--->" + e1);
            //paramString="";
            success = false;
            backString = "查询失败--->" + e1;
            msg = "查询失败--->" + e1;
            try {
                //记录日志
                this.saveLogs(systemId, systemId, paramString, backString, success, msg, "queryData");
            } catch (Throwable e) {
                e.printStackTrace();
                log.error(e.getMessage());
                throw new VciBaseException(e.getMessage());
            }
        }
    }
@@ -723,94 +742,104 @@
        }
        Map<String ,List<DockingSystemConfig>> sysIntInfoDOMap = new HashMap<>();//key=classifyoid,value=list<map>
        for (DockingSystemConfig dockingSystemConfig:dockingSystemConfigList){
            List<DockingSystemConfig> dockingSystemList = sysIntInfoDOMap.get(dockingSystemConfig.getClassifyOid());
            if(dockingSystemList==null){
                dockingSystemList = new ArrayList<>();
            }
            dockingSystemList.add(dockingSystemConfig);
            sysIntInfoDOMap.put(dockingSystemConfig.getClassifyOid(),dockingSystemList);
        }
        //根据类型去查询需要集成的分类或者数据
        LambdaQueryWrapper<DockingData> queryWrapper = Wrappers.<DockingData>lambdaQuery();
        queryWrapper.eq(DockingData::getSendFlag,"false");
        if(type==2){
            queryWrapper.eq(DockingData::getBtmId,DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT));
        }else {
            queryWrapper.notIn(DockingData::getBtmId,DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT));
        }
        List<DockingData> dataList = dockingDataService.list(queryWrapper);
        for (DockingData mapi:dataList){
            WebUtil.setPersistence(false);
            String dataoid = mapi.getOid();//data对象的oid
            String classifyoid = mapi.getClassifyOid();
            String id = mapi.getId();
            String uniquecode = mapi.getUniqueCode();
            String btmid = mapi.getBtmId();
            String btmoid = mapi.getBtmOid();
            String sendtype = mapi.getSendType();
            String classifyid = mapi.getClassifyId();
            String classifyname = mapi.getClassifyName();
            String curentClassOid=null;
            if(type==2){
                curentClassOid=btmoid;
            }else{
                curentClassOid=classifyoid;
            }
            List<DockingSystemConfig> effectiveSysIntInfoVOs=new ArrayList<>();
            //根据当前数据的id,查询获取哪些系统需要做集成
            List<CodeClassify> parentLeveDO= codeClassifyService.selectAllLevelParentByOid(curentClassOid);
            if(CollectionUtils.isEmpty(parentLeveDO)){
                continue;//说明这个分类被删掉了,不做处理
            }
            Map<String, CodeClassify> oidCodeclassifyDOMap = parentLeveDO.stream().filter(codeClassifyDO -> codeClassifyDO != null && StringUtils.isNotBlank(codeClassifyDO.getOid())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
            oidCodeclassifyDOMap.keySet().forEach(oid->{
                if(sysIntInfoDOMap.containsKey(oid)){
                    List<DockingSystemConfig> sysIntInfoDOS= sysIntInfoDOMap.get(oid);
                    effectiveSysIntInfoVOs.addAll(sysIntInfoDOS);
            String classifyOid= dockingSystemConfig.getClassifyOid();
            String codeclassifOid=codeClassifyService.selectLeafByPid(classifyOid);
            List<String> codeList= VciBaseUtil.str2List(codeclassifOid);
            codeList.stream().forEach(oid -> {
                List<DockingSystemConfig> dockingSystemList = sysIntInfoDOMap.get(oid);
                if(Func.isEmpty(dockingSystemList)){
                    dockingSystemList=new ArrayList<>();
                }
                dockingSystemList.add(dockingSystemConfig);
                sysIntInfoDOMap.put(oid,dockingSystemList);
            });
            //如果校验的系统接口信息不存在,则数据不不往信息里推送
            if(CollectionUtils.isEmpty(effectiveSysIntInfoVOs)){
                continue;
            }
            List<DockingTask> dockingTask_insert = new ArrayList<>();
            for (DockingSystemConfig sysIntInfoVOi:effectiveSysIntInfoVOs){
                DockingTask dockingTask = new DockingTask();
                dockingTask.setOid(VciBaseUtil.getPk());
                dockingTask.setSendFlag(SEND_FLAG_FALSE);
                dockingTask.setId(id);//编码
                dockingTask.setUniqueCode(uniquecode);
                dockingTask.setBtmOid(btmoid);//数据oid
                dockingTask.setBtmId(btmid);//数据业务类型id
                dockingTask.setClassifyId(classifyid);//数据在分类id
                dockingTask.setClassifyOid(classifyoid);//数据所在分类oid
                dockingTask.setClassifyName(classifyname);//数据所在分类名称
                dockingTask.setSendType(sendtype);//数据推送类型
                dockingTask.setDataOid(dataoid);
                dockingTask.setCreateTime(new Date());
                dockingTask.setLastModifyTime(new Date());
                dockingTask.setCreator("sysAdmin");
                dockingTask.setLastModifier("sysAdmin");
                //intinfo
                dockingTask.setSysInfoOid(sysIntInfoVOi.getOid());//intinfo的oid
                dockingTask.setSystemOid(sysIntInfoVOi.getSysBaseOid());//系统oid
                dockingTask.setSystemCode(sysIntInfoVOi.getSysBaseId());//系统编码
                dockingTask.setSystemName(sysIntInfoVOi.getSysBaseName());//系统name
                dockingTask_insert.add(dockingTask);
            }
            if(dockingTask_insert.size()!=0) {
                dockingTaskService.saveBatch(dockingTask_insert);
            }
            //dockingTaskDaoI.updateByPrimaryKey方法报错了,所以手写了这个
            boolean u = updateDockingDatasSendFlag(dataoid,SEND_FLAG_TRUE);
            if(!u){
                log.error("集成data分解任务失败!dataoid:"+dataoid);
                continue;
            }
        }
        sysIntInfoDOMap.forEach((classifyOid,effectiveSysIntInfoVOs)->{
            //根据类型去查询需要集成的分类或者数据
            LambdaQueryWrapper<DockingData> queryWrapper = Wrappers.<DockingData>lambdaQuery();
            queryWrapper.eq(DockingData::getSendFlag,"false");
            if(type==2){
                queryWrapper.eq(DockingData::getBtmId,DOCKING_DEFAULT_CLASSIFY);
            }else {
                queryWrapper.ne(DockingData::getBtmId,DOCKING_DEFAULT_CLASSIFY);
                queryWrapper.eq(DockingData::getClassifyOid,classifyOid);
            }
            List<DockingData> dataList = dockingDataService.list(queryWrapper);
            for (DockingData mapi:dataList){
                WebUtil.setPersistence(false);
                String dataoid = mapi.getOid();//data对象的oid
                String dataClassifyOid = mapi.getClassifyOid();
                String id = mapi.getId();
                String uniquecode = mapi.getUniqueCode();
                String btmid = mapi.getBtmId();
                String btmoid = mapi.getBtmOid();
                String sendtype = mapi.getSendType();
                String classifyid = mapi.getClassifyId();
                String classifyname = mapi.getClassifyName();
                String curentClassOid=null;
                if(!dataClassifyOid.equals(classifyOid)){
                    continue;
                }
                /*if(type==2){
                    curentClassOid=btmoid;
                }else{
                    curentClassOid=classifyoid;
                }*/
                /*//根据当前数据的id,查询获取哪些系统需要做集成
                List<CodeClassify> parentLeveDO= codeClassifyService.selectAllLevelParentByOid(curentClassOid);
                if(CollectionUtils.isEmpty(parentLeveDO)){
                    continue;//说明这个分类被删掉了,不做处理
                }
                Map<String, CodeClassify> oidCodeclassifyDOMap = parentLeveDO.stream().filter(codeClassifyDO -> codeClassifyDO != null && StringUtils.isNotBlank(codeClassifyDO.getOid())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
                oidCodeclassifyDOMap.keySet().forEach(oid->{
                    if(sysIntInfoDOMap.containsKey(oid)){
                        List<DockingSystemConfig> sysIntInfoDOS= sysIntInfoDOMap.get(oid);
                        effectiveSysIntInfoVOs.addAll(sysIntInfoDOS);
                    }
                });
                //如果校验的系统接口信息不存在,则数据不不往信息里推送
                if(CollectionUtils.isEmpty(effectiveSysIntInfoVOs)){
                    continue;
                }*/
                List<DockingTask> dockingTask_insert = new ArrayList<>();
                for (DockingSystemConfig sysIntInfoVOi:effectiveSysIntInfoVOs){
                    DockingTask dockingTask = new DockingTask();
                    dockingTask.setOid(VciBaseUtil.getPk());
                    dockingTask.setSendFlag(SEND_FLAG_FALSE);
                    dockingTask.setId(id);//编码
                    dockingTask.setUniqueCode(uniquecode);
                    dockingTask.setBtmOid(btmoid);//数据oid
                    dockingTask.setBtmId(btmid);//数据业务类型id
                    dockingTask.setClassifyId(classifyid);//数据在分类id
                    dockingTask.setClassifyOid(dataClassifyOid);//数据所在分类oid
                    dockingTask.setClassifyName(classifyname);//数据所在分类名称
                    dockingTask.setSendType(sendtype);//数据推送类型
                    dockingTask.setDataOid(dataoid);
                    dockingTask.setCreateTime(new Date());
                    dockingTask.setLastModifyTime(new Date());
                    dockingTask.setCreator("sysAdmin");
                    dockingTask.setLastModifier("sysAdmin");
                    //intinfo
                    dockingTask.setSysInfoOid(sysIntInfoVOi.getOid());//intinfo的oid
                    dockingTask.setSystemOid(sysIntInfoVOi.getSysBaseOid());//系统oid
                    dockingTask.setSystemCode(sysIntInfoVOi.getSysBaseId());//系统编码
                    dockingTask.setSystemName(sysIntInfoVOi.getSysBaseName());//系统name
                    dockingTask_insert.add(dockingTask);
                }
                if(dockingTask_insert.size()!=0) {
                    dockingTaskService.saveBatch(dockingTask_insert);
                }
                //dockingTaskDaoI.updateByPrimaryKey方法报错了,所以手写了这个
                boolean u = updateDockingDatasSendFlag(dataoid,SEND_FLAG_TRUE);
                if(!u){
                    log.error("集成data分解任务失败!dataoid:"+dataoid);
                    continue;
                }
            }
        });
    }
    /***
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSynonymServiceImpl.java
@@ -17,6 +17,7 @@
package com.vci.ubcs.code.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -138,10 +139,21 @@
            .selectAs(CodeClassifyTemplate::getName,CodeClassifyTemplateAttr::getClassifyTemplateOidName)
            .leftJoin(CodeClassifyTemplate.class,CodeTableNameEnum.PL_CODE_CLSTEMPLATE.getText(),CodeClassifyTemplate::getOid,CodeClassifyTemplateAttr::getClassifyTemplateOid)
            .like(CodeClassifyTemplateAttr::getSysonymRuleOids, oid);
        List<CodeClassifyTemplateAttr> voList = codeClassifyTemplateAttrService.selectByWrapper(
            mpjLambdaWrapper
        );
        List<CodeClassifyTemplateAttr> voList = codeClassifyTemplateAttrService.selectByWrapper(mpjLambdaWrapper);
        return CodeClassifyTemplateAttrWrapper.build().listVO(voList);
    }
    @Override
    public String selectNameByWrapper(LambdaQueryWrapper<CodeSynonym> wrappers) {
        List<CodeSynonym> codeSynonymsList = codeSynonymMapper.selectList(wrappers);
        if(codeSynonymsList.isEmpty()){
            return "";
        }
        StringBuilder res = new StringBuilder();
        codeSynonymsList.stream().forEach(item->{
            res.append(item.getName()).append("(").append(item.getId()).append(")").append(",");
        });
        return res.toString().replaceAll(",$", "");
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/PasswordFreeLoginServiceImpl.java
@@ -13,6 +13,7 @@
import org.springblade.core.log.exception.ServiceException;
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.support.Kv;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.ObjectUtil;
@@ -99,7 +100,7 @@
    @Override
    public boolean pwdFreeLoginByBoolean(String userName, ServletRequest servletRequest) throws AuthenticationException {
        //进来先判断缓存中是否存在token
        // 请求来自己哪个ip地址
        // 请求来自哪个ip地址
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        String ipAddr = request.getRemoteAddr();
        // 先尝试从缓存当中取,存在就直接从缓存中获取
@@ -124,7 +125,7 @@
            token2 = JwtUtil.getToken(authToken);
            user = this.getUser(token2);
        }
        //request.setAttribute("Blade-Auth",token);
        request.setAttribute("Blade-Auth",authToken);
        request.setAttribute("_BLADE_USER_REQUEST_ATTR_",user);
        return true;
    }
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeCLassifyMapper.xml
@@ -605,4 +605,26 @@
        and oid != #{currentOid}
    </select>
    <!--根据顶层节点oid查询所有叶子节点分类oid-->
    <select id="selectLeafByPid" resultType="com.vci.ubcs.code.entity.CodeClassify">
        select *
        from (
                 select
                     oid,
                     name,
                     id,
                     level lvl,
                     isparticipatecheck,
                     nvl((select 'N'
                          from PL_CODE_CLASSIFY pcc1
                          where pcc.oid = pcc1.PARENTCODECLASSIFYOID
                            and rownum &lt; 2),'Y') is_leaf
                 from PL_CODE_CLASSIFY pcc
                     start with pcc.oid = #{pid}
                 connect by pcc.PARENTCODECLASSIFYOID = prior oid
             ) plcls
        where
            is_leaf = 'Y'
    </select>
</mapper>