lihang
2023-05-23 1d91a31301494b9f0b7e17b3eef280f8d54e2806
新增状态池管理和版本规则管理
已修改20个文件
已添加23个文件
4091 ■■■■ 文件已修改
Source/UBCS-WEB/src/api/omd/revisionRule.js 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/omd/status.js 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/Business.vue 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/Version.vue 90 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/original.vue 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/status.vue 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleEvent.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleLine.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleLineEvent.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleRule.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/RevisionRule.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Status.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IRevisionRuleClient.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IRevisionRuleFallback.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IStatusClient.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IStatusFallback.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LifeCycleEventVO.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LifeCycleLineEventVO.java 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LifeCycleLineVO.java 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LifeCycleVO.java 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LinkTypeAttributeVO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LinkTypeVO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/ModifyAttributeInfoVO.java 241 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/RevisionRuleVO.java 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/StatusVO.java 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/RevisionRuleController.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/StatusController.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/RevisionRuleClient.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/StatusClient.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/BtmTypeAttributeMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/BtmTypeMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/RevisionRuleMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/StatusMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IRevisionRuleService.java 191 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IStatusService.java 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/RevisionRuleServiceImpl.java 563 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/StatusServiceImpl.java 459 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/RevisionRuleWrapper.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/StatusWrapper.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/RevisionRuleMapper.xml 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/StatusMapper.xml 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/omd/revisionRule.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,75 @@
import request from '@/router/axios';
export const getPage = (current,size,params) => {
    return request({
        url: '/api/ubcs-omd/revision-rule/page',
        method: 'get',
        params: {
            ...params,
            current,
            size,
        }
    })
}
export const getDetail = (oid) => {
    return request({
        url: '/api/ubcs-omd/revision-rule/detail',
        method: 'get',
        params: {
            oid: oid
        }
    })
}
export const add = (rule) => {
    return request({
        url: '/api/ubcs-omd/revision-rule/submit',
        method: 'post',
        data: rule
    })
}
export const batchAdd = (rules) => {
    return request({
        url: '/api/ubcs-omd/revision-rule/batch-submit',
        method: 'post',
        data: rules
    })
}
export const update = (rule) => {
    return request({
        url: '/api/ubcs-omd/revision-rule/submit',
        method: 'post',
        data: rule
    })
}
export const batchUpdate = (rules) => {
    return request({
        url: '/api/ubcs-omd/revision-rule/batch-submit',
        method: 'post',
        data: rules
    })
}
export const remove = (rule) => {
    return request({
        url: '/api/ubcs-omd/revision-rule/remove',
        method: 'post',
        data: rule
    })
}
export const refList = (currentPage,pageSize,params) => {
    return request({
        url: '/api/ubcs-omd/revision-rule/ref',
        method: 'get',
        params: {
            ...params,
            currentPage,
            pageSize
        }
    })
}
Source/UBCS-WEB/src/api/omd/status.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,75 @@
import request from '@/router/axios';
export const getPage = (current,size,params) => {
    return request({
        url: '/api/ubcs-omd/status/page',
        method: 'get',
        params: {
            ...params,
            current,
            size,
        }
    })
}
export const getDetail = (oid) => {
    return request({
        url: '/api/ubcs-omd/status/detail',
        method: 'get',
        params: {
            oid: oid
        }
    })
}
export const add = (rule) => {
    return request({
        url: '/api/ubcs-omd/status/submit',
        method: 'post',
        data: rule
    })
}
export const batchAdd = (rules) => {
    return request({
        url: '/api/ubcs-omd/status/batch-submit',
        method: 'post',
        data: rules
    })
}
export const update = (rule) => {
    return request({
        url: '/api/ubcs-omd/status/submit',
        method: 'post',
        data: rule
    })
}
export const batchUpdate = (rules) => {
    return request({
        url: '/api/ubcs-omd/status/batch-submit',
        method: 'post',
        data: rules
    })
}
export const remove = (rule) => {
    return request({
        url: '/api/ubcs-omd/status/remove',
        method: 'post',
        data: rule
    })
}
export const refList = (currentPage,pageSize,params) => {
    return request({
        url: '/api/ubcs-omd/status/ref',
        method: 'get',
        params: {
            ...params,
            currentPage,
            pageSize
        }
    })
}
Source/UBCS-WEB/src/views/modeling/Business.vue
@@ -119,10 +119,13 @@
        </el-main>
        <el-dialog :visible="ref.visible" title="从数据库中添加" width="700px" append-to-body @close="dialoghandelfalse">
          é€‰æ‹©é¢†åŸŸï¼š
          <el-select v-model="domain" placeholder="请选择" @change="refOnLoad">
          <el-select v-model="domain" placeholder="请选择" @change="refOnLoad" size="small">
            <el-option v-for="item in domainOptions" :key="item.value" :label="item.label" :value="item.value">
            </el-option>
          </el-select>
          <div class="sep" style="height:7px">
          </div>
          <avue-crud class="businessCrud" v-model="ref.form" :option="ref.option" :data="ref.data" @selection-change="selectionChange">
          </avue-crud>
          <span slot="footer" class="dialog-footer">
Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue
@@ -5,6 +5,7 @@
    append-to-body
    @close="closeSubmitDialog"
    width="70%"
    style="height: 115vh;"
    >
        <el-form ref="form" :model="btmType" show-message="true" inline size="medium" label-suffix=":" class="btmTypeForm">
                
@@ -24,7 +25,8 @@
                </el-select>
            </el-form-item>
            <el-form-item label="版本规则" label-width="100px">
                <el-input v-model="btmType.revisionRuleId" :prefix-icon="icons.revisionRule" class="revisionRule">
                <el-input v-model="btmType.revisionRuleName" :prefix-icon="icons.revisionRule" class="revisionRule"
                @focus="openRevision" clearable @clear="clearRevision">
                    <i slot="suffix" class="el-input__icon el-icon-search"></i>
                </el-input>
            </el-form-item>
@@ -45,6 +47,7 @@
                <el-input v-model="btmType.description" 
                :prefix-icon="icons.desc" 
                class="descClass"
                id="descId"
                ></el-input>
            </el-form-item>
        </el-form>
@@ -63,11 +66,11 @@
            
        </avue-crud>
        <div slot="footer" class="dialog-footer">
            <el-button @click="submitBtmType">确定</el-button>
            <el-button type="primary" @click="submitBtmType">确定</el-button>
            <el-button @click="cancleSubmitBtmType">取消</el-button>
        </div>
<!-- å±žæ€§æ± çš„选择 -->
        <el-dialog title="属性池"
            :visible="attrRef.visible"
            append-to-body
@@ -91,6 +94,30 @@
                <el-button @click="cancleSelectAttr">取消</el-button>
            </div>
        </el-dialog>
<!-- ç‰ˆæœ¬è§„则的参照 -->
        <el-dialog title="请选择版本规则"
            :visible.sync="revisionRef.visible"
            append-to-body
            width="80%">
            <avue-crud class="revisionRef"
             :option="revisionRef.option"
             :data="revisionRef.data"
             :page.sync="revisionRef.page"
             ref="revisionRef"
             @row-click="revisionClick">
                <template slot="radio"
                slot-scope="{row}">
                    <el-radio v-model="revisionRef.selectRow"
                        :label="row.$index">&nbsp;
                    </el-radio>
                </template>
            </avue-crud>
            <div slot="footer" class="dialog-footer">
                <el-button type="primary" @click="confirmRevision">确定</el-button>
                <el-button @click="cancelRevision">取消</el-button>
            </div>
        </el-dialog>
    </el-dialog>
