Source/UBCS-WEB/src/api/omd/OmdAttribute.js
@@ -63,3 +63,13 @@ }) } export const getApplyRange = (oid) => { return request({ url: '/api/ubcs-omd/attribute/apply-range', method: 'get', params: { oid } }) } Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue
@@ -366,8 +366,8 @@ this.attrRef.queryNotIn = ""; this.attrRef.selectData.forEach(item => { this.btmType.attributes.push({ id: item.key, name: item.label, id: item.id, name: item.name, typeValue: item.typeValue, typeKey: item.typeValue, attrDataType : item.typeValue, @@ -375,7 +375,7 @@ description: item.description, attributeLength: item.maxLength }); this.attrRef.queryNotIn += (item.key + ",") this.attrRef.queryNotIn += (item.id + ",") }); this.closeAttrDialog(); }, Source/UBCS-WEB/src/views/modeling/cycle.vue
@@ -10,14 +10,14 @@ <basic-container > <el-button type="primary" @click="dialogTableVisible=true" size="small">å建模æ¿</el-button> <el-button type="primary" size="small" @click="addHandlers">ç¼è¾æ¨¡æ¿</el-button> <el-button type="primary" size="small" @click="$refs.flow.addNode('æµè¯èç¹')">æ·»å èç¹</el-button> <el-button type="primary" size="small" @click="$refs.flow.addNode('ffff')">æ·»å èç¹</el-button> <br/><br/> <avue-flow ref="flow" v-model="form" :height="703" :option="option" :width="1500"> <template slot="header" slot-scope="scope"> <i class="el-icon-delete" @click="$refs.flow.deleteNode(scope.node.id)" style="margin-top: 8px"></i> </template> <div slot-scope="{node}"> <span>èªå®ä¹{{ (node || {}).name }}</span> <span>{{ (node || {}).name }}</span> </div> </avue-flow> <!-- åå»ºå¯¹è¯æ¡--> @@ -70,21 +70,6 @@ prop:"filetype", formslot: true, span:24 // type:"select", // dicData:[ // { // label:"æµè¯1", // value:0 // }, // { // label:"æµè¯2", // value:1 // }, // { // label:"æµè¯3", // value:2 // }, // ] }, { label: "æè¿°", @@ -126,7 +111,7 @@ defaultExpandAll: true, }, option: { "nodeList": [ nodeList: [ { "id": "nodeA", "name": "æµç¨A-èç¹A", @@ -152,7 +137,7 @@ "top": 20, } ], "lineList": [ lineList: [ { "from": "nodeA", "to": "nodeB" Source/UBCS-WEB/src/views/modeling/original.vue
@@ -17,7 +17,20 @@ :label="row.$index"> </el-radio> </template> <template slot="menuLeft"> <el-button size="small" plain type="primary" icon="el-icon-zoom-in" @click="applyRangeOpen">æ¥ç使ç¨èå´ </el-button> </template> </avue-crud> <el-dialog :visible.sync="applyRange.display" append-to-body :title="applyRange.title" width="600px" @close="applyRangeClose"> <avue-crud v-model="applyRange.model" :option="applyRange.option" :data="applyRange.data" class="applyRangeTable" ></avue-crud> </el-dialog> <el-dialog :visible.sync="referType.display" append-to-body :title="referType.title" width="1000px"> <original-range @rowchange="rowchange"></original-range> <span slot="footer" class="dialog-footer"> @@ -40,10 +53,10 @@ <el-tab-pane label="屿§é¡¹" name="attrTab"> <el-form ref="form" :model="itemData" label-width="80px" style="height: 656px;"> <el-form-item label="屿§ç¼ç "> <el-input v-model="itemData.key" :disabled="true"></el-input> <el-input v-model="itemData.id" :disabled="true"></el-input> </el-form-item> <el-form-item label="屿§åç§°"> <el-input v-model="itemData.label" :disabled="true"></el-input> <el-input v-model="itemData.name" :disabled="true"></el-input> </el-form-item> <el-form-item label="屿§ç±»å"> <el-input v-model="itemData.typeValue" :disabled="true"></el-input> @@ -96,7 +109,7 @@ getList, remove, add, update, getPage update, getPage, getApplyRange } from "@/api/omd/OmdAttribute"; import { getDictionary } from "@/api/omd/enum"; @@ -157,17 +170,18 @@ label: 'éæ©', prop: 'radio', width: 60, hide: false hide: false, display: false }, { label: '屿§ç¼å·', prop: 'key', prop: 'id', align: 'left', display: false, width: 200 }, { label: '屿§åç§°', prop: 'label', prop: 'name', align: 'left', display: false }, @@ -237,13 +251,13 @@ prop: "index", column: [ { label: '屿§ç¼ç ', prop: 'key', label: '屿§ç¼å·', prop: 'id', align: 'left', }, { label: '屿§åç§°', prop: 'label', prop: 'name', align: 'left', }, { @@ -421,6 +435,36 @@ } ] }, applyRange: { model: "", title: "åºç¨çä¸å¡ç±»å", option: { height: 360, addBtn: false, refreshBtn: false, columnBtn: false, menu: false, border: true, reserveSelection: true, searchMenuSpan:8, searchShowBtn: false, highlightCurrentRow: true, column: [ { label: 'ä¸å¡ç±»åç¼å·', prop: 'id', align: 'left', }, { label: 'ä¸å¡ç±»ååç§°', prop: 'name', align: 'left', }, ] }, data: [], display: false, } } }, @@ -466,7 +510,6 @@ this.packageLinkBox = false }, selectChange(val) { console.log(val); this.referType.key = val.value if (val.value == 'businessType'){ this.referType.value = 'ä¸å¡ç±»å' @@ -477,7 +520,6 @@ if(val.value){ this.referType.disable = false } console.log(this.referType.disable) }, selchange(val) { this.banList = val @@ -487,17 +529,7 @@ this.onLoad(this.pageParent, this.query); }, beforeOpen(done, type) { if (['view', 'edit'].includes(type)) { // æ¥çåç¼è¾é»è¾ console.log("ç¼è¾") } else { //æ°å¢é»è¾ console.log(this.Typelist) console.log(this.banList) console.log("æ°å¢") console.log(this.typeSelectList) } done(); }, @@ -563,8 +595,31 @@ this.referType.display = true; this.referType.title = "è¯·éæ©" + this.referType.value }, applyRangeOpen(){ if (!this.selectRow){ this.$message({ type:"warning", message: "请å 鿩屿§" }) } var oid = this.data[this.selectRow].oid; console.log(oid); getApplyRange(oid).then(res => { this.applyRange.data = res.data.data; }) console.log("success"); this.applyRange.display = true; }, applyRangeClose(){ this.applyRange.data = []; this.applyRange.display = false; } }, } </script> <style lang="scss"></style> <style lang="scss"> .applyRangeTable > .el-card:nth-of-type(2) > .el-card__body > .avue-crud__menu{ display: none !important; } </style> Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/cache/BtmTypeCache.java
@@ -9,6 +9,7 @@ import org.springblade.core.tool.utils.SpringUtil; import org.springblade.core.tool.utils.StringPool; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -71,7 +72,7 @@ public static List<BtmTypeVO> listBtmTypeByOidCollection(Collection<String> pkBtmTypeCollection) { String keyPrefix = BTM_IDS.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON); return CacheUtil.get(BTM_TYPE_CACHE,keyPrefix,Func.toStr(pkBtmTypeCollection.stream().map(s -> s.substring(0,5))),() ->{ R<List<BtmTypeVO>> result = getBtmTypeClient().listBtmTypeByOidCollection(pkBtmTypeCollection); R<List<BtmTypeVO>> result = getBtmTypeClient().listBtmTypeByOidCollection(new ArrayList<>(pkBtmTypeCollection)); return result.getData(); }); } Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/constant/BtmTypeConstant.java
@@ -11,130 +11,90 @@ /** * 屿§çä¸å¡ç±»ååç§° */ public static final String OMD_ATTRIBUTE_BTM_TYPE = "attribute"; public static final String ATTRIBUTE = "attribute"; /** * ä¸å¡ç±»å对象ç ä¸å¡ç±»ååç§° */ public static final String OMD_BTMTYPE = "btmtype"; public static final String BTMTYPE = "btmType"; /** * ä¸å¡ç±»åå å«ç屿§ç ä¸å¡ç±»ååç§° */ public static final String OMD_BTNTYPE_ATTRIBUTE_BTM_TYPE = "btmtypeAttribute"; public static final String BTM_TYPE_ATTRIBUTE = "btmTypeAttribute"; /** * æä¸¾çä¸å¡ç±»ååç§° */ public static final String OMD_ENUM_BTM_TYPE = "enum"; public static final String ENUM = "enum"; /** * æä¸¾é¡¹çä¸å¡ç±»ååç§° */ public static final String OMD_ENUM_ITEM_BTM_TYPE = "enumitem"; public static final String ENUM_ITEM = "enumItem"; /** * 类注éçä¸å¡ç±»ååç§° */ public static final String OMD_CLASS_ANNOTATION_BTM_TYPE = "classannotation"; public static final String CLASS_ANNOTATION = "classAnnotation"; /** * 屿§æ³¨éçä¸å¡ç±»ååç§° */ public static final String OMD_FIELD_ANNOTATION_BTM_TYPE = "fieldannotation"; public static final String FIELD_ANNOTATION = "fieldAnnotation"; /** * çå½å¨æçä¸å¡ç±»ååç§° */ public static final String OMD_LIFE_CYCLE_BTM_TYPE = "lifecycle"; public static final String LIFE_CYCLE = "lifecycle"; /** * çå½å¨æäºä»¶çä¸å¡ç±»ååç§° */ public static final String OMD_LIFE_CYCLE_EVENT_BTM_TYPE = "lifecycleevent"; public static final String LIFE_CYCLE_EVENT = "lifeCycleEvent"; /** * çå½å¨æè¿æ¥çº¿çä¸å¡ç±»ååç§° */ public static final String OMD_LIFE_CYCLE_LINE_BTM_TYPE = "lifecycleline"; public static final String LIFE_CYCLE_LINE = "lifeCycleLine"; /** * çå½å¨æè¿æ¥çº¿çäºä»¶ çä¸å¡ç±»ååç§° */ public static final String OMD_LIFE_CYCLE_LINE_EVENT_BTM_TYPE = "lifecyclelineevent"; public static final String LIFE_CYCLE_LINE_EVENT = "lifeCycleLineEvent"; /** * 龿¥ç±»åç屿§ çä¸å¡ç±»ååç§° */ public static final String OMD_LINK_TYPE_ATTRIBUTE_BTM_TYPE = "linktypeattribute"; public static final String LINK_TYPE_ATTRIBUTE = "linkTypeAttribute"; /** * 龿¥ç±»å çä¸å¡ç±»ååç§° */ public static final String OMD_LINK_TYPE_BTM_TYPE = "linktype"; public static final String LINK_TYPE = "linkType"; /** * æ¹æ³æ³¨é çä¸å¡ç±»ååç§° */ public static final String OMD_METHOD_ANNOTATION_BTM_TYPE = "methodannotation"; public static final String METHOD_ANNOTATION = "methodAnnotation"; /** * ä¿®æ¹å±æ§ç ä¸å¡ç±»ååç§° */ public static final String OMD_MODIFY_ATTRIBUTE_BTM_TYPE = "modifyattribute"; public static final String MODIFY_ATTRIBUTE = "modifyAttribute"; /** * åæ°æ³¨é çä¸å¡ç±»ååç§° */ public static final String OMD_PARAM_ANNOTATION_BTM_TYPE = "paramannotation"; public static final String PARAM_ANNOTATION = "paramAnnotation"; /** * çæ¬è§å çä¸å¡ç±»ååç§° */ public static final String OMD_REVISION_RULE_BTM_TYPE = "revisionrule"; public static final String REVISION_RULE = "revisionRule"; /** * ç¶æ çä¸å¡ç±»ååç§° */ public static final String OMD_STATUS_BTM_TYPE = "status"; /** * ç¼ç è§å çä¸å¡ç±»ååç§° */ public static final String OMD_CODE_RULE_BTM_TYPE = "codeRule"; /** * ç¼ç è§åå ç´ çä¸å¡ç±»ååç§° */ public static final String OMD_CODE_RULE_ELEMENT_BTM_TYPE = "codeRuleElement"; /** * ç¼ç è§åä¸çæä¸¾å¼æ å° */ public static final String OMD_CODE_ENUM_BTM_TYPE = "codeEnum"; /** * ç¼ç å ç´ ä¸çç¹æ®æ å° */ public static final String OMD_CODE_ELEMENT_MAP_BTM_TYPE = "codeElementMap"; /** * ç¼ç çæå· */ public static final String OMD_CODE_BREAK_CODE_BTM_TYPE = "codeBreakCode"; /** * ç¼ç çæµæ°´å· */ public static final String OMD_CODE_SERIAL_NUMBER_BTM_TYPE = "codeSerialNumber"; /** * 代ç çææ¹æ¡ */ public static final String OMD_CODE_GEN_SCHEMA_BTM_TYPE = "codeGenSchema"; /** * 代ç çææ¹æ¡jsé ç½® */ public static final String OMD_CODE_GEN_SCHEMA_JS ="codeGenSchemaJs" ; public static final String STATUS = "status"; } Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/dto/TableAddColumnDTO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,26 @@ package com.vci.ubcs.omd.dto; import com.vci.ubcs.omd.vo.BtmTypeAttributeVO; import com.vci.ubcs.omd.vo.LinkTypeAttributeVO; import lombok.Data; import java.io.Serializable; import java.util.List; /** * Description:æ°æ®è¡¨æ·»å åæ®µçä¼ è¾å¯¹è±¡ * * @author LiHang * @date 2023/5/24 */ @Data public class TableAddColumnDTO implements Serializable { private static final long serialVersionUID = -2024919650323368441L; private String tableName; private List<BtmTypeAttributeVO> btmTypeAttributeVOList; private List<LinkTypeAttributeVO> linkTypeAttributeVOList; } Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/dto/TableCheckDTO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,46 @@ package com.vci.ubcs.omd.dto; import lombok.Data; import java.io.Serializable; /** * Description: åéDDLæå¡ç对象 * * @author LiHang * @date 2023/5/24 */ @Data public class TableCheckDTO implements Serializable { /** * åºåå */ private static final long serialVersionUID = -8701934126197627838L; /** * ç±»ååç§° */ private String btmName; /** * 表å */ private String tableName; /** * æ¯å¦æ£éªè¡¨ä¸ */ private Boolean checkTableHasData; /** * æ¯å¦å é¤ */ private Boolean needDelete; /** * é¢åå¼ */ private String domain; private Boolean done; } Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/dto/TableCheckResultDTO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,30 @@ package com.vci.ubcs.omd.dto; import lombok.Data; import java.io.Serializable; import java.util.List; /** * Description: DDLæå¡æä½çè¿åå¼ * * @author LiHang * @date 2023/5/24 */ @Data public class TableCheckResultDTO implements Serializable { /** * åºåå */ private static final long serialVersionUID = 4014121972227815830L; /** * æä½æåç */ private List<TableCheckDTO> successList; /** * æä½å¤±è´¥ç */ private List<TableCheckDTO> failList; } Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Attribute.java
@@ -7,12 +7,11 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; import org.springblade.core.mp.base.BaseEntity; import org.springframework.data.annotation.Transient; import javax.validation.constraints.NotNull; import java.io.Serializable; import java.util.Date; @@ -24,33 +23,33 @@ */ @Data @ToString(callSuper = true) @EqualsAndHashCode(callSuper = true) @TableName("pl_omd_attribute") @ApiModel(value = "屿§å¯¹è±¡", description = "屿§å¯¹è±¡") public class Attribute extends BaseEntity { public class Attribute implements Serializable { /** * åºåå */ private static final long serialVersionUID = -6792640675358002410L; /** * ç§æ·ID * ä¸»é® */ @ApiModelProperty(value = "ç§æ·ID") private String tenantId; @ApiModelProperty(value = "主é®") @NotNull private String oid; /** * åæ®µç¼å· */ @ApiModelProperty(value = "åæ®µç¼å·") @NotNull private String key; private String id; /** * åæ®µåç§° */ @ApiModelProperty(value = "åæ®µåç§°") private String label; private String name; /** * 屿§ç±»ååå ¸ç @@ -184,4 +183,41 @@ @Transient @TableField(exist = false) private String calculateValue; /** * ä¸å¡ç±»ååç§° */ @ApiModelProperty("ä¸å¡ç±»ååç§°") private String btmName; /** * æ¥æè */ @ApiModelProperty("æ¥æè ") private String owner; /** * å建人 */ @ApiModelProperty("å建人") private String creator; /** * å建æ¶é´ */ @ApiModelProperty("å建æ¶é´") private Date createTime; /** * æåä¿®æ¹äºº */ @ApiModelProperty("æåä¿®æ¹äºº") private String lastModifier; /** * æåä¿®æ¹æ¶é´ï¼æ ¼å¼æ¯yyyy-MM-dd HH:mm:ss */ @ApiModelProperty("æåä¿®æ¹æ¶é´") private Date lastModifyTime; } Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/BtmType.java
@@ -16,7 +16,8 @@ @Data @TableName("pl_omd_btm_type") @ApiModel(value = "ä¸å¡ç±»å", description = "ä¸å¡ç±»å") public class BtmType implements java.io.Serializable{ public class BtmType implements java.io.Serializable{ /** Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LinkType.java
ÎļþÃû´Ó Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LinkTypeDO.java ÐÞ¸Ä @@ -15,7 +15,7 @@ @Data @TableName("pl_omd_link_type") @ApiModel(value = "龿¥ç±»å", description = "龿¥ç±»å") public class LinkTypeDO implements java.io.Serializable{ public class LinkType implements java.io.Serializable{ /** * ç¦æ¢ä¿®æ¹è¿ä¸ªå¼ @@ -76,7 +76,7 @@ /** * ä¸å¡ç±»ååç§° */ private String btmname; private String btmName; /** * æ¥æè @@ -108,4 +108,9 @@ */ private Date ts; /** * é¢åå¼ */ private String domain; } Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LinkTypeAttribute.java
@@ -10,8 +10,8 @@ /** * * 龿¥ç±»åå å«ç屿§ * @author weidy * @date 2019/10/11 3:21 PM * @author LiHang * @date 2023/5/24 */ @Data @TableName("pl_omd_link_type_attr") @@ -107,7 +107,7 @@ /** * ä¸å¡ç±»ååç§° */ private String btmname; private String btmName; /** * æ¥æè Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/ModifyAttributeInfo.java
@@ -115,7 +115,7 @@ /** * ä¸å¡ç±»ååç§° */ private String btmname; private String btmName; /** * å建人 */ @@ -130,4 +130,14 @@ * æ¶é´æ³ */ private Date ts; /** * æåä¿®æ¹äºº */ private String lastModifier; /** * æåä¿®æ¹æ¶é´ï¼æ ¼å¼æ¯yyyy-MM-dd HH:mm:ss */ private Date lastModifyTime; } Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/AttributeVO.java
@@ -28,10 +28,10 @@ private static final long serialVersionUID = 279638479374768539L; /** * 主é®ID * ä¸»é® */ @JsonSerialize(using = ToStringSerializer.class) private Long id; private String oid; @ApiModelProperty("åæ®µèå´") @JsonInclude(JsonInclude.Include.NON_EMPTY) Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LinkTypeAttributeVO.java
@@ -113,7 +113,7 @@ /** * ä¸å¡ç±»ååç§° */ private String btmname; private String btmName; /** * æ¥æè @@ -145,12 +145,12 @@ */ private Date ts; public String getBtmname() { return btmname; public String getBtmName() { return btmName; } public void setBtmname(String btmname) { this.btmname = btmname; public void setBtmName(String btmName) { this.btmName = btmName; } public String getOwner() { @@ -378,7 +378,7 @@ ", enumName='" + enumName + '\'' + ", enumFlag=" + enumFlag + ", enumItemMap=" + enumItemMap + ", btmname='" + btmname + '\'' + ", btmname='" + btmName + '\'' + ", owner='" + owner + '\'' + ", creator='" + creator + '\'' + ", createTime=" + createTime + Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/enumpck/NewAppConstantEnum.java
@@ -7,7 +7,7 @@ /** * ç¼ç è§åï¼æå¡å¯å¨å */ APPLICATION_NAME_CODE(AppConstant.APPLICATION_NAME_CODE,"ç¼ç è§åæå¡"), APPLICATION_NAME_CODE(AppConstant.APPLICATION_NAME_CODE,"ä¸»æ°æ®"), ; /** Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/controller/DdlController.java
@@ -3,8 +3,7 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.vci.ubcs.ddl.bo.DdlTableBO; import com.vci.ubcs.ddl.service.IDdlService; import com.vci.ubcs.omd.dto.BtmAndLinkTypeDdlDTO; import com.vci.ubcs.omd.dto.BtmTypeDTO; import com.vci.ubcs.omd.dto.*; import com.vci.ubcs.omd.entity.ModifyAttributeInfo; import com.vci.ubcs.omd.vo.BtmTypeVO; import io.swagger.annotations.Api; @@ -83,4 +82,30 @@ Func.requireNotNull(ddlDTO,"ä¸å¡ç±»åä¸é¾æ¥å¯¹è±¡ä¼ è¾å¯¹è±¡ä¸è½ä¸ºç©º"); return R.data(ddlService.checkDifferent(ddlDTO.getBtmTypeList(),ddlDTO.getLinkTypeList())); } /** * æ£æ¥æ°æ®è¡¨æ¯å¦å卿°æ®ï¼ä¸åå¨åå é¤ * @param tableCheckDTOList éè¦æ£æ¥ç表éå * @return æ£æ¥ç»æ */ @PostMapping("/checkTableHasDataThenDelete") @ApiOperation(value = "æ£æ¥æ°æ®è¡¨æ¯å¦å卿°æ®ï¼ä¸åå¨åå é¤") @ApiOperationSupport(order = 6) public R<TableCheckResultDTO> checkTableHasDataThenDelete(@RequestBody List<TableCheckDTO> tableCheckDTOList){ Func.requireNotNull(tableCheckDTOList,"éè¦æ£æ¥ç表éå"); return R.data(ddlService.checkTableHasDataThenDelete(tableCheckDTOList)); } /** * 为表添å åæ®µ * @param addColumnDTO æ·»å ç对象 * @return æ§è¡ç»æ */ @PostMapping("/addColumnForTable") @ApiOperation(value = "为表添å åæ®µ") @ApiOperationSupport(order = 6) public R addColumnForTable(@RequestBody TableAddColumnDTO addColumnDTO){ Func.requireNotNull(addColumnDTO,"æ·»å ç对象"); return R.status(ddlService.addColumnForTable(addColumnDTO)); } } Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/service/IDdlService.java
@@ -1,8 +1,7 @@ package com.vci.ubcs.ddl.service; import com.vci.ubcs.ddl.bo.DdlTableBO; import com.vci.ubcs.omd.dto.BtmAndLinkTypeDdlDTO; import com.vci.ubcs.omd.dto.BtmTypeDTO; import com.vci.ubcs.omd.dto.*; import com.vci.ubcs.omd.entity.ModifyAttributeInfo; import com.vci.ubcs.omd.vo.BtmTypeAttributeVO; import com.vci.ubcs.omd.vo.BtmTypeVO; @@ -22,37 +21,6 @@ * @date 2023/4/24 */ public interface IDdlService { /** * æ ¡éªä¸å¡ç±»åçæ°æ®åºè¡¨ä¸æ¯å¦ææ°æ® * @param pkBtmType ä¸å¡ç±»åçä¸»é® * @return trueè¡¨ç¤ºææ°æ®ï¼falseè¡¨ç¤ºæ²¡ææ°æ® * @throws VciBaseException åæ°ä¸ºç©ºæè æ¥è¯¢åºéçæ¶å伿åºå¼å¸¸ */ boolean checkTableHasData(String pkBtmType) throws VciBaseException; /** * æ ¹æ®ä¸å¡ç±»åæè 龿¥ç±»åç主é®è·åæ°æ®åºè¡¨æ ¼çåç§° * @param pkBtmType ä¸å¡ç±»åæè 龿¥ç±»åçä¸»é® * @return æ°æ®åºè¡¨åç§° */ String getTableNameByBtmTypeOid(String pkBtmType); /** * æ ¹æ®ä¸å¡ç±»åè·å龿¥ç±»åçè±æåç§°è·åæ°æ®åºè¡¨æ ¼çåç§° * @param id ä¸å¡ç±»åè·å龿¥ç±»åçè±æåç§° * @return æ°æ®åºè¡¨åç§° */ String getTableNameByBtmTypeId(String id); /** * æ ¡éªä¸å¡ç±»åçæ°æ®åºè¡¨ä¸æ¯å¦ææ°æ® * @param id ä¸å¡ç±»åçè±æåç§° * @return trueè¡¨ç¤ºææ°æ®ï¼falseè¡¨ç¤ºæ²¡ææ°æ® * @throws VciBaseException åæ°ä¸ºç©ºæè æ¥è¯¢åºéçæ¶å伿åºå¼å¸¸ */ boolean checkTableHasDataById(String id) throws VciBaseException; /** * æ¹éå°ä¸å¡ç±»ååå»ºæ°æ®åºè¡¨ * @param pkBtmTypes ä¸å¡ç±»åçä¸»é® @@ -137,12 +105,6 @@ */ void dropColumnByName(String tableName, String columnName); /** * æ ¡éªä¸å¡ç±»åæè 龿¥ç±»åç对åºçè¡¨æ ¼æ¯å¦åå¨ * @param pkBtmType ä¸å¡ç±»åæè 龿¥ç±»åçè¡¨æ ¼ * @return true表示åå¨ï¼false表示ä¸åå¨ */ boolean checkTableExist(String pkBtmType); /** * æ ¹æ®è¡¨æ ¼çåç§°å¤æè¡¨æ ¼æ¯å¦åå¨ @@ -151,12 +113,6 @@ */ boolean checkTableExistByTableName(String tableName); /** * æ ¡éªä¸å¡ç±»åæè 龿¥ç±»åæå¯¹åºçè¡¨æ ¼æ¯å¦åå¨ * @param id ä¸å¡ç±»åæè 龿¥ç±»åçè±æåç§° * @return true表示åå¨ï¼false表示ä¸åå¨ */ boolean checkTableExistById(String id); /** * è·åæ°æ®åºåä¸å¡ç±»åä¸çä¸åçå°æ¹ @@ -246,4 +202,18 @@ * @return 表信æ¯éå */ List<BtmTypeVO> getAllTableInfo(); /** * æ£æ¥æ°æ®è¡¨æ¯å¦å卿°æ®ï¼ä¸åå¨åå é¤ * @param tableCheckDTOList éè¦æ£æ¥ç表éå * @return æ£æ¥ç»æ */ TableCheckResultDTO checkTableHasDataThenDelete(List<TableCheckDTO> tableCheckDTOList); /** * 为表添å åæ®µ * @param addColumnDTO æ·»å ç对象 * @return æ§è¡ç»ææ è¯ */ Boolean addColumnForTable(TableAddColumnDTO addColumnDTO); } Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/service/impl/DdlServiceImpl.java
@@ -17,6 +17,9 @@ import com.vci.ubcs.omd.constant.BtmTypeFieldConstant; import com.vci.ubcs.omd.constant.BtmTypeLcStatusConstant; import com.vci.ubcs.omd.dto.BtmAndLinkTypeDdlDTO; import com.vci.ubcs.omd.dto.TableAddColumnDTO; import com.vci.ubcs.omd.dto.TableCheckDTO; import com.vci.ubcs.omd.dto.TableCheckResultDTO; import com.vci.ubcs.omd.entity.ModifyAttributeInfo; import com.vci.ubcs.omd.vo.*; import com.vci.ubcs.starter.exception.VciBaseException; @@ -119,77 +122,6 @@ } } /** * æ ¡éªä¸å¡ç±»åçæ°æ®åºè¡¨ä¸æ¯å¦ææ°æ® * * @param pkBtmType ä¸å¡ç±»åçä¸»é® * @return trueè¡¨ç¤ºææ°æ®ï¼falseè¡¨ç¤ºæ²¡ææ°æ® * @throws VciBaseException åæ°ä¸ºç©ºæè æ¥è¯¢åºéçæ¶å伿åºå¼å¸¸ */ @Override public boolean checkTableHasData(String pkBtmType) throws VciBaseException { return checkTableHasDataByTableName(getTableNameByBtmTypeOid(pkBtmType)); } /** * æ ¹æ®ä¸å¡ç±»åæè 龿¥ç±»åç主é®è·åæ°æ®åºè¡¨æ ¼çåç§° * * @param pkBtmType ä¸å¡ç±»åæè 龿¥ç±»åçä¸»é® * @return æ°æ®åºè¡¨åç§° */ @Override public String getTableNameByBtmTypeOid(String pkBtmType) { VciBaseUtil.alertNotNull(pkBtmType, "ä¸å¡ç±»åæè 龿¥ç±»åç主é®"); BtmTypeVO btmType = BtmTypeCache.getDetail(pkBtmType); String tableName = ""; if (btmType == null || StringUtils.isBlank(btmType.getOid())) { /*OsLinkTypeDO linkTypeDO = linkTypeDOMapper.selectByPrimaryKey(pkBtmType.trim()); if(linkTypeDO == null || StringUtils.isBlank(linkTypeDO.getOid()) ){ throw new com.vci.starter.web.exception.VciBaseException("䏿¯ä¸å¡ç±»åï¼ä¹ä¸æ¯é¾æ¥ç±»åï¼è¯·æ¥è¯"); }else{ tableName = linkTypeService.getTableName(linkTypeDO.getId()); }*/ } else { tableName = btmType.getTableName(); } return tableName; } /** * æ ¹æ®ä¸å¡ç±»åè·å龿¥ç±»åçè±æåç§°è·åæ°æ®åºè¡¨æ ¼çåç§° * * @param id ä¸å¡ç±»åè·å龿¥ç±»åçè±æåç§° * @return æ°æ®åºè¡¨åç§° */ @Override public String getTableNameByBtmTypeId(String id) { VciBaseUtil.alertNotNull(id, "ä¸å¡ç±»åæè 龿¥ç±»åçè±æåç§°"); List<BtmTypeVO> btmTypeList = BtmTypeCache.selectByIdCollection(VciBaseUtil.str2List(id)); String tableName = ""; if (CollectionUtils.isEmpty(btmTypeList)) { /*List<OsLinkTypeDO> linkTypeDOList = linkTypeDOMapper.selectByIdCollection(VciBaseUtil.str2List(id)); if(CollectionUtils.isEmpty(linkTypeDOList)){ throw new com.vci.starter.web.exception.VciBaseException("䏿¯ä¸å¡ç±»åï¼ä¹ä¸æ¯é¾æ¥ç±»åï¼è¯·æ¥è¯"); }else{ tableName = linkTypeService.getTableName(linkTypeDOList.get(0).getId()); }*/ } else { tableName = btmTypeList.get(0).getTableName(); } return tableName; } /** * æ ¡éªä¸å¡ç±»åçæ°æ®åºè¡¨ä¸æ¯å¦ææ°æ® * * @param id ä¸å¡ç±»åçè±æåç§° * @return trueè¡¨ç¤ºææ°æ®ï¼falseè¡¨ç¤ºæ²¡ææ°æ® * @throws VciBaseException åæ°ä¸ºç©ºæè æ¥è¯¢åºéçæ¶å伿åºå¼å¸¸ */ @Override public boolean checkTableHasDataById(String id) throws VciBaseException { return checkTableHasDataByTableName(getTableNameByBtmTypeId(id)); } /** * æ¹éå°ä¸å¡ç±»ååå»ºæ°æ®åºè¡¨ @@ -480,16 +412,6 @@ ddlMapper.dropTableColumn(tableName, columnName); } /** * æ ¡éªä¸å¡ç±»åæè 龿¥ç±»åç对åºçè¡¨æ ¼æ¯å¦åå¨ * * @param pkBtmType ä¸å¡ç±»åæè 龿¥ç±»åçè¡¨æ ¼ * @return true表示åå¨ï¼false表示ä¸åå¨ */ @Override public boolean checkTableExist(String pkBtmType) { return checkTableExistByTableName(getTableNameByBtmTypeOid(pkBtmType)); } /** * æ ¹æ®è¡¨æ ¼çåç§°å¤æè¡¨æ ¼æ¯å¦åå¨ @@ -502,16 +424,6 @@ return ddlMapper.checkTableExist(tableName) > 0; } /** * æ ¡éªä¸å¡ç±»åæè 龿¥ç±»åæå¯¹åºçè¡¨æ ¼æ¯å¦åå¨ * * @param id ä¸å¡ç±»åæè 龿¥ç±»åçè±æåç§° * @return true表示åå¨ï¼false表示ä¸åå¨ */ @Override public boolean checkTableExistById(String id) { return checkTableExistByTableName(getTableNameByBtmTypeId(id)); } /** * è·åæ°æ®åºåä¸å¡ç±»åä¸çä¸åçå°æ¹ @@ -1132,4 +1044,55 @@ } return new ArrayList<>(); } /** * æ£æ¥æ°æ®è¡¨æ¯å¦å卿°æ®ï¼ä¸åå¨åå é¤ * * @param tableCheckDTOList éè¦æ£æ¥ç表éå * @return æ£æ¥ç»æ */ @Override public TableCheckResultDTO checkTableHasDataThenDelete(List<TableCheckDTO> tableCheckDTOList) { TableCheckResultDTO resultDTO = new TableCheckResultDTO(); List<TableCheckDTO> successList = new ArrayList<>(); List<TableCheckDTO> failList = new ArrayList<>(); tableCheckDTOList.forEach(table -> { VciBaseUtil.alertNotNull(table.getTableName(),"æ°æ®è¡¨åç§°"); TableCheckDTO checkDTO = new TableCheckDTO(); boolean hasDataFlag = checkTableHasDataByTableName(table.getTableName()); if (hasDataFlag){ table.setDone(false); failList.add(checkDTO); }else { dropTableByName(table.getTableName()); table.setDone(true); successList.add(table); } }); if (!CollectionUtils.isEmpty(successList)){ resultDTO.setSuccessList(successList); } if (!CollectionUtils.isEmpty(failList)){ resultDTO.setFailList(failList); } return resultDTO; } /** * 为表添å åæ®µ * * @param addColumnDTO æ·»å ç对象 * @return æ§è¡ç»ææ è¯ */ @Override public Boolean addColumnForTable(TableAddColumnDTO addColumnDTO) { VciBaseUtil.alertNotNull(addColumnDTO,"æ·»å åæ®µç对象"); if (!CollectionUtils.isEmpty(addColumnDTO.getLinkTypeAttributeVOList())){ addColumn2TableForLink(addColumnDTO.getLinkTypeAttributeVOList()); } if(!CollectionUtils.isEmpty(addColumnDTO.getBtmTypeAttributeVOList())){ addColumn2TableForBtm(addColumnDTO.getBtmTypeAttributeVOList()); } return true; } } Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/AttributeController.java
@@ -27,8 +27,6 @@ import springfox.documentation.annotations.ApiIgnore; import javax.validation.Valid; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; @@ -74,7 +72,7 @@ @ApiOperationSupport(order = 2) @ApiOperation(value = "æ¥è¯¢å表", notes = "ä¼ å ¥æ¥è¯¢") public R<List<AttributeVO>> list(@ApiIgnore @RequestParam Map<String, Object> condition) { return R.data(AttributeWrapper.build().listEntityVO(attributeService.list(Condition.getQueryWrapper(condition, Attribute.class).lambda().orderByAsc(Attribute::getKey)))); return R.data(AttributeWrapper.build().listEntityVO(attributeService.list(Condition.getQueryWrapper(condition, Attribute.class).lambda().orderByAsc(Attribute::getId)))); } /** @@ -89,7 +87,7 @@ @ApiOperation(value = "æ¥è¯¢å表", notes = "ä¼ å ¥æ¥è¯¢") public R<IPage<AttributeVO>> pageList(@ApiIgnore @RequestParam Map<String, Object> condition, Query query) { IPage<AttributeVO> pageVO = new Page<>(); IPage<Attribute> page = attributeService.page(Condition.getPage(query), Condition.getQueryWrapper(condition, Attribute.class).lambda().orderByAsc(Attribute::getKey)); IPage<Attribute> page = attributeService.page(Condition.getPage(query), Condition.getQueryWrapper(condition, Attribute.class).lambda().orderByAsc(Attribute::getId)); BeanUtil.copy(page,pageVO); pageVO.setRecords( AttributeWrapper.build().listEntityVO(page.getRecords())); return R.data(pageVO); @@ -107,13 +105,13 @@ if (StringUtil.isNotBlank(notInStr)){ List<String> notInList = Func.toStrList(",", notInStr); if (!CollectionUtils.isEmpty(notInList)){ wrapper = wrapper.notIn(Attribute::getKey,notInList); wrapper = wrapper.notIn(Attribute::getId,notInList); } } if (StringUtil.isNotBlank(key)){ wrapper = wrapper.like(Attribute::getKey,key); wrapper = wrapper.like(Attribute::getId,key); } IPage<Attribute> page = attributeService.page(Condition.getPage(query),wrapper.orderByAsc(Attribute::getKey)); IPage<Attribute> page = attributeService.page(Condition.getPage(query),wrapper.orderByAsc(Attribute::getId)); IPage<AttributeVO> pageVO = new Page<>(); BeanUtil.copy(page,pageVO); pageVO.setRecords(AttributeWrapper.build().listEntityVO(page.getRecords())); @@ -149,13 +147,13 @@ /** * æ¥çåºç¨èå´ * @param id ä¸»é® * @param oid ä¸»é® * @return æ¥è¯¢ç»æ */ @GetMapping("/applyRange") @GetMapping("/apply-range") @ApiOperationSupport(order = 5) @ApiOperation(value = "æ¥çåºç¨èå´",notes = "ä¼ å ¥ä¸»é®") public R applyRange(Long id){ return R.data(attributeService.applyRange(id)); public R applyRange(String oid){ return R.data(attributeService.applyRange(oid)); } } Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/AttributeClient.java
@@ -38,6 +38,6 @@ public R<List<Attribute>> getList(String key) { Map<String,Object> condition = new HashMap<>(); condition.put("key",key); return R.data(service.list(Condition.getQueryWrapper(condition, Attribute.class).lambda().orderByAsc(Attribute::getKey))); return R.data(service.list(Condition.getQueryWrapper(condition, Attribute.class).lambda().orderByAsc(Attribute::getId))); } } Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/AttributeMapper.java
@@ -1,6 +1,8 @@ package com.vci.ubcs.omd.mapper; import com.vci.ubcs.omd.entity.Attribute; import com.vci.ubcs.omd.entity.BtmType; import com.vci.ubcs.omd.vo.BtmTypeVO; import org.springblade.core.mp.mapper.BladeMapper; import java.util.Collection; @@ -21,9 +23,9 @@ List<Attribute> selectAll(); /** * 䏻鮿¹éæ¥è¯¢ * @param primaryKeyCollection 主é®éå * @return æ¥è¯¢ç»æ * æ¥è¯¢åºç¨çä¸å¡ç±»å * @param oid * @return */ List<Attribute> selectByPrimaryKeyCollection(Collection<String> primaryKeyCollection); List<BtmType> selectApplyRange(String oid); } Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/LinkTypeAttributeMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,14 @@ package com.vci.ubcs.omd.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.vci.ubcs.omd.entity.LinkTypeAttribute; /** * Description: 龿¥ç±»åå å«å±æ§çæ°æ®å± * * @author LiHang * @date 2023/5/24 */ public interface LinkTypeAttributeMapper extends BaseMapper<LinkTypeAttribute> { } Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/LinkTypeMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,13 @@ package com.vci.ubcs.omd.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.vci.ubcs.omd.entity.LinkType; /** * Description: * * @author LiHang * @date 2023/5/24 */ public interface LinkTypeMapper extends BaseMapper<LinkType> { } Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/repeater/DomainRepeater.java
@@ -9,6 +9,9 @@ import com.alibaba.nacos.api.naming.pojo.Instance; import com.vci.ubcs.common.constant.LauncherConstant; import com.vci.ubcs.omd.dto.BtmAndLinkTypeDdlDTO; import com.vci.ubcs.omd.dto.TableAddColumnDTO; import com.vci.ubcs.omd.dto.TableCheckDTO; import com.vci.ubcs.omd.dto.TableCheckResultDTO; import com.vci.ubcs.omd.vo.BtmTypeVO; import com.vci.ubcs.omd.vo.DomainVO; import com.vci.ubcs.omd.vo.LinkTypeVO; @@ -16,6 +19,7 @@ import org.springblade.core.launch.constant.AppConstant; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.BeanUtil; import org.springblade.core.tool.utils.StringPool; import org.springblade.core.tool.utils.StringUtil; import org.springframework.beans.factory.annotation.Autowired; @@ -63,6 +67,16 @@ public static final String API_CHECK_DIFFERENT_REFLEX = API_PREFIX + StringPool.SLASH + "checkDifferentAndReflex"; /** * æ£æ¥æ°æ®è¡¨æ¯å¦ææ°æ®ï¼æ²¡ææéæ±å é¤ */ public static final String API_CHECK_TABLE_HAS_DATA_THEN_DELETE = API_PREFIX + StringPool.SLASH + "checkTableHasDataThenDelete"; /** * æ°æ®è¡¨æ·»å åæ®µ */ public static final String API_TABLE_ADD_COLUMN = API_PREFIX + StringPool.SLASH + "addColumnForTable"; /** * ç¨äºæå»ºéææå¡ç±» */ public static DomainRepeater domainRepeater; @@ -92,6 +106,60 @@ return R.fail(String.valueOf(responseEntity.getStatusCode().value())); } /** * æ£æ¥æ°æ®è¡¨æ¯å¦å卿°æ®ï¼å¦æä¸åå¨åå é¤ * @param checkList éè¦æ£æ¥ç表éå * @return æ£æ¥ç»æ * @throws NacosException æ¾ä¸å°æå¡çæ¶å伿åºå¼å¸¸ */ public static R checkTableHasDataByTableNameThenDrop(List<TableCheckDTO> checkList) throws NacosException { Map<String, List<TableCheckDTO>> serviceMap = checkList.stream().collect(Collectors.groupingBy(TableCheckDTO::getDomain)); List<TableCheckResultDTO> result = new ArrayList<>(); for (String key : serviceMap.keySet()) { String url = getUrl(key, API_CHECK_TABLE_HAS_DATA_THEN_DELETE); ResponseEntity<R> responseEntity = executePost(url, JSONObject.toJSONString(serviceMap.get(key)), new HashMap<>(16)); if (responseEntity.getStatusCode().equals(HttpStatus.OK)) { R r = responseEntity.getBody(); if (r.getData() instanceof List){ List dataList = (List) r.getData(); dataList.forEach(data -> { TableCheckResultDTO dto = BeanUtil.copy(JSON.parseObject(JSON.toJSONString(data)), TableCheckResultDTO.class); result.add(dto); }); } } } return R.data(result); } /** * 为表添å åæ®µ * @param addColumnDTO æ·»å ç对象 * @param serviceName æå¡å * @return æ§è¡ç»æ * @throws NacosException æ¾ä¸å°æå¡æ¶æåºå¼å¸¸ */ public static R addColumnForTable(TableAddColumnDTO addColumnDTO, String serviceName) throws NacosException { try { String url = getUrl(serviceName,API_TABLE_ADD_COLUMN); ResponseEntity<R> responseEntity = executePost(url, JSONObject.toJSONString(addColumnDTO), null); if (responseEntity.getStatusCode().equals(HttpStatus.OK)) { R body = Objects.requireNonNull(responseEntity.getBody()); return body; } return R.fail(String.valueOf(responseEntity.getStatusCode().value())); }catch (HttpClientErrorException e) { if (HttpStatus.NOT_FOUND.equals(e.getStatusCode())) { R fail = R.fail("è°ç¨æå¡å¤±è´¥"); fail.setCode(HttpStatus.NOT_FOUND.value()); return fail; } } catch (Exception e) { throw new RuntimeException(e); } return R.fail("æªç¥é误"); } @PostConstruct private void init() { domainRepeater = this; Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IAttributeService.java
@@ -4,6 +4,7 @@ import com.vci.ubcs.omd.dto.BtmTypeLinkAttributesDTO; import com.vci.ubcs.omd.entity.Attribute; import com.vci.ubcs.omd.vo.AttributeVO; import com.vci.ubcs.omd.vo.BtmTypeVO; import com.vci.ubcs.starter.exception.VciBaseException; import org.springblade.core.mp.base.BaseService; @@ -42,10 +43,10 @@ /** * æ¥çåºç¨èå´ * @param id ä¸»é® * @param oid ä¸»é® * @return æ¥è¯¢å·²åºç¨çä¸å¡ç±»ååç§° */ List<String> applyRange(Long id); List<BtmTypeVO> applyRange(String oid); /** * æ£æ¥å±æ§æ¯å¦åå¨ Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/ILinkTypeAttributeService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,35 @@ package com.vci.ubcs.omd.service; import com.baomidou.mybatisplus.extension.service.IService; import com.vci.ubcs.omd.entity.LinkTypeAttribute; import com.vci.ubcs.omd.vo.LinkTypeAttributeVO; import java.util.List; /** * Description: 龿¥ç±»åå å«å±æ§çæå¡æ¥å£ * * @author LiHang * @date 2023/5/24 */ public interface ILinkTypeAttributeService extends IService<LinkTypeAttribute> { /** * æ¹éå é¤ * @param oids 主é®éå */ void batchDeleteByOids(List<String> oids); /** * æ ¡éªå±æ§æ¯å¦ç¬¦åè¦æ± * @param attributeVO 屿§æ°æ®ä¼ è¾å¯¹è±¡ */ void checkAttribute(LinkTypeAttributeVO attributeVO); /** * 䏻鮿¥è¯¢ * @param oid ä¸»é® * @return æ¥è¯¢ç»æ */ LinkTypeAttribute selectByPrimaryKey(String oid); } Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/ILinkTypeService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,206 @@ package com.vci.ubcs.omd.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.vci.ubcs.omd.entity.LinkType; import com.vci.ubcs.omd.vo.LinkTypeAttributeVO; import com.vci.ubcs.omd.vo.LinkTypeVO; import com.vci.ubcs.starter.exception.VciBaseException; import com.vci.ubcs.starter.web.pagemodel.PageHelper; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Set; /** * Description: 龿¥ç±»åçæå¡æ¥å£ * * @author LiHang * @date 2023/5/24 */ public interface ILinkTypeService extends IService<LinkType> { /** * è·å龿¥ç±»åå表 * @param conditionMap æ¥è¯¢æ¡ä»¶ * @param pageHelper å页信æ¯åæåºä¿¡æ¯ï¼é»è®¤ä½¿ç¨idæåº * @return 龿¥ç±»å对象å表 * @throws VciBaseException æ¥è¯¢åºéæ¶ä¼æåºå¼å¸¸ */ IPage<LinkTypeVO> listLinkType(Map<String,String> conditionMap, PageHelper pageHelper) throws VciBaseException; /** * æ ¹æ®ä¸»é®è·å龿¥ç±»å * @param pkLinkType 龿¥ç±»åä¸»é® * @return 龿¥ç±»åï¼å¦æä¸åå¨ä¼è¿ånull * @throws VciBaseException åæ°ä¸ºç©ºæè æ¥è¯¢åºéæ¶ä¼æåºé误 */ LinkTypeVO getLinkTypeByOid(String pkLinkType) throws VciBaseException; /** * æ ¹æ®ä¸»é®æ¹éè·å龿¥ç±»å * @param pkLinkTypes 龿¥ç±»å主é®ï¼ç¨éå·åé * @return 龿¥ç±»åå表ï¼å¦ææä¸åå¨çä¸ä¼è¿åï¼å ¨é¨ä¸åå¨çåè¿å空å表 * @throws VciBaseException åæ°ä¸ºç©ºæè æ¥è¯¢åºéæ¶ä¼æåºé误 */ List<LinkTypeVO> listLinkTypeByOids(String pkLinkTypes) throws VciBaseException; /** * æ¹éæ ¹æ®ä¸»é®è·å龿¥ç±»å * @param pkLinkTypeCollection 龿¥ç±»å主é®éå * @return 龿¥ç±»åå表ï¼å¦ææä¸åå¨çä¸ä¼è¿åï¼å ¨é¨ä¸åå¨çåè¿å空å表 * @throws VciBaseException åæ°ä¸ºç©ºæè æ¥è¯¢åºéæ¶ä¼æåºé误 */ List<LinkTypeVO> listLinkTypeByOidCollection(Collection<String> pkLinkTypeCollection) throws VciBaseException; /** * æ ¹æ®è±æåç§°è·å龿¥ç±»å * @param id è±æåç§° * @return 龿¥ç±»åï¼å¦æä¸åå¨ä¼è¿ånull * @throws VciBaseException */ LinkTypeVO getLinkTypeById(String id) throws VciBaseException; /** * æ ¹æ®è±æåç§°æ¹éè·å龿¥ç±»å * @param ids è±æåç§°ï¼ä½¿ç¨éå·åé * @return 龿¥ç±»åå表ï¼å¦ææä¸åå¨çä¸ä¼è¿åï¼å ¨é¨ä¸åå¨çåè¿å空å表 * @throws VciBaseException åæ°ä¸ºç©ºæè æ¥è¯¢åºéæ¶ä¼æåºé误 */ List<LinkTypeVO> listLinkTypeByIds(String ids) throws VciBaseException; /** * æ ¹æ®è±æåç§°éåæ¹éè·å龿¥ç±»å * @param linkTypeIdCollection è±æåç§°éåï¼ä½¿ç¨éå·åé * @return 龿¥ç±»åå表ï¼å¦ææä¸åå¨çä¸ä¼è¿åï¼å ¨é¨ä¸åå¨çåè¿å空å表 * @throws VciBaseException åæ°ä¸ºç©ºæè æ¥è¯¢åºéæ¶ä¼æåºé误 */ List<LinkTypeVO> listLinkTypeByIdCollection(Collection<String> linkTypeIdCollection) throws VciBaseException; /** * è·å龿¥ç±»åçæå®å±æ§ * @param id 龿¥ç±»åçè±æåç§° * @param attributeIdCollection 屿§çéåï¼å¦æä¸ºç©ºåè·åå ¨é¨ * @return 屿§çæ¾ç¤ºå¯¹è±¡ */ List<LinkTypeAttributeVO> listAttributeVOByIdsForLink(String id, Collection<String> attributeIdCollection); /** * æ ¹æ®é¾æ¥ç±»å主é®è·å䏿åç§° * @param oid 龿¥ç±»åä¸»é® * @return 䏿åç§°ï¼å¦æä¸åå¨ä¼è¿ånull;å¤ä¸ªä¼ä»¥éå·åé * @throws VciBaseException åæ°ä¸ºç©ºæè æ¥è¯¢åºéæ¶ä¼æåºé误 */ String getNameByOid(String oid) throws VciBaseException; /** * æ ¹æ®é¾æ¥ç±»åè±æåç§°è·å䏿åç§° * @param id 龿¥ç±»åè±æåç§° * @return 䏿åç§°ï¼å¦æä¸åå¨ä¼è¿ånull;å¤ä¸ªä¼ä»¥éå·åé * @throws VciBaseException åæ°ä¸ºç©ºæè æ¥è¯¢åºéæ¶ä¼æåºé误 */ String getNameById(String id) throws VciBaseException; /** * æ·»å 龿¥ç±»å * @param linkTypeVO 龿¥ç±»åæ¾ç¤ºå¯¹è±¡ï¼åDTOå ±ç¨ï¼ * @return æ·»å åç龿¥ç±»å * @throws VciBaseException æ·»å åºéçæ¶å伿åºå¼å¸¸ */ LinkTypeVO addSave(LinkTypeVO linkTypeVO) throws VciBaseException; /** * æ·»å 龿¥ç±»å * @param linkTypeVO 龿¥ç±»åæ¾ç¤ºå¯¹è±¡ï¼åDTOå ±ç¨ï¼ * @param autoCreateTable èªå¨åå»ºè¡¨æ ¼ * @return æ·»å åç龿¥ç±»å * @throws VciBaseException æ·»å åºéçæ¶å伿åºå¼å¸¸ */ LinkTypeVO addSave(LinkTypeVO linkTypeVO,boolean autoCreateTable) throws VciBaseException; /** * ä¿®æ¹é¾æ¥ç±»å * @param linkTypeVO 龿¥ç±»åæ¾ç¤ºå¯¹è±¡ï¼åDTOå ±ç¨ï¼ * @return ä¿®æ¹åç龿¥ç±»å * @throws VciBaseException ä¿®æ¹åºéçæ¶å伿åºå¼å¸¸ */ LinkTypeVO editSave(LinkTypeVO linkTypeVO) throws VciBaseException; /** * ä¿®æ¹é¾æ¥ç±»å * @param linkTypeVO 龿¥ç±»åæ¾ç¤ºå¯¹è±¡ï¼åDTOå ±ç¨ï¼ * @param autoCreateTable èªå¨åå»ºè¡¨æ ¼ * @return ä¿®æ¹åç龿¥ç±»å * @throws VciBaseException ä¿®æ¹åºéçæ¶å伿åºå¼å¸¸ */ LinkTypeVO editSave(LinkTypeVO linkTypeVO,boolean autoCreateTable) throws VciBaseException; /** * å é¤é¾æ¥ç±»å * @param linkTypeVO 龿¥ç±»åæ¾ç¤ºå¯¹è±¡ * @throws VciBaseException 妿龿¥ç±»å被å¼ç¨ï¼æè å é¤åºéæ¶ä¼æåºå¼å¸¸ */ void delete(LinkTypeVO linkTypeVO) throws VciBaseException; /** * æ¹éå é¤é¾æ¥ç±»å * @param linkTypeVOList è¦å é¤ç龿¥ç±»åæ¾ç¤ºå¯¹è±¡å表 * @throws VciBaseException 妿龿¥ç±»å被å¼ç¨ï¼æè å é¤åºéæ¶ä¼æåºå¼å¸¸ */ void batchDelete(List<LinkTypeVO> linkTypeVOList) throws VciBaseException; /** * ä¸ºé¾æ¥ç±»åæ·»å 屿§å¯¹è±¡ * @param attributeVO 屿§æ¾ç¤ºå¯¹è±¡ * @param tableName 表å * @throws VciBaseException åæ°ä¸ºç©ºæè æ¥è¯¢åºéçæ¶å伿åºå¼å¸¸ */ void addSaveAttribute(LinkTypeAttributeVO attributeVO,String tableName,String serviceName) throws VciBaseException; /** * ä¸ºé¾æ¥ç±»åæ·»å 屿§å¯¹è±¡ * @param attributeVO 屿§æ¾ç¤ºå¯¹è±¡ * @param tableName 表å * @param autoAdd2Table æ¯å¦èªå¨æ·»å å°è¡¨æ ¼ä¸ * @throws VciBaseException åæ°ä¸ºç©ºæè æ¥è¯¢åºéçæ¶å伿åºå¼å¸¸ */ void addSaveAttribute(LinkTypeAttributeVO attributeVO,String tableName,boolean autoAdd2Table,String serviceName) throws VciBaseException; /** * æ£æ¥æä¸ªä¸»é®ç龿¥ç±»åæ¯å¦åå¨ * @param pkLinkType 龿¥ç±»åä¸»é® * @return true表示åå¨ï¼false表示ä¸åå¨ * @throws VciBaseException æ¥è¯¢åºéæè åæ°ä¸ºç©ºçæ¶åæåºå¼å¸¸ */ boolean checkLinkTypeExist(String pkLinkType) throws VciBaseException; /** * ä¸ºé¾æ¥ç±»åä¿®æ¹å±æ§å¯¹è±¡ * @param attributeVO 屿§æ¾ç¤ºå¯¹è±¡ * @throws VciBaseException åæ°ä¸ºç©ºæè æ¥è¯¢åºéçæ¶å伿åºå¼å¸¸ */ void editSaveAttribute(LinkTypeAttributeVO attributeVO,String tableName,String domain) throws VciBaseException; /** * ä¸ºé¾æ¥ç±»åä¿®æ¹å±æ§å¯¹è±¡ * @param attributeVO 屿§æ¾ç¤ºå¯¹è±¡ * @param autoEdit2Table æ¯å¦èªå¨ä¿®æ¹å°è¡¨æ ¼ * @throws VciBaseException åæ°ä¸ºç©ºæè æ¥è¯¢åºéçæ¶å伿åºå¼å¸¸ */ void editSaveAttribute(LinkTypeAttributeVO attributeVO,String tableName,String domain,boolean autoEdit2Table) throws VciBaseException; /** * è·å龿¥ç±»åçæ°æ®åºè¡¨åç§° * @param id 龿¥ç±»åçè±æåç§° * @param domain é¢åå¼ * @return æ°æ®åºè¡¨åç§° */ String getTableName(String id,String domain) ; /** * è·åææä½¿ç¨çä¸å¡ç±»åçè±æåç§°ï¼è½¬æ¢ä¸ºå°å * @return è±æåç§°è±æå°å */ Set<String> listUsedBtmType(); } Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IModifyAttributeService.java
@@ -1,7 +1,10 @@ package com.vci.ubcs.omd.service; import com.vci.ubcs.omd.entity.ModifyAttributeInfo; import com.vci.ubcs.starter.exception.VciBaseException; import org.springblade.core.mp.base.BaseService; import java.util.List; /** * Description:éè¦ä¿®æ¹æ°æ®åºè¡¨ä¸å段çä¿¡æ¯æå¡ @@ -10,4 +13,11 @@ * @date 2023/5/4 */ public interface IModifyAttributeService extends BaseService<ModifyAttributeInfo> { /** * å®æè°æ´ * @param modifyAttributeInfoDOList å®æè°æ´çä¿¡æ¯ * @throws VciBaseException ä¿®æ¹åºéçæ¶å伿åºå¼å¸¸ */ void finishModify(List<ModifyAttributeInfo> modifyAttributeInfoDOList) throws VciBaseException; } Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/AttributeServiceImpl.java
@@ -4,15 +4,22 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.vci.ubcs.omd.constant.OmdCacheConstant; import com.vci.ubcs.omd.dto.AttributeDTO; import com.vci.ubcs.omd.dto.BtmTypeLinkAttributesDTO; import com.vci.ubcs.omd.entity.Attribute; import com.vci.ubcs.omd.entity.BtmType; import com.vci.ubcs.omd.entity.BtmTypeAttribute; import com.vci.ubcs.omd.mapper.AttributeMapper; import com.vci.ubcs.omd.mapper.BtmTypeMapper; import com.vci.ubcs.omd.service.IAttributeService; import com.vci.ubcs.omd.vo.AttributeVO; import com.vci.ubcs.omd.vo.BtmTypeVO; import com.vci.ubcs.omd.wrapper.AttributeWrapper; import com.vci.ubcs.omd.wrapper.BtmTypeWrapper; import com.vci.ubcs.starter.exception.VciBaseException; import com.vci.ubcs.starter.util.Map2MPJLambdaUtil; import com.vci.ubcs.starter.web.constant.OmdRegExpConstant; import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum; import com.vci.ubcs.starter.web.util.VciBaseUtil; @@ -21,14 +28,17 @@ import org.springblade.core.tool.constant.BladeConstant; import org.springblade.core.tool.utils.BeanUtil; import org.springblade.core.tool.utils.Func; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import javax.validation.constraints.NotEmpty; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Set; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -40,6 +50,11 @@ */ @Service public class AttributeServiceImpl extends ServiceImpl<AttributeMapper, Attribute> implements IAttributeService { private final String REGEXP = "^[A-Za-z]+$"; @Resource private BtmTypeMapper btmTypeMapper; @Override public boolean deleteLogic(@NotEmpty List<Long> ids) { @@ -71,12 +86,14 @@ */ @Override public boolean submit(AttributeDTO dto) { LambdaQueryWrapper<Attribute> wrapper = Wrappers.<Attribute>query().lambda().eq(Attribute::getKey, dto.getKey()); if (Pattern.compile(REGEXP).matcher(dto.getId()).matches()){ throw new VciBaseException("屿§åç§°{0}åªè½æ¯è±æ",new Object[]{dto.getId()}); } LambdaQueryWrapper<Attribute> wrapper = Wrappers.<Attribute>query().lambda().eq(Attribute::getId, dto.getId()); Long count = baseMapper.selectCount((Func.isEmpty(dto.getId())) ? wrapper : wrapper.notIn(Attribute::getId, dto.getId())); if (count > 0L) { throw new ServiceException("屿§åå·²åå¨!"); } dto.setIsDeleted(BladeConstant.DB_NOT_DELETED); Attribute omdAttribute = BeanUtil.copy(dto, Attribute.class); CacheUtil.clear(OmdCacheConstant.ATTR_CACHE); return saveOrUpdate(omdAttribute); @@ -97,18 +114,27 @@ /** * æ¥çåºç¨èå´ * * @param id ä¸»é® * @param oid ä¸»é® * @return æ¥è¯¢å·²åºç¨çä¸å¡ç±»ååç§° */ @Override public List<String> applyRange(Long id) { return new ArrayList<>(); public List<BtmTypeVO> applyRange(String oid) { List<BtmType> btmTypes = baseMapper.selectApplyRange(oid); if (!CollectionUtils.isEmpty(btmTypes)){ return btmTypes.stream().map(btm -> { BtmTypeVO vo = new BtmTypeVO(); vo.setId(btm.getId()); vo.setName(btm.getName()); return vo; }).collect(Collectors.toList()); } return null; } /** * æ£æ¥å±æ§æ¯å¦åå¨ * * @param keyCollections è±æåç§°éå * @param keyCollections ç¼å·éå * @return true表示é½åå¨ï¼false表示ä¸åå¨ï¼ä¸åå¨çæ¶å伿åºå¼å¸¸ * @throws VciBaseException ä¸åå¨çæ¶å伿åºå¼å¸¸ */ @@ -118,9 +144,9 @@ if (CollectionUtils.isEmpty(existAttributeVOList)) { throw new VciBaseException("使ç¨ç屿§é½å¨ç³»ç»ä¸ä¸åå¨ï¼è¯·å æ¥è¯"); } else { Set<String> existAttributeIdSet = (existAttributeVOList.stream().collect(Collectors.toMap(s -> s.getKey().toLowerCase().trim(), t -> t))).keySet(); Set<String> existAttributeOidSet = (existAttributeVOList.stream().collect(Collectors.toMap(s -> s.getId().toLowerCase().trim(), t -> t))).keySet(); keyCollections.stream().forEach(s -> { if (!existAttributeIdSet.contains(s)) { if (!existAttributeOidSet.contains(s)) { throw new VciBaseException("使ç¨ç屿§{0}å¨ç³»ç»ä¸ä¸åå¨ï¼è¯·å æ¥è¯", new Object[]{s}); } }); @@ -129,9 +155,9 @@ } /** * æ ¹æ®è±æåç§°éåæ¹éè·å屿§å¯¹è±¡ * æ ¹æ®ç¼å·éåæ¹éè·å屿§å¯¹è±¡ * * @param attributeIdCollection è±æåç§°éå * @param attributeIdCollection ç¼å·éå * @return 屿§å¯¹è±¡å表ï¼å¦ææä¸åå¨çä¸ä¼è¿åï¼å ¨é¨ä¸åå¨çåè¿å空å表 * @throws VciBaseException åæ°ä¸ºç©ºæè æ¥è¯¢åºéæ¶ä¼æåºé误 */ @@ -147,8 +173,8 @@ } /** * æ ¹æ®è±æåç§°éåè·å屿§æ°æ®å¯¹è±¡ * @param attributeIdCollection 屿§çè±æåç§°éå * æ ¹æ®ç¼å·éåè·å屿§æ°æ®å¯¹è±¡ * @param attributeIdCollection 屿§çç¼å·éå * @return 屿§æ°æ®å¯¹è±¡å表ï¼å¦ææä¸åå¨çä¸ä¼è¿åï¼å ¨é¨ä¸åå¨çåè¿å空å表 * @throws VciBaseException mybatisæ¥è¯¢åºéçæ¶å伿åºå¼å¸¸ */ @@ -159,7 +185,7 @@ Collection<Collection<String>> idCollections = VciBaseUtil.switchCollectionForOracleIn(distAttributeIdCollection); if(!CollectionUtils.isEmpty(idCollections)) { idCollections.stream().forEach(s -> { List<Attribute> attributeDOS = baseMapper.selectList(Wrappers.<Attribute>query().lambda().in(Attribute::getKey, s)); List<Attribute> attributeDOS = baseMapper.selectList(Wrappers.<Attribute>query().lambda().in(Attribute::getId, s)); if(!CollectionUtils.isEmpty(attributeDOS)){ attributeDOList.addAll(attributeDOS); } @@ -173,7 +199,7 @@ /** * 夿屿§çå 容æ¯å¦ç¬¦åè¦æ± * * @param id 屿§çä¸»é® * @param id 屿§çç¼å· * @param attrDataType 屿§çç±»å * @param attributeLength 屿§çé¿åº¦ * @param defaultValue é»è®¤å¼ @@ -184,26 +210,26 @@ public boolean checkAttributePass(String id, String attrDataType, Integer attributeLength, String defaultValue) throws VciBaseException { String attributeDataTypeText = VciFieldTypeEnum.getTextByValue(attrDataType); if(StringUtils.isBlank(attributeDataTypeText)){ throw new VciBaseException("è±æå称为{0}ç屿§çç±»åä¸ç¬¦åè¦æ±",new Object[]{id}); throw new VciBaseException("ç¼å·ä¸º{0}ç屿§çç±»åä¸ç¬¦åè¦æ±",new Object[]{id}); } //å¿ é¡»è¦è¾å ¥é¿åº¦ if( VciBaseUtil.inArray(new String[] {VciFieldTypeEnum.VTString.name()},attrDataType) && (attributeLength == null ||attributeLength < 1)){ throw new VciBaseException("è±æå称为{0}ç屿§ç为{1}ç±»åæ¶ï¼å¿ é¡»è¦è¾å ¥é¿åº¦çå¼",new Object[]{id,attributeDataTypeText}); throw new VciBaseException("ç¼å·ä¸º{0}ç屿§ç为{1}ç±»åæ¶ï¼å¿ é¡»è¦è¾å ¥é¿åº¦çå¼",new Object[]{id,attributeDataTypeText}); } //夿é»è®¤å¼ if(StringUtils.isNotBlank(defaultValue)){ if(VciFieldTypeEnum.VTDouble.name().equalsIgnoreCase(attrDataType) && !defaultValue.matches(OmdRegExpConstant.DOUBLE)){ throw new VciBaseException("è±æå称为{0}ç屿§çé»è®¤å¼ä¸æ¯å精度类å",new Object[]{id}); throw new VciBaseException("ç¼å·ä¸º{0}ç屿§çé»è®¤å¼ä¸æ¯å精度类å",new Object[]{id}); } if(VciFieldTypeEnum.VTInteger.name().equalsIgnoreCase(defaultValue) && !defaultValue.matches(OmdRegExpConstant.INT)){ throw new VciBaseException("è±æå称为{0}ç屿§çé»è®¤å¼ä¸æ¯æ´æ°å",new Object[]{id}); throw new VciBaseException("ç¼å·ä¸º{0}ç屿§çé»è®¤å¼ä¸æ¯æ´æ°å",new Object[]{id}); } if(VciFieldTypeEnum.VTLong.name().equalsIgnoreCase(defaultValue) && !defaultValue.matches(OmdRegExpConstant.LONG)){ throw new VciBaseException("è±æå称为{0}ç屿§çé»è®¤å¼ä¸æ¯é¿æ´å½¢",new Object[]{id}); throw new VciBaseException("ç¼å·ä¸º{0}ç屿§çé»è®¤å¼ä¸æ¯é¿æ´å½¢",new Object[]{id}); } } return true; @@ -218,7 +244,7 @@ */ @Override public boolean checkAttribute(BtmTypeLinkAttributesDTO attributesDTO) throws VciBaseException { VciBaseUtil.alertNotNull(attributesDTO.getId(), "屿§çè±æåç§°", attributesDTO.getName(), "屿§ç䏿åç§°", VciBaseUtil.alertNotNull(attributesDTO.getId(), "屿§çç¼å·", attributesDTO.getName(), "屿§çåç§°", attributesDTO.getAttrDataType(), "屿§çæ°æ®ç±»å"); boolean pass = checkAttributePass(attributesDTO.getId(), attributesDTO.getAttrDataType(), attributesDTO.getAttributeLength(), attributesDTO.getDefaultValue()); if (!pass){ Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java
@@ -6,7 +6,7 @@ import com.alibaba.nacos.api.exception.NacosException; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.vci.ubcs.omd.cache.EnumCache; import com.vci.ubcs.omd.constant.BtmTypeConstant; import com.vci.ubcs.omd.constant.BtmTypeFieldConstant; import com.vci.ubcs.omd.dto.BtmAndLinkTypeDdlDTO; import com.vci.ubcs.omd.entity.Attribute; @@ -722,7 +722,7 @@ btmType.setOid(VciBaseUtil.getPk()); btmType.setTs(now); btmType.setCreator(user); btmType.setBtmName("btmType"); btmType.setBtmName(BtmTypeConstant.BTMTYPE); btmType.setCreateTime(now); btmType.setDomain(domain); btmType.setLastModifyTime(now); @@ -737,8 +737,8 @@ }).map(attr -> { // æ·»å 屿§ï¼1æ¯æ ¡éªï¼2æ¯æ·»å Attribute attribute = new Attribute(); attribute.setKey(attr.getId()); attribute.setLabel(attr.getName()); attribute.setId(attr.getId()); attribute.setName(attr.getName()); attribute.setTypeCode("attributeType"); attribute.setTypeKey(attr.getAttrDataType()); // attribute.setDictKey(attr.getAttrDataType()); @@ -751,10 +751,14 @@ attribute.setReferToId(attr.getReferBtmTypeId()); attribute.setReferToName(attr.getReferBtmTypeName()); attribute.setTs(now); attribute.setOwner(user); attribute.setCreateTime(now); attribute.setIsDeleted(0); attribute.setCreateUser(AuthUtil.getUserId()); idAttrMap.put(attribute.getKey(),attribute); attribute.setLastModifier(user); attribute.setLastModifyTime(now); attribute.setBtmName(BtmTypeConstant.ATTRIBUTE); attribute.setCreator(user); attribute.setOid(VciBaseUtil.getPk()); idAttrMap.put(attribute.getId(),attribute); // å¨è¿éç»ä¸å¡ç±»åè®¾ç½®çæ¬æ§å¶ãçå½å¨ææ§å¶ãå¯çº§æ§å¶ç¸å ³çä¿¡æ¯ // æ·»å ä¸å¡ç±»åå屿§çå ³ç³» @@ -764,7 +768,6 @@ btmTypeAttribute.setCreateTime(now); btmTypeAttribute.setLastModifier(user); btmTypeAttribute.setLastModifyTime(now); // btmTypeAttribute.setBtmName("btmTypeAttribute"); btmTypeAttribute.setOid(VciBaseUtil.getPk()); btmTypeAttribute.setBtmName(btmType.getId()); btmTypeAttribute.setOwner(user); @@ -778,7 +781,7 @@ btmType.setConsistence(BooleanEnum.TRUE.getValue()); btmList.add(btmType); }); List<Attribute> existAttr = attributeService.list(Wrappers.<Attribute>query().lambda().in(Attribute::getKey, attributeIds)); List<Attribute> existAttr = attributeService.list(Wrappers.<Attribute>query().lambda().in(Attribute::getId, attributeIds)); if (!CollectionUtils.isEmpty(btmList)){ baseMapper.batchInsert(btmList); } @@ -800,7 +803,7 @@ if (CollectionUtils.isEmpty(existAttr)){ attributeService.saveBatch(idAttrMap.values()); }else { List<Attribute> addList = idAttrMap.values().stream().filter(a -> existAttr.stream().noneMatch(b -> StringUtils.equals(a.getKey(), b.getKey()))).collect(Collectors.toList()); List<Attribute> addList = idAttrMap.values().stream().filter(a -> existAttr.stream().noneMatch(b -> StringUtils.equals(a.getId(), b.getId()))).collect(Collectors.toList()); if (!CollectionUtils.isEmpty(addList)) { attributeService.saveBatch(addList); } Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/LinkTypeAttributeServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,59 @@ package com.vci.ubcs.omd.service.impl; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.vci.ubcs.omd.entity.LinkTypeAttribute; import com.vci.ubcs.omd.mapper.LinkTypeAttributeMapper; import com.vci.ubcs.omd.service.IAttributeService; import com.vci.ubcs.omd.service.ILinkTypeAttributeService; import com.vci.ubcs.omd.vo.LinkTypeAttributeVO; import com.vci.ubcs.starter.web.util.VciBaseUtil; import org.checkerframework.checker.units.qual.A; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; /** * Description: 龿¥ç±»åå å«å±æ§çæå¡ * * @author LiHang * @date 2023/5/24 */ @Service public class LinkTypeAttributeServiceImpl extends ServiceImpl<LinkTypeAttributeMapper, LinkTypeAttribute> implements ILinkTypeAttributeService { /** * 屿§æå¡ */ @Autowired private IAttributeService attributeService; /** * æ¹éå é¤ * * @param oids 主é®éå */ @Override public void batchDeleteByOids(List<String> oids) { baseMapper.delete(Wrappers.<LinkTypeAttribute>query().lambda().in(LinkTypeAttribute::getOid,oids)); } @Override public void checkAttribute(LinkTypeAttributeVO attributeVO) { VciBaseUtil.alertNotNull(attributeVO.getId(),"屿§çè±æåç§°",attributeVO.getName(),"屿§ç䏿åç§°", attributeVO.getAttrDataType(),"屿§çæ°æ®ç±»å"); attributeService.checkAttributePass(attributeVO.getId(),attributeVO.getAttrDataType(),attributeVO.getAttributeLength(),attributeVO.getDefaultValue()); } /** * 䏻鮿¥è¯¢ * * @param oid ä¸»é® * @return æ¥è¯¢ç»æ */ @Override public LinkTypeAttribute selectByPrimaryKey(String oid) { VciBaseUtil.alertNotNull(oid); return baseMapper.selectOne(Wrappers.<LinkTypeAttribute>query().lambda().eq(LinkTypeAttribute::getOid,oid)); } } Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/LinkTypeServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,868 @@ package com.vci.ubcs.omd.service.impl; import com.alibaba.cloud.commons.lang.StringUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.nacos.api.exception.NacosException; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper; import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; import com.baomidou.mybatisplus.extension.conditions.update.UpdateChainWrapper; import com.baomidou.mybatisplus.extension.kotlin.KtQueryChainWrapper; import com.baomidou.mybatisplus.extension.kotlin.KtUpdateChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.vci.ubcs.omd.constant.BtmTypeConstant; import com.vci.ubcs.omd.dto.BtmAndLinkTypeDdlDTO; import com.vci.ubcs.omd.dto.TableAddColumnDTO; import com.vci.ubcs.omd.dto.TableCheckDTO; import com.vci.ubcs.omd.dto.TableCheckResultDTO; import com.vci.ubcs.omd.entity.BtmType; import com.vci.ubcs.omd.entity.LinkType; import com.vci.ubcs.omd.entity.LinkTypeAttribute; import com.vci.ubcs.omd.entity.ModifyAttributeInfo; import com.vci.ubcs.omd.mapper.LinkTypeMapper; import com.vci.ubcs.omd.repeater.DomainRepeater; import com.vci.ubcs.omd.service.*; import com.vci.ubcs.omd.vo.LinkTypeAttributeVO; import com.vci.ubcs.omd.vo.LinkTypeVO; import com.vci.ubcs.omd.wrapper.LinkTypeAttributeWrapper; import com.vci.ubcs.omd.wrapper.LinkTypeWrapper; import com.vci.ubcs.starter.exception.VciBaseException; import com.vci.ubcs.starter.web.constant.RegExpConstant; import com.vci.ubcs.starter.web.pagemodel.PageHelper; import com.vci.ubcs.starter.web.util.VciBaseUtil; import com.vci.ubcs.starter.web.util.VciDateUtil; import org.springblade.core.launch.constant.AppConstant; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.BeanUtil; import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.StringPool; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cglib.beans.BeanMap; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.stereotype.Service; import org.springframework.transaction.TransactionDefinition; import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.support.DefaultTransactionDefinition; import org.springframework.util.CollectionUtils; import java.io.Serializable; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; /** * Description: 龿¥ç±»åçæå¡ * * @author LiHang * @date 2023/5/24 */ @Service public class LinkTypeServiceImpl extends ServiceImpl<LinkTypeMapper, LinkType> implements ILinkTypeService { /** * 龿¥ç±»åå ³è屿§çæå¡ */ @Autowired private ILinkTypeAttributeService linkTypeAttributeService; /** * ä¸å¡ç±»åæå¡ */ @Autowired private IBtmTypeService btmTypeService; /** * 屿§çæå¡ */ @Autowired private IAttributeService attributeService; /** * äºå¡ */ @Autowired private DataSourceTransactionManager dataSourceTransactionManager; /** * æ´æ¹ç屿§ä¿¡æ¯æå¡ */ @Autowired private IModifyAttributeService modifyAttributeService; public final String BTM_NAME = "linkType"; /** * 表ååç¼ */ public static final String PL = "PL"; /** * è·å龿¥ç±»åå表 * * @param conditionMap æ¥è¯¢æ¡ä»¶ * @param pageHelper å页信æ¯åæåºä¿¡æ¯ï¼é»è®¤ä½¿ç¨idæåº * @return 龿¥ç±»å对象å表 * @throws VciBaseException æ¥è¯¢åºéæ¶ä¼æåºå¼å¸¸ */ @Override public IPage<LinkTypeVO> listLinkType(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException { if (conditionMap == null){ conditionMap = new HashMap<>(16); } if (pageHelper == null) { pageHelper = new PageHelper(-1); } LinkType queryObj = new LinkType(); BeanMap.create(queryObj).putAll(conditionMap); Query query = new Query(); query.setCurrent(pageHelper.getPage()); query.setSize(pageHelper.getLimit()); return LinkTypeWrapper.build().pageVO(baseMapper.selectPage(Condition.getPage(query),Condition.getQueryWrapper(queryObj).lambda().orderByAsc(LinkType::getId))); } /** * æ ¹æ®ä¸»é®è·å龿¥ç±»å * * @param pkLinkType 龿¥ç±»åä¸»é® * @return 龿¥ç±»åï¼å¦æä¸åå¨ä¼è¿ånull * @throws VciBaseException åæ°ä¸ºç©ºæè æ¥è¯¢åºéæ¶ä¼æåºé误 */ @Override public LinkTypeVO getLinkTypeByOid(String pkLinkType) throws VciBaseException { VciBaseUtil.alertNotNull(pkLinkType,"龿¥ç±»åç主é®"); List<LinkTypeVO> linkTypeVOList = listLinkTypeByOids(pkLinkType); if(!CollectionUtils.isEmpty(linkTypeVOList)){ return linkTypeVOList.get(0); } return null; } /** * æ ¹æ®ä¸»é®æ¹éè·å龿¥ç±»å * * @param pkLinkTypes 龿¥ç±»å主é®ï¼ç¨éå·åé * @return 龿¥ç±»åå表ï¼å¦ææä¸åå¨çä¸ä¼è¿åï¼å ¨é¨ä¸åå¨çåè¿å空å表 * @throws VciBaseException åæ°ä¸ºç©ºæè æ¥è¯¢åºéæ¶ä¼æåºé误 */ @Override public List<LinkTypeVO> listLinkTypeByOids(String pkLinkTypes) throws VciBaseException { VciBaseUtil.alertNotNull(pkLinkTypes,"龿¥ç±»åç主é®"); List<String> pkList = Func.toStrList(",",pkLinkTypes); return listLinkTypeByOidCollection(pkList); } /** * æ¹éæ ¹æ®ä¸»é®è·å龿¥ç±»å * * @param pkLinkTypeCollection 龿¥ç±»å主é®éå * @return 龿¥ç±»åå表ï¼å¦ææä¸åå¨çä¸ä¼è¿åï¼å ¨é¨ä¸åå¨çåè¿å空å表 * @throws VciBaseException åæ°ä¸ºç©ºæè æ¥è¯¢åºéæ¶ä¼æåºé误 */ @Override public List<LinkTypeVO> listLinkTypeByOidCollection(Collection<String> pkLinkTypeCollection) throws VciBaseException { if(!CollectionUtils.isEmpty(pkLinkTypeCollection)){ List<LinkType> linkTypeDOList = listLinkTypeDOByOidCollection(pkLinkTypeCollection); if(!CollectionUtils.isEmpty(linkTypeDOList)) { return LinkTypeWrapper.build().listEntityVO(linkTypeDOList); } } return null; } /** * æ ¹æ®ä¸»é®éåæ¹éè·åæ°æ®å¯¹è±¡ * @param oidCollection 主é®éå * @return ä¸å¡ç±»åå表ï¼å¦ææä¸åå¨çä¸ä¼è¿åï¼å ¨é¨ä¸åå¨çåè¿å空å表 * @throws VciBaseException åæ°ä¸ºç©ºæè æ¥è¯¢åºéæ¶ä¼æåºé误 */ private List<LinkType> listLinkTypeDOByOidCollection(Collection<String> oidCollection) throws VciBaseException { if(!CollectionUtils.isEmpty(oidCollection)){ List<LinkType> linkTypeDOList = new ArrayList<>(); Collection<Collection<String>> pksCollections = VciBaseUtil.switchCollectionForOracleIn(oidCollection); if(CollectionUtils.isEmpty(pksCollections)) { return linkTypeDOList; } pksCollections.forEach(s -> { List<LinkType> linkTypeDOS = baseMapper.selectList(Wrappers.<LinkType>query().lambda().in(LinkType::getOid, s)); if(!CollectionUtils.isEmpty(linkTypeDOS)){ linkTypeDOList.addAll(linkTypeDOS); } }); } return null; } /** * æ ¹æ®è±æåç§°è·å龿¥ç±»å * * @param id è±æåç§° * @return 龿¥ç±»åï¼å¦æä¸åå¨ä¼è¿ånull * @throws VciBaseException */ @Override public LinkTypeVO getLinkTypeById(String id) throws VciBaseException { VciBaseUtil.alertNotNull(id,"龿¥ç±»åçè±æåç§°"); List<LinkTypeVO> linkTypeVOList = listLinkTypeByIds(id); if(CollectionUtils.isEmpty(linkTypeVOList)){ return null; } return linkTypeVOList.get(0); } /** * æ ¹æ®è±æåç§°æ¹éè·å龿¥ç±»å * * @param ids è±æåç§°ï¼ä½¿ç¨éå·åé * @return 龿¥ç±»åå表ï¼å¦ææä¸åå¨çä¸ä¼è¿åï¼å ¨é¨ä¸åå¨çåè¿å空å表 * @throws VciBaseException åæ°ä¸ºç©ºæè æ¥è¯¢åºéæ¶ä¼æåºé误 */ @Override public List<LinkTypeVO> listLinkTypeByIds(String ids) throws VciBaseException { VciBaseUtil.alertNotNull(ids,"龿¥ç±»åçè±æåç§°"); List<String> idList = Func.toStrList(",",ids); return listLinkTypeByIdCollection(idList); } /** * æ ¹æ®è±æåç§°éåæ¹éè·å龿¥ç±»å * * @param linkTypeIdCollection è±æåç§°éåï¼ä½¿ç¨éå·åé * @return 龿¥ç±»åå表ï¼å¦ææä¸åå¨çä¸ä¼è¿åï¼å ¨é¨ä¸åå¨çåè¿å空å表 * @throws VciBaseException åæ°ä¸ºç©ºæè æ¥è¯¢åºéæ¶ä¼æåºé误 */ @Override public List<LinkTypeVO> listLinkTypeByIdCollection(Collection<String> linkTypeIdCollection) throws VciBaseException { if(!CollectionUtils.isEmpty(linkTypeIdCollection)){ List<LinkType> linkTypeDOList = listLinkTypeDOByIdCollection(linkTypeIdCollection); if(!CollectionUtils.isEmpty(linkTypeDOList)) { return LinkTypeWrapper.build().listEntityVO(linkTypeDOList); } } return null; } /** * æ ¹æ®ä¸»é®éåæ¹éè·åæ°æ®å¯¹è±¡ * @param idCollection è±æåç§°éå * @return ä¸å¡ç±»åå表ï¼å¦ææä¸åå¨çä¸ä¼è¿åï¼å ¨é¨ä¸åå¨çåè¿å空å表 * @throws VciBaseException åæ°ä¸ºç©ºæè æ¥è¯¢åºéæ¶ä¼æåºé误 */ private List<LinkType> listLinkTypeDOByIdCollection(Collection<String> idCollection) throws VciBaseException { if(!CollectionUtils.isEmpty(idCollection)){ List<LinkType> linkTypeDOList = new ArrayList<>(); Collection<Collection<String>> pksCollections = VciBaseUtil.switchCollectionForOracleIn(idCollection); if(!CollectionUtils.isEmpty(pksCollections)) { pksCollections.forEach(s -> { List<LinkType> linkTypeDOS = baseMapper.selectList(Wrappers.<LinkType>query().lambda().in(LinkType::getId,s)); if(!CollectionUtils.isEmpty(linkTypeDOS)){ linkTypeDOList.addAll(linkTypeDOS); } }); } return linkTypeDOList; } return null; } /** * è·å龿¥ç±»åçæå®å±æ§ * * @param id 龿¥ç±»åçè±æåç§° * @param attributeIdCollection 屿§çéåï¼å¦æä¸ºç©ºåè·åå ¨é¨ * @return 屿§çæ¾ç¤ºå¯¹è±¡ */ @Override public List<LinkTypeAttributeVO> listAttributeVOByIdsForLink(String id, Collection<String> attributeIdCollection) { //ä¸ä¸ªè¡¨éä¸ä¼æ1000ä¸ªå±æ§ if(attributeIdCollection == null){ attributeIdCollection = new ArrayList<>(); } List<LinkTypeAttribute> attributeDOList = linkTypeAttributeService.list(Wrappers.<LinkTypeAttribute>query().lambda().in(LinkTypeAttribute::getId,attributeIdCollection)); return LinkTypeAttributeWrapper.build().listEntityVO(attributeDOList); } /** * æ ¹æ®é¾æ¥ç±»å主é®è·å䏿åç§° * * @param oid 龿¥ç±»åä¸»é® * @return 䏿åç§°ï¼å¦æä¸åå¨ä¼è¿ånull;å¤ä¸ªä¼ä»¥éå·åé * @throws VciBaseException åæ°ä¸ºç©ºæè æ¥è¯¢åºéæ¶ä¼æåºé误 */ @Override public String getNameByOid(String oid) throws VciBaseException { VciBaseUtil.alertNotNull(oid,"龿¥ç±»å主é®"); return baseMapper.selectOne(Wrappers.<LinkType>query().lambda().eq(LinkType::getOid,oid)).getName(); } /** * æ ¹æ®é¾æ¥ç±»åè±æåç§°è·å䏿åç§° * * @param id 龿¥ç±»åè±æåç§° * @return 䏿åç§°ï¼å¦æä¸åå¨ä¼è¿ånull;å¤ä¸ªä¼ä»¥éå·åé * @throws VciBaseException åæ°ä¸ºç©ºæè æ¥è¯¢åºéæ¶ä¼æåºé误 */ @Override public String getNameById(String id) throws VciBaseException { VciBaseUtil.alertNotNull(id,"龿¥ç±»åè±æåç§°"); return baseMapper.selectOne(Wrappers.<LinkType>query().lambda().eq(LinkType::getId,id)).getName(); } /** * æ ¹æ®ä¸å¡ç±»å主é®è·åå å«ç屿§æ°æ®å¯¹è±¡ * @param oidCollection 主é®éå * @return 屿§æ°æ®å¯¹è±¡ */ private List<LinkTypeAttribute> listHasAttributeDOByOidCollection(Collection<String> oidCollection){ VciBaseUtil.alertNotNull("ä¸å¡ç±»å主é®",oidCollection); Collection<Collection<String>> oidCollections = VciBaseUtil.switchCollectionForOracleIn(oidCollection); List<LinkTypeAttribute> attributeDOList = new ArrayList<>(); for(Collection<String> oids : oidCollections){ List<LinkTypeAttribute> attributeDOs = linkTypeAttributeService.list(Wrappers.<LinkTypeAttribute>query().lambda().in(LinkTypeAttribute::getPkLinkType,oids)); if(!CollectionUtils.isEmpty(attributeDOs)){ attributeDOList.addAll(attributeDOs); } } return attributeDOList; } /** * æ·»å 龿¥ç±»å * * @param linkTypeVO 龿¥ç±»åæ¾ç¤ºå¯¹è±¡ï¼åDTOå ±ç¨ï¼ * @return æ·»å åç龿¥ç±»å * @throws VciBaseException æ·»å åºéçæ¶å伿åºå¼å¸¸ */ @Override public LinkTypeVO addSave(LinkTypeVO linkTypeVO) throws VciBaseException { return addSave(linkTypeVO,true); } /** * æ·»å 龿¥ç±»å * * @param linkTypeVO 龿¥ç±»åæ¾ç¤ºå¯¹è±¡ï¼åDTOå ±ç¨ï¼ * @param autoCreateTable èªå¨åå»ºè¡¨æ ¼ * @return æ·»å åç龿¥ç±»å * @throws VciBaseException æ·»å åºéçæ¶å伿åºå¼å¸¸ */ @Override public LinkTypeVO addSave(LinkTypeVO linkTypeVO, boolean autoCreateTable) throws VciBaseException { TransactionStatus transaction = null; if(autoCreateTable) { DefaultTransactionDefinition def = new DefaultTransactionDefinition(); def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); // äºç©é离级å«ï¼å¼å¯æ°äºå¡ï¼è¿æ ·ä¼æ¯è¾å®å ¨äºã transaction = dataSourceTransactionManager.getTransaction(def); // è·å¾äºå¡ç¶æ } try { VciBaseUtil.alertNotNull(linkTypeVO, "è¦æ·»å ç龿¥ç±»å", linkTypeVO.getId(), "龿¥ç±»åçè±æåç§°", linkTypeVO.getName(), "龿¥ç±»å䏿åç§°", linkTypeVO.getFromBtmType(),"from端çä¸å¡ç±»å",linkTypeVO.getFromBtmTypeName(),"from端çä¸å¡ç±»åçåç§°", linkTypeVO.getToBtmType(),"to端çä¸å¡ç±»å",linkTypeVO.getToBtmType(),"to端çä¸å¡ç±»åçåç§°"); if (!linkTypeVO.getId().matches(RegExpConstant.LETTER)) { throw new VciBaseException("龿¥ç±»åè±æåç§°åªè½æ¯çº¯è±æï¼ç®å为{0}", new Object[]{linkTypeVO.getId()}); } if (linkTypeVO.getId().length() > 24) { throw new VciBaseException("龿¥ç±»åè±æåç§°ä¸è½è¶ è¿18ï¼ç®åé¿åº¦ä¸º{0}", new Object[]{linkTypeVO.getId().length()}); } List<LinkType> linkTypeDOList = listLinkTypeDOByIdCollection(VciBaseUtil.str2List(linkTypeVO.getId())); if (!CollectionUtils.isEmpty(linkTypeDOList) && linkTypeDOList.size() > 0) { LinkType existLinkType= linkTypeDOList.get(0); throw new VciBaseException("龿¥ç±»åè±æåç§°å·²ç»åå¨ï¼ä¸åºå大å°åï¼ï¼è¿ä¸ªè±æå称对åºç䏿å称为{0},å建人{1},å建æ¶é´{2}" , new Object[]{existLinkType.getName(), existLinkType.getCreator(), VciDateUtil.date2Str(existLinkType.getCreateTime(), VciDateUtil.DateFormat)}); } //æ£æ¥ä½¿ç¨çä¸å¡ç±»åæ¯å¦åå¨ Set<String> usedBtmTypeSet = new HashSet<>(); Collections.addAll(usedBtmTypeSet,linkTypeVO.getFromBtmType().split(",")); Collections.addAll(usedBtmTypeSet,linkTypeVO.getToBtmType().split(",")); List<BtmType> btmTypeDOList = btmTypeService.listBtmTypeDOByIdCollection(usedBtmTypeSet); if(CollectionUtils.isEmpty(btmTypeDOList)){ throw new VciBaseException("龿¥ç±»å使ç¨çä¸å¡ç±»åå ¨é¨ä¸åå¨ï¼è¯·æ¥è¯"); } Set<String> existBtmTypeIdSet = btmTypeDOList.stream().collect(Collectors.toMap(s -> s.getId().trim().toLowerCase(), t -> t)).keySet(); String unExistBtmTypeId = usedBtmTypeSet.stream().filter(s -> !existBtmTypeIdSet.contains(s.toLowerCase().trim())).collect(Collectors.joining(",")); if(StringUtils.isNotBlank(unExistBtmTypeId)){ throw new VciBaseException("龿¥ç±»å使ç¨çä¸å¡ç±»å{0}ä¸åå¨ï¼è¯·æ¥è¯",new Object[]{unExistBtmTypeId}); } if (StringUtils.isBlank(linkTypeVO.getOid())) { linkTypeVO.setOid(VciBaseUtil.getPk()); } LinkType linkTypeDO = new LinkType(); BeanUtil.copy(linkTypeVO, linkTypeDO); String creator = AuthUtil.getUserAccount(); Date now = new Date(); linkTypeDO.setCreator(creator); linkTypeDO.setCreateTime(now); linkTypeDO.setOwner(creator); linkTypeDO.setBtmName(BtmTypeConstant.LINK_TYPE); linkTypeDO.setTs(now); //å¤ç屿§ addAttributeForLink(linkTypeVO.getAttributes(),linkTypeDO.getOid(),creator,now); baseMapper.insert(linkTypeDO); if(autoCreateTable) { dataSourceTransactionManager.commit(transaction); } }catch (VciBaseException e){ if(autoCreateTable) { dataSourceTransactionManager.rollback(transaction); } throw e; }catch (Throwable e){ if(autoCreateTable) { dataSourceTransactionManager.rollback(transaction); } throw e; } if(autoCreateTable) { checkTableSame(linkTypeVO); } return linkTypeVO; } /** * ä¸ºé¾æ¥ç±»åæ·»å 屿§ * @param attributesVOList 屿§çæ¾ç¤ºå¯¹è±¡å表 * @param pkLinkType 龿¥ç±»åçä¸»é® * @param creator å建人 * @param now å½åæ¶é´ */ private void addAttributeForLink(List<LinkTypeAttributeVO> attributesVOList,String pkLinkType,String creator,Date now){ List<LinkTypeAttribute> linkTypeAttributeDOList = new ArrayList<>(); if(!CollectionUtils.isEmpty(attributesVOList)) { List<String> attributeIdList = new ArrayList<>(); attributesVOList.stream().forEachOrdered(s -> { linkTypeAttributeService.checkAttribute(s); linkTypeAttributeDOList.add(LinkTypeAttributeWrapper.build().copyVO2DO(s, pkLinkType, creator, now)); attributeIdList.add(s.getId().toLowerCase().trim()); }); //æ£æ¥å±æ§æ¯å¦é½åå¨ attributeService.checkAttributeExists(attributeIdList); linkTypeAttributeService.saveOrUpdateBatch(linkTypeAttributeDOList,10000); } } /** * æ£æ¥é¾æ¥ç±»åç屿§æ¯å¦åæ°æ®åºä¸ç¸å * @param linkTypeVO 龿¥ç±»åçæ¾ç¤ºå¯¹è±¡ */ private void checkTableSame(LinkTypeVO linkTypeVO){ List<LinkTypeVO> linkTypeVOList = new ArrayList<>(); linkTypeVOList.add(linkTypeVO); BtmAndLinkTypeDdlDTO btmAndLinkTypeDdlDTO = new BtmAndLinkTypeDdlDTO(); btmAndLinkTypeDdlDTO.setLinkTypeList(linkTypeVOList); List<ModifyAttributeInfo> modifyAttributeInfoDOList = new ArrayList<>(); try { R result = DomainRepeater.checkDifferent(btmAndLinkTypeDdlDTO, AppConstant.APPLICATION_NAME_CODE); if (result.isSuccess()){ Object dataList = result.getData(); if (dataList instanceof List){ ((List<?>) dataList).forEach(data -> { JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(data)); modifyAttributeInfoDOList.add(BeanUtil.copy(jsonObject,ModifyAttributeInfo.class)); }); } } } catch (NacosException e) { throw new RuntimeException(e); } if (!CollectionUtils.isEmpty(modifyAttributeInfoDOList)) { modifyAttributeService.saveOrUpdateBatch(modifyAttributeInfoDOList); } modifyAttributeService.finishModify(modifyAttributeInfoDOList); } /** * ä¿®æ¹é¾æ¥ç±»å * * @param linkTypeVO 龿¥ç±»åæ¾ç¤ºå¯¹è±¡ï¼åDTOå ±ç¨ï¼ * @return ä¿®æ¹åç龿¥ç±»å * @throws VciBaseException ä¿®æ¹åºéçæ¶å伿åºå¼å¸¸ */ @Override public LinkTypeVO editSave(LinkTypeVO linkTypeVO) throws VciBaseException { return editSave(linkTypeVO,true); } /** * ä¿®æ¹é¾æ¥ç±»å * * @param linkTypeVO 龿¥ç±»åæ¾ç¤ºå¯¹è±¡ï¼åDTOå ±ç¨ï¼ * @param autoCreateTable èªå¨åå»ºè¡¨æ ¼ * @return ä¿®æ¹åç龿¥ç±»å * @throws VciBaseException ä¿®æ¹åºéçæ¶å伿åºå¼å¸¸ */ @Override public LinkTypeVO editSave(LinkTypeVO linkTypeVO, boolean autoCreateTable) throws VciBaseException { TransactionStatus transaction = null; if(autoCreateTable) { DefaultTransactionDefinition def = new DefaultTransactionDefinition(); def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); // äºç©é离级å«ï¼å¼å¯æ°äºå¡ï¼è¿æ ·ä¼æ¯è¾å®å ¨äºã transaction = dataSourceTransactionManager.getTransaction(def); // è·å¾äºå¡ç¶æ } try{ VciBaseUtil.alertNotNull(linkTypeVO, "è¦ä¿®æ¹ç龿¥ç±»å", linkTypeVO.getOid(),"龿¥ç±»åç主é®", linkTypeVO.getId(), "龿¥ç±»åçè±æåç§°", linkTypeVO.getName(), "龿¥ç±»å䏿åç§°"); if (!linkTypeVO.getId().matches(RegExpConstant.LETTER)) { throw new VciBaseException("龿¥ç±»åè±æåç§°åªè½æ¯çº¯è±æï¼ç®å为{0}", new Object[]{linkTypeVO.getId()}); } if (linkTypeVO.getId().length() > 24) { throw new VciBaseException("龿¥ç±»åè±æåç§°ä¸è½è¶ è¿18ï¼ç®åé¿åº¦ä¸º{0}", new Object[]{linkTypeVO.getId().length()}); } List<LinkType> linkTypeDOList = listLinkTypeDOByIdCollection(VciBaseUtil.str2List(linkTypeVO.getId())); if (CollectionUtils.isEmpty(linkTypeDOList)) { throw new VciBaseException("è¿ä¸ªé¾æ¥ç±»å{0}[{1}]å¨ç³»ç»ä¸ä¸åå¨ãæè è¯·æ£æ¥æ¨æ¯å¦ä¿®æ¹äºé¾æ¥ç±»åçè±æåç§°ï¼ç³»ç»ä¸å 许修æ¹è±æåç§°ï¼åªå¯ä»¥ä¿®æ¹è±æåç§°åæ¯ç大å°åï¼" ,new Object[]{linkTypeVO.getId(),linkTypeVO.getName()}); } LinkType linkTypeDO = linkTypeDOList.get(0); //æ£æ¥ä½¿ç¨çä¸å¡ç±»åæ¯å¦åå¨ Set<String> usedBtmTypeSet = new HashSet<>(); Collections.addAll(usedBtmTypeSet,linkTypeVO.getFromBtmType().split(",")); Collections.addAll(usedBtmTypeSet,linkTypeVO.getToBtmType().split(",")); List<BtmType> btmTypeDOList = btmTypeService.listBtmTypeDOByIdCollection(usedBtmTypeSet); if(CollectionUtils.isEmpty(btmTypeDOList)){ throw new VciBaseException("龿¥ç±»å使ç¨çä¸å¡ç±»åå ¨é¨ä¸åå¨ï¼è¯·æ¥è¯"); } Set<String> existBtmTypeIdSet = btmTypeDOList.stream().collect(Collectors.toMap(s -> s.getId().trim().toLowerCase(), t -> t)).keySet(); String unExistBtmTypeId = usedBtmTypeSet.stream().filter(s -> !existBtmTypeIdSet.contains(s.toLowerCase().trim())).collect(Collectors.joining(",")); if(StringUtils.isNotBlank(unExistBtmTypeId)){ throw new VciBaseException("龿¥ç±»å使ç¨çä¸å¡ç±»å{0}ä¸åå¨ï¼è¯·æ¥è¯",new Object[]{unExistBtmTypeId}); } String creator = AuthUtil.getUserAccount(); Date now = new Date(); linkTypeDO.setLastModifier(creator); linkTypeDO.setLastModifyTime(now); linkTypeDO.setTs(now); //å¤ç屿§ LinkTypeWrapper.build().copyLinkTypeVO2DO(linkTypeVO,linkTypeDO,creator,new Date()); //å æ¥è¯¢è¿ä¸ªé¾æ¥ç±»åå å«å¤å°å±æ§ List<LinkTypeAttribute> hasAttributeList = linkTypeAttributeService.list(Wrappers.<LinkTypeAttribute>query().lambda().in(LinkTypeAttribute::getPkLinkType,Func.toStrList(",",linkTypeVO.getOid()))); //å¤ç屿§ addAttributeForLink(linkTypeVO.getAttributes(),linkTypeDO.getOid(),creator,now); if(!CollectionUtils.isEmpty(hasAttributeList)){ //æå±æ§çæ¶åç´æ¥å é¤ååæ·»å linkTypeAttributeService.batchDeleteByOids(hasAttributeList.stream().map(s->s.getOid()).collect(Collectors.toList())); } saveOrUpdate(linkTypeDO); if(autoCreateTable) { dataSourceTransactionManager.commit(transaction); } }catch (VciBaseException e){ if(autoCreateTable) { dataSourceTransactionManager.rollback(transaction); } throw e; }catch (Throwable e) { if(autoCreateTable) { dataSourceTransactionManager.rollback(transaction); } throw e; } if(autoCreateTable) { checkTableSame(linkTypeVO); } return linkTypeVO; } /** * å é¤é¾æ¥ç±»å * * @param linkTypeVO 龿¥ç±»åæ¾ç¤ºå¯¹è±¡ * @throws VciBaseException 妿龿¥ç±»å被å¼ç¨ï¼æè å é¤åºéæ¶ä¼æåºå¼å¸¸ */ @Override public void delete(LinkTypeVO linkTypeVO) throws VciBaseException { VciBaseUtil.alertNotNull(linkTypeVO,"è¦å é¤ç龿¥ç±»å",linkTypeVO.getOid(),"è¦å é¤ç龿¥ç±»åç主é®"); List<LinkTypeVO> linkTypeVOList = new ArrayList<>(); linkTypeVOList.add(linkTypeVO); batchDelete(linkTypeVOList); } /** * æ¹éå é¤é¾æ¥ç±»å * * @param linkTypeVOList è¦å é¤ç龿¥ç±»åæ¾ç¤ºå¯¹è±¡å表 * @throws VciBaseException 妿龿¥ç±»å被å¼ç¨ï¼æè å é¤åºéæ¶ä¼æåºå¼å¸¸ */ @Override public void batchDelete(List<LinkTypeVO> linkTypeVOList) throws VciBaseException { VciBaseUtil.alertNotNull("è¦å é¤ç龿¥ç±»å",linkTypeVOList); DefaultTransactionDefinition def = new DefaultTransactionDefinition(); def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); // äºç©é离级å«ï¼å¼å¯æ°äºå¡ï¼è¿æ ·ä¼æ¯è¾å®å ¨äºã TransactionStatus transaction= dataSourceTransactionManager.getTransaction(def); // è·å¾äºå¡ç¶æ List<LinkType> linkTypeDOList = null; try { List<String> oidList = linkTypeVOList.stream().map(LinkTypeVO::getOid).collect(Collectors.toList()); linkTypeDOList = listLinkTypeDOByOidCollection(oidList); //éè¦å¤æè¡¨æ ¼æ¯å¦å卿°æ®ï¼ if (CollectionUtils.isEmpty(linkTypeDOList)) { throw new VciBaseException("è¦å é¤ç龿¥ç±»å对象æªå¨ç³»ç»ä¸æ¾å°"); } List<TableCheckDTO> checkList = linkTypeDOList.stream().map(linkType -> { TableCheckDTO tableCheckDTO = new TableCheckDTO(); tableCheckDTO.setBtmName(linkType.getId()); tableCheckDTO.setTableName(getTableName(linkType.getId(),linkType.getDomain())); tableCheckDTO.setCheckTableHasData(true); tableCheckDTO.setNeedDelete(true); tableCheckDTO.setDomain(linkType.getDomain()); return tableCheckDTO; }).collect(Collectors.toList()); R result = DomainRepeater.checkTableHasDataByTableNameThenDrop(checkList); if (result.isSuccess()){ JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(result.getData())); TableCheckResultDTO tableCheckResult = BeanUtil.copy(jsonObject, TableCheckResultDTO.class); if (tableCheckResult == null){ throw new VciBaseException("è°ç¨DDLæå¡å¤±è´¥"); } List<String> successOidList = linkTypeDOList.stream().filter(s -> Optional.ofNullable(tableCheckResult.getSuccessList()).orElseGet(ArrayList::new).stream().anyMatch(r -> StringUtils.equals(s.getId(), r.getBtmName()))) .map(LinkType::getOid).collect(Collectors.toList()); if (!CollectionUtils.isEmpty(successOidList)) { //å é¤å±æ§ List<LinkTypeAttribute> hasAttributesList = listHasAttributeDOByOidCollection(successOidList); List<String> attributeOidList = hasAttributesList.stream().map(LinkTypeAttribute::getOid).collect(Collectors.toList()); Collection<Collection<String>> attributeOidCollections = VciBaseUtil.switchCollectionForOracleIn(attributeOidList); for (Collection<String> attrOidCollection : attributeOidCollections) { linkTypeAttributeService.batchDeleteByOids(new ArrayList<>(attrOidCollection)); } //å é¤é¾æ¥ç±»å Collection<Collection<String>> oidCollections = VciBaseUtil.switchCollectionForOracleIn(successOidList); for (Collection<String> oids : oidCollections) { baseMapper.delete(Wrappers.<LinkType>query().lambda().in(LinkType::getOid, oids)); } } if (!CollectionUtils.isEmpty(tableCheckResult.getFailList())){ throw new VciBaseException("龿¥ç±»å:" + tableCheckResult.getFailList().stream().map(TableCheckDTO::getBtmName).collect(Collectors.joining("],[")) + "å卿°æ®ä¸è½å é¤"); } }else { throw new VciBaseException("æ²¡ææ¾å°DDLæå¡"); } dataSourceTransactionManager.commit(transaction); } catch (NacosException e) { dataSourceTransactionManager.rollback(transaction); throw new RuntimeException(e); } catch (Throwable e){ dataSourceTransactionManager.rollback(transaction); throw e; } } /** * ä¸ºé¾æ¥ç±»åæ·»å 屿§å¯¹è±¡ * * @param attributeVO 屿§æ¾ç¤ºå¯¹è±¡ * @throws VciBaseException åæ°ä¸ºç©ºæè æ¥è¯¢åºéçæ¶å伿åºå¼å¸¸ */ @Override public void addSaveAttribute(LinkTypeAttributeVO attributeVO,String tableName,String serviceName) throws VciBaseException { addSaveAttribute(attributeVO,tableName,true,serviceName); } /** * ä¸ºé¾æ¥ç±»åæ·»å 屿§å¯¹è±¡ * * @param attributeVO 屿§æ¾ç¤ºå¯¹è±¡ * @param autoAdd2Table æ¯å¦èªå¨æ·»å å°è¡¨æ ¼ä¸ * @throws VciBaseException åæ°ä¸ºç©ºæè æ¥è¯¢åºéçæ¶å伿åºå¼å¸¸ */ @Override public void addSaveAttribute(LinkTypeAttributeVO attributeVO,String tableName, boolean autoAdd2Table,String serviceName) throws VciBaseException { TransactionStatus transaction = null; if(autoAdd2Table) { DefaultTransactionDefinition def = new DefaultTransactionDefinition(); def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); // äºç©é离级å«ï¼å¼å¯æ°äºå¡ï¼è¿æ ·ä¼æ¯è¾å®å ¨äºã transaction = dataSourceTransactionManager.getTransaction(def); } try { linkTypeAttributeService.checkAttribute(attributeVO); LinkTypeAttribute attributeDO = new LinkTypeAttribute(); if (StringUtils.isBlank(attributeVO.getOid())) { attributeVO.setOid(VciBaseUtil.getPk()); } attributeVO.setPkLinkType(attributeVO.getPkLinkType()); attributeVO.setCreator(AuthUtil.getUserAccount()); attributeVO.setCreateTime(new Date()); attributeVO.setOwner(attributeVO.getCreator()); attributeVO.setBtmName(BtmTypeConstant.LINK_TYPE_ATTRIBUTE); attributeVO.setTs(attributeDO.getCreateTime()); //æ¥è¯¢é¾æ¥ç±»åæ¯å¦åå¨ checkLinkTypeExist(attributeVO.getPkLinkType()); BeanUtil.copy(attributeVO, attributeDO); linkTypeAttributeService.saveOrUpdate(attributeDO); if (autoAdd2Table) { //æ§è¡æ·»å 屿§å List<LinkTypeAttributeVO> attributeVOList = new ArrayList<>(); attributeVOList.add(attributeVO); if (autoAdd2Table) { TableAddColumnDTO addColumnDTO = new TableAddColumnDTO(); addColumnDTO.setTableName(tableName); addColumnDTO.setLinkTypeAttributeVOList(attributeVOList); R result = DomainRepeater.addColumnForTable(addColumnDTO, serviceName); if (result.isSuccess()) { dataSourceTransactionManager.commit(transaction); } else { dataSourceTransactionManager.rollback(transaction); } } } }catch (NacosException e){ if(autoAdd2Table) { dataSourceTransactionManager.rollback(transaction); } throw new RuntimeException(e); }catch (Throwable e){ if(autoAdd2Table) { dataSourceTransactionManager.rollback(transaction); } throw e; } } /** * æ£æ¥æä¸ªä¸»é®ç龿¥ç±»åæ¯å¦åå¨ * * @param pkLinkType 龿¥ç±»åä¸»é® * @return true表示åå¨ï¼false表示ä¸åå¨ * @throws VciBaseException æ¥è¯¢åºéæè åæ°ä¸ºç©ºçæ¶åæåºå¼å¸¸ */ @Override public boolean checkLinkTypeExist(String pkLinkType) throws VciBaseException { VciBaseUtil.alertNotNull(pkLinkType,"è¦æ ¡éªæ¯å¦åå¨ç龿¥ç±»å主é®ä¸ºç©º"); String name = getNameByOid(pkLinkType); if(StringUtils.isBlank(name)){ return false; }else{ return true; } } /** * ä¸ºé¾æ¥ç±»åä¿®æ¹å±æ§å¯¹è±¡ * * @param attributeVO 屿§æ¾ç¤ºå¯¹è±¡ * @throws VciBaseException åæ°ä¸ºç©ºæè æ¥è¯¢åºéçæ¶å伿åºå¼å¸¸ */ @Override public void editSaveAttribute(LinkTypeAttributeVO attributeVO,String tableName,String domain) throws VciBaseException { editSaveAttribute(attributeVO,tableName,domain,true); } /** * ä¸ºé¾æ¥ç±»åä¿®æ¹å±æ§å¯¹è±¡ * * @param attributeVO 屿§æ¾ç¤ºå¯¹è±¡ * @param autoEdit2Table æ¯å¦èªå¨ä¿®æ¹å°è¡¨æ ¼ * @throws VciBaseException åæ°ä¸ºç©ºæè æ¥è¯¢åºéçæ¶å伿åºå¼å¸¸ */ @Override public void editSaveAttribute(LinkTypeAttributeVO attributeVO,String tableName,String domain, boolean autoEdit2Table) throws VciBaseException { TransactionStatus transaction = null; if(autoEdit2Table) { DefaultTransactionDefinition def = new DefaultTransactionDefinition(); def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); // äºç©é离级å«ï¼å¼å¯æ°äºå¡ï¼è¿æ ·ä¼æ¯è¾å®å ¨äºã transaction = dataSourceTransactionManager.getTransaction(def); } try { VciBaseUtil.alertNotNull(attributeVO.getOid(), "使ç¨å±æ§ç主é®"); linkTypeAttributeService.checkAttribute(attributeVO); LinkType linkTypeDO = baseMapper.selectOne(Wrappers.<LinkType>query().lambda().eq(LinkType::getOid, attributeVO.getPkLinkType())); if (linkTypeDO == null || StringUtils.isBlank(linkTypeDO.getOid())) { throw new VciBaseException("è¦ä¿®æ¹ç屿§å ³èç龿¥ç±»åä¸åå¨"); } LinkTypeAttribute attributeDO = linkTypeAttributeService.selectByPrimaryKey(attributeVO.getOid()); String creator = AuthUtil.getUserAccount(); Date now = new Date(); BeanUtil.copy(attributeVO, attributeDO); attributeDO.setPkLinkType(linkTypeDO.getOid()); attributeDO.setLastModifier(creator); attributeDO.setLastModifyTime(now); attributeDO.setTs(now); attributeVO.setLastModifier(creator); attributeVO.setLastModifyTime(now); attributeVO.setTs(now); //æ¥è¯¢é¾æ¥ç±»åæ¯å¦åå¨ linkTypeAttributeService.saveOrUpdate(attributeDO); if (autoEdit2Table) { BtmAndLinkTypeDdlDTO ddlDTO = new BtmAndLinkTypeDdlDTO(); // ddlDTO.setLinkTypeList(); // DomainRepeater.checkDifferent(,domain); dataSourceTransactionManager.commit(transaction); } // }catch (NacosException e){ // if(autoEdit2Table) { // dataSourceTransactionManager.rollback(transaction); // } // throw new RuntimeException(e); }catch (Throwable e){ if(autoEdit2Table) { dataSourceTransactionManager.rollback(transaction); } throw e; } } /** * è·å龿¥ç±»åçæ°æ®åºè¡¨åç§° * * @param id 龿¥ç±»åçè±æåç§° * @param domain é¢åå¼ * @return æ°æ®åºè¡¨åç§° */ @Override public String getTableName(String id,String domain) { VciBaseUtil.alertNotNull(id,"ä¸å¡ç±»åè±æåç§°",domain,"é¢ååç§°"); if (domain.contains("ubcs-")){ domain = domain.split("ubcs-")[1]; }else { throw new VciBaseException("é¢ååç§°ä¸ç¬¦åè§å"); } return PL + StringPool.UNDERSCORE + domain + StringPool.UNDERSCORE + id; } /** * è·åææä½¿ç¨çä¸å¡ç±»åçè±æåç§°ï¼è½¬æ¢ä¸ºå°å * * @return è±æåç§°è±æå°å */ @Override public Set<String> listUsedBtmType() { List<LinkType> allLinkTypeDOList = baseMapper.selectList(Wrappers.query()); Set<String> btmTypeSet = new HashSet<>(); if(!CollectionUtils.isEmpty(allLinkTypeDOList)){ allLinkTypeDOList.stream().forEach( s -> { Collections.addAll(btmTypeSet,s.getFromBtmType().split(",")); Collections.addAll(btmTypeSet,s.getToBtmType().split(",")); }); } return btmTypeSet; } } Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/ModifyAtributeServiceImpl.java
ÎļþÒÑɾ³ý Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/ModifyAttributeServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,76 @@ package com.vci.ubcs.omd.service.impl; import com.alibaba.cloud.commons.lang.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.vci.ubcs.omd.entity.ModifyAttributeInfo; import com.vci.ubcs.omd.mapper.ModifyAttributeInfoMapper; import com.vci.ubcs.omd.service.IModifyAttributeService; import com.vci.ubcs.starter.exception.VciBaseException; import com.vci.ubcs.starter.web.enumpck.BooleanEnum; import com.vci.ubcs.starter.web.util.VciBaseUtil; import org.springblade.core.secure.BladeUser; import org.springblade.core.secure.utils.AuthUtil; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.validation.constraints.NotEmpty; import java.util.*; import java.util.stream.Collectors; /** * Description: éè¦ä¿®æ¹æ°æ®åºè¡¨ä¸å段çä¿¡æ¯æå¡å®ç°ç±» * * @author LiHang * @date 2023/5/4 */ @Service public class ModifyAttributeServiceImpl extends ServiceImpl<ModifyAttributeInfoMapper, ModifyAttributeInfo> implements IModifyAttributeService { @Override public boolean deleteLogic(@NotEmpty List<Long> ids) { return false; } @Override public boolean changeStatus(@NotEmpty List<Long> ids, Integer status) { return false; } /** * å®æè°æ´ * * @param modifyAttributeInfoDOList å®æè°æ´çä¿¡æ¯ * @throws VciBaseException ä¿®æ¹åºéçæ¶å伿åºå¼å¸¸ */ @Override public void finishModify(List<ModifyAttributeInfo> modifyAttributeInfoDOList) throws VciBaseException { VciBaseUtil.alertNotNull(modifyAttributeInfoDOList,"å®æè°æ´çä¿¡æ¯"); Map<String,String> oidHandleResultMap = modifyAttributeInfoDOList.stream().collect(Collectors.toMap(ModifyAttributeInfo::getOid, ModifyAttributeInfo::getHandleResult)); BladeUser user = Optional.ofNullable(AuthUtil.getUser()).orElseGet(BladeUser::new); String handlerUser = user.getAccount() + "(" + user.getUserName() + ")"; Date now = new Date(); if(!CollectionUtils.isEmpty(oidHandleResultMap)){ Collection<Collection<String>> oidCollections = VciBaseUtil.switchCollectionForOracleIn(oidHandleResultMap.keySet()); for(Collection<String> oidCollection : oidCollections){ List<ModifyAttributeInfo> attributeInfoDOList = baseMapper.selectList(Wrappers.<ModifyAttributeInfo>query().lambda().in(ModifyAttributeInfo::getOid,oidCollection)); if(!CollectionUtils.isEmpty(attributeInfoDOList)){ attributeInfoDOList.stream().forEach( s -> { s.setHandleFinishFlag(BooleanEnum.TRUE.getValue()); s.setHandleUserName(handlerUser); s.setHandleDate(now); s.setLastModifier(user.getAccount()); s.setLastModifyTime(now); s.setTs(now); if(oidHandleResultMap.containsKey(s.getOid())){ s.setHandleResult(oidHandleResultMap.get(s.getOid())); } if(StringUtils.isBlank(s.getHandleResult())){ s.setHandleResult("æ§è¡æå"); } }); saveOrUpdateBatch(attributeInfoDOList); } } } } } Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/RevisionRuleServiceImpl.java
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.vci.ubcs.omd.constant.BtmTypeConstant; import com.vci.ubcs.omd.dto.RevisionRuleDTO; import com.vci.ubcs.omd.entity.BtmType; import com.vci.ubcs.omd.entity.RevisionRule; @@ -212,7 +213,6 @@ Set<String> idSet = new HashSet<>(); String creator = AuthUtil.getUserAccount(); Date now = new Date(); String btmName = "revision-rule"; List<RevisionRule> revisionRuleList = new ArrayList<>(); revisionRuleDTOList.forEach(s -> { //å¤æä¸ºç©º @@ -231,7 +231,7 @@ ruleDO.setCreator(creator); ruleDO.setCreateTime(now); ruleDO.setOwner(creator); ruleDO.setBtmName(btmName); ruleDO.setBtmName(BtmTypeConstant.REVISION_RULE); ruleDO.setTs(now); ruleDO.setLastModifier(creator); ruleDO.setLastModifyTime(now); Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/StatusServiceImpl.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.vci.ubcs.omd.constant.BtmTypeConstant; import com.vci.ubcs.omd.entity.Status; import com.vci.ubcs.omd.mapper.StatusMapper; import com.vci.ubcs.omd.service.IStatusService; @@ -273,7 +274,6 @@ Set<String> idSet = new HashSet<>(); String creator = AuthUtil.getUserAccount(); Date now = new Date(); String btmName = "status"; Pattern pattern = Pattern.compile(REGEXP); statusVOList.forEach(s -> { if (!pattern.matcher(s.getId()).matches()){ @@ -288,7 +288,7 @@ if(StringUtils.isBlank(s.getOid())){ s.setOid(VciBaseUtil.getPk()); } s.setBtmName(btmName); s.setBtmName(BtmTypeConstant.STATUS); s.setOwner(creator); s.setCreator(creator); s.setCreateTime(now); Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/BtmTypeAttributeWrapper.java
@@ -1,5 +1,6 @@ package com.vci.ubcs.omd.wrapper; import com.vci.ubcs.omd.constant.BtmTypeConstant; import com.vci.ubcs.omd.dto.BtmTypeLinkAttributesDTO; import com.vci.ubcs.omd.entity.BtmTypeAttribute; import com.vci.ubcs.omd.vo.BtmTypeAttributeVO; @@ -55,7 +56,7 @@ public BtmTypeAttribute copyBtmTypeAttributeDTO2Entity(BtmTypeLinkAttributesDTO dto, String btmTypeOid, String creator, Date now){ BtmTypeAttribute entity = Objects.requireNonNull(BeanUtil.copy(dto, BtmTypeAttribute.class)); entity.setOid(VciBaseUtil.getPk()); entity.setBtmName("btmTypeAttribute"); entity.setBtmName(BtmTypeConstant.BTM_TYPE_ATTRIBUTE); entity.setOwner(creator); entity.setCreator(creator); entity.setCreateTime(now); Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/BtmTypeWrapper.java
@@ -1,5 +1,6 @@ package com.vci.ubcs.omd.wrapper; import com.vci.ubcs.omd.constant.BtmTypeConstant; import com.vci.ubcs.omd.dto.BtmTypeDTO; import com.vci.ubcs.omd.entity.BtmType; import com.vci.ubcs.omd.vo.BtmTypeVO; @@ -89,7 +90,7 @@ */ public BtmType entityBeforeSave(BtmType btmTypeDO) { btmTypeDO.setOid(VciBaseUtil.getPk()); btmTypeDO.setBtmName("btmType"); btmTypeDO.setBtmName(BtmTypeConstant.BTMTYPE); Date now = new Date(); String userAccount = AuthUtil.getUserAccount(); btmTypeDO.setLastModifier(userAccount); Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/LinkTypeAttributeWrapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,55 @@ package com.vci.ubcs.omd.wrapper; import com.alibaba.cloud.commons.lang.StringUtils; import com.vci.ubcs.omd.constant.BtmTypeConstant; import com.vci.ubcs.omd.entity.LinkTypeAttribute; import com.vci.ubcs.omd.vo.LinkTypeAttributeVO; import com.vci.ubcs.starter.web.util.VciBaseUtil; import org.springblade.core.mp.support.BaseEntityWrapper; import org.springblade.core.tool.utils.BeanUtil; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; /** * Description: * * @author LiHang * @date 2023/5/24 */ public class LinkTypeAttributeWrapper extends BaseEntityWrapper<LinkTypeAttribute, LinkTypeAttributeVO> { public static LinkTypeAttributeWrapper build() { return new LinkTypeAttributeWrapper(); } @Override public LinkTypeAttributeVO entityVO(LinkTypeAttribute entity) { LinkTypeAttributeVO vo = BeanUtil.copy(entity, LinkTypeAttributeVO.class); return vo; } public List<LinkTypeAttributeVO> listEntityVO(List<LinkTypeAttribute> entityList){ return Optional.ofNullable(entityList).orElseGet(ArrayList::new).stream().map(this::entityVO).collect(Collectors.toList()); } public LinkTypeAttribute copyVO2DO(LinkTypeAttributeVO attributeVO, String pkLinkType, String creator, Date now) { LinkTypeAttribute attributeDO = BeanUtil.copy(attributeVO, LinkTypeAttribute.class); if(attributeDO == null){ attributeDO = new LinkTypeAttribute(); } attributeDO.setPkLinkType(pkLinkType); if(StringUtils.isBlank(attributeDO.getOid())){ attributeDO.setOid(VciBaseUtil.getPk()); } attributeDO.setCreator(creator); attributeDO.setCreateTime(now); attributeDO.setTs(now); attributeDO.setOwner(creator); attributeDO.setBtmName(BtmTypeConstant.LINK_TYPE_ATTRIBUTE); return attributeDO; } } Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/LinkTypeWrapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,54 @@ package com.vci.ubcs.omd.wrapper; import com.vci.ubcs.omd.constant.BtmTypeConstant; import com.vci.ubcs.omd.entity.LinkType; import com.vci.ubcs.omd.vo.LinkTypeVO; import org.springblade.core.mp.support.BaseEntityWrapper; import org.springblade.core.tool.utils.BeanUtil; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; /** * Description: 龿¥ç±»åçå è£ ç±» * * @author LiHang * @date 2023/5/24 */ public class LinkTypeWrapper extends BaseEntityWrapper<LinkType, LinkTypeVO>{ public static LinkTypeWrapper build() { return new LinkTypeWrapper(); } @Override public LinkTypeVO entityVO(LinkType entity) { LinkTypeVO vo = BeanUtil.copy(entity, LinkTypeVO.class); // æä¸¾å¤ç return vo; } public List<LinkTypeVO> listEntityVO(List<LinkType> entityList){ return Optional.ofNullable(entityList).orElseGet(ArrayList::new).stream().map(this::entityVO).collect(Collectors.toList()); } public void copyLinkTypeVO2DO(LinkTypeVO linkTypeVO, LinkType linkTypeDO, String creator, Date now) { //æå¯è½å¤§å°åååäº linkTypeDO.setId(linkTypeVO.getId()); linkTypeDO.setName(linkTypeVO.getName()); linkTypeDO.setDescription(linkTypeVO.getDescription()); linkTypeDO.setImplClass(linkTypeVO.getImplClass()); linkTypeDO.setShape(linkTypeVO.getShape()); linkTypeDO.setFromBtmType(linkTypeVO.getToBtmType()); linkTypeDO.setFromBtmTypeName(linkTypeVO.getFromBtmTypeName()); linkTypeDO.setToBtmType(linkTypeVO.getToBtmType()); linkTypeDO.setToBtmTypeName(linkTypeVO.getToBtmTypeName()); linkTypeDO.setTs(now); linkTypeDO.setLastModifier(creator); linkTypeDO.setLastModifyTime(now); linkTypeDO.setBtmName(BtmTypeConstant.LINK_TYPE); } } Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/ModifyAttributeWrapper.java
@@ -32,7 +32,7 @@ data.setOid(VciBaseUtil.getPk()); data.setCreateTime(new Date()); data.setCreator(AuthUtil.getUserAccount()); data.setBtmname("modifyAttributeInfo"); data.setBtmName("modifyAttributeInfo"); data.setHandleDate(new Date()); data.setHandleFinishFlag(BooleanEnum.TRUE.getValue()); data.setHandleUserName(AuthUtil.getUserAccount()); Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/AttributeMapper.xml
@@ -4,10 +4,9 @@ <!-- éç¨æ¥è¯¢æ å°ç»æ --> <resultMap id="baseResultMap" type="com.vci.ubcs.omd.entity.Attribute"> <id column="id" property="id"/> <result column="tenant_id" property="tenantId"/> <result column="key" property="key"/> <result column="label" property="label"/> <id column="oid" property="oid"/> <result column="id" property="id"/> <result column="name" property="name"/> <result column="type_code" property="typeCode"/> <result column="type_key" property="typeKey"/> <result column="hashtag" property="hashtag" jdbcType="VARCHAR"/> @@ -23,13 +22,12 @@ <result column="dict_code" property="dictCode"/> <result column="dict_key" property="dictKey"/> <result column="default_value" property="defaultValue"/> <result column="status" property="status"/> <result column="is_deleted" property="isDeleted"/> <result column="create_user" property="createUser" jdbcType="VARCHAR"/> <result column="create_dept" property="createDept" jdbcType="VARCHAR"/> <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/> <result column="update_user" property="updateUser" jdbcType="VARCHAR"/> <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/> <result column="creator" property="creator" jdbcType="VARCHAR"/> <result column="owner" property="owner" jdbcType="VARCHAR"/> <result column="last_modifier" property="lastModifier" jdbcType="VARCHAR"/> <result column="last_modify_time" property="lastModifyTime" jdbcType="TIMESTAMP"/> <result column="btm_name" property="btmName" jdbcType="TIMESTAMP"/> <result column="ts" property="ts" jdbcType="TIMESTAMP"/> </resultMap> @@ -38,9 +36,9 @@ </resultMap> <sql id="base_query_column"> id, tenant_id ,key ,label ,type_code , type_key , hashtag , description, nullable , max_length, precision, refer_type_code, refer_type_key, refer_to_id, refer_to_name, using_dict, dict_code, dict_key, default_value, status, is_deleted, create_user, create_dept, create_time, update_user, update_time , ts oid, id, name, type_code, type_key, hashtag, description, nullable, max_length, precision, refer_type_code, refer_type_key, refer_to_id, refer_to_name, using_dict, dict_code, dict_key, default_value, create_time, creator, owner, last_modifier, last_modify_time, btm_name, ts </sql> <sql id="tableName"> pl_omd_attribute @@ -51,18 +49,14 @@ from <include refid="tableName"/> </select> <select id="selectByPrimaryKeyCollection" resultMap="baseResultMap"> select DISTINCT <include refid="base_query_column" /> from <include refid="tableName"/> <where> <foreach collection="oids" item="item" index="arrayindex" open=" OID in ( " close=")" > #{item,jdbcType=VARCHAR} <if test="(arrayindex != oids.size() -1)"> , </if> </foreach> </where> <select id="selectApplyRange" resultType="com.vci.ubcs.omd.entity.BtmType"> select btm.name, btm.ID from pl_omd_btm_type btm join pl_omd_btm_type_attribute btmAttr on btmAttr.pk_btm_type = btm.oid join <include refid="tableName"/> attr on attr.id = btmAttr.id where attr.oid = #{oid} </select> </mapper> Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/LinkTypeAttributeMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,38 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.vci.ubcs.omd.mapper.LinkTypeAttributeMapper"> <resultMap id="BaseResultMap" type="com.vci.ubcs.omd.entity.LinkTypeAttribute"> <id column="oid" jdbcType="VARCHAR" property="oid" /> <result column="id" jdbcType="VARCHAR" property="id" /> <result column="name" jdbcType="VARCHAR" property="name" /> <result column="description" jdbcType="VARCHAR" property="description" /> <result column="pk_link_type" jdbcType="VARCHAR" property="pkLinkType" /> <result column="attribute_length" jdbcType="DECIMAL" property="attributeLength" /> <result column="attr_data_type" jdbcType="VARCHAR" property="attrDataType" /> <result column="nullable_flag" jdbcType="VARCHAR" property="nullableFlag" /> <result column="default_value" jdbcType="VARCHAR" property="defaultValue" /> <result column="precision_length" jdbcType="DECIMAL" property="precisionLength" /> <result column="scale_length" property="scaleLength" jdbcType="DECIMAL" /> <result column="range" jdbcType="VARCHAR" property="range" /> <result column="refer_btm_type_id" jdbcType="VARCHAR" property="referBtmTypeId" /> <result column="refer_btm_type_name" jdbcType="VARCHAR" property="referBtmTypeName" /> <result column="enum_id" jdbcType="VARCHAR" property="enumId" /> <result column="enum_name" jdbcType="VARCHAR" property="enumName" /> <result column="btm_name" property="btmName" jdbcType="VARCHAR" /> <result column="owner" property="owner" jdbcType="VARCHAR" /> <result column="creator" jdbcType="VARCHAR" property="creator" /> <result column="create_time" jdbcType="TIMESTAMP" property="createTime" /> <result column="last_modifier" jdbcType="VARCHAR" property="lastModifier" /> <result column="last_modify_time" jdbcType="TIMESTAMP" property="lastModifyTime" /> <result column="ts" jdbcType="TIMESTAMP" property="ts" /> </resultMap> <sql id="base_query_column"> oid, id, name, description, pk_link_type, attr_data_type, nullable_flag, default_value, precision_length, scale_length, range, refer_btm_type_id, refer_btm_type_name, enum_id, enum_name, btm_name, owner, creator, create_time, last_modifier, last_modify_time, ts </sql> <sql id="tableName"> pl_omd_link_type_attr </sql> </mapper> Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/LinkTypeMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,34 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.vci.ubcs.omd.mapper.LinkTypeMapper"> <resultMap id="BaseResultMap" type="com.vci.ubcs.omd.entity.LinkType"> <id column="oid" jdbcType="VARCHAR" property="oid" /> <result column="id" jdbcType="VARCHAR" property="id" /> <result column="name" jdbcType="VARCHAR" property="name" /> <result column="description" jdbcType="VARCHAR" property="description" /> <result column="shape" jdbcType="VARCHAR" property="shape" /> <result column="impl_class" jdbcType="VARCHAR" property="implClass" /> <result column="from_btm_type" jdbcType="VARCHAR" property="fromBtmType" /> <result column="from_btm_type_name" jdbcType="VARCHAR" property="fromBtmTypeName" /> <result column="to_btm_type" jdbcType="VARCHAR" property="toBtmType" /> <result column="to_btm_type_name" jdbcType="VARCHAR" property="toBtmTypeName" /> <result column="btm_name" property="btmName" jdbcType="VARCHAR" /> <result column="owner" property="owner" jdbcType="VARCHAR" /> <result column="creator" jdbcType="VARCHAR" property="creator" /> <result column="create_time" jdbcType="TIMESTAMP" property="createTime" /> <result column="last_modifier" jdbcType="VARCHAR" property="lastModifier" /> <result column="last_modify_time" jdbcType="TIMESTAMP" property="lastModifyTime" /> <result column="ts" jdbcType="TIMESTAMP" property="ts" /> <result column="domain" jdbcType="VARCHAR" property="domain" /> </resultMap> <sql id="base_query_column"> oid, id, name, descrption, shape, impl_class, from_btm_type, from_btm_type_name, to_btm_type, to_btm_type_name, btm_name, owner, creator, create_time, last_modifier, last_modify_time, ts, domain </sql> <sql id="tableName"> pl_omd_link_type </sql> </mapper> Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/ModifyAttributeInfoMapper.xml
@@ -18,9 +18,11 @@ <result column="handle_user_name" property="handleUserName" jdbcType="VARCHAR" /> <result column="handle_date" property="handleDate" jdbcType="TIMESTAMP" /> <result column="handle_result" property="handleResult" jdbcType="VARCHAR" /> <result column="btm_name" property="btmname" jdbcType="VARCHAR" /> <result column="btm_name" property="btmName" jdbcType="VARCHAR" /> <result column="creator" property="creator" jdbcType="VARCHAR" /> <result column="create_time" property="createTime" jdbcType="TIMESTAMP" /> <result column="last_modifier" property="lastModifier" jdbcType="VARCHAR" /> <result column="last_modify_time" property="lastModifyTime" jdbcType="TIMESTAMP" /> <result column="TS" property="ts" jdbcType="TIMESTAMP" /> <result column="add_attributes" property="addAttributes" jdbcType="CLOB" /> <result column="modify_attributes" property="modifyAttributes" jdbcType="CLOB" /> @@ -36,7 +38,7 @@ <sql id="base_query_column"> oid, id, name, description, business_type, table_name, task_name, modify_column_reason, order_modify_user_name, order_modify_date, handle_finish_flag, handle_user_name, handle_date, handle_result, btm_name, creator, create_time, ts, add_attributes, modify_attributes, delete_attributes, before_modify_attributes last_modifier, last_modify_time, ts, add_attributes, modify_attributes, delete_attributes, before_modify_attributes </sql> <sql id="tableName"> pl_omd_modify_attribute_info