ludc
2023-08-25 f043d5d9d1919ee81d7b43e2f58cd8ac7419259a
Merge branch 'master' of http://dev.vci-tech.com:1065/r/ubcs
已修改10个文件
287 ■■■■ 文件已修改
Source/UBCS-WEB/public/cdn/xlsx/FileSaver.min.js 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/docking/info.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/FormTemplate/index.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/code/code.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/appcode.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/VciBaseUtil.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingSystemConfigService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java 74 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/public/cdn/xlsx/FileSaver.min.js
@@ -1,7 +1,106 @@
/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */
var saveAs=saveAs||"undefined"!==typeof navigator&&navigator.msSaveOrOpenBlob&&navigator.msSaveOrOpenBlob.bind(navigator)||function(a){"use strict";if("undefined"===typeof navigator||!/MSIE [1-9]\./.test(navigator.userAgent)){var k=a.document,n=k.createElementNS("http://www.w3.org/1999/xhtml","a"),w="download"in n,x=function(c){var e=k.createEvent("MouseEvents");e.initMouseEvent("click",!0,!1,a,0,0,0,0,0,!1,!1,!1,!1,0,null);c.dispatchEvent(e)},q=a.webkitRequestFileSystem,u=a.requestFileSystem||q||a.mozRequestFileSystem,
  y=function(c){(a.setImmediate||a.setTimeout)(function(){throw c;},0)},r=0,s=function(c){var e=function(){"string"===typeof c?(a.URL||a.webkitURL||a).revokeObjectURL(c):c.remove()};a.chrome?e():setTimeout(e,500)},t=function(c,a,d){a=[].concat(a);for(var b=a.length;b--;){var l=c["on"+a[b]];if("function"===typeof l)try{l.call(c,d||c)}catch(f){y(f)}}},m=function(c,e){var d=this,b=c.type,l=!1,f,p,k=function(){t(d,["writestart","progress","write","writeend"])},g=function(){if(l||!f)f=(a.URL||a.webkitURL||
    a).createObjectURL(c);p?p.location.href=f:void 0==a.open(f,"_blank")&&"undefined"!==typeof safari&&(a.location.href=f);d.readyState=d.DONE;k();s(f)},h=function(a){return function(){if(d.readyState!==d.DONE)return a.apply(this,arguments)}},m={create:!0,exclusive:!1},v;d.readyState=d.INIT;e||(e="download");if(w)f=(a.URL||a.webkitURL||a).createObjectURL(c),n.href=f,n.download=e,x(n),d.readyState=d.DONE,k(),s(f);else{a.chrome&&b&&"application/octet-stream"!==b&&(v=c.slice||c.webkitSlice,c=v.call(c,0,
    c.size,"application/octet-stream"),l=!0);q&&"download"!==e&&(e+=".download");if("application/octet-stream"===b||q)p=a;u?(r+=c.size,u(a.TEMPORARY,r,h(function(a){a.root.getDirectory("saved",m,h(function(a){var b=function(){a.getFile(e,m,h(function(a){a.createWriter(h(function(b){b.onwriteend=function(b){p.location.href=a.toURL();d.readyState=d.DONE;t(d,"writeend",b);s(a)};b.onerror=function(){var a=b.error;a.code!==a.ABORT_ERR&&g()};["writestart","progress","write","abort"].forEach(function(a){b["on"+
  a]=d["on"+a]});b.write(c);d.abort=function(){b.abort();d.readyState=d.DONE};d.readyState=d.WRITING}),g)}),g)};a.getFile(e,{create:!1},h(function(a){a.remove();b()}),h(function(a){a.code===a.NOT_FOUND_ERR?b():g()}))}),g)}),g)):g()}},b=m.prototype;b.abort=function(){this.readyState=this.DONE;t(this,"abort")};b.readyState=b.INIT=0;b.WRITING=1;b.DONE=2;b.error=b.onwritestart=b.onprogress=b.onwrite=b.onabort=b.onerror=b.onwriteend=null;return function(a,b){return new m(a,b)}}}("undefined"!==typeof self&&
  self||"undefined"!==typeof window&&window||this.content);"undefined"!==typeof module&&null!==module?module.exports=saveAs:"undefined"!==typeof define&&null!==define&&null!=define.amd&&define([],function(){return saveAs});
