ludc
2023-07-11 02dbaaa04bc443e860a715cf907bc0fb5c1a7da4
Merge branch 'master' of http://dev.vci-tech.com:1065/r/ubcs
已修改22个文件
已添加8个文件
1368 ■■■■■ 文件已修改
Source/UBCS-WEB/src/components/Tree/attrCrud.vue 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/Tree/classifyTreeform.vue 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/Tree/classifyTrees.vue 66 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingSystemConfigDTO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingData.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingSysIntHeader.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingSystemConfig.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingTask.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-ddl-api/src/main/java/com/vci/ubcs/ddl/bo/DdlFieldMappingAttrBO.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/constant/CodeTableNameConstant.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/pom.xml 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/DockingManagementController.java 90 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationDataFlowTypeEnum.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingDataMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingDataService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingSystemConfigService.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingDataServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java 561 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/util/HttpUtils.java 194 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/util/WsErpClientUtil.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingDataWrapper.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingDataMapper.xml 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllDmMapperProcessor.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/service/impl/DdlServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/BtmTypeMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmAttributeServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/BtmTypeAttributeMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/Tree/attrCrud.vue
@@ -1,6 +1,6 @@
<template>
  <div>
    <div style="display: flex;flex-wrap: wrap;" v-if="this.crudArrayFlag">
    <div style="display: flex;flex-wrap: wrap;" v-if="this.crudArrayFlag" class="app">
      <el-button-group>
      <!--新增-->
      <el-button v-if="attrEditVisible == false && attrFlagChiledren==false" size="small" type="primary" icon="el-icon-plus" @click="busineHandle">添加 {{ msg }}</el-button>
@@ -242,7 +242,7 @@
    </div>
    <el-table :data="ProData"
              style="width: 100%"
              height="280"
              :height='attrEditVisible == false && attrFlagChiledren==false?400 :750'
              @cell-click="handleCellClicks"
              @select="selectHandle"
              @selection-change="selectionChange"