</template>
@@ -99,6 +126,7 @@
import { add,update } from '@/api/omd/btmType';
import { queryPage } from '@/api/omd/OmdAttribute';
import { getPage } from '@/api/omd/revisionRule';
export default {
    name: 'BusinessAdd',
    props: {
@@ -125,6 +153,7 @@
                rowKey: 'id',
                tabs: true,
                menu: false,
                addBtn:false,
                highlightCurrentRow: true,
                column: [
                    {
@@ -146,14 +175,12 @@
                    {
                        label: "默认值",
                        prop: "defaultValue",
                        cell: 'true',
                        align: 'center',
                        cell: true
                    },
                    {
                        label: "说明",
                        prop: "description",
                        cell: 'true',
                        align: 'center',
                        cell:true
                    }
@@ -176,6 +203,7 @@
                    border: true,
                    reserveSelection: true,
                    searchMenuSpan:8,
                    highlightCurrentRow: true,
                    column: [
                        {
                        label: '英文名称',
@@ -223,13 +251,77 @@
                },
                data: [],
                queryNotIn: null
            }
            },
            revisionRef: {
                visible: false,
                page: {
                    currentPage:1,
                    pageSize: 10
                },
                selectRow:'',
                searchKey: null,
                option:{
                    height: 360,
                    addBtn: false,
                    refreshBtn: false,
                    columnBtn: false,
                    menu: false,
                    border: true,
                    reserveSelection: true,
                    searchMenuSpan:8,
                    searchShowBtn: false,
                    highlightCurrentRow: true,
                    column:[{
                        label: '选择',
                        prop: 'radio',
                        width: 60,
                        hide: false
                    },
                        {
                            label:'英文名称',
                            prop: 'id',
                            search:true
                        },
                        {
                            label:"中文名称",
                            prop:"name",
                            search:true,
                        },
                        {
                            label:"跳跃字符",
                            prop: "skipCode"
                        },
                        {
                            label: "初始值",
                            prop:"startCode"
                        },
                        {
                            label: "步长",
                            prop: "serialStep"
                        },
                        {
                            label: "前缀",
                            prop:"prefixCode"
                        },
                        {
                            label: "后缀",
                            prop: "suffixCode"
                        },
                        {
                            label: "描述",
                            prop:"description",
                            type:"textarea"
                        }
                    ]
                },
            },
        }
    },
    created() {
    },
    methods: {
        // å…³é—­ç»„件弹窗
        closeSubmitDialog(){
            this.showSubmitDialog = false;
            this.btmType.attributes = [];
@@ -237,13 +329,16 @@
            this.attrRef.selectData = [];
            this.attrRef.queryNotIn = null;
        },
        // å…³é—­å±žæ€§æ± æŸ¥è¯¢å¼¹çª—
        closeAttrDialog(){
            this.attrRef.visible = false;
        },
        // æ·»åŠ 
        rowAdd(){
            this.attrRef.visible = true;
            this.attrRefOnLoad();
        },
        // å±žæ€§æ± åŠ è½½
        attrRefOnLoad(){
            queryPage(this.attrRef.key,this.attrRef.queryNotIn,this.attrRef.page.currentPage, this.attrRef.page.pageSize).then(res => {
                const data = res.data.data;
@@ -254,15 +349,18 @@
                this.$refs.attrRef.refreshTable();
            });
        },
        // å±žæ€§æ± æ£€ç´¢
        attrRefSearch(form,done){
            this.attrRef.key = form.key;
            this.attrRefOnLoad();
            done();
            this.attrRef.key = null;
        },
        // å±žæ€§æ± å‹¾é€‰äº‹ä»¶
        selectionChange(list){
            this.attrRef.selectData = list;
        },
        // ç¡®è®¤å±žæ€§æ± å‹¾é€‰
        confirmSelectAttr(){
            this.btmType.attributes = [];
            this.attrRef.queryNotIn = "";
@@ -281,10 +379,12 @@
            });
            this.closeAttrDialog();
        },
        // å–消属性池勾选
        cancleSelectAttr(){
            this.attrRef.selectData = [];
            this.closeAttrDialog();
        },
        // æ·»åŠ ä¸šåŠ¡ç±»åž‹
        submitBtmType(){
            console.log(this.btmType);
            add(this.btmType,true).then(res => {
@@ -294,28 +394,78 @@
                this.$emit('refreshTable');
            })
        },
        // å–消添加业务类型
        cancleSubmitBtmType(){
            this.btmType = {};
            this.btmType.attributes = [];
            this.showSubmitDialog = false;
        },
        // åˆ·æ–°å±žæ€§åˆ—表
        refreshAttrTable(){
            this.$nextTick( () => {
                this.$refs.attrTable.refreshTable();
            })
        },
        //
        viewChange(){
        },
        // åˆ—表编辑
        cellEditClick(cell){
            cell.$cellEdit = true;
        },
        // åˆ—表编辑保存
        cellEditSave(row){
            this.btmType.attributes[row.$index].name = row.name
            this.btmType.attributes[row.$index].defaultValue = row.defaultValue;
            this.btmType.attributes[row.$index].description = row.description;
            row.$cellEdit = false;
        }
        },
        // æ‰“开版本规则参照
        async openRevision(){
            await getPage().then(res => {
                this.revisionRef.data = res.data.data.records;
            });
            this.revisionRef.visible = true;
        },
       // å…³é—­ç‰ˆæœ¬è§„则参照弹窗
       closeRevisionDialog(){
            this.revisionRef.visible = false;
       },
       // ç‰ˆæœ¬è§„则参照列表检索
       revisionRefSearch(){
       },
       // ç‰ˆæœ¬è§„则选中事件
       revisionChange(){},
       // ç¡®è®¤é€‰ä¸­ç‰ˆæœ¬è§„则
       confirmRevision(){
            this.btmType.revisionFlag = true;
            this.btmType.revisionRuleId = this.revisionRef.selectData.id;
            this.btmType.revisionRuleName = this.revisionRef.selectData.name;
            this.btmType.inputRevisionFlag = false;
            this.cancelRevision();
       },
       // å–消选中版本规则
       cancelRevision(){
            this.revisionRef.selectRow  = '';
            this.revisionRef.selectData = {};
            this.closeRevisionDialog();
       },
       // ç‰ˆæœ¬è§„则单选
       revisionClick(row){
            this.revisionRef.selectRow = row.$index;
            this.revisionRef.selectData = {
                id: row.id,
                name: row.name,
            };
       },
       clearRevision(){
            this.$delete(this.btmType,'revisionFlag');
            this.$delete(this.btmType,'revisionRuleId');
            this.$delete(this.btmType,'revisionRuleName');
            this.$delete(this.btmType,'inputRevisionFlag');
       }
    }
}
</script>
@@ -323,6 +473,10 @@
<style>
/* å±žæ€§æ± å‚照列表 */
.attrRef > .el-card:nth-of-type(2) > .el-card__body > .avue-crud__menu{
    display: none !important;
}
.revisionRef > .el-card:nth-of-type(2) > .el-card__body > .avue-crud__menu{
    display: none !important;
}
@@ -337,4 +491,8 @@
.descClass > .el-input__inner {
    width: 57vw
}
#descId {
    width: 57vw;
}
</style>
Source/UBCS-WEB/src/views/modeling/Version.vue
@@ -34,6 +34,7 @@
</template>
<script>
import { getPage,add,update,remove } from '../../api/omd/revisionRule';
export default {
  name: "Version",
  data(){
@@ -47,36 +48,6 @@
        total: 100
      },
      data:[
        {
          name:"测试1",
          tag:"测试",
          char:"测试",
          Initial:"测试",
          Step:"测试",
          prefix:"测试",
          suffix:"测试",
          desc:"测试"
        },
        {
          name:"测试2",
          tag:"测试",
          char:"测试",
          Initial:"测试",
          Step:"测试",
          prefix:"测试",
          suffix:"测试",
          desc:"测试"
        },
        {
          name:"测试3",
          tag:"测试",
          char:"测试",
          Initial:"测试",
          Step:"测试",
          prefix:"测试",
          suffix:"测试",
          desc:"测试"
        }
      ],
      form:{},
      option:{
@@ -87,37 +58,37 @@
        searchMenuSpan:5,
        column:[
          {
            label:"名称",
            label:'英文名称',
            prop: 'id'
          },
          {
            label:"中文名称",
            prop:"name",
            search:true,
          },
          {
            label: "标签",
            prop:"tag"
          },
          {
            label:"跳跃字符",
            prop:"char"
            prop: "skipCode"
          },
          {
            label: "初始值",
            prop:"Initial"
            prop:"startCode"
          },
          {
            label:"步长",
            prop:"Step"
            label: "步长",
            prop: "serialStep"
          },
          {
            label: "前缀",
            prop:"prefix"
            prop:"prefixCode"
          },
          {
            label: "后缀",
            prop: "suffix"
            prop: "suffixCode"
          },
          {
            label: "描述",
            prop:"desc",
            prop:"description",
            type:"textarea"
          }
        ]
@@ -128,25 +99,17 @@
    handleSearch(){
      this.packageSearchBox=true
    },
    // getList() {
    //   this.loading = true;
    //   const data = Object.assign({
    //     pageNum: this.page.currentPage,
    //     pageSize: this.page.pageSize,
    //   }, this.params)
    //   this.data = [];
    //   getList(data).then(res => {
    //     const data = res.data.data
    //     this.loading = false;
    //     this.page.total = data.total;
    //     const result = data.list;
    //     this.data = result;
    //   })
    // },
    getList() {
      this.loading = true;
      getPage(this.page.currentPage,this.page.pageSize,this.params).then(res => {
        const data = res.data.data
        this.loading = false;
        this.page.total = data.total;
        this.data = data.records;
      })
    },
    rowSave(row, done, loading) {
      add(Object.assign({
        createUser: this.userInfo.name
      }, row)).then(() => {
      add(row).then(() => {
        this.$message.success('新增成功')
        done();
        this.getList();
@@ -155,9 +118,7 @@
      })
    },
    rowUpdate(row, index, done, loading) {
      update(Object.assign({
        updateUser: this.userInfo.name
      }, row)).then(() => {
      update(row).then(() => {
        this.$message.success('修改成功')
        done()
        this.getList();
@@ -171,7 +132,8 @@
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        return del(row.id)
        console.log(row);
        return remove({oid : row.oid})
      }).then(() => {
        this.$message.success('删除成功')
        this.getList();
Source/UBCS-WEB/src/views/modeling/original.vue
@@ -4,14 +4,19 @@
      <basic-container>
        <avue-crud v-model="form" :option="option" :data="data" ref="crud" @on-load="onLoad" @row-save="rowSave"
          @row-update="rowUpdate" :before-open="beforeOpen" @row-del="rowDel" :page.sync="page"
          @refresh-change="refreshChange" @row-click="rowClick">
          @refresh-change="refreshChange" @row-click="rowClick"
          @selection-change="selectChange">
          <template slot-scope="{row,index,type}" slot="selInputForm">
          <div style="margin-left: 75px">
            <el-input v-model="form.text" :size="size" style="width: 210px" :readonly="true" @focus="selectBtmType" :disabled="referType.disable"></el-input>
            <!-- <el-button type="primary" style="margin-left: 10px" @click="addHandle">选择</el-button> -->
            <!-- <el-button type="info">取消</el-button> -->
          </div>
        </template>
        <template slot="radio"
                slot-scope="{row}">
                    <el-radio v-model="selectRow"
                        :label="row.$index">&nbsp;
                    </el-radio>
                </template>
        </avue-crud>
        <el-dialog :visible.sync="referType.display" append-to-body :title="referType.title" width="1000px">
          <original-range @rowchange="rowchange"></original-range>
@@ -136,18 +141,24 @@
        currentPage: 1,
        total: 100
      },
      selectRow: '',
      data: [
      ],
      option: {
        height: "550px",
        selection: true,
        headerAlign: 'center',
        border: true,
        index: true,
        rowKey: 'id',
        tabs: true,
        column: [
        highlightCurrentRow: true,
        column: [{
            label: '选择',
            prop: 'radio',
            width: 60,
            hide: false
          },
          {
            label: '属性编号',
            prop: 'key',
@@ -544,12 +555,14 @@
      })
    },
    rowClick(row) {
      this.itemData = row
      this.itemData = row;
      this.selectRow = row.$index;
    }
    ,selectBtmType(){
        this.referType.display = true;
        this.referType.title = "请选择" + this.referType.value
    }
    },
  },
}
</script>
Source/UBCS-WEB/src/views/modeling/status.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,141 @@
<template>
    <basic-container>
      <avue-crud ref="crud"
                 v-model="form"
                 :data="data"
                 :option="option"
                 :page.sync="page"
                 @on-load="getList"
                 @row-update="rowUpdate"
                 @row-save="rowSave"
                 @row-del="rowDel"
                 @refresh-change="refreshChange"
                 @search-reset="searchChange"
                 @search-change="searchChange">
        <template slot="menuLeft">
          <el-tooltip class="item" effect="dark" content="查找状态池使用范围" placement="top">
            <el-button size="small"
                       plain
                       type="primary"
                       icon="el-icon-zoom-in"
                       @click="handleSearch">查看使用范围
            </el-button>
          </el-tooltip>
        </template>>
      </avue-crud>
      <el-dialog title="查看使用范围"
                 append-to-body
                 :visible.sync="packageSearchBox"
                 width="1200px">
        <versionpackage></versionpackage>
      </el-dialog>
    </basic-container>
  </template>
  <script>
  import { getPage,add,update,remove } from '../../api/omd/status';
  export default {
    name: "status",
    data(){
      return {
        //查看使用范围
        packageSearchBox:false,
        //分页数据
        page: {
          pageSize: 10,
          currentPage: 1,
          total: 100
        },
        data:[
        ],
        form:{},
        option:{
          headerAlign:'center',
          align: 'center',
          border: true,
          index: true,
          searchMenuSpan:5,
          column:[
            {
              label:'英文名称',
              prop: 'id',
              search: true
            },
            {
              label:"中文名称",
              prop:"name",
              search:true,
            },
            {
              label: "描述",
              prop:"description",
              type:"textarea"
            }
          ]
        }
      }
    },
    methods:{
      handleSearch(){
        this.packageSearchBox=true
      },
      getList() {
        this.loading = true;
        getPage(this.page.currentPage,this.page.pageSize,this.params).then(res => {
          const data = res.data.data
          this.loading = false;
          this.page.total = data.total;
          this.data = data.records;
        })
      },
      rowSave(row, done, loading) {
        add(row).then(() => {
          this.$message.success('新增成功')
          done();
          this.getList();
        }).catch(() => {
          loading()
        })
      },
      rowUpdate(row, index, done, loading) {
        update(row).then(() => {
          this.$message.success('修改成功')
          done()
          this.getList();
        }).catch(() => {
          loading()
        })
      },
      rowDel(row) {
        this.$confirm('此操作将永久删除, æ˜¯å¦ç»§ç»­?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          console.log(row);
          return remove({oid : row.oid})
        }).then(() => {
          this.$message.success('删除成功')
          this.getList();
        })
      },
      searchChange(params, done) {
        if (done) done();
        this.params = params;
        this.page.currentPage = 1;
        this.getList();
        this.$message.success('搜索成功')
      },
      refreshChange() {
        this.getList();
        this.$message.success('刷新成功')
      }
    }
  }
  </script>
  <style scoped>
  </style>
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleEvent.java
@@ -14,7 +14,7 @@
 * @date 2019/10/17 9:32
 */
@Data
@TableName("pl_omd_lift_cycle_event")
@TableName("pl_omd_life_cycle_event")
@ApiModel(value = "生命周期事件集合", description = "生命周期事件集合")
public class LifeCycleEvent implements java.io.Serializable{
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleLine.java
@@ -14,7 +14,7 @@
 * @date 2019/10/10 6:56 PM
 */
@Data
@TableName("pl_omd_lift_cycle_line")
@TableName("pl_omd_life_cycle_line")
@ApiModel(value = "生命周期状态连接线", description = "生命周期状态连接线")
public class LifeCycleLine implements java.io.Serializable {
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleLineEvent.java
@@ -14,7 +14,7 @@
 * @date 2019/10/11 2:49 PM
 */
@Data
@TableName("pl_omd_lift_cycle_line_event")
@TableName("pl_omd_life_cycle_line_event")
@ApiModel(value = "生命周期状态连接线", description = "生命周期状态连接线")
public class LifeCycleLineEvent implements java.io.Serializable{
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleRule.java
@@ -14,7 +14,7 @@
 * @date 2019/10/10 5:59 PM
 */
@Data
@TableName("pl_omd_lift_cycle_rule")
@TableName("pl_omd_life_cycle_rule")
@ApiModel(value = "生命周期规则", description = "生命周期规则")
public class LifeCycleRule implements java.io.Serializable {
@@ -60,7 +60,7 @@
    /**
     * ä¸šåŠ¡ç±»åž‹åç§°
     */
    private String btmname;
    private String btmName;
    /**
     * æ‹¥æœ‰è€…
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/RevisionRule.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,104 @@
package com.vci.ubcs.omd.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
 * Description: ç‰ˆæœ¬è§„则
 *
 * @author LiHang
 * @date 2023/5/17
 */
@Data
@TableName("pl_omd_revision_rule")
@ApiModel(value = "版本规则", description = "版本规则")
public class RevisionRule implements Serializable {
    /**
     * åºåˆ—化
     */
    private static final long serialVersionUID = -8011164573572900457L;
    /**
     * ä¸»é”®
     */
    private String oid;
    /**
     * è‹±æ–‡åç§°
     */
    private String id;
    /**
     * ä¸­æ–‡åç§°
     */
    private String name;
    /**
     * è·³è·ƒå­—符
     */
    private String skipCode;
    /**
     * åˆå§‹å€¼
     */
    private String startCode;
    /**
     * æ­¥é•¿
     */
    private Integer serialStep;
    /**
     * å‰ç¼€
     */
    private String prefixCode;
    /**
     * åŽç¼€
     */
    private String suffixCode;
    /**
     * æè¿°
     */
    private String description;
    /**
     * ä¸šåŠ¡ç±»åž‹åç§°
     */
    private String btmName;
    /**
     * æ‹¥æœ‰è€…
     */
    private String owner;
    /**
     * åˆ›å»ºäºº
     */
    private String creator;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    private Date createTime;
    /**
     * æœ€åŽä¿®æ”¹äºº
     */
    private String lastModifier;
    /**
     * æœ€åŽä¿®æ”¹æ—¶é—´ï¼Œæ ¼å¼æ˜¯yyyy-MM-dd HH:mm:ss
     */
    private Date lastModifyTime;
    /**
     * æ—¶é—´æˆ³ï¼Œæ ¼å¼æ˜¯yyyy-MM-dd HH:mm:ss.SSS
     */
    private Date ts;
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Status.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,82 @@
package com.vci.ubcs.omd.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
 * Description:状态池对象
 *
 * @author LiHang
 * @date 2023/5/23
 */
@Data
@TableName("pl_omd_status")
@ApiModel(value = "状态池对象", description = "状态池对象")
public class Status implements Serializable {
    /**
     * åºåˆ—化
     */
    private static final long serialVersionUID = 5914235157247110985L;
    /**
     * ä¸»é”®
     */
    private String oid;
    /**
     * çŠ¶æ€è‹±æ–‡åç§°
     */
    private String id;
    /**
     * çŠ¶æ€ä¸­æ–‡åç§°
     */
    private String name;
    /**
     * æè¿°
     */
    private String description;
    /**
     * ä¸šåŠ¡ç±»åž‹åç§°
     */
    private String btmName;
    /**
     * æ‹¥æœ‰è€…
     */
    private String owner;
    /**
     * åˆ›å»ºäºº
     */
    private String creator;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    private Date createTime;
    /**
     * æœ€åŽä¿®æ”¹äºº
     */
    private String lastModifier;
    /**
     * æœ€åŽä¿®æ”¹æ—¶é—´ï¼Œæ ¼å¼æ˜¯yyyy-MM-dd HH:mm:ss
     */
    private Date lastModifyTime;
    /**
     * æ—¶é—´æˆ³ï¼Œæ ¼å¼æ˜¯yyyy-MM-dd HH:mm:ss.SSS
     */
    private Date ts;
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IRevisionRuleClient.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,92 @@
package com.vci.ubcs.omd.feign;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.vci.ubcs.omd.vo.RevisionRuleVO;
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
import org.springblade.core.launch.constant.AppConstant;
import org.springblade.core.tool.api.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.Collection;
import java.util.List;
/**
 * Description:版本规则Feign接口类
 *
 * @author LiHang
 * @date 2023/5/22
 */
@FeignClient(
    value = AppConstant.APPLICATION_NAME_OMD,
    fallback = IRevisionRuleFallback.class
)
public interface IRevisionRuleClient {
    /**
     * å‰ç¼€
     */
    String API_PREFIX = "/client";
    /**
     * å‚照列表查询
     */
    String GET_REF_PAGE = API_PREFIX + "/revision-rule/get-ref-page";
    /**
     * å‚照列表查询无分页
     */
    String GET_REF = API_PREFIX + "/revision-rule/get-ref";
    /**
     * å‚照明细
     */
    String GET_DETAIL = API_PREFIX + "/revision-rule/get-detail";
    /**
     * è‹±æ–‡åç§°æ‰¹é‡æŸ¥è¯¢
     */
    String GET_BY_IDS = API_PREFIX + "/revision-rule/get-by-ids";
    /**
     * ä¸»é”®æ‰¹é‡æŸ¥è¯¢
     */
    String GET_BY_OIDS = API_PREFIX + "/revision-rule/get-by-oids";
    /**
     * èŽ·å–ç‰ˆæœ¬è§„åˆ™è¯¦æƒ…ä¿¡æ¯
     *
     * @param oid ä¸»é”®
     * @return ç‰ˆæœ¬è§„则详情信息
     */
    @GetMapping(GET_DETAIL)
    R<RevisionRuleVO> getDetail(@RequestParam("oid") String oid);
    /**
     * å‚照列表查询
     * @param baseQueryObject æŸ¥è¯¢æ¡ä»¶
     * @return æŸ¥è¯¢ç»“æžœ
     */
    @GetMapping(GET_REF_PAGE)
    R<IPage<RevisionRuleVO>> getRefPage(@RequestParam("baseQueryObject") BaseQueryObject baseQueryObject);
    /**
     * å‚照列表查询
     * @param baseQueryObject æŸ¥è¯¢æ¡ä»¶
     * @return æŸ¥è¯¢ç»“æžœ
     */
    @GetMapping(GET_REF)
    R<List<RevisionRuleVO>> getRef(@RequestParam("baseQueryObject")BaseQueryObject baseQueryObject);
    /**
     * æ ¹æ®è‹±æ–‡åç§°æ‰¹é‡æŸ¥è¯¢å¯¹è±¡
     * @param ids å¯¹è±¡è‹±æ–‡åç§° ä½†æ˜¯ä¸èƒ½è¶…过1000
     * @return ä¸šåŠ¡å¯¹è±¡
     */
    @GetMapping(GET_BY_IDS)
    R<List<RevisionRuleVO>> selectByIdCollection(List<String> ids);
    /**
     * æ‰¹é‡æ ¹æ®ä¸»é”®èŽ·å–ç‰ˆæœ¬è§„åˆ™
     * @param pkBtmTypeCollection ç‰ˆæœ¬è§„则主键集合
     * @return ç‰ˆæœ¬è§„则列表,如果有不存在的不会返回,全部不存在的则返回空列表
     */
    @GetMapping(GET_BY_OIDS)
    R<List<RevisionRuleVO>> listBtmTypeByOidCollection(Collection<String> pkBtmTypeCollection);
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IRevisionRuleFallback.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,74 @@
package com.vci.ubcs.omd.feign;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.vci.ubcs.omd.vo.RevisionRuleVO;
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
 * Description: Feign失败类
 *
 * @author LiHang
 * @date 2023/5/22
 */
public class IRevisionRuleFallback implements IRevisionRuleClient{
    /**
     * èŽ·å–ç‰ˆæœ¬è§„åˆ™è¯¦æƒ…ä¿¡æ¯
     *
     * @param oid ä¸»é”®
     * @return ç‰ˆæœ¬è§„则详情信息
     */
    @Override
    public R<RevisionRuleVO> getDetail(String oid) {
        return R.fail("获取数据失败");
    }
    /**
     * å‚照列表查询
     *
     * @param baseQueryObject æŸ¥è¯¢æ¡ä»¶
     * @return æŸ¥è¯¢ç»“æžœ
     */
    @Override
    public R<IPage<RevisionRuleVO>> getRefPage(BaseQueryObject baseQueryObject) {
        return R.fail("获取数据失败");
    }
    /**
     * å‚照列表查询
     *
     * @param baseQueryObject æŸ¥è¯¢æ¡ä»¶
     * @return æŸ¥è¯¢ç»“æžœ
     */
    @Override
    public R<List<RevisionRuleVO>> getRef(BaseQueryObject baseQueryObject) {
        return R.fail("获取数据失败");
    }
    /**
     * æ ¹æ®è‹±æ–‡åç§°æ‰¹é‡æŸ¥è¯¢å¯¹è±¡
     *
     * @param ids å¯¹è±¡è‹±æ–‡åç§° ä½†æ˜¯ä¸èƒ½è¶…过1000
     * @return ä¸šåŠ¡å¯¹è±¡
     */
    @Override
    public R<List<RevisionRuleVO>> selectByIdCollection(List<String> ids) {
        return R.fail("获取数据失败");
    }
    /**
     * æ‰¹é‡æ ¹æ®ä¸»é”®èŽ·å–ç‰ˆæœ¬è§„åˆ™
     *
     * @param pkBtmTypeCollection ç‰ˆæœ¬è§„则主键集合
     * @return ç‰ˆæœ¬è§„则列表,如果有不存在的不会返回,全部不存在的则返回空列表
     */
    @Override
    public R<List<RevisionRuleVO>> listBtmTypeByOidCollection(Collection<String> pkBtmTypeCollection) {
        return R.fail("获取数据失败");
    }
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IStatusClient.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,69 @@
package com.vci.ubcs.omd.feign;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.vci.ubcs.omd.entity.Status;
import com.vci.ubcs.omd.vo.StatusVO;
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
import com.vci.ubcs.starter.web.pagemodel.KeyValue;
import org.springblade.core.launch.constant.AppConstant;
import org.springblade.core.tool.api.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.List;
import java.util.Map;
/**
 * Description: çŠ¶æ€æ± Feign接口类
 *
 * @author LiHang
 * @date 2023/5/23
 */
@FeignClient(
    value = AppConstant.APPLICATION_NAME_OMD,
    fallback = IRevisionRuleFallback.class
)
public interface IStatusClient {
    /**
     * å‰ç¼€
     */
    String API_PREFIX = "/client";
    /**
     * å‚照列表查询
     */
    String GET_REF_PAGE = API_PREFIX + "/status/get-ref-page";
    /**
     * å‚照列表查询无分页
     */
    String GET_REF = API_PREFIX + "/status/get-ref";
    /**
     * è‹±æ–‡åç§°æ‰¹é‡æŸ¥è¯¢
     */
    String GET_NAME_BY_IDS = API_PREFIX + "/status/get-name-by-ids";
    /**
     * å‚照列表查询
     * @param baseQueryObject æŸ¥è¯¢æ¡ä»¶å¯¹è±¡
     * @return æ‰§è¡Œç»“æžœ
     */
    @GetMapping(GET_REF_PAGE)
    R<IPage<StatusVO>> getRefPage(BaseQueryObject baseQueryObject);
    /**
     * å‚照查询
     * @param baseQueryObject æŸ¥è¯¢æ¡ä»¶å¯¹è±¡
     * @return æ‰§è¡Œç»“æžœ
     */
    @GetMapping(GET_REF)
    R<List<StatusVO>> getRef(BaseQueryObject baseQueryObject);
    /**
     * è‹±æ–‡æŸ¥è¯¢ä¸­æ–‡åç§°
     * @param ids è‹±æ–‡
     * @return æŸ¥è¯¢ç»“æžœ
     */
    @GetMapping(GET_NAME_BY_IDS)
    R<Map<String,String>> getNameByIds(String ids);
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IStatusFallback.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,51 @@
package com.vci.ubcs.omd.feign;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.vci.ubcs.omd.vo.StatusVO;
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
import com.vci.ubcs.starter.web.pagemodel.KeyValue;
import org.springblade.core.tool.api.R;
import java.util.List;
import java.util.Map;
/**
 * Description:
 *
 * @author LiHang
 * @date 2023/5/23
 */
public class IStatusFallback implements IStatusClient{
    /**
     * å‚照列表查询
     *
     * @param baseQueryObject æŸ¥è¯¢æ¡ä»¶å¯¹è±¡
     * @return æ‰§è¡Œç»“æžœ
     */
    @Override
    public R<IPage<StatusVO>> getRefPage(BaseQueryObject baseQueryObject) {
        return R.fail("获取数据失败");
    }
    /**
     * å‚照查询
     *
     * @param baseQueryObject æŸ¥è¯¢æ¡ä»¶å¯¹è±¡
     * @return æ‰§è¡Œç»“æžœ
     */
    @Override
    public R<List<StatusVO>> getRef(BaseQueryObject baseQueryObject) {
        return R.fail("获取数据失败");
    }
    /**
     * è‹±æ–‡æŸ¥è¯¢ä¸­æ–‡åç§°
     *
     * @param ids è‹±æ–‡
     * @return æŸ¥è¯¢ç»“æžœ
     */
    @Override
    public R<Map<String,String>> getNameByIds(String ids) {
        return R.fail("获取数据失败");
    }
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LifeCycleEventVO.java
@@ -1,12 +1,15 @@
package com.vci.ubcs.omd.vo;
import lombok.Data;
import java.util.Date;
/**
 * ç”Ÿå‘½å‘¨æœŸäº‹ä»¶æ˜¾ç¤ºå¯¹è±¡
 * @author weidy
 * @date 2019/10/17 9:46
 * @author LiHang
 * @date 2023/4/3
 */
@Data
public class LifeCycleEventVO implements java.io.Serializable{
    /**
@@ -68,110 +71,4 @@
     * æ—¶é—´æˆ³ï¼Œæ ¼å¼æ˜¯yyyy-MM-dd HH:mm:ss.SSS
     */
    private Date ts;
    public String getEventFullName() {
        return eventFullName;
    }
    public void setEventFullName(String eventFullName) {
        this.eventFullName = eventFullName;
    }
    public String getEventShowName() {
        return eventShowName;
    }
    public void setEventShowName(String eventShowName) {
        this.eventShowName = eventShowName;
    }
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }
    public String getCreator() {
        return creator;
    }
    public void setCreator(String creator) {
        this.creator = creator;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public String getLastModifier() {
        return lastModifier;
    }
    public void setLastModifier(String lastModifier) {
        this.lastModifier = lastModifier;
    }
    public Date getLastModifyTime() {
        return lastModifyTime;
    }
    public void setLastModifyTime(Date lastModifyTime) {
        this.lastModifyTime = lastModifyTime;
    }
    public Date getTs() {
        return ts;
    }
    public void setTs(Date ts) {
        this.ts = ts;
    }
    public String getOid() {
        return oid;
    }
    public void setOid(String oid) {
        this.oid = oid;
    }
    public String getBtmname() {
        return btmname;
    }
    public void setBtmname(String btmname) {
        this.btmname = btmname;
    }
    public String getOwner() {
        return owner;
    }
    public void setOwner(String owner) {
        this.owner = owner;
    }
    @Override
    public String toString() {
        return "OsLifeCycleEventVO{" +
                "oid='" + oid + '\'' +
                ", eventFullName='" + eventFullName + '\'' +
                ", eventShowName='" + eventShowName + '\'' +
                ", description='" + description + '\'' +
                ", btmname='" + btmname + '\'' +
                ", owner='" + owner + '\'' +
                ", creator='" + creator + '\'' +
                ", createTime=" + createTime +
                ", lastModifier='" + lastModifier + '\'' +
                ", lastModifyTime=" + lastModifyTime +
                ", ts=" + ts +
                '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LifeCycleLineEventVO.java
@@ -1,13 +1,16 @@
package com.vci.ubcs.omd.vo;
import lombok.Data;
import java.util.Date;
/**
 * ç”Ÿå‘½å‘¨æœŸè¿žæŽ¥çº¿äº‹ä»¶
 * @author weidy
 * @date 2019/10/11 4:54 PM
 * @author LiHang
 * @date 2023/4/3
 */
@Data
public class LifeCycleLineEventVO implements java.io.Serializable{
    /**
@@ -74,119 +77,4 @@
     * æ—¶é—´æˆ³ï¼Œæ ¼å¼æ˜¯yyyy-MM-dd HH:mm:ss.SSS
     */
    private Date ts;
    public String getOid() {
        return oid;
    }
    public void setOid(String oid) {
        this.oid = oid;
    }
    public String getPkLifeCycleLine() {
        return pkLifeCycleLine;
    }
    public void setPkLifeCycleLine(String pkLifeCycleLine) {
        this.pkLifeCycleLine = pkLifeCycleLine;
    }
    public String getEventFullName() {
        return eventFullName;
    }
    public void setEventFullName(String eventFullName) {
        this.eventFullName = eventFullName;
    }
    public String getEventShowName() {
        return eventShowName;
    }
    public void setEventShowName(String eventShowName) {
        this.eventShowName = eventShowName;
    }
    public String getCreator() {
        return creator;
    }
    public void setCreator(String creator) {
        this.creator = creator;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public String getLastModifier() {
        return lastModifier;
    }
    public void setLastModifier(String lastModifier) {
        this.lastModifier = lastModifier;
    }
    public Date getLastModifyTime() {
        return lastModifyTime;
    }
    public void setLastModifyTime(Date lastModifyTime) {
        this.lastModifyTime = lastModifyTime;
    }
    public Date getTs() {
        return ts;
    }
    public void setTs(Date ts) {
        this.ts = ts;
    }
    public Integer getOrderNum() {
        return orderNum;
    }
    public void setOrderNum(Integer orderNum) {
        this.orderNum = orderNum;
    }
    public String getBtmname() {
        return btmname;
    }
    public void setBtmname(String btmname) {
        this.btmname = btmname;
    }
    public String getOwner() {
        return owner;
    }
    public void setOwner(String owner) {
        this.owner = owner;
    }
    @Override
    public String toString() {
        return "OsLifeCycleLineEventVO{" +
                "oid='" + oid + '\'' +
                ", pkLifeCycleLine='" + pkLifeCycleLine + '\'' +
                ", eventFullName='" + eventFullName + '\'' +
                ", eventShowName='" + eventShowName + '\'' +
                ", orderNum=" + orderNum +
                ", btmname='" + btmname + '\'' +
                ", owner='" + owner + '\'' +
                ", creator='" + creator + '\'' +
                ", createTime=" + createTime +
                ", lastModifier='" + lastModifier + '\'' +
                ", lastModifyTime=" + lastModifyTime +
                ", ts=" + ts +
                '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LifeCycleLineVO.java
@@ -1,13 +1,16 @@
package com.vci.ubcs.omd.vo;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
 * ç”Ÿå‘½å‘¨æœŸè¿žæŽ¥çº¿
 * @author weidy
 * @date 2019/10/11 4:48 PM
 * @author LiHang
 * @date 2023/4/3
 */
@Data
public class LifeCycleLineVO implements java.io.Serializable {
    /**
@@ -94,155 +97,4 @@
     * åŒ…含事件
     */
    private List<LifeCycleLineEventVO> events;
    public String getPkLifeCycle() {
        return pkLifeCycle;
    }
    public void setPkLifeCycle(String pkLifeCycle) {
        this.pkLifeCycle = pkLifeCycle;
    }
    public String getSourceLifeStatus() {
        return sourceLifeStatus;
    }
    public void setSourceLifeStatus(String sourceLifeStatus) {
        this.sourceLifeStatus = sourceLifeStatus;
    }
    public String getSourceLifeStatusName() {
        return sourceLifeStatusName;
    }
    public void setSourceLifeStatusName(String sourceLifeStatusName) {
        this.sourceLifeStatusName = sourceLifeStatusName;
    }
    public String getTargetLifeStatus() {
        return targetLifeStatus;
    }
    public void setTargetLifeStatus(String targetLifeStatus) {
        this.targetLifeStatus = targetLifeStatus;
    }
    public String getTargetLifeStatusName() {
        return targetLifeStatusName;
    }
    public void setTargetLifeStatusName(String targetLifeStatusName) {
        this.targetLifeStatusName = targetLifeStatusName;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getTransLineSiteInfo() {
        return transLineSiteInfo;
    }
    public void setTransLineSiteInfo(String transLineSiteInfo) {
        this.transLineSiteInfo = transLineSiteInfo;
    }
    public String getOid() {
        return oid;
    }
    public void setOid(String oid) {
        this.oid = oid;
    }
    public String getCreator() {
        return creator;
    }
    public void setCreator(String creator) {
        this.creator = creator;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public String getLastModifier() {
        return lastModifier;
    }
    public void setLastModifier(String lastModifier) {
        this.lastModifier = lastModifier;
    }
    public Date getLastModifyTime() {
        return lastModifyTime;
    }
    public void setLastModifyTime(Date lastModifyTime) {
        this.lastModifyTime = lastModifyTime;
    }
    public Date getTs() {
        return ts;
    }
    public void setTs(Date ts) {
        this.ts = ts;
    }
    public List<LifeCycleLineEventVO> getEvents() {
        return events;
    }
    public void setEvents(List<LifeCycleLineEventVO> events) {
        this.events = events;
    }
    public String getBtmname() {
        return btmname;
    }
    public void setBtmname(String btmname) {
        this.btmname = btmname;
    }
    public String getOwner() {
        return owner;
    }
    public void setOwner(String owner) {
        this.owner = owner;
    }
    @Override
    public String toString() {
        return "OsLifeCycleLineVO{" +
                "pkLifeCycle='" + pkLifeCycle + '\'' +
                ", sourceLifeStatus='" + sourceLifeStatus + '\'' +
                ", sourceLifeStatusName='" + sourceLifeStatusName + '\'' +
                ", targetLifeStatus='" + targetLifeStatus + '\'' +
                ", targetLifeStatusName='" + targetLifeStatusName + '\'' +
                ", name='" + name + '\'' +
                ", transLineSiteInfo='" + transLineSiteInfo + '\'' +
                ", oid='" + oid + '\'' +
                ", btmname='" + btmname + '\'' +
                ", owner='" + owner + '\'' +
                ", creator='" + creator + '\'' +
                ", createTime=" + createTime +
                ", lastModifier='" + lastModifier + '\'' +
                ", lastModifyTime=" + lastModifyTime +
                ", ts=" + ts +
                ", events=" + events +
                '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LifeCycleVO.java
@@ -1,13 +1,16 @@
package com.vci.ubcs.omd.vo;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
 * ç”Ÿå‘½å‘¨æœŸæ˜¾ç¤ºå¯¹è±¡
 * @author weidy
 * @date 2019/10/11 4:45 PM
 * @author LiHang
 * @date 2023/4/3
 */
@Data
public class LifeCycleVO implements java.io.Serializable{
    /**
@@ -88,146 +91,5 @@
    /**
     * åŒ…含连接线
     */
    private List<LifeCycleLineVO> lines ;
    public String getClassFullName() {
        return classFullName;
    }
    public void setClassFullName(String classFullName) {
        this.classFullName = classFullName;
    }
    public String getBtmname() {
        return btmname;
    }
    public void setBtmname(String btmname) {
        this.btmname = btmname;
    }
    public String getOwner() {
        return owner;
    }
    public void setOwner(String owner) {
        this.owner = owner;
    }
    public String getOid() {
        return oid;
    }
    public void setOid(String oid) {
        this.oid = oid;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }
    public String getStartStatus() {
        return startStatus;
    }
    public void setStartStatus(String startStatus) {
        this.startStatus = startStatus;
    }
    public String getStartStatusName() {
        return startStatusName;
    }
    public void setStartStatusName(String startStatusName) {
        this.startStatusName = startStatusName;
    }
    public String getCreator() {
        return creator;
    }
    public void setCreator(String creator) {
        this.creator = creator;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public String getLastModifier() {
        return lastModifier;
    }
    public void setLastModifier(String lastModifier) {
        this.lastModifier = lastModifier;
    }
    public Date getLastModifyTime() {
        return lastModifyTime;
    }
    public void setLastModifyTime(Date lastModifyTime) {
        this.lastModifyTime = lastModifyTime;
    }
    public Date getTs() {
        return ts;
    }
    public void setTs(Date ts) {
        this.ts = ts;
    }
    public List<LifeCycleLineVO> getLines() {
        return lines;
    }
    public void setLines(List<LifeCycleLineVO> lines) {
        this.lines = lines;
    }
    @Override
    public String toString() {
        return "OsLifeCycleVO{" +
                "oid='" + oid + '\'' +
                ", id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", description='" + description + '\'' +
                ", classFullName='" + classFullName + '\'' +
                ", startStatus='" + startStatus + '\'' +
                ", startStatusName='" + startStatusName + '\'' +
                ", btmname='" + btmname + '\'' +
                ", owner='" + owner + '\'' +
                ", creator='" + creator + '\'' +
                ", createTime=" + createTime +
                ", lastModifier='" + lastModifier + '\'' +
                ", lastModifyTime=" + lastModifyTime +
                ", ts=" + ts +
                ", lines=" + lines +
                '}';
    }
    private List<LifeCycleLineVO> lines;
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LinkTypeAttributeVO.java
@@ -5,8 +5,8 @@
/**
 * é“¾æŽ¥ç±»åž‹åŒ…含的属性
 * @author weidy
 * @date 2019/10/11 6:16 PM
 * @author LiHang
 * @date 2023/4/3
 */
public class LinkTypeAttributeVO implements java.io.Serializable{
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LinkTypeVO.java
@@ -8,8 +8,8 @@
/**
 *
 * é“¾æŽ¥ç±»åž‹æ˜¾ç¤ºå¯¹è±¡
 * @author weidy
 * @date 2019/10/11 6:04 PM
 * @author LiHang
 * @date 2023/4/3
 */
@Data
public class LinkTypeVO implements java.io.Serializable {
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/ModifyAttributeInfoVO.java
@@ -1,12 +1,15 @@
package com.vci.ubcs.omd.vo;
import lombok.Data;
import java.util.Date;
/**
 * éœ€è¦ä¿®æ”¹æ•°æ®åº“表中字段的信息
 * @author weidy
 * @date 2019/10/18 11:48
 * @author LiHang
 * @date 2023/4/3
 */
@Data
public class ModifyAttributeInfoVO implements java.io.Serializable{
    /**
@@ -107,7 +110,7 @@
    /**
     * ä¸šåŠ¡ç±»åž‹åç§°
     */
    private String btmname;
    private String btmName;
    /**
     * æ‹¥æœ‰è€…
@@ -138,236 +141,4 @@
     * æ—¶é—´æˆ³ï¼Œæ ¼å¼æ˜¯yyyy-MM-dd HH:mm:ss.SSS
     */
    private Date ts;
    public String getBtmTypeId() {
        return btmTypeId;
    }
    public void setBtmTypeId(String btmTypeId) {
        this.btmTypeId = btmTypeId;
    }
    public String getBtmTypeName() {
        return btmTypeName;
    }
    public void setBtmTypeName(String btmTypeName) {
        this.btmTypeName = btmTypeName;
    }
    public String getLinkTypeFlag() {
        return linkTypeFlag;
    }
    public void setLinkTypeFlag(String linkTypeFlag) {
        this.linkTypeFlag = linkTypeFlag;
    }
    public String getTableName() {
        return tableName;
    }
    public void setTableName(String tableName) {
        this.tableName = tableName;
    }
    public String getModifyAttributeType() {
        return modifyAttributeType;
    }
    public void setModifyAttributeType(String modifyAttributeType) {
        this.modifyAttributeType = modifyAttributeType;
    }
    public String getModifyAttributeTypeText() {
        return modifyAttributeTypeText;
    }
    public void setModifyAttributeTypeText(String modifyAttributeTypeText) {
        this.modifyAttributeTypeText = modifyAttributeTypeText;
    }
    public String getColumnName() {
        return columnName;
    }
    public void setColumnName(String columnName) {
        this.columnName = columnName;
    }
    public String getModifyColumnReason() {
        return modifyColumnReason;
    }
    public void setModifyColumnReason(String modifyColumnReason) {
        this.modifyColumnReason = modifyColumnReason;
    }
    public String getOrderModifyUserName() {
        return orderModifyUserName;
    }
    public void setOrderModifyUserName(String orderModifyUserName) {
        this.orderModifyUserName = orderModifyUserName;
    }
    public Date getOrderModifyDate() {
        return orderModifyDate;
    }
    public void setOrderModifyDate(Date orderModifyDate) {
        this.orderModifyDate = orderModifyDate;
    }
    public String getAttributeDataTypeBefore() {
        return attributeDataTypeBefore;
    }
    public void setAttributeDataTypeBefore(String attributeDataTypeBefore) {
        this.attributeDataTypeBefore = attributeDataTypeBefore;
    }
    public String getAttributeDataTypeAfter() {
        return attributeDataTypeAfter;
    }
    public void setAttributeDataTypeAfter(String attributeDataTypeAfter) {
        this.attributeDataTypeAfter = attributeDataTypeAfter;
    }
    public String getDeleteColumnFlag() {
        return deleteColumnFlag;
    }
    public void setDeleteColumnFlag(String deleteColumnFlag) {
        this.deleteColumnFlag = deleteColumnFlag;
    }
    public boolean isHandleFinishFlag() {
        return handleFinishFlag;
    }
    public void setHandleFinishFlag(boolean handleFinishFlag) {
        this.handleFinishFlag = handleFinishFlag;
    }
    public String getHandleUserName() {
        return handleUserName;
    }
    public void setHandleUserName(String handleUserName) {
        this.handleUserName = handleUserName;
    }
    public Date getHandleDate() {
        return handleDate;
    }
    public void setHandleDate(Date handleDate) {
        this.handleDate = handleDate;
    }
    public String getHandleResult() {
        return handleResult;
    }
    public void setHandleResult(String handleResult) {
        this.handleResult = handleResult;
    }
    public String getOid() {
        return oid;
    }
    public void setOid(String oid) {
        this.oid = oid;
    }
    public String getCreator() {
        return creator;
    }
    public void setCreator(String creator) {
        this.creator = creator;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public String getLastModifier() {
        return lastModifier;
    }
    public void setLastModifier(String lastModifier) {
        this.lastModifier = lastModifier;
    }
    public Date getLastModifyTime() {
        return lastModifyTime;
    }
    public void setLastModifyTime(Date lastModifyTime) {
        this.lastModifyTime = lastModifyTime;
    }
    public Date getTs() {
        return ts;
    }
    public void setTs(Date ts) {
        this.ts = ts;
    }
    public String getBtmname() {
        return btmname;
    }
    public void setBtmname(String btmname) {
        this.btmname = btmname;
    }
    public String getOwner() {
        return owner;
    }
    public void setOwner(String owner) {
        this.owner = owner;
    }
    @Override
    public String toString() {
        return "OsModifyAttributeInfoVO{" +
                "btmTypeId='" + btmTypeId + '\'' +
                ", btmTypeName='" + btmTypeName + '\'' +
                ", linkTypeFlag='" + linkTypeFlag + '\'' +
                ", tableName='" + tableName + '\'' +
                ", modifyAttributeType='" + modifyAttributeType + '\'' +
                ", modifyAttributeTypeText='" + modifyAttributeTypeText + '\'' +
                ", columnName='" + columnName + '\'' +
                ", modifyColumnReason='" + modifyColumnReason + '\'' +
                ", orderModifyUserName='" + orderModifyUserName + '\'' +
                ", orderModifyDate=" + orderModifyDate +
                ", attributeDataTypeBefore='" + attributeDataTypeBefore + '\'' +
                ", attributeDataTypeAfter='" + attributeDataTypeAfter + '\'' +
                ", deleteColumnFlag='" + deleteColumnFlag + '\'' +
                ", handleFinishFlag=" + handleFinishFlag +
                ", handleUserName='" + handleUserName + '\'' +
                ", handleDate=" + handleDate +
                ", handleResult='" + handleResult + '\'' +
                ", oid='" + oid + '\'' +
                ", btmname='" + btmname + '\'' +
                ", owner='" + owner + '\'' +
                ", creator='" + creator + '\'' +
                ", createTime=" + createTime +
                ", lastModifier='" + lastModifier + '\'' +
                ", lastModifyTime=" + lastModifyTime +
                ", ts=" + ts +
                '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/RevisionRuleVO.java
@@ -1,5 +1,7 @@
package com.vci.ubcs.omd.vo;
import lombok.Data;
import java.util.Date;
/**
@@ -7,6 +9,7 @@
 * @author weidy
 * @date 2019/10/11 5:19 PM
 */
@Data
public class RevisionRuleVO implements java.io.Serializable{
    /**
@@ -62,7 +65,7 @@
    /**
     * ä¸šåŠ¡ç±»åž‹åç§°
     */
    private String btmname;
    private String btmName;
    /**
     * æ‹¥æœ‰è€…
@@ -93,155 +96,5 @@
     * æ—¶é—´æˆ³ï¼Œæ ¼å¼æ˜¯yyyy-MM-dd HH:mm:ss.SSS
     */
    private Date ts;
    public String getOid() {
        return oid;
    }
    public void setOid(String oid) {
        this.oid = oid;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSkipCode() {
        return skipCode;
    }
    public void setSkipCode(String skipCode) {
        this.skipCode = skipCode;
    }
    public String getStartCode() {
        return startCode;
    }
    public void setStartCode(String startCode) {
        this.startCode = startCode;
    }
    public Integer getSerialStep() {
        return serialStep;
    }
    public void setSerialStep(Integer serialStep) {
        this.serialStep = serialStep;
    }
    public String getPrefixCode() {
        return prefixCode;
    }
    public void setPrefixCode(String prefixCode) {
        this.prefixCode = prefixCode;
    }
    public String getSuffixCode() {
        return suffixCode;
    }
    public void setSuffixCode(String suffixCode) {
        this.suffixCode = suffixCode;
    }
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }
    public String getCreator() {
        return creator;
    }
    public void setCreator(String creator) {
        this.creator = creator;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public String getLastModifier() {
        return lastModifier;
    }
    public void setLastModifier(String lastModifier) {
        this.lastModifier = lastModifier;
    }
    public Date getLastModifyTime() {
        return lastModifyTime;
    }
    public void setLastModifyTime(Date lastModifyTime) {
        this.lastModifyTime = lastModifyTime;
    }
    public Date getTs() {
        return ts;
    }
    public void setTs(Date ts) {
        this.ts = ts;
    }
    public String getBtmname() {
        return btmname;
    }
    public void setBtmname(String btmname) {
        this.btmname = btmname;
    }
    public String getOwner() {
        return owner;
    }
    public void setOwner(String owner) {
        this.owner = owner;
    }
    @Override
    public String toString() {
        return "OsRevisionRuleVO{" +
                "oid='" + oid + '\'' +
                ", id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", skipCode='" + skipCode + '\'' +
                ", startCode='" + startCode + '\'' +
                ", serialStep=" + serialStep +
                ", prefixCode='" + prefixCode + '\'' +
                ", suffixCode='" + suffixCode + '\'' +
                ", description='" + description + '\'' +
                ", btmname='" + btmname + '\'' +
                ", owner='" + owner + '\'' +
                ", creator='" + creator + '\'' +
                ", createTime=" + createTime +
                ", lastModifier='" + lastModifier + '\'' +
                ", lastModifyTime=" + lastModifyTime +
                ", ts=" + ts +
                '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/StatusVO.java
@@ -1,12 +1,15 @@
package com.vci.ubcs.omd.vo;
import lombok.Data;
import java.util.Date;
/**
 * çŠ¶æ€
 * @author weidy
 * @date 2019/10/11 4:40 PM
 * çŠ¶æ€æ± 
 * @author lihang
 * @date 2023/05/23
 */
@Data
public class StatusVO implements java.io.Serializable {
@@ -38,7 +41,7 @@
    /**
     * ä¸šåŠ¡ç±»åž‹åç§°
     */
    private String btmname;
    private String btmName;
    /**
     * æ‹¥æœ‰è€…
@@ -69,110 +72,4 @@
     * æ—¶é—´æˆ³ï¼Œæ ¼å¼æ˜¯yyyy-MM-dd HH:mm:ss.SSS
     */
    private Date ts;
    public String getOid() {
        return oid;
    }
    public void setOid(String oid) {
        this.oid = oid;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }
    public String getCreator() {
        return creator;
    }
    public void setCreator(String creator) {
        this.creator = creator;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public String getLastModifier() {
        return lastModifier;
    }
    public void setLastModifier(String lastModifier) {
        this.lastModifier = lastModifier;
    }
    public Date getLastModifyTime() {
        return lastModifyTime;
    }
    public void setLastModifyTime(Date lastModifyTime) {
        this.lastModifyTime = lastModifyTime;
    }
    public Date getTs() {
        return ts;
    }
    public void setTs(Date ts) {
        this.ts = ts;
    }
    public String getBtmname() {
        return btmname;
    }
    public void setBtmname(String btmname) {
        this.btmname = btmname;
    }
    public String getOwner() {
        return owner;
    }
    public void setOwner(String owner) {
        this.owner = owner;
    }
    @Override
    public String toString() {
        return "OsStatusVO{" +
                "oid='" + oid + '\'' +
                ", id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", description='" + description + '\'' +
                ", btmname='" + btmname + '\'' +
                ", owner='" + owner + '\'' +
                ", creator='" + creator + '\'' +
                ", createTime=" + createTime +
                ", lastModifier='" + lastModifier + '\'' +
                ", lastModifyTime=" + lastModifyTime +
                ", ts=" + ts +
                '}';
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/RevisionRuleController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
package com.vci.ubcs.omd.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.vci.ubcs.omd.dto.RevisionRuleDTO;
import com.vci.ubcs.omd.entity.RevisionRule;
import com.vci.ubcs.omd.service.IRevisionRuleService;
import com.vci.ubcs.omd.vo.RevisionRuleVO;
import com.vci.ubcs.omd.wrapper.RevisionRuleWrapper;
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
 * Description: ç‰ˆæœ¬è§„则控制器
 *
 * @author LiHang
 * @date 2023/5/17
 */
@RestController
@AllArgsConstructor
@RequestMapping("/revision-rule")
@Api(value = "版本规则控制器", tags = "版本规则接口")
public class RevisionRuleController {
    private final IRevisionRuleService revisionRuleService;
    /**
     * æŸ¥çœ‹è¯¦æƒ…
     */
    @GetMapping("/detail")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "查看详情", notes = "版本规则")
    public R<RevisionRuleVO> detail(RevisionRuleDTO ruleDTO){
        RevisionRule rule = revisionRuleService.getOne(Condition.getQueryWrapper(BeanUtil.copy(ruleDTO, RevisionRule.class)));
        return R.data(RevisionRuleWrapper.build().entityVO(rule));
    }
    /**
     * åˆ†é¡µæŸ¥è¯¢
     */
    @GetMapping("page")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "分页查询版本规则",notes = "分页查询版本规则")
    public R<IPage<RevisionRuleVO>> page(BaseQueryObject baseQueryObject){
        return R.data(revisionRuleService.pageQueryVO(baseQueryObject));
    }
    /**
     * æ–°å¢žæˆ–修改
     */
    @PostMapping("/submit")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "新增或修改",notes = "传入版本规则页面对象")
    public R<RevisionRuleVO> submit(@RequestBody RevisionRuleDTO ruleDTO){
        return R.data(revisionRuleService.addSave(ruleDTO));
    }
    /**
     * æ–°å¢žæˆ–修改
     */
    @PostMapping("/batch-submit")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "新增或修改",notes = "传入版本规则页面对象")
    public R<List<RevisionRuleVO>> batchSubmit(@RequestBody List<RevisionRuleDTO> ruleDTOList){
        return R.data(revisionRuleService.batchAddSave(ruleDTOList));
    }
    /**
     * åˆ é™¤
     */
    @PostMapping("/remove")
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "逻辑删除", notes = "传入主键")
    public R remove(@RequestBody RevisionRuleVO revisionRuleVO){
        revisionRuleService.delete(revisionRuleVO);
        return R.status(true);
    }
    /**
     * æ‰¹é‡åˆ é™¤
     */
    @PostMapping("/batch-remove")
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "批量删除",notes = "传入主键")
    public R batchRemove(@RequestBody List<RevisionRuleVO> revisionRuleVOList){
        revisionRuleService.batchDelete(revisionRuleVOList);
        return R.status(true);
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/StatusController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,102 @@
package com.vci.ubcs.omd.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.vci.ubcs.omd.entity.Status;
import com.vci.ubcs.omd.service.IStatusService;
import com.vci.ubcs.omd.vo.StatusVO;
import com.vci.ubcs.omd.wrapper.StatusWrapper;
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * Description: çŠ¶æ€æ± æŽ§åˆ¶å™¨
 *
 * @author LiHang
 * @date 2023/5/23
 */
@RestController
@AllArgsConstructor
@RequestMapping("/status")
@Api(value = "状态池控制器", tags = "状态池接口")
public class StatusController {
    private final IStatusService statusService;
    /**
     * æŸ¥çœ‹è¯¦æƒ…
     */
    @GetMapping("/detail")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "查看详情", notes = "状态池")
    public R<StatusVO> detail(StatusVO statusVO){
        Status status = statusService.getOne(Condition.getQueryWrapper(BeanUtil.copy(statusVO, Status.class)));
        return R.data(StatusWrapper.build().entityVO(status));
    }
    /**
     * åˆ†é¡µæŸ¥è¯¢
     */
    @GetMapping("page")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "分页查询状态池",notes = "分页查询状态池")
    public R<IPage<StatusVO>> page(BaseQueryObject baseQueryObject){
        Map<String, String> conditionMap = baseQueryObject.getConditionMap();
        if (conditionMap == null){
            conditionMap = new HashMap<>();
        }
        return R.data(statusService.listStatus(conditionMap,baseQueryObject.getPageHelper()));
    }
    /**
     * æ–°å¢žæˆ–修改
     */
    @PostMapping("/submit")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "新增或修改",notes = "传入状态池页面对象")
    public R<StatusVO> submit(@RequestBody StatusVO statusVO){
        return R.data(statusService.addSave(statusVO));
    }
    /**
     * æ–°å¢žæˆ–修改
     */
    @PostMapping("/batch-submit")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "新增或修改",notes = "传入状态池页面对象")
    public R<List<StatusVO>> batchSubmit(@RequestBody List<StatusVO> statusVOList){
        return R.data(statusService.batchAddSave(statusVOList));
    }
    /**
     * åˆ é™¤
     */
    @PostMapping("/remove")
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "逻辑删除", notes = "传入主键")
    public R remove(@RequestBody StatusVO StatusVO){
        statusService.delete(StatusVO);
        return R.status(true);
    }
    /**
     * æ‰¹é‡åˆ é™¤
     */
    @PostMapping("/batch-remove")
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "批量删除",notes = "传入主键")
    public R batchRemove(@RequestBody List<StatusVO> StatusVOList){
        statusService.batchDelete(StatusVOList);
        return R.status(true);
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/RevisionRuleClient.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
package com.vci.ubcs.omd.feign;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.vci.ubcs.omd.entity.RevisionRule;
import com.vci.ubcs.omd.service.IRevisionRuleService;
import com.vci.ubcs.omd.vo.RevisionRuleVO;
import com.vci.ubcs.omd.wrapper.RevisionRuleWrapper;
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
import com.vci.ubcs.starter.web.pagemodel.PageHelper;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springframework.cglib.beans.BeanMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
import java.util.*;
/**
 * Description:
 *
 * @author LiHang
 * @date 2023/5/22
 */
@NonDS
@ApiIgnore()
@RestController
@AllArgsConstructor
public class RevisionRuleClient implements IRevisionRuleClient{
    private final IRevisionRuleService service;
    /**
     * èŽ·å–ç‰ˆæœ¬è§„åˆ™è¯¦æƒ…ä¿¡æ¯
     *
     * @param oid ä¸»é”®
     * @return ç‰ˆæœ¬è§„则详情信息
     */
    @GetMapping(GET_DETAIL)
    @Override
    public R<RevisionRuleVO> getDetail(String oid) {
        return R.data(RevisionRuleWrapper.build().entityVO(service.getOne(Wrappers.<RevisionRule>query().lambda().eq(RevisionRule::getOid,oid))));
    }
    /**
     * å‚照列表查询
     *
     * @param baseQueryObject æŸ¥è¯¢æ¡ä»¶
     * @return æŸ¥è¯¢ç»“æžœ
     */
    @GetMapping(GET_REF_PAGE)
    @Override
    public R<IPage<RevisionRuleVO>> getRefPage(BaseQueryObject baseQueryObject) {
        return R.data(service.pageQueryVO(baseQueryObject));
    }
    /**
     * å‚照列表查询
     *
     * @param baseQueryObject æŸ¥è¯¢æ¡ä»¶
     * @return æŸ¥è¯¢ç»“æžœ
     */
    @Override
    @GetMapping(GET_REF)
    public R<List<RevisionRuleVO>> getRef(BaseQueryObject baseQueryObject) {
        RevisionRule query = new RevisionRule();
        BeanMap.create(query).putAll(Optional.ofNullable(baseQueryObject.getConditionMap()).orElseGet(HashMap::new));
        return R.data(RevisionRuleWrapper.build().listEntityVO(service.list(Condition.getQueryWrapper(query))));
    }
    /**
     * æ ¹æ®è‹±æ–‡åç§°æ‰¹é‡æŸ¥è¯¢å¯¹è±¡
     *
     * @param ids å¯¹è±¡è‹±æ–‡åç§° ä½†æ˜¯ä¸èƒ½è¶…过1000
     * @return ä¸šåŠ¡å¯¹è±¡
     */
    @Override
    @GetMapping(GET_BY_IDS)
    public R<List<RevisionRuleVO>> selectByIdCollection(List<String> ids) {
        return R.data(service.listRevisionRuleByIdCollection(ids));
    }
    /**
     * æ‰¹é‡æ ¹æ®ä¸»é”®èŽ·å–ç‰ˆæœ¬è§„åˆ™
     *
     * @param oidCollection ç‰ˆæœ¬è§„则主键集合
     * @return ç‰ˆæœ¬è§„则列表,如果有不存在的不会返回,全部不存在的则返回空列表
     */
    @Override
    @GetMapping(GET_BY_OIDS)
    public R<List<RevisionRuleVO>> listBtmTypeByOidCollection(Collection<String> oidCollection) {
        return R.data(service.listRevisionRuleByOidCollection(oidCollection));
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/StatusClient.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,79 @@
package com.vci.ubcs.omd.feign;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.vci.ubcs.omd.entity.Status;
import com.vci.ubcs.omd.service.IStatusService;
import com.vci.ubcs.omd.vo.StatusVO;
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import lombok.AllArgsConstructor;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringUtil;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * Description: çŠ¶æ€æ± çš„Feign
 *
 * @author LiHang
 * @date 2023/5/23
 */
@NonDS
@ApiIgnore
@RestController
@AllArgsConstructor
public class StatusClient implements IStatusClient{
    private final IStatusService service;
    /**
     * å‚照列表查询
     *
     * @param baseQueryObject æŸ¥è¯¢æ¡ä»¶å¯¹è±¡
     * @return æ‰§è¡Œç»“æžœ
     */
    @Override
    public R<IPage<StatusVO>> getRefPage(BaseQueryObject baseQueryObject) {
        Map<String, String> conditionMap = baseQueryObject.getConditionMap();
        if (conditionMap == null) {
            conditionMap = new HashMap<>(16);
        }
        return R.data(service.listStatus(conditionMap,baseQueryObject.getPageHelper()));
    }
    /**
     * å‚照查询
     *
     * @param baseQueryObject æŸ¥è¯¢æ¡ä»¶å¯¹è±¡
     * @return æ‰§è¡Œç»“æžœ
     */
    @Override
    public R<List<StatusVO>> getRef(BaseQueryObject baseQueryObject) {
        return R.data(service.listStatusNoPage(baseQueryObject.getConditionMap()));
    }
    /**
     * è‹±æ–‡æŸ¥è¯¢ä¸­æ–‡åç§°
     *
     * @param ids è‹±æ–‡
     * @return æŸ¥è¯¢ç»“æžœ
     */
    @Override
    public R<Map<String,String>> getNameByIds(String ids) {
        VciBaseUtil.alertNotNull(ids,"英文名称");
        List<String> idList = Func.toStrList(",", ids);
        List<Status> list = service.list(Wrappers.<Status>query().lambda().in(Status::getId, idList));
        Map<String,String> map = new HashMap<>(16);
        list.stream().peek(s -> {
            String key = idList.stream().filter(id -> StringUtil.equals(id, s.getId())).findFirst().get();
            map.put(key,s.getName());
        });
        return R.data(map);
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/BtmTypeAttributeMapper.java
@@ -1,5 +1,6 @@
package com.vci.ubcs.omd.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.vci.ubcs.omd.entity.BtmTypeAttribute;
import org.apache.ibatis.annotations.Param;
import org.springblade.core.mp.mapper.BladeMapper;
@@ -13,7 +14,7 @@
 * @author LiHang
 * @date 2023/4/23
 */
public interface BtmTypeAttributeMapper extends BladeMapper<BtmTypeAttribute> {
public interface BtmTypeAttributeMapper extends BaseMapper<BtmTypeAttribute> {
    int batchDelete(@Param("records") List<String> records);
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/BtmTypeMapper.java
@@ -1,6 +1,7 @@
package com.vci.ubcs.omd.mapper;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.vci.ubcs.omd.entity.BtmTypeAttribute;
import com.vci.ubcs.omd.entity.BtmType;
import org.apache.ibatis.annotations.Param;
@@ -10,7 +11,7 @@
import java.util.Collection;
import java.util.List;
public interface BtmTypeMapper extends BladeMapper<BtmType> {
public interface BtmTypeMapper extends BaseMapper<BtmType> {
    /**
     * æ ¹æ®ä¸»é”®åˆ é™¤å¯¹è±¡
     * @param oid ç”Ÿå‘½å‘¨æœŸä¸»é”®
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/RevisionRuleMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package com.vci.ubcs.omd.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.vci.ubcs.omd.entity.RevisionRule;
/**
 * Description: ç‰ˆæœ¬è§„则数据层
 *
 * @author LiHang
 * @date 2023/5/17
 */
public interface RevisionRuleMapper extends BaseMapper<RevisionRule> {
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/StatusMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.vci.ubcs.omd.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.vci.ubcs.omd.entity.Status;
/**
 * Description: çŠ¶æ€æ± æ•°æ®å±‚
 *
 * @author LiHang
 * @date 2023/5/23
 */
public interface StatusMapper extends BaseMapper<Status> {
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IRevisionRuleService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,191 @@
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.dto.RevisionRuleDTO;
import com.vci.ubcs.omd.entity.RevisionRule;
import com.vci.ubcs.omd.vo.BtmTypeVO;
import com.vci.ubcs.omd.vo.RevisionRuleVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
import org.springblade.core.mp.support.Query;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
 * Description: ç‰ˆæœ¬è§„则服务定义
 *
 * @author LiHang
 * @date 2023/5/17
 */
public interface IRevisionRuleService extends IService<RevisionRule> {
    /**
     * èŽ·å–ç‰ˆæœ¬è§„åˆ™åˆ—è¡¨
     * @param condition æŸ¥è¯¢æ¡ä»¶
     * @param query åˆ†é¡µä¿¡æ¯å’ŒæŽ’序信息,默认使用id排序
     * @return ç‰ˆæœ¬è§„则对象列表
     * @throws VciBaseException æŸ¥è¯¢å‡ºé”™æ—¶ä¼šæŠ›å‡ºå¼‚常
     */
    IPage<RevisionRuleVO> listRevisionRule(Map<String, String> condition, Query query) throws VciBaseException;
    /**
     * æ ¹æ®ä¸»é”®èŽ·å–ç‰ˆæœ¬è§„åˆ™
     * @param pkRevisionRule ç‰ˆæœ¬è§„则主键
     * @return ç‰ˆæœ¬è§„则,如果不存在会返回null
     * @throws VciBaseException å‚数为空或者查询出错时会抛出错误
     */
    RevisionRuleVO getRevisionRuleByOid(String pkRevisionRule) throws VciBaseException;
    /**
     * æ ¹æ®ä¸»é”®æ‰¹é‡èŽ·å–ç‰ˆæœ¬è§„åˆ™
     * @param pkRevisionRules ç‰ˆæœ¬è§„则主键,用逗号分隔
     * @return ç‰ˆæœ¬è§„则列表,如果有不存在的不会返回,全部不存在的则返回空列表
     * @throws VciBaseException å‚数为空或者查询出错时会抛出错误
     */
    List<RevisionRuleVO> listRevisionRuleByOids(String pkRevisionRules) throws VciBaseException;
    /**
     * æ‰¹é‡æ ¹æ®ä¸»é”®èŽ·å–ç‰ˆæœ¬è§„åˆ™
     * @param pkRevisionRuleCollection ç‰ˆæœ¬è§„则主键集合
     * @return ç‰ˆæœ¬è§„则列表,如果有不存在的不会返回,全部不存在的则返回空列表
     * @throws VciBaseException å‚数为空或者查询出错时会抛出错误
     */
    List<RevisionRuleVO> listRevisionRuleByOidCollection(Collection<String> pkRevisionRuleCollection) throws VciBaseException;
    /**
     * æ ¹æ®è‹±æ–‡åç§°èŽ·å–ç‰ˆæœ¬è§„åˆ™
     * @param id è‹±æ–‡åç§°
     * @return ç‰ˆæœ¬è§„则,如果不存在会返回null
     * @throws VciBaseException
     */
    RevisionRuleVO getRevisionRuleById(String id) throws VciBaseException;
    /**
     * æ ¹æ®è‹±æ–‡åç§°æ‰¹é‡èŽ·å–ç‰ˆæœ¬è§„åˆ™
     * @param ids è‹±æ–‡åç§°ï¼Œä½¿ç”¨é€—号分隔
     * @return  ç‰ˆæœ¬è§„则列表,如果有不存在的不会返回,全部不存在的则返回空列表
     * @throws VciBaseException å‚数为空或者查询出错时会抛出错误
     */
    List<RevisionRuleVO> listRevisionRuleByIds(String ids) throws VciBaseException;
    /**
     * æ ¹æ®è‹±æ–‡åç§°é›†åˆæ‰¹é‡èŽ·å–ç‰ˆæœ¬è§„åˆ™
     * @param revisionRuleIdCollection è‹±æ–‡åç§°é›†åˆï¼Œä½¿ç”¨é€—号分隔
     * @return ç‰ˆæœ¬è§„则列表,如果有不存在的不会返回,全部不存在的则返回空列表
     * @throws VciBaseException å‚数为空或者查询出错时会抛出错误
     */
    List<RevisionRuleVO> listRevisionRuleByIdCollection(Collection<String> revisionRuleIdCollection) throws VciBaseException;
    /**
     * æ ¹æ®ç‰ˆæœ¬è§„则主键获取中文名称
     * @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 revisionRuleDTO ç‰ˆæœ¬è§„则显示对象(和DTO共用)
     * @return æ·»åŠ åŽçš„ç‰ˆæœ¬è§„åˆ™
     * @throws VciBaseException æ·»åŠ å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚å¸¸
     */
    RevisionRuleVO addSave(RevisionRuleDTO revisionRuleDTO) throws VciBaseException;
    /**
     * æ‰¹é‡æ·»åŠ ç‰ˆæœ¬è§„åˆ™
     * @param revisionRuleDTOList ç‰ˆæœ¬è§„则显示对象列表(和DTO共用)
     * @return æ‰¹é‡æ·»åŠ åŽçš„ç‰ˆæœ¬è§„åˆ™
     * @throws VciBaseException æ·»åŠ å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚å¸¸
     */
    List<RevisionRuleVO> batchAddSave(List<RevisionRuleDTO> revisionRuleDTOList) throws VciBaseException;
    /**
     * ä¿®æ”¹ç‰ˆæœ¬è§„则
     * @param revisionRuleDTO ç‰ˆæœ¬è§„则显示对象(和DTO共用)
     * @return ä¿®æ”¹åŽçš„版本规则
     * @throws VciBaseException ä¿®æ”¹å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    RevisionRuleVO editSave(RevisionRuleDTO revisionRuleDTO) throws VciBaseException;
    /**
     * æ‰¹é‡ä¿®æ”¹ç‰ˆæœ¬è§„则
     * @param revisionRuleDTOList ç‰ˆæœ¬è§„则显示对象列表(和DTO共用)
     * @return æ‰¹é‡ä¿®æ”¹åŽçš„版本规则
     * @throws VciBaseException ä¿®æ”¹å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    List<RevisionRuleVO> batchEditSave(List<RevisionRuleDTO> revisionRuleDTOList) throws VciBaseException;
    /**
     * åˆ é™¤ç‰ˆæœ¬è§„则
     * @param revisionRuleVO ç‰ˆæœ¬è§„则显示对象
     * @throws VciBaseException å¦‚果版本规则被引用,或者删除出错时会抛出异常
     */
    void delete(RevisionRuleVO revisionRuleVO) throws VciBaseException;
    /**
     * æ‰¹é‡åˆ é™¤ç‰ˆæœ¬è§„则
     * @param revisionRuleVOList è¦åˆ é™¤çš„版本规则显示对象列表
     * @throws VciBaseException å¦‚果版本规则被引用,或者删除出错时会抛出异常
     */
    void batchDelete(List<RevisionRuleVO> revisionRuleVOList) throws VciBaseException;
    /**
     * æ‰¹é‡æ ¡éªŒç‰ˆæœ¬è§„则是否被使用
     * @param oidCollection ä¸»é”®é›†åˆ
     * @return true表示被引用
     */
    boolean batchCheckRevisionRuleUsed(Collection<String> oidCollection);
    /**
     * èŽ·å–ä½¿ç”¨ç‰ˆæœ¬è§„åˆ™çš„ä¸šåŠ¡ç±»åž‹
     * @param pkRevisionRule ç‰ˆæœ¬è§„则的主键
     * @return å¼•用的业务类型
     * @throws VciBaseException æŸ¥è¯¢å‡ºé”™æ—¶ä¼šæŠ›å‡ºå¼‚常
     */
    List<BtmTypeVO> listRevisionRuleUsedInfo(String pkRevisionRule) throws VciBaseException;
    /**
     * æ ¡éªŒç‰ˆæœ¬è§„则是否被引用
     * @param pkRevisionRule ç‰ˆæœ¬è§„则的主键
     * @return true表示被引用, false表示没有被引用
     * @throws VciBaseException å‚数为空或者查询出错时会抛出错误
     */
    boolean checkRevisionRuleUsed(String pkRevisionRule) throws VciBaseException;
    /**
     * åˆ¤æ–­ç‰ˆæœ¬è§„则是否存在
     * @param revisionRuleId ç‰ˆæœ¬è§„则的英文名称
     * @return true表示都存在,false表示不存在
     * @throws VciBaseException å‚数错误或者查询出错会抛出异常
     */
    boolean checkRevisionRuleExist(String revisionRuleId) throws VciBaseException;
    /**
     * èŽ·å–ä¸‹ä¸€ä¸ªç‰ˆæœ¬çš„å€¼
     * @param ruleId ç‰ˆæœ¬çš„规则
     * @param currentRevisionValue å½“前版本的值,为空的时候,说明是新增
     * @return ä¸‹ä¸€ä¸ªç‰ˆæœ¬å·
     * @throws VciBaseException ç‰ˆæœ¬è§„则不存在的时候会抛出异常
     */
    String getNextRevisionValue(String ruleId, String currentRevisionValue) throws VciBaseException;
    /**
     * åˆ†é¡µæŸ¥è¯¢
     * @param baseQueryObject æŸ¥è¯¢å¯¹è±¡
     * @return æŸ¥è¯¢ç»“æžœ
     * @throws VciBaseException æŸ¥è¯¢å‡ºé”™æ—¶æŠ›å‡ºå¼‚常
     */
    IPage<RevisionRuleVO> pageQueryVO(BaseQueryObject baseQueryObject) throws VciBaseException;
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IStatusService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,164 @@
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.Status;
import com.vci.ubcs.omd.vo.StatusVO;
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;
/**
 * Description: çŠ¶æ€æ± çš„æœåŠ¡
 *
 * @author LiHang
 * @date 2023/5/23
 */
public interface IStatusService extends IService<Status> {
    /**
     * èŽ·å–çŠ¶æ€åˆ—è¡¨
     * @param conditionMap æŸ¥è¯¢æ¡ä»¶
     * @param pageHelper åˆ†é¡µä¿¡æ¯å’ŒæŽ’序信息,默认使用id排序
     * @return çŠ¶æ€å¯¹è±¡åˆ—è¡¨
     * @throws VciBaseException æŸ¥è¯¢å‡ºé”™æ—¶ä¼šæŠ›å‡ºå¼‚常
     */
    IPage<StatusVO> listStatus(Map<String,String> conditionMap, PageHelper pageHelper) throws VciBaseException;
    /**
     * èŽ·å–çŠ¶æ€åˆ—è¡¨
     * @param conditionMap æŸ¥è¯¢æ¡ä»¶
     * @return çŠ¶æ€å¯¹è±¡åˆ—è¡¨
     * @throws VciBaseException æŸ¥è¯¢å‡ºé”™æ—¶ä¼šæŠ›å‡ºå¼‚常
     */
    List<StatusVO> listStatusNoPage(Map<String,String> conditionMap) throws VciBaseException;
    /**
     * æ ¹æ®ä¸»é”®èŽ·å–çŠ¶æ€
     * @param pkStatus çŠ¶æ€ä¸»é”®
     * @return çŠ¶æ€ï¼Œå¦‚æžœä¸å­˜åœ¨ä¼šè¿”å›žnull
     * @throws VciBaseException å‚数为空或者查询出错时会抛出错误
     */
    StatusVO getStatusByOid(String pkStatus) throws VciBaseException;
    /**
     * æ ¹æ®ä¸»é”®æ‰¹é‡èŽ·å–çŠ¶æ€
     * @param primaryKeys çŠ¶æ€ä¸»é”®ï¼Œç”¨é€—å·åˆ†éš”
     * @return çŠ¶æ€åˆ—è¡¨ï¼Œå¦‚æžœæœ‰ä¸å­˜åœ¨çš„ä¸ä¼šè¿”å›žï¼Œå…¨éƒ¨ä¸å­˜åœ¨çš„åˆ™è¿”å›žç©ºåˆ—è¡¨
     * @throws VciBaseException å‚数为空或者查询出错时会抛出错误
     */
    List<StatusVO> listStatusByOids(String primaryKeys) throws VciBaseException;
    /**
     * æ‰¹é‡æ ¹æ®ä¸»é”®èŽ·å–çŠ¶æ€
     * @param pkStatusCollection çŠ¶æ€ä¸»é”®é›†åˆ
     * @return çŠ¶æ€åˆ—è¡¨ï¼Œå¦‚æžœæœ‰ä¸å­˜åœ¨çš„ä¸ä¼šè¿”å›žï¼Œå…¨éƒ¨ä¸å­˜åœ¨çš„åˆ™è¿”å›žç©ºåˆ—è¡¨
     * @throws VciBaseException å‚数为空或者查询出错时会抛出错误
     */
    List<StatusVO> listStatusByOidCollection(Collection<String> pkStatusCollection) throws VciBaseException;
    /**
     * æ ¹æ®è‹±æ–‡åç§°èŽ·å–çŠ¶æ€
     * @param id è‹±æ–‡åç§°
     * @return çŠ¶æ€ï¼Œå¦‚æžœä¸å­˜åœ¨ä¼šè¿”å›žnull
     * @throws VciBaseException æŸ¥è¯¢å‡ºé”™æŠ›å‡ºå¼‚常
     */
    StatusVO getStatusById(String id) throws VciBaseException;
    /**
     * æ ¹æ®è‹±æ–‡åç§°æ‰¹é‡èŽ·å–çŠ¶æ€
     * @param ids è‹±æ–‡åç§°ï¼Œä½¿ç”¨é€—号分隔
     * @return  çŠ¶æ€åˆ—è¡¨ï¼Œå¦‚æžœæœ‰ä¸å­˜åœ¨çš„ä¸ä¼šè¿”å›žï¼Œå…¨éƒ¨ä¸å­˜åœ¨çš„åˆ™è¿”å›žç©ºåˆ—è¡¨
     * @throws VciBaseException å‚数为空或者查询出错时会抛出错误
     */
    List<StatusVO> listStatusByIds(String ids) throws VciBaseException;
    /**
     * æ ¹æ®è‹±æ–‡åç§°é›†åˆæ‰¹é‡èŽ·å–çŠ¶æ€
     * @param idCollection è‹±æ–‡åç§°é›†åˆ
     * @return çŠ¶æ€åˆ—è¡¨ï¼Œå¦‚æžœæœ‰ä¸å­˜åœ¨çš„ä¸ä¼šè¿”å›žï¼Œå…¨éƒ¨ä¸å­˜åœ¨çš„åˆ™è¿”å›žç©ºåˆ—è¡¨
     * @throws VciBaseException å‚数为空或者查询出错时会抛出错误
     */
    List<StatusVO> listStatusByIdCollection(Collection<String> idCollection) throws VciBaseException;
    /**
     * æ ¹æ®çŠ¶æ€ä¸»é”®èŽ·å–ä¸­æ–‡åç§°
     * @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 statusVO çŠ¶æ€æ˜¾ç¤ºå¯¹è±¡ï¼ˆå’ŒDTO共用)
     * @return æ·»åŠ åŽçš„çŠ¶æ€
     * @throws VciBaseException æ·»åŠ å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚å¸¸
     */
    StatusVO addSave(StatusVO statusVO) throws VciBaseException;
    /**
     * æ‰¹é‡æ·»åŠ çŠ¶æ€
     * @param statusVOList çŠ¶æ€æ˜¾ç¤ºå¯¹è±¡åˆ—è¡¨(和DTO共用)
     * @return æ‰¹é‡æ·»åŠ åŽçš„çŠ¶æ€
     * @throws VciBaseException æ·»åŠ å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚å¸¸
     */
    List<StatusVO> batchAddSave(List<StatusVO> statusVOList) throws VciBaseException;
    /**
     * ä¿®æ”¹çŠ¶æ€
     * @param statusVO çŠ¶æ€æ˜¾ç¤ºå¯¹è±¡ï¼ˆå’ŒDTO共用)
     * @return ä¿®æ”¹åŽçš„状态
     * @throws VciBaseException ä¿®æ”¹å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    StatusVO editSave(StatusVO statusVO) throws VciBaseException;
    /**
     * æ‰¹é‡ä¿®æ”¹çŠ¶æ€
     * @param statusVOList çŠ¶æ€æ˜¾ç¤ºå¯¹è±¡åˆ—è¡¨ï¼ˆå’ŒDTO共用)
     * @return æ‰¹é‡ä¿®æ”¹åŽçš„状态
     * @throws VciBaseException ä¿®æ”¹å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    List<StatusVO> batchEditSave(List<StatusVO> statusVOList) throws VciBaseException;
    /**
     * åˆ é™¤çŠ¶æ€
     * @param statusVO çŠ¶æ€æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException å¦‚果状态被引用,或者删除出错时会抛出异常
     */
    void delete(StatusVO statusVO) throws VciBaseException;
    /**
     * æ‰¹é‡åˆ é™¤çŠ¶æ€
     * @param statusVOList è¦åˆ é™¤çš„状态显示对象列表
     * @throws VciBaseException å¦‚果状态被引用,或者删除出错时会抛出异常
     */
    void batchDelete(List<StatusVO> statusVOList) throws VciBaseException;
    /**
     * æ‰¹é‡æ ¡éªŒçŠ¶æ€æ˜¯å¦è¢«ä½¿ç”¨
     * @param oidCollection ä¸»é”®é›†åˆ
     * @return true表示被引用
     */
    boolean checkStatusUseds(Collection<String> oidCollection);
    /**
     * æ ¡éªŒçŠ¶æ€æ˜¯å¦è¢«å¼•ç”¨
     * @param pkStatus çŠ¶æ€çš„ä¸»é”®
     * @return true表示被引用, false表示没有被引用
     * @throws VciBaseException å‚数为空或者查询出错时会抛出错误
     */
    boolean checkStatusUsed(String pkStatus) throws VciBaseException;
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java
@@ -11,9 +11,7 @@
import com.vci.ubcs.omd.dto.BtmAndLinkTypeDdlDTO;
import com.vci.ubcs.omd.entity.Attribute;
import com.vci.ubcs.omd.repeater.DomainRepeater;
import com.vci.ubcs.omd.service.IAttributeService;
import com.vci.ubcs.omd.service.IBtmTypeAttributeService;
import com.vci.ubcs.omd.service.IModifyAttributeService;
import com.vci.ubcs.omd.service.*;
import com.vci.ubcs.omd.vo.*;
import com.vci.ubcs.omd.wrapper.BtmTypeWrapper;
import com.vci.ubcs.omd.wrapper.ModifyAttributeWrapper;
@@ -24,7 +22,6 @@
import com.vci.ubcs.omd.entity.BtmTypeAttribute;
import com.vci.ubcs.omd.entity.ModifyAttributeInfo;
import com.vci.ubcs.omd.mapper.BtmTypeMapper;
import com.vci.ubcs.omd.service.IBtmTypeService;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.enumpck.BooleanEnum;
import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum;
@@ -75,6 +72,12 @@
     */
    @Autowired
    private IModifyAttributeService modifyAttributeService;
    /**
     * ç‰ˆæœ¬è§„则的服务
     */
    @Autowired
    private IRevisionRuleService revisionRuleService;
    /**
     * å±žæ€§çš„æœåŠ¡
@@ -589,12 +592,12 @@
        if (btmTypeDTO.isRevisionFlag()){
            // éœ€è¦æŽ§åˆ¶ç‰ˆæœ¬
            // æ£€æŸ¥ä½¿ç”¨çš„版本规则是否存在
//                if (StringUtils.isNotBlank(btmTypeDTO.getRevisionRuleId())) {
//                    if (revisionRuleServiceI.checkRevisionRuleExist(btmTypeDTO.getRevisionRuleId())) {
//                        throw new VciBaseException("版本规则{0}[{1}]在系统中不存在,请先查证",
//                            new Object[]{btmTypeDTO.getRevisionRuleId(), btmTypeDTO.getRevisionRuleName()});
//                    }
//                }
                if (StringUtils.isNotBlank(btmTypeDTO.getRevisionRuleId())) {
                    if (revisionRuleService.checkRevisionRuleExist(btmTypeDTO.getRevisionRuleId())) {
                        throw new VciBaseException("版本规则{0}[{1}]在系统中不存在,请先查证",
                            new Object[]{btmTypeDTO.getRevisionRuleId(), btmTypeDTO.getRevisionRuleName()});
                    }
                }
            btmTypeDTO.setAttributes(addAttributeByFieldMap(btmTypeDTO.getAttributes(),BtmTypeFieldConstant.REVISION_MANAGE_FIELD_MAP));
        }
        if (btmTypeDTO.isLifeCycleFlag()){
@@ -798,7 +801,7 @@
            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());
            if (CollectionUtils.isEmpty(addList)) {
            if (!CollectionUtils.isEmpty(addList)) {
                attributeService.saveBatch(addList);
            }
        }
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/RevisionRuleServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,563 @@
package com.vci.ubcs.omd.service.impl;
import com.alibaba.cloud.commons.lang.StringUtils;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
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.dto.RevisionRuleDTO;
import com.vci.ubcs.omd.entity.BtmType;
import com.vci.ubcs.omd.entity.RevisionRule;
import com.vci.ubcs.omd.mapper.BtmTypeMapper;
import com.vci.ubcs.omd.mapper.RevisionRuleMapper;
import com.vci.ubcs.omd.service.IRevisionRuleService;
import com.vci.ubcs.omd.vo.BtmTypeVO;
import com.vci.ubcs.omd.vo.RevisionRuleVO;
import com.vci.ubcs.omd.wrapper.BtmTypeWrapper;
import com.vci.ubcs.omd.wrapper.RevisionRuleWrapper;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.util.Map2MPJLambdaUtil;
import com.vci.ubcs.starter.util.MybatisParameterUtil;
import com.vci.ubcs.starter.web.constant.RegExpConstant;
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
import com.vci.ubcs.starter.web.pagemodel.PageHelper;
import com.vci.ubcs.starter.web.util.BeanUtil;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
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.utils.Func;
import org.springblade.core.tool.utils.StringUtil;
import org.springframework.cglib.beans.BeanMap;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
 * Description: ç‰ˆæœ¬è§„则的服务
 *
 * @author LiHang
 * @date 2023/5/17
 */
@Service
public class RevisionRuleServiceImpl extends ServiceImpl<RevisionRuleMapper, RevisionRule> implements IRevisionRuleService {
    private final Pattern pattern = Pattern.compile("\\d+");
    @Resource
    private BtmTypeMapper btmTypeMapper;
    /**
     * èŽ·å–ç‰ˆæœ¬è§„åˆ™åˆ—è¡¨
     *
     * @param condition æŸ¥è¯¢æ¡ä»¶
     * @param query     åˆ†é¡µä¿¡æ¯å’ŒæŽ’序信息,默认使用id排序
     * @return ç‰ˆæœ¬è§„则对象列表
     * @throws VciBaseException æŸ¥è¯¢å‡ºé”™æ—¶ä¼šæŠ›å‡ºå¼‚常
     */
    @Override
    public IPage<RevisionRuleVO> listRevisionRule(Map<String, String> condition, Query query) throws VciBaseException {
        RevisionRule queryConditionObj = new RevisionRule();
        BeanMap beanMap = BeanMap.create(queryConditionObj);
        beanMap.putAll(condition);
        return RevisionRuleWrapper.build().pageVO(baseMapper.selectPage(Condition.getPage(query),Condition.getQueryWrapper(queryConditionObj).lambda().orderByAsc(RevisionRule::getId)));
    }
    /**
     * æ ¹æ®ä¸»é”®èŽ·å–ç‰ˆæœ¬è§„åˆ™
     *
     * @param pkRevisionRule ç‰ˆæœ¬è§„则主键
     * @return ç‰ˆæœ¬è§„则,如果不存在会返回null
     * @throws VciBaseException å‚数为空或者查询出错时会抛出错误
     */
    @Override
    public RevisionRuleVO getRevisionRuleByOid(String pkRevisionRule) throws VciBaseException {
        VciBaseUtil.alertNotNull(pkRevisionRule,"版本规则主键");
        return RevisionRuleWrapper.build().entityVO(getOne(Wrappers.<RevisionRule>query().lambda().eq(RevisionRule::getOid,pkRevisionRule)));
    }
    /**
     * æ ¹æ®ä¸»é”®æ‰¹é‡èŽ·å–ç‰ˆæœ¬è§„åˆ™
     *
     * @param pkRevisionRules ç‰ˆæœ¬è§„则主键,用逗号分隔
     * @return ç‰ˆæœ¬è§„则列表,如果有不存在的不会返回,全部不存在的则返回空列表
     * @throws VciBaseException å‚数为空或者查询出错时会抛出错误
     */
    @Override
    public List<RevisionRuleVO> listRevisionRuleByOids(String pkRevisionRules) throws VciBaseException {
        VciBaseUtil.alertNotNull(pkRevisionRules,"版本规则主键");
        List<String> oidList = Func.toStrList(",", pkRevisionRules);
        return RevisionRuleWrapper.build().listVO(list(MybatisParameterUtil.cutInParameter(Wrappers.<RevisionRule>query().lambda(),RevisionRule::getOid,oidList)));
    }
    /**
     * æ‰¹é‡æ ¹æ®ä¸»é”®èŽ·å–ç‰ˆæœ¬è§„åˆ™
     *
     * @param pkRevisionRuleCollection ç‰ˆæœ¬è§„则主键集合
     * @return ç‰ˆæœ¬è§„则列表,如果有不存在的不会返回,全部不存在的则返回空列表
     * @throws VciBaseException å‚数为空或者查询出错时会抛出错误
     */
    @Override
    public List<RevisionRuleVO> listRevisionRuleByOidCollection(Collection<String> pkRevisionRuleCollection) throws VciBaseException {
        VciBaseUtil.alertNotNull(pkRevisionRuleCollection,"版本规则主键集合");
        return RevisionRuleWrapper.build().listVO(list(MybatisParameterUtil.cutInParameter(Wrappers.<RevisionRule>query().lambda(),RevisionRule::getOid, Arrays.asList(pkRevisionRuleCollection.toArray()))));
    }
    /**
     * æ ¹æ®è‹±æ–‡åç§°èŽ·å–ç‰ˆæœ¬è§„åˆ™
     *
     * @param id è‹±æ–‡åç§°
     * @return ç‰ˆæœ¬è§„则,如果不存在会返回null
     * @throws VciBaseException å‚数为空或者查询出错时会抛出错误
     */
    @Override
    public RevisionRuleVO getRevisionRuleById(String id) throws VciBaseException {
        VciBaseUtil.alertNotNull(id,"英文名称");
        return RevisionRuleWrapper.build().entityVO(getOne(Wrappers.<RevisionRule>query().lambda().eq(RevisionRule::getId,id)));
    }
    /**
     * æ ¹æ®è‹±æ–‡åç§°æ‰¹é‡èŽ·å–ç‰ˆæœ¬è§„åˆ™
     *
     * @param ids è‹±æ–‡åç§°ï¼Œä½¿ç”¨é€—号分隔
     * @return ç‰ˆæœ¬è§„则列表,如果有不存在的不会返回,全部不存在的则返回空列表
     * @throws VciBaseException å‚数为空或者查询出错时会抛出错误
     */
    @Override
    public List<RevisionRuleVO> listRevisionRuleByIds(String ids) throws VciBaseException {
        VciBaseUtil.alertNotNull(ids,"英文名称");
        List<String> idList = Func.toStrList(",", ids);
        return RevisionRuleWrapper.build().listVO(baseMapper.selectList(Wrappers.<RevisionRule>query().lambda().in(RevisionRule::getId,idList)));
    }
    /**
     * æ ¹æ®è‹±æ–‡åç§°é›†åˆæ‰¹é‡èŽ·å–ç‰ˆæœ¬è§„åˆ™
     *
     * @param revisionRuleIdCollection è‹±æ–‡åç§°é›†åˆï¼Œä½¿ç”¨é€—号分隔
     * @return ç‰ˆæœ¬è§„则列表,如果有不存在的不会返回,全部不存在的则返回空列表
     * @throws VciBaseException å‚数为空或者查询出错时会抛出错误
     */
    @Override
    public List<RevisionRuleVO> listRevisionRuleByIdCollection(Collection<String> revisionRuleIdCollection) throws VciBaseException {
        VciBaseUtil.alertNotNull(revisionRuleIdCollection,"英文名称集合");
//        return RevisionRuleWrapper.build().listVO(list(MybatisParameterUtil.cutInParameter(Wrappers.<RevisionRule>query().lambda(),RevisionRule::getId, Collections.singletonList(revisionRuleIdCollection))));
        List<RevisionRule> list = baseMapper.selectList(Wrappers.<RevisionRule>query().lambda().in(RevisionRule::getId, revisionRuleIdCollection));
        return RevisionRuleWrapper.build().listVO(list);
    }
    /**
     * æ ¹æ®ç‰ˆæœ¬è§„则主键获取中文名称
     *
     * @param oid ç‰ˆæœ¬è§„则主键,多个使用逗号分隔
     * @return ä¸­æ–‡åç§°ï¼Œå¦‚果不存在会返回null;多个会以逗号分隔
     * @throws VciBaseException å‚数为空或者查询出错时会抛出错误
     */
    @Override
    public String getNameByOid(String oid) throws VciBaseException {
        VciBaseUtil.alertNotNull(oid,"版本规则主键");
        return getRevisionRuleByOid(oid).getName();
    }
    /**
     * æ ¹æ®ç‰ˆæœ¬è§„则英文名称获取中文名称
     *
     * @param id ç‰ˆæœ¬è§„则英文名称
     * @return ä¸­æ–‡åç§°ï¼Œå¦‚果不存在会返回null;多个会以逗号分隔
     * @throws VciBaseException å‚数为空或者查询出错时会抛出错误
     */
    @Override
    public String getNameById(String id) throws VciBaseException {
        VciBaseUtil.alertNotNull(id,"版本规则英文名称");
        return getRevisionRuleById(id).getName();
    }
    /**
     * æ·»åŠ ç‰ˆæœ¬è§„åˆ™
     *
     * @param revisionRuleVO ç‰ˆæœ¬è§„则显示对象(和DTO共用)
     * @return æ·»åŠ åŽçš„ç‰ˆæœ¬è§„åˆ™
     * @throws VciBaseException æ·»åŠ å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚å¸¸
     */
    @Override
    public RevisionRuleVO addSave(RevisionRuleDTO revisionRuleVO) throws VciBaseException {
        VciBaseUtil.alertNotNull(revisionRuleVO,"要添加的版本规则",revisionRuleVO.getId(),"版本规则英文名称",revisionRuleVO.getName(),"版本规则中文名称");
        List<RevisionRuleVO> voList = batchAddSave(Collections.singletonList(revisionRuleVO));
        if (!CollectionUtils.isEmpty(voList)){
            return voList.get(0);
        }
        return null;
    }
    /**
     * æ‰¹é‡æ·»åŠ ç‰ˆæœ¬è§„åˆ™
     *
     * @param revisionRuleDTOList ç‰ˆæœ¬è§„则显示对象列表
     * @return æ‰¹é‡æ·»åŠ åŽçš„ç‰ˆæœ¬è§„åˆ™
     * @throws VciBaseException æ·»åŠ å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚å¸¸
     */
    @Override
    public List<RevisionRuleVO> batchAddSave(List<RevisionRuleDTO> revisionRuleDTOList) throws VciBaseException {
        if(CollectionUtils.isEmpty(revisionRuleDTOList)){
            throw new VciBaseException("要添加的版本规则对象不能为空");
        }
        //1. åˆ¤æ–­å„个属性是否必输项都输入了
        //2. åˆ¤æ–­çš„英文名称是否重复
        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 -> {
            //判断为空
            VciBaseUtil.alertNotNull(s.getId(),"版本规则英文名称",s.getName(),"版本规则中文名称",s.getStartCode(),"起始字符",s.getSerialStep(),"步长");
            //判断本次是否存在
            if(idSet.contains(s.getId().toLowerCase().trim())){
                throw new VciBaseException("英文名称为{0}的状态已经存在",new Object[]{s.getId()});
            }else{
                idSet.add(s.getId().toLowerCase().trim());
            }
            RevisionRule ruleDO = org.springblade.core.tool.utils.BeanUtil.copy(s, RevisionRule.class);
            if(StringUtils.isBlank(ruleDO.getOid())){
                ruleDO.setOid(VciBaseUtil.getPk());
            }
            //判断属性是否符合要求
            ruleDO.setCreator(creator);
            ruleDO.setCreateTime(now);
            ruleDO.setOwner(creator);
            ruleDO.setBtmName(btmName);
            ruleDO.setTs(now);
            ruleDO.setLastModifier(creator);
            ruleDO.setLastModifyTime(now);
            ruleDO.setTs(now);
            revisionRuleList.add(ruleDO);
        });
        //判断是否存在
        List<RevisionRuleVO> checkExistList = listRevisionRuleByIdCollection(idSet);
        if(!CollectionUtils.isEmpty(checkExistList)){
            String existIds = checkExistList.stream().map(RevisionRuleVO::getId).collect(Collectors.joining(","));
            throw new VciBaseException("英文名称为{0}的版本规则的已经在系统中存在(不区分大小写),不能添加",new Object[]{existIds});
        }
        VciBaseUtil.switchCollectionForOracleIn(revisionRuleList,1000).forEach(this::saveOrUpdateBatch);
        return RevisionRuleWrapper.build().listEntityVO(revisionRuleList);
    }
    /**
     * ä¿®æ”¹ç‰ˆæœ¬è§„则
     *
     * @param revisionRuleDTO ç‰ˆæœ¬è§„则显示对象(和DTO共用)
     * @return ä¿®æ”¹åŽçš„版本规则
     * @throws VciBaseException ä¿®æ”¹å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    @Override
    public RevisionRuleVO editSave(RevisionRuleDTO revisionRuleDTO) throws VciBaseException {
        VciBaseUtil.alertNotNull(revisionRuleDTO,"要修改的版本规则对象",revisionRuleDTO.getOid(),"要修改的版本规则对象的主键");
        List<RevisionRuleVO> voList = batchEditSave(Collections.singletonList(revisionRuleDTO));
        if (!CollectionUtils.isEmpty(voList)){
            return voList.get(0);
        }
        return null;
    }
    /**
     * æ‰¹é‡ä¿®æ”¹ç‰ˆæœ¬è§„则
     *
     * @param revisionRuleDTOList ç‰ˆæœ¬è§„则显示对象列表(和DTO共用)
     * @return æ‰¹é‡ä¿®æ”¹åŽçš„版本规则
     * @throws VciBaseException ä¿®æ”¹å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    @Override
    public List<RevisionRuleVO> batchEditSave(List<RevisionRuleDTO> revisionRuleDTOList) throws VciBaseException {
        if(CollectionUtils.isEmpty(revisionRuleDTOList)){
            throw new VciBaseException("要修改的版本规则对象不能为空");
        }
        //1. åˆ¤æ–­å„个属性是否必输项都输入了
        //2. åˆ¤æ–­çš„英文名称是否重复
        Set<String> idSet = new HashSet<>();
        Map<String,RevisionRuleDTO> oidObjectMap = new HashMap<>(16);
        String creator = AuthUtil.getUserAccount();
        Date now = new Date();
        List<RevisionRule> revisionRuleList = new ArrayList<>();
        revisionRuleDTOList.forEach(s -> {
            //判断为空
            VciBaseUtil.alertNotNull(s.getOid(),"版本规则主键",s.getId(),"版本规则英文名称",s.getName(),"版本规则中文名称",s.getStartCode(),"起始字符",s.getSerialStep(),"步长");
            //判断本次是否存在
            if(idSet.contains(s.getId().toLowerCase().trim())){
                throw new VciBaseException("英文名称为{0}的版本规则已经存在(不区分大小写)",new Object[]{s.getId()});
            }else{
                idSet.add(s.getId().toLowerCase().trim());
            }
            oidObjectMap.put(s.getOid(),s);
            RevisionRule ruleDO = org.springblade.core.tool.utils.BeanUtil.copy(s, RevisionRule.class);
            ruleDO.setLastModifier(creator);
            ruleDO.setLastModifyTime(now);
            ruleDO.setTs(now);
            revisionRuleList.add(ruleDO);
        });
        //判断是否存在
        List<RevisionRuleVO> checkExistList = listRevisionRuleByOidCollection(oidObjectMap.keySet());
        if(CollectionUtils.isEmpty(checkExistList)){
            throw new VciBaseException("这些版本规则在系统中均不存在",new Object[]{});
        }
        //判断属性名称是否修改
        Set<String> oidInDbSet = new HashSet<>();
        checkExistList.forEach(s -> {
            RevisionRuleDTO revisionRuleDTO =  oidObjectMap.get(s.getOid());
            if(!revisionRuleDTO.getId().equalsIgnoreCase(s.getId())){
                throw new VciBaseException("版本规则[{0}]的英文名称不允许修改,原名称{1},新名称{2}",new Object[]{s.getName(),s.getId(),revisionRuleDTO.getId()});
            }
            BeanUtil.convert(revisionRuleDTO,s);
            oidInDbSet.add(s.getOid());
        });
        //看看是否有不在系统中存在的
        oidObjectMap.forEach( (k,v) ->{
            if(!oidInDbSet.contains(k)){
                throw new VciBaseException("版本规则{0}[{1}]在系统中不存在",new Object[]{v.getId(),v.getName()});
            }
        });
        VciBaseUtil.switchCollectionForOracleIn(revisionRuleList,1000).forEach(this::saveOrUpdateBatch);
        return RevisionRuleWrapper.build().listEntityVO(revisionRuleList);
    }
    /**
     * åˆ é™¤ç‰ˆæœ¬è§„则
     *
     * @param revisionRuleVO ç‰ˆæœ¬è§„则显示对象
     * @throws VciBaseException å¦‚果版本规则被引用,或者删除出错时会抛出异常
     */
    @Override
    public void delete(RevisionRuleVO revisionRuleVO) throws VciBaseException {
        VciBaseUtil.alertNotNull(revisionRuleVO,"要删除的版本对象",revisionRuleVO.getOid(),"要删除的版本对象的主键");
        batchDelete(Collections.singletonList(revisionRuleVO));
    }
    /**
     * æ‰¹é‡åˆ é™¤ç‰ˆæœ¬è§„则
     *
     * @param revisionRuleVOList è¦åˆ é™¤çš„版本规则显示对象列表
     * @throws VciBaseException å¦‚果版本规则被引用,或者删除出错时会抛出异常
     */
    @Override
    @Transactional(rollbackFor = VciBaseException.class)
    public void batchDelete(List<RevisionRuleVO> revisionRuleVOList) throws VciBaseException {
        VciBaseUtil.alertNotNull(revisionRuleVOList,"版本规则");
        Set<String> oidSet = revisionRuleVOList.stream().map(RevisionRuleVO::getOid).peek(s -> VciBaseUtil.alertNotNull(StringUtil.isBlank(s))).collect(Collectors.toSet());
        List<RevisionRuleVO> revisionRuleList = listRevisionRuleByOidCollection(oidSet);
        if(CollectionUtils.isEmpty(revisionRuleList)){
            throw new VciBaseException("要删除的版本规则在系统中不存在,可能您需要刷新后再试");
        }
        Set<String> oidInDbSet = revisionRuleList.stream().map(RevisionRuleVO::getOid).collect(Collectors.toSet());
        oidSet.forEach( s -> {
            if(!oidInDbSet.contains(s)){
                throw new VciBaseException("要删除的版本规则在系统中不存在,可能您需要刷新后再试");
            }
        });
        //检查属性是否被引用
        if(batchCheckRevisionRuleUsed(oidSet)){
            throw new VciBaseException("要删除的版本规则在业务类型中被使用,无法删除");
        }
        //执行批量删除
        Collection<Collection<String>> oidCollections = VciBaseUtil.switchCollectionForOracleIn(oidInDbSet);
        for(Collection<String> oidCollection : oidCollections){
            baseMapper.delete(Wrappers.<RevisionRule>query().lambda().in(RevisionRule::getOid,oidCollection));
        }
    }
    /**
     * æ‰¹é‡æ ¡éªŒç‰ˆæœ¬è§„则是否被使用
     *
     * @param oidCollection ä¸»é”®é›†åˆ
     * @return true表示被引用
     */
    @Override
    public boolean batchCheckRevisionRuleUsed(Collection<String> oidCollection) {
        VciBaseUtil.alertNotNull("校验是否引用的版本规则的主键",oidCollection);
        //检查业务类型
        Collection<Collection<String>> oidCollections = VciBaseUtil.switchCollectionForOracleIn(oidCollection);
        for(Collection<String> oids : oidCollections) {
            MPJLambdaWrapper<BtmType> join = Map2MPJLambdaUtil.getMPJLambdaWrapper(new BtmType())
                .join("join", RevisionRule.class, RevisionRule::getId, BtmType::getRevisionRuleId)
                .in(RevisionRule::getOid, oids);
            Long count = btmTypeMapper.selectCount(join);
            if(count>0){
                return true;
            }
        }
        return false;
    }
    /**
     * èŽ·å–ä½¿ç”¨ç‰ˆæœ¬è§„åˆ™çš„ä¸šåŠ¡ç±»åž‹
     *
     * @param pkRevisionRule ç‰ˆæœ¬è§„则的主键
     * @return å¼•用的业务类型
     * @throws VciBaseException æŸ¥è¯¢å‡ºé”™æ—¶ä¼šæŠ›å‡ºå¼‚常
     */
    @Override
    public List<BtmTypeVO> listRevisionRuleUsedInfo(String pkRevisionRule) throws VciBaseException {
        VciBaseUtil.alertNotNull(pkRevisionRule,"版本规则对象的主键");
        List<BtmType> result = btmTypeMapper.selectList(
            Map2MPJLambdaUtil.getMPJLambdaWrapper(new BtmType())
                .join("join", RevisionRule.class, RevisionRule::getId, BtmType::getRevisionRuleId)
                .eq(RevisionRule::getOid, pkRevisionRule));
        return BtmTypeWrapper.build().listEntityVO(result);
    }
    /**
     * æ ¡éªŒç‰ˆæœ¬è§„则是否被引用
     *
     * @param pkRevisionRule ç‰ˆæœ¬è§„则的主键
     * @return true表示被引用, false表示没有被引用
     * @throws VciBaseException å‚数为空或者查询出错时会抛出错误
     */
    @Override
    public boolean checkRevisionRuleUsed(String pkRevisionRule) throws VciBaseException {
        VciBaseUtil.alertNotNull(pkRevisionRule,"要校验是否引用的版本规则对象的主键");
        return batchCheckRevisionRuleUsed(Func.toStrList(",",pkRevisionRule));
    }
    /**
     * åˆ¤æ–­ç‰ˆæœ¬è§„则是否存在
     *
     * @param revisionRuleId ç‰ˆæœ¬è§„则的英文名称
     * @return true表示都存在,false表示不存在
     * @throws VciBaseException å‚数错误或者查询出错会抛出异常
     */
    @Override
    public boolean checkRevisionRuleExist(String revisionRuleId) throws VciBaseException {
        VciBaseUtil.alertNotNull(revisionRuleId,"版本规则的英文名称");
        List<String> idList = Func.toStrList(",",revisionRuleId.toLowerCase(Locale.ROOT));
        List<RevisionRuleVO> revisionRuleDOList = listRevisionRuleByIdCollection(idList);
        if(CollectionUtils.isEmpty(revisionRuleDOList)){
            return false;
        }else{
            Set<String> existIdList = revisionRuleDOList.stream().map(RevisionRuleVO::getId)
                .collect(Collectors.toList()).stream()
                .map(String::toLowerCase).collect(Collectors.toSet());
            //上方已经转换为了小写
            return idList.stream().allMatch(s -> existIdList.contains(s.toLowerCase().trim()));
        }
    }
    /**
     * èŽ·å–ä¸‹ä¸€ä¸ªç‰ˆæœ¬çš„å€¼
     *
     * @param ruleId               ç‰ˆæœ¬çš„规则
     * @param currentRevisionValue å½“前版本的值,为空的时候,说明是新增
     * @return ä¸‹ä¸€ä¸ªç‰ˆæœ¬å·
     * @throws VciBaseException ç‰ˆæœ¬è§„则不存在的时候会抛出异常
     */
    @Override
    public String getNextRevisionValue(String ruleId, String currentRevisionValue) throws VciBaseException {
        VciBaseUtil.alertNotNull(ruleId,"规则的英文名称");
        boolean isFirstRevision = StringUtils.isBlank(currentRevisionValue);
        RevisionRuleVO revisionRuleVO = getRevisionRuleByOid(ruleId);
        String ruleValue;
        if(isFirstRevision){
            //前缀+ èµ·å§‹ + åŽç¼€
            return (StringUtils.isBlank(revisionRuleVO.getPrefixCode())?"":revisionRuleVO.getPrefixCode().trim()) + revisionRuleVO.getStartCode() +
                (StringUtils.isBlank(revisionRuleVO.getSuffixCode())?"":revisionRuleVO.getSuffixCode().trim());
        }else{
            ruleValue = replacePrefixAndSubfix(currentRevisionValue, revisionRuleVO.getPrefixCode(), revisionRuleVO.getSuffixCode());
            String lastChar = ruleValue.substring(ruleValue.length()-1);
            String unHasLastCharRule = ruleValue.substring(0,ruleValue.length()-1);
            Integer step = revisionRuleVO.getSerialStep();
            if(step == null){
                step = 1;
            }
            if(lastChar.matches(RegExpConstant.LETTER)){
                //是字母的,加过去后如果超过了Z,那就得加一位
                //用ascii码来添加
                int ascInt = lastChar.toCharArray()[0];
                int ascForZ = "Z".toCharArray()[0];
                int ascForA = "A".toCharArray()[0];
                int newValueAsc;
                if((ascInt + step) > ascForZ){
                    newValueAsc = (ascInt + step) - ascForZ  + ascForA;
                    ruleValue = unHasLastCharRule + "A" + (char)newValueAsc;
                }else {
                    ruleValue = unHasLastCharRule + (char)(ascInt + step);
                }
            }else{
                //是数字
                String lastNumberInString  = getNumbers(ruleValue);
                String nextNumber = String.valueOf(Integer.parseInt(lastNumberInString) + step);
                if(ruleValue.length() > lastNumberInString.length()){
                    ruleValue = ruleValue.substring(0,ruleValue.length() - lastNumberInString.length()-1) + nextNumber;
                }else{
                    ruleValue = nextNumber;
                }
            }
        }
        return ruleValue;
    }
    /**
     * èŽ·å–å­—ç¬¦ä¸²ä¸­çš„æ•°å­—éƒ¨åˆ†
     * @param content å­—符串内容
     * @return æ•°å­—的部分,最后的那部分
     */
    private String getNumbers(String content) {
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            return matcher.group(matcher.groupCount()-1);
        }
        return "";
    }
    /**
     * æ›¿æ¢å‰ç¼€å’ŒåŽç¼€
     * @param ruleValue å½“前版本的值
     * @param prefix å‰ç¼€
     * @param subfix åŽç¼€
     * @return åŽ»é™¤å‰ç¼€å’ŒåŽç¼€çš„ç‰ˆæœ¬è§„åˆ™
     */
    private String replacePrefixAndSubfix(String ruleValue, String prefix, String subfix){
        if(prefix==null){
            prefix = "";
        }
        if(subfix == null){
            subfix = "";
        }
        if(StringUtils.isNotBlank(prefix) && ruleValue.startsWith(prefix)){
            ruleValue = ruleValue.substring(prefix.length());
        }
        if(StringUtils.isNotBlank(subfix) && ruleValue.endsWith(subfix)){
            ruleValue = ruleValue.substring(0,ruleValue.length()-subfix.length()-1);
        }
        return ruleValue;
    }
    /**
     * åˆ†é¡µæŸ¥è¯¢
     *
     * @param baseQueryObject æŸ¥è¯¢å¯¹è±¡
     * @return æŸ¥è¯¢ç»“æžœ
     * @throws VciBaseException æŸ¥è¯¢å‡ºé”™æ—¶æŠ›å‡ºå¼‚常
     */
    @Override
    public IPage<RevisionRuleVO> pageQueryVO(BaseQueryObject baseQueryObject) throws VciBaseException {
        Map<String, String> conditionMap = baseQueryObject.getConditionMap();
        if (conditionMap == null){
            conditionMap = new HashMap<>();
        }
        PageHelper pageHelper = baseQueryObject.getPageHelper();
        Query query = new Query();
        query.setCurrent(pageHelper.getPage());
        query.setSize(pageHelper.getLimit());
        query.setAscs(pageHelper.getSort());
        RevisionRule queryConditionObj = new RevisionRule();
        BeanMap beanMap = BeanMap.create(queryConditionObj);
        beanMap.putAll(conditionMap);
        return RevisionRuleWrapper.build().pageVO(baseMapper.selectPage(Condition.getPage(query),Condition.getQueryWrapper(queryConditionObj).lambda().orderByAsc(RevisionRule::getId)));
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/StatusServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,459 @@
package com.vci.ubcs.omd.service.impl;
import com.alibaba.cloud.commons.lang.StringUtils;
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.entity.Status;
import com.vci.ubcs.omd.mapper.StatusMapper;
import com.vci.ubcs.omd.service.IStatusService;
import com.vci.ubcs.omd.vo.StatusVO;
import com.vci.ubcs.omd.wrapper.StatusWrapper;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.pagemodel.PageHelper;
import com.vci.ubcs.starter.web.util.BeanUtil;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
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.utils.Func;
import org.springframework.cglib.beans.BeanMap;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.*;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
 * Description: çŠ¶æ€æ± çš„å®žçŽ°ç±»
 *
 * @author LiHang
 * @date 2023/5/23
 */
@Service
public class StatusServiceImpl extends ServiceImpl<StatusMapper, Status> implements IStatusService {
    private final String REGEXP = "^[A-Za-z]+$";
    /**
     * èŽ·å–çŠ¶æ€åˆ—è¡¨
     *
     * @param conditionMap æŸ¥è¯¢æ¡ä»¶
     * @param pageHelper   åˆ†é¡µä¿¡æ¯å’ŒæŽ’序信息,默认使用id排序
     * @return çŠ¶æ€å¯¹è±¡åˆ—è¡¨
     * @throws VciBaseException æŸ¥è¯¢å‡ºé”™æ—¶ä¼šæŠ›å‡ºå¼‚常
     */
    @Override
    public IPage<StatusVO> listStatus(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException {
        Query query = new Query();
        query.setCurrent(pageHelper.getPage());
        query.setSize(pageHelper.getLimit());
        query.setAscs("id");
        Status queryVO = new Status();
        BeanMap.create(queryVO).putAll(conditionMap);
        return StatusWrapper.build().pageVO(baseMapper.selectPage(Condition.getPage(query), Condition.getQueryWrapper(queryVO).lambda().orderByAsc(Status::getId)));
    }
    /**
     * èŽ·å–çŠ¶æ€åˆ—è¡¨
     *
     * @param conditionMap æŸ¥è¯¢æ¡ä»¶
     * @return çŠ¶æ€å¯¹è±¡åˆ—è¡¨
     * @throws VciBaseException æŸ¥è¯¢å‡ºé”™æ—¶ä¼šæŠ›å‡ºå¼‚常
     */
    @Override
    public List<StatusVO> listStatusNoPage(Map<String, String> conditionMap) throws VciBaseException {
        Status queryVO = new Status();
        BeanMap.create(queryVO).putAll(conditionMap);
        return StatusWrapper.build().listEntityVO(baseMapper.selectList(Condition.getQueryWrapper(queryVO).lambda().orderByAsc(Status::getId)));
    }
    /**
     * æ ¹æ®ä¸»é”®èŽ·å–çŠ¶æ€
     *
     * @param pkStatus çŠ¶æ€ä¸»é”®
     * @return çŠ¶æ€ï¼Œå¦‚æžœä¸å­˜åœ¨ä¼šè¿”å›žnull
     * @throws VciBaseException å‚数为空或者查询出错时会抛出错误
     */
    @Override
    public StatusVO getStatusByOid(String pkStatus) throws VciBaseException {
        List<StatusVO> statusVOList = listStatusByOids(pkStatus);
        if (!CollectionUtils.isEmpty(statusVOList)){
            return statusVOList.get(0);
        }
        return null;
    }
    /**
     * æ ¹æ®ä¸»é”®æ‰¹é‡èŽ·å–çŠ¶æ€
     *
     * @param primaryKeys çŠ¶æ€ä¸»é”®ï¼Œç”¨é€—å·åˆ†éš”
     * @return çŠ¶æ€åˆ—è¡¨ï¼Œå¦‚æžœæœ‰ä¸å­˜åœ¨çš„ä¸ä¼šè¿”å›žï¼Œå…¨éƒ¨ä¸å­˜åœ¨çš„åˆ™è¿”å›žç©ºåˆ—è¡¨
     * @throws VciBaseException å‚数为空或者查询出错时会抛出错误
     */
    @Override
    public List<StatusVO> listStatusByOids(String primaryKeys) throws VciBaseException {
        VciBaseUtil.alertNotNull(primaryKeys,"状态的主键");
        List<String> pkList = Func.toStrList(",", primaryKeys);
        return listStatusByOidCollection(pkList);
    }
    /**
     * æ‰¹é‡æ ¹æ®ä¸»é”®èŽ·å–çŠ¶æ€
     *
     * @param pkStatusCollection çŠ¶æ€ä¸»é”®é›†åˆ
     * @return çŠ¶æ€åˆ—è¡¨ï¼Œå¦‚æžœæœ‰ä¸å­˜åœ¨çš„ä¸ä¼šè¿”å›žï¼Œå…¨éƒ¨ä¸å­˜åœ¨çš„åˆ™è¿”å›žç©ºåˆ—è¡¨
     * @throws VciBaseException å‚数为空或者查询出错时会抛出错误
     */
    @Override
    public List<StatusVO> listStatusByOidCollection(Collection<String> pkStatusCollection) throws VciBaseException {
        if(!CollectionUtils.isEmpty(pkStatusCollection)){
            List<Status> statusDOList = listStatusByOidCollectionDO(pkStatusCollection);
            if(!CollectionUtils.isEmpty(statusDOList)) {
                return StatusWrapper.build().listEntityVO(statusDOList);
            }
        }
        return null;
    }
    /**
     * æ ¹æ®ä¸»é”®é›†åˆèŽ·å–æ•°æ®å¯¹è±¡
     * @param oidCollection ä¸»é”®é›†åˆ
     * @return æŸ¥è¯¢å‡ºæ¥çš„æ•°æ®å¯¹è±¡
     * @throws VciBaseException mybatis执行出错时会抛出异常
     */
    private List<Status> listStatusByOidCollectionDO(Collection<String> oidCollection) throws VciBaseException{
        if(!CollectionUtils.isEmpty(oidCollection)){
            List<Status> statusDOList = new ArrayList<>();
            Collection<Collection<String>> pksCollections = VciBaseUtil.switchCollectionForOracleIn(oidCollection);
            if(!CollectionUtils.isEmpty(pksCollections)) {
                pksCollections.forEach(s -> {
                    List<Status> queryResult = baseMapper.selectList(Wrappers.<Status>query().lambda().in(Status::getOid,s));
                    if(!CollectionUtils.isEmpty(queryResult)){
                        statusDOList.addAll(queryResult);
                    }
                });
            }
            return statusDOList;
        }
        return null;
    }
    /**
     * æ ¹æ®è‹±æ–‡åç§°èŽ·å–çŠ¶æ€
     *
     * @param id è‹±æ–‡åç§°
     * @return çŠ¶æ€ï¼Œå¦‚æžœä¸å­˜åœ¨ä¼šè¿”å›žnull
     * @throws VciBaseException æŸ¥è¯¢å‡ºé”™æŠ›å‡ºå¼‚常
     */
    @Override
    public StatusVO getStatusById(String id) throws VciBaseException {
        List<StatusVO> statusVOList = listStatusByIds(id);
        if(!CollectionUtils.isEmpty(statusVOList)){
            return statusVOList.get(0);
        }
        return null;
    }
    /**
     * æ ¹æ®è‹±æ–‡åç§°æ‰¹é‡èŽ·å–çŠ¶æ€
     *
     * @param ids è‹±æ–‡åç§°ï¼Œä½¿ç”¨é€—号分隔
     * @return çŠ¶æ€åˆ—è¡¨ï¼Œå¦‚æžœæœ‰ä¸å­˜åœ¨çš„ä¸ä¼šè¿”å›žï¼Œå…¨éƒ¨ä¸å­˜åœ¨çš„åˆ™è¿”å›žç©ºåˆ—è¡¨
     * @throws VciBaseException å‚数为空或者查询出错时会抛出错误
     */
    @Override
    public List<StatusVO> listStatusByIds(String ids) throws VciBaseException {
        VciBaseUtil.alertNotNull(ids,"状态的英文名称");
        List<String> idList = Func.toStrList(",", ids);
        return listStatusByIdCollection(idList);
    }
    /**
     * æ ¹æ®è‹±æ–‡åç§°é›†åˆæ‰¹é‡èŽ·å–çŠ¶æ€
     *
     * @param idCollection è‹±æ–‡åç§°é›†åˆ
     * @return çŠ¶æ€åˆ—è¡¨ï¼Œå¦‚æžœæœ‰ä¸å­˜åœ¨çš„ä¸ä¼šè¿”å›žï¼Œå…¨éƒ¨ä¸å­˜åœ¨çš„åˆ™è¿”å›žç©ºåˆ—è¡¨
     * @throws VciBaseException å‚数为空或者查询出错时会抛出错误
     */
    @Override
    public List<StatusVO> listStatusByIdCollection(Collection<String> idCollection) throws VciBaseException {
        if(!CollectionUtils.isEmpty(idCollection)){
            List<Status> statusDOList = listStatusByIdCollectionDO(idCollection);
            if(!CollectionUtils.isEmpty(statusDOList)) {
                return StatusWrapper.build().listEntityVO(statusDOList);
            }
        }
        return null;
    }
    /**
     * æ ¹æ®è‹±æ–‡åç§°é›†åˆèŽ·å–æ•°æ®å¯¹è±¡
     * @param idCollection è‹±æ–‡åç§°é›†åˆ
     * @return æ•°æ®å¯¹è±¡åˆ—表,如果有不存在的不会返回,全部不存在的则返回空列表
     * @throws VciBaseException mybatis查询出错的时候会抛出异常
     */
    private List<Status> listStatusByIdCollectionDO(Collection<String> idCollection) throws VciBaseException {
        if(CollectionUtils.isEmpty(idCollection)) {
            return null;
        }
        List<Status> statusDOList = new ArrayList<>();
        Collection<Collection<String>> idCollections = VciBaseUtil.switchCollectionForOracleIn(idCollection);
        if(!CollectionUtils.isEmpty(idCollections)) {
            idCollections.forEach(s -> {
                List<Status> queryResult = baseMapper.selectList(Wrappers.<Status>query().lambda().in(Status::getId,s));
                if(!CollectionUtils.isEmpty(queryResult)){
                    statusDOList.addAll(queryResult);
                }
            });
        }
        return statusDOList;
    }
    /**
     * æ ¹æ®çŠ¶æ€ä¸»é”®èŽ·å–ä¸­æ–‡åç§°
     *
     * @param oid çŠ¶æ€ä¸»é”®ï¼Œå¤šä¸ªä½¿ç”¨é€—å·åˆ†éš”
     * @return ä¸­æ–‡åç§°ï¼Œå¦‚果不存在会返回null
     * @throws VciBaseException å‚数为空或者查询出错时会抛出错误
     */
    @Override
    public String getNameByOid(String oid) throws VciBaseException {
        VciBaseUtil.alertNotNull(oid,"状态对象主键");
        return Optional.ofNullable(getStatusByOid(oid)).orElseGet(StatusVO::new).getName();
    }
    /**
     * æ ¹æ®çŠ¶æ€è‹±æ–‡åç§°èŽ·å–ä¸­æ–‡åç§°
     *
     * @param id çŠ¶æ€è‹±æ–‡åç§°
     * @return ä¸­æ–‡åç§°ï¼Œå¦‚果不存在会返回null
     * @throws VciBaseException å‚数为空或者查询出错时会抛出错误
     */
    @Override
    public String getNameById(String id) throws VciBaseException {
        VciBaseUtil.alertNotNull(id,"状态对象主键");
        return Optional.ofNullable(getStatusById(id)).orElseGet(StatusVO::new).getName();
    }
    /**
     * æ·»åŠ çŠ¶æ€
     *
     * @param statusVO çŠ¶æ€æ˜¾ç¤ºå¯¹è±¡ï¼ˆå’ŒDTO共用)
     * @return æ·»åŠ åŽçš„çŠ¶æ€
     * @throws VciBaseException æ·»åŠ å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚å¸¸
     */
    @Override
    public StatusVO addSave(StatusVO statusVO) throws VciBaseException {
        VciBaseUtil.alertNotNull(statusVO,"要添加的状态",statusVO.getId(),"状态英文名称",statusVO.getName(),"状态中文名称");
        List<StatusVO> statusVOS = new ArrayList<>();
        statusVOS.add(statusVO);
        List<StatusVO> statusVOList = batchAddSave(statusVOS);
        if(CollectionUtils.isEmpty(statusVOList)){
            return null;
        }
        return statusVOList.get(0);
    }
    /**
     * æ‰¹é‡æ·»åŠ çŠ¶æ€
     *
     * @param statusVOList çŠ¶æ€æ˜¾ç¤ºå¯¹è±¡åˆ—è¡¨(和DTO共用)
     * @return æ‰¹é‡æ·»åŠ åŽçš„çŠ¶æ€
     * @throws VciBaseException æ·»åŠ å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚å¸¸
     */
    @Override
    public List<StatusVO> batchAddSave(List<StatusVO> statusVOList) throws VciBaseException {
        if(CollectionUtils.isEmpty(statusVOList)){
            throw new VciBaseException("要添加的状态对象不能为空");
        }
        //1. åˆ¤æ–­å„个属性是否必输项都输入了
        //2. åˆ¤æ–­è‹±æ–‡åç§°æ˜¯å¦é‡å¤
        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()){
                throw new VciBaseException("英文名称{0}只能是英文字母",new Object[]{s.getId()});
            }
            VciBaseUtil.alertNotNull(s.getId(),"状态英文名称",s.getName(),"状态中文名称");
            if(idSet.contains(s.getId().toLowerCase().trim())){
                throw new VciBaseException("英文名称为{0}的状态已经存在(不区分大小写)",new Object[]{s.getId()});
            }else{
                idSet.add(s.getId().toLowerCase().trim());
            }
            if(StringUtils.isBlank(s.getOid())){
                s.setOid(VciBaseUtil.getPk());
            }
            s.setBtmName(btmName);
            s.setOwner(creator);
            s.setCreator(creator);
            s.setCreateTime(now);
            s.setLastModifier(creator);
            s.setLastModifyTime(now);
            s.setTs(now);
        });
        //判断是否存在
        List<Status> checkExistStatusDOList = listStatusByIdCollectionDO(idSet);
        if(!CollectionUtils.isEmpty(checkExistStatusDOList)){
            String existIds = checkExistStatusDOList.stream().map(Status::getId).collect(Collectors.joining(","));
            throw new VciBaseException("英文名称为{0}的状态的已经在系统中存在(不区分大小写),不能添加",new Object[]{existIds});
        }
        List<Status> statusDOList = StatusWrapper.build().batchCopyVO2DO(statusVOList);
        VciBaseUtil.switchCollectionForOracleIn(statusDOList,1000).forEach(this::saveBatch);
        return statusVOList;
    }
    /**
     * ä¿®æ”¹çŠ¶æ€
     *
     * @param statusVO çŠ¶æ€æ˜¾ç¤ºå¯¹è±¡ï¼ˆå’ŒDTO共用)
     * @return ä¿®æ”¹åŽçš„状态
     * @throws VciBaseException ä¿®æ”¹å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    @Override
    public StatusVO editSave(StatusVO statusVO) throws VciBaseException {
        VciBaseUtil.alertNotNull(statusVO,"要修改的状态对象",statusVO.getOid(),"要修改的状态对象的主键");
        List<StatusVO> needEditVOList = new ArrayList<>();
        needEditVOList.add(statusVO);
        List<StatusVO> statusVOList = batchEditSave(needEditVOList);
        if(!CollectionUtils.isEmpty(statusVOList)){
            return statusVOList.get(0);
        }
        return null;
    }
    /**
     * æ‰¹é‡ä¿®æ”¹çŠ¶æ€
     *
     * @param statusVOList çŠ¶æ€æ˜¾ç¤ºå¯¹è±¡åˆ—è¡¨ï¼ˆå’ŒDTO共用)
     * @return æ‰¹é‡ä¿®æ”¹åŽçš„状态
     * @throws VciBaseException ä¿®æ”¹å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    @Override
    public List<StatusVO> batchEditSave(List<StatusVO> statusVOList) throws VciBaseException {
        if(CollectionUtils.isEmpty(statusVOList)){
            throw new VciBaseException("要修改的状态对象不能为空");
        }
        //1. åˆ¤æ–­å„个属性是否必输项都输入了
        //2. åˆ¤æ–­çŠ¶æ€çš„è‹±æ–‡åç§°æ˜¯å¦é‡å¤
        Set<String> idSet = new HashSet<>();
        Map<String,StatusVO> oidObjectMap = new HashMap<>();
        String creator = AuthUtil.getUserAccount();
        Date now = new Date();
        statusVOList.forEach(s -> {
            //判断为空
            VciBaseUtil.alertNotNull(s.getOid(),"状态主键",s.getId(),"状态英文名称",s.getName(),"状态中文名称");
            //判断本次是否存在
            if(idSet.contains(s.getId().toLowerCase().trim())){
                throw new VciBaseException("英文名称为{0}的状态已经存在(不区分大小写)",new Object[]{s.getId()});
            }else{
                idSet.add(s.getId().toLowerCase().trim());
            }
            oidObjectMap.put(s.getOid(),s);
            s.setLastModifier(creator);
            s.setLastModifyTime(now);
            s.setTs(now);
        });
        //判断是否存在
        List<Status> statusDOList = listStatusByOidCollectionDO(oidObjectMap.keySet());
        if(CollectionUtils.isEmpty(statusDOList)){
            throw new VciBaseException("这些状态在系统中均不存在",new Object[]{});
        }
        //判断属性名称是否修改
        Set<String> oidInDbSet = new HashSet<>();
        statusDOList.forEach(s -> {
            StatusVO statusVO =  oidObjectMap.get(s.getOid());
            if(!statusVO.getId().equalsIgnoreCase(s.getId())){
                throw new VciBaseException("状态[{0}]的英文名称不允许修改,原名称{1},新名称{2}",new Object[]{s.getName(),s.getId(),statusVO.getId()});
            }
            BeanUtil.convert(statusVO,s);
            oidInDbSet.add(s.getOid());
        });
        oidObjectMap.forEach( (k,v) ->{
            if(!oidInDbSet.contains(k)){
                throw new VciBaseException("状态{0}[{1}]在系统中不存在",new Object[]{v.getId(),v.getName()});
            }
        });
        //看看是否有不在系统中存在的
        VciBaseUtil.switchCollectionForOracleIn(statusDOList).forEach(this::saveOrUpdateBatch);
        return statusVOList;
    }
    /**
     * åˆ é™¤çŠ¶æ€
     *
     * @param statusVO çŠ¶æ€æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException å¦‚果状态被引用,或者删除出错时会抛出异常
     */
    @Override
    public void delete(StatusVO statusVO) throws VciBaseException {
        VciBaseUtil.alertNotNull(statusVO,"要删除的状态对象",statusVO.getOid(),"要删除的状态对象的主键");
        List<StatusVO> needDeleteVOList = new ArrayList<>();
        needDeleteVOList.add(statusVO);
        batchDelete(needDeleteVOList);
    }
    /**
     * æ‰¹é‡åˆ é™¤çŠ¶æ€
     *
     * @param statusVOList è¦åˆ é™¤çš„状态显示对象列表
     * @throws VciBaseException å¦‚果状态被引用,或者删除出错时会抛出异常
     */
    @Override
    public void batchDelete(List<StatusVO> statusVOList) throws VciBaseException {
        if(CollectionUtils.isEmpty(statusVOList)){
            throw new VciBaseException("要删除的状态对象不能为空");
        }
        Set<String> oidSet= new HashSet<>();
        statusVOList.stream().forEach( s -> {
            VciBaseUtil.alertNotNull(s.getOid(),"要删除的状态对象的主键");
            oidSet.add(s.getOid());
        });
        //查询
        List<Status> statusDOList = listStatusByOidCollectionDO(oidSet);
        if(CollectionUtils.isEmpty(statusDOList)){
            throw new VciBaseException("要删除的状态在系统中不存在,可能您需要刷新后再试");
        }
        Set<String> oidInDbSet = statusDOList.stream().map(Status::getOid).collect(Collectors.toSet());
        oidSet.forEach( s -> {
            if(!oidInDbSet.contains(s)){
                throw new VciBaseException("要删除的状态在系统中不存在,可能您需要刷新后再试");
            }
        });
        //检查属性是否被引用
        if(checkStatusUseds(oidSet)){
            throw new VciBaseException("要删除的状态在生命周期对象中被使用,无法删除");
        }
        Collection<Collection<String>> oidCollections = VciBaseUtil.switchCollectionForOracleIn(oidInDbSet);
        for(Collection<String> oidCollection : oidCollections){
            baseMapper.delete(Wrappers.<Status>query().lambda().in(Status::getOid,oidCollection));
        }
    }
    /**
     * æ‰¹é‡æ ¡éªŒçŠ¶æ€æ˜¯å¦è¢«ä½¿ç”¨
     *
     * @param oidCollection ä¸»é”®é›†åˆ
     * @return true表示被引用
     */
    @Override
    public boolean checkStatusUseds(Collection<String> oidCollection) {
        return false;
    }
    /**
     * æ ¡éªŒçŠ¶æ€æ˜¯å¦è¢«å¼•ç”¨
     *
     * @param pkStatus çŠ¶æ€çš„ä¸»é”®
     * @return true表示被引用, false表示没有被引用
     * @throws VciBaseException å‚数为空或者查询出错时会抛出错误
     */
    @Override
    public boolean checkStatusUsed(String pkStatus) throws VciBaseException {
        return false;
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/RevisionRuleWrapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
package com.vci.ubcs.omd.wrapper;
import com.vci.ubcs.omd.dto.RevisionRuleDTO;
import com.vci.ubcs.omd.entity.RevisionRule;
import com.vci.ubcs.omd.vo.RevisionRuleVO;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
 * Description: ç‰ˆæœ¬è§„则的包装类
 *
 * @author LiHang
 * @date 2023/5/17
 */
public class RevisionRuleWrapper  extends BaseEntityWrapper<RevisionRule, RevisionRuleVO> {
    public static RevisionRuleWrapper build() {
        return new RevisionRuleWrapper();
    }
    @Override
    public RevisionRuleVO entityVO(RevisionRule entity) {
        Objects.requireNonNull(entity);
        RevisionRuleVO vo = BeanUtil.copy(entity, RevisionRuleVO.class);
        // åœ¨è¿™é‡Œå¤„理枚举值相关的映射
        return vo;
    }
    public List<RevisionRuleVO> listEntityVO(List<RevisionRule> entityList){
        return entityList.stream().map(this::entityVO).collect(Collectors.toList());
    }
    public List<RevisionRule> batchCopyDTO2DO(List<RevisionRuleDTO> revisionRuleVOList) {
        return revisionRuleVOList.stream().map(this::copyDTO2DO).collect(Collectors.toList());
    }
    public RevisionRule copyDTO2DO(RevisionRuleDTO vo){
        Objects.requireNonNull(vo);
        RevisionRule rule = BeanUtil.copy(vo, RevisionRule.class);
        return rule;
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/StatusWrapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
package com.vci.ubcs.omd.wrapper;
import com.vci.ubcs.omd.entity.Status;
import com.vci.ubcs.omd.vo.StatusVO;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
/**
 * Description:状态池的包装类
 *
 * @author LiHang
 * @date 2023/5/23
 */
public class StatusWrapper extends BaseEntityWrapper<Status, StatusVO> {
    public static StatusWrapper build() {
        return new StatusWrapper();
    }
    @Override
    public StatusVO entityVO(Status entity) {
        StatusVO vo = BeanUtil.copy(entity, StatusVO.class);
        //这里处理枚举相关的
        return vo;
    }
    public List<StatusVO> listEntityVO(List<Status> statusList){
        return Optional.ofNullable(statusList).orElseGet(ArrayList::new).stream().map(this::entityVO).collect(Collectors.toList());
    }
    public List<Status> batchCopyVO2DO(List<StatusVO> statusVOList) {
        return Optional.ofNullable(statusVOList).orElseGet(ArrayList::new).stream().map(this::copyVO2DO).collect(Collectors.toList());
    }
    private Status copyVO2DO(StatusVO statusVO) {
        Status status = BeanUtil.copy(statusVO, Status.class);
        return status;
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/RevisionRuleMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
<?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.RevisionRuleMapper">
    <resultMap id="BaseResultMap" type="com.vci.ubcs.omd.entity.RevisionRule">
        <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="skip_code" jdbcType="VARCHAR" property="skipCode" />
        <result column="start_code" jdbcType="VARCHAR" property="startCode" />
        <result column="serial_step" jdbcType="DECIMAL" property="serialStep" />
        <result column="prefix_code" jdbcType="VARCHAR" property="prefixCode" />
        <result column="suffix_code" jdbcType="VARCHAR" property="suffixCode" />
        <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, skip_code, start_code, serial_step, prefix_code, suffix_code,
        btm_name, owner, creator, create_time, last_modifier, last_modify_time, ts
    </sql>
    <sql id="tableName">
        pl_omd_revision_rule
    </sql>
</mapper>
Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/StatusMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
<?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.StatusMapper">
    <resultMap id="BaseResultMap" type="com.vci.ubcs.omd.entity.Status">
        <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="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, btm_name, owner, creator, create_time, last_modifier, last_modify_time,ts
    </sql>
    <sql id="tableName">
        pl_omd_status
    </sql>
</mapper>