var saveAs = saveAs || "undefined" !== typeof navigator && navigator.msSaveOrOpenBlob && navigator.msSaveOrOpenBlob.bind(navigator) || function (a) {
  "use strict";
  if ("undefined" === typeof navigator || !/MSIE [1-9]\./.test(navigator.userAgent)) {
    var k = a.document, n = k.createElementNS("http://www.w3.org/1999/xhtml", "a"), w = "download" in n,
      x = function (c) {
        var e = k.createEvent("MouseEvents");
        e.initMouseEvent("click", !0, !1, a, 0, 0, 0, 0, 0, !1, !1, !1, !1, 0, null);
        c.dispatchEvent(e)
      }, q = a.webkitRequestFileSystem, u = a.requestFileSystem || q || a.mozRequestFileSystem,
      y = function (c) {
        (a.setImmediate || a.setTimeout)(function () {
          throw c;
        }, 0)
      }, r = 0, s = function (c) {
        var e = function () {
          "string" === typeof c ? (a.URL || a.webkitURL || a).revokeObjectURL(c) : c.remove()
        };
        a.chrome ? e() : setTimeout(e, 500)
      }, t = function (c, a, d) {
        a = [].concat(a);
        for (var b = a.length; b--;) {
          var l = c["on" + a[b]];
          if ("function" === typeof l) try {
            l.call(c, d || c)
          } catch (f) {
            y(f)
          }
        }
      }, m = function (c, e) {
        var d = this, b = c.type, l = !1, f, p, k = function () {
          t(d, ["writestart", "progress", "write", "writeend"])
        }, g = function () {
          if (l || !f) f = (a.URL || a.webkitURL ||
            a).createObjectURL(c);
          p ? p.location.href = f : void 0 == a.open(f, "_blank") && "undefined" !== typeof safari && (a.location.href = f);
          d.readyState = d.DONE;
          k();
          s(f)
        }, h = function (a) {
          return function () {
            if (d.readyState !== d.DONE) return a.apply(this, arguments)
          }
        }, m = {create: !0, exclusive: !1}, v;
        d.readyState = d.INIT;
        e || (e = "download");
        if (w) f = (a.URL || a.webkitURL || a).createObjectURL(c), n.href = f, n.download = e, x(n), d.readyState = d.DONE, k(), s(f); else {
          a.chrome && b && "application/octet-stream" !== b && (v = c.slice || c.webkitSlice, c = v.call(c, 0,
            c.size, "application/octet-stream"), l = !0);
          q && "download" !== e && (e += ".download");
          if ("application/octet-stream" === b || q) p = a;
          u ? (r += c.size, u(a.TEMPORARY, r, h(function (a) {
            a.root.getDirectory("saved", m, h(function (a) {
              var b = function () {
                a.getFile(e, m, h(function (a) {
                  a.createWriter(h(function (b) {
                    b.onwriteend = function (b) {
                      p.location.href = a.toURL();
                      d.readyState = d.DONE;
                      t(d, "writeend", b);
                      s(a)
                    };
                    b.onerror = function () {
                      var a = b.error;
                      a.code !== a.ABORT_ERR && g()
                    };
                    ["writestart", "progress", "write", "abort"].forEach(function (a) {
                      b["on" +
                      a] = d["on" + a]
                    });
                    b.write(c);
                    d.abort = function () {
                      b.abort();
                      d.readyState = d.DONE
                    };
                    d.readyState = d.WRITING
                  }), g)
                }), g)
              };
              a.getFile(e, {create: !1}, h(function (a) {
                a.remove();
                b()
              }), h(function (a) {
                a.code === a.NOT_FOUND_ERR ? b() : g()
              }))
            }), g)
          }), g)) : g()
        }
      }, b = m.prototype;
    b.abort = function () {
      this.readyState = this.DONE;
      t(this, "abort")
    };
    b.readyState = b.INIT = 0;
    b.WRITING = 1;
    b.DONE = 2;
    b.error = b.onwritestart = b.onprogress = b.onwrite = b.onabort = b.onerror = b.onwriteend = null;
    return function (a, b) {
      return new m(a, b)
    }
  }
}("undefined" !== typeof self &&
  self || "undefined" !== typeof window && window || this.content);
