fujunling
2023-07-13 b7109e4207f06461308e053a4d70ef78053d6cce
Merge branch 'master' of http://dev.vci-tech.com:1065/r/ubcs
已修改14个文件
已添加6个文件
1253 ■■■■■ 文件已修改
Source/UBCS-WEB/src/components/Tree/classifyTreeform.vue 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/Tree/classifyTrees.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/Business.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue 239 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/classify/NodeClassifyDTO.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/classify/NodeDataDTO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/classify/NodeLibraryDTO.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/NodeJosnDTO.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/NodeObjectDTO.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/NodeProDTO.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/NodedataDTO.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/data.json 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/result.json 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/result/ResultNodeDataDTO.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/result/ResultNodeObjectDTO.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingSystemConfig.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/sysIntegrationPushTypeEnum.java 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingSyncServiceImpl.java 435 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/Tree/classifyTreeform.vue
@@ -333,36 +333,33 @@
    }
  },
  watch:{
    nodeClickList:{
      handler(newval,oldval){
        console.log('newVal',newval,oldval)
      },
      deep:true,
      immediate:true
    },
    TreeFlag:{
      handler(newval,oldval){
        console.log('树状态',newval,oldval)
      },
      deep:true,
      immediate:true
    }
  },
  created() {
  },
  methods: {
    submits(form,done){
      TreeEditSave(this.loneTreeNewForm).then(res=>{
        this.$message.success('修改成功');
        this.Editclose()
        this.$emit('referTreeForm');
        this.$emit('flushed');
        done()
      })
      if(this.TreeFlag){
        TreeEditSave(this.loneTreeNewForm).then(res=>{
          this.$message.success('修改成功');
          this.Editclose()
          this.$emit('referTreeForm');
          this.$emit('flushed');
          done()
        })
      }else {
        this.loneTreeNewForm.btmTypeName='';
        this.loneTreeNewForm.btmTypeId='';
        TreeEditSave(this.loneTreeNewForm).then(res=>{
          this.$message.success('修改成功');
          this.Editclose()
          this.$emit('referTreeForm');
          this.$emit('flushed');
          done()
        })
      }
    },
    error(err) {
      this.$message.success('请查看控制台');
      console.log(err)
      this.$message.success(err);
    },
    //编码规则查询
    SelectFindeHandler(){
@@ -399,7 +396,6 @@
        this.$set(this.loneTreeNewForm,'coderuleoidName',this.masterName)
        this.$set(this.loneTreeNewForm,'coderuleoid',this.masterOid)
        this.$emit('MasterHandler',this.loneTreeNewForm)
        // console.log(this.loneTreeNewForm)
      }
    },
    //编码多选
@@ -407,7 +403,6 @@
      this.masterSelectList=row;
      this.masterName=row[0].name;
      this.masterOid=row[0].oid;
      // console.log('oid',this.oid)
    },
    //编码接口
    MasterdefaultRend(masterParameter){
@@ -437,7 +432,6 @@
        this.$set(this.loneTreeNewForm,'codekeyattrrepeatoidName',this.KeyName)
        this.$set(this.loneTreeNewForm,'codekeyattrrepeatoid',this.KeyOid)
        this.$emit('MasterHandler',this.loneTreeNewForm)
        console.log(this.loneTreeNewForm)
      }
    },
    //关键属性查询
@@ -516,7 +510,6 @@
      this.simSelectList=row;
      this.simName=row[0].name;
      this.simOid=row[0].oid;
      console.log('oid',this.oid)
    },
    //相似项项接口
    simdefaultRend(){
@@ -574,7 +567,6 @@
    //业务类型接口
    btmdefaultRend(masterParameter){
      referDataGrid({valueField:'id',isMuti:'false',...masterParameter}).then(res=>{
        // console.log(res)
        this.BtmData=res.data.data.records
      })
    }
Source/UBCS-WEB/src/components/Tree/classifyTrees.vue
@@ -749,7 +749,6 @@
        this.$set(this.TreeAddform,'codeRuleOidName',this.masterName)
        this.$set(this.TreeAddform,'codeRuleOid',this.masterOid)
        this.$emit('MasterHandler',this.loneTreeNewForm)
        console.log(this.loneTreeNewForm)
      }
    },
    //编码接口
@@ -777,7 +776,6 @@
        this.KeySelectLIst=[]
        this.$set(this.TreeAddform,'codeKeyAttrRepeatOidName',this.KeyName)
        this.$set(this.TreeAddform,'codeKeyAttrRepeatOid',this.KeyOid)
        console.log(this.TreeAddform)
      }
    },
    //关键属性查询
@@ -856,7 +854,6 @@
      this.simSelectList=row;
      this.simName=row[0].name;
      this.simOid=row[0].oid;
      console.log('oid',this.oid)
    },
    //相似项项接口
    simdefaultRend(){
@@ -973,7 +970,6 @@
      const data = this.TreeAddform;
      // data.btmtypename= this.TreeList.btmtypename
      this.$set(data, "parentCodeClassifyOid", this.nodeClickList.oid);
      console.log("data", data);
      TreeSave(data)
        .then(() => {
          this.$message({
@@ -1058,7 +1054,6 @@
        });
      } else {
        this.TreeEditFormVisible = true;
        console.log(this.TreeList)
      }
    },
    //树刷新
@@ -1149,7 +1144,6 @@
              this.codeClassifyOid = item.codeclassifyoid
              return item.codeclassifyoid == this.nodeClickList.oid
            }
            console.log('Formlist',this.Formlist)
          })
        }).catch(res => {
          this.$message.error(res)
@@ -1242,7 +1236,6 @@
          });
        })
      }
      console.log('123',this.codeClassifyOid)
    },
    //模板管理修改
    CrudRowUpdata(row,index,done) {
Source/UBCS-WEB/src/views/modeling/Business.vue
@@ -82,7 +82,7 @@
                  <i :class="icons.revisionRule"></i>
                  ç‰ˆæœ¬è§„则
                </template>
                {{ obj.revisionRuleName }}
                {{ obj.revisionRuleName + '(' + obj.revisionRuleId + ')' }}
              </el-descriptions-item>
              <el-descriptions-item :labelStyle="descriptionOption.labelStyle"
                :contentStyle="descriptionOption.contentStyle">
@@ -90,7 +90,7 @@
                  <i :class="icons.lifeCycle"></i>
                  ç”Ÿå‘½å‘¨æœŸ
                </template>
                {{ obj.lifeCycleId }}
                {{ obj.lifeCycleName + '(' + obj.lifeCycleId + ')' }}
              </el-descriptions-item>
              <el-descriptions-item :labelStyle="descriptionOption.labelStyle"
                :contentStyle="descriptionOption.contentStyle">
Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue
@@ -32,7 +32,7 @@
        </el-input>
      </el-form-item>
      <el-form-item label="生命周期" label-width="100px">
        <el-input v-model="btmType.lifeCycleId" :prefix-icon="icons.lifeCycle">
        <el-input v-model="btmType.lifeCycleName" :prefix-icon="icons.lifeCycle" class="lifeCycle" @focus="openLifeCycle" clearable @clear="clearLifeCycle">
          <i slot="suffix" class="el-input__icon el-icon-search"></i>
        </el-input>
      </el-form-item>
@@ -118,7 +118,10 @@
                 :data="revisionRef.data"
                 :page.sync="revisionRef.page"
                 ref="revisionRef"
                 @row-click="revisionClick">
                 @row-click="revisionClick"
                 v-loading="revisionRef.loading"
                @search-change="searchRevisionRule"
                 @search-reset="clearSearchRevisionRule">
        <template slot="radio"
                  slot-scope="{row}">
          <el-radio v-model="revisionRef.selectRow"
@@ -131,7 +134,37 @@
        <el-button @click="cancelRevision">取消</el-button>
      </div>
    </el-dialog>
    <!-- ç”Ÿå‘½å‘¨æœŸçš„参照 -->
    <el-dialog title="请选择生命周期"
               :visible.sync="lifeCycleRef.visible"
               append-to-body
               width="80%">
      <avue-crud class="lifeCycleRef"
                 :option="lifeCycleRef.option"
                 :data="lifeCycleRef.data"
                 :page.sync="lifeCycleRef.page"
                 ref="lifeCycleRef"
                 @row-click="lifeCycleClick"
                 v-loading="lifeCycleRef.loading"
                @search-change="searchLifeCycle"
                 @search-reset="clearSearchLifeCycle">
        <template slot="radio"
                  slot-scope="{row}">
          <el-radio v-model="lifeCycleRef.selectRow"
                    :label="row.$index">&nbsp;
          </el-radio>
        </template>
      </avue-crud>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="confirmLifeCycle">确定</el-button>
        <el-button @click="cancelLifeCycle">取消</el-button>
      </div>
    </el-dialog>
  </el-dialog>
</template>
@@ -140,6 +173,7 @@
import {add, update} from '@/api/omd/btmType';
import {queryPage} from '@/api/omd/OmdAttribute';
import {getPage} from '@/api/omd/revisionRule';
import {getList} from '@/api/modeling/cycle';
export default {
  name: 'BusinessAdd',
@@ -287,6 +321,71 @@
          currentPage: 1,
          pageSize: 10
        },
        loading: false,
        selectRow: '',
        searchKey: null,
        option: {
          height: 360,
          addBtn: false,
          refreshBtn: false,
          columnBtn: false,
          menu: false,
          border: true,
          reserveSelection: true,
          searchMenuSpan: 8,
          searchShowBtn: false,
          highlightCurrentRow: true,
          column: [{
            label: '选择',
            prop: 'radio',
            width: 60,
            hide: false
          },
            {
              label: '英文名称',
              prop: 'id',
              search: true
            },
            {
              label: "中文名称",
              prop: "name",
              search: true,
            },
            {
              label: "跳跃字符",
              prop: "skipCode"
            },
            {
              label: "初始值",
              prop: "startCode"
            },
            {
              label: "步长",
              prop: "serialStep"
            },
            {
              label: "前缀",
              prop: "prefixCode"
            },
            {
              label: "后缀",
              prop: "suffixCode"
            },
            {
              label: "描述",
              prop: "description",
              type: "textarea"
            }
          ]
        },
      },
      lifeCycleRef: {
        visible: false,
        page: {
          currentPage: 1,
          pageSize: 10
        },
        loading: false,
        selectRow: '',
        searchKey: null,
        option: {
@@ -506,22 +605,48 @@
      row.$cellEdit = false;
    },
    // æ‰“开版本规则参照
    async openRevision() {
      await getPage().then(res => {
     openRevision() {
      this.revisionRef.visible = true;
      this.revisionRuleOnLoad();
    },
    // ç‰ˆæœ¬å‚照列表的默认查询方法
    revisionRuleOnLoad(){
      this.revisionRef.loading = true;
      getPage().then(res => {
        this.revisionRef.data = res.data.data.records;
      });
      this.revisionRef.visible = true;
      setTimeout(() => {
        this.revisionRef.loading = false;
      }, 600)
      this.$nextTick(() => {
        this.$refs.revisionRef.refreshTable();
      });
    },
    // æ‰“开版本规则参照
    openLifeCycle() {
      this.lifeCycleRef.visible = true;
      this.lifeCycleOnLoad();
    },
    // ç”Ÿå‘½å‘¨æœŸåˆ—表的默认查询方法
    lifeCycleOnLoad(){
      this.lifeCycleRef.loading = true;
      getList().then(res => {
        this.lifeCycleRef.data = res.data.data.records;
      });
      setTimeout(() => {
        this.lifeCycleRef.loading = false;
      }, 600)
      this.$nextTick(() => {
        this.$refs.lifeCycleRef.refreshTable();
      });
    },
    // å…³é—­ç‰ˆæœ¬è§„则参照弹窗
    closeRevisionDialog() {
      this.revisionRef.visible = false;
    },
    // ç‰ˆæœ¬è§„则参照列表检索
    revisionRefSearch() {
    },
    // ç‰ˆæœ¬è§„则选中事件
    revisionChange() {
    // å…³é—­ç”Ÿå‘½å‘¨æœŸå‚照弹窗
    closeLifeCycleDialog() {
      this.lifeCycleRef.visible = false;
    },
    // ç¡®è®¤é€‰ä¸­ç‰ˆæœ¬è§„则
    confirmRevision() {
@@ -531,11 +656,24 @@
      this.btmType.inputRevisionFlag = false;
      this.cancelRevision();
    },
    // ç¡®è®¤é€‰ä¸­ç”Ÿå‘½å‘¨æœŸ
    confirmLifeCycle() {
      this.btmType.lifeCycleFlag = true;
      this.btmType.lifeCycleId = this.lifeCycleRef.selectData.id;
      this.btmType.lifeCycleName = this.lifeCycleRef.selectData.name;
      this.cancelLifeCycle();
    },
    // å–消选中版本规则
    cancelRevision() {
      this.revisionRef.selectRow = '';
      this.revisionRef.selectData = {};
      this.closeRevisionDialog();
    },
    // å–消选中生命周期
    cancelLifeCycle() {
      this.lifeCycleRef.selectRow = '';
      this.lifeCycleRef.selectData = {};
      this.closeLifeCycleDialog();
    },
    // ç‰ˆæœ¬è§„则单选
    revisionClick(row) {
@@ -545,15 +683,90 @@
        name: row.name,
      };
    },
    // ç”Ÿå‘½å‘¨æœŸå•选
    lifeCycleClick(row) {
      this.lifeCycleRef.selectRow = row.$index;
      this.lifeCycleRef.selectData = {
        id: row.id,
        name: row.name,
      };
    },
    // å–消版本规则
    clearRevision() {
      this.$delete(this.btmType, 'revisionFlag');
      this.$delete(this.btmType, 'revisionRuleId');
      this.$delete(this.btmType, 'revisionRuleName');
      this.$delete(this.btmType, 'inputRevisionFlag');
    },
    // å–消生命周期
    clearLifeCycle() {
      this.$delete(this.btmType, 'lifeCycleFlag');
      this.$delete(this.btmType, 'lifeCycleId');
      this.$delete(this.btmType, 'lifeCycleName');
    },
    // è¡¨å•重置
    resetForm() {
      this.btmType = {};
      this.$refs.form.resetFields();
    },
    /**
     * æœç´¢ç‰ˆæœ¬è§„则
     * @param params æœç´¢æ¡†è¾“入值  {id: '',name: ''} ç›´æŽ¥èŽ·å–å°±è¡Œ
     * @param done æ‰§è¡Œå®ŒæˆåŽçš„回调
     */
    searchRevisionRule(params,done){
      let condition = {};
      if (params.id){
          condition['id_like'] = params.id;
      }
      if (params.name){
          condition['name_like'] = params.name;
      }
      this.revisionRef.loading = true;
      getPage(this.revisionRef.page.currentPage,this.revisionRef.page.pageSize,condition).then(res => {
        this.revisionRef.data = res.data.data.records;
      });
      setTimeout(() => {
        done();
        this.revisionRef.loading = false;
      }, 600);
      this.$nextTick(() => {
        this.$refs.revisionRef.refreshTable();
      });
    },
    /**
     * æœç´¢ç”Ÿå‘½å‘¨æœŸ
     * @param params æœç´¢æ¡†è¾“入值
     * @param done æ‰§è¡Œå®ŒæˆåŽçš„回调
     */
    searchLifeCycle(params,done){
      let condition = {};
      if (params.id){
        condition['id_like'] = params.id;
      }
      if (params.name){
        condition['name_like'] = params.name;
      }
      this.lifeCycleRef.loading = true;
      getList(this.lifeCycleRef.page.currentPage,this.lifeCycleRef.page.pageSize,condition).then(res => {
        this.lifeCycleRef.data = res.data.data.records;
      });
      setTimeout(() => {
        done();
        this.lifeCycleRef.loading = false;
      }, 600);
      this.$nextTick(() => {
        this.$refs.lifeCycleRef.refreshTable();
      });
    },
    // å–消版本规则搜索
    clearSearchRevisionRule(item){
      this.revisionRuleOnLoad();
    },
    // å–消生命周期搜索
    clearSearchLifeCycle(item){
      this.lifeCycleOnLoad();
      console.log(item);
    }
  }
}
@@ -569,6 +782,10 @@
  display: none !important;
}
.lifeCycleRef > .el-card:nth-of-type(2) > .el-card__body > .avue-crud__menu {
  display: none !important;
}
.btmTypeForm > .el-form-item > .el-form-item__content > .el-input > .el-input__inner {
  width: 200px;
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/classify/NodeClassifyDTO.java
@@ -1,44 +1,44 @@
package com.vci.ubcs.code.dto.datapush.classify;
//import com.thoughtworks.xstream.annotations.XStreamAlias;
//import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
//@XStreamAlias("classify")
@XStreamAlias("classify")
public class NodeClassifyDTO {
        /**
         * åˆ†ç±»id
         */
        //@XStreamAsAttribute
        @XStreamAsAttribute
        private String id;
        /***
         * åˆ†ç±»åç§°
         */
        //@XStreamAsAttribute
        @XStreamAsAttribute
        private String name;
        /***
         * çˆ¶èŠ‚ç‚¹id
         */
       // @XStreamAsAttribute
        @XStreamAsAttribute
        private String pid;
        /***
         * åˆ†ç±»ä»£å·
         */
        //@XStreamAsAttribute
       @XStreamAsAttribute
        private String classCode;
        /***
         * æè¿°
         */
        //@XStreamAsAttribute
        @XStreamAsAttribute
        private  String description;
        /***
         * åˆ†ç±»é“¾æŽ¥è·¯å¾„
         */
        //@XStreamAsAttribute
        @XStreamAsAttribute
        private  String fullPathName;
        /***
         * åˆ†ç±»çŠ¶æ€
         */
        //@XStreamAsAttribute
        @XStreamAsAttribute
        private String lcStatus;
        public String getId() {
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/classify/NodeDataDTO.java
@@ -1,8 +1,8 @@
package com.vci.ubcs.code.dto.datapush.classify;
//import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAlias;
//@XStreamAlias("data")
@XStreamAlias("data")
public class NodeDataDTO {
    private NodeLibraryDTO library;
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/classify/NodeLibraryDTO.java
@@ -1,14 +1,20 @@
package com.vci.ubcs.code.dto.datapush.classify;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import com.thoughtworks.xstream.annotations.XStreamImplicit;
import java.util.List;
//@XStreamAlias("library")
@XStreamAlias("library")
public class NodeLibraryDTO {
    //@XStreamAsAttribute
    @XStreamAsAttribute
    private String id;
    //@XStreamAsAttribute
    @XStreamAsAttribute
    private String name;
    //@XStreamImplicit
    @XStreamAsAttribute
    private String classCode;
   @XStreamImplicit
    private List<NodeClassifyDTO> classify;
    public String getId() {
@@ -35,12 +41,21 @@
        this.classify = classify;
    }
    @Override
    public String toString() {
        return "NodeLibraryDTO{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", classify=" + classify +
                '}';
    }
    public String getClassCode() {
        return classCode;
    }
    public void setClassCode(String classCode) {
        this.classCode = classCode;
    }
    @Override
    public String toString() {
        return "NodeLibraryDTO{" +
            "id='" + id + '\'' +
            ", name='" + name + '\'' +
            ", classCode='" + classCode + '\'' +
            ", classify=" + classify +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/NodeJosnDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.vci.ubcs.code.dto.datapush.data;
public class NodeJosnDTO {
    private NodedataDTO data;
    public NodedataDTO getData() {
        return data;
    }
    public void setData(NodedataDTO data) {
        this.data = data;
    }
    @Override
    public String toString() {
        return "NodeJosnDTO{" +
                "data=" + data +
                '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/NodeObjectDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
package com.vci.ubcs.code.dto.datapush.data;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import com.thoughtworks.xstream.annotations.XStreamImplicit;
import java.util.List;
@XStreamAlias("object")
public class NodeObjectDTO {
    @XStreamAsAttribute
   private String  code="" ;
    @XStreamAsAttribute
    private String status="" ;
    @XStreamAsAttribute
    private String library="";
    @XStreamAsAttribute
    private String classCode="";
    @XStreamImplicit
    private List<NodeProDTO> pro;
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
    public String getLibrary() {
        return library;
    }
    public void setLibrary(String library) {
        this.library = library;
    }
    public String getClassCode() {
        return classCode;
    }
    public void setClassCode(String classCode) {
        this.classCode = classCode;
    }
    public List<NodeProDTO> getPro() {
        return pro;
    }
    public void setPro(List<NodeProDTO> pro) {
        this.pro = pro;
    }
    @Override
    public String toString() {
        return "NodeObjectDTO{" +
                "code='" + code + '\'' +
                ", status='" + status + '\'' +
                ", library='" + library + '\'' +
                ", classCode='" + classCode + '\'' +
                ", pro=" + pro +
                '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/NodeProDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
package com.vci.ubcs.code.dto.datapush.data;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
@XStreamAlias("pro")
public class NodeProDTO {
    @XStreamAsAttribute
    private String filedName;
    @XStreamAsAttribute
    private String outname;
    @XStreamAsAttribute
    private String filedValue;
    public String getFiledName() {
        return filedName;
    }
    public void setFiledName(String filedName) {
        this.filedName = filedName;
    }
    public String getOutname() {
        return outname;
    }
    public void setOutname(String outname) {
        this.outname = outname;
    }
    public String getFiledValue() {
        return filedValue;
    }
    public void setFiledValue(String filedValue) {
        this.filedValue = filedValue;
    }
    @Override
    public String toString() {
        return "NodeProDTO{" +
                "filedName='" + filedName + '\'' +
                ", outname='" + outname + '\'' +
                ", filedValue='" + filedValue + '\'' +
                '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/NodedataDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
package com.vci.ubcs.code.dto.datapush.data;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamImplicit;
import java.util.List;
@XStreamAlias("data")
public class NodedataDTO {
    @XStreamImplicit
    private List<NodeObjectDTO> object;
    public List<NodeObjectDTO> getObject() {
        return object;
    }
    public void setObject(List<NodeObjectDTO> object) {
        this.object = object;
    }
    @Override
    public String toString() {
        return "NodedataDTO{" +
                "object=" + object +
                '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/data.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,137 @@
{
  "data": {
    "object": {
      "code": "0201040133",
      "status": "Released",
      "library": "wupin",
      "classCode": "020104",
      "pro": [
        {
          "filedName": "xbj",
          "outname": "标记"
        },
        {
          "filedName": "xinghaoguige",
          "outname": "规格",
          "filedValue": "M4"
        },
        {
          "filedName": "lastmodifier",
          "outname": "最后修改人",
          "filedValue": "weidy(魏大勇)"
        },
        {
          "filedName": "cpxs",
          "outname": "产品型式"
        },
        {
          "filedName": "secondfl",
          "outname": "二级管理分类",
          "filedValue": "紧固件"
        },
        {
          "filedName": "clph",
          "outname": "材料牌号",
          "filedValue": "HB1-24321"
        },
        {
          "filedName": "thrifl",
          "outname": "三级管理分类",
          "filedValue": "螺钉"
        },
        {
          "filedName": "xbzjbmc",
          "outname": "标准级别名称"
        },
        {
          "filedName": "firstfl",
          "outname": "一级管理分类",
          "filedValue": "标准件"
        },
        {
          "filedName": "xgzccdgcd",
          "outname": "关注尺寸的公差带"
        },
        {
          "filedName": "zjxh",
          "outname": "子件序号"
        },
        {
          "filedName": "bmcl",
          "outname": "表面处理",
          "filedValue": "电镀"
        },
        {
          "filedName": "id",
          "outname": "物料编码",
          "filedValue": "0201040133"
        },
        {
          "filedName": "createtime",
          "outname": "创建时间",
          "filedValue": "2022-12-23 17:12:50.635"
        },
        {
          "filedName": "creator",
          "outname": "创建人",
          "filedValue": "weidy(魏大勇)"
        },
        {
          "filedName": "xwlwwmc",
          "outname": "物品外文名称"
        },
        {
          "filedName": "xxndj",
          "outname": "性能等级"
        },
        {
          "filedName": "xzjmc",
          "outname": "子件名称"
        },
        {
          "filedName": "beizhushuoming",
          "outname": "备注说明"
        },
        {
          "filedName": "revisionvalue",
          "outname": "版本",
          "filedValue": "1"
        },
        {
          "filedName": "name",
          "outname": "物品中文名称",
          "filedValue": "半圆头螺钉1"
        },
        {
          "filedName": "xfjjstj",
          "outname": "附加技术条件"
        },
        {
          "filedName": "xbxkxs",
          "outname": "保险孔型式",
          "filedValue": "无"
        },
        {
          "filedName": "lastmodifytime",
          "outname": "最后修改时间",
          "filedValue": "2022-12-23 17:12:50.635"
        },
        {
          "filedName": "zhiliangbz",
          "outname": "标准号",
          "filedValue": "HB1-2431-M4*512"
        },
        {
          "filedName": "materialclassify",
          "outname": "所属分类代号",
          "filedValue": "020104"
        },
        {
          "filedName": "lcstatus",
          "outname": "状态",
          "filedValue": "Released"
        }
      ]
    }
  }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/result.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
{
  "data": {
    "object": {
      "code": "0201040133",
      "oid": "0000001",
      "erroid": "0",
      "msg": "测试成功"
    }
  }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/result/ResultNodeDataDTO.java
@@ -1,14 +1,14 @@
package com.vci.ubcs.code.dto.datapush.result;
//import com.thoughtworks.xstream.annotations.XStreamAlias;
//import com.thoughtworks.xstream.annotations.XStreamImplicit;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamImplicit;
import java.util.List;
//@XStreamAlias("data")
@XStreamAlias("data")
public class ResultNodeDataDTO {
    //@XStreamImplicit
    @XStreamImplicit
    private List<ResultNodeObjectDTO> object;
    public List<ResultNodeObjectDTO> getObject() {
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/result/ResultNodeObjectDTO.java
@@ -1,29 +1,29 @@
package com.vci.ubcs.code.dto.datapush.result;
//import com.thoughtworks.xstream.annotations.XStreamAlias;
//import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
//@XStreamAlias("object")
@XStreamAlias("object")
public class ResultNodeObjectDTO {
    /***
     * æ•°æ®ç¼–码
     */
    //@XStreamAsAttribute
    @XStreamAsAttribute
    private  String code;
    /***
     * æ•°æ®oid
     */
    //@XStreamAsAttribute
    @XStreamAsAttribute
    private  String oid;
    /***
     * é”™è¯¯æ ‡è¯†
     */
    //@XStreamAsAttribute
   @XStreamAsAttribute
    private String erroid;
    /***
     * é”™è¯¯ä¿¡æ¯
     */
    //@XStreamAsAttribute
    @XStreamAsAttribute
    private String msg;
    public String getCode() {
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingSystemConfig.java
@@ -286,7 +286,7 @@
    /***
     *  æŽ¨é€ç±»åž‹ 1:数据推送,2分类推送,默认数据推送,3:编码申请,4:编码更改(更改、状态,回收),5:分类查询,6:含规则信息的分类查询,7:数据查询
     */
    @ApiModelProperty(value = "推送类型 1:数据推送,2分类推送,默认数据推送,3:编码申请,4:编码更改(更改、状态,回收),5:分类查询,6:含规则信息的分类查询,7:数据查询")
    @ApiModelProperty(value = "推送类型 1:数据推送,2分类推送,3:编码申请,4:编码更改(状态,回收),5:分类查询,6:含规则信息的分类查询,7:数据查询")
    private String pushType;
    /***
     * æŽ¨é€ç±»åž‹æ˜¾ç¤ºå€¼
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/sysIntegrationPushTypeEnum.java
@@ -8,13 +8,37 @@
@VciEnum(name = MdmEnumIdConstant.SYS_INTEGRATION_PUSH_TYPE,text = "系统接口推送方式",description = "")
public enum sysIntegrationPushTypeEnum implements BaseEnum {
    /**
     * åˆ†ç±»æŽ¨é€æ–¹å¼
     * æ•°æ®æŽ¨é€
     */
    JSON("1","数据推送"),
    PUSHTYPE_DATA("1","数据推送"),
    /**
     * Xml格式
     * åˆ†ç±»æŽ¨é€
     */
    XML("2","分类推送");
    PUSHTYPE_CLASSIFY("2","分类推送"),
    /***
     * ç¼–码申请
     */
    ACCPET_APPCODE("3","编码申请"),
    /***
     * ç¼–码维护
     */
    ACCPET_EDITCODE("4","编码维护"),
    /***
     * åˆ†ç±»æŸ¥è¯¢
     */
    ACCPET_QUERYCLAFILY("5","分类查询"),
    /***
     * å«ç¼–码规则的分类查询
     */
    ACCPET_QUERYCLAFILYRULE("6","含编码规则的分类查询"),
    /***
     * æ•°æ®æŸ¥è¯¢
     */
    ACCPET_QUERYDATA("7","数据查询");
    /**
     * æžšä¸¾çš„值
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingSyncServiceImpl.java
@@ -2,19 +2,44 @@
import com.alibaba.cloud.commons.lang.StringUtils;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
import com.vci.ubcs.code.constant.MdmDuckingConstant;
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.data.NodeJosnDTO;
import com.vci.ubcs.code.dto.datapush.data.NodeObjectDTO;
import com.vci.ubcs.code.dto.datapush.data.NodeProDTO;
import com.vci.ubcs.code.dto.datapush.data.NodedataDTO;
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.service.*;
import com.vci.ubcs.starter.web.constant.QueryOptionConstant;
import com.vci.ubcs.code.util.HttpUtils;
import com.vci.ubcs.code.util.WsErpClientUtil;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
import com.vci.ubcs.starter.web.enumpck.UserSecretEnum;
import com.vci.ubcs.starter.web.pagemodel.SessionInfo;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import com.vci.ubcs.starter.web.util.VciQueryWrapperForDO;
import com.vci.ubcs.starter.web.util.WebUtil;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.redis.cache.BladeRedis;
import org.springblade.core.tool.api.R;
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.*;
@@ -32,10 +57,15 @@
@Service
@Slf4j
public class CodeDuckingSyncServiceImpl implements ICodeDuckingSyncService {
    @Value("${dataSyncPush.dataParamName:xmlData}")
    public String DATA_PARAM_NAME;
    @Resource
    private  IDockingSystemService dockingSystemService;
    private  MdmEngineService  mdmEngineServiceI;
    @Resource
    private IDockingLogeService dockingLogeService;
    @Resource
    private IDockingDataService dockingDataService;
    @Resource
@@ -44,26 +74,78 @@
    private IDockingSystemConfigService dockingSystemConfigService;
    @Resource
    private ICodeClassifyService codeClassifyService;
    /***
     * resdis缓存服务
     */
    @Resource
    private BladeRedis bladeRedis;
    @Resource
    private IDockingSysIntParamService dockingSysIntParamService;
    @Resource
    private IDockingSysIntHeaderService dockingSysIntHeaderService;
    @Override
    public void DockingDataSyncScheduing() {
// insertCache2();
        // insertCache2();
        initPushDataTaks(1);
        //sendpushDataForService();
        sendpushDataForService();
    }
    /***
     *
     */
    @Override
    public void DockingClassSyncScheduing() {
        initPushDataTaks(2);//分类推送
        sendpushClsfForService();
    }
    /***
     * æ‰‹åŠ¨åŒæ­¥
     * @param oids
     * @return
     */
    @Transactional(rollbackFor = Throwable.class)
    @Override
    public R sendData(String oids) {
        return null;
        VciBaseUtil.alertNotNull(oids,"系统集成基础信息数据对象",oids,"系统集成基础信息的主键");
        List<String> dockingTaskOidList=new ArrayList<>();
        dockingTaskOidList= VciBaseUtil.str2List(oids);
        List<DockingTask> newDockingTasks= this.dockingTaskService.listByIds(dockingTaskOidList);
        Map<String,List<DockingTask>> typeDockingTaskMap=new HashMap<>();
        newDockingTasks.stream().forEach(newDockingTaskDO->{
            String btmId=newDockingTaskDO.getBtmId();
            if(btmId.equalsIgnoreCase(DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT))){
                List<DockingTask> dockingTaskList= typeDockingTaskMap.get(DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT));
                if(CollectionUtils.isEmpty(dockingTaskList)){
                    dockingTaskList=new ArrayList<>();
                }
                dockingTaskList.add(newDockingTaskDO);
                typeDockingTaskMap.put(DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT),dockingTaskList);
            }else{
                List<DockingTask> dockingTaskDOList= typeDockingTaskMap.get("data");
                if(CollectionUtils.isEmpty(dockingTaskDOList)){
                    dockingTaskDOList=new ArrayList<>();
                }
                dockingTaskDOList.add(newDockingTaskDO);
                typeDockingTaskMap.put("data",dockingTaskDOList);
            }
        });
        typeDockingTaskMap.keySet().forEach(type->{
            List<DockingTask> DockingTaskList=typeDockingTaskMap.get(type);
            if(!CollectionUtils.isEmpty(DockingTaskList)){
                if(type.equalsIgnoreCase(DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT))){
                    this.sendpushClsfForService(DockingTaskList);
                }else{
                    this.sendpushDataForService(DockingTaskList);
                }
            }
        });
        return  R.success("手动推送完成,请核对是否推送成功");
    }
@@ -72,7 +154,7 @@
     * @param type
     */
    private void initPushDataTaks(int type){
        //initSysadmin();
        initSysadmin();
        List<DockingSystemConfig> dockingSystemConfigList = dockingSystemConfigService.list(
            Wrappers.<DockingSystemConfig>query().lambda().eq(DockingSystemConfig::getUsedFlag,"true")
@@ -172,6 +254,337 @@
        }
    }
    /***
     * å‘送分类数据
     */
    private void sendpushClsfForService(List<DockingTask> dockingTaskList){
        //每个task依次执行推送
        for (DockingTask dockingTask:dockingTaskList){
            //每个task一个事务,开启
            String paramString="";
            String sendString="";
            String backString="";
            //查询系统接口信息,ip method,dataType
            String systeminfooid = dockingTask.getSysInfoOid();//sysininfo çš„oid
            try {
                //查询要推送的数据
                String btmoid = dockingTask.getBtmOid();//数据btmid
                JsonRootDataDTO jsonRootDataDTO=new JsonRootDataDTO();
                CodeClassify codeClassify=codeClassifyService.getById(btmoid);
                List<NodeClassifyDTO>nodeClassifyDTOList=new ArrayList<>();
                NodeClassifyDTO nodeClassifyDTO=new NodeClassifyDTO();
                nodeClassifyDTO.setClassCode(codeClassify.getId());//分类代号
                nodeClassifyDTO.setDescription(codeClassify.getDescription());//分类描述
                nodeClassifyDTO.setFullPathName(codeClassify.getPath());//全路径
                nodeClassifyDTO.setLcStatus(codeClassify.getLcStatus());//状态
                //  CodeClassifyDO parentClassDo=codeClassifyDaoI.selectByPrimaryKey(codeClassifyDO.getParentCodeClassifyOid());
                nodeClassifyDTO.setPid(codeClassify.getParentCodeClassifyOid());//父id节点
                nodeClassifyDTO.setId(codeClassify.getOid());//分类oid
                nodeClassifyDTO.setName(codeClassify.getName());//分类名称
                nodeClassifyDTOList.add(nodeClassifyDTO);
                NodeLibraryDTO nodeLibraryDTO=new NodeLibraryDTO();
                CodeClassifyVO rootClassify=codeClassifyService.getTopClassifyVO(btmoid);
                nodeLibraryDTO.setClassify(nodeClassifyDTOList);
                nodeLibraryDTO.setId(rootClassify.getOid());
                nodeLibraryDTO.setName(rootClassify.getName());
                nodeLibraryDTO.setClassCode(rootClassify.getId());
                NodeDataDTO nodeDataDTO=new NodeDataDTO();
                nodeDataDTO.setLibrary(nodeLibraryDTO);
                jsonRootDataDTO.setData(nodeDataDTO);
                //查询推送接口参数
                DockingSystemConfig dockingSystemConfig = dockingSystemConfigService.getById(systeminfooid);
                String paramType = dockingSystemConfig.getParamType();//xml/json
                if(paramType.equals(DATATYPE_JSON)){
                    Object object = JSONObject.toJSON(jsonRootDataDTO);
                    sendString = object.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,dockingSystemConfig,dockingTask);
            }catch (Throwable e){
                e.printStackTrace();
            }finally {
                //每一个task一个事物
            }
        }
    }
    /***
     * å‘送编码主数据
     */
    private void sendpushDataForService (List<DockingTask> dockingTaskS){
        //每个task依次执行推送
        for (DockingTask dockingTask:dockingTaskS){
            //每个task一个事务,开启
            String paramString="";
            String sendString="";
            String backString="";
            try {
                //查询系统接口信息,ip method,dataType
                String systeminfooid = dockingTask.getSysInfoOid();//sysininfo çš„oid
                String classifyoid = dockingTask.getClassifyOid();
                //查询要推送的数据
                String btmoid = dockingTask.getBtmOid();//数据btmid
                //表示是主数据
                CodeClassifyTemplateVO codeClassifyTemplateVO = mdmEngineServiceI.getUsedTemplateByClassifyOid(classifyoid);
                R<List<Map<String, String>>> r = mdmEngineServiceI.getDataByOid(btmoid, codeClassifyTemplateVO.getOid());
                List<CodeClassifyTemplateAttrVO> attrVOS = codeClassifyTemplateVO.getAttributes();
                Map<String/**英文名称**/, String/**中文名称**/> attrIdNameMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t.getName(), (o1, o2) -> o2));
                Map<String, String> data = new HashMap<>();
                if (r == null) {
                    JSONObject josni = bladeRedis.get(DOCKING_CACHE2_DELETE + btmoid);
                    data = (Map) josni;
                } else {
                    data = r.getData().get(0);
                }
                List<NodeProDTO> nodeProDTOS = new ArrayList<>();
                Map<String, String> finalData = data;
                attrIdNameMap.keySet().forEach(field -> {
                    String outName = attrIdNameMap.get(field);
                    if (finalData.containsKey(field)) {
                        String Value = finalData.get(field);
                        NodeProDTO nodeProDTO = new NodeProDTO();
                        nodeProDTO.setFiledName(field);
                        nodeProDTO.setOutname(outName);
                        nodeProDTO.setFiledValue(Value);
                        nodeProDTOS.add(nodeProDTO);
                    }
                });
                String[] classCodeLeves = dockingTask.getClassifyId().split(",");
                NodeJosnDTO nodeJosnDTO = new NodeJosnDTO();
                NodedataDTO nodeDataDTO = new NodedataDTO();
                NodeObjectDTO nodeObjectDTO = new NodeObjectDTO();
                nodeObjectDTO.setCode(dockingTask.getId());//设置编码
                nodeObjectDTO.setClassCode(classCodeLeves[0]);
                nodeObjectDTO.setStatus(data.get("lcstatus"));
                nodeObjectDTO.setLibrary(classCodeLeves[classCodeLeves.length - 1]);
                nodeObjectDTO.setPro(nodeProDTOS);
                List<NodeObjectDTO> nodeObjectDTOS = new ArrayList<>();
                nodeObjectDTOS.add(nodeObjectDTO);
                nodeDataDTO.setObject(nodeObjectDTOS);
                nodeJosnDTO.setData(nodeDataDTO);
                //查询推送接口参数
                DockingSystemConfig dockingSystemConfig = dockingSystemConfigService.getById(systeminfooid);
                String paramType = dockingSystemConfig.getParamType();//xml/json
                if (paramType.equals(DATATYPE_JSON)) {
                    Object object = JSONObject.toJSON(nodeJosnDTO);
                    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,dockingSystemConfig, dockingTask);
            }catch (Throwable e){
                e.printStackTrace();
            }finally {
            }
        }
    }
    /***
     * è°ƒç”¨æŽ¥å£
     * @param sendString
     * @param dockingSystemConfig
     * @param dockingTask
     * @throws Throwable
     */
    private void callInterface(String  sendString , DockingSystemConfig dockingSystemConfig,DockingTask dockingTask) throws  Throwable{
        String paramString = "";
        String backString = "";
        String msg="";
        String url = dockingSystemConfig.getRequestUrl();//url
        List<ResultNodeObjectDTO> resultNodeObjectDTOS =new ArrayList<>();
        try {
            boolean usedFlag= dockingSystemConfig.getUsedFlag().equals("true")?true:false;
            if(!usedFlag){
                throw  new Throwable("接口已经停用!");
            }
            String type = dockingSystemConfig.getInterfaceType().toLowerCase(Locale.ROOT);//get/post/webserver/corba
            String paramType = dockingSystemConfig.getParamType();//xml/json
            String returnType = dockingSystemConfig.getReturnType();//xml/json
            String requestmethod= dockingSystemConfig.getRequestMethod();
            String interfaceFunction = dockingSystemConfig.getInterfaceFunction();//主要是webservice的方法名
            String namespace = dockingSystemConfig.getNamespace();//namespace
            String soapaction = dockingSystemConfig.getSoapAction();//soapaction
            String targName = dockingSystemConfig.getTargetName();//targName
            String cxfaxis = dockingSystemConfig.getCxfAxis();//webservice是cxf/axis
            //查询param
            List<DockingSysIntParam> dockingSysIntParamList = dockingSysIntParamService.list(Wrappers.<DockingSysIntParam>query().lambda().eq(DockingSysIntParam::getInfoOid,dockingSystemConfig.getOid()));
            //查询header
            List<DockingSysIntHeader> dockingSysIntHeaderList = dockingSysIntHeaderService.list(Wrappers.<DockingSysIntHeader>query().lambda().eq(DockingSysIntHeader::getInfoOid,dockingSystemConfig.getOid()));
            if(type.equals(URLTYPE_HTTP)) {
                if (requestmethod.equals(URLTYPE_GET)) {//GET请求
                    String sendurl = url + "?" + DATA_PARAM_NAME + "=" + sendString;
                    //拼接param
                    for (DockingSysIntParam dockingSysIntParam : dockingSysIntParamList) {
                        sendurl = sendurl + "&" + dockingSysIntParam.getParamKey() + "=" + dockingSysIntParam.getParamValue();
                    }
                    paramString = sendurl;
                    backString = HttpUtils.get(sendurl);
                } else if (requestmethod.equals(URLTYPE_POST)) {//POST请求
                    MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
                    for (DockingSysIntParam dockingSysIntParam : dockingSysIntParamList) {
                        params.add(dockingSysIntParam.getParamKey(), dockingSysIntParam.getParamValue());
                    }
                    params.add(DATA_PARAM_NAME,sendString);
                    paramString = params.toString();
                    MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
                    for (DockingSysIntHeader dockingSysIntHeader : dockingSysIntHeaderList) {
                        headers.add(dockingSysIntHeader.getHeaderKey(), dockingSysIntHeader.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 (DockingSysIntParam dockingSysIntParam : dockingSysIntParamList) {
                    params.add(dockingSysIntParam.getParamKey(), dockingSysIntParam.getParamValue());
                }
                paramString = sendString;
                MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
                for (DockingSysIntHeader dockingSysIntHeader : dockingSysIntHeaderList) {
                    headers.add(dockingSysIntHeader.getHeaderKey(), dockingSysIntHeader.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.getMessage();
            e.printStackTrace();
            log.error("调用接口失败:"+e);
            //   throw  new Throwable("调用接口失败:"+e);
            ResultNodeObjectDTO   resultNodeObjectDTO=new ResultNodeObjectDTO();
            resultNodeObjectDTO.setErroid("1");
            resultNodeObjectDTO.setMsg(msg);
            resultNodeObjectDTO.setCode(dockingSystemConfig.getPushType().equalsIgnoreCase("2")?dockingTask.getClassifyId():dockingTask.getId());
            resultNodeObjectDTO.setOid(dockingTask.getBtmOid());
            resultNodeObjectDTOS.add(resultNodeObjectDTO);
        }finally {
            boolean isSend = false;
            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 dockingLogeDO = new DockingLog();
                String oid=VciBaseUtil.getPk();
                dockingLogeDO.setOid(oid);
                dockingLogeDO.setSystemCode(dockingTask.getSystemCode());
                dockingLogeDO.setSystemName(dockingTask.getSystemName());
                dockingLogeDO.setSystemOid(dockingTask.getSystemOid());
                dockingLogeDO.setClassifyOid(dockingTask.getClassifyOid());
                dockingLogeDO.setClassifyId(dockingTask.getClassifyId());
                dockingLogeDO.setClassifyName(dockingTask.getClassifyName());
                dockingLogeDO.setId(dockingTask.getId());
                dockingLogeDO.setUniqueCode(dockingTask.getUniqueCode());
                dockingLogeDO.setParamString(paramString);
                dockingLogeDO.setReturnString(backString);
                dockingLogeDO.setInterfaceStatus(isSend?"true":"false");
                dockingLogeDO.setType(DATA_LOGE_OUT);
                dockingLogeDO.setMsg(msg);
                log.error("集成推送数据,systemcode:"+dockingTask.getSystemCode()+",systemname:"+dockingTask.getSystemName()+",url:"+url+",param:"+paramString+",e:"+msg);
                dockingLogeService.save(dockingLogeDO);
            }
            //全都接收成功的情况下,修改dockingtask sendflag为已发送
            if(isSend) {
                dockingTask.setSendFlag(MdmDuckingConstant.SEND_FLAG_TRUE);
                dockingTaskService.updateById(dockingTask);
            }
        }
    }
    /***
     * æŸ¥è¯¢éœ€è¦é›†æˆçš„业务数据任务
     */
    private void sendpushDataForService (){
        initSysadmin();
        //查询哪些任务还没有执行完成
        //VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(DockingTaskDO.class);
        //queryWrapper.addQueryMap("sendFlag",MdmDuckingConstant.SEND_FLAG_FALSE);
    //    queryWrapper.addQueryMap("btmId", QueryOptionConstant.NOTIN + "(" + VciBaseUtil.toInSql(DOCKING_DEFAULT_CLASSIFY.toUpperCase(Locale.ROOT)) + ")");
        //根据类型去查询需要集成的分类或者数据
        LambdaQueryWrapper<DockingTask> queryWrapper = Wrappers.<DockingTask>lambdaQuery();
        queryWrapper.eq(DockingTask::getSendFlag,MdmDuckingConstant.SEND_FLAG_FALSE);
        queryWrapper.notIn(DockingTask::getBtmId,DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT));
        List<DockingTask> dockingTaskDOS = dockingTaskService.list(queryWrapper);
        sendpushDataForService(dockingTaskDOS);
    }
    /***
     * æŸ¥è¯¢éœ€è¦é›†æˆçš„父分类任务
     */
    private void sendpushClsfForService(){
        initSysadmin();
    /*    //查询哪些任务还没有执行完成
        VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(DockingTaskDO.class);
        queryWrapper.addQueryMap("sendFlag",MdmDuckingConstant.SEND_FLAG_FALSE);
        queryWrapper.addQueryMap("btmId",DOCKING_DEFAULT_CLASSIFY.toUpperCase(Locale.ROOT));
        List<DockingTaskDO> dockingTaskDOS = dockingTaskDaoI.selectByWrapper(queryWrapper);*/
        //根据类型去查询需要集成的分类或者数据
        LambdaQueryWrapper<DockingTask> queryWrapper = Wrappers.<DockingTask>lambdaQuery();
        queryWrapper.eq(DockingTask::getSendFlag,MdmDuckingConstant.SEND_FLAG_FALSE);
        queryWrapper.eq(DockingTask::getBtmId,DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT));
        List<DockingTask> dockingTaskDOS = dockingTaskService.list(queryWrapper);
        sendpushClsfForService(dockingTaskDOS);
    }
    public void initSysadmin(){
        SessionInfo sessionInfo = new SessionInfo();
        sessionInfo.setUserId("sysAdmin");
        sessionInfo.setUserName("系统管理员");
        sessionInfo.setIp(WebUtil.getLocalIp());
        sessionInfo.setUserOid("193C026F-7DB8-27B4-F383-4E8BE083FB07");
        sessionInfo.setUserSecret(UserSecretEnum.PRIVACY.getValue()+"");
        WebUtil.setSessionInfo(sessionInfo);
    }
    /**
     * dockingdata根据oid修改sendflag
     * @param oid
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
@@ -2,15 +2,19 @@
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.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.SysIntegrationDataFlowTypeEnum;
import com.vci.ubcs.code.enumpack.sysIntegrationPushTypeEnum;
import com.vci.ubcs.code.mapper.CommonsMapper;
import com.vci.ubcs.code.service.*;
import com.vci.ubcs.code.util.ClientBusinessObject;
@@ -52,6 +56,7 @@
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.stream.Collectors;
import static com.vci.ubcs.code.constant.MdmDuckingConstant.DOCKING_DEFAULT_CLASSIFY;
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 +106,9 @@
    @Resource
    private MdmIOService mdmIOService;
    @Resource
    private IDockingSystemConfigService dockingSystemConfigService;
    @Autowired
    private ICodeClassifyValueService codeClassifyValueService;
@@ -156,6 +164,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 +337,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 +497,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) {
@@ -635,7 +666,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 +856,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) {
@@ -1303,5 +1346,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;
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java
@@ -10,7 +10,7 @@
import com.vci.ubcs.omd.constant.BtmTypeConstant;
import com.vci.ubcs.omd.constant.BtmTypeFieldConstant;
import com.vci.ubcs.omd.dto.BtmAndLinkTypeDdlDTO;
import com.vci.ubcs.omd.entity.Attribute;
import com.vci.ubcs.omd.entity.*;
import com.vci.ubcs.omd.repeater.DomainRepeater;
import com.vci.ubcs.omd.service.*;
import com.vci.ubcs.omd.vo.*;
@@ -19,9 +19,6 @@
import com.vci.ubcs.starter.web.constant.OmdRegExpConstant;
import com.vci.ubcs.omd.dto.BtmTypeDTO;
import com.vci.ubcs.omd.dto.BtmTypeLinkAttributesDTO;
import com.vci.ubcs.omd.entity.BtmType;
import com.vci.ubcs.omd.entity.BtmTypeAttribute;
import com.vci.ubcs.omd.entity.ModifyAttributeInfo;
import com.vci.ubcs.omd.mapper.BtmTypeMapper;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.enumpck.BooleanEnum;
@@ -85,6 +82,12 @@
     */
    @Autowired
    private IAttributeService attributeService;
    /**
     * ç”Ÿå‘½å‘¨æœŸçš„æœåŠ¡
     */
    @Autowired
    private ILifeCycleService lifeCycleService;
    /**
     * è¡¨åå‰ç¼€
@@ -617,13 +620,14 @@
        if (btmTypeDTO.isLifeCycleFlag()){
            // éœ€è¦æŽ§åˆ¶ç”Ÿå‘½å‘¨æœŸ
            //检查使用的生命周期是否存在
//                if (StringUtils.isNotBlank(btmTypeDTO.getLifeCycleId())
//                    && !FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE.equalsIgnoreCase(btmTypeDTO.getLifeCycleId())) {
//                    if (lifeCycleServiceI.checkLifeCycleExist(btmTypeDTO.getLifeCycleId())) {
//                        throw new VciBaseException("生命周期{0}[{1}]在系统中不存在,请先查证",
//                            new Object[]{btmTypeDTO.getLifeCycleId(), btmTypeDTO.getLifeCycleName()});
//                    }
//                }
                if (StringUtils.isNotBlank(btmTypeDTO.getLifeCycleId())
//                    && !FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE.equalsIgnoreCase(btmTypeDTO.getLifeCycleId())
                ) {
                    if (lifeCycleService.getOne(Wrappers.<LifeCycleRule>query().lambda().eq(LifeCycleRule::getId,btmTypeDTO.getLifeCycleId())) == null) {
                        throw new VciBaseException("生命周期{0}[{1}]在系统中不存在,请先查证",
                            new Object[]{btmTypeDTO.getLifeCycleId(), btmTypeDTO.getLifeCycleName()});
                    }
                }
//                if (StringUtils.isNotBlank(btmTypeDTO.getSubLifeCycleId())) {
//                    if (lifeCycleServiceI.checkLifeCycleExist(btmTypeDTO.getSubLifeCycleId())) {
//                        throw new VciBaseException("备用生命周期{0}[{1}]中其中有某些在系统中不存在,请先查证",