@@ -936,11 +936,13 @@
        column: [
          {
            label: "属性英文名称",
            prop: "id"
            prop: "id",
            width:110
          },
          {
            label: "属性中文名称",
            prop: "name"
            prop: "name",
            width:110
          },
          {
            label: "长度",
@@ -1484,6 +1486,7 @@
    //业务类型选择
    businessSelect(selection, row) {
      this.busineSelectList = selection
      console.log(selection)
    },
    // ä»Žä¸šåŠ¡ç±»åž‹ä¸­é€‰æ‹©æ•°æ®å¼¹çª—
    busineHandle() {
@@ -1813,7 +1816,11 @@
</script>
<style scoped lang="scss" >
/deep/ .el-button {
  margin: 0 10px 10px 0;
///deep/ .el-button {
//  margin: 0 10px 10px 0;
//}
.app el-button{
  z-index: 1;
  margin: 0 10px 10px 0 !important;
}
</style>
Source/UBCS-WEB/src/components/Tree/classifyTreeform.vue
@@ -110,7 +110,7 @@
import {TreeEditSave} from '@/api/template/templateAttr'
export default {
  name: "classifyTreeform.vue",
  props: ['loneTreeNewForm','flag','Editclose','TreeFlag'],
  props: ['loneTreeNewForm','flag','Editclose','TreeFlag','nodeClickList'],
  data() {
    return {
      SelectFInd:"",
@@ -288,7 +288,7 @@
            labelWidth:128,
            focus:this.btmFoucus,
            readonly: true,
            hide:this.TreeFlag,
            display:false,
            rules: [{
              required: true,
              message: "存储的业务类型",
@@ -326,15 +326,16 @@
      btmSelectList:[]
    }
  },
  created() {
  },
  watch:{
    // TreeFlag:{
    //   handler(newval){
    //     const falg=newval;
    //     this.findObject(this.)
    //   }
    // }
    nodeClickList:{
      handler(newval,oldval){
        console.log('newVal',newval,oldval)
      },
      deep:true,
      immediate:true
    }
  },
  created() {
  },
  methods: {
    submits(form,done){
Source/UBCS-WEB/src/components/Tree/classifyTrees.vue
@@ -2,8 +2,9 @@
<template>
  <el-container>
    <!--    å·¦ä¾§èœå•-->
    <el-aside>
      <basic-container style="height: 85vh; max-height: 155vh; overflow-y: scroll;">
    <el-aside >
      <basic-container style="height: 85vh; max-height: 155vh; overflow-y: scroll;"@click.native="handleClickOutside" >
        <div @click.native="handleClickOutside">
        <div>
          <div style="display: flex;justify-content: space-around">
            <el-button plain size="small" type="primary" @click="TreeAdd">添加</el-button>
@@ -51,7 +52,7 @@
        </el-dialog>
        <!--        ä¿®æ”¹å¯¹è¯æ¡†-->
        <el-dialog :visible.sync="TreeEditFormVisible" append-to-body title="修改分类">
          <classifyTreeform ref="childForm" :loneTreeNewForm="TreeList" :nodeList="nodeList" :flag="'edit'" @MasterHandler="MasterHandler" :Editclose=" ()=>{TreeEditFormVisible=false}" :TreeFlag="TreeFlag"></classifyTreeform>
          <classifyTreeform ref="childForm" :loneTreeNewForm="TreeList" :nodeList="nodeList" :flag="'edit'" @MasterHandler="MasterHandler" :Editclose=" ()=>{TreeEditFormVisible=false}" :TreeFlag="TreeFlag" ::nodeClickList="nodeClickList"></classifyTreeform>
        </el-dialog>
        <avue-tree ref="tree" v-model="CloneTreeAvueform" v-loading="loading" :data="CloneTreedata" :defaultExpandAll="false"
                   :option="Treeoption"
@@ -60,6 +61,7 @@
                   @check-change="checkChange"
        >
        </avue-tree>
        </div>
      </basic-container>
    </el-aside>
    <el-main>
@@ -67,7 +69,7 @@
        <!--        å³ä¾§è¡¨æ ¼-->
        <avue-tabs :option="tabOption" @change="handleChange"></avue-tabs>
        <span v-if="type.prop==='tab1'">
           <classifyTreeform ref="childForm" :loneTreeNewForm="TreeList" :nodeList="nodeList" :flag="'renonly'"></classifyTreeform>
           <classifyTreeform ref="childForm" :loneTreeNewForm="TreeList" :nodeList="nodeList" :flag="'renonly'" ></classifyTreeform>
        </span>
        <span v-else-if="type.prop==='tab2'">
            <basic-container>
@@ -117,7 +119,7 @@
                    <el-aside width="300px">
                      <div style="margin-bottom: 5px"><el-tag>主题库分类</el-tag></div>
                      <!--                      å…‹éš†æ¨¡æ¿çš„æ ‘ æ²¿ç”¨é¦–页树的loading和option,但是data和v-model绑定的数据创建一个新的变量,另外点击方法也是重新获取来操作克隆模板的数据-->
                        <avue-tree ref="tree" v-model="TreeAvueform" v-loading="loading" :data="Treedata"
                        <avue-tree  v-model="TreeAvueform" v-loading="loading" :data="Treedata"
                                   :defaultExpandAll="false"
                                   :option="Treeoption"
                                   style="height: 50.5vh;margin-right: 10px"
@@ -286,7 +288,7 @@
          </template>
          <avue-crud :data="BtmData" :option="masterOption" @select="btmSelect"></avue-crud>
          <div style="height: 30px">
            <div style="display: inline-block;float: left;border: 1px solid #eee;padding: 5px;margin-top: 5px;font-size: 14px " >已设置的值为:[{{this.TreeAddform.btmtypename}}]</div>
            <div style="display: inline-block;float: left;border: 1px solid #eee;padding: 5px;margin-top: 5px;font-size: 14px " >已设置的值为:[{{this.TreeAddform.btmTypeName}}]</div>
            <div style="padding-top: 10px;display: flex; justify-content: flex-end;float: right;overflow: hidden" >
              <el-button type="primary" size="small" @click="btmHandlerClick">确定</el-button>
              <el-button  size="small" @click="BtmdialogVisible=false">取消</el-button>
@@ -540,11 +542,21 @@
        column: [
          {
            label: "模板编号",
            prop: "id"
            prop: "id",
            rules: [{
              required: true,
              message: "模板编号",
              trigger: "blur"
            }]
          },
          {
            label: "模板名称",
            prop: "name",
            rules: [{
              required: true,
              message: "模板名称",
              trigger: "blur"
            }]
          },
          {
            label: "模板描述",
@@ -628,11 +640,21 @@
        column: [
          {
            label: "模板编号",
            prop: "id"
            prop: "id",
            rules: [{
              required: true,
              message: "模板编号",
              trigger: "blur"
            }]
          },
          {
            label:"模板名称",
            prop:"name"
            label: "模板名称",
            prop: "name",
            rules: [{
              required: true,
              message: "模板名称",
              trigger: "blur"
            }]
          },
          {
            label: "模板描述",
@@ -653,6 +675,18 @@
    }
  },
  methods: {
    //树节点失去焦点
    handleClickOutside(event) {
      const treeElement = this.$refs.tree.$el;
      const targetElement = event.target;
      if (!treeElement.contains(targetElement)) {
        // åœ¨æ ‘组件外部点击,清空选择状态
        // this.nodeClickList=[];
        // this.CloneTreeAvueform={}
        console.log(this.nodeClickList  )
        console.log(this.CloneTreeAvueform)
      }
    },
    //编码规则失焦
    CodeFoucus(){
      this.MasterdialogVisible=true;
@@ -829,8 +863,8 @@
      }else {
        this.BtmdialogVisible=false;
        this.btmSelectList=[]
        this.$set(this.loneTreeNewForm,'btmtypename',this.btmName ||this.btmOid)
        this.$set(this.loneTreeNewForm,'btmtypeid',this.btmOid)
        this.$set(this.TreeAddform,'btmTypeName',this.btmName)
        this.$set(this.TreeAddform,'btmTypeId',this.btmOid)
        this.$emit('MasterHandler',this.loneTreeNewForm)
      }
    },
@@ -918,18 +952,20 @@
    //树节点添加事件
    TreeAddHandler() {
      const data = this.TreeAddform;
      data.btmTypeName= this.TreeList.btmtypename
      // data.btmtypename= this.TreeList.btmtypename
      this.$set(data, "parentCodeClassifyOid", this.nodeClickList.oid);
      // console.log("data", data);
      console.log("data", data);
      TreeSave(data)
        .then(() => {
          this.$message({
            type: "success",
            message: "添加成功!",
          });
          Object.keys(this.TreeAddform).forEach(key => {
            this.TreeAddform[key] = "";
          });
          this.getAttr();
          this.TreeAddFormVisible = false;
          this.TreeAddform = "";
        })
        .catch((res) => {
          this.$message({
Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue
@@ -359,6 +359,12 @@
        },
        // å±žæ€§æ± åŠ è½½
        attrRefOnLoad(){
            if (!this.attrRef.queryNotIn || (this.attrRef.queryNotIn === '' && this.btmType.attributes !== [])){
              this.attrRef.queryNotIn = '';
               this.btmType.attributes.forEach(item => {
                  this.attrRef.queryNotIn += (item.id + ",")
               })
            }
            this.attrRef.loading = true;
            queryPage(this.attrRef.key,this.attrRef.queryNotIn,this.attrRef.page.currentPage, this.attrRef.page.pageSize).then(res => {
                const data = res.data.data;
Source/UBCS/pom.xml
@@ -21,7 +21,7 @@
        <spring.cloud.version>2021.0.3</spring.cloud.version>
        <spring.platform.version>Cairo-SR8</spring.platform.version>
        <maven.plugin.version>3.8.1</maven.plugin.version>
        <axis2.version>1.7.5</axis2.version>
        <!-- æŽ¨èä½¿ç”¨Harbor -->
        <docker.registry.url>192.168.0.157</docker.registry.url>
        <docker.registry.host>http://${docker.registry.url}:2375</docker.registry.host>
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingSystemConfigDTO.java
@@ -186,7 +186,7 @@
    private String classPath;
    /**
     * æ•°æ®æµå‘方式
     * æ•°æ®æµå‘方式1:接受2:分发
     */
    private String dataFlowType;
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingData.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,73 @@
package com.vci.ubcs.code.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.vci.ubcs.starter.constant.CodeTableNameConstant;
import com.vci.ubcs.starter.revision.model.BaseModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/***
 * å¾…集成数据
 */
@Data
@TableName(CodeTableNameConstant.PL_CODE_DOCKINGPADATA)
@ApiModel(value = "DockingData", description = "待集成数据")
@EqualsAndHashCode(callSuper = true)
public class DockingData extends BaseModel {
    /**
     * åºåˆ—化
     */
    private static final long serialVersionUID = 5020487634341415429L;
    /**
     * å›¾å·
     */
    @ApiModelProperty(value = "图号")
    private String uniqueCode;
    /**
     * ç³»ç»ŸæŽ¥å£oid
     */
    @ApiModelProperty(value = "分类主键")
    private String classifyOid;
    /**
     * ä¸šåŠ¡ç±»åž‹ä¸»é”®
     */
    @ApiModelProperty(value = "业务类型主键")
    private String btmOid;
    /**
     * ä¸šåŠ¡ç±»åž‹ç¼–å·
     */
    @ApiModelProperty(value = "业务类型编号")
    private String btmId;
    /**
     * å‘送类型
     */
    @ApiModelProperty(value = "发送类型")
    private String sendType;
    /**
     * ä»»åŠ¡æ˜¯å¦ç”Ÿæˆ
     */
    @ApiModelProperty(value = "任务是否生成")
    private String sendFlag;
    /**
     * åˆ†ç±»ç¼–号
     */
    @ApiModelProperty(value = "分类编号")
    private String classifyId;
    /**
     * ç³»ç»Ÿid
     */
    @ApiModelProperty(value = "分类名称")
    private String classifyName;
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingSysIntHeader.java
@@ -14,7 +14,7 @@
 * æŽ¥å£å¤´åè®®
 */
@Data
@TableName(CodeTableNameConstant.PL_CODE_SYSINTPAREMTER)
@TableName(CodeTableNameConstant.PL_CODE_SYSINTHEADER)
@ApiModel(value = "DockingSysIntHeader", description = "集成接口-接口头协议对象")
@EqualsAndHashCode(callSuper = true)
public class DockingSysIntHeader extends BaseModel {
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingSystemConfig.java
@@ -284,9 +284,9 @@
    /***
     * æŽ¨é€ç±»åž‹ 1:数据推送/2分类推送,默认数据推送
     *  æŽ¨é€ç±»åž‹ 1:数据推送,2分类推送,默认数据推送,3:编码申请,4:编码更改(更改、状态,回收),5:分类查询,6:含规则信息的分类查询,7:数据查询
     */
    @ApiModelProperty(value = "推送类型 1:数据推送/2分类推送,默认数据推送")
    @ApiModelProperty(value = "推送类型 1:数据推送,2分类推送,默认数据推送,3:编码申请,4:编码更改(更改、状态,回收),5:分类查询,6:含规则信息的分类查询,7:数据查询")
    private String pushType;
    /***
     * æŽ¨é€ç±»åž‹æ˜¾ç¤ºå€¼
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingTask.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.vci.ubcs.starter.constant.CodeTableNameConstant;
import com.vci.ubcs.starter.revision.model.BaseModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -12,7 +13,7 @@
 * å®šæ—¶åˆ†å‘任务对象
 */
@Data
@TableName("PL_CODE_DOCKINGTASK")
@TableName(CodeTableNameConstant.PL_CODE_DOCKINGTASK)
@ApiModel(value = "DockingTask", description = "定时分发任务对象")
@EqualsAndHashCode
public class DockingTask extends BaseModel {
Source/UBCS/ubcs-service-api/ubcs-ddl-api/src/main/java/com/vci/ubcs/ddl/bo/DdlFieldMappingAttrBO.java
@@ -59,11 +59,10 @@
    @Override
    public String toString() {
        StringBuilder stringBuilder = new StringBuilder().append(dataType);
        if (dataLength != null){
        if (dataLength != null && dataPrecision != null){
            stringBuilder.append(StringPool.SPACE).append(StringPool.LEFT_BRACKET).append(dataLength).append(StringPool.COMMA).append(dataPrecision).append(StringPool.RIGHT_BRACKET).append(StringPool.SPACE);
        }else if (dataLength != null) {
            stringBuilder.append(StringPool.SPACE).append(StringPool.LEFT_BRACKET).append(dataLength).append(StringPool.RIGHT_BRACKET).append(StringPool.SPACE);
        }
        if (dataPrecision != null){
            stringBuilder.append(StringPool.SPACE).append(StringPool.LEFT_BRACKET).append(dataLength == null ? 22 : dataLength).append(StringPool.COMMA).append(dataPrecision).append(StringPool.RIGHT_BRACKET).append(StringPool.SPACE);
        }
        if (!nullable){
            stringBuilder.append(StringPool.SPACE).append("not null").append(StringPool.SPACE);
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/constant/CodeTableNameConstant.java
@@ -118,14 +118,29 @@
    public static final String PL_CODE_SYSINTBASE = "PL_CODE_SYSINTBASE";
    /**
     * é›†æˆæŽ¥å£-集成接口管理对象
     * é›†æˆæŽ¥å£-集成接口配置对象
     */
    public static final String PL_CODE_SYSINTINFO = "PL_CODE_SYSINTINFO";
    /**
     * é›†æˆæŽ¥å£-集成接口管理对象
     * é›†æˆæŽ¥å£-集成参数管理对象
     * platformbtm_sysintparemter
     */
    public static final String PL_CODE_SYSINTPAREMTER = "PL_CODE_SYSINTPAREMTER";
    /**
     * æŽ¥å£å¤´åè®®
     */
    public static final String PL_CODE_SYSINTHEADER = "PL_CODE_SYSINTHEADER";
    /***
     * å¾…集成数据
     */
    public static final String PL_CODE_DOCKINGPADATA = "PL_CODE_DOCKINGPADATA";
    /***
     * å®šæ—¶åˆ†å‘任务对象
     */
    public static final String PL_CODE_DOCKINGTASK = "PL_CODE_DOCKINGTASK";
}
Source/UBCS/ubcs-service/ubcs-code/pom.xml
@@ -97,6 +97,48 @@
            <artifactId>DmJdbcDriver18</artifactId>
            <optional>true</optional>
        </dependency>-->
        <!--axis2 begin -->
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-adb</artifactId>
            <version>${axis2.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-transport-http</artifactId>
            <version>${axis2.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-transport-local</artifactId>
            <version>${axis2.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-kernel</artifactId>
            <version>${axis2.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>javax.servlet</groupId>
                    <artifactId>servlet-api</artifactId>
                </exclusion>
                <exclusion>
                    <artifactId>commons-io</artifactId>
                    <groupId>commons-io</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>geronimo-activation_1.1_spec</artifactId>
                    <groupId>org.apache.geronimo.specs</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>commons-logging</artifactId>
                    <groupId>commons-logging</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--axis2 end -->
    </dependencies>
    <build>
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/DockingManagementController.java
@@ -4,19 +4,19 @@
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.vci.ubcs.code.dto.DockingSystemConfigDTO;
import com.vci.ubcs.code.dto.DockingSystemDTO;
import com.vci.ubcs.code.entity.CodeRule;
import com.vci.ubcs.code.dto.UpdateSysInfoStatusDTO;
import com.vci.ubcs.code.entity.DockingData;
import com.vci.ubcs.code.entity.DockingSystem;
import com.vci.ubcs.code.entity.DockingSystemConfig;
import com.vci.ubcs.code.service.IDockingDataService;
import com.vci.ubcs.code.service.IDockingSystemConfigService;
import com.vci.ubcs.code.service.IDockingSystemService;
import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
import com.vci.ubcs.code.vo.pagemodel.DockingDataVO;
import com.vci.ubcs.code.vo.pagemodel.DockingSystemConfigVO;
import com.vci.ubcs.code.vo.pagemodel.DockingSystemVO;
import com.vci.ubcs.code.wrapper.CodeRuleWrapper;
import com.vci.ubcs.code.wrapper.DockingSystemConfigWrapper;
import com.vci.ubcs.code.wrapper.DockingDataWrapper;
import com.vci.ubcs.code.wrapper.DockingSystemWrapper;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
@@ -40,12 +40,17 @@
     * é›†æˆç³»ç»Ÿç®¡ç†æœåŠ¡
     */
    private  final IDockingSystemService dockingSystemService;
    /***
     * é›†æˆæŽ¥å£é…ç½®æœåŠ¡
     */
    private  final IDockingSystemConfigService dockingSystemConfigService;
    /***
     * å¾…集成数据服务
     */
    private final IDockingDataService dockingDataService;
    /**系统集成的系统信息列表
@@ -89,8 +94,8 @@
     * @param oids ç³»ç»Ÿé›†æˆçš„系统信息数据传输对象,oid和ts需要传输
     * @return åˆ é™¤ç»“果反馈::success:成功,fail:失败
     */
    @DeleteMapping( "/deleteDataById")
    public R deleteDataById( String oids) {
    @DeleteMapping( "/deleteSystemsById")
    public R deleteSystemsById( String oids) {
        try {
            return R.status(dockingSystemService.deleteDataById(oids));
        }catch (VciBaseException e){
@@ -100,15 +105,15 @@
    }
    /**
     * ç³»ç»Ÿé›†æˆåŸºç¡€ä¿¡æ¯åˆ—表
     * @param DockingSystemConfig åŸºç¡€æŸ¥è¯¢å¯¹è±¡ï¼ŒåŒ…含查询条件,分页,排序等
     * @param dockingSystemConfig åŸºç¡€æŸ¥è¯¢å¯¹è±¡ï¼ŒåŒ…含查询条件,分页,排序等
     * @return ç³»ç»Ÿé›†æˆåŸºç¡€ä¿¡æ¯æ˜¾ç¤ºå¯¹è±¡åˆ—表
     */
    @GetMapping("/gridSystemConfig")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "分页", notes = "DockingSystemConfig")
    public R<IPage<DockingSystemConfigVO>> gridSystemConfig(DockingSystemConfig DockingSystemConfig, Query query){
        IPage<DockingSystemConfig> pages = dockingSystemConfigService.page(Condition.getPage(query), Condition.getQueryWrapper(DockingSystemConfig));
        return R.data(DockingSystemConfigWrapper.build().pageVO(pages));
    @ApiOperation(value = "分页", notes = "dockingSystemConfig")
    public R<IPage<DockingSystemConfigVO>> gridSystemConfig(DockingSystemConfig dockingSystemConfig, Query query){
        IPage<DockingSystemConfigVO>  pages=dockingSystemConfigService.page(dockingSystemConfig,query);
        return R.data(pages);
    }
    /**
@@ -125,4 +130,65 @@
            return R.fail("保存失败!");
        }
    }
    /**
     * å¢žåŠ  ç³»ç»Ÿé›†æˆåŸºç¡€ä¿¡æ¯
     * @param dockingSystemConfigDTO ç³»ç»Ÿé›†æˆåŸºç¡€ä¿¡æ¯æ•°æ®ä¼ è¾“对象
     * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    @PostMapping( "/editSystemConfig")
    public R editSystemConfig(@RequestBody DockingSystemConfigDTO dockingSystemConfigDTO){
        try {
            boolean res =  dockingSystemConfigService.editSave(dockingSystemConfigDTO);
            return R.success("保存成功!");
        }catch (Throwable e){
            return R.fail("保存失败!");
        }
    }
    /**
     * åˆ é™¤ç³»ç»Ÿé›†æˆç³»ç»Ÿé…ç½®ä¿¡æ¯
     * @param oids ç³»ç»Ÿé›†æˆåŸºç¡€ä¿¡æ¯æ•°æ®ä¼ è¾“对象,oid和ts需要传输
     * @return åˆ é™¤ç»“果反馈::success:成功,fail:失败
     */
    @DeleteMapping( "/deleteSystemConfigsById")
    public R deleteSystemConfigsById( String oids) {
        try {
            return R.status(dockingSystemConfigService.deleteDataById(oids));
        }catch (VciBaseException e){
            R.fail(e.getMessage());
        }
        return R.success("操作成功");
    }
    /***
     * æŽ¥å£ä¿¡æ¯æ˜¯å¦å¯ç”¨/停用
     * @param sysInfoStatusDTO
     * @return
     */
    @PostMapping("/updateStatus")
    public R updateStatus(@RequestBody UpdateSysInfoStatusDTO sysInfoStatusDTO){
        return dockingSystemConfigService.updateStatus(sysInfoStatusDTO);
    }
    /***
     * æ‰‹åŠ¨æŽ¨é€åˆ†ç±»/数据
     * @param dockingSystemConfigDTO
     * @return
     */
    @PostMapping("/pushData")
    public R pushData(@RequestBody DockingSystemConfigDTO dockingSystemConfigDTO){
        return dockingSystemConfigService.pushData(dockingSystemConfigDTO);
    }
    /**
     * å¾…集成数据
     * @param dockingData åŸºç¡€æŸ¥è¯¢å¯¹è±¡ï¼ŒåŒ…含查询条件,分页,排序等
     * @return ç³»ç»Ÿé›†æˆåŸºç¡€ä¿¡æ¯æ˜¾ç¤ºå¯¹è±¡åˆ—表
     */
    @GetMapping("/gridDockingData")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "分页", notes = "DockingDataVO")
    public R<IPage<DockingDataVO>> gridDockingData(DockingData dockingData, Query query){
        IPage<DockingData> pages = dockingDataService.page(Condition.getPage(query), Condition.getQueryWrapper(dockingData));
        return R.data(DockingDataWrapper.build().pageVO(pages));
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationDataFlowTypeEnum.java
@@ -15,9 +15,9 @@
     */
    PUSH("push","推送"),
    /**
     * é€šçŸ¥å’ŒæŸ¥è¯¢
     * æŽ¥å—
     */
    NOTICE_AND_QUERY("noticeAndQuery","通知和查询");
    ACCEPT("accept","接收");
    /**
     * æžšä¸¾çš„值
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingDataMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
package com.vci.ubcs.code.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.vci.ubcs.code.entity.DockingData;
public interface DockingDataMapper extends BaseMapper<DockingData> {
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingDataService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
package com.vci.ubcs.code.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.code.entity.DockingData;
/***
 * @author xj
 * @date 2023-07-10
 */
public interface IDockingDataService extends IService<DockingData> {
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingSystemConfigService.java
@@ -1,9 +1,15 @@
package com.vci.ubcs.code.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.code.dto.DockingSystemConfigDTO;
import com.vci.ubcs.code.dto.UpdateSysInfoStatusDTO;
import com.vci.ubcs.code.entity.DockingSystemConfig;
import com.vci.ubcs.code.vo.pagemodel.DockingSystemConfigVO;
import com.vci.ubcs.code.vo.pagemodel.DockingSystemVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
/***
 * ç³»ç»ŸæŽ¥å£ç®¡ç†-接口配置服务
@@ -12,19 +18,41 @@
 */
public interface IDockingSystemConfigService extends IService<DockingSystemConfig> {
    /**
     * ç³»ç»Ÿé›†æˆåŸºç¡€ä¿¡æ¯åˆ—表
     * @param dockingSystemConfig åŸºç¡€æŸ¥è¯¢å¯¹è±¡ï¼ŒåŒ…含查询条件,分页,排序等
     * @return ç³»ç»Ÿé›†æˆåŸºç¡€ä¿¡æ¯æ˜¾ç¤ºå¯¹è±¡åˆ—表
     */
    IPage<DockingSystemConfigVO> page(DockingSystemConfig dockingSystemConfig, Query query);
    /**
     * å¢žåŠ  ç³»ç»Ÿé›†æˆçš„æŽ¥å£ç®¡ç†ä¿¡æ¯
     * @param dockingSystemConfigDTO ç³»ç»Ÿé›†æˆçš„系统信息数据传输对象
     * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    public boolean addSave(DockingSystemConfigDTO dockingSystemConfigDTO);
     boolean addSave(DockingSystemConfigDTO dockingSystemConfigDTO);
    /**
     * ä¿®æ”¹ ç³»ç»Ÿé›†æˆçš„æŽ¥å£ç®¡ç†ä¿¡æ¯
     * @param dockingSystemConfigDTO ç³»ç»Ÿé›†æˆçš„系统信息数据传输对象
     * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    DockingSystemVO editSave(DockingSystemConfigDTO dockingSystemConfigDTO);
    boolean editSave(DockingSystemConfigDTO dockingSystemConfigDTO);
    /***
     * æ›´æ–°æŽ¥å£é…ç½®ä¿¡æ¯çŠ¶æ€
     * @param sysInfoStatusDTO
     * @return
     */
    public R updateStatus(UpdateSysInfoStatusDTO sysInfoStatusDTO);
    /***
     * æ‰‹åŠ¨åŒæ­¥æŽ¥å£ï¼Œåªæœ‰æŽ¨é€çš„æ‰ä¼š
     * @param dockingSystemConfig
     * @return
     * @throws VciBaseException
     */
    R pushData(DockingSystemConfigDTO dockingSystemConfigDTO) throws VciBaseException;
    boolean deleteDataById(String oids);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingDataServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package com.vci.ubcs.code.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.entity.DockingData;
import com.vci.ubcs.code.mapper.DockingDataMapper;
import com.vci.ubcs.code.service.IDockingDataService;
import org.springframework.stereotype.Service;
/***
 * @author xj
 * @date 2023-07-10
 */
@Service
public class DockingDataServiceImpl extends ServiceImpl<DockingDataMapper, DockingData> implements IDockingDataService {
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java
@@ -1,36 +1,62 @@
package com.vci.ubcs.code.service.impl;
import com.alibaba.cloud.commons.lang.StringUtils;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO;
import com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant;
import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
import com.vci.ubcs.code.dto.DockingSysIntHeaderDTO;
import com.vci.ubcs.code.dto.DockingSystemConfigDTO;
import com.vci.ubcs.code.dto.DockingSysIntParamDTO;
import com.vci.ubcs.code.entity.DockingSysIntHeader;
import com.vci.ubcs.code.entity.DockingSysIntParam;
import com.vci.ubcs.code.entity.DockingSystem;
import com.vci.ubcs.code.entity.DockingSystemConfig;
import com.vci.ubcs.code.enumpack.SysIntegrationRequestTypeEnum;
import com.vci.ubcs.code.mapper.DockingSysIntHeaderMapper;
import com.vci.ubcs.code.mapper.DockingSysIntParamMapper;
import com.vci.ubcs.code.mapper.DockingSystemConfigMapper;
import com.vci.ubcs.code.mapper.DockingSystemMapper;
import com.vci.ubcs.code.service.IDockingSysIntHeaderService;
import com.vci.ubcs.code.service.IDockingSysIntParamService;
import com.vci.ubcs.code.service.IDockingSystemConfigService;
import com.vci.ubcs.code.vo.pagemodel.DockingSysIntHeaderVO;
import com.vci.ubcs.code.vo.pagemodel.DockingSystemVO;
import com.vci.ubcs.code.dto.UpdateSysInfoStatusDTO;
import com.vci.ubcs.code.dto.datapush.classify.JsonRootDataDTO;
import com.vci.ubcs.code.dto.datapush.classify.NodeClassifyDTO;
import com.vci.ubcs.code.dto.datapush.classify.NodeDataDTO;
import com.vci.ubcs.code.dto.datapush.classify.NodeLibraryDTO;
import com.vci.ubcs.code.dto.datapush.result.ResultJsonDTO;
import com.vci.ubcs.code.dto.datapush.result.ResultNodeDataDTO;
import com.vci.ubcs.code.dto.datapush.result.ResultNodeObjectDTO;
import com.vci.ubcs.code.entity.*;
import com.vci.ubcs.code.enumpack.*;
import com.vci.ubcs.code.mapper.*;
import com.vci.ubcs.code.service.*;
import com.vci.ubcs.code.util.HttpUtils;
import com.vci.ubcs.code.util.WsErpClientUtil;
import com.vci.ubcs.code.vo.pagemodel.*;
import com.vci.ubcs.code.wrapper.DockingSysIntHeaderWrapper;
import com.vci.ubcs.code.wrapper.DockingSysIntParamWrapper;
import com.vci.ubcs.code.wrapper.DockingSystemConfigWrapper;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
import com.vci.ubcs.starter.web.constant.QueryOptionConstant;
import com.vci.ubcs.starter.web.pagemodel.PageHelper;
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import com.vci.ubcs.starter.web.util.VciDateUtil;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
import static com.vci.ubcs.code.constant.MdmDuckingConstant.*;
import static com.vci.ubcs.starter.util.MdmBtmTypeConstant.CODE_CLASSIFY_OID_FIELD;
/***
 * ç³»ç»ŸæŽ¥å£ç®¡ç†-接口配置服务
@@ -41,6 +67,8 @@
@Service
public class DockingSystemConfigServiceImpl extends ServiceImpl<DockingSystemConfigMapper, DockingSystemConfig> implements IDockingSystemConfigService{
    @Value("${dataSyncPush.dataParamName:xmlData}")
    public String DATA_PARAM_NAME;
    /***
     * é›†æˆç³»ç»Ÿç®¡ç†æœåŠ¡
     */
@@ -53,8 +81,6 @@
    @Autowired(required = false)
    private IDockingSysIntParamService dockingSysIntParamService;
    /***
     * é›†æˆæŽ¥å£-集成接口管理参数服务
     */
@@ -62,17 +88,71 @@
    private IDockingSysIntHeaderService dockingSysIntHeaderService;
    /***
     * é›†æˆæŽ¥å£-集成系统服务
     */
    @Autowired(required = false)
    private DockingSystemMapper dockingSystemMapper;
    /***
     * ä»»åŠ¡ç”ŸæˆæœåŠ¡
     */
    @Autowired(required = false)
    private IDockingTaskService dockingTaskService;
    /**
     * ä¸»æ•°æ®å¼•擎的服务
     */
    @Resource
    private MdmEngineService engineService;
    /**
     * ä¸»é¢˜åº“分类的服务
     */
    @Resource
    private ICodeClassifyService classifyService;
    /**
     * å¯¹è±¡çš„æ“ä½œ
     */
    @Autowired
    private RevisionModelUtil revisionModelUtil;
    /**
     * é€šç”¨æŸ¥è¯¢
     */
    @Resource
    private CommonsMapper commonsMapper;
    /**
     * æ—¥å¿—文件服务
     */
    @Resource
    private IDockingLogeService dockingLogeService;
    @Override
    public IPage<DockingSystemConfigVO> page(DockingSystemConfig DockingSystemConfig, Query query) {
        IPage<DockingSystemConfig> pages = page(Condition.getPage(query), Condition.getQueryWrapper(DockingSystemConfig));
        List<DockingSystemConfig>  dockingSystemConfigList= pages.getRecords();
        dockingSystemConfigList.stream().forEach(dockingSystemConfig -> {
            dockingSystemConfig.setDataFlowTypeText(SysIntegrationDataFlowTypeEnum.getTextByValue(dockingSystemConfig.getDataFlowType()));
            dockingSystemConfig.setAuthorityTypeText(SysIntegrationAuthorityTypeEnum.getTextByValue(dockingSystemConfig.getAuthorityType()));
            dockingSystemConfig.setParamTypeText(SysIntegrationParamAndReturnTypeEnum.getTextByValue(dockingSystemConfig.getParamType()));
            dockingSystemConfig.setReturnTypeText(SysIntegrationParamAndReturnTypeEnum.getTextByValue(dockingSystemConfig.getReturnType()));
            dockingSystemConfig.setInterfaceTypeText(SysIntegrationRequestTypeEnum.getValueByText(dockingSystemConfig.getInterfaceType()));
            dockingSystemConfig.setPushTypeText(sysIntegrationPushTypeEnum.getTextByValue(dockingSystemConfig.getPushType()));
            dockingSystemConfig.setRequestMethodText(SysIntegrationRequestMethodEnum.getTextByValue(dockingSystemConfig.getRequestMethod()));
            //dockingSystemConfig.setSysBaseName("");
        //    dockingSystemConfig.setSourceSysName("");
            //dockingSystemConfig.setTargetSysName("");
        });
        return  DockingSystemConfigWrapper.build().pageVO(pages);
    }
    /**
     * å¢žåŠ ç³»ç»Ÿé›†æˆçš„æŽ¥å£ç®¡ç†ä¿¡æ¯
     * @param dockingSystemConfigDTO ç³»ç»Ÿé›†æˆçš„系统信息数据传输对象
@@ -127,9 +207,154 @@
    }
    /**
     * ä¿®æ”¹ ç³»ç»Ÿé›†æˆçš„æŽ¥å£ç®¡ç†ä¿¡æ¯
     * @param dockingSystemConfigDTO ç³»ç»Ÿé›†æˆçš„系统信息数据传输对象
     * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public DockingSystemVO editSave(DockingSystemConfigDTO dockingSystemDTO) {
        return null;
    public boolean editSave(DockingSystemConfigDTO dockingSystemConfigDTO) {
        VciBaseUtil.alertNotNull(dockingSystemConfigDTO,"数据对象",dockingSystemConfigDTO.getOid(),"系统集成基础信息主键");
        String sourcesystemoid = dockingSystemConfigDTO.getSourceSystemOid();//.getSourcesystemoid();
        DockingSystem dockingSystem = dockingSystemMapper.selectById(sourcesystemoid);
        dockingSystemConfigDTO.setSysBaseOid(sourcesystemoid);
        dockingSystemConfigDTO.setSysBaseId(dockingSystem.getId());
        dockingSystemConfigDTO.setBtmname(dockingSystem.getName());
        //将DTO转换为DO
        DockingSystemConfig dockingSystemConfig = dockingSystemConfigMapper.selectById(dockingSystemConfigDTO.getOid());
        revisionModelUtil.copyFromDTOIgnore(dockingSystemConfigDTO,dockingSystemConfig);
        String sysInfoOid=dockingSystemConfigDTO.getOid();
        List<DockingSysIntParamDTO> dockingSysIntParamDTOS=  dockingSystemConfigDTO.getSysIntParamDTOS();
        List<DockingSysIntParam> dockingSysIntParamList=new ArrayList<>();
        if(!CollectionUtils.isEmpty(dockingSysIntParamDTOS)) {
            dockingSysIntParamDTOS.stream().forEach(dockingSysIntParamDTO -> {
                DockingSysIntParam dockingSysIntParam = new DockingSysIntParam();
                BeanUtilForVCI.copyPropertiesIgnoreCase(dockingSysIntParamDTO, dockingSysIntParam);
                dockingSysIntParamList.add(dockingSysIntParam);
            });
        }
        List<DockingSysIntHeaderDTO> dockingSysIntHeaderDTOS= dockingSystemConfigDTO.getSysIntHeaderDTOS();
        List<DockingSysIntHeader> dockingSysIntHeaderList = new ArrayList<>();
        if(!CollectionUtils.isEmpty(dockingSysIntHeaderDTOS)) {
            dockingSysIntHeaderDTOS.stream().forEach(dockingSysIntHeaderDTO -> {
                DockingSysIntHeader dockingSysIntHeader = new DockingSysIntHeader();
                BeanUtilForVCI.copyPropertiesIgnoreCase(dockingSysIntHeaderDTO, dockingSysIntHeader);
                dockingSysIntHeaderList.add(dockingSysIntHeader);
            });
        }
        //批量处理保存header对象
        if(!CollectionUtils.isEmpty(dockingSysIntHeaderList)) {
            List<String> idList=new ArrayList<>();
            List<DockingSysIntHeader> headers_old =this.dockingSysIntHeaderService.list(Wrappers.<DockingSysIntHeader>query().lambda().eq(DockingSysIntHeader::getInfoOid,sysInfoOid));;
            for (DockingSysIntHeader sysIntHeader:headers_old){
                sysIntHeader.setUsedFlag(FLAG_FAIL);
                idList.add(sysIntHeader.getOid());
            }
            if(idList.size()!=0){
                boolean res=dockingSysIntHeaderService.removeBatchByIds(idList);
            }
            //再新增headers
            for(DockingSysIntHeader sysIntHeader:dockingSysIntHeaderList){
                sysIntHeader.setUsedFlag(FLAG_TRUE);
                sysIntHeader.setInfoOid(dockingSystemConfig.getOid());
            }
            boolean res= dockingSysIntHeaderService.saveBatch(dockingSysIntHeaderList);
        }
        //批量处理保存Param对象
        if(!CollectionUtils.isEmpty(dockingSysIntParamList)) {
            //先删除params_old
            List<String> idList=new ArrayList<>();
            List<DockingSysIntParam> params_old =this.dockingSysIntParamService.list(Wrappers.<DockingSysIntParam>query().lambda().eq(DockingSysIntParam::getInfoOid,sysInfoOid));
            for (DockingSysIntParam sysIntParamDO:params_old){
                sysIntParamDO.setUsedFlag(FLAG_FAIL);
                idList.add(sysIntParamDO.getOid());
            }
            if(idList.size()!=0){
                boolean res= dockingSysIntParamService.removeBatchByIds(idList);
            }
            //再新增params
            for(DockingSysIntParam sysIntParamDOi:dockingSysIntParamList){
                sysIntParamDOi.setUsedFlag(FLAG_TRUE);
                sysIntParamDOi.setInfoOid(dockingSystemConfig.getOid());
            }
            dockingSysIntParamService.saveBatch(dockingSysIntParamList);
        }
        this.dockingSystemConfigMapper.updateById(dockingSystemConfig);
        //return changeoDckingSystemEntityVOs(dockingSystemConfig,dockingSysIntHeaderList,dockingSysIntParamList);
        return true;
    }
    /***
     * æ›´æ–°æŽ¥å£é…ç½®ä¿¡æ¯çŠ¶æ€
     * @param sysInfoStatusDTO
     * @return
     */
    @Override
    public R updateStatus(UpdateSysInfoStatusDTO sysInfoStatusDTO) {
        VciBaseUtil.alertNotNull(sysInfoStatusDTO.getOid(),"数据对象",sysInfoStatusDTO.getOid(),"系统集成基础信息主键");
        DockingSystemConfig dockingSystemConfig = this.dockingSystemConfigMapper.selectById(sysInfoStatusDTO.getOid());
        try {
            dockingSystemConfig.setTs(VciDateUtil.str2Date(sysInfoStatusDTO.getTs(), VciDateUtil.DateTimeFormat));
        } catch (Exception e) {
            e.printStackTrace();
        }
        if(sysInfoStatusDTO.getUpdate().equals("disable")) {
            dockingSystemConfig.setUsedFlag("false");
        }else{
            dockingSystemConfig.setUsedFlag("true");
        }
        dockingSystemConfigMapper.updateById(dockingSystemConfig);
        return R.status(true);
    }
    /***
     * æ‰‹åŠ¨åŒæ­¥æŽ¥å£ï¼Œåªæœ‰æŽ¨é€çš„æ‰ä¼š
     * @param dockingSystemConfigDTO
     * @return
     * @throws VciBaseException
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public R pushData(DockingSystemConfigDTO dockingSystemConfigDTO) throws VciBaseException {
        VciBaseUtil.alertNotNull(dockingSystemConfigDTO.getOid(),"数据对象",dockingSystemConfigDTO.getOid(),"系统集成配置信息主键");
        if(dockingSystemConfigDTO.getDataFlowType().equals(SysIntegrationDataFlowTypeEnum.ACCEPT.getValue())){
            throw new VciBaseException("你所选择集成配置信息不属于推送类型的接口配置!");
        }
        boolean issuccess=false;
        String type="数据推送";
        if(dockingSystemConfigDTO.getPushType().equalsIgnoreCase("1")){//推送数据
            pushDockingTasks(dockingSystemConfigDTO);
        }else if(dockingSystemConfigDTO.getPushType().equalsIgnoreCase("2")){//推送分类
            issuccess= pushClsfDatas(dockingSystemConfigDTO);
            type="分类推送";
        }
        return issuccess?R.success(type+"成功!"):R.fail(type+"失败!");
    }
    /**
     *
     * @param dockingSystemConfig
     * @param dockingSysIntHeaderList
     * @param dockingSysIntParamList
     * @return
     */
    private DockingSystemConfigVO changeoDckingSystemEntityVOs(DockingSystemConfig dockingSystemConfig , List<DockingSysIntHeader> dockingSysIntHeaderList , List<DockingSysIntParam> dockingSysIntParamList) {
        DockingSystemConfigVO vo = new DockingSystemConfigVO();
        if(dockingSystemConfig != null){
            BeanUtilForVCI.copyPropertiesIgnoreCase(dockingSystemConfig,vo);
            //如果有lcstatus的类的话
            if(!CollectionUtils.isEmpty(dockingSysIntParamList)) {
                List<DockingSysIntParamVO> dockingSysIntParamVOList = DockingSysIntParamWrapper.build().entityVOs(dockingSysIntParamList);
                vo.setSysIntParamVOs(dockingSysIntParamVOList);
            }
            if(!CollectionUtils.isEmpty(dockingSysIntHeaderList)){
                List<DockingSysIntHeaderVO> dockingSysIntHeaderVOList=    DockingSysIntHeaderWrapper.build().entityVOs(dockingSysIntHeaderList);
                vo.setSysIntHeaderVOs(dockingSysIntHeaderVOList);
            }
        }
        return vo;
    }
    @Override
@@ -153,4 +378,304 @@
            VciBaseUtil.alertNotNull(dockingSystemConfigDTO.getClassPath(),"类路径");
        }
    }
    private  R pushDockingTasks(DockingSystemConfigDTO dockingSystemConfigDTO) {
        String msg="数据推送到定时任务成功!";
        try {
            DockingSystemConfig dockingSystemConfig =dockingSystemConfigMapper.selectById(dockingSystemConfigDTO.getOid());
            String codeClassifyOid = dockingSystemConfig.getClassifyOid();
            CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyOid);
            CodeClassifyVO topClassifyVO = classifyService.getTopClassifyVO(codeClassifyOid);
            String btmTypeId = topClassifyVO.getBtmtypeid();
            if (StringUtils.isBlank(btmTypeId)) {
                return R.fail("这个分类所属顶层分类没有添加业务类型");
            }
            List<CodeClassifyVO> codeClassifyIdPathVOS = classifyService.listChildrenClassify(topClassifyVO.getOid(), true, "id", false);
            List<CodeClassifyVO> codeClassifynamePathVOS = classifyService.listChildrenClassify(topClassifyVO.getOid(), true, "name", false);
            Map<String/**分类oid**/, String/**分类代号链接符**/> clsfOidIdMap = codeClassifyIdPathVOS.stream().collect(Collectors.toMap(s -> s.getOid(), t -> reverseOrderByList(t.getPath(), topClassifyVO, 1).toLowerCase(Locale.ROOT), (o1, o2) -> o2));
            Map<String/**分类oid**/, String/**分类名称链接符**/> clsfOidNameMap = codeClassifynamePathVOS.stream().collect(Collectors.toMap(s -> s.getOid(), t -> reverseOrderByList(t.getPath(), topClassifyVO, 2).toLowerCase(Locale.ROOT), (o1, o2) -> o2));
            PageHelper pageHelper = new PageHelper();
            pageHelper.setPage(1);
            pageHelper.setLimit(1000000);
            pageHelper.setStart(0);
            HashMap<String, String> conditionMap = new HashMap<>();
            if (!classifyService.checkHasChild(codeClassifyOid)) {
                conditionMap.put(CODE_CLASSIFY_OID_FIELD, codeClassifyOid);
            } else {
                conditionMap.put(CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY)
                    + " where lcstatus='" + FrameWorkDefaultValueConstant.FRAMEWORK_DATA_ENABLED +
                    "' start with parentCodeClassifyOid = '" + codeClassifyOid + "' CONNECT BY PRIOR OID = parentCodeClassifyOid )");
            }
            conditionMap.put("islastr", "1");
            conditionMap.put("islastv", "1");
            List<String> lcstatusList = new ArrayList<>(Arrays.asList(new String[]{"TakeBack", "Released", "Disabled"}));
            conditionMap.put("lcstatus", QueryOptionConstant.IN + VciBaseUtil.toInSql(lcstatusList.toArray(new String[0])));
            CodeTemplateAttrSqlBO sqlBO = engineService.getSqlByTemplateVO(btmTypeId, templateVO, conditionMap, pageHelper);
            List<Map<String,String>> maps = commonsMapper.queryByOnlySqlForMap(sqlBO.getSqlHasPage());
            List<DockingTask> dockingTaskDO_insert = new ArrayList<>();
            if (!CollectionUtils.isEmpty(maps)) {
                maps.stream().forEach(map -> {
                    String btmoid = map.get("oid".toUpperCase(Locale.ROOT)) == null ? "" : map.get("oid".toUpperCase(Locale.ROOT)).toString();//数据oid
                    String sendtype = map.get("lcstatus".toUpperCase(Locale.ROOT)) == null ? "" : map.get("lcstatus".toUpperCase(Locale.ROOT)).toString();//数据推送类型
                    String id = map.get("id".toUpperCase(Locale.ROOT)) == null ? "" : map.get("id".toUpperCase(Locale.ROOT)).toString();//编码
                    String btmid = topClassifyVO.getBtmtypeid();//数据业务类型
                    String classifyoid = map.get("codeclsfid".toUpperCase(Locale.ROOT)) == null ? "" : map.get("codeclsfid".toUpperCase(Locale.ROOT)).toString();//数据所在的分类id
                    String date2Str = VciDateUtil.date2Str(new Date(), VciDateUtil.DateTimeFormatStr);
                    DockingTask dockingTaskDO = new DockingTask();
                    dockingTaskDO.setOid(date2Str +"_"+id);
                    dockingTaskDO.setSendFlag(SEND_FLAG_FALSE);
                    dockingTaskDO.setId(id);//编码
                    dockingTaskDO.setUniqueCode("");
                    dockingTaskDO.setBtmOid(btmoid);//数据oid
                    dockingTaskDO.setBtmId(btmid);//数据业务类型id
                    if (clsfOidIdMap.containsKey(classifyoid)) {
                        String classifyid = clsfOidIdMap.get(classifyoid);
                        dockingTaskDO.setClassifyId(classifyid);//数据在分类id
                    }
                    dockingTaskDO.setClassifyOid(classifyoid);//数据所在分类oid
                    if (clsfOidNameMap.containsKey(classifyoid)) {
                        String classifyname = clsfOidNameMap.get(classifyoid);
                        dockingTaskDO.setClassifyName(classifyname);//数据所在分类名称
                    }
                    dockingTaskDO.setSendType(sendtype);//数据推送类型
                    //String dataoid=redisService.getUUIDEveryDay();
                    dockingTaskDO.setDataOid(date2Str +"_"+ btmoid);
                    //intinfo
                    dockingTaskDO.setSysInfoOid(dockingSystemConfigDTO.getOid());//intinfo的oid
                    dockingTaskDO.setSystemOid(dockingSystemConfigDTO.getSysBaseOid());//系统oid
                    dockingTaskDO.setSystemCode(dockingSystemConfigDTO.getSysBaseId());//系统编码
                    dockingTaskDO.setSystemName(dockingSystemConfigDTO.getSysBaseName());//系统name
                    dockingTaskDO_insert.add(dockingTaskDO);
                });
            }
            dockingTaskService.saveBatch(dockingTaskDO_insert);
        }catch (Throwable e){
            msg="数据推送到定时任务失败!";
            log.error("数据推送到定时任务失败!"+e);
            e.printStackTrace();
        }finally {
            log.info(msg);
            return R.success("数据推送到定时任务成功!");
        }
    }
    /***
     * åˆ†ç±»æŽ¨é€é›†æˆ
     * @param dockingSystemConfigDTO
     * @return
     */
    private  boolean pushClsfDatas(DockingSystemConfigDTO dockingSystemConfigDTO){
        DockingSystemConfig dockingSystemConfig= dockingSystemConfigMapper.selectById(dockingSystemConfigDTO.getOid());
        String classOid= dockingSystemConfig.getClassifyOid();
        List<CodeClassifyVO> listChildrenClassify=  classifyService.listChildrenClassify(classOid,true,"id",false);
        List<NodeClassifyDTO>nodeClassifyDTOList=new ArrayList<>();
        JsonRootDataDTO jsonRootDataDTO=new JsonRootDataDTO();
        NodeDataDTO nodeDataDTO=new NodeDataDTO();
        //每个task一个事务,开启
        boolean isSuccess=false;
        try {
            String sendString = "";
            if (!CollectionUtils.isEmpty(listChildrenClassify)) {
                listChildrenClassify.stream().forEach(codeClassifyVO -> {
                    NodeClassifyDTO nodeClassifyDTO = new NodeClassifyDTO();
                    nodeClassifyDTO.setClassCode(codeClassifyVO.getId());//分类代号
                    nodeClassifyDTO.setDescription(codeClassifyVO.getDescription());//分类描述
                    nodeClassifyDTO.setFullPathName(codeClassifyVO.getPath());//全路径
                    nodeClassifyDTO.setLcStatus(codeClassifyVO.getLcStatus());//状态
                    nodeClassifyDTO.setPid(codeClassifyVO.getId());//父id节点
                    nodeClassifyDTO.setId(codeClassifyVO.getOid());//分类oid
                    nodeClassifyDTO.setName(codeClassifyVO.getName());//分类名称
                    nodeClassifyDTOList.add(nodeClassifyDTO);
                });
                NodeLibraryDTO nodeLibraryDTO = new NodeLibraryDTO();
                nodeLibraryDTO.setClassify(nodeClassifyDTOList);
                CodeClassifyVO rootClassify = classifyService.getTopClassifyVO(classOid);
                nodeLibraryDTO.setId(rootClassify.getOid());
                nodeLibraryDTO.setName(rootClassify.getName());
                nodeDataDTO.setLibrary(nodeLibraryDTO);
                jsonRootDataDTO.setData(nodeDataDTO);
                String paramType = dockingSystemConfigDTO.getParamType();//xml/json
                if (paramType.equals(DATATYPE_JSON)) {
                    Object object = JSONObject.toJSON(jsonRootDataDTO);
                    sendString = object.toString();
                } else {
                    //组织返回接口信息
                    XStream xStream = new XStream(new DomDriver());
                    xStream.processAnnotations(NodeDataDTO.class);
                    xStream.autodetectAnnotations(true);
                    sendString = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" + xStream.toXML(nodeDataDTO);
                }
                //调用接口
                callInterface(sendString, dockingSystemConfigDTO);
                isSuccess=true;
            }
        }catch (Throwable e){
            e.printStackTrace();
            isSuccess=false;
        }finally {
            return true;
        }
    }
    /***
     * è°ƒç”¨æŽ¥å£
     * @param dockingSystemConfigDTO
     * @throws Throwable
     */
    private void callInterface(String  sendString , DockingSystemConfigDTO dockingSystemConfigDTO) throws  Throwable{
        String paramString = "";
        String backString = "";
        String msg="";
        String url = dockingSystemConfigDTO.getRequestUrl();//url
        List<ResultNodeObjectDTO> resultNodeObjectDTOS =new ArrayList<>();
        try {
            String type = dockingSystemConfigDTO.getInterfaceType().toLowerCase(Locale.ROOT);//get/post/webserver/corba
            String paramType = dockingSystemConfigDTO.getParamType();//xml/json
            String returnType = dockingSystemConfigDTO.getReturnType();//xml/json
            String requestmethod= dockingSystemConfigDTO.getRequestMethod();
            String interfaceFunction = dockingSystemConfigDTO.getInterfaceFunction();//主要是webservice的方法名
            String namespace = dockingSystemConfigDTO.getNamespace();//namespace
            String soapaction = dockingSystemConfigDTO.getSoapAction();//soapaction
            String targName = dockingSystemConfigDTO.getTargetName();//targName
            String cxfaxis = dockingSystemConfigDTO.getCxfAxis();//webservice是cxf/axis
            //查询param
            List<DockingSysIntParamDTO> sysIntParamVOList = dockingSystemConfigDTO.getSysIntParamDTOS();
            //查询header
            List<DockingSysIntHeaderDTO> sysIntHeaderVOList =dockingSystemConfigDTO.getSysIntHeaderDTOS();
            if(type.equals(URLTYPE_HTTP)) {
                if (requestmethod.equals(URLTYPE_GET)) {//GET请求
                    String sendurl = url + "?" + DATA_PARAM_NAME + "=" + sendString;
                    //拼接param
                    for (DockingSysIntParamDTO sysIntParamVO : sysIntParamVOList) {
                        sendurl = sendurl + "&" + sysIntParamVO.getParamkey() + "=" + sysIntParamVO.getParamvalue();
                    }
                    paramString = sendurl;
                    backString = HttpUtils.get(sendurl);
                } else if (requestmethod.equals(URLTYPE_POST)) {//POST请求
                    MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
                    if(!CollectionUtils.isEmpty(sysIntParamVOList)) {
                        for (DockingSysIntParamDTO sysIntParamVO : sysIntParamVOList) {
                            params.add(sysIntParamVO.getParamkey(), sysIntParamVO.getParamvalue());
                        }
                    }
                    params.add(DATA_PARAM_NAME,sendString);
                    paramString = params.toString();
                    MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
                    if(!CollectionUtils.isEmpty(sysIntHeaderVOList)) {
                        for (DockingSysIntHeaderDTO sysIntHeaderVO : sysIntHeaderVOList) {
                            headers.add(sysIntHeaderVO.getHeaderKey(), sysIntHeaderVO.getHeaderValue());
                        }
                    }
                    backString = HttpUtils.post(url, params, headers);
                }
                if(backString.startsWith("\"")){
                    backString=backString.substring(backString.indexOf("\"")+1);
                }
                if(backString.endsWith("\"")){
                    backString=backString.substring(0,backString.lastIndexOf("\""));
                }
                if(backString.contains("\n")){
                    String res="\n";
                    backString=  backString.replaceAll(res,"");
                }
                if(backString.contains("\\")){
                    String res="\\\\\"";
                    backString=  backString.replaceAll(res,"\"").trim();
                }
            }else if (type.equals(URLTYPE_WEBSERVICE)) {//webserver请求
                MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
                for (DockingSysIntParamDTO sysIntParamVO : sysIntParamVOList) {
                    params.add(sysIntParamVO.getParamkey(), sysIntParamVO.getParamvalue());
                }
                paramString = sendString;
                MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
                for (DockingSysIntHeaderDTO sysIntHeaderVO : sysIntHeaderVOList) {
                    headers.add(sysIntHeaderVO.getHeaderKey(), sysIntHeaderVO.getHeaderValue());
                }
                backString = WsErpClientUtil.sendMsg(url, namespace, soapaction, interfaceFunction, targName, sendString, 10000);
            } else {//corba接口
                //paramString=sendString;
                //  backString = jacorbClient.getBOFactoryService().sendCode(sendString);
            }
            ResultJsonDTO resultJsonDTO = new ResultJsonDTO();
            if(returnType.equals(DATATYPE_JSON)){
                resultJsonDTO =JSONObject.toJavaObject(JSONObject.parseObject(backString), ResultJsonDTO.class);
            }else {
                //组织返回接口信息
                XStream xStream = new XStream(new DomDriver());
                xStream.processAnnotations(ResultNodeDataDTO.class);
                xStream.autodetectAnnotations(true);
                ResultNodeDataDTO resultNodeDataDTO = (ResultNodeDataDTO) xStream.fromXML(backString);
                resultJsonDTO.setData(resultNodeDataDTO);
            }
            ResultNodeDataDTO resultNodeDataDTO=resultJsonDTO.getData();
            resultNodeObjectDTOS=resultNodeDataDTO.getObject();
        }catch (Throwable e){
            msg="调用接口失败:"+e;
            e.printStackTrace();
            //   throw  new Throwable("调用接口失败:"+e);
            ResultNodeObjectDTO   resultNodeObjectDTO=new ResultNodeObjectDTO();
            resultNodeObjectDTO.setErroid("1");
            resultNodeObjectDTO.setMsg(msg);
            resultNodeObjectDTO.setCode(dockingSystemConfigDTO.getClassifyId());
            resultNodeObjectDTO.setOid(dockingSystemConfigDTO.getClassifyOid());
            resultNodeObjectDTOS.add(resultNodeObjectDTO);
        }finally {
            boolean isSend = false;
            List<DockingLog> dockingLogList=new ArrayList<>();
            for (ResultNodeObjectDTO resultNodeObjectDTO:resultNodeObjectDTOS){
                String erroid = resultNodeObjectDTO.getErroid();
                msg = resultNodeObjectDTO.getMsg();
                if("0".equals(erroid)){
                    isSend = true;
                }else if("1".equals(erroid)){
                    isSend=false;
                }else{
                    isSend=false;
                }
                DockingLog dockingLog = new DockingLog();
                String oid=VciBaseUtil.getPk();
                dockingLog.setOid(oid);
                dockingLog.setSystemCode(dockingSystemConfigDTO.getSysBaseId());
                dockingLog.setSystemName(dockingSystemConfigDTO.getSysBaseName());
                dockingLog.setSystemOid(dockingSystemConfigDTO.getSysBaseOid());
                dockingLog.setClassifyOid(dockingSystemConfigDTO.getClassifyOid());
                dockingLog.setClassifyId(dockingSystemConfigDTO.getClassifyId());
                dockingLog.setClassifyName(dockingSystemConfigDTO.getClassifyName());
                dockingLog.setId(dockingSystemConfigDTO.getId());
                dockingLog.setUniqueCode("");
                dockingLog.setInterfaceStatus(isSend?"true":"false");
                dockingLog.setParamString(paramString);
                dockingLog.setType(DATA_LOGE_OUT);
                dockingLog.setReturnString(backString);
                dockingLog.setMsg(msg);
                dockingLogList.add(dockingLog);
                log.info("集成推送数据,systemcode:"+dockingSystemConfigDTO.getSysBaseId()+",systemname:"+dockingSystemConfigDTO.getSysBaseName()+",url:"+url+",param:"+paramString+",e:"+msg);
            }
            dockingLogeService.saveBatch(dockingLogList);
        }
    }
    private String reverseOrderByList(String StringValue, CodeClassifyVO topClassifyVO,int type){
        String[] s=StringValue.split("#");
        StringBuffer sb=new StringBuffer();
        List<String> list=new ArrayList<>(Arrays.asList(s));
        Collections.reverse(list);
        System.out.println(list.toString());
        for (String o:list){
            if(StringUtils.isNotBlank(o)){
                sb.append(o).append(",");
            }
        }
        sb.append(type==1?topClassifyVO.getId():topClassifyVO.getName());
        System.out.println(sb.toString());
        return sb.toString();
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/util/HttpUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,194 @@
package com.vci.ubcs.code.util;
import org.springframework.http.*;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import javax.servlet.http.HttpServletRequest;
/**
 * http请求工具类
 *
 * @since 2020-03-25
 */
public class HttpUtils {
    //Content-Type的key
    public static String CONTENT_TYPE = "Content-Type";
    //json数据
    public static String CONTENT_TYPE_JSON = MediaType.APPLICATION_JSON_VALUE;
    public static String CONTENT_TYPE_JSON_UTF8 = MediaType.APPLICATION_JSON_UTF8_VALUE;
    //表单格式,默认
    public static String CONTENT_TYPE_TEXT = MediaType.APPLICATION_FORM_URLENCODED_VALUE;
    /**
     * get请求
     *
     * @param url
     * @return
     */
    public static String get(String url) {
        return get(url, null);
    }
    /**
     * get请求
     *
     * @param url
     * @param headers è¯·æ±‚头
     * @return
     */
    public static String get(String url, MultiValueMap<String, String> headers) {
        return request(url, null, headers, HttpMethod.GET);
    }
    /**
     * post请求
     *
     * @param url
     * @param params è¯·æ±‚参数
     * @return
     */
    public static String post(String url, MultiValueMap<String, String> params) {
        return post(url, params, null);
    }
    /**
     * post请求
     *
     * @param url
     * @param params  è¯·æ±‚参数
     * @param headers è¯·æ±‚头
     * @return
     */
    public static String post(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers) {
        return request(url, params, headers, HttpMethod.POST);
    }
    /**
     * put请求
     *
     * @param url
     * @param params è¯·æ±‚参数
     * @return
     */
    public static String put(String url, MultiValueMap<String, String> params) {
        return put(url, params, null);
    }
    /**
     * put请求
     *
     * @param url
     * @param params  è¯·æ±‚参数
     * @param headers è¯·æ±‚头
     * @return
     */
    public static String put(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers) {
        return request(url, params, headers, HttpMethod.PUT);
    }
    /**
     * delete请求
     *
     * @param url
     * @param params è¯·æ±‚参数
     * @return
     */
    public static String delete(String url, MultiValueMap<String, String> params) {
        return delete(url, params, null);
    }
    /**
     * delete请求
     *
     * @param url
     * @param params  è¯·æ±‚参数
     * @param headers è¯·æ±‚头
     * @return
     */
    public static String delete(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers) {
        return request(url, params, headers, HttpMethod.DELETE);
    }
    /**
     * è¡¨å•请求
     *
     * @param url
     * @param params  è¯·æ±‚参数
     * @param headers è¯·æ±‚头
     * @param method  è¯·æ±‚方式
     * @return
     */
    public static String request(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers, HttpMethod method) {
        if (params == null) {
            params = new LinkedMultiValueMap<>();
        }
        return request(url, params, headers, method, MediaType.APPLICATION_FORM_URLENCODED);
    }
    /**
     * http请求
     *
     * @param url
     * @param params    è¯·æ±‚参数
     * @param headers   è¯·æ±‚头
     * @param method    è¯·æ±‚方式
     * @param mediaType å‚数类型
     * @return
     */
    public static String request(String url, Object params, MultiValueMap<String, String> headers, HttpMethod method, MediaType mediaType) {
        if (url == null || url.trim().isEmpty()) {
            return null;
        }
        RestTemplate client = new RestTemplate();
        // header
        HttpHeaders httpHeaders = new HttpHeaders();
        if (headers != null) {
            httpHeaders.addAll(headers);
        }
        // æäº¤æ–¹å¼ï¼šè¡¨å•、json
        httpHeaders.setContentType(mediaType);
        HttpEntity<Object> httpEntity = new HttpEntity(params, httpHeaders);
        ResponseEntity<String> response = client.exchange(url, method, httpEntity, String.class);
        return response.getBody();
    }
    public static MultiValueMap<String, String> set_params_headers(String key,String value,MultiValueMap<String, String> map){
        if(map==null){
            map = new LinkedMultiValueMap<>();
        }
        map.add(key,value);
        return map;
    }
    /**
     * èŽ·å–ip
     * @param request
     * @return
     */
    public static String getIpAddressFromRequest(HttpServletRequest request){
        String ip = request.getHeader("X-Forwarded-For");
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_CLIENT_IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_X_FORWARDED_FOR");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
        }
        if (ip == null || ip.length() == 0 || ip.indexOf("0:0:0:0:0:0:0:1") >-1) {
            //0:0:0:0:0:0:0:1是本机在访问
            ip = "127.0.0.1";
        }
        return ip;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/util/WsErpClientUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
package com.vci.ubcs.code.util;
import com.alibaba.cloud.commons.lang.StringUtils;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.soap.SOAP11Constants;
import org.apache.axis2.Constants;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
public class WsErpClientUtil {
    /**
     * axis2调用客户端
     *
     * @param url                   è¯·æ±‚服务地址
     * @param nameSpace             å‘½åç©ºé—´
     * @param method                æ–¹æ³•名
     * @param tarName                å‚数名称
     * @param xmlData                è¯·æ±‚报文
     * @param timeOutInMilliSeconds è¶…æ—¶æ—¶é—´
     * @return String ç±»åž‹çš„响应报恩
     */
    public static String sendMsg(String url, String nameSpace,String soapAction, String method, String tarName, String xmlData, long timeOutInMilliSeconds) throws Exception {
        ServiceClient serviceClient = new ServiceClient();
        Options option = new Options();
        option.setSoapVersionURI(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
        option.setTransportInProtocol(Constants.TRANSPORT_HTTP);
        // å€¼ä¸ºtargetNamespace+methodName
        if(StringUtils.isEmpty(soapAction)){
            soapAction = nameSpace+method;
        }
        option.setAction(soapAction);
        EndpointReference epfs = new EndpointReference(url);
        option.setTo(epfs);
        serviceClient.setOptions(option);
        OMFactory fac = OMAbstractFactory.getOMFactory();
        OMNamespace namespaceOM = fac.createOMNamespace(nameSpace, "");
        OMElement element = fac.createOMElement(method, namespaceOM);
        OMElement theCityCode = fac.createOMElement(tarName, namespaceOM);
        theCityCode.setText(xmlData);
        element.addChild(theCityCode);
//        OMElement theUserID = fac.createOMElement("theUserID ", namespace);
//        theUserID.setText("");
//        element.addChild(theUserID);
        OMElement resultOM = serviceClient.sendReceive(element);
        String result = resultOM.getFirstElement().getText();
        System.out.println(result);
        return result;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingDataWrapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,67 @@
package com.vci.ubcs.code.wrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.vci.ubcs.code.entity.DockingData;
import com.vci.ubcs.code.vo.pagemodel.DockingDataVO;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
public class DockingDataWrapper extends BaseEntityWrapper<DockingData, DockingDataVO> {
    public static DockingDataWrapper build() {
        return new DockingDataWrapper();
    }
    @Override
    public DockingDataVO entityVO(DockingData entity) {
        DockingDataVO vo = Objects.requireNonNull(BeanUtil.copy(entity, DockingDataVO.class));
        return vo;
    }
    /***
     * æ•°ç»„对象转换
     * @param entitys
     * @return
     */
    public List<DockingDataVO> entityVOs(Collection<DockingData> entitys) {
        if(CollectionUtils.isEmpty(entitys)) {return new ArrayList<>();}
        List<DockingDataVO> vos=new ArrayList<>();
        if(!CollectionUtils.isEmpty(entitys)) {
            entitys.stream().forEach(vo -> {
                vos.add(entityVO(vo));
            });
        }
        return vos;
    }
    /***
     * æ•°ç»„对象转换
     * @param vos
     * @return
     */
    public List<DockingData> voentitys(Collection<DockingDataVO> vos) {
        if(CollectionUtils.isEmpty(vos)) {return new ArrayList<>();}
        List<DockingData>entitys =new ArrayList<>();
        if(!CollectionUtils.isEmpty(vos)) {
            vos.stream().forEach(entity -> {
                entitys.add(voentity(entity));
            });
        }
        return entitys;
    }
    /***
     * æ•°ç»„对象转换
     * @param vo
     * @return
     */
    public DockingData voentity( DockingDataVO vo) {
        DockingData entity = Objects.requireNonNull(BeanUtil.copy(vo, DockingData.class));
        return entity;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingDataMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.vci.ubcs.code.mapper.DockingDataMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="plDockingDataResultMap" type="com.vci.ubcs.code.entity.DockingData">
        <result column="OID" property="oid"/>
        <result column="REVISIONOID" property="revisionOid"/>
        <result column="NAMEOID" property="nameOid"/>
        <result column="BTMNAME" property="btmName"/>
        <result column="LASTR" property="lastR"/>
        <result column="FIRSTR" property="firstR"/>
        <result column="LASTV" property="lastV"/>
        <result column="FIRSTV" property="firstV"/>
        <result column="CREATOR" property="creator"/>
        <result column="CREATETIME" property="createTime"/>
        <result column="LASTMODIFIER" property="lastModifier"/>
        <result column="LASTMODIFYTIME" property="lastModifyTime"/>
        <result column="REVISIONRULE" property="revisionRule"/>
        <result column="VERSIONRULE" property="versionRule"/>
        <result column="REVISIONSEQ" property="revisionSeg"/>
        <result column="REVISIONVALUE" property="revisionValue"/>
        <result column="VERSIONSEQ" property="versionSeq"/>
        <result column="VERSIONVALUE" property="versionValue"/>
        <result column="LCTID" property="lctid"/>
        <result column="LCSTATUS" property="lcStatus"/>
        <result column="TS" property="ts"/>
        <result column="ID" property="id"/>
        <result column="NAME" property="name"/>
        <result column="DESCRIPTION" property="description"/>
        <result column="OWNER" property="owner"/>
        <result column="COPYFROMVERSION" property="copyFromVersion"/>
        <result column="UNIQUECODE" property="uniqueCode"/>
        <result column="CLASSIFYOID" property="classifyOid"/>
        <result column="BTMOID" property="btmOid"/>
        <result column="BTMID" property="btmId"/>
        <result column="SENDTYPE" property="sendType"/>
        <result column="SENDFLAG" property="sendFlag"/>
        <result column="CLASSIFYID" property="classifyId"/>
        <result column="CLASSIFYNAME" property="classifyName"/>
    </resultMap>
</mapper>
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllDmMapperProcessor.java
@@ -65,7 +65,7 @@
    public String getColumnTypeSql(VciFieldTypeEnum fieldType, BtmTypeAttributeVO attributeVO) {
        DdlFieldMappingAttrBO mappingBO = getMappingBO(fieldType);
        if (fieldType.equals(VciFieldTypeEnum.VTDouble)) {
            mappingBO.setDataPrecision(attributeVO.getPrecisionLength());
            mappingBO.setDataPrecision(attributeVO.getPrecisionLength() == -1 ? 8 : attributeVO.getPrecisionLength());
        }
        //先只针对数字类型的进行处理
        if (fieldType.equals(VciFieldTypeEnum.VTInteger) ){
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/service/impl/DdlServiceImpl.java
@@ -1007,7 +1007,7 @@
                }
                return R.fail(e.getMessage());
            }catch (ServiceException e2){
                throw new RuntimeException(e2.getMessage());
                return R.fail(e.getMessage());
            }
        }
    }
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/BtmTypeMapper.java
@@ -109,5 +109,4 @@
     */
    @InterceptorIgnore(tenantLine = "1")
    Long batchInsert(@Param("records") List<BtmType> records);
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmAttributeServiceImpl.java
@@ -107,7 +107,7 @@
            attributesDTOList.stream().forEachOrdered(s -> {
                attributeService.checkAttribute(s);
                btmTypeAttributeDOList.add(BtmTypeAttributeWrapper.build().copyBtmTypeAttributeDTO2Entity(s,btmTypeOid, creator, now));
                attributeIdList.add(s.getId().toLowerCase().trim());
                attributeIdList.add(s.getId().trim());
            });
            //检查属性是否都存在
            boolean exists = attributeService.checkAttributeExists(attributeIdList);
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java
@@ -204,7 +204,7 @@
     */
    @Override
    public List<BtmType> listBtmTypeDOByIdCollection(Collection<String> idCollection) throws ServiceException {
        return CollectionUtils.isEmpty(idCollection) ? null : baseMapper.selectList(Wrappers.<BtmType>query().lambda().in(BtmType::getId, idCollection));
        return CollectionUtils.isEmpty(idCollection) ? null : baseMapper.selectByIdCollection(idCollection);
    }
    /**
@@ -595,11 +595,14 @@
        if (btmTypeDTO.getId().length() > 24) {
            throw new VciBaseException("业务类型英文名称不能超过18,目前长度为{0}", new Object[]{btmTypeDTO.getId().length()});
        }
        List<BtmType> btmTypeDOList = listBtmTypeDOByIdCollection(VciBaseUtil.str2List(btmTypeDTO.getId()));
        List<BtmType> btmTypeDOList = listBtmTypeDOByIdCollection(VciBaseUtil.str2List(btmTypeDTO.getId().toLowerCase(Locale.ROOT)));
        if (!CollectionUtils.isEmpty(btmTypeDOList) && btmTypeDOList.size() > 0) {
            boolean exist = btmTypeDOList.stream().filter(btm -> StringUtils.isNotBlank(btm.getOid())).anyMatch(btm -> !StringUtils.equals(btmTypeDTO.getOid(), btm.getOid()));
            BtmType existBtmType = btmTypeDOList.get(0);
            throw new VciBaseException("业务类型英文名称已经存在(不区分大小写),这个英文名称对应的中文名称为{0},创建人{1},创建时间{2}"
                , new Object[]{existBtmType.getName(), existBtmType.getCreator(), VciDateUtil.date2Str(existBtmType.getCreateTime(), VciDateUtil.DateFormat)});
            if (exist) {
                throw new VciBaseException("业务类型英文名称已经存在(不区分大小写),这个英文名称对应的中文名称为{0},创建人{1},创建时间{2}"
                    , new Object[]{existBtmType.getName(), existBtmType.getCreator(), VciDateUtil.date2Str(existBtmType.getCreateTime(), VciDateUtil.DateFormat)});
            }
        }
        if (btmTypeDTO.isRevisionFlag()){
            // éœ€è¦æŽ§åˆ¶ç‰ˆæœ¬
Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/BtmTypeAttributeMapper.xml
@@ -45,7 +45,7 @@
            update <include refid="tableName"/> set
                id = #{item.id,jdbcType=VARCHAR},
                name = #{item.name,jdbcType=VARCHAR},
                descrption = #{item.decription,jdbcType=VARCHAR},
                description = #{item.description,jdbcType=VARCHAR},
                pk_btm_type = #{item.pkBtmType,jdbcType=VARCHAR},
                attribute_length = #{item.attributeLength,jdbcType=DECIMAL},
                attr_data_type = #{item.attrDataType,jdbcType=VARCHAR},