"undefined" !== typeof module && null !== module ? module.exports = saveAs : "undefined" !== typeof define && null !== define && null != define.amd && define([], function () {
  return saveAs
});
Source/UBCS-WEB/src/api/docking/info.js
@@ -2,7 +2,7 @@
export const getList = (page, size, params) => {
  return request({
    url: '/api/ubcs-code/dockingManagement/gridDockingSystem',
    url: '/api/ubcs-code/dockingManagement/gridSystemConfig',
    method: 'get',
    params: {
      ...params,
Source/UBCS-WEB/src/components/FormTemplate/index.vue
@@ -84,7 +84,7 @@
import FormTemplate from "./FormTemplate";
import ResembleQuery from "./ResembleQuery";
export default {
  name: "FormTemplateDialog",
    name: "FormTemplateDialog",
  components: { ResembleQuery, FormTemplate },
  props: {
    visible: {
@@ -265,13 +265,19 @@
        if (res.data && res.data.code === 200) {
          this.codeRuleOid = res.data.data.oid;
          const typeList = [
            //固定码段
            "codefixedsec",
            //分类码段
            "codeclassifysec",
            //可变码段
            "codevariablesec",
            //引用码段
            "coderefersec",
            //属性码段
            "codeattrsec",
            "codelevelsec",
            "codedatesec"
            // "codelevelsec",
            //日期码段
            "codedatesec",
          ];
          this.secVOList = (res.data.data.secVOList || []).filter((item) =>
            typeList.includes(item.secType)
@@ -286,6 +292,8 @@
            this.showCodeApply = false;
          }
        }
        console.log(' this.secVOList',this.secVOList)
        console.log(' res.data.data.secVOList',res.data.data.secVOList)
      });
    },
    getFormData(form) {
Source/UBCS-WEB/src/views/code/code.vue
@@ -845,7 +845,7 @@
  import fixedValueOption from "@/const/code/fixedValueMgrDialog";
  import {mapGetters} from "vuex";
  import {getByRoleUserList} from "@/api/system/user";
  import func from "@/util/func";
  import func from "@/util/func";
  export default {
      data() {
@@ -890,7 +890,7 @@
            visible:false,
          },
          /*使用范围对话框显示控制*/
          codeRangeSettingBox: false,
          useRangeData: [],
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/appcode.xml
@@ -9,14 +9,12 @@
            <objects>
                <object code=""  id="0023401" status="Editing" operate="create" creator="weidy" >
                    <prop key="name" text="名称" value="温度调节器2333"/>
                    <prop key="xinghaoguige" text="型号规格" value="GB-002599"/>
                    <prop key="tuhao" text="图号" value="TH-002599"/>
                    <prop key="tuhao" text="图号" value="TH-0031"/>
                </object>
                <object  code="" id="0023402" status="Editing" operate="create" creator="weidy">
                    <prop key="name" text="所属结构" value="温度调节器"/>
                    <prop key="xinghaoguige" text="型号规格" value="GB-00257"/>
                    <prop key="tuhao" text="图号" value="TH-00257"/>
                    <prop key="tuhao" text="图号" value="TH-0031"/>
                </object>
            </objects>
        </classify>
@@ -27,13 +25,11 @@
            <objects>
                <object code="" id="0023403" status="Editing" operate="create" creator="weidy">
                    <prop  key="name" text="名称" value="温度调节器2"/>
                    <prop key="xinghaoguige" text="型号规格" value="GB-00255"/>
                    <prop key="tuhao" text="图号" value="TH-00255"/>
                    <prop key="tuhao" text="图号" value="TH-0032"/>
                </object>
                <object code="" id="0023404" status="Editing" operate="create" creator="weidy">
                    <prop key="name" text="所属结构" value="qwqw"/>
                    <prop key="xinghaoguige" text="型号规格" value="GB-0026"/>
                    <prop key="tuhao" text="图号" value="TH-0026"/>
                    <prop key="tuhao" text="图号" value="TH-0032"/>
                </object>
            </objects>
        </classify>
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java
@@ -98,6 +98,8 @@
        try {
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            baseModel.setOid(dataMap.getOrDefault("OID",""));
            baseModel.setId(dataMap.getOrDefault("ID",""));
            baseModel.setData(dataMap);;
            Object createTimeObj=dataMap.getOrDefault("CREATETIME","");
            if(createTimeObj!=null) {
                String createTime = createTimeObj.toString();
@@ -140,6 +142,7 @@
            baseModel.setVersionValue(dataMap.getOrDefault("VERSIONVALUE",""));
            baseModel.setRevisionOid(dataMap.getOrDefault("REVISIONOID",""));
            baseModel.setLastModifier(userId);
        }catch (VciBaseException e){
            e.printStackTrace();
        }
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/VciBaseUtil.java
@@ -19,6 +19,7 @@
import com.vci.ubcs.starter.web.wrapper.VciQueryWrapperForDO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.core.tool.utils.Func;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ResourceUtils;
@@ -1339,10 +1340,14 @@
                }
            }
        }
        //作用主要用于已MAP中的数据为准,bean里面遇到字段相同也会进行覆盖。
        //作用主要用于已MAP中的数据为准,bean里面遇到字段相同且map里面数据为空,则使用bean里面的值,
//        Map resulMapChild = (Map) mapData;
        for (Object o : mapData.keySet()) {
            if(existFild == null || existFild.contains(String.valueOf(o).toLowerCase())){
                if(Func.isNotBlank(String.valueOf(returnMap.get(String.valueOf(o).toLowerCase())))
                    && Func.isBlank(String.valueOf(mapData.get(o)))){
                    continue;
                }
                returnMap.put(String.valueOf(o).toLowerCase(),mapData.get(o));
            }
        }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingSystemConfigService.java
@@ -31,7 +31,7 @@
     * @param dockingSystemConfigDTO 系统集成的系统信息数据传输对象
     * @return 执行结果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
     boolean addSave(DockingSystemConfigDTO dockingSystemConfigDTO);
     boolean addSave(DockingSystemConfigDTO dockingSystemConfigDTO) throws Throwable;
    /**
     * 修改 系统集成的接口管理信息
     * @param dockingSystemConfigDTO 系统集成的系统信息数据传输对象
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java
@@ -161,56 +161,58 @@
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public boolean addSave(DockingSystemConfigDTO dockingSystemConfigDTO) {
    public boolean addSave(DockingSystemConfigDTO dockingSystemConfigDTO) throws Throwable {
        log.info(" 增加系统集成的接口管理信息:"+dockingSystemConfigDTO.toString());
        VciBaseUtil.alertNotNull(dockingSystemConfigDTO, "需要添加的数据对象");
        checkColumnNotNull(dockingSystemConfigDTO);
        String systemOid ="";
        if(dockingSystemConfigDTO.getDataFlowType().equals(SysIntegrationDataFlowTypeEnum.ACCEPT.getValue())) {
        if(dockingSystemConfigDTO.getDataFlowType().equals(SysIntegrationDataFlowTypeEnum.PUSH.getValue())) {
            systemOid = dockingSystemConfigDTO.getTargetSystemOid();
        }else{
            systemOid = dockingSystemConfigDTO.getSourceSystemOid();
        }
        DockingSystem dockingSystem = dockingSystemMapper.selectById(systemOid);
        dockingSystemConfigDTO.setSysBaseOid(systemOid);
        dockingSystemConfigDTO.setSysBaseId(dockingSystem.getId());
        dockingSystemConfigDTO.setSysBaseName(dockingSystem.getName());
        dockingSystemConfigDTO.setUsedFlag("true");//设置默认启用状态
        if(dockingSystem!=null) {
            dockingSystemConfigDTO.setSysBaseOid(systemOid);
            dockingSystemConfigDTO.setSysBaseId(dockingSystem.getId());
            dockingSystemConfigDTO.setSysBaseName(dockingSystem.getName());
            dockingSystemConfigDTO.setUsedFlag("true");//设置默认启用状态
        //将DTO转换为DO
        DockingSystemConfig dockingSystemConfig = new DockingSystemConfig();
        revisionModelUtil.copyFromDTOIgnore(dockingSystemConfigDTO,dockingSystemConfig);
            //将DTO转换为DO
            DockingSystemConfig dockingSystemConfig = new DockingSystemConfig();
            revisionModelUtil.copyFromDTOIgnore(dockingSystemConfigDTO,dockingSystemConfig);
        List<DockingSysIntParamDTO> sysIntParamDTOList=  dockingSystemConfigDTO.getSysIntParamDTOS();
        List<DockingSysIntParam> sysIntParamList=new ArrayList<>();
        if(!CollectionUtils.isEmpty(sysIntParamDTOList)) {
            sysIntParamDTOList.stream().forEach(sysIntParamDTO -> {
                DockingSysIntParam sysIntParamDO = new DockingSysIntParam();
                sysIntParamDTO.setInfoOid(dockingSystemConfigDTO.getOid());
                BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntParamDTO, sysIntParamDO);
                DefaultAttrAssimtUtil.addDefaultAttrAssimt(sysIntParamDO, MdmBtmTypeConstant.SYS_INT_PARAMTERY);
                sysIntParamList.add(sysIntParamDO);
            });
            List<DockingSysIntParamDTO> sysIntParamDTOList=  dockingSystemConfigDTO.getSysIntParamDTOS();
            List<DockingSysIntParam> sysIntParamList=new ArrayList<>();
            if(!CollectionUtils.isEmpty(sysIntParamDTOList)) {
                sysIntParamDTOList.stream().forEach(sysIntParamDTO -> {
                    DockingSysIntParam sysIntParamDO = new DockingSysIntParam();
                    sysIntParamDTO.setInfoOid(dockingSystemConfigDTO.getOid());
                    BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntParamDTO, sysIntParamDO);
                    DefaultAttrAssimtUtil.addDefaultAttrAssimt(sysIntParamDO, MdmBtmTypeConstant.SYS_INT_PARAMTERY);
                    sysIntParamList.add(sysIntParamDO);
                });
            }
            List<DockingSysIntHeaderDTO> sysIntHeaderDTOs= dockingSystemConfigDTO.getSysIntHeaderDTOS();
            List<DockingSysIntHeader> sysIntHeaderList = new ArrayList<>();
            if(!CollectionUtils.isEmpty(sysIntHeaderDTOs)) {
                sysIntHeaderDTOs.stream().forEach(sysIntHeaderDTO -> {
                    DockingSysIntHeader dockingSysIntHeader = new DockingSysIntHeader();
                    sysIntHeaderDTO.setInfoOid(dockingSystemConfigDTO.getOid());
                    BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntHeaderDTO, dockingSysIntHeader);
                    DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingSysIntHeader,MdmBtmTypeConstant.SYS_INT_HEADER);
                    sysIntHeaderList.add(dockingSysIntHeader);
                });
            }
            dockingSysIntParamService.saveBatch(sysIntParamList);
            dockingSysIntHeaderService.saveBatch(sysIntHeaderList);
            DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingSystemConfig,MdmBtmTypeConstant.SYS_INT_INFO);
            dockingSystemConfigMapper.insert(dockingSystemConfig);
        }else{
            throw new Throwable("根据选择的集成系统未校验到系统中存在此集成系统,请核对!");
        }
        List<DockingSysIntHeaderDTO> sysIntHeaderDTOs= dockingSystemConfigDTO.getSysIntHeaderDTOS();
        List<DockingSysIntHeader> sysIntHeaderList = new ArrayList<>();
        if(!CollectionUtils.isEmpty(sysIntHeaderDTOs)) {
            sysIntHeaderDTOs.stream().forEach(sysIntHeaderDTO -> {
                DockingSysIntHeader dockingSysIntHeader = new DockingSysIntHeader();
                sysIntHeaderDTO.setInfoOid(dockingSystemConfigDTO.getOid());
                BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntHeaderDTO, dockingSysIntHeader);
                DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingSysIntHeader,MdmBtmTypeConstant.SYS_INT_HEADER);
                sysIntHeaderList.add(dockingSysIntHeader);
            });
        }
        dockingSysIntParamService.saveBatch(sysIntParamList);
        dockingSysIntHeaderService.saveBatch(sysIntHeaderList);
        DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingSystemConfig,MdmBtmTypeConstant.SYS_INT_INFO);
        dockingSystemConfigMapper.insert(dockingSystemConfig);
        return true;
    }
    /**
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
@@ -1962,6 +1962,7 @@
        CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList);
        Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList();
        Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList();
        Map<String,List<String>>keyAttrOkOidTORepeatOidMap= keyResultVO.getKeyAttrOkOidTORepeatOidMap();
        if(!CollectionUtils.isEmpty(selfRepeatRowIndexList)){
            selfRepeatRowIndexList.stream().forEach(rowIndex->{
               /* //传入数据之间关键属性的校验
@@ -2064,8 +2065,8 @@
                            String lcstatus =newCbo.getLcStatus();
                            String newOid =newCbo.getOid();
                            Date ts =newCbo.getTs();
                            groupCode=newCbo.getData().get("GROUPCODE");
                            code=newCbo.getId();
                            code = StringUtils.isBlank(newCbo.getId())?"":newCbo.getId();
                            groupCode=newCbo.getData().getOrDefault("GROUPCODE","");
                            String lastmodifier=newCbo.getLastModifier();
                            if (lcstatus!=null&&!lcstatus.equals(CodeDefaultLC.RELEASED.getValue())) {
                                newCbo.setOid(newOid);
@@ -2136,8 +2137,8 @@
                // if(!isProcess){
                dataCBOList.stream().forEach(needSaveCbo->{
                    XMLResultDataObjectDetailDO resultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
                    String code=needSaveCbo.getId();
                    String groupCode=needSaveCbo.getData().getOrDefault("GROUPCODE","");
                    String code=StringUtils.isBlank(needSaveCbo.getId())?" ":needSaveCbo.getId();
                    String groupCode=needSaveCbo.getData().getOrDefault("GROUPCODE"," ");
                    //resultDataObjectDetailDO.setCode(needSaveCbo.getId());
                    String msg="申请编码成功";
                    String oid=needSaveCbo.getOid();
@@ -2157,6 +2158,9 @@
                    resultDataObjectDetailDO.setErrorid("0");
                    resultDataObjectDetailDO.setMsg(msg);
                    resultDataObjectDetailDOs.add(resultDataObjectDetailDO);
                    //处理传送的数据中关键属性重复的,直接拿到已经申请到编码的数据编码直接将赋给关键属性重复的数据
                    LinkedList<XMLResultDataObjectDetailDO> repeatDataObjectDetailDOS=handleApplyDataKeyAttrRepeat(keyAttrOkOidTORepeatOidMap,codeOidToSystemOidMap,needSaveCbo,isCodeOrGroupCode);
                    resultDataObjectDetailDOs.addAll(repeatDataObjectDetailDOS);
                });
               /* }else{
                    needSaveCboList.stream().forEach(needSaveCbo->{
@@ -2195,6 +2199,50 @@
    }
    /***
     *给同一批申请编码存在关键属性的数据赋上一致编码
     * @param keyAttrOkOidTORepeatOidMap 一批申请数据关键属性一致的重复数据映射关系
     * @param codeOidToSystemOidMap
     * @param needSaveCbo
     * @param isCodeOrGroupCode
     */
    private LinkedList<XMLResultDataObjectDetailDO> handleApplyDataKeyAttrRepeat(Map<String,List<String>>keyAttrOkOidTORepeatOidMap,Map<String,String> codeOidToSystemOidMap,BaseModel needSaveCbo,boolean isCodeOrGroupCode){
        LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs=new LinkedList<>();
        String oid=needSaveCbo.getOid();
        if(keyAttrOkOidTORepeatOidMap.containsKey(oid)){
            List<String> repeatOidList= keyAttrOkOidTORepeatOidMap.get(oid);
            if(!CollectionUtils.isEmpty(repeatOidList)){
                String sourceNewOid=needSaveCbo.getOid();
                String sourceOid=sourceNewOid;
                if(codeOidToSystemOidMap.containsKey(oid)){
                    sourceOid=codeOidToSystemOidMap.get(oid);
                }
                String code=StringUtils.isBlank(needSaveCbo.getId())?" ":needSaveCbo.getId();
                String groupCode=needSaveCbo.getData().getOrDefault("GROUPCODE"," ");
                String finalSourceOid = sourceOid;
                repeatOidList.stream().forEach(repeatOid->{
                    if(codeOidToSystemOidMap.containsKey(repeatOid)){
                        XMLResultDataObjectDetailDO repeatresultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
                        String repeatSourceOid=codeOidToSystemOidMap.get(repeatOid);
                        String repeatMsg="此数据与申请的编码数据id为【"+ finalSourceOid +"】的关键属性一致,则取相同编码";
                        if(isCodeOrGroupCode) {
                            if(StringUtils.isBlank(groupCode)){
                                repeatMsg="申请的编码类型为集团码,等待集团编码赋值";
                            }
                            repeatresultDataObjectDetailDO.setCode(groupCode);
                        }else{
                            repeatresultDataObjectDetailDO.setCode(code);
                        }
                        repeatresultDataObjectDetailDO.setId(repeatSourceOid);
                        repeatresultDataObjectDetailDO.setErrorid("0");
                        repeatresultDataObjectDetailDO.setMsg(repeatMsg);
                        resultDataObjectDetailDOs.add(repeatresultDataObjectDetailDO);
                    }
                });
            }
        }
        return  resultDataObjectDetailDOs;
    }
    /***
     * 集成批量同步更新接口
     * @param codeClassifyVO;
@@ -3878,7 +3926,7 @@
            if(rowIndexKeyStringMap.containsValue(keyString) && StringUtils.isNotBlank(keyString)){
                selfRepeatRowIndexList.add(rowIndex);
                String okOid=okOidKeyStringMap.getOrDefault(keyString,"");
                if(StringUtils.isBlank(okOid)){
                if(StringUtils.isNotBlank(okOid)){
                    List<String>newOidList=new ArrayList<>();
                    newOidList.add(oid);
                    if(keyAttrOkOidTORepeatOidMap.containsKey(okOid)){