田源
2024-04-24 d50dec2d9b92c103134ae4e313c7bbbe5c2f4432
Merge remote-tracking branch 'origin/master'
已修改7个文件
3749 ■■■■ 文件已修改
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 602 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java 3071 ●●●● 补丁 | 查看 | 原始文档 | 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;
@@ -90,7 +86,7 @@
 * ä¸»é¢˜åº“集成服务
 * @author xiejun
 * @date 2023-06-19
**/
 **/
@Service
@Slf4j
@@ -137,7 +133,7 @@
    private CommonsMapper commonsMapper;
    @Resource
    private  MdmEngineService  mdmEngineServiceI;
    private MdmEngineService mdmEngineServiceI;
    /**
     * æ‰¹é‡å¤„理的服务
@@ -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;
@@ -211,44 +207,44 @@
    @Transactional(rollbackFor = Throwable.class)
    @Override
    public R sendData(String oids) {
        VciBaseUtil.alertNotNull(oids,"系统集成基础信息数据对象",oids,"系统集成基础信息的主键");
        List<String> dockingTaskOidList=new ArrayList<>();
        dockingTaskOidList= VciBaseUtil.str2List(oids);
        List<DockingTask> newDockingTasks= this.dockingTaskService.listByIds(dockingTaskOidList);
        Map<String,List<DockingTask>> typeDockingTaskMap=new HashMap<>();
        newDockingTasks.stream().forEach(newDockingTaskDO->{
            String btmId=newDockingTaskDO.getBtmId();
            if(btmId.equalsIgnoreCase(DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT))){
                List<DockingTask> dockingTaskList= typeDockingTaskMap.get(DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT));
                if(CollectionUtils.isEmpty(dockingTaskList)){
                    dockingTaskList=new ArrayList<>();
        VciBaseUtil.alertNotNull(oids, "系统集成基础信息数据对象", oids, "系统集成基础信息的主键");
        List<String> dockingTaskOidList = new ArrayList<>();
        dockingTaskOidList = VciBaseUtil.str2List(oids);
        List<DockingTask> newDockingTasks = this.dockingTaskService.listByIds(dockingTaskOidList);
        Map<String, List<DockingTask>> typeDockingTaskMap = new HashMap<>();
        newDockingTasks.stream().forEach(newDockingTaskDO -> {
            String btmId = newDockingTaskDO.getBtmId();
            if (btmId.equalsIgnoreCase(DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT))) {
                List<DockingTask> dockingTaskList = typeDockingTaskMap.get(DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT));
                if (CollectionUtils.isEmpty(dockingTaskList)) {
                    dockingTaskList = new ArrayList<>();
                }
                dockingTaskList.add(newDockingTaskDO);
                typeDockingTaskMap.put(DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT),dockingTaskList);
            }else{
                List<DockingTask> dockingTaskDOList= typeDockingTaskMap.get("data");
                if(CollectionUtils.isEmpty(dockingTaskDOList)){
                    dockingTaskDOList=new ArrayList<>();
                typeDockingTaskMap.put(DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT), dockingTaskList);
            } else {
                List<DockingTask> dockingTaskDOList = typeDockingTaskMap.get("data");
                if (CollectionUtils.isEmpty(dockingTaskDOList)) {
                    dockingTaskDOList = new ArrayList<>();
                }
                dockingTaskDOList.add(newDockingTaskDO);
                typeDockingTaskMap.put("data",dockingTaskDOList);
                typeDockingTaskMap.put("data", dockingTaskDOList);
            }
        });
        typeDockingTaskMap.keySet().forEach(type->{
            List<DockingTask> DockingTaskList=typeDockingTaskMap.get(type);
            if(!CollectionUtils.isEmpty(DockingTaskList)){
                if(type.equalsIgnoreCase(DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT))){
        typeDockingTaskMap.keySet().forEach(type -> {
            List<DockingTask> DockingTaskList = typeDockingTaskMap.get(type);
            if (!CollectionUtils.isEmpty(DockingTaskList)) {
                if (type.equalsIgnoreCase(DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT))) {
                    this.sendpushClsfForService(DockingTaskList);
                }else{
                } else {
                    this.sendpushDataForService(DockingTaskList);
                }
            }
        });
        return  R.success("手动推送完成,请核对是否推送成功");
        return R.success("手动推送完成,请核对是否推送成功");
    }
    private SearchItemDataVO initData(String status,String itemCode,String mmCode){
        SearchItemDataVO searchItemDataVO=new SearchItemDataVO();
    private SearchItemDataVO initData(String status, String itemCode, String mmCode) {
        SearchItemDataVO searchItemDataVO = new SearchItemDataVO();
        searchItemDataVO.setLastchangedon(new Date());
        searchItemDataVO.setLastchangedby("19831133");
        searchItemDataVO.setCreatby("19831133");
@@ -263,19 +259,19 @@
        return searchItemDataVO;
    }
    public HttpServletRequest  getRequest(){
        HttpServletRequest request =null;
    public HttpServletRequest getRequest() {
        HttpServletRequest request = null;
        RequestAttributes requestAttributes = null;
        try{
        try {
            requestAttributes = RequestContextHolder.currentRequestAttributes();
        }catch (IllegalStateException e){
        } catch (IllegalStateException e) {
            //requestAttributes = new NonWebRequestAttributes();
            //RequestContextHolder.setRequestAttributes(requestAttributes, true);
            request = new MockHttpServletRequest();
            RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(request),true);
        }finally {
            if (requestAttributes instanceof  ServletRequestAttributes) {
                ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes)RequestContextHolder.currentRequestAttributes();
            RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(request), true);
        } finally {
            if (requestAttributes instanceof ServletRequestAttributes) {
                ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
                request = servletRequestAttributes.getRequest();
            }
            org.springblade.core.tool.utils.WebUtil.setRequest(new ServletRequestAttributes(request));
@@ -288,54 +284,54 @@
     */
    @Override
    public void saveItemDataSyncScheduing(String endDate) throws ServiceException {
        String paramString="";
        String backString="成功";
        String msg="成功";
        boolean success=true;
        SearchItemParam searchItemParam=new SearchItemParam();
        String paramString = "";
        String backString = "成功";
        String msg = "成功";
        boolean success = true;
        SearchItemParam searchItemParam = new SearchItemParam();
        searchItemParam.setSystag("VCI"); //调用系统标识
        SimpleDateFormat dft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String lastchangedon="";
        if(StringUtils.isBlank(endDate)) {
        String lastchangedon = "";
        if (StringUtils.isBlank(endDate)) {
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.HOUR_OF_DAY, 0);
            calendar.set(Calendar.MINUTE, 0);
            calendar.set(Calendar.SECOND, 0);
            log.info("查询时间------->"+dft.format(new Date()));
            lastchangedon= dft.format(calendar.getTime());
        }else{
            lastchangedon=endDate;
            log.info("查询时间------->" + dft.format(new Date()));
            lastchangedon = dft.format(calendar.getTime());
        } else {
            lastchangedon = endDate;
        }
        searchItemParam.setLastchangedon(lastchangedon);
        searchItemParam.setIsenabled("");
        searchItemParam.setStatus(itemStatus);
        //Map<String,String> searchDataMap = VciBaseUtil.objectToMapString(searchItemParam);
        try {
            String sendParamString=JSONObject.toJSON(searchItemParam).toString();
            String sendParamString = JSONObject.toJSON(searchItemParam).toString();
            // TODO: æ”¹ä¸ºä½¿ç”¨HttpUtils方式进行申请,因为现在申请用之前的方式会报错
            LinkedMultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
            headers.add("Authorization",ERPXHDHAUTH);
            headers.add("X-ECC-Current-Tenant",ERPXHDHTENANT);
            headers.add("Accept-Language","zh-CHS");
            headers.add("Content-Type",MediaType.APPLICATION_JSON.toString());
            String res = HttpUtils.request(ERPXHDHURL+"/getppModelByElemNew",sendParamString,headers, HttpMethod.POST,MediaType.APPLICATION_JSON);
            headers.add("Authorization", ERPXHDHAUTH);
            headers.add("X-ECC-Current-Tenant", ERPXHDHTENANT);
            headers.add("Accept-Language", "zh-CHS");
            headers.add("Content-Type", MediaType.APPLICATION_JSON.toString());
            String res = HttpUtils.request(ERPXHDHURL + "/getppModelByElemNew", sendParamString, headers, HttpMethod.POST, MediaType.APPLICATION_JSON);
            // String res= mdmSearchItemCodeProvider.getppModelByElem(searchItemParam);
            SearchItemVO searchItemVO = JSONObject.toJavaObject(JSONObject.parseObject(res), SearchItemVO.class);
            if (searchItemVO != null) {
                if(!"200".equals(searchItemVO.getStatus())){
                    throw new ServiceException(String.format("接口返回状态码为:%s,原因:%s",searchItemVO.getStatus(),searchItemVO.getMessage()));
                if (!"200".equals(searchItemVO.getStatus())) {
                    throw new ServiceException(String.format("接口返回状态码为:%s,原因:%s", searchItemVO.getStatus(), searchItemVO.getMessage()));
                }
                BladeUser finalUser;
                paramString = JSONObject.toJSON(searchItemVO).toString();
                log.info("型号代号数据值-------》"+paramString);
                HttpServletRequest request=getRequest();
                log.info("型号代号数据值-------》" + paramString);
                HttpServletRequest request = getRequest();
                try {
                    //免密登录申请token,request中添加用户信息
                    try {
                        passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(Locale.ROOT), request);
                        BladeUser user = AuthUtil.getUser();
                        if(Func.isEmpty(user)){
                            user=request.getAttribute("_BLADE_USER_REQUEST_ATTR_")==null?null:(BladeUser)request.getAttribute("_BLADE_USER_REQUEST_ATTR_");
                        if (Func.isEmpty(user)) {
                            user = request.getAttribute("_BLADE_USER_REQUEST_ATTR_") == null ? null : (BladeUser) request.getAttribute("_BLADE_USER_REQUEST_ATTR_");
                        }
                        finalUser = user;
                    } catch (Throwable e) {
@@ -388,7 +384,7 @@
                        //List<BaseModel> baseModelList=new ArrayList<>();
                        Map<String, BaseModel> baseModelMap = new HashMap<>();
                        if(!CollectionUtils.isEmpty(newDataList)) {
                        if (!CollectionUtils.isEmpty(newDataList)) {
                            newDataList.stream().forEach(dataMap -> {
                                BaseModel baseModel = new BaseModel();
                                Map<String, String> newDateMap = new CaseInsensitiveMap<>(dataMap);
@@ -482,10 +478,10 @@
                        throw new VciBaseException(e.getMessage());
                    }
                }
            }else{
            } else {
                throw new Throwable("接口未返回信息");
            }
        }catch (Throwable e1){
        } catch (Throwable e1) {
            e1.printStackTrace();
            log.error("查询失败--->" + e1);
            //paramString="";
@@ -511,12 +507,12 @@
     * @param result
     * @return
     */
    private  void saveLogs(String systemId,String systemName,String parmaData, String result,boolean isSucess,String msg,String operation){
    private void saveLogs(String systemId, String systemName, String parmaData, String result, boolean isSucess, String msg, String operation) {
        //记录日志信息
        DockingLog dockingLoge=new DockingLog();
        DockingLog dockingLoge = new DockingLog();
        //String oid=redisService.getUUIDEveryDay();
        dockingLoge.setSystemCode(StringUtils.isBlank(systemId)?"-":systemId);//设置系统标识
        dockingLoge.setSystemName(StringUtils.isBlank(systemName)?"-":systemName);
        dockingLoge.setSystemCode(StringUtils.isBlank(systemId) ? "-" : systemId);//设置系统标识
        dockingLoge.setSystemName(StringUtils.isBlank(systemName) ? "-" : systemName);
        dockingLoge.setMsg(msg);//日志消息
        dockingLoge.setClassifyId("-");//分类编号
        dockingLoge.setClassifyName("-");//分类名称
@@ -529,73 +525,73 @@
        dockingLoge.setReturnString(result);//返回信息
        dockingLoge.setType(operation);//日志操作类型
        dockingLoge.setCreateTime(new Date());
        if(isSucess) {
        if (isSucess) {
            dockingLoge.setInterfaceStatus("true");//接口集成状态
        }else{
        } else {
            dockingLoge.setInterfaceStatus("false");//接口集成状态
        }
        dockingLogeService.save(dockingLoge);
        log.info("集成推送数据,systemId:"+systemId+",systemname:"+systemName+",operation:"+operation+",param:"+parmaData);
        log.info("集成推送数据,systemId:" + systemId + ",systemname:" + systemName + ",operation:" + operation + ",param:" + parmaData);
    }
    /***
     * æ ¹æ®ä¼ å…¥çš„参数信息校验码段规则
     */
    private List<CodeOrderSecDTO> getRuleCodeOrderSecDTOs(List<SectionVO> SectionVOList, CodeRuleVO ruleVO, CodeClassifyFullInfoBO classifyFullInfo) throws Throwable{
        List<CodeBasicSecVO>  codeBasicSecVOS= ruleVO.getSecVOList();
        Map<String,String> sectionVOMap=new HashMap<>();
        SectionVOList.stream().forEach(SectionVO->{
            sectionVOMap.put(SectionVO.getName(),SectionVO.getValue());
    private List<CodeOrderSecDTO> getRuleCodeOrderSecDTOs(List<SectionVO> SectionVOList, CodeRuleVO ruleVO, CodeClassifyFullInfoBO classifyFullInfo) throws Throwable {
        List<CodeBasicSecVO> codeBasicSecVOS = ruleVO.getSecVOList();
        Map<String, String> sectionVOMap = new HashMap<>();
        SectionVOList.stream().forEach(SectionVO -> {
            sectionVOMap.put(SectionVO.getName(), SectionVO.getValue());
        });
        //Map<String,CodeClassifyVO> codeClassifyVOMap= classifyFullInfo.getParentClassifyVOs().stream().collect(Collectors.toMap(s -> s.getId(), t -> t,(o1, o2)->o2));
        List<CodeOrderSecDTO> codeOrderSecDTOList=new ArrayList<>();
        Map<String,String> errorMap=new HashMap<>();
        for(CodeBasicSecVO codeBasicSecVO: codeBasicSecVOS) {
        List<CodeOrderSecDTO> codeOrderSecDTOList = new ArrayList<>();
        Map<String, String> errorMap = new HashMap<>();
        for (CodeBasicSecVO codeBasicSecVO : codeBasicSecVOS) {
            String sectype = codeBasicSecVO.getSecType();
            String newSecName=codeBasicSecVO.getName();
            String classifySecOid= codeBasicSecVO.getOid();
            String message="";
            String newSecName = codeBasicSecVO.getName();
            String classifySecOid = codeBasicSecVO.getOid();
            String message = "";
            if (!sectype.equals(CodeSecTypeEnum.CODE_SERIAL_SEC.getValue())) {
                String name = codeBasicSecVO.getName();
                String sectypeText = codeBasicSecVO.getSecTypeText();
                log.info("码段名称:"+name);
                log.info("描述:"+sectypeText);
                log.info("码段名称:" + name);
                log.info("描述:" + sectypeText);
                CodeOrderSecDTO CodeOrderSecDTO = new CodeOrderSecDTO();
                if (sectionVOMap.containsKey(name)) {
                    CodeOrderSecDTO.setSecOid(codeBasicSecVO.getOid());
                    String sectypeValue = sectionVOMap.get(name);
                    log.info("码段值:"+sectypeValue);
                    log.info("码段值:" + sectypeValue);
                    CodeSecTypeEnum secType = CodeSecTypeEnum.forValue(sectype);
                    if(CODE_CLASSIFY_SEC.equals(secType)) {//如果是分类的话,则需要匹配传过来的分类代号与
                    if (CODE_CLASSIFY_SEC.equals(secType)) {//如果是分类的话,则需要匹配传过来的分类代号与
                        //先简称是否有关联模板,有模板要先删除
                        List<CodeClassifyValue> codeClassifyValueDOList = codeClassifyValueService.list(Wrappers.<CodeClassifyValue>query().lambda().eq(CodeClassifyValue::getCodeClassifySecOid,classifySecOid));
                        List<CodeClassifyValue> codeClassifyValueDOList = codeClassifyValueService.list(Wrappers.<CodeClassifyValue>query().lambda().eq(CodeClassifyValue::getCodeClassifySecOid, classifySecOid));
                        if (!CollectionUtils.isEmpty(codeClassifyValueDOList)) {
                            Map<String, CodeClassifyValue> codeClassifyValueDOMap = codeClassifyValueDOList.stream().collect(Collectors.toMap(s -> s.getId(), t -> t, (o1, o2) -> o2));
                            if(codeClassifyValueDOMap.containsKey(sectypeValue)){
                                CodeClassifyValue codeClassifyValue=   codeClassifyValueDOMap.get(sectypeValue);
                                sectypeValue=codeClassifyValue.getOid();
                            }else {
                            if (codeClassifyValueDOMap.containsKey(sectypeValue)) {
                                CodeClassifyValue codeClassifyValue = codeClassifyValueDOMap.get(sectypeValue);
                                sectypeValue = codeClassifyValue.getOid();
                            } else {
                                //throw new Throwable("传入的分类码段:【" + name + " å€¼ï¼š" + sectypeValue + "】,不符合当前分类层级代号");
                                message="传入的分类码段:【" + name + " å€¼ï¼š" + sectypeValue + "】,不符合当前分类层级代号";
                                errorMap.put("error",errorMap.getOrDefault("error","")+";"+message);
                                message = "传入的分类码段:【" + name + " å€¼ï¼š" + sectypeValue + "】,不符合当前分类层级代号";
                                errorMap.put("error", errorMap.getOrDefault("error", "") + ";" + message);
                            }
                        }
                    }
                    if(StringUtils.isBlank(sectypeValue)){
                        message="传入的分类码段:【" + name + " ã€‘的值不允许为空";
                        errorMap.put("error",errorMap.getOrDefault("error","")+";"+message);
                    if (StringUtils.isBlank(sectypeValue)) {
                        message = "传入的分类码段:【" + name + " ã€‘的值不允许为空";
                        errorMap.put("error", errorMap.getOrDefault("error", "") + ";" + message);
                    }
                    CodeOrderSecDTO.setSecValue(sectypeValue);
                    codeOrderSecDTOList.add(CodeOrderSecDTO);
                } else {
                    message="传入的码段规则缺少" + name;
                    errorMap.put("error",errorMap.getOrDefault("error","")+";"+message);
                    message = "传入的码段规则缺少" + name;
                    errorMap.put("error", errorMap.getOrDefault("error", "") + ";" + message);
                }
            }
        }
        if(errorMap.size()>0){
            throw new Throwable(errorMap.getOrDefault("error",""));
        if (errorMap.size() > 0) {
            throw new Throwable(errorMap.getOrDefault("error", ""));
        }
        return codeOrderSecDTOList;
    }
@@ -609,18 +605,18 @@
     * @param dataObjectVO
     * @throws Throwable
     */
    public void getConfigDatas(String systemId,String libray, ApplyDatasVO applyDatasVO,List<CodeClassifyTemplateAttrVO> codeClassifyTemplateAttrVOList,DataObjectVO dataObjectVO) throws Throwable {
    public void getConfigDatas(String systemId, String libray, ApplyDatasVO applyDatasVO, List<CodeClassifyTemplateAttrVO> codeClassifyTemplateAttrVOList, DataObjectVO dataObjectVO) throws Throwable {
        LinkedHashMap<String,LinkedHashMap<String,String>> dataKeyValueMap=new LinkedHashMap<>();
        LinkedHashMap<String, LinkedHashMap<String, String>> dataKeyValueMap = new LinkedHashMap<>();
        //如果将数据转换成所需要的数据对象
        Map<String, String> attrMapConfigMap=new HashMap<>();
        Map<String, String> propMaps=new HashMap<>();
        Map<String, String> attrMapConfigMap = new HashMap<>();
        Map<String, String> propMaps = new HashMap<>();
        log.info("开始读取系统配置文件 start");
        Map<String, String> stringStringMap=attributeMapConfig.getSystem_attrmap();
        log.info("集成系统属性映射配置文件条目数-》"+stringStringMap.size());
        Map<String, String> stringStringMap = attributeMapConfig.getSystem_attrmap();
        log.info("集成系统属性映射配置文件条目数-》" + stringStringMap.size());
        //stringStringMap.put("RLM","D:\\RLM.xml");
        if(!CollectionUtils.isEmpty(stringStringMap)) {
            List<LibraryClsfDO> libraryClsfDOList=new ArrayList<>();
        if (!CollectionUtils.isEmpty(stringStringMap)) {
            List<LibraryClsfDO> libraryClsfDOList = new ArrayList<>();
            try {
                log.info("info:需要读取配置文件");
                LibraryDO libraryDO = gennerAttrMapUtil.getNewInstance().gennerAttrMapBySystem(systemId, stringStringMap);
@@ -641,21 +637,21 @@
                } else {
                    throw new Throwable("根据系统标识【" + systemId + "】找到对应的配置文件:【" + path + "】,但未获取到对应的库【" + libray + "】属性映射信息配置");
                }
            }else{
            } else {
                throw new Throwable("根据系统标识【" + systemId + "】找到对应的配置文件:【" + path + "】,但未获取到对应的库【" + libray + "】属性映射信息配置");
            }
        }else{
        } else {
            throw new Throwable("未获取到集成属性映射系统配置信息");
        }
        log.info("根据参数:libray:-》"+libray+"从配置文件中找对应属性映射配置 end ");
        LinkedList<String> rowNameList=new LinkedList<>();
        LinkedHashMap<String,Integer> filedIndexMap=new LinkedHashMap<>();
        log.info("根据参数:libray:-》" + libray + "从配置文件中找对应属性映射配置 end ");
        LinkedList<String> rowNameList = new LinkedList<>();
        LinkedHashMap<String, Integer> filedIndexMap = new LinkedHashMap<>();
        //根据分类模板组织数据
        final int[] index = {0};
        try {
            //除去默认的属性.还有只有具有分类注入的才过滤出来
            codeClassifyTemplateAttrVOList = codeClassifyTemplateAttrVOList.stream().filter(
                s ->!DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) &&
                s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) &&
                    ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
            ).collect(Collectors.toList());
            codeClassifyTemplateAttrVOList.stream().forEach(codeClassifyTemplateAttrVO -> {
@@ -667,10 +663,10 @@
            dataObjectVO.setColName(rowNameList);//放入属性
            attrMapConfigMap.putAll(propMaps);
            LinkedList<RowDatas> rowDataList = new LinkedList<>();
            List<ApplyDataVO> applyDataVOList=new ArrayList<>();
            List<ApplyDataVO> applyDataVOList = new ArrayList<>();
            if(!CollectionUtils.isEmpty(applyDatasVO.getObject())){
                applyDataVOList=applyDatasVO.getObject();
            if (!CollectionUtils.isEmpty(applyDatasVO.getObject())) {
                applyDataVOList = applyDatasVO.getObject();
            }
            //Map<String, List<ProppertyVO>> dataPropMap = applyDataVOList.stream().collect(Collectors.toMap(ApplyDataVO::getId, ApplyDataVO::getProp, (key1, key2) -> key2));
            final int[] rowIndex = {0};
@@ -697,19 +693,19 @@
                            String dataValue = sourceKeyValueMap.get(sourceKey);
                            if (attrMapConfigMap.containsKey(sourceKey)) {
                                String targetKey = attrMapConfigMap.get(sourceKey);
                                keyValueMap.put(targetKey, StringUtils.isBlank(dataValue)?"":dataValue);
                                keyValueMap.put(targetKey, StringUtils.isBlank(dataValue) ? "" : dataValue);
                            }
                        });
                    } else {
                        sourceKeyValueMap.forEach((filed,value)->{
                            keyValueMap.put(filed,StringUtils.isBlank(value)?"":value) ;
                        sourceKeyValueMap.forEach((filed, value) -> {
                            keyValueMap.put(filed, StringUtils.isBlank(value) ? "" : value);
                        });
                    }
                    filedIndexMap.forEach((attrKey, column) -> {
                        String keyValue = "";
                        if (keyValueMap.containsKey(attrKey)) {
                            keyValue =StringUtils.isBlank(keyValueMap.get(attrKey))?"":keyValueMap.get(attrKey);
                            keyValue = StringUtils.isBlank(keyValueMap.get(attrKey)) ? "" : keyValueMap.get(attrKey);
                        }
                        integerValueMap.put(column, keyValue);
                        filedValueMap.put(attrKey, keyValue);
@@ -720,94 +716,99 @@
                rowDataList.add(rowDatas);
            });
            dataObjectVO.setRowData(rowDataList);
        }catch (Throwable e){
            throw new   Throwable("组织数据映射值失败");
        } catch (Throwable e) {
            throw new Throwable("组织数据映射值失败");
        }
    }
    private void changeObjectToMap(SearchItemUpperCaseDataVO searchItemDataVO, String code, BladeUser user,String operation,List<ApplyDataVO> object){
     ApplyDataVO applyDataVO=new ApplyDataVO();
     List<ProppertyVO> propList=new ArrayList<>();
     //String status= searchItemDataVO.getStatus();//数据状态 å­—符型,枚举值;制单:0;审批中:1;通过:2;驳回:3;
    private void changeObjectToMap(SearchItemUpperCaseDataVO searchItemDataVO, String code, BladeUser user, String operation, List<ApplyDataVO> object) {
        ApplyDataVO applyDataVO = new ApplyDataVO();
        List<ProppertyVO> propList = new ArrayList<>();
        //String status= searchItemDataVO.getStatus();//数据状态 å­—符型,枚举值;制单:0;审批中:1;通过:2;驳回:3;
     String mmodelCode=searchItemDataVO.getMMODELCODE();//制造型号代号
     initProperty("mmodelcode","",mmodelCode,propList);
     String projectCode= searchItemDataVO.getPROJECTCODE();//项目编码
     initProperty("projectcode","",projectCode,propList);
     String projectItem=searchItemDataVO.getPROJECTITEM();//项目代号
     initProperty("projectitem","",projectItem,propList);
     String materialCode=searchItemDataVO.getMATERIALCODE();//产品编码
     initProperty("materialcode","",materialCode,propList);
     //组合属性的处理
     initProperty(attrKey,"",StringUtils.isNotBlank(projectItem)?projectItem:mmodelCode,propList);
     String creatBy=searchItemDataVO.getCREATBY();//创建者
     Date cretaeDon= searchItemDataVO.getCREATEDON();//创建日期 æ—¥æœŸåž‹ï¼Œå¦‚:2023-09-08 19:24:11
     String lastchangeBy=searchItemDataVO.getLASTCHANGEDBY();//更改者
     Date lastchangeDon=searchItemDataVO.getLASTCHANGEDON();//更改时间 æ—¥æœŸåž‹ï¼Œå¦‚:2023-09-08 19:24:11
     String isenabled=  searchItemDataVO.getISENABLED();//字符型,枚举值;停用:0;启用:1;
     applyDataVO.setOperate(operation);
     applyDataVO.setCode(code);
     if(isenabled.equals("0")){
         applyDataVO.setStatus(CodeDefaultLC.DISABLE.getValue());
     }else{
         applyDataVO.setStatus(CodeDefaultLC.RELEASED.getValue());
     }
     applyDataVO.setId(VciBaseUtil.getPk());
     applyDataVO.setEditor(lastchangeBy);
     applyDataVO.setCreator(creatBy);
     applyDataVO.setProp(propList);
     object.add(applyDataVO);
 }
        String mmodelCode = searchItemDataVO.getMMODELCODE();//制造型号代号
        initProperty("mmodelcode", "", mmodelCode, propList);
        String projectCode = searchItemDataVO.getPROJECTCODE();//项目编码
        initProperty("projectcode", "", projectCode, propList);
        String projectItem = searchItemDataVO.getPROJECTITEM();//项目代号
        initProperty("projectitem", "", projectItem, propList);
        String materialCode = searchItemDataVO.getMATERIALCODE();//产品编码
        initProperty("materialcode", "", materialCode, propList);
     private void initProperty(String key,String text,String value,List<ProppertyVO> propList){
    ProppertyVO vo=new ProppertyVO();
      vo.setKey(key);
      vo.setText(StringUtils.isBlank(text)?"":text);
      vo.setValue(StringUtils.isBlank(value)?"":value);
      propList.add(vo);
  }
        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
        String lastchangeBy = searchItemDataVO.getLASTCHANGEDBY();//更改者
        //Date lastchangeDon = searchItemDataVO.getLASTCHANGEDON();//更改时间 æ—¥æœŸåž‹ï¼Œå¦‚:2023-09-08 19:24:11
        String isenabled = searchItemDataVO.getISENABLED();//字符型,枚举值;停用:0;启用:1;
        applyDataVO.setOperate(operation);
        applyDataVO.setCode(code);
        if (isenabled.equals("0")) {
            applyDataVO.setStatus(CodeDefaultLC.DISABLE.getValue());
        } else {
            applyDataVO.setStatus(CodeDefaultLC.RELEASED.getValue());
        }
        applyDataVO.setId(VciBaseUtil.getPk());
        applyDataVO.setEditor(lastchangeBy);
        applyDataVO.setCreator(creatBy);
        applyDataVO.setProp(propList);
        object.add(applyDataVO);
    }
    private void initProperty(String key, String text, String value, List<ProppertyVO> propList) {
        ProppertyVO vo = new ProppertyVO();
        vo.setKey(key);
        vo.setText(StringUtils.isBlank(text) ? "" : text);
        vo.setValue(StringUtils.isBlank(value) ? "" : value);
        propList.add(vo);
    }
    /***
     * æŸ¥è¯¢redis中数据,对比后插入dockingtask
     * @param type
     */
    private void initPushDataTaks(int type){
    private void initPushDataTaks(int type) {
        initSysadmin();
        List<DockingSystemConfig> dockingSystemConfigList = dockingSystemConfigService.list(
            Wrappers.<DockingSystemConfig>query().lambda().eq(DockingSystemConfig::getUsedFlag,"true")
                .eq(DockingSystemConfig::getPushType,type==2?"2":"1").eq(DockingSystemConfig::getDataFlowType, SysIntegrationDataFlowTypeEnum.PUSH.getValue()));//2是代表分类推送,1是代表数据推送
            Wrappers.<DockingSystemConfig>query().lambda().eq(DockingSystemConfig::getUsedFlag, "true")
                .eq(DockingSystemConfig::getPushType, type == 2 ? "2" : "1").eq(DockingSystemConfig::getDataFlowType, SysIntegrationDataFlowTypeEnum.PUSH.getValue()));//2是代表分类推送,1是代表数据推送
        if(CollectionUtils.isEmpty(dockingSystemConfigList)){
            String title=type==2?"分类推送":"数据推送";
            log.info("info->所有集成系统,未查询到相关的【"+title+"】的接口配置信息,配置");
        if (CollectionUtils.isEmpty(dockingSystemConfigList)) {
            String title = type == 2 ? "分类推送" : "数据推送";
            log.info("info->所有集成系统,未查询到相关的【" + title + "】的接口配置信息,配置");
            return;
        }
        Map<String ,List<DockingSystemConfig>> sysIntInfoDOMap = new HashMap<>();//key=classifyoid,value=list<map>
        for (DockingSystemConfig dockingSystemConfig:dockingSystemConfigList){
            String classifyOid= dockingSystemConfig.getClassifyOid();
            String codeclassifOid=codeClassifyService.selectLeafByPid(classifyOid);
            List<String> codeList= VciBaseUtil.str2List(codeclassifOid);
        Map<String, List<DockingSystemConfig>> sysIntInfoDOMap = new HashMap<>();//key=classifyoid,value=list<map>
        for (DockingSystemConfig dockingSystemConfig : dockingSystemConfigList) {
            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<>();
                if (Func.isEmpty(dockingSystemList)) {
                    dockingSystemList = new ArrayList<>();
                }
                dockingSystemList.add(dockingSystemConfig);
                sysIntInfoDOMap.put(oid,dockingSystemList);
                sysIntInfoDOMap.put(oid, dockingSystemList);
            });
        }
        sysIntInfoDOMap.forEach((classifyOid,effectiveSysIntInfoVOs)->{
        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);
            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){
            for (DockingData mapi : dataList) {
                WebUtil.setPersistence(false);
                String dataoid = mapi.getOid();//data对象的oid
                String dataClassifyOid = mapi.getClassifyOid();
@@ -818,8 +819,8 @@
                String sendtype = mapi.getSendType();
                String classifyid = mapi.getClassifyId();
                String classifyname = mapi.getClassifyName();
                String curentClassOid=null;
                if(!dataClassifyOid.equals(classifyOid)){
                String curentClassOid = null;
                if (!dataClassifyOid.equals(classifyOid)) {
                    continue;
                }
                /*if(type==2){
@@ -845,7 +846,7 @@
                    continue;
                }*/
                List<DockingTask> dockingTask_insert = new ArrayList<>();
                for (DockingSystemConfig sysIntInfoVOi:effectiveSysIntInfoVOs){
                for (DockingSystemConfig sysIntInfoVOi : effectiveSysIntInfoVOs) {
                    DockingTask dockingTask = new DockingTask();
                    dockingTask.setOid(VciBaseUtil.getPk());
                    dockingTask.setSendFlag(SEND_FLAG_FALSE);
@@ -870,13 +871,13 @@
                    dockingTask_insert.add(dockingTask);
                }
                if(dockingTask_insert.size()!=0) {
                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);
                boolean u = updateDockingDatasSendFlag(dataoid, SEND_FLAG_TRUE);
                if (!u) {
                    log.error("集成data分解任务失败!dataoid:" + dataoid);
                    continue;
                }
            }
@@ -887,22 +888,22 @@
    /***
     * å‘送分类数据
     */
    private void sendpushClsfForService(List<DockingTask> dockingTaskList){
    private void sendpushClsfForService(List<DockingTask> dockingTaskList) {
        //每个task依次执行推送
        for (DockingTask dockingTask:dockingTaskList){
        for (DockingTask dockingTask : dockingTaskList) {
            //每个task一个事务,开启
            String paramString="";
            Object sendString="";
            String backString="";
            String paramString = "";
            Object sendString = "";
            String backString = "";
            //查询系统接口信息,ip method,dataType
            String systeminfooid = dockingTask.getSysInfoOid();//sysininfo çš„oid
            try {
                //查询要推送的数据
                String btmoid = dockingTask.getBtmOid();//数据btmid
                JsonRootDataDTO jsonRootDataDTO=new JsonRootDataDTO();
                CodeClassify codeClassify=codeClassifyService.getById(btmoid);
                List<NodeClassifyDTO>nodeClassifyDTOList=new ArrayList<>();
                NodeClassifyDTO nodeClassifyDTO=new NodeClassifyDTO();
                JsonRootDataDTO jsonRootDataDTO = new JsonRootDataDTO();
                CodeClassify codeClassify = codeClassifyService.getById(btmoid);
                List<NodeClassifyDTO> nodeClassifyDTOList = new ArrayList<>();
                NodeClassifyDTO nodeClassifyDTO = new NodeClassifyDTO();
                nodeClassifyDTO.setClassCode(codeClassify.getId());//分类代号
                nodeClassifyDTO.setDescription(codeClassify.getDescription());//分类描述
                nodeClassifyDTO.setFullPathName(codeClassify.getPath());//全路径
@@ -912,23 +913,23 @@
                nodeClassifyDTO.setId(codeClassify.getOid());//分类oid
                nodeClassifyDTO.setName(codeClassify.getName());//分类名称
                nodeClassifyDTOList.add(nodeClassifyDTO);
                NodeLibraryDTO nodeLibraryDTO=new NodeLibraryDTO();
                CodeClassifyVO rootClassify=codeClassifyService.getTopClassifyVO(btmoid);
                NodeLibraryDTO nodeLibraryDTO = new NodeLibraryDTO();
                CodeClassifyVO rootClassify = codeClassifyService.getTopClassifyVO(btmoid);
                nodeLibraryDTO.setClassify(nodeClassifyDTOList);
                nodeLibraryDTO.setId(rootClassify.getOid());
                nodeLibraryDTO.setName(rootClassify.getName());
                nodeLibraryDTO.setClassCode(rootClassify.getId());
                NodeDataDTO nodeDataDTO=new NodeDataDTO();
                NodeDataDTO nodeDataDTO = new NodeDataDTO();
                nodeDataDTO.setLibrary(nodeLibraryDTO);
                jsonRootDataDTO.setData(nodeDataDTO);
                //查询推送接口参数
                DockingSystemConfig dockingSystemConfig = dockingSystemConfigService.getById(systeminfooid);
                String paramType = dockingSystemConfig.getParamType();//xml/json
                if(paramType.equals(DATATYPE_JSON)){
                     Object object = JSONObject.toJSON(jsonRootDataDTO);
                     sendString = object;
                }else{
                if (paramType.equals(DATATYPE_JSON)) {
                    Object object = JSONObject.toJSON(jsonRootDataDTO);
                    sendString = object;
                } else {
                    //组织返回接口信息
                    XStream xStream = new XStream(new DomDriver());
                    xStream.processAnnotations(NodeDataDTO.class);
@@ -936,10 +937,10 @@
                    sendString = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" + xStream.toXML(nodeDataDTO);
                }
                //调用接口
                callInterface(sendString,dockingSystemConfig,dockingTask,"pushClassifyData");
            }catch (Throwable e){
                callInterface(sendString, dockingSystemConfig, dockingTask, "pushClassifyData");
            } catch (Throwable e) {
                e.printStackTrace();
            }finally {
            } finally {
                //每一个task一个事物
            }
        }
@@ -948,24 +949,25 @@
    /***
     * å‘送编码主数据
     */
    private void sendpushDataForService(List<DockingTask> dockingTaskS){
    private void sendpushDataForService(List<DockingTask> dockingTaskS) {
        //每个task依次执行推送
        for (DockingTask dockingTask:dockingTaskS){
        for (DockingTask dockingTask : dockingTaskS) {
            //每个task一个事务,开启
            String paramString="";
            Object sendString="";
            String backString="";
            String paramString = "";
            Object sendString = "";
            String backString = "";
            try {
                //查询系统接口信息,ip method,dataType
                String systeminfooid = dockingTask.getSysInfoOid();//sysininfo çš„oid
                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<>();
@@ -976,14 +978,14 @@
                    CodeAllCode codeAllCode = codeAllCodes.get(0);
                    BaseModel baseModel = JSONObject.parseObject(codeAllCode.getBusinessData(), BaseModel.class);
                    Map<String, Object> objectMap = VciBaseUtil.objectToMap(baseModel);
                    for (Map.Entry<String,Object> entry : objectMap.entrySet()){
                        if(entry.getKey().equals("data") && Func.isNotEmpty(entry.getValue())){
                            Map<String, Object> dataMap = (Map<String,Object>)((JSONObject) entry.getValue());
                            for(Map.Entry<String,Object> dataEntry : dataMap.entrySet()){
                    for (Map.Entry<String, Object> entry : objectMap.entrySet()) {
                        if (entry.getKey().equals("data") && Func.isNotEmpty(entry.getValue())) {
                            Map<String, Object> dataMap = (Map<String, Object>) ((JSONObject) entry.getValue());
                            for (Map.Entry<String, Object> dataEntry : dataMap.entrySet()) {
                                String v = String.valueOf(dataEntry.getValue());
                                data.put(dataEntry.getKey().toLowerCase(Locale.ROOT), v == null ? "" : v);
                            }
                        }else{
                        } else {
                            String key = entry.getKey().toLowerCase(Locale.ROOT);
                            String value = String.valueOf(entry.getValue());
                            data.put(key, value == null ? "" : value);
@@ -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))){
                    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)) {
@@ -1014,13 +1016,13 @@
                });
                //查询推送接口参数
                DockingSystemConfig dockingSystemConfig = dockingSystemConfigService.getById(systeminfooid);
                boolean isGroupCodeFlage=false;
                if(dockingSystemConfig!=null) {
                    isGroupCodeFlage = StringUtils.isBlank(dockingSystemConfig.getIsGroupCodeFlag())?false: Boolean.parseBoolean(dockingSystemConfig.getIsGroupCodeFlag());
                boolean isGroupCodeFlage = false;
                if (dockingSystemConfig != null) {
                    isGroupCodeFlage = StringUtils.isBlank(dockingSystemConfig.getIsGroupCodeFlag()) ? false : Boolean.parseBoolean(dockingSystemConfig.getIsGroupCodeFlag());
                }
                if(isGroupCodeFlage){
                    code=data.getOrDefault("groupcode","");
                    if(StringUtils.isBlank(code)) {
                if (isGroupCodeFlage) {
                    code = data.getOrDefault("groupcode", "");
                    if (StringUtils.isBlank(code)) {
                        //如果是推送集团码,没有领取到集团码则任务不结束等待集团码申请后再通过定时器调用集团码段
                        dockingTask.setDescription("等待集团申请集团码");
                        // TODO:可能会出现未获取到集团码,但是又立马执行了回收,此时这条任务就永远无法结束,所以这儿判断只要是集团码为空,并且是回收的就关闭推送这条任务
@@ -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,11 +1059,12 @@
                    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){
                callInterface(sendString, dockingSystemConfig, dockingTask, "pushData");
            } catch (Throwable e) {
                e.printStackTrace();
            }finally {
            } finally {
            }
        }
    }
@@ -1073,32 +1076,32 @@
     * @param dockingTask
     * @throws Throwable
     */
    private void callInterface(Object sendObject, DockingSystemConfig dockingSystemConfig,DockingTask dockingTask,String operation) throws  Throwable{
    private void callInterface(Object sendObject, DockingSystemConfig dockingSystemConfig, DockingTask dockingTask, String operation) throws Throwable {
        String paramString = "";
        String backString = "";
        String sendString = sendObject.toString();
        String msg= "" ;
        String msg = "";
        String url = dockingSystemConfig.getRequestUrl();//url
        List<ResultNodeObjectDTO> resultNodeObjectDTOS =new ArrayList<>();
        List<ResultNodeObjectDTO> resultNodeObjectDTOS = new ArrayList<>();
        try {
            boolean usedFlag= dockingSystemConfig.getUsedFlag().equals("true")?true:false;
            if(!usedFlag){
            boolean usedFlag = dockingSystemConfig.getUsedFlag().equals("true") ? true : false;
            if (!usedFlag) {
                throw new Throwable("接口已经停用!");
            }
            String type = dockingSystemConfig.getInterfaceType().toLowerCase(Locale.ROOT);//get/post/webserver/corba
            String paramType = dockingSystemConfig.getParamType();//xml/json
            String returnType = dockingSystemConfig.getReturnType();//xml/json
            String requestmethod= dockingSystemConfig.getRequestMethod();
            String requestmethod = dockingSystemConfig.getRequestMethod();
            String interfaceFunction = dockingSystemConfig.getInterfaceFunction();//主要是webservice的方法名
            String namespace = dockingSystemConfig.getNamespace();//namespace
            String soapaction = dockingSystemConfig.getSoapAction();//soapaction
            String targName = dockingSystemConfig.getTargetName();//targName
            String cxfaxis = dockingSystemConfig.getCxfAxis();//webservice是cxf/axis
            //查询param
            List<DockingSysIntParam> dockingSysIntParamList = dockingSysIntParamService.list(Wrappers.<DockingSysIntParam>query().lambda().eq(DockingSysIntParam::getInfoOid,dockingSystemConfig.getOid()));
            List<DockingSysIntParam> dockingSysIntParamList = dockingSysIntParamService.list(Wrappers.<DockingSysIntParam>query().lambda().eq(DockingSysIntParam::getInfoOid, dockingSystemConfig.getOid()));
            //查询header
            List<DockingSysIntHeader> dockingSysIntHeaderList = dockingSysIntHeaderService.list(Wrappers.<DockingSysIntHeader>query().lambda().eq(DockingSysIntHeader::getInfoOid,dockingSystemConfig.getOid()));
            if(type.equals(URLTYPE_HTTP)) {
            List<DockingSysIntHeader> dockingSysIntHeaderList = dockingSysIntHeaderService.list(Wrappers.<DockingSysIntHeader>query().lambda().eq(DockingSysIntHeader::getInfoOid, dockingSystemConfig.getOid()));
            if (type.equals(URLTYPE_HTTP)) {
                if (requestmethod.equals(URLTYPE_GET)) {//GET请求
                    String sendurl = url + "?" + DATA_PARAM_NAME + "=" + sendString;
                    //拼接param
@@ -1112,34 +1115,35 @@
                    for (DockingSysIntParam dockingSysIntParam : dockingSysIntParamList) {
                        params.add(dockingSysIntParam.getParamKey(), dockingSysIntParam.getParamValue());
                    }
                    params.add(DATA_PARAM_NAME,sendObject);
                    params.add(DATA_PARAM_NAME, sendObject);
                    paramString = params.toString();
                    MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
                    for (DockingSysIntHeader dockingSysIntHeader : dockingSysIntHeaderList) {
                        headers.add(dockingSysIntHeader.getHeaderKey(), dockingSysIntHeader.getHeaderValue());
                    }
                    log.info("推送人员数据,执行到调用接口了,地址:" + url);
                    backString = HttpUtils.postByMediaType(
                        url,
                        params,
                        headers,
                        Func.isNotBlank(dockingSystemConfig.getContentType()) ? MediaType.valueOf(dockingSystemConfig.getContentType()):MediaType.APPLICATION_FORM_URLENCODED
                        Func.isNotBlank(dockingSystemConfig.getContentType()) ? MediaType.valueOf(dockingSystemConfig.getContentType()) : MediaType.APPLICATION_FORM_URLENCODED
                    );
                }
                if(backString.startsWith("\"")){
                    backString=backString.substring(backString.indexOf("\"")+1);
                if (backString.startsWith("\"")) {
                    backString = backString.substring(backString.indexOf("\"") + 1);
                }
                if(backString.endsWith("\"")){
                    backString=backString.substring(0,backString.lastIndexOf("\""));
                if (backString.endsWith("\"")) {
                    backString = backString.substring(0, backString.lastIndexOf("\""));
                }
                if(backString.contains("\n")){
                    String res="\n";
                    backString=  backString.replaceAll(res,"");
                if (backString.contains("\n")) {
                    String res = "\n";
                    backString = backString.replaceAll(res, "");
                }
                if(backString.contains("\\")){
                    String res="\\\\\"";
                    backString=  backString.replaceAll(res,"\"").trim();
                if (backString.contains("\\")) {
                    String res = "\\\\\"";
                    backString = backString.replaceAll(res, "\"").trim();
                }
            }else if (type.equals(URLTYPE_WEBSERVICE)) {//webserver请求
            } else if (type.equals(URLTYPE_WEBSERVICE)) {//webserver请求
                MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
                for (DockingSysIntParam dockingSysIntParam : dockingSysIntParamList) {
                    params.add(dockingSysIntParam.getParamKey(), dockingSysIntParam.getParamValue());
@@ -1158,9 +1162,9 @@
            }
            ResultJsonDTO resultJsonDTO = new ResultJsonDTO();
            if(returnType.equals(DATATYPE_JSON)){
                resultJsonDTO =JSONObject.toJavaObject(JSONObject.parseObject(backString), ResultJsonDTO.class);
            }else {
            if (returnType.equals(DATATYPE_JSON)) {
                resultJsonDTO = JSONObject.toJavaObject(JSONObject.parseObject(backString), ResultJsonDTO.class);
            } else {
                //组织返回接口信息
                XStream xStream = new XStream(new DomDriver());
                xStream.processAnnotations(ResultNodeDataDTO.class);
@@ -1168,33 +1172,34 @@
                ResultNodeDataDTO resultNodeDataDTO = (ResultNodeDataDTO) xStream.fromXML(backString);
                resultJsonDTO.setData(resultNodeDataDTO);
            }
            ResultNodeDataDTO resultNodeDataDTO=resultJsonDTO.getData();
            resultNodeObjectDTOS=resultNodeDataDTO.getObject();
        }catch (Throwable e){
            msg="调用接口失败:"+e.getMessage();
            ResultNodeDataDTO resultNodeDataDTO = resultJsonDTO.getData();
            resultNodeObjectDTOS = resultNodeDataDTO.getObject();
        } catch (Throwable e) {
            msg = "调用接口失败:" + e.getMessage();
            e.printStackTrace();
            log.error("调用接口失败:"+e);
            log.error("调用接口失败:" + e);
            //   throw  new Throwable("调用接口失败:"+e);
            ResultNodeObjectDTO   resultNodeObjectDTO=new ResultNodeObjectDTO();
            ResultNodeObjectDTO resultNodeObjectDTO = new ResultNodeObjectDTO();
            resultNodeObjectDTO.setErroid("1");
            resultNodeObjectDTO.setMsg(msg);
            resultNodeObjectDTO.setCode(dockingSystemConfig.getPushType().equalsIgnoreCase("2")?dockingTask.getClassifyId():dockingTask.getId());
            resultNodeObjectDTO.setCode(dockingSystemConfig.getPushType().equalsIgnoreCase("2") ? dockingTask.getClassifyId() : dockingTask.getId());
            resultNodeObjectDTO.setItemid(dockingTask.getBtmOid());
            resultNodeObjectDTOS.add(resultNodeObjectDTO);
        }finally {
        } finally {
            boolean isSend = false;
            for (ResultNodeObjectDTO resultNodeObjectDTO:resultNodeObjectDTOS){
            log.info("推送人员数据,执行到final阶段了");
            for (ResultNodeObjectDTO resultNodeObjectDTO : resultNodeObjectDTOS) {
                String erroid = resultNodeObjectDTO.getErroid();
                msg = resultNodeObjectDTO.getMsg();
                if("0".equals(erroid)){
                if ("0".equals(erroid)) {
                    isSend = true;
                }else if("1".equals(erroid)){
                    isSend=false;
                }else{
                    isSend=false;
                } else if ("1".equals(erroid)) {
                    isSend = false;
                } else {
                    isSend = false;
                }
                DockingLog dockingLogeDO = new DockingLog();
                String oid=VciBaseUtil.getPk();
                String oid = VciBaseUtil.getPk();
                dockingLogeDO.setOid(oid);
                dockingLogeDO.setSystemCode(dockingTask.getSystemCode());
                dockingLogeDO.setSystemName(dockingTask.getSystemName());
@@ -1207,14 +1212,14 @@
                dockingLogeDO.setUniqueCode(dockingTask.getUniqueCode());
                dockingLogeDO.setParamString(paramString);
                dockingLogeDO.setReturnString(backString);
                dockingLogeDO.setInterfaceStatus(isSend?"true":"false");
                dockingLogeDO.setInterfaceStatus(isSend ? "true" : "false");
                dockingLogeDO.setType(operation);
                dockingLogeDO.setMsg(msg);
                log.error("集成推送数据,systemcode:"+dockingTask.getSystemCode()+",systemname:"+dockingTask.getSystemName()+",url:"+url+",param:"+paramString+",e:"+msg);
                log.error("集成推送数据,systemcode:" + dockingTask.getSystemCode() + ",systemname:" + dockingTask.getSystemName() + ",url:" + url + ",param:" + paramString + ",e:" + msg);
                dockingLogeService.save(dockingLogeDO);
            }
            //全都接收成功的情况下,修改dockingtask sendflag为已发送
            if(isSend) {
            if (isSend) {
                dockingTask.setSendFlag(MdmDuckingConstant.SEND_FLAG_TRUE);
                dockingTask.setLastModifyTime(new Date());
                dockingTaskService.updateById(dockingTask);
@@ -1225,17 +1230,17 @@
    /***
     * æŸ¥è¯¢éœ€è¦é›†æˆçš„业务数据任务
     */
    private void sendpushDataForService(){
    private void sendpushDataForService() {
        initSysadmin();
        //查询哪些任务还没有执行完成
        //VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(DockingTaskDO.class);
        //queryWrapper.addQueryMap("sendFlag",MdmDuckingConstant.SEND_FLAG_FALSE);
    //    queryWrapper.addQueryMap("btmId", QueryOptionConstant.NOTIN + "(" + VciBaseUtil.toInSql(DOCKING_DEFAULT_CLASSIFY.toUpperCase(Locale.ROOT)) + ")");
        //    queryWrapper.addQueryMap("btmId", QueryOptionConstant.NOTIN + "(" + VciBaseUtil.toInSql(DOCKING_DEFAULT_CLASSIFY.toUpperCase(Locale.ROOT)) + ")");
        //根据类型去查询需要集成的分类或者数据
        LambdaQueryWrapper<DockingTask> queryWrapper = Wrappers.<DockingTask>lambdaQuery();
        queryWrapper.eq(DockingTask::getSendFlag,MdmDuckingConstant.SEND_FLAG_FALSE);
        queryWrapper.notIn(DockingTask::getBtmId,DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT));
        queryWrapper.eq(DockingTask::getSendFlag, MdmDuckingConstant.SEND_FLAG_FALSE);
        queryWrapper.notIn(DockingTask::getBtmId, DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT));
        List<DockingTask> dockingTaskDOS = dockingTaskService.list(queryWrapper);
        sendpushDataForService(dockingTaskDOS);
    }
@@ -1243,7 +1248,7 @@
    /***
     * æŸ¥è¯¢éœ€è¦é›†æˆçš„父分类任务
     */
    private void sendpushClsfForService(){
    private void sendpushClsfForService() {
        initSysadmin();
        /*    //查询哪些任务还没有执行完成
        VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(DockingTaskDO.class);
@@ -1253,34 +1258,35 @@
        //根据类型去查询需要集成的分类或者数据
        LambdaQueryWrapper<DockingTask> queryWrapper = Wrappers.<DockingTask>lambdaQuery();
        queryWrapper.eq(DockingTask::getSendFlag,MdmDuckingConstant.SEND_FLAG_FALSE);
        queryWrapper.eq(DockingTask::getBtmId,DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT));
        queryWrapper.eq(DockingTask::getSendFlag, MdmDuckingConstant.SEND_FLAG_FALSE);
        queryWrapper.eq(DockingTask::getBtmId, DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT));
        List<DockingTask> dockingTaskDOS = dockingTaskService.list(queryWrapper);
        sendpushClsfForService(dockingTaskDOS);
    }
    public void initSysadmin(){
    public void initSysadmin() {
        SessionInfo sessionInfo = new SessionInfo();
        sessionInfo.setUserId("sysAdmin");
        sessionInfo.setUserName("系统管理员");
        sessionInfo.setIp(WebUtil.getLocalIp());
        sessionInfo.setUserOid("193C026F-7DB8-27B4-F383-4E8BE083FB07");
        sessionInfo.setUserSecret(UserSecretEnum.PRIVACY.getValue()+"");
        sessionInfo.setUserSecret(UserSecretEnum.PRIVACY.getValue() + "");
        WebUtil.setSessionInfo(sessionInfo);
    }
    /**
     * dockingdata根据oid修改sendflag
     *
     * @param oid
     * @param sendflag
     * @return
     */
    public boolean updateDockingDatasSendFlag(String oid,String sendflag){
        boolean u=false;
        DockingData dockingData=dockingDataService.getById(oid);
        if(dockingData!=null){
    public boolean updateDockingDatasSendFlag(String oid, String sendflag) {
        boolean u = false;
        DockingData dockingData = dockingDataService.getById(oid);
        if (dockingData != null) {
            dockingData.setSendFlag(sendflag);
            u=    dockingDataService.updateById(dockingData);
            u = dockingDataService.updateById(dockingData);
        }
        return u;
    }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
ÎļþÌ«´ó
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