田源
2024-07-31 93cfe891a02766e0c56c5781eb6ca8a5cc5fb16f
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsAttributeServiceImpl.java
@@ -33,6 +33,7 @@
import com.vci.web.properties.UsedNames;
import com.vci.web.service.OsAttributeServiceI;
import com.vci.web.service.OsBaseServiceI;
import com.vci.web.service.OsEnumServiceI;
import com.vci.web.service.OsLinkTypeServiceI;
import com.vci.web.util.Func;
import com.vci.web.util.PlatformClientUtil;
@@ -111,6 +112,13 @@
   @Autowired(required = false)
   @Lazy
   private OsBtmServiceImpl osBtmService;
   /**
    * 枚举的服务
    */
   @Autowired
   @Lazy
   private OsEnumServiceI  enumService;
   /**
    *  必填列
@@ -511,7 +519,7 @@
      if(hasInstance && !compatible){
         throw new PLException("500",new String[]{"无效变更, 不兼容已产生的数据!"});
      }
      String userId = "developer";//WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId();
      String userId = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId();
      osAttributeDTO.setLastModifier(userId);
      osAttributeDTO.setCreator(osAttributeVO.getCreator());
      osAttributeDTO.setCreateTime(osAttributeVO.getCreateTime());
@@ -557,9 +565,9 @@
         attributeDef.rage = osAttributeDTO.getRange().replace("<","&lt;");
      }
      attributeDef.ts = Func.format((Func.isNotEmpty(osAttributeDTO.getTs()) ? osAttributeDTO.getTs():new Date()),VciDateUtil.DateTimeMillFormat);
      attributeDef.creator = "developer";//Func.isBlank(osAttributeDTO.getCreator()) ? WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId():osAttributeDTO.getCreator();
      attributeDef.creator = Func.isBlank(osAttributeDTO.getCreator()) ? WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId():osAttributeDTO.getCreator();
      attributeDef.createTime = Func.isEmpty(osAttributeDTO.getCreateTime()) ? System.currentTimeMillis():osAttributeDTO.getCreateTime().getTime();
      attributeDef.modifier = "developer";//Func.isBlank(osAttributeDTO.getLastModifier()) ? WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId():osAttributeDTO.getLastModifier();
      attributeDef.modifier = Func.isBlank(osAttributeDTO.getLastModifier()) ? WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId():osAttributeDTO.getLastModifier();
      attributeDef.modifyTime = System.currentTimeMillis();
      //other需要自行处理
      StringBuffer sb = new StringBuffer();
@@ -600,6 +608,7 @@
            if(StringUtils.isNotBlank(osAttributeDTO.getLinkTypeName())){
               //参照链接类型
               sb.append(LINKTYPENAME).append(" = ").append(osAttributeDTO.getLinkTypeName()).append(";");
               sb.append(VERSION).append(" = ").append(osAttributeDTO.getVersion()).append(";");
            }
            sb.append(LENGTH).append(" = ").append(length > osAttributeDTO.getAttrLength()?length:osAttributeDTO.getAttrLength()).append(";");
            if (StringUtils.isNotBlank(osAttributeDTO.getEnumId())) {
@@ -812,7 +821,7 @@
         if(Func.isBlank(oid) || Func.isBlank(name) || Func.isEmpty(ts)){
            throw new PLException("500",new String[]{"待删除的属性列表中主键【oid】、调整时间【ts】、属性名【name】不能为空!"});
         }
         //判断枚举是否有被引用
         //判断属性是否有被引用
         List<Map<String, String>> usedAttrList = this.getUsedAttributeList(name);
         if(Func.isNotEmpty(usedAttrList)){
            throw new PLException("500",new String[]{"删除的属性中,属性名称为:【" + name + "】,已被引用!"});
@@ -934,7 +943,7 @@
      //设置列名
      List<String> columns = new ArrayList<>(
            Arrays.asList("属性名", "标签", "描述",
                  "属性类型", "允许为空(是/否)", "默认值", "使用的枚举英文名称", "参照的业务类型编号",
                  "属性类型(请参照新增界面的属性类型填写)", "允许为空(是/否)", "默认值", "使用的枚举英文名称", "参照的业务类型编号",
                  "参照的链接类型编号","版本版次","属性长度", "小数精度位数","小数刻度位数","取值范围")
      );
      //设置必填列
@@ -1010,6 +1019,22 @@
            //属性名excel中判重处理
            excelReapeat.put(osAttributePO.getId(),osAttributePO.getRowIndex());
            OsAttributeDTO osAttributeDTO = new OsAttributeDTO();
            //查询枚举是否存在,填写了枚举但没填写取值范围,这时候直接使用枚举项值作为默认的range
            if(Func.isNotBlank(osAttributePO.getEnumId()) && Func.isBlank(osAttributePO.getRange())){
               try {
                  OsEnumVO enumVO = enumService.getEnumTypeById(osAttributePO.getEnumId());
                  if(Func.isEmpty(enumVO)){
                     throw new VciBaseException("第【" + osAttributePO.getRowIndex() + "】行数据,通过枚举名称【" + osAttributePO.getEnumId()
                           + "】未获取到枚举信息!");
                  }
                  String itemValues = enumVO.getItemMaps().values().stream().collect(Collectors.joining(";"));
                  osAttributeDTO.setRange(itemValues);
               } catch (PLException e) {
                  e.printStackTrace();
                  throw new VciBaseException("枚举查询失败,原因:"+e.getMessage());
               }
               osAttributeDTO.setBtmTypeId(osAttributePO.getEnumId());
            }
            osAttributeDTO.setOid(VciBaseUtil.getPk().toUpperCase(Locale.ROOT));
            osAttributeDTO.setId(osAttributePO.getId());
            osAttributeDTO.setName(osAttributePO.getName());
@@ -1045,7 +1070,7 @@
               }
            } catch (PLException e) {
               e.printStackTrace();
               throw new VciBaseException("执行保存时出现错误,错误属性对象名为:【" + dto.getId() + "】,原因:"+e.getMessage());
               throw new VciBaseException("执行保存时出现错误,错误属性对象名为:【" + dto.getId() + "】,原因:"+VciBaseUtil.getExceptionMessage(e));
            }
         });
      }catch (Exception e){