dangsn
2024-06-07 7664ba49025a6c549885fc6019e4d3c1886f45a6
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebBoServiceImpl.java
@@ -1,13 +1,14 @@
package com.vci.web.service.impl;
import com.vci.client.bof.ClientBusinessObject;
import com.vci.client.bof.ClientLinkObject;
import com.vci.client.common.oq.OQTool;
import com.vci.client.common.providers.ServiceProvider;
import com.vci.common.qt.object.*;
import com.vci.common.utility.ObjectUtility;
import com.vci.corba.common.PLException;
import com.vci.corba.omd.data.AttributeValue;
import com.vci.corba.omd.data.BusinessObject;
import com.vci.corba.omd.data.LinkObject;
import com.vci.corba.omd.qtm.QTInfo;
import com.vci.corba.query.ObjectQueryService;
import com.vci.corba.query.ObjectQueryServicePrx;
@@ -36,7 +37,6 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.lang.reflect.Field;
import java.util.*;
@@ -256,8 +256,8 @@
    */
   private  ClientBusinessObject cloneClientBusinessObject(ClientBusinessObject cbo){
       if(cbo !=null){
         com.vci.corba.omd.data.BusinessObject businessObject = new com.vci.corba.omd.data.BusinessObject();
         com.vci.corba.omd.data.BusinessObject bo = cbo.getBusinessObject();
         BusinessObject businessObject = new BusinessObject();
         BusinessObject bo = cbo.getBusinessObject();
         businessObject.oid = new ObjectUtility().getNewObjectID36();
         businessObject.revisionid = new ObjectUtility().getNewObjectID36();
         businessObject.nameoid = new ObjectUtility().getNewObjectID36();
@@ -307,10 +307,10 @@
    * @param newAttrValList 属性值对象数组
    * @return 拷贝后的新属性数组
    */
   private  com.vci.corba.omd.data.AttributeValue[] clone(com.vci.corba.omd.data.AttributeValue[] newAttrValList) {
      com.vci.corba.omd.data.AttributeValue[] n = new com.vci.corba.omd.data.AttributeValue[newAttrValList.length];
   private  AttributeValue[] clone(AttributeValue[] newAttrValList) {
      AttributeValue[] n = new AttributeValue[newAttrValList.length];
      for (int i = 0; i < newAttrValList.length; i++) {
         n[i] = new com.vci.corba.omd.data.AttributeValue(newAttrValList[i].attrName,newAttrValList[i].attrVal);
         n[i] = new AttributeValue(newAttrValList[i].attrName,newAttrValList[i].attrVal);
      }
      return n;
   }
@@ -400,7 +400,7 @@
      Map<String,String> data = new HashMap<String, String>();
      if(cbos!=null && cbos.size() > 0){
         for(com.vci.client.bof.ClientBusinessObject cbo : cbos){
         for(ClientBusinessObject cbo : cbos){
            data.put(cbo.getAttributeValue(fieldName),cbo.getOid());
         }
      }
@@ -430,9 +430,9 @@
         throw new VciBaseException("属性" + columnName + "的值为空");
      }
      conditionMap.put(columnName,QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(oidSet.toArray(new String[0])) + ")");
      List<com.vci.client.bof.ClientBusinessObject> cbos = queryCBO(btmName,conditionMap,null,Arrays.asList(new String[]{columnName}));
      List<ClientBusinessObject> cbos = queryCBO(btmName,conditionMap,null,Arrays.asList(new String[]{columnName}));
      if(cbos !=null && cbos.size() >0){
         for(com.vci.client.bof.ClientBusinessObject cbo : cbos){
         for(ClientBusinessObject cbo : cbos){
            String oid = cbo.getAttributeValue(columnName);
            if(oidSet.contains(oid)){
               oidSet.remove(oid);
@@ -470,7 +470,7 @@
    * @throws VciBaseException 查询出错的是抛出异常
    */
   @Override
   public List<com.vci.client.bof.ClientBusinessObject> queryCBO(String btmType,
   public List<ClientBusinessObject> queryCBO(String btmType,
         Map<String, String> conditionMap) throws VciBaseException {
      List<String> clauseList = new ArrayList<String>();
      clauseList.add("*");
@@ -487,7 +487,7 @@
    * @throws VciBaseException 查询出错的是抛出异常
    */
   @Override
   public List<com.vci.client.bof.ClientBusinessObject> queryCBO(String btmType,
   public List<ClientBusinessObject> queryCBO(String btmType,
         Map<String, String> conditionMap, PageHelper ph)
         throws VciBaseException {
      List<String> clauseList = new ArrayList<String>();
@@ -505,7 +505,7 @@
    * @throws VciBaseException 查询出错的是抛出异常
    */
   @Override
   public List<com.vci.client.bof.ClientBusinessObject> queryCBO(String btmType,
   public List<ClientBusinessObject> queryCBO(String btmType,
         Map<String, String> conditionMap, PageHelper ph,
         List<String> clauseList) throws VciBaseException {
      QueryTemplate qt = new QueryTemplate();
@@ -557,7 +557,7 @@
    * @throws VciBaseException 查询出错的时候会抛出异常
    */
   private List<ClientBusinessObject> baseQueryCBO(QueryTemplate qt,Map<String,String> conditionMap,PageHelper ph,List<String> clauseList) throws VciBaseException{
      List<com.vci.client.bof.ClientBusinessObject> allCbos = new ArrayList<com.vci.client.bof.ClientBusinessObject>();
      List<ClientBusinessObject> allCbos = new ArrayList<ClientBusinessObject>();
      if(clauseList == null){
         clauseList = new ArrayList<String>();
         clauseList.add("*");
@@ -632,7 +632,7 @@
      return allCbos;
   }
   public AttributeValue[] copyToAttributeValue(com.vci.corba.omd.data.AttributeValue[] attributeValues){
   public AttributeValue[] copyToAttributeValue(AttributeValue[] attributeValues){
      AttributeValue[] attributeValueList = new AttributeValue[attributeValues.length];
      for (int i = 0; i < attributeValues.length; i++) {
         AttributeValue newAttributeValue = new AttributeValue();
@@ -716,7 +716,7 @@
    * 查询生命周期的值
    * @param cbos 业务对象
    */
   private void queryLcStatus(List<com.vci.client.bof.ClientBusinessObject> cbos){
   private void queryLcStatus(List<ClientBusinessObject> cbos){
      if(!CollectionUtils.isEmpty(cbos)){
         Map<String, OsStatusVO> statusVOMap = statusService.selectAllStatusMap();
@@ -736,7 +736,7 @@
    * @param enumAttrName 枚举属性的值
    * @throws VciBaseException
    */
   private void queryEnumText(com.vci.client.bof.ClientBusinessObject cbo,List<String> enumAttrName) throws VciBaseException{
   private void queryEnumText(ClientBusinessObject cbo,List<String> enumAttrName) throws VciBaseException{
      queryEnumText(cbo,null,enumAttrName);
   }
@@ -748,7 +748,7 @@
    * @throws VciBaseException 查询枚举出错的时候会抛出异常
    */
   @Override
   public void queryEnumText(com.vci.client.bof.ClientBusinessObject cbo, com.vci.client.bof.ClientLinkObject clo, List<String> enumAttrName) throws VciBaseException{
   public void queryEnumText(ClientBusinessObject cbo, ClientLinkObject clo, List<String> enumAttrName) throws VciBaseException{
      if(enumAttrName.size()>0){//查询枚举
         for(String enumAttr:enumAttrName){//格式为   code_field  code是枚举的编码,field是当前业务类型存储枚举值的字段
            if(enumAttr.toLowerCase().equals("creator_name")){
@@ -826,7 +826,7 @@
    * @param attr 属性名
    * @param value 值
    */
   private void setValueToCboOrClo(com.vci.client.bof.ClientBusinessObject cbo,com.vci.client.bof.ClientLinkObject clo,String attr,String value){
   private void setValueToCboOrClo(ClientBusinessObject cbo,ClientLinkObject clo,String attr,String value){
      try {
         if (cbo != null) {
            cbo.setAttributeValueWithNoCheck(attr, value);
@@ -845,13 +845,13 @@
    * @param attributeValue 属性的值
    */
   @Override
   public void setAttributeValueForClo(com.vci.client.bof.ClientLinkObject clo, String attributeName, String attributeValue) {
      com.vci.corba.omd.data.AttributeValue[] attrValues = clo.getLinkObject().newAttrValList;
      ArrayList<com.vci.corba.omd.data.AttributeValue> attrValList = new ArrayList();
      com.vci.corba.omd.data.AttributeValue attrVal;
   public void setAttributeValueForClo(ClientLinkObject clo, String attributeName, String attributeValue) {
      AttributeValue[] attrValues = clo.getLinkObject().newAttrValList;
      ArrayList<AttributeValue> attrValList = new ArrayList();
      AttributeValue attrVal;
      int i;
      if (attrValues != null && attrValues.length > 0) {
         com.vci.corba.omd.data.AttributeValue[] var9 = attrValues;
         AttributeValue[] var9 = attrValues;
         i = attrValues.length;
         for (int var7 = 0; var7 < i; ++var7) {
@@ -864,7 +864,7 @@
      boolean isExist = false;
      for (i = 0; i < attrValList.size(); ++i) {
         attrVal = (com.vci.corba.omd.data.AttributeValue) attrValList.get(i);
         attrVal = (AttributeValue) attrValList.get(i);
         if (attrVal.attrName.toUpperCase().equals(attributeName.toUpperCase())) {
            attrVal.attrVal = attributeValue;
            isExist = true;
@@ -873,13 +873,13 @@
      }
      if (!isExist) {
         attrVal = new com.vci.corba.omd.data.AttributeValue();
         attrVal = new AttributeValue();
         attrVal.attrName = attributeName.toUpperCase();
         attrVal.attrVal = attributeValue;
         attrValList.add(attrVal);
      }
      clo.getLinkObject().newAttrValList = (com.vci.corba.omd.data.AttributeValue[]) attrValList.toArray(new com.vci.corba.omd.data.AttributeValue[attrValList.size()]);
      clo.getLinkObject().newAttrValList = (AttributeValue[]) attrValList.toArray(new AttributeValue[attrValList.size()]);
   }
@@ -889,7 +889,7 @@
    * @param enumAttrName 枚举属性
    * @throws VciBaseException 查询出错的时候会抛出异常
    */
   private void queryEnumTextClo(com.vci.client.bof.ClientLinkObject clo,List<String> enumAttrName) throws VciBaseException{
   private void queryEnumTextClo(ClientLinkObject clo,List<String> enumAttrName) throws VciBaseException{
      queryEnumText(null,clo,enumAttrName);
   }
@@ -902,7 +902,7 @@
    * @throws VciBaseException 查询出错的时候会抛出异常
    */
   @Override
   public List<com.vci.client.bof.ClientBusinessObject> queryCBOByScheme(String queryScheme,
   public List<ClientBusinessObject> queryCBOByScheme(String queryScheme,
         Map<String, String> conditionMap, Map<String, String> replaceMap)
         throws VciBaseException {
      PageHelper ph = new PageHelper(-1);
@@ -920,7 +920,7 @@
    * @throws VciBaseException 查询出错的时候会抛出异常
    */
   @Override
   public List<com.vci.client.bof.ClientBusinessObject> queryCBOByScheme(String queryScheme,
   public List<ClientBusinessObject> queryCBOByScheme(String queryScheme,
         Map<String, String> conditionMap, Map<String, String> replaceMap,
         PageHelper ph) throws VciBaseException {
      List<String> clauseList = new ArrayList<String>();
@@ -940,8 +940,7 @@
      QueryTemplate qt = null;
      try{
         VciBaseUtil.alertNotNull(name,"查询模板的名称");
         // QTWrapper wrapper = platformClientUtil.getQueryService().getQT(name);
         QTInfo wrapper = ServiceProvider.getOMDService().getQTDService().getQT(name);
         QTInfo wrapper = platformClientUtil.getQTDService().getQT(name);
         qt = OQTool.getQTByDoc(DocumentHelper.parseText(wrapper.qtText), name);
         //因为之前平台的Tool.replaceQTValues 没有处理 ${xxx}。, 为了忽略大小写,我们这里单独处理 weidy@2021-3-10
         //我们转换为小写
@@ -1000,7 +999,7 @@
    * @throws VciBaseException 查询出错会抛出异常
    */
   @Override
   public List<com.vci.client.bof.ClientBusinessObject> queryCBOByScheme(String queryScheme,
   public List<ClientBusinessObject> queryCBOByScheme(String queryScheme,
         Map<String, String> conditionMap, Map<String, String> replaceMap,
         PageHelper ph, List<String> clauseList) throws VciBaseException {
      QueryTemplate qt = getQtByName(queryScheme,replaceMap);
@@ -1132,11 +1131,11 @@
     * @throws VciBaseException 查询出错会抛出异常
     */
   @Override
   public List<com.vci.client.bof.ClientBusinessObject> queryBySql(String sql,
   public List<ClientBusinessObject> queryBySql(String sql,
         Map<String, String> conditionMap) throws VciBaseException {
      List<Map> allData = queryBySqlForMap(sql,conditionMap);
      if(allData == null || allData.size() == 0){
         return new ArrayList<com.vci.client.bof.ClientBusinessObject>();
         return new ArrayList<ClientBusinessObject>();
      }else{
         return map2Cbos(allData);
      }
@@ -1149,10 +1148,10 @@
    * @throws VciBaseException 查询出错活抛出异常
    */
   @Override
   public List<com.vci.client.bof.ClientBusinessObject> queryByOnlySql(String sql) throws VciBaseException{
   public List<ClientBusinessObject> queryByOnlySql(String sql) throws VciBaseException{
      List<Map> allData = queryByOnlySqlForMap(sql);
      if(allData == null || allData.size() == 0){
         return new ArrayList<com.vci.client.bof.ClientBusinessObject>();
         return new ArrayList<ClientBusinessObject>();
      }else{
         return map2Cbos(allData);
      }
@@ -1171,12 +1170,11 @@
      }
      List<Map> dataList = new ArrayList<>();
      try {
//         KV[][] kvs = platformClientUtil.getQueryService().queryBySql(sql);
         com.vci.corba.query.data.KV[][] kvs = ServiceProvider.getOQService().queryBySql(sql);
         KV[][] kvs = platformClientUtil.getQueryService().queryBySql(sql);
         if(kvs!=null && kvs.length>0){
            for (int i = 0; i < kvs.length; i++) {
               Map<String,String> data = new HashMap<>();
               com.vci.corba.query.data.KV[] kv = kvs[i];
               KV[] kv = kvs[i];
               if(kv!=null && kv.length >0){
                  for (int j = 0; j < kv.length; j++) {
                     KV kv1 = kv[j];
@@ -1260,9 +1258,9 @@
         sql = sql.replaceAll(" FROM "," from ");
      }
      com.vci.corba.omd.data.AttributeValue[] ava = null;
      AttributeValue[] ava = null;
      if(conditionMap!=null&&!conditionMap.isEmpty()){
         ava = new com.vci.corba.omd.data.AttributeValue[conditionMap.size()];
         ava = new AttributeValue[conditionMap.size()];
         Iterator<String> it = conditionMap.keySet().iterator();
         int i = 0 ;
         while(it.hasNext()){
@@ -1271,16 +1269,15 @@
            if(value == null){
               value = "";
            }
            com.vci.corba.omd.data.AttributeValue av = new com.vci.corba.omd.data.AttributeValue(key, value);
            AttributeValue av = new AttributeValue(key, value);
            ava[i] = av;
            i++;
         }
      }else{
         ava = new com.vci.corba.omd.data.AttributeValue[0];
         ava = new AttributeValue[0];
      }
      try {
//         String[][] results =platformClientUtil.getBOFactoryService().getSqlQueryResult(sql, ava);
         String[][] results =ServiceProvider.getBOFService().getSqlQueryResult(sql, ava);
         String[][] results =platformClientUtil.getSqlQueryService(sql, ava);
         if(results.length>0){
            if(selectKeys==null) {
               String selectSql = sql.substring(sql.toLowerCase(Locale.ROOT).indexOf("select") + 6, sql.toLowerCase(Locale.ROOT).indexOf(" from")).trim();
@@ -1367,11 +1364,11 @@
         allFieldAttrMap.put(columnName.toLowerCase(),fieldName);
      }
      List<T> allObject = new ArrayList<T>();
      List<com.vci.client.bof.ClientBusinessObject> allCbos = queryCBO(WebUtil.getBtmTypeByObject(c), conditionMap, ph, allFieldAttrMap.keySet().stream().collect(Collectors.toList()));//执行查询
      List<ClientBusinessObject> allCbos = queryCBO(WebUtil.getBtmTypeByObject(c), conditionMap, ph, allFieldAttrMap.keySet().stream().collect(Collectors.toList()));//执行查询
      List<String> oids = new ArrayList<String>();
      
      if(allCbos!=null&&allCbos.size()>0){
         for(com.vci.client.bof.ClientBusinessObject cbo : allCbos){
         for(ClientBusinessObject cbo : allCbos){
            T obj  = null;
            try {
               obj = c.newInstance();
@@ -1472,10 +1469,10 @@
         allFieldAttrMap.put(columnName.toLowerCase(),fieldName);
      }
      List<T> allObject = new ArrayList<T>();
      List<com.vci.client.bof.ClientBusinessObject> allCbos = queryCBOByScheme(queryScheme, conditionMap, replaceMap,ph, allFieldAttrMap.keySet().stream().collect(Collectors.toList()));
      List<ClientBusinessObject> allCbos = queryCBOByScheme(queryScheme, conditionMap, replaceMap,ph, allFieldAttrMap.keySet().stream().collect(Collectors.toList()));
      List<String> oids = new ArrayList<String>();
      if(allCbos!=null&&allCbos.size()>0){
         for(com.vci.client.bof.ClientBusinessObject cbo : allCbos){
         for(ClientBusinessObject cbo : allCbos){
            T obj  = null;
            try {
               obj = c.newInstance();
@@ -1539,7 +1536,7 @@
    * @param isEdit 是否为编辑
    * @throws VciBaseException 设置出错会抛出异常
    */
   private void setValueToCbo(Object obj,String btmType,com.vci.client.bof.ClientBusinessObject cbo ,boolean isEdit) throws VciBaseException{
   private void setValueToCbo(Object obj,String btmType,ClientBusinessObject cbo ,boolean isEdit) throws VciBaseException{
      Field pkField = WebUtil.getPkFieldForObj(obj.getClass());
      if(pkField == null){
         throw new VciBaseException("{0}类中没有定义主键属性",new Object[]{obj.getClass()});
@@ -1684,9 +1681,9 @@
      if(list==null){
         throw new VciBaseException(VciBaseException.paramNull);
      }
      Set<com.vci.client.bof.ClientBusinessObject> allUpdateCbos = new HashSet<com.vci.client.bof.ClientBusinessObject>();
      Set<com.vci.client.bof.ClientBusinessObject> allDeleteCbos = new HashSet<com.vci.client.bof.ClientBusinessObject>();
      Set<com.vci.client.bof.ClientBusinessObject> allAddCbos = new HashSet<com.vci.client.bof.ClientBusinessObject>();
      Set<ClientBusinessObject> allUpdateCbos = new HashSet<ClientBusinessObject>();
      Set<ClientBusinessObject> allDeleteCbos = new HashSet<ClientBusinessObject>();
      Set<ClientBusinessObject> allAddCbos = new HashSet<ClientBusinessObject>();
      Map<String,String> btmOidsMap = new HashMap<String, String>();
      for(T obj : list){
         String btmType = WebUtil.getBtmTypeByObject(obj.getClass());
@@ -1707,7 +1704,7 @@
         }
         btmOidsMap.put(btmType, tempOids);
      }
      List<com.vci.client.bof.ClientBusinessObject> needUpdateCbos = new ArrayList<com.vci.client.bof.ClientBusinessObject>();
      List<ClientBusinessObject> needUpdateCbos = new ArrayList<ClientBusinessObject>();
      Iterator<String> it = btmOidsMap.keySet().iterator();
      while(it.hasNext()){
         String btmType = it.next();
@@ -1725,11 +1722,11 @@
         }
         //主键
         Object pkValue = WebUtil.getValueFromField(pkField.getName(), obj);
         com.vci.client.bof.ClientBusinessObject cbo = null;
         ClientBusinessObject cbo = null;
         if(pkValue == null || (pkValue instanceof String && WebUtil.isNull(pkValue.toString()))){
            continue;
         }else{
            for(com.vci.client.bof.ClientBusinessObject tempCbo : needUpdateCbos){
            for(ClientBusinessObject tempCbo : needUpdateCbos){
               if(tempCbo.getOid().equalsIgnoreCase(pkValue.toString().trim())){
                  cbo = tempCbo;
                  break;
@@ -1738,7 +1735,7 @@
         }
         String btmType = WebUtil.getBtmTypeByObject(obj.getClass());
         //拷贝之前先清除已经有的值
         cbo.getBusinessObject().newAttrValList = new com.vci.corba.omd.data.AttributeValue[0];
         cbo.getBusinessObject().newAttrValList = new AttributeValue[0];
         setValueToCbo(obj,btmType,cbo,true);
         allUpdateCbos.add(cbo);
      }
@@ -2246,7 +2243,7 @@
     * @throws VciBaseException 转换出错会抛出异常
     */
   @Override
   public Map cbo2Map(com.vci.client.bof.ClientBusinessObject cbo) throws VciBaseException {
   public Map cbo2Map(ClientBusinessObject cbo) throws VciBaseException {
      Map<String,String> map = new HashMap<String, String>();
      WebUtil.copyValueToMapFromCbos(cbo, map);
      return map;
@@ -2260,9 +2257,9 @@
     * @throws VciBaseException 转换出错会抛出异常
     */
   @Override
   public List<com.vci.client.bof.ClientBusinessObject> map2Cbos(List<Map> mapList)
   public List<ClientBusinessObject> map2Cbos(List<Map> mapList)
         throws VciBaseException {
      List<com.vci.client.bof.ClientBusinessObject> cboList = new ArrayList<com.vci.client.bof.ClientBusinessObject>();
      List<ClientBusinessObject> cboList = new ArrayList<ClientBusinessObject>();
      for(Map map : mapList){
         cboList.add(map2Cbo(map));
      }
@@ -2277,8 +2274,8 @@
     * @throws VciBaseException 转换出错会抛出异常
     */
   @Override
   public com.vci.client.bof.ClientBusinessObject map2Cbo(Map map) throws VciBaseException {
      com.vci.client.bof.ClientBusinessObject cbo = new com.vci.client.bof.ClientBusinessObject();
   public ClientBusinessObject map2Cbo(Map map) throws VciBaseException {
      ClientBusinessObject cbo = new ClientBusinessObject();
      WebUtil.copyValueToCboFromMap(cbo, map);
      return cbo;
   }
@@ -2311,13 +2308,7 @@
         deleteReferAttrInCbo(batchCbos.getDeleteCbos());
      }
      try {
//         platformClientUtil.getBOFactoryService().batchCUDBOLO(new BusinessObjectListHolder(cboArray2Bo(batchCbos.getCreateCboArray())),
//               new LinkObjectListHolder(cloArray2Lo(batchCbos.getCreateCloArray())),
//               new BusinessObjectListHolder(cboArray2Bo(batchCbos.getUpdateCboArray())),
//               new LinkObjectListHolder(cloArray2Lo(batchCbos.getUpdateCloArray())),
//               cboArray2Bo(batchCbos.getDeleteCboArray()), cloArray2Lo(batchCbos.getDeleteCloArray()));
//         new BusinessObjectListHolder(cboArray2Bo(batchCbos.getCreateCboArray()))
         ServiceProvider.getBOFService().batchCUDBOLO(cboArray2Bo(batchCbos.getCreateCboArray()),
         platformClientUtil.getBOFactoryService().batchCUDBOLO(cboArray2Bo(batchCbos.getCreateCboArray()),
               cloArray2Lo(batchCbos.getCreateCloArray()),
               cboArray2Bo(batchCbos.getUpdateCboArray()),
               cloArray2Lo(batchCbos.getUpdateCloArray()),
@@ -2332,11 +2323,11 @@
    * @param cbos 客户端对象
    * @return 业务对象
    */
   private com.vci.corba.omd.data.BusinessObject[] cboArray2Bo(ClientBusinessObject[] cbos){
   private BusinessObject[] cboArray2Bo(ClientBusinessObject[] cbos){
      if(cbos == null ||cbos.length == 0){
         return new com.vci.corba.omd.data.BusinessObject[0];
         return new BusinessObject[0];
      }
      com.vci.corba.omd.data.BusinessObject[] bos = new com.vci.corba.omd.data.BusinessObject[cbos.length];
      BusinessObject[] bos = new BusinessObject[cbos.length];
      for(int i = 0; i < cbos.length; i++){
         bos[i] = cbos[i].getBusinessObject();
      }
@@ -2348,11 +2339,11 @@
    * @param clos 客户端对象
    * @return 业务对象
    */
   private com.vci.corba.omd.data.LinkObject[] cloArray2Lo(com.vci.client.bof.ClientLinkObject[] clos){
   private LinkObject[] cloArray2Lo(ClientLinkObject[] clos){
      if(clos == null ||clos.length == 0){
         return new com.vci.corba.omd.data.LinkObject[0];
         return new LinkObject[0];
      }
      com.vci.corba.omd.data.LinkObject[] bos = new com.vci.corba.omd.data.LinkObject[clos.length];
      LinkObject[] bos = new LinkObject[clos.length];
      for(int i = 0; i < clos.length; i++){
         bos[i] = clos[i].getLinkObject();
      }
@@ -2366,11 +2357,11 @@
   private void deleteReferAttrInCbo(Set<ClientBusinessObject> cbos){
      if(cbos !=null){
         for(ClientBusinessObject cbo : cbos){
            com.vci.corba.omd.data.BusinessObject bo = cbo.getBusinessObject();
            List<com.vci.corba.omd.data.AttributeValue> newAttr = new ArrayList<com.vci.corba.omd.data.AttributeValue>();
            BusinessObject bo = cbo.getBusinessObject();
            List<AttributeValue> newAttr = new ArrayList<AttributeValue>();
            if (bo.newAttrValList != null) {
               for (int i = 0; i < bo.newAttrValList.length; ++i) {
                  com.vci.corba.omd.data.AttributeValue av = bo.newAttrValList[i];
                  AttributeValue av = bo.newAttrValList[i];
                  if (WebUtil.isNormalAttr(av.attrName)) {
                     if(av.attrVal == null){
                        av.attrVal = "";
@@ -2379,7 +2370,7 @@
                  }
               }
            }
            bo.newAttrValList = newAttr.toArray(new com.vci.corba.omd.data.AttributeValue[0]);
            bo.newAttrValList = newAttr.toArray(new AttributeValue[0]);
            cbo.setBusinessObject(bo);
         }
      }