Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java
@@ -36,7 +36,6 @@ import com.vci.ubcs.starter.web.util.VciDateUtil; import com.vci.ubcs.system.entity.DictBiz; import com.vci.ubcs.system.feign.IDictBizClient; import com.vci.ubcs.core.log.exception.ServiceException; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; @@ -714,7 +713,7 @@ //这个业务类型下的所有属性 R<BtmTypeVO> btmTypeVOR = btmTypeClient.getAllAttributeByBtmId(codeClassifyTemplateDO.getBtmTypeId()); if(btmTypeVOR.getCode() != 200){ throw new ServiceException("业务类型feign调用失败!"); throw new VciBaseException("业务类型feign调用失败!"); } //这个模板下已经有的属性 Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/controller/DdlController.java
@@ -44,7 +44,11 @@ @ApiOperationSupport(order = 1) @ApiOperation(value = "新增或修改", notes = "业务类型链接类型传输对象") public R submitBtmType(@RequestBody BtmAndLinkTypeDdlDTO ddlDTO) { return ddlService.submit(ddlDTO); try { return ddlService.submit(ddlDTO); } catch (Throwable e) { return R.fail(e.getMessage()); } } /** Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllDmMapperProcessor.java
@@ -3,12 +3,16 @@ import com.vci.ubcs.ddl.bo.DdlFieldMappingAttrBO; import com.vci.ubcs.ddl.mapper.DllDmMapper; import com.vci.ubcs.ddl.mapper.DllMapper; import com.vci.ubcs.omd.vo.BtmTypeAttributeVO; import com.vci.ubcs.starter.util.VciSpringUtil; import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum; import org.apache.commons.collections4.BidiMap; import org.springblade.core.tool.utils.StringPool; import org.springblade.core.tool.utils.StringUtil; import org.springframework.stereotype.Component; import java.util.List; import java.util.Locale; /** * Description: 应用于达梦数据,生成创建表操作sql的处理器 @@ -17,7 +21,7 @@ * @date 2023/4/24 */ @Component public class DllDmMapperProcessor extends DllMapperProcessor{ public class DllDmMapperProcessor extends DllMapperProcessor { private static final DllMapper MAPPER = VciSpringUtil.getBean(DllDmMapper.class); @@ -25,24 +29,24 @@ static { // 需要重新映射的字段类型在这里写 FIELD_MAP.put(VciFieldTypeEnum.VTDouble,new DdlFieldMappingAttrBO("DOUBLE",26,8,true,null)); FIELD_MAP.put(VciFieldTypeEnum.VTInteger,new DdlFieldMappingAttrBO("NUMBER",22,null,true,null)); FIELD_MAP.put(VciFieldTypeEnum.VTLong,new DdlFieldMappingAttrBO("BIGINT",22,null,true,null)); FIELD_MAP.put(VciFieldTypeEnum.VTBoolean,new DdlFieldMappingAttrBO("VARCHAR",5,null,true,null)); FIELD_MAP.put(VciFieldTypeEnum.VTDate,new DdlFieldMappingAttrBO("DATE",null,null,true,null)); FIELD_MAP.put(VciFieldTypeEnum.VTDateTime,new DdlFieldMappingAttrBO("TIMESTAMP",null,null,true,null)); FIELD_MAP.put(VciFieldTypeEnum.VTTime,new DdlFieldMappingAttrBO("TIME",null,null,true,null)); FIELD_MAP.put(VciFieldTypeEnum.VTFilePath,new DdlFieldMappingAttrBO("TEXT",null,null,true,null)); FIELD_MAP.put(VciFieldTypeEnum.VTClob,new DdlFieldMappingAttrBO("CLOB",100,null,true,null)); FIELD_MAP.put(VciFieldTypeEnum.VTString,new DdlFieldMappingAttrBO("VARCHAR",255,null,true,null)); FIELD_MAP.put(VciFieldTypeEnum.VTDouble, new DdlFieldMappingAttrBO("DOUBLE", 26, 8, true, null)); FIELD_MAP.put(VciFieldTypeEnum.VTInteger, new DdlFieldMappingAttrBO("INTEGER", 10, null, true, null)); FIELD_MAP.put(VciFieldTypeEnum.VTLong, new DdlFieldMappingAttrBO("NUMBER", 38, null, true, null)); FIELD_MAP.put(VciFieldTypeEnum.VTBoolean, new DdlFieldMappingAttrBO("VARCHAR", 5, null, true, null)); FIELD_MAP.put(VciFieldTypeEnum.VTDate, new DdlFieldMappingAttrBO("DATE", null, null, true, null)); FIELD_MAP.put(VciFieldTypeEnum.VTDateTime, new DdlFieldMappingAttrBO("TIMESTAMP", null, null, true, null)); FIELD_MAP.put(VciFieldTypeEnum.VTTime, new DdlFieldMappingAttrBO("TIME", null, null, true, null)); FIELD_MAP.put(VciFieldTypeEnum.VTFilePath, new DdlFieldMappingAttrBO("TEXT", null, null, true, null)); FIELD_MAP.put(VciFieldTypeEnum.VTClob, new DdlFieldMappingAttrBO("CLOB", 100, null, true, null)); FIELD_MAP.put(VciFieldTypeEnum.VTString, new DdlFieldMappingAttrBO("VARCHAR", 255, null, true, null)); } public DllDmMapperProcessor() { super(MAPPER); System.out.println("-----------------"); if (MAPPER != null){ if (MAPPER != null) { System.out.println("[success]::加载达梦数据库DLL操作服务成功"); }else { } else { System.out.println("[fail]::加载达梦数据库DLL操作服务失败"); } } @@ -54,7 +58,29 @@ @Override protected DdlFieldMappingAttrBO getMappingBO(VciFieldTypeEnum fieldTypeEnum) { return getMappingBOInMap(fieldTypeEnum,FIELD_MAP); return getMappingBOInMap(fieldTypeEnum, FIELD_MAP); } @Override public String getColumnTypeSql(VciFieldTypeEnum fieldType, BtmTypeAttributeVO attributeVO) { DdlFieldMappingAttrBO mappingBO = getMappingBO(fieldType); if (fieldType.equals(VciFieldTypeEnum.VTDouble)) { mappingBO.setDataPrecision(attributeVO.getPrecisionLength()); } //先只针对数字类型的进行处理 if (fieldType.equals(VciFieldTypeEnum.VTInteger) ){ mappingBO.setDataLength(null); } else if (fieldType.equals(VciFieldTypeEnum.VTDouble) || fieldType.equals(VciFieldTypeEnum.VTLong)) { if (attributeVO.getAttributeLength() <= mappingBO.getDataLength()) { mappingBO.setDataLength(attributeVO.getAttributeLength()); } }else { mappingBO.setDataLength(attributeVO.getAttributeLength()); } mappingBO.setNullable(attributeVO.isNullableFlag()); mappingBO.setDefaultValue(attributeVO.getDefaultValue()); return mappingBO.toString() + (StringUtil.equals(attributeVO.getId().toLowerCase(Locale.ROOT), "OID".toLowerCase(Locale.ROOT)) ? StringPool.SPACE + "primary key" + StringPool.SPACE : ""); } /** @@ -65,11 +91,11 @@ */ @Override public List<VciFieldTypeEnum> listFieldByColumnStr(String columnStr) { return listFieldInMapByColumnStr(columnStr,FIELD_MAP); return listFieldInMapByColumnStr(columnStr, FIELD_MAP); } @Override public VciFieldTypeEnum getFieldTypeByColumnStr(String columnStr, Integer length) { return getFieldTypeBeColumnStrInMap(columnStr,length,FIELD_MAP); return getFieldTypeBeColumnStrInMap(columnStr, length, FIELD_MAP); } } Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/service/IDdlService.java
@@ -195,7 +195,7 @@ * @param ddlDTO 业务类型传输对象 * @return 执行结果 */ R submit(BtmAndLinkTypeDdlDTO ddlDTO); R submit(BtmAndLinkTypeDdlDTO ddlDTO) throws Throwable; /** * 按表名获取表信息 Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/service/impl/DdlServiceImpl.java
@@ -83,25 +83,25 @@ private final Map<String, LinkTypeVO> idLinkMap = new ConcurrentHashMap<>(); private void putBtm(@NotNull BtmTypeVO... voList) throws ServiceException { private void putBtm(@NotNull BtmTypeVO... voList) throws Throwable { String collect = Arrays.stream(voList).map(BtmTypeVO::getId).filter(idBtmMap::containsKey).collect(Collectors.joining(",")); if (StringUtils.isBlank(collect)) { Arrays.stream(voList).forEach(vo -> { idBtmMap.put(vo.getId(), vo); }); } else { throw new ServiceException("业务类型:[" + collect + "]正在被其他用户操作"); throw new Throwable("业务类型:[" + collect + "]正在被其他用户操作"); } } private void putLink(@NotNull LinkTypeVO... voList) throws ServiceException { private void putLink(@NotNull LinkTypeVO... voList) throws Throwable { String collect = Arrays.stream(voList).map(LinkTypeVO::getId).filter(idLinkMap::containsKey).collect(Collectors.joining(",")); if (StringUtils.isBlank(collect)) { Arrays.stream(voList).forEach(vo -> { idLinkMap.put(vo.getId(), vo); }); } else { throw new ServiceException("链接类型:[" + collect + "]正在被其他用户操作"); throw new Throwable("链接类型:[" + collect + "]正在被其他用户操作"); } } @@ -978,7 +978,7 @@ * @return 执行结果 */ @Override public R<List<ModifyAttributeInfo>> submit(BtmAndLinkTypeDdlDTO ddlDTO) { public R<List<ModifyAttributeInfo>> submit(BtmAndLinkTypeDdlDTO ddlDTO) throws Throwable { try { List<ModifyAttributeInfo> changedList = new ArrayList<>(); if (!CollectionUtils.isEmpty(ddlDTO.getBtmTypeList())) { @@ -996,7 +996,7 @@ R<List<ModifyAttributeInfo>> result = R.success("数据库操作成功"); result.setData(changedList); return result; } catch (VciBaseException e) { } catch (Exception e) { try { // 建表失败有异常,捕获后返回,并释放线程中的内容 if (!CollectionUtils.isEmpty(ddlDTO.getBtmTypeList())) { @@ -1009,8 +1009,6 @@ }catch (ServiceException e2){ throw new RuntimeException(e2.getMessage()); } } catch (ServiceException e) { throw new RuntimeException(e.getMessage()); } } Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/BtmTypeClient.java
@@ -118,7 +118,7 @@ BeanMap.create(queryObj).putAll(conditionMap); List<BtmType> list = btmTypeService.list(Condition.getQueryWrapper(queryObj).lambda().eq(BtmType::getBizDomain, domainValue).orderByAsc(BtmType::getId)); if (CollectionUtils.isEmpty(list)){ return R.data(null); return R.data(new ArrayList<>()); } return R.data(BtmTypeWrapper.build().listEntityVO(list)); } @@ -139,9 +139,6 @@ ) ).orElseGet(ArrayList::new) ); if (CollectionUtils.isEmpty(voList)){ return R.data(null); } return R.data(voList); } @@ -161,9 +158,6 @@ ) ).orElseGet(ArrayList::new) ); if (CollectionUtils.isEmpty(voList)){ return R.data(null); } return R.data(voList); } Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/AttributeServiceImpl.java
@@ -134,7 +134,7 @@ if (CollectionUtils.isEmpty(existAttributeVOList)) { throw new VciBaseException("使用的属性都在系统中不存在,请先查证"); } else { Set<String> existAttributeOidSet = (existAttributeVOList.stream().collect(Collectors.toMap(s -> s.getId().toLowerCase().trim(), t -> t))).keySet(); Set<String> existAttributeOidSet = (existAttributeVOList.stream().collect(Collectors.toMap(s -> s.getId().trim(), t -> t))).keySet(); keyCollections.stream().forEach(s -> { if (!existAttributeOidSet.contains(s)) { throw new VciBaseException("使用的属性{0}在系统中不存在,请先查证", new Object[]{s}); Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmAttributeServiceImpl.java
@@ -60,7 +60,7 @@ attributesDTOList.stream().forEachOrdered(s -> { attributeService.checkAttribute(s); btmTypeAttributeDOList.add(BtmTypeAttributeWrapper.build().copyBtmTypeAttributeDTO2Entity(s,btmTypeOid, creator, now)); attributeIdList.add(s.getId().toLowerCase().trim()); attributeIdList.add(s.getId().trim()); }); //检查属性是否都存在 boolean exists = attributeService.checkAttributeExists(attributeIdList);