ludc
2023-05-17 b7a96fdc87ba86a100cd8fddbd03080f72703089
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
@@ -0,0 +1,534 @@
package com.vci.ubcs.code.service.impl;
import com.alibaba.cloud.commons.lang.StringUtils;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
import com.vci.ubcs.code.dto.CodeOrderDTO;
import com.vci.ubcs.code.dto.CodeOrderSecDTO;
import com.vci.ubcs.code.entity.CodeBasicSec;
import com.vci.ubcs.code.entity.CodeClassify;
import com.vci.ubcs.code.entity.DockingLog;
import com.vci.ubcs.code.enumpack.CodeSecTypeEnum;
import com.vci.ubcs.code.service.*;
import com.vci.ubcs.code.util.gennerAttrMapUtil;
import com.vci.ubcs.code.vo.pagemodel.*;
import com.vci.ubcs.code.vo.webserviceModel.apply.*;
import com.vci.ubcs.code.vo.webserviceModel.attrmap.*;
import com.vci.ubcs.code.vo.webserviceModel.result.json.*;
import com.vci.ubcs.code.vo.webserviceModel.result.xml.XMLResultClassfyVO;
import com.vci.ubcs.code.vo.webserviceModel.result.xml.XMLResultDataObjectDetailDO;
import com.vci.ubcs.code.vo.webserviceModel.result.xml.XMLResultSystemVO;
import com.vci.ubcs.starter.web.pagemodel.SessionInfo;
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import com.vci.ubcs.webservice.annotation.VciWebservice;
import com.vci.ubcs.webservice.config.AttributeMapConfig;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import javax.jws.WebService;
import java.util.*;
import java.util.stream.Collectors;
import static com.vci.ubcs.code.constant.MdmEngineConstant.DEFAULT_SYNC_ATTR_LIST;
/***
 * 统一接口
 */
