wangting
2023-07-18 4b8d14958e5a5ccb6f64abef72a4ec7086de0f1d
Merge remote-tracking branch 'origin/master'
已修改11个文件
已添加1个文件
298 ■■■■ 文件已修改
Source/UBCS-WEB/.gitignore 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/Crud/VciMasterCrud.vue 111 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/Master/MasterTransfer.vue 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/Master/MasterTree.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/Tree/attrCrud.vue 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/template/SetPersonnel.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/main.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/vue.config.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/webService/config/AttributeMapConfig.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/.gitignore
@@ -5,6 +5,7 @@
/tests/e2e/videos/
/tests/e2e/screenshots/
# local env files
.env.local
.env.*.local
Source/UBCS-WEB/src/components/Crud/VciMasterCrud.vue
@@ -67,15 +67,20 @@
                              :type="edit"
                              :visible.sync="DataVisible"></FormTemplateDialog>
<!--          å‘布-->
          <set-personnel :parameter="this.parameter" :visible.sync="visibleFlow"></set-personnel>
          <set-personnel :parameter="this.parameter" :visible.sync="visibleFlow" :title="title"></set-personnel>
<!--          åœç”¨-->
            <set-personnel :parameter="this.parameter" :visible.sync="visibleDeactivate" :title="title"></set-personnel>
<!--          å¯ç”¨-->
            <set-personnel :parameter="this.parameter" :visible.sync="visibleEnable" :title="title"></set-personnel>
<!--          å›žæ”¶-->
            <set-personnel :parameter="this.parameter" :visible.sync="visibleRecovery" :title="title"></set-personnel>
<!--          é«˜çº§æŸ¥è¯¢-->
          <advanced-query :options="this.options" :visible.sync="findvisible" @echoContion="echoContion"></advanced-query>
          <integration-transfer :data="transferData" :props="transferProps" :visible.sync="dialogPush"
                                @save="handelTransferSave"></integration-transfer>
<!--          å¯¼å‡º-->
          <MasterTransfer :visible.sync="dialogPush" :tableHeadData="tableHeadFindData"></MasterTransfer>
<!--          ç›¸ä¼¼é¡¹-->
          <ResembleQueryDialog :codeClassifyOid="codeClassifyOid" :codeRuleOid="this.codeRuleOid" :rowOid="rowOid"
                               :templateOid="templateOid" :visible.sync="similarVisible"></ResembleQueryDialog>
        <div class="block" style="display: flex; justify-content: flex-end">
          <el-pagination :current-page="page.currentPage" :page-size="page.pageSizes" :page-sizes="page.pageSizes"
                         :total="page.total" layout="total, sizes, prev, pager, next, jumper"
@@ -166,7 +171,8 @@
      parameter: {
        ids: [],
        code: "",
        type: "PUBLIC",
        type: '',
        // this.visibleDeactivate ?'ENABLE':this.visibleEnable ? 'DISABLE' :this.visibleRecovery ? 'ROLLBACK' :'PUBLIC'
        template: "",
        vars: {
          codeClassifyOid: "",
@@ -174,7 +180,15 @@
        }
      },
      visibleNames:[],
      //发布
      visibleFlow: false,
      //停用
      visibleDeactivate:false,
      //启用
      visibleEnable:false,
      //回收
      visibleRecovery:false,
      title:'',
      transferData: [],
      transferProps: {
        key: "oid",
@@ -308,16 +322,6 @@
        this.$refs.dataTable.doLayout()
      }
    },
    // å‘布
    setHandler() {
      if (this.selectRow.length <= 0) {
        this.$message.warning("请选择一条数据");
      } else {
        this.userName = localStorage.getItem("username");
        this.parameter.template = this.userName + "-发布" + "[物品]";
        this.visibleFlow = true;
      }
    },
    openVis(visible) {
      console.log(visible)
      this[visible] = true
@@ -334,9 +338,14 @@
        //  if(uniqueFlag === 'CODEEDIT') return this.openBatchImport('batchApplyCode')
        if (uniqueFlag === 'CODESTARTPROCESS') return this.setHandler()
        if (uniqueFlag === 'CODEUPREVISION') return this.DataChange()
        if (uniqueFlag === 'CODERECYCLE') return this.huishouHandler()
        if (uniqueFlag === 'CODEEXPORT') return this.openD()
        if (uniqueFlag === 'CODEQUERY') return this.findHandler()
        //停用
        if (uniqueFlag === 'CODEDISABLE') return this.Deactivate()
        //启用
        if (uniqueFlag === 'CODEENABLE') return this.Enable()
        //回收
        if (uniqueFlag === 'CODERECYCLE') return this.Recovery()
        //  ç›¸ä¼¼é¡¹æŸ¥è¯¢
        //  if(uniqueFlag === 'CODEEDIT') return this.similarHandler()
      });
@@ -361,6 +370,74 @@
    rend() {
      this.tableData = this.tableHeadData;
    },
    // å‘布
    setHandler() {
      // let EditFlag1=false
      // let EditFlag2=false
      // if(EditFlag1){
      //   this.$message.warning('只有状态是【编辑中】的数据才可以发起流程')
      // }else if(EditFlag2){
      //   this.$message.warning('您选择的数据全部为【编辑中】才可以发起流程')
      // }
      this.selectRow.forEach(item=>{
        if(this.selectRow.length === 1 && item.lcstatus !== "Editing"){
          this.$message.warning('只有状态是【编辑中】的数据才可以发起流程')
        }else if(item.lcstatus !== 'Editing'){
          this.$message.warning('您选择的数据全部为【编辑中】才可以发起流程')
        }else {
          this.userName = localStorage.getItem("username");
          this.parameter.template = this.userName + "-发布" + "[物品]";
          this.parameter.type='PUBLIC'
          this.title='流程审批'
          this.visibleFlow = true;
        }
      })
      // if (this.selectRow.length <= 0) {
      //   this.$message.warning("请选择一条数据");
      // } else {
      //   this.userName = localStorage.getItem("username");
      //   this.parameter.template = this.userName + "-发布" + "[物品]";
      //   this.parameter.type='PUBLIC'
      //   this.title='流程审批'
      //   this.visibleFlow = true;
      // }
    },
    //停用
    Deactivate(){
      if (this.selectRow.length <= 0) {
        this.$message.warning("请选择一条数据");
      }  else {
        this.userName = localStorage.getItem("username");
        this.parameter.template = this.userName + "-发布" + "[物品]";
        this.parameter.type='DISABLE'
        this.title='停用(冻结)编码数据'
        this.visibleDeactivate=true;
      }
    },
    //启用
    Enable(){
      if (this.selectRow.length <= 0) {
        this.$message.warning("请选择一条数据");
      } else {
        this.userName = localStorage.getItem("username");
        this.parameter.template = this.userName + "-发布" + "[物品]";
        this.parameter.type='ENABLE'
        this.title='启用(解冻)编码数据'
        this.visibleEnable=true;
      }
    },
    //回收
    Recovery(){
      if (this.selectRow.length <= 0) {
        this.$message.warning("请选择一条数据");
      } else {
        this.userName = localStorage.getItem("username");
        this.parameter.template = this.userName + "-发布" + "[物品]";
        this.parameter.type='ROLLBACK'
        this.title='回收编码数据'
        this.visibleRecovery=true;
      }
    },
    handleSizeChange(val) {
      this.isLoading = true;
      setTimeout(() => {
Source/UBCS-WEB/src/components/Master/MasterTransfer.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,77 @@
<template>
<el-dialog :visible.sync="dialogPush" append-to-body  :close-on-click-modal="false"  @close="recoverPage" title="导出">
  <div style="margin-bottom: 10px">
    <el-radio-group v-model="radio">
      <el-radio :label="0">选择</el-radio>
      <el-radio :label="1">全部</el-radio>
      <el-radio :label="2">页码</el-radio>
    </el-radio-group>
  </div>
  <div style="text-align: center">
  <el-transfer
    style="text-align: left; display: inline-block"
    filterable
    :filter-method="filterMethod"
    filter-placeholder="请输入城市拼音"
    v-model="value"
    :data="data">
  </el-transfer>
  </div>
</el-dialog>
</template>
<script>
export default {
name: "MasterTransfer",
  props:['visible','tableHeadData'],
  data(){
    const generateData = () => {
      const data = [];
      const cities = ['上海', '北京', '广州', '深圳', '南京', '西安', '成都'];
      cities.forEach((city, index) => {
        data.push({
          label: city,
          key: index,
        });
      });
      return data;
    };
    return {
      data: generateData(),
      value: [],
      filterMethod(query, item) {
        return item.label.indexOf(query) > -1;
      },
      dialogPush:this.visible,
      radio:0,
      tableHeadFindData:[]
    };
  },
  watch:{
    //监听初始化
    visible (){
      this.dialogPush = this.visible;
    },
    tableHeadData(){
      this.tableHeadFindData=this.tableHeadData;
    }
  },
  computed:{
  },
  mounted() {
    console.log(this.tableHeadData)
  },
  methods:{
    //关闭页面
    recoverPage(){
      this.$emit('update:visible', false);
    }
  }
}
</script>
<style scoped lang="scss">
</style>
Source/UBCS-WEB/src/components/Master/MasterTree.vue
@@ -121,9 +121,7 @@
          codeClassifyOid: this.nodeClickList.oid,
          functionId: 5,
        }).then(res => {
          console.log('1-', res.data)
          console.log('123-', res.data.buttons)
          const flagsToDeleteBtn = ["CODEIMPORTHISTORY", "CODEBATCHADD", "CODESTARTPROCESS", "CODEEXPORT", "CODEQUERY"];
          const flagsToDeleteBtn = ["CODEIMPORTHISTORY", "CODEEXPORT", "CODEQUERY","batchApplyCode"];
          //不同节点显示不同按钮
          if (!res.data.leaf) {
            this.masterVrBtnList = res.data.buttons.filter(obj => flagsToDeleteBtn.includes(obj.uniqueFlag));
Source/UBCS-WEB/src/components/Tree/attrCrud.vue
@@ -242,7 +242,7 @@
    </div>
    <el-table :data="ProData"
              style="width: 100%"
              height="280"
              height="750"
              @cell-click="handleCellClicks"
              @select="selectHandle"
              @selection-change="selectionChange"
@@ -1637,15 +1637,26 @@
    },
    //枚举注入保存
    enumAddHandle() {
      if (this.enumRow.length < 1) {
        this.$message.warning('请至少选择一条数据')
      } else {
        if(this.CurrentCell){
          this.$set(this.CurrentCell, 'enumString', JSON.stringify(this.enumRow));
      let hasError = false; // æ·»åŠ ä¸€ä¸ªå˜é‡
      this.tableData.forEach((item, index) => {
        if (item.key === '') {
          this.$message.warning(`第${index + 1}行的选项值不能为空`);
          hasError = true;
          return;
        } else if (item.value === '') {
          this.$message.warning(`第${index + 1}行的选项中文标签不能为空`);
          hasError = true;
          return;
        }
      });
        // ä¿å­˜æ‰§è¡Œé€»è¾‘
      if (!hasError) {
        if (this.CurrentCell) {
          this.$set(this.CurrentCell, 'enumString', JSON.stringify(this.tableData));
          this.enumVisible = false;
        }else {
          this.$set(this.attrSelectList[0], 'enumString', JSON.stringify(this.enumRow));
          this.tableData=[]
        } else {
          this.$set(this.attrSelectList[0], 'enumString', JSON.stringify(this.tableData));
          this.tableData=[];
          this.enumVisible = false;
        }
      }
Source/UBCS-WEB/src/components/template/SetPersonnel.vue
@@ -118,10 +118,8 @@
    },
    mounted() {
      console.log('---',this.parameter)
    },
  created() {
    console.log('parameter',this.parameter)
    created() {
  },
  methods: {
        setSaveParam() {
Source/UBCS-WEB/src/main.js
@@ -51,7 +51,7 @@
import FlowPath from "@/components/template/FlowPath";
import Stage from "@/components/template/Stage";
import businesswork from "@/components/work/BusinessWork"
import MasterTransfer from "@/components/Master/MasterTransfer";
// å°†å·¥å…·å‡½æ•°æ·»åŠ åˆ°å…¨å±€
import utilFunc from './util/func'
import flowPath from "@/views/flow/flowPath";
@@ -104,6 +104,7 @@
Vue.component('Stage',Stage)
Vue.component('Divider', Divider)
Vue.component('businesswork', businesswork)
Vue.component('MasterTransfer', MasterTransfer)
// åŠ è½½ç›¸å…³url地址
Object.keys(urls).forEach(key => {
Source/UBCS-WEB/vue.config.js
@@ -26,9 +26,9 @@
    proxy: {
      '/api': {
        //本地服务接口地址
        target: 'http://localhost:37000',
        // target: 'http://localhost:37000',
        // target: 'http://192.168.1.51:37000',
        // target: 'http://192.168.1.46:37000',
        target: 'http://192.168.1.46:37000',
        // target: 'http://dev.vci-tech.com:37000',
        // target: 'http://192.168.1.51:37000/',
        // target: 'http://192.168.1.104:37000',
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
@@ -8,7 +8,6 @@
import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO;
import com.vci.ubcs.code.dto.CodeOrderDTO;
import com.vci.ubcs.code.entity.CodeAllCode;
import com.vci.ubcs.code.entity.CodeClassify;
import com.vci.ubcs.code.enumpack.CodeDefaultLC;
import com.vci.ubcs.code.enumpack.CodeLevelTypeEnum;
import com.vci.ubcs.code.lifecycle.CodeAllCodeLC;
@@ -33,7 +32,6 @@
import com.vci.ubcs.starter.revision.model.BaseModel;
import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
import com.vci.ubcs.starter.util.LocalFileUtil;
import com.vci.ubcs.starter.util.MdmBtmTypeConstant;
import com.vci.ubcs.starter.web.constant.QueryOptionConstant;
import com.vci.ubcs.starter.web.enumpck.BooleanEnum;
import com.vci.ubcs.starter.web.enumpck.UserSecretEnum;
@@ -41,7 +39,6 @@
import com.vci.ubcs.starter.web.pagemodel.*;
import com.vci.ubcs.starter.web.toolmodel.DateConverter;
import com.vci.ubcs.starter.web.util.*;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.map.HashedMap;
@@ -51,7 +48,6 @@
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.RichTextString;
import org.apache.poi.ss.usermodel.Workbook;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.redis.cache.BladeRedis;
import org.springblade.core.tool.api.R;
import org.springframework.beans.BeanUtils;
@@ -68,6 +64,7 @@
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.CopyOnWriteArraySet;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
import static com.alibaba.druid.util.FnvHash.Constants.LIMIT;
@@ -1455,8 +1452,8 @@
    @Override
    public R batchImportData(List<CodeImprotSaveDatVO> codeImprotSaveDatVOList, String classifyAttr, boolean isImprot) {
        boolean success=true;
        WriteExcelOption eo = new WriteExcelOption();
        AtomicBoolean success= new AtomicBoolean(true);
        codeImprotSaveDatVOList.stream().forEach(codeImprotSaveDatVO -> {
            List<SheetRowData> rowDataList = new ArrayList<>();
            List<ClientBusinessObject>cboList=new ArrayList<>();
@@ -1573,7 +1570,7 @@
                            log.error("批量产生编码的时候出错了", e);
                            thisCbos.stream().forEach(cbo -> {
                                String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
                                errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";系统错误,存储数据的时候出错了");
                                errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";系统错误,存储数据的时候出错了:"+e.getMessage());
                            });
                        }
                    }
@@ -1595,14 +1592,34 @@
                    try {
                        productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO, ruleVO, orderDTO.getSecDTOList(), dataCBOList);
                    } catch (Exception e) {
                        e.printStackTrace();
                        log.error("批量产生编码的时候出错了", e);
                        needSaveCboList.stream().forEach(cbo -> {
                            String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
                            errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";系统错误,存储数据的时候出错了:"+e.getMessage());
                        });
                    }
                    //如果是编码生成失败,则直接就失败了,其他的判断出来有错误的我们都统一返回到excel里面
                    engineService.batchSaveSelectChar(codeClassifyTemplateVO, dataCBOList);
                }
            }
            if(errorMap.size()>0) {
                success.set(false);
                LinkedList<WriteExcelData> excelDataList = new LinkedList<>();
                excelDataList.add(new WriteExcelData(0, 0, "错误信息"));
                final int[] index = {1};
                errorMap.forEach((key,v)->{
                    excelDataList.add(new WriteExcelData(index[0]++, 0, "第"+(Integer.parseInt(key)+1)+"行数据:"+v));
                });
                eo.addSheetDataList(codeClassifyTemplateVO.getName() + "导入模板", excelDataList);
            }
        });
        return  R.success(isImprot?"批量历史导入成功":"批量申请成功");
        if(!success.get()){
            String excelName = LocalFileUtil.getDefaultTempFolder() + File.separator + (isImprot?"批量历史错误信息.xls":"批量申请错误信息.xls");
            ExcelUtil.writeDataToFile(excelName,eo);
            return  R.fail(excelName);
        }else {
            return R.success(isImprot ? "批量历史导入成功" : "批量申请成功");
        }
    }
    /***
@@ -2723,6 +2740,7 @@
                        Integer userSecret = VciBaseUtil.getCurrentUserSecret();
                        cbo.setAttributeValue(SECRET_FIELD,String.valueOf((userSecret==null || userSecret ==0)? UserSecretEnum.NONE.getValue():userSecret));
                    }
                    cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
                }else{
                    //此时还没有转换路径
                    //cbo.setAttributeValue(CODE_FULL_PATH_FILED, childOidPathMap.getOrDefault(rowData.getData().getOrDefault(CODE_CLASSIFY_OID_FIELD,""),fullPath));
@@ -2779,6 +2797,7 @@
                        Integer userSecret = VciBaseUtil.getCurrentUserSecret();
                        cbo.setAttributeValue(SECRET_FIELD,String.valueOf((userSecret==null || userSecret ==0)? UserSecretEnum.NONE.getValue():userSecret));
                    }
                    cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
                }else{
                    //此时还没有转换路径
                    //cbo.setAttributeValue(CODE_FULL_PATH_FILED, childOidPathMap.getOrDefault(rowData.getData().getOrDefault(CODE_CLASSIFY_OID_FIELD,""),fullPath));
@@ -3624,13 +3643,15 @@
        }
    }
    private List<ClientBusinessObject> ChangeMapTOClientBusinessObjects(List<Map<String,String>> oldDataMap){
        List<ClientBusinessObject> clientBusinessObjectList=new CopyOnWriteArrayList<>();
        oldDataMap.parallelStream().forEach(dataMap->{
        List<ClientBusinessObject> clientBusinessObjectList=new ArrayList<>();
        oldDataMap.stream().forEach(dataMap->{
            ClientBusinessObject clientBusinessObject=new ClientBusinessObject();
            DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(dataMap,clientBusinessObject);
            dataMap.forEach((key,value)->{
                clientBusinessObject.setAttributeValue(key,value);
            });
            for (String key:dataMap.keySet()){
                Object value= dataMap.getOrDefault(key,"");
                clientBusinessObject.setAttributeValue(key,value.toString());
            }
            clientBusinessObjectList.add(clientBusinessObject);
        });
        return clientBusinessObjectList;
    }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
@@ -104,6 +104,7 @@
                String[] secLengths = cbo.getData().get(CODE_SEC_LENGTH_FIELD).split("#");
                cbo.getData().remove(CODE_SEC_LENGTH_FIELD);//将此key除去
                cbo.getData().remove(IMPORT_ROW_INDEX);//将此key除去
                cbo.getData().remove("codeclassifyid");//将此key除去
                List<CodeBasicSecVO> secVOList = ruleVO.getSecVOList().stream().sorted(((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum()))).collect(Collectors.toList());
                Map<String/**码段的主键**/,String/**码段的值**/> serialValueMap = new HashMap<>();
                Map<String, CodeBasicSecVO> secVOMap = secVOList.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
@@ -290,6 +291,9 @@
            for (int i = 0; i < dataCBOList.size(); i++) {
                BaseModel cbo = dataCBOList.get(i);
                cbo.getData().remove(CODE_SEC_LENGTH_FIELD);//将此key除去
                cbo.getData().remove(IMPORT_ROW_INDEX);//将此key除去
                cbo.getData().remove("codeclassifyid");//将此key除去
                List<String> thisSecValueList = new LinkedList<>();
                for (int j = 0; j < secValueList.size(); j++) {
                    thisSecValueList.add(secValueList.get(j));
@@ -323,15 +327,17 @@
            }
            saveSerialValue( ruleVO, lastMaxSerialValueMap, maxSerialValueMap);
            allCodeDOList.stream().forEach(
                allCode -> {DefaultAttrAssimtUtil.addDefaultAttrAssimt(allCode,"codeallcode");allCode.setLctid("codeAllCodeLC");}
            );
            Map<String, String> statusMap = allCodeDOList.stream().collect(Collectors.toMap(s -> s.getOid(), s -> s.getLcStatus()));
            allCodeDOList.stream().filter(s -> StringUtils.equalsIgnoreCase("codeallcode",s.getBtmname())).forEach(s -> {
                s.setLcStatus(statusMap.get(s.getOid()));
            });
            allCodeDOList.stream().forEach(
                allCode -> {DefaultAttrAssimtUtil.addDefaultAttrAssimt(allCode,"codeallcode");allCode.setLctid("codeAllCodeLC");}
            );
            codeAllCodeService.saveBatch(allCodeDOList);
//            iCodeWupinService.saveBatch(dataCBOList);
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
@@ -65,7 +65,7 @@
@Slf4j
@VciWebservice(path = "/universalInterface")
public class UniversalInterfaceImpl<IDockingLogeServiceing> implements UniversalInterfaceI {
    @Value("${code.checkConfig:true}")
    @Value("${code.universalinterface.checkSystemConfig:true}")
    public boolean CODE_CHECKCONFIG;
    @Autowired(required = false)
    private AttributeMapConfig attributeMapConfig;
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/webService/config/AttributeMapConfig.java
@@ -6,7 +6,7 @@
import java.util.List;
import java.util.Map;
@ConfigurationProperties(prefix="attrconfig")
@ConfigurationProperties(prefix="code.universalinterface.attrconfig")
@Component
public class AttributeMapConfig {
    private Map<String,String> system_attrmap;