xiejun
2023-07-17 cca29ef0f3592879731abff315ced6bb7c4e5e6a
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
@@ -2,15 +2,17 @@
import com.alibaba.cloud.commons.lang.StringUtils;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
import com.vci.ubcs.code.constant.MdmDuckingConstant;
import com.vci.ubcs.code.dto.CodeOrderDTO;
import com.vci.ubcs.code.dto.CodeOrderSecDTO;
import com.vci.ubcs.code.entity.*;
import com.vci.ubcs.code.enumpack.CodeDefaultLC;
import com.vci.ubcs.code.enumpack.CodeSecTypeEnum;
import com.vci.ubcs.code.enumpack.*;
import com.vci.ubcs.code.mapper.CommonsMapper;
import com.vci.ubcs.code.service.*;
import com.vci.ubcs.code.util.ClientBusinessObject;
@@ -35,10 +37,11 @@
import com.vci.ubcs.code.wrapper.CodeClassifyWrapper;
import com.vci.ubcs.omd.feign.IBtmTypeClient;
import com.vci.ubcs.omd.vo.BtmTypeVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.model.BaseModel;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
import com.vci.ubcs.starter.web.constant.QueryOptionConstant;
import com.vci.ubcs.starter.util.UBCSSqlKeyword;
import com.vci.ubcs.starter.web.pagemodel.SessionInfo;
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
@@ -53,7 +56,6 @@
import java.util.stream.Collectors;
import static com.vci.ubcs.code.constant.MdmEngineConstant.DEFAULT_SYNC_ATTR_LIST;
import static com.vci.ubcs.code.constant.MdmEngineConstant.IMPORT_ROW_INDEX;
import static com.vci.ubcs.code.enumpack.CodeSecTypeEnum.CODE_CLASSIFY_SEC;
/***
@@ -101,6 +103,9 @@
   @Resource
   private MdmIOService mdmIOService;
   @Resource
   private IDockingSystemConfigService dockingSystemConfigService;
   @Autowired
   private ICodeClassifyValueService codeClassifyValueService;
@@ -156,6 +161,12 @@
         }
         ClassfysVO classfysVO = interParameterVO.getData().getClassifys();
         systemId = interParameterVO.getData().getSystemId();
         //校验是否配置
         boolean checkPass= checkIspass(systemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue());
         if(!checkPass){
            errorid="101";
            throw new Throwable("系统标识为【"+systemId+"】,"+sysIntegrationPushTypeEnum.ACCPET_APPCODE.getText()+"接口配置已停用或者未配置,请联系编码管理员!");
         }
         UserVO userVo = interParameterVO.getData().getUser();
         List<ClassfyVO> classVOList = classfysVO.getClassify();
         InterParameterVO finalInterParameterVO = interParameterVO;
@@ -323,6 +334,15 @@
         }
         ClassfysVO classfysVO = interParameterVO.getData().getClassifys();
         systemId = interParameterVO.getData().getSystemId();
         //校验是否配置
         boolean checkPass= checkIspass(systemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_EDITCODE.getValue());
         if(!checkPass){
            errorid="101";
            throw new Throwable("系统标识为【"+systemId+"】,"+sysIntegrationPushTypeEnum.ACCPET_EDITCODE.getText()+"接口配置已停用或者未配置,请联系编码管理员!");
         }
         UserVO userVo = interParameterVO.getData().getUser();
         List<ClassfyVO> classVOList = classfysVO.getClassify();
         InterParameterVO finalInterParameterVO = interParameterVO;
@@ -474,6 +494,14 @@
         String libId= libraryVO.getId();
         List<String> classifyIdList=  libraryVO.getClassifyid();
         List<CodeClassifyVO> codeClassifyVOS =new ArrayList<>();
         //校验是否配置
         boolean checkPass= checkIspass(systemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_QUERYCLAFILY.getValue());
         if(!checkPass){
            errorid="101";
            throw new Throwable("系统标识为【"+systemId+"】,"+sysIntegrationPushTypeEnum.ACCPET_QUERYCLAFILY.getText()+"接口配置已停用或者未配置,请联系编码管理员!");
         }
         //这是账号信息
         //这是账号信息
         if(userVo!=null) {
@@ -542,7 +570,7 @@
               classifyVO.setClassCode(codeClassifyDO.getId());
               classifyVO.setDescription(codeClassifyDO.getDescription());
               classifyVO.setName(codeClassifyDO.getName());
               classifyVO.setPid(codeClassifyDO.getParentcodeclassifyoid());
               classifyVO.setPid(codeClassifyDO.getParentCodeClassifyOid());
               classifyVO.setFullPathName(codeClassifyDO.getPath());
               classifyVOList.add(classifyVO);
            });
@@ -635,7 +663,12 @@
            msg = "接口参数:library 为null";
            throw new Throwable(msg);
         }
         //校验是否配置
         boolean checkPass= checkIspass(systemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_QUERYDATA.getValue());
         if(!checkPass){
            errorid="101";
            throw new Throwable("系统标识为【"+systemId+"】,"+sysIntegrationPushTypeEnum.ACCPET_QUERYDATA.getText()+"接口配置已停用或者未配置,请联系编码管理员!");
         }
         //先简称是否有关联模板,有模板要先删除
         List<CodeClassify> libIdDos =classifyService.selectByWrapper(Wrappers.<CodeClassify>query().lambda().eq(CodeClassify::getId,library));
@@ -820,6 +853,13 @@
         String libId= libraryVO.getId();
         List<String> classifyIdList=  libraryVO.getClassifyid();
         List<CodeClassifyVO> codeClassifyVOS =new ArrayList<>();
         /*//校验是否配置
         boolean checkPass= checkIspass(systemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_QUERYCLAFILYRULE.getValue());
         if(!checkPass){
            errorid="101";
            throw new Throwable("系统标识为【"+systemId+"】,"+sysIntegrationPushTypeEnum.ACCPET_QUERYCLAFILYRULE.getText()+"接口配置已停用或者未配置,请联系编码管理员!");
         }*/
         //这是账号信息
         //这是账号信息
         if(userVo!=null) {
@@ -906,10 +946,40 @@
                        }else if(secType.equals("coderefersec")){//引用码段
                           codeBasicSecVO.getReferAttributeId();
                           codeBasicSecVO.getReferCodeClassifyOid();
                           codeBasicSecVO.getReferBtmId();
                           codeBasicSecVO.getReferBtmName();
                           //codeBasicSecVO.getReferValueInfo();
                           String referBtmId=codeBasicSecVO.getReferBtmId();
                           String btmName=codeBasicSecVO.getReferBtmName();
                           String referConfig= codeBasicSecVO.getReferConfig();
                           CoderefersecSearchVO coderefersecSearchVO=new CoderefersecSearchVO();
                           if(StringUtils.isNotBlank(referConfig)){
                              coderefersecSearchVO = JSONObject.toJavaObject(JSONObject.parseObject(referConfig), CoderefersecSearchVO.class);
                           }
                           String buildSqlwhere="";
                           if(coderefersecSearchVO!=null){
                              Map<String,Object> condtionMap=new HashMap<>();
                              List<CodeSrchCondConfigVO> codeSrchCondConfigVOList=coderefersecSearchVO.getCodeSrchCondConfigVOS();
                              if(!CollectionUtils.isEmpty(codeSrchCondConfigVOList)) {
                                 codeSrchCondConfigVOList.stream().forEach(codeSrchCondConfigVO -> {
                                    condtionMap.put(codeSrchCondConfigVO.getFilterField()+codeSrchCondConfigVO.getFilterType(),codeSrchCondConfigVO.getFilterValue());
                                 });
                                 buildSqlwhere=   UBCSSqlKeyword.buildSqlwhere(condtionMap);
                              }
                           }
                           //使用传入的业务类型查询表
                           R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(referBtmId));
                           if (!listR.isSuccess() || listR.getData().size() == 0) {
                              throw new VciBaseException("传入业务类型未查询到相应表单,请检查!");
                           }
                           String referTable = listR.getData().get(0).getTableName();
                           StringBuffer sb=new StringBuffer();
                           sb.append(" select * from  ");
                           sb.append(referTable);
                           sb.append(" where 1=1  ");
                           if(StringUtils.isNotBlank(buildSqlwhere)){
                              sb.append( buildSqlwhere );
                           }
                           List<Map> ListMap=   commonsMapper.selectBySql(sb.toString());
                           log.info(libId);
                        }else if(secType.equals("codelevelsec")) {//层级码段
                           int level = codeBasicSecVO.getCodeLevelValue();
                           CodeClassifyVO levelCodeClassifyVO = new CodeClassifyVO();
@@ -972,7 +1042,7 @@
               classifyVO.setClassCode(StringUtils.isBlank(codeClassifyDO.getId())?"":codeClassifyDO.getId());
               classifyVO.setDescription(StringUtils.isBlank(codeClassifyDO.getDescription())?"":codeClassifyDO.getDescription());
               classifyVO.setName(StringUtils.isBlank(codeClassifyDO.getName())?"":codeClassifyDO.getName());
               classifyVO.setPid(StringUtils.isBlank(codeClassifyDO.getParentcodeclassifyoid())?"":codeClassifyDO.getParentcodeclassifyoid());
               classifyVO.setPid(StringUtils.isBlank(codeClassifyDO.getParentCodeClassifyOid())?"":codeClassifyDO.getParentCodeClassifyOid());
               classifyVO.setFullPathName(StringUtils.isBlank(codeClassifyDO.getPath())?"":codeClassifyDO.getPath());
               classifyVO.setCodeRule(resultCodeRuleVO);
               classifyVOList.add(classifyVO);
@@ -1303,5 +1373,20 @@
      return resultStr;
   }
   /***
    * 校验是否做了配置
    * @param systemId,系统标识
    * @param type:接口类型
    * @param operationType:接口操作类型
    * @return
    */
   private boolean checkIspass(String systemId,String type,String operationType){
      //根据类型去查询需要集成的分类或者数据
      LambdaQueryWrapper<DockingSystemConfig> queryWrapper = Wrappers.<DockingSystemConfig>lambdaQuery();
      queryWrapper.eq(DockingSystemConfig::getUsedFlag, MdmDuckingConstant.SEND_FLAG_TRUE);
      queryWrapper.eq(DockingSystemConfig::getSysBaseId,systemId);
      queryWrapper.eq(DockingSystemConfig::getDataFlowType,type);
      queryWrapper.eq(DockingSystemConfig::getPushType,operationType);
      return dockingSystemConfigService.count(queryWrapper)>0?true:false;
   }
}