@Service
@Slf4j
@VciWebservice(path = "/universalInterface")
public class UniversalInterfaceImpl<IDockingLogeServiceing> implements UniversalInterfaceI {
   /**
    * 日志
    */
   private Logger logger = LoggerFactory.getLogger(getClass());
   @Autowired(required = false)
   private AttributeMapConfig attributeMapConfig;
   /**
    * 缓存服务
    */
   //@Autowired
   //private RedisService redisService;
   /**
    * 主题库分类的服务
    */
   @Autowired(required = false)
   private ICodeClassifyService classifyService;
   /**
    * 主数据引擎的服务
    */
   //@Resource
   //private MdmEngineService engineService;
   /**
    * 密级的服务
    */
   @Resource
   private MdmIOService mdmIOService;
   /***
    * 集成接口日志服务的配置
    */
   @Resource
   private IDockingLogeService dockingLogeService;
   private  static String separator="##VCI##";
   private  String errorid="0";
   private String msg="成功";
   private  String objerrorCode="0";
   private String objerrorMsg="成功";
   /***
    * 申请编码接口
    * @param data 传递的数据参数
    * @param dataType 标识data是xml格式还是json格式,接口返回数据也是按照这个格式,以下接口类同
    * @return
    * @throws Throwable
    */
   @Override
   public String applyCode(String data, String dataType) throws Throwable {
      {
//         String resultStr = "";
//         String errorid="0";
//         msg="成功";
//         objerrorCode="0";
//         objerrorMsg="成功";
//         logger.info("申请编码的数据参数:->"+data);
//         logger.info("申请编码的数据类型:->"+dataType);
//         String systemId="";
//         List<XMLResultClassfyVO> resultClassfyVOList = new ArrayList<>();
//         try {
//            if(StringUtils.isBlank(data)) {
//               errorid="101";
//               throw new Throwable("接口参数:传递为空");
//            }
//            InterParameterVO interParameterVO  =new InterParameterVO();
//            //如果dataType是xml则,通过xml序列化成对象形式,如果是json则通过json转换成对象格式
//            try {
//               if ("xml".equals(dataType)) {
//                  XStream xStream = new XStream(new DomDriver());
//                  xStream.processAnnotations(RootDataVO.class);
//                  xStream.autodetectAnnotations(true);
//                  RootDataVO rootDataVO = (RootDataVO) xStream.fromXML(data);
//                  interParameterVO.setData(rootDataVO);
//               } else {
//                  interParameterVO = JSONObject.toJavaObject(JSONObject.parseObject(data), InterParameterVO.class);
//               }
//            }catch (Throwable e){
//               errorid="101";
//               throw new Throwable("接口参数:传入数据参数解析失败");
//            }
//            ClassfysVO classfysVO = interParameterVO.getData().getClassifys();
//            systemId = interParameterVO.getData().getSystemId();
//            UserVO userVo = interParameterVO.getData().getUser();
//            List<ClassfyVO> classVOList = classfysVO.getClassify();
//            InterParameterVO finalInterParameterVO = interParameterVO;
//
//            //这是账号信息
//            SessionInfo sessionInfo = new SessionInfo();
//            sessionInfo.setUserId(userVo.getUserName());
//            sessionInfo.setUserName(userVo.getTrueName());
//            sessionInfo.setIp(userVo.getIp());
//            VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
//
//            String finalSystemId = systemId;
//            classVOList.stream().forEach(classVO -> {
//               logger.info("参数:分类COde:" + classVO.getClassCode());
//               LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs = new LinkedList<>();
//               //获取分类信息
//               try {
//                  String libray = classVO.getLibrary();
//                  CodeClassifyVO codeClassifyVO = getClassfy(classVO);
//                  logger.info("end:分类查询完毕");
//                  //获取分类模板信息
//                  if(codeClassifyVO==null || StringUtils.isBlank(codeClassifyVO.getOid())){
//                     objerrorCode="100";
//                     throw  new  Throwable ("根据传输的分类,未获取到分类信息");
//                  }
//                  CodeClstemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyVO.getOid());
//                  if(templateVO==null||StringUtils.isBlank(templateVO.getOid())){
//                     objerrorCode="1";
//                     throw  new  Throwable ("根据传输的分类,未获取MDM系统中对应模板");
//                  }
//                  logger.info("end:模板查询完毕");
//                  ApplyDatasVO applyDatasVO = classVO.getObjects();
//                  DataObjectVO dataObjectVO = new DataObjectVO();
//                  List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag())
//                  ).collect(Collectors.toList());
//                  this.getConfigDatas(finalSystemId, libray, applyDatasVO, attrVOS, dataObjectVO);
//                  logger.info("end:数据组织完毕");
//                  //规则的主键需要去获取
//                  CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyVO.getOid());
//                  if(classifyFullInfo==null ||classifyFullInfo.getCurrentClassifyVO()==null || StringUtils.isBlank(classifyFullInfo.getCurrentClassifyVO().getOid())){
//                     objerrorCode="1";
//                     logger.info("classifyFullInfo:"+"根据传输的分类,未获取分类相关信息");
//                     throw  new  Throwable ("根据传输的分类,未获取分类相关信息");
//                  }
//                  CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo);
//                  if(ruleVO==null|| StringUtils.isBlank(ruleVO.getOid())){
//                     objerrorCode="102";
//                     throw  new  Throwable ("根据传输的分类,未获取MDM系统中对应规则");
//                  }
//                  logger.info("end:规则获取完毕");
//                  List<CodeOrderSecDTO> codeOrderSecDTOList = getRuleCodeOrderSecDTOs(classVO.getSections().getSection(), ruleVO);
//                  logger.info("end:码段获取完毕");
//                  CodeOrderDTO orderDTO = new CodeOrderDTO();
//                  orderDTO.setCodeClassifyOid(codeClassifyVO.getOid());//分类主键
//                  orderDTO.setSecDTOList(codeOrderSecDTOList);//分类码段
//                  mdmIOService.batchSyncApplyCode(orderDTO, dataObjectVO, resultDataObjectDetailDOs);
//                  logger.info("end:申请获取完毕");
//               } catch (Throwable e) {
//                  XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
//                  xmlResultDataObjectDetailDO.setCode("");
//                  xmlResultDataObjectDetailDO.setId("");
//                  xmlResultDataObjectDetailDO.setErrorid(objerrorCode);
//                  xmlResultDataObjectDetailDO.setMsg("编码申请失败:"+e.getMessage());
//                  resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO);
//                  e.printStackTrace();
//               }finally {
//                  XMLResultClassfyVO resultClassfyVO = new XMLResultClassfyVO();
//                  resultClassfyVO.setClassCode(classVO.getClassCode());
//                  resultClassfyVO.setLibrary(classVO.getLibrary());
//                  resultClassfyVO.setFullclsfNamePath(classVO.getFullclsfNamePath());
//                  resultClassfyVO.setObjects(resultDataObjectDetailDOs);
//                  resultClassfyVOList.add(resultClassfyVO);
//               }
//            });
//            XMLResultSystemVO xmlResultSystemVO=new XMLResultSystemVO();
//            xmlResultSystemVO.setClassifys(resultClassfyVOList);
//            xmlResultSystemVO.setMsg(msg);
//            xmlResultSystemVO.setErrorid(errorid);
//            resultStr= transferResultXMl(xmlResultSystemVO,dataType);
//         }catch (Throwable e){
//            e.printStackTrace();;
//            msg="申请编码失败:"+e.getMessage();
//         }finally {
//            XMLResultSystemVO xmlResultSystemVO=new XMLResultSystemVO();
//            xmlResultSystemVO.setClassifys(resultClassfyVOList);
//            xmlResultSystemVO.setMsg(msg);
//            xmlResultSystemVO.setErrorid(errorid);
//            resultStr= transferResultXMl(xmlResultSystemVO,dataType);
//            final boolean[] issucess = {true};
//            if(!errorid.equals("0")) {
//               issucess[0] = false;
//            }else {
//               if(!CollectionUtils.isEmpty(resultClassfyVOList)) {
//                  resultClassfyVOList.stream().forEach(xMLResultClassfyVO -> {
//                     xMLResultClassfyVO.getObjects().stream().forEach(objec -> {
//                        if (!(objec.getErrorid().equals("0") || objec.getErrorid().equals("204"))) {
//                           issucess[0] = false;
//                           msg=objec.getMsg();
//                        }
//                     });
//                  });
//               }
//
//            }
//            try {
//               //记录日志
//               this.saveLogs(systemId, systemId, data, resultStr, issucess[0], msg, "applyCode");
//            }catch (Throwable e){
//               e.printStackTrace();
//            }
//         }
//         logger.info("返回参数:"+resultStr);
         return "";
      }
   }
   /***
    * 统一更新接口(更改状态,更改属性信息)接口
    * @param data
    * @param dataType
    * @return
    * @throws Throwable
    */
   @Override
   public String syncEditData(String data, String dataType) throws Throwable {
      return null;
   }
   /***
    * 分类查询
    * @param data
    * @param dataType
    * @return
    * @throws Throwable
    */
   @Override
   public String queryClassify(String data, String dataType) throws Throwable {
      return null;
   }
   /***
    * 数据查询
    * @param data
    * @param dataType
    * @return
    * @throws Throwable
    */
   @Override
   public String queryData(String data, String dataType) throws Throwable {
      return null;
   }
   @Override
   public String queryClassifyRule(String data, String datatype) throws Throwable {
      return null;
   }
   /***
    * 查询校验分类信息
    * @param classfyVO
    */
   private  CodeClassifyVO getClassfy(ClassfyVO classfyVO) throws Throwable{
      CodeClassifyVO classifyVO = new CodeClassifyVO();
      try {
         String classCode = classfyVO.getClassCode();
         String className = classfyVO.getFullclsfNamePath();
         //根据分类代号查询分类信息
         if (StringUtils.isNotBlank(classfyVO.getClassCode())) {
            Map<String, String> conditionMap = new HashMap<>();
            List<CodeClassify> codeClassifyList = classifyService.selectByWrapper(Wrappers.<CodeClassify>query().lambda().eq(CodeClassify::getId, classCode));
            if (!CollectionUtils.isEmpty(codeClassifyList)) {
               CodeClassify classifyDO = codeClassifyList.get(0);
               //将DTO转换为DO
               classifyVO = new CodeClassifyVO();
               BeanUtilForVCI.copyPropertiesIgnoreCase(classifyDO, classifyVO);
               if(StringUtils.isBlank(classifyVO.getOid())){
                  throw new  Throwable("根据分类代号未查询到相应的分类信息");
               }
            }else{
               throw new  Throwable("根据分类代号未查询到相应的分类信息");
            }
         } else {
            //classifyVO = classifyService.getObjectByClsfNamePath(className.replace(separator, "/"));
            //if(StringUtils.isBlank(classifyVO.getOid())){
            //   throw new  Throwable("根据分类名称路径未查询到相应的分类信息");
            //}
         }
      }catch (Throwable e){
         objerrorCode="100";
         new  Throwable("获取分类信息失败:"+e.getMessage());
      }
      return classifyVO;
   }
   /***
    * 根据穿入的参数信息校验码段规则
    */
   private List<CodeOrderSecDTO> getRuleCodeOrderSecDTOs(List<SectionVO> SectionVOList,CodeRuleVO ruleVO) throws Throwable{
      List<CodeBasicSecVO>  codeBasicSecVOS= ruleVO.getSecVOList();
      Map<String,String> sectionVOMap=new HashMap<>();
      SectionVOList.stream().forEach(SectionVO->{
         sectionVOMap.put(SectionVO.getName(),SectionVO.getValue());
      });
      List<CodeOrderSecDTO> codeOrderSecDTOList=new ArrayList<>();
      for(CodeBasicSecVO codeBasicSecVO: codeBasicSecVOS) {
         String sectype = codeBasicSecVO.getSecType();
         if (!sectype.equals(CodeSecTypeEnum.CODE_SERIAL_SEC.getValue())) {
            String name = codeBasicSecVO.getName();
            String sectypeText = codeBasicSecVO.getSecTypeText();
            logger.info("码段名称:"+name);
            logger.info("描述:"+sectypeText);
            CodeOrderSecDTO CodeOrderSecDTO = new CodeOrderSecDTO();
            if (sectionVOMap.containsKey(name)) {
               CodeOrderSecDTO.setSecOid(codeBasicSecVO.getOid());
               String sectypeValue = sectionVOMap.get(name);
               logger.info("码段值:"+sectypeValue);
               CodeOrderSecDTO.setSecValue(sectypeValue);
               codeOrderSecDTOList.add(CodeOrderSecDTO);
            } else {
               objerrorCode="101";
               throw new Throwable("传入的码段规则缺少" + name + "码段");
            }
         }
      }
      return codeOrderSecDTOList;
   }
   /***
    * 根据属性映射转换编码所需字段
    */
   public void getConfigDatas(String systemId,String libray, ApplyDatasVO applyDatasVO,List<CodeClassifyTemplateAttrVO> codeClassifyTemplateAttrVOList,DataObjectVO dataObjectVO) throws Throwable {
      List<ApplyDataVO> applyDataVOList=applyDatasVO.getObject();
      LinkedHashMap<String,LinkedHashMap<String,String>> dataKeyValueMap=new LinkedHashMap<>();
      //如果将数据转换成所需要的数据对象
      Map<String, String> attrMapConfigMap=new HashMap<>();
      Map<String, String> propMaps=new HashMap<>();
      try {
         Map<String, String> stringStringMap=attributeMapConfig.getSystem_attrmap();
         //stringStringMap.put("RLM","D:\\RLM.xml");
         LibraryDO libraryDO= gennerAttrMapUtil.getNewInstance().gennerAttrMapBySystem(systemId,stringStringMap);
         List<LibraryClsfDO> libraryClsfDOList=libraryDO.getClsf();
         Map<String, List<ClsfAttrMappingDO>> libPropMaps = libraryClsfDOList.stream().collect(Collectors.toMap(LibraryClsfDO::getLibrary, LibraryClsfDO::getProp, (key1, key2) -> key2));
         if(libPropMaps.containsKey(libray)){
            List<ClsfAttrMappingDO> clsfAttrMappingDOList=libPropMaps.get(libray);
            propMaps = clsfAttrMappingDOList.stream().collect(Collectors.toMap(ClsfAttrMappingDO::getSourceKey, ClsfAttrMappingDO::getTargetKey, (key1, key2) -> key2));
         }
      }catch (Throwable e){
         objerrorCode="1";
         throw new Throwable("MDM集成属性配置文件读取失败");
      }
      LinkedList<String> rowNameList=new LinkedList<>();
      LinkedHashMap<String,Integer> filedIndexMap=new LinkedHashMap<>();
      //根据分类模板组织数据
      final int[] index = {0};
      try {
         codeClassifyTemplateAttrVOList.stream().forEach(codeClassifyTemplateAttrVO -> {
            String attrName = codeClassifyTemplateAttrVO.getName();
            String field = codeClassifyTemplateAttrVO.getId();
            rowNameList.add(attrName);
            filedIndexMap.put(field, index[0]++);
         });
         dataObjectVO.setColName(rowNameList);//放入属性
         attrMapConfigMap.putAll(propMaps);
         LinkedList<RowDatas> rowDataList = new LinkedList<>();
         //Map<String, List<ProppertyVO>> dataPropMap = applyDataVOList.stream().collect(Collectors.toMap(ApplyDataVO::getId, ApplyDataVO::getProp, (key1, key2) -> key2));
         final int[] rowIndex = {0};
         applyDataVOList.stream().forEach(applyDataVO -> {
            rowIndex[0]++;
            RowDatas rowDatas = new RowDatas();
            rowDatas.setOid(applyDataVO.getId());
            rowDatas.setCreator(applyDataVO.getCreator());
            rowDatas.setEditor(applyDataVO.getEditor());
            rowDatas.setCode(applyDataVO.getCode());
            rowDatas.setOperation(applyDataVO.getOperate());
            rowDatas.setStatus(applyDataVO.getStatus());
            rowDatas.setRowIndex(rowIndex[0] + "");
            List<ProppertyVO> proppertyVOList = applyDataVO.getProp();
            LinkedHashMap<Integer, String> integerValueMap = new LinkedHashMap<>();
            Map<String, String> filedValueMap = new HashMap<>();
            if (!CollectionUtils.isEmpty(proppertyVOList)) {
               Map<String, String> sourceKeyValueMap = proppertyVOList.stream().collect(Collectors.toMap(ProppertyVO::getKey, ProppertyVO::getValue, (key1, key2) -> key2));
               Map<String, String> keyValueMap = new HashMap<>();
               //判断attrMapConfigMap是否有值,如果没有则说明基础默认的是编码系统字段
               if (!CollectionUtils.isEmpty(attrMapConfigMap)) {
                  sourceKeyValueMap.keySet().forEach(sourceKey -> {
                     String dataValue = sourceKeyValueMap.get(sourceKey);
                     if (attrMapConfigMap.containsKey(sourceKey)) {
                        String targetKey = attrMapConfigMap.get(sourceKey);
                        keyValueMap.put(targetKey, StringUtils.isBlank(dataValue)?"":dataValue);
                     }
                  });
               } else {
                  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);
                  }
                  integerValueMap.put(column, keyValue);
                  filedValueMap.put(attrKey, keyValue);
               });
            }
            rowDatas.setData(integerValueMap);
            rowDatas.setFiledValue(filedValueMap);
            rowDataList.add(rowDatas);
         });
         dataObjectVO.setRowData(rowDataList);
      }catch (Throwable e){
         objerrorCode="1";
         throw new   Throwable("组织数据映射值失败");
      }
   }
   /***
    * 记录日志信息
    * @param systemId
    * @param parmaData
    * @param result
    * @return
    */
   private  void saveLogs(String systemId,String systemName,String parmaData, String result,boolean isSucess,String msg,String operation){
      //记录日志信息
      DockingLog dockingLoge=new DockingLog();
      //String oid=redisService.getUUIDEveryDay();
      dockingLoge.setSystemCode(StringUtils.isBlank(systemId)?"-":systemId);//设置系统标识
      dockingLoge.setSystemName(StringUtils.isBlank(systemName)?"-":systemName);
      dockingLoge.setMsg(msg);//日志消息
      dockingLoge.setClassifyId("-");//分类编号
      dockingLoge.setClassifyName("-");//分类名称
      dockingLoge.setClassifyOid("-");//分类主键
      dockingLoge.setUniqueCode("-");//唯一标识
      dockingLoge.setSystemOid("-");//系统标识
//        dockingLogeDO.setName(operation);
      //dockingLogeDO.setOid(oid);//日志主键
      dockingLoge.setParamString(parmaData);//参数信息
      dockingLoge.setReturnString(result);//返回信息
      dockingLoge.setType(operation);//日志操作类型
      if(isSucess) {
         dockingLoge.setInterfaceStatus("true");//接口集成状态
      }else{
         dockingLoge.setInterfaceStatus("false");//接口集成状态
      }
      dockingLogeService.save(dockingLoge);
      logger.info("集成推送数据成功,systemId:"+systemId+",systemname:"+systemName+",operation:"+operation+",param:"+parmaData);
   }
   /***
    * 数据维护与编码申请返回
    * @param resultSystemVO
    * @param dataType
    * @return
    */
   private String transferResultXMl(XMLResultSystemVO resultSystemVO,String dataType){
      String resultStr="";
      if ("xml".equals(dataType)) {
         //组织返回接口信息
         XStream xStream = new XStream(new DomDriver());
         xStream.processAnnotations(XMLResultSystemVO.class);
         xStream.autodetectAnnotations(true);
         resultStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" + xStream.toXML(resultSystemVO);
      } else {
         List<XMLResultClassfyVO> resultClassfyVOList =resultSystemVO.getClassifys();
         JSONResultDataVO resultDataVO = new JSONResultDataVO();
         JSONResultSystemVO jsonResultSystemVO = new JSONResultSystemVO();
         JSONResultClassfysVO jsonResultClassfysVO = new JSONResultClassfysVO();
         List<JSONResultClassfyVO> jSONResultClassfyVOList = new ArrayList<>();
         resultClassfyVOList.stream().forEach(resultClassfyVO -> {
            List<XMLResultDataObjectDetailDO> xmlResultDataObjectDetailDOS = resultClassfyVO.getObjects();
            List<JSONResultDataObjectDetailDO> JSONResultDataObjectDetailDOList = new ArrayList<>();
            xmlResultDataObjectDetailDOS.stream().forEach(xmlResultDataObjectDetail -> {
               JSONResultDataObjectDetailDO jsonResultDataObjectDetail = new JSONResultDataObjectDetailDO();
               BeanUtilForVCI.copyPropertiesIgnoreCase(xmlResultDataObjectDetail, jsonResultDataObjectDetail);
               JSONResultDataObjectDetailDOList.add(jsonResultDataObjectDetail);
            });
            JSONResultClassfyVO jsonResultClassfyVO = new JSONResultClassfyVO();
            jsonResultClassfyVO.setClassCode(resultClassfyVO.getClassCode());
            jsonResultClassfyVO.setLibrary(resultClassfyVO.getLibrary());
            jsonResultClassfyVO.setFullclsfNamePath(resultClassfyVO.getFullclsfNamePath());
            JSONResultDataObjectDO JSONResultDataObjectDO = new JSONResultDataObjectDO();
            JSONResultDataObjectDO.setObject(JSONResultDataObjectDetailDOList);
            jsonResultClassfyVO.setObjects(JSONResultDataObjectDO);
            jSONResultClassfyVOList.add(jsonResultClassfyVO);
         });
         jsonResultClassfysVO.setClassify(jSONResultClassfyVOList);
         jsonResultSystemVO.setClassifys(jsonResultClassfysVO);
         jsonResultSystemVO.setErrorid(resultSystemVO.getErrorid());
         jsonResultSystemVO.setMsg(resultSystemVO.getMsg());
         resultDataVO.setData(jsonResultSystemVO);
         Object object = JSONObject.toJSON(resultDataVO);
         resultStr = object.toString();
      }
      return resultStr;
   }
}