From abe9f2de85ff402a4c989dbc1427807b4e3a59f4 Mon Sep 17 00:00:00 2001 From: ludc Date: 星期四, 06 七月 2023 13:56:17 +0800 Subject: [PATCH] 代码提交 --- Source/UBCS-WEB/.gitignore | 2 Source/UBCS-WEB/src/components/Tree/classifyTrees.vue | 68 ---- Source/UBCS-WEB/src/views/code/code.vue | 10 Source/UBCS-WEB/src/components/template/SetPersonnel.vue | 2 Source/UBCS/ubcs-ops/ubcs-report/src/main/java/com/vci/ubcs/report/config/BladeReportConfiguration.java | 2 Source/UBCS-WEB/src/components/Tree/classifyTreeform.vue | 148 ++++++++-- Source/UBCS-WEB/src/api/template/templateAttr.js | 10 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/ILifeCycleService.java | 17 + Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/LifeCycleController.java | 35 ++ Source/UBCS-WEB/src/api/MasterData/master.js | 9 Source/UBCS-WEB/src/components/Crud/VciMasterCrud.vue | 6 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/LifeCycleServiceImpl.java | 294 ++++++++++++++++++++ Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IBtmTypeService.java | 19 + Source/UBCS-WEB/src/components/Tree/attrCrud.vue | 119 ++++---- Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java | 48 +++ 15 files changed, 599 insertions(+), 190 deletions(-) diff --git a/Source/UBCS-WEB/.gitignore b/Source/UBCS-WEB/.gitignore index fdd7d45..38bac29 100644 --- a/Source/UBCS-WEB/.gitignore +++ b/Source/UBCS-WEB/.gitignore @@ -1,7 +1,7 @@ .DS_Store node_modules # /dist - +/vue.config/ /tests/e2e/videos/ /tests/e2e/screenshots/ diff --git a/Source/UBCS-WEB/src/api/MasterData/master.js b/Source/UBCS-WEB/src/api/MasterData/master.js index ac79efc..8cda791 100644 --- a/Source/UBCS-WEB/src/api/MasterData/master.js +++ b/Source/UBCS-WEB/src/api/MasterData/master.js @@ -19,3 +19,12 @@ } }) } +export const referDataGrid = (params) => { + return request({ + url: '/api/ubcs-code/referBtmTypeController/referDataGrid', + method: 'get', + params:{ + ...params + } + }) +} diff --git a/Source/UBCS-WEB/src/api/template/templateAttr.js b/Source/UBCS-WEB/src/api/template/templateAttr.js index 238a09d..29dd2e5 100644 --- a/Source/UBCS-WEB/src/api/template/templateAttr.js +++ b/Source/UBCS-WEB/src/api/template/templateAttr.js @@ -182,3 +182,13 @@ } }) } +//鏃堕棿鏍煎紡涓嬫媺鑿滃崟 +export const listByFlag = (params) =>{ + return request({ + url:'/api/ubcs-code/bdSelectInputController/listByFlag', + method: 'get', + params:{ + ...params + } + }) +} diff --git a/Source/UBCS-WEB/src/components/Crud/VciMasterCrud.vue b/Source/UBCS-WEB/src/components/Crud/VciMasterCrud.vue index c40df95..2c7f374 100644 --- a/Source/UBCS-WEB/src/components/Crud/VciMasterCrud.vue +++ b/Source/UBCS-WEB/src/components/Crud/VciMasterCrud.vue @@ -199,7 +199,9 @@ code: "", type: "PUBLIC", template: "", - codeClassifyOid:"" + vars:{ + codeClassifyOid:"" + } }, visibleFlow: false, transferData: [], @@ -259,7 +261,7 @@ codeClassifyOid: { handler(newval, oldval) { this.codeClassifyOid = newval; - this.parameter.codeClassifyOid=newval + this.parameter.vars.codeClassifyOid=newval }, deep: true, }, diff --git a/Source/UBCS-WEB/src/components/Tree/attrCrud.vue b/Source/UBCS-WEB/src/components/Tree/attrCrud.vue index 1909549..257dd8b 100644 --- a/Source/UBCS-WEB/src/components/Tree/attrCrud.vue +++ b/Source/UBCS-WEB/src/components/Tree/attrCrud.vue @@ -1,7 +1,6 @@ <template> <div> <div style="display: flex;flex-wrap: wrap;" v-if="this.crudArrayFlag"> - <el-button-group> <!--鏂板--> <el-button v-if="attrEditVisible == false && attrFlagChiledren==false" size="small" type="primary" icon="el-icon-plus" @click="busineHandle">娣诲姞 {{ msg }}</el-button> <!-- 鍏ㄥ睆缂栬緫--> @@ -10,9 +9,6 @@ <el-button icon="el-icon-info" size="small" @click="rulesVisible=true">楠岃瘉瑙勫垯</el-button> <!-- 灞炴�у垎缁�--> <el-button icon="el-icon-menu" size="small" @click="attrVisibleHandle">灞炴�у垎缁�</el-button> - </el-button-group> - <el-button-group> -<<<<<<< HEAD <!-- 鍒嗙被娉ㄥ叆--> <el-button icon="el-icon-magic-stick" size="small" @click="injectBtn">鍒嗙被娉ㄥ叆</el-button> <!-- 缁勫悎瑙勫垯--> @@ -23,7 +19,6 @@ <el-button size="small" @click="CascadeHandle">绾ц仈灞炴��</el-button> <!-- 棰勮鎺掑簭--> <el-button size="small" icon="el-icon-arrow-down">棰勮鎺掑簭</el-button> -======= <!-- 鍒嗙被娉ㄥ叆--> <el-button icon="el-icon-magic-stick" size="small" @click="injectBtn">鍒嗙被娉ㄥ叆</el-button> <!-- 缁勫悎瑙勫垯--> @@ -34,8 +29,6 @@ <el-button size="small" @click="CascadeHandle">绾ц仈灞炴��</el-button> <!-- 棰勮鎺掑簭--> <el-button size="small" @click="orderHandle" icon="el-icon-arrow-down">棰勮鎺掑簭</el-button> ->>>>>>> 92e7dde00a56aff46e01efe72e1f7ab9b76dcf69 - </el-button-group> <!-- 淇濆瓨--> <el-button size="small" @click="addsHandler" icon="el-icon-check">淇濆瓨</el-button> <!-- 鍒犻櫎--> @@ -248,7 +241,6 @@ @select="selectHandle" @selection-change="selectionChange" v-if="this.crudArrayFlag" - ref="referAttrCrud" > <el-table-column type="selection" @@ -259,26 +251,32 @@ :label="item.label" :prop="item.prop" :formatter="formAttr" - :width="item.width||(item.label.length >=4 ?'150':item.label.length==3 ?'120':'90')" + :width="item.width||(item.label.length >=4 ?'160':item.label.length==3 ?'130':'100')" :show-overflow-tooltip="true" + :sortable="item.sortable" align="center" > <template slot-scope="{ row }"> - <el-input v-if="editingRows === row && editShows== item.prop && (item.edit == 'text' || item.edit == 'select' ||item.edit == 'refer')" v-model="row[item.prop]" + <el-input v-if="editingRows === row && editShows== item.prop && item.prop != 'codeDateFormat' && (item.edit == 'text' || item.edit == 'select' ||item.edit == 'refer' )" v-model="row[item.prop]" @blur="saveRows"></el-input> - <el-input-number size="small" controls-position="right" v-if="editingRows === row && editShows== item.prop && item.edit == 'number'" v-model="row[item.prop]" - @blur="saveRows" :style="{width:(item.width-10)+'px'}"></el-input-number> + <el-input-number controls-position="right" v-if="editingRows === row && editShows== item.prop && item.edit == 'number'" v-model="row[item.prop]" + @blur="saveRows"></el-input-number> + <el-select v-model="row[item.prop]" slot="prepend" v-if="editingRows === row && editShows== item.prop && item.prop == 'codeDateFormat' && row[item.prop] ==''" @focus="DataChangeHandler"> + <el-option label="椁愬巺鍚�" value="1"></el-option> + <el-option label="璁㈠崟鍙�" value="2"></el-option> + <el-option label="鐢ㄦ埛鐢佃瘽" value="3"></el-option> + </el-select> <el-switch v-if="item.edit === 'switch'" v-model="row[item.prop]" active-value="true" inactive-value="false"> </el-switch> - <span v-else>{{ row[item.prop] }}</span> + <span v-else >{{ row[item.prop] }}</span> </template> </el-table-column> <el-table-column fixed="right" label="鎿嶄綔" - width="70"> + width="120"> <template slot-scope="scope"> <el-button size="small" @@ -290,11 +288,10 @@ </el-table-column> </el-table> </div> - <!-- </avue-crud>--> </template> <script> -import {AttrByBtm, gridCodeClassifyTemplateAttr, batchAddSave, copyto} from '@/api/template/templateAttr' +import {AttrByBtm, gridCodeClassifyTemplateAttr, batchAddSave, copyto,listByFlag} from '@/api/template/templateAttr' export default { name: "attrCrud .vue", @@ -451,6 +448,8 @@ isShowformulaEdit: false, // 绾ц仈鍗曢�� selectRow: '', + //绾ц仈鍗曢�夋暟缁� + selectRowArr:[], // 绾ц仈data CascadeData: [], // 绾ц仈option @@ -1005,7 +1004,7 @@ label: '鎺掑簭鍙�', sortable: true, edit: 'number', - width: 100, + width: 90, fixed: true }, { label: "灞炴�ц嫳鏂囩紪鍙�", @@ -1021,7 +1020,7 @@ prop: "name", fixed: true, cell: false, - width: 125, + width: 145, edit: 'text', sortable: true }, @@ -1151,7 +1150,7 @@ label: "鏃堕棿鏍煎紡", prop: "codeDateFormat", sortable: true, - width: 105, + width: 135, edit: 'select', cell: false, }, @@ -1266,7 +1265,9 @@ VTInteger: "鏁村舰", VTFilePath: "鏂囦欢", VTString: "瀛楃涓�" - } + }, + //鏃堕棿鏍煎紡涓嬫媺妗� + codeDataFlag:false, } }, computed:{ @@ -1294,9 +1295,18 @@ formAttr(row, column) { console.log(row,column) }, + //鏃堕棿涓嬫媺鏍煎紡 + DataChangeHandler(){ + debugger + listByFlag({comboxKey: 'codedateformat', + id: 'codedateformat', + namespace: 'codeclstempattr', + flag: 'dateFormates'}).then(res=>{ + console.log(res) + }) + }, //灞炴�у垎缁勬寜閽� attrVisibleHandle() { - if (this.attrSelectList.length > 1) { this.$message.warning('鍙兘閫夋嫨涓�鏉℃ā鏉垮睘鎬�') } else if (this.attrSelectList < 1) { @@ -1393,18 +1403,32 @@ 'conditionMap[classifyTemplateOid]': this.Formlist[0].oid, 'conditionMap[oid_notequal]': this.attrOid }).then(res => { + console.log(res) this.CascadeData = res.data.data; }) } }, - // 鎺掑簭棰勮鎸夐挳 - orderHandle(){ - this.$refs.referAttrCrud.sort("orderNum"); + //绾ц仈淇濆瓨 + CascadeAddHandle() { + let CascadeString = ""; + CascadeString = this.selectRowArr.id + (this.selectRowArr.name); + this.$set(this.attrRow, 'parentCode', CascadeString) + this.CascadeVisible = false; + }, + //绾ц仈灞炴�ф竻闄� + casRemove() { + this.selectRow = "" + }, + // 绾ц仈灞炴�ц鍗曢�� + CascaderowClick(row) { + this.selectRow = row.$index; + this.selectRowArr=row }, //琛ㄦ牸鍗曢�� selectHandle(selection, row) { this.attrOid = row.oid; this.attrRow = row; + console.log(row) }, //琛ㄦ牸閫夋嫨 selectionChange(list) { @@ -1416,29 +1440,20 @@ this.$message.success('淇濆瓨鎴愬姛') }) }, - //绾ц仈淇濆瓨 - CascadeAddHandle() { - let CascadeString = ""; - CascadeString = this.attrRow.id + (this.attrRow.name); - this.$set(this.attrRow, 'parentCode', CascadeString) - this.CascadeVisible = false; - }, - //绾ц仈灞炴�ф竻闄� - casRemove() { - this.selectRow = "" - }, - // 绾ц仈灞炴�ц鍗曢�� - CascaderowClick(row) { - this.selectRow = row.$index - }, + //琛ㄦ牸琛岀紪杈� handleCellClicks(row, column) { this.editingRows = row; this.editShows = column.property; this.rowOid = row.oid; + console.log(row,column) + if(column.property == 'codeDateFormat' ){ + + } }, saveRows() { this.editingRows = null; + console.log('1321') }, // 鏋氫妇娉ㄥ叆娣诲姞涓�琛岀┖鏁版嵁 addRow() { @@ -1520,7 +1535,7 @@ "灞傜骇璁剧疆": this.injectOption.injectNum, "鏄惁鍙慨鏀�": this.injectOption.change } - console.log(this.injectOption) + console.log(this.injectOption) this.$set(this.attrRow, 'classifyInvokeLevel', data); this.injectVisible = false }, @@ -1536,35 +1551,13 @@ this.injectVisible = false }, //灞炴�фā鏉胯〃鏍煎崟鍏冩牸鐐瑰嚮浜嬩欢 - handleRowClick(row, column, cell, event) { - //鍒ゆ柇鐐瑰嚮涓嶆槸鎿嶄綔鏍忔墠鍙墽琛� - if (column.property != "menu") { - // 褰撳墠琛屽彉涓哄彲缂栬緫鐘舵�� - this.rowList = row - row.$cellEdit = true - // 姣忎竴涓崟鍏冩牸鍔犱笂cell涓簍rue鎵嶆槸缂栬緫鐘舵�� - //鎷垮埌姣忎釜columnKey锛岀偣鍑绘椂璁剧疆涓簍rue锛屽氨瀹炵幇鍗曞厓鏍肩紪杈戠姸鎬佷簡 - this.rowCellList = this.findObject(this.option.column, column.columnKey) - this.rowCellList.cell = true - if (this.List.indexOf(column.columnKey) == -1) { - this.List.push(column.columnKey) - } - // if(this.List.length >= 2){ - // const cellName=this.List[0] - // - // } - } - }, //琛ㄦ牸鎿嶄綔鏍忓垹闄� CrudRowDel(row) { this.ProData.splice(row.$index, 1) }, //琛ㄦ牸鍒犻櫎 CrudRemove() { - this.attrSelectList.forEach((item)=>{ - this.ProData.splice(item.$index, 1) - }) - + this.ProData.splice(this.attrRow.$index, 1) }, //琛ㄦ牸閲嶇疆 reset() { diff --git a/Source/UBCS-WEB/src/components/Tree/classifyTreeform.vue b/Source/UBCS-WEB/src/components/Tree/classifyTreeform.vue index a5dc3e3..593fc18 100644 --- a/Source/UBCS-WEB/src/components/Tree/classifyTreeform.vue +++ b/Source/UBCS-WEB/src/components/Tree/classifyTreeform.vue @@ -1,13 +1,14 @@ <template> <div> - <avue-form v-model="loneTreeNewForm" :option="option" @submit="submit" v-if="flag == 'renonly'"> + <avue-form v-model="loneTreeNewForm" :option="option" v-if="flag == 'renonly'"> </avue-form> <avue-form v-model="loneTreeNewForm" :option="options" @submit="submits" v-else-if="flag == 'edit'"> </avue-form> <div> -<!-- 涓恒�愮紪鐮佽鍒欍�戦�夊彇鍊�--> - <el-dialog :visible.sync="MasterdialogVisible" title="涓恒�愮紪鐮佽鍒欍�戦�夊彇鍊�" append-to-body> - <avue-crud :data="masterData" :option="masterOption" @select="masterSelect"></avue-crud> + +<!-- 瀛樺偍涓氬姟绫诲瀷--> + <el-dialog :visible.sync="BtmdialogVisible" title="涓恒�愬瓨鍌ㄤ笟鍔$被鍨嬨�戦�夊彇鍊�" append-to-body> + <avue-crud :data="BtmData" :option="btmOption" @select="btmSelect"></avue-crud> <div style="padding-top: 10px;display: flex; justify-content: flex-end" > <el-button type="primary" size="small" @click="MasterHandlerClick">纭畾</el-button> <el-button size="small" @click="MasterdialogVisible=false">鍙栨秷</el-button> @@ -15,7 +16,7 @@ </el-dialog> <!-- 鍏抽敭灞炴�ф煡璇㈣鍒�--> <el-dialog :visible.sync="KeydialogVisible" title="涓恒�愬叧閿睘鎬ф煡璇㈣鍒欍�戦�夊彇鍊�" append-to-body> - <avue-crud :data="KeyData" :option="masterOption" @select="masterSelect"></avue-crud> + <avue-crud :data="KeyData" :option="masterOption" @select="KeySelect"></avue-crud> <div style="padding-top: 10px;display: flex; justify-content: flex-end" > <el-button type="primary" size="small" @click="KeyHandlerClick">纭畾</el-button> <el-button size="small" @click="KeydialogVisible=false">鍙栨秷</el-button> @@ -23,7 +24,7 @@ </el-dialog> <!-- 鐩镐技椤规煡璇㈣鍒�--> <el-dialog :visible.sync="SimidialogVisible" title="涓恒�愮浉浼奸」鏌ヨ瑙勫垯銆戦�夊彇鍊�" append-to-body> - <avue-crud :data="simData" :option="masterOption" @select="masterSelect"></avue-crud> + <avue-crud :data="simData" :option="masterOption" @select="simSelect"></avue-crud> <div style="padding-top: 10px;display: flex; justify-content: flex-end" > <el-button type="primary" size="small" @click="simHandlerClick">纭畾</el-button> <el-button size="small" @click="SimidialogVisible=false">鍙栨秷</el-button> @@ -34,20 +35,49 @@ </template> <script> -import {defaultReferDataGrid} from '@/api/MasterData/master' +import {defaultReferDataGrid,referDataGrid} from '@/api/MasterData/master' import {TreeEditSave} from '@/api/template/templateAttr' export default { name: "classifyTreeform.vue", - props: ['loneTreeNewForm','flag'], + props: ['loneTreeNewForm','flag','Editclose'], data() { return { - name:"", - oid:"", + masterName:"", + masterOid:"", + KeyName:"", + KeyOid:"", + simName:"", + simOid:"", + btmName:"", + btmOid:"", masterInput:'', MasterSearchSelects:"", masterData:[], KeyData:[], simData:[], + BtmData:[], + btmOption:{ + addBtn:false, + index:true, + border:true, + selection:true, + menu:false, + height:380, + column:[ + { + label:'涓氬姟绫诲瀷缂栧彿', + prop:'id' + }, + { + label:'涓氬姟绫诲瀷鍚嶇О', + prop:'name' + }, + { + label:'鎻忚堪', + prop:'description' + } + ] + }, masterOption:{ addBtn:false, index:true, @@ -73,6 +103,7 @@ MasterdialogVisible:false, KeydialogVisible:false, SimidialogVisible:false, + BtmdialogVisible:false, form: { name: "鍝堝搱", sex: "鐢�" @@ -172,6 +203,7 @@ label: '瀛樺偍鐨勪笟鍔$被鍨�', prop: 'btmtypename', labelWidth:128, + focus:this.btmFoucus, rules: [{ required: true, message: "瀛樺偍鐨勪笟鍔$被鍨�", @@ -200,20 +232,21 @@ ] }, FormList: {}, - masterSelectList:[] + masterSelectList:[], + KeySelectLIst:[], + simSelectList:[], + btmSelectList:[] } }, created() { }, methods: { submits(form,done){ - console.log(this.loneTreeNewForm) TreeEditSave(this.loneTreeNewForm).then(res=>{ this.$message.success('淇敼鎴愬姛'); - }).catch(res=>{ - this.$message.error(res) + this.Editclose() + done() }) - done() }, error(err) { this.$message.success('璇锋煡鐪嬫帶鍒跺彴'); @@ -233,17 +266,17 @@ }else { this.MasterdialogVisible=false; this.masterSelectList=[] - this.loneTreeNewForm.codeRuleOidName=this.name; - this.loneTreeNewForm.codeRuleOid=this.oid; - console.log(this.masterSelectList) + this.$set(this.loneTreeNewForm,'coderuleoidName',this.masterName) + this.$set(this.loneTreeNewForm,'coderuleOid',this.masterOid) + this.$emit('MasterHandler',this.loneTreeNewForm) + console.log(this.loneTreeNewForm) } }, //缂栫爜澶氶�� masterSelect(row){ - console.log(row) this.masterSelectList=row; - this.name=row[0].name; - this.oid=row[0].oid; + this.masterName=row[0].name; + this.masterOid=row[0].oid; console.log('oid',this.oid) }, //缂栫爜鎺ュ彛 @@ -253,10 +286,7 @@ isMuti:'false', 'conditionMap["lcstatus"]':'Released' }).then(res=>{ - console.log('---',res) this.masterData=res.data.records; - console.log('masterData',this.masterData) - }) }, // 鍏抽敭灞炴�уけ鐒� @@ -266,31 +296,86 @@ }, //鍏抽敭灞炴�х‘瀹� KeyHandlerClick(){ - if(this.masterSelectList.length>1){ + if(this.KeySelectLIst.length>1){ this.$message.warning('鍙兘閫夋嫨涓�鏉℃暟鎹�') - }else if(this.masterSelectList.length<=0){ + }else if(this.KeySelectLIst.length<=0){ this.$message.warning('璇烽�夋嫨涓�鏉℃暟鎹�') }else { - + this.KeydialogVisible=false; + this.KeySelectLIst=[] + this.$set(this.loneTreeNewForm,'codeResembleRuleOidName',this.simName) + this.$set(this.loneTreeNewForm,'codeResembleRuleOid',this.simOid) + this.$emit('MasterHandler',this.loneTreeNewForm) } }, + //鍏抽敭灞炴�ф帴鍙� KeydefaultRend(){ defaultReferDataGrid({ referType:'codekeyattrrepeat', isMuti:'false', 'conditionMap["lcstatus"]':'Enabled' }).then(res=>{ - this.keyData=res.data.records; - console.log('key',this.keyData) + this.KeyData=res.data.records; }) + }, + // 鍏抽敭澶氶�� + KeySelect(row){ + this.KeySelectLIst=row; + this.KeyName=row[0].name; + this.KeyOid=row[0].oid; }, // 鐩镐技椤瑰け鐒� simFouce(){ this.SimidialogVisible=true; + this.simdefaultRend() }, //鐩镐技椤圭‘瀹� simHandlerClick(){ - + if(this.simSelectList.length>1){ + this.$message.warning('鍙兘閫夋嫨涓�鏉℃暟鎹�') + }else if(this.simSelectList.length<=0){ + this.$message.warning('璇烽�夋嫨涓�鏉℃暟鎹�') + }else { + this.SimidialogVisible=false; + this.simSelectList=[] + this.$set(this.loneTreeNewForm,'codeResembleRuleOidName',this.simName) + this.$set(this.loneTreeNewForm,'codeResembleRuleOid',this.simOid) + this.$emit('MasterHandler',this.loneTreeNewForm) + } + }, + // 鐩镐技椤瑰閫� + simSelect(row){ + this.simSelectList=row; + this.simName=row[0].name; + this.simOid=row[0].oid; + console.log('oid',this.oid) + }, + //鐩镐技椤归」鎺ュ彛 + simdefaultRend(){ + defaultReferDataGrid({ + referType:'coderesemblerule', + isMuti:'false', + 'conditionMap["lcstatus"]':'Enabled' + }).then(res=>{ + this.simData=res.data.records; + }) + }, + //涓氬姟绫诲瀷澶辩劍 + btmFoucus(){ + this.BtmdialogVisible=true; + this.btmdefaultRend() + }, + // 涓氬姟绫诲瀷澶氶�� + btmSelect(row){ + this.btmSelectList=row; + this.btmName=row[0].name; + this.btmOid=row[0].oid; + }, + //涓氬姟绫诲瀷鎺ュ彛 + btmdefaultRend(){ + referDataGrid({valueField:'id',isMuti:'false'}).then(res=>{ + console.log(res) + }) } } } @@ -299,6 +384,3 @@ <style scoped> </style> - -<!--uiDataController/defaultReferDataGrid?referBo=coderule&isMuti=false&conditionMap%5B%22lcstatus%22%5D=Released--> -<!--uiDataController/defaultReferDataGrid?conditionMap%5B%22lcstatus%22%5D=Released&referBo=coderule&isMuti=false&_=1687831291212--> diff --git a/Source/UBCS-WEB/src/components/Tree/classifyTrees.vue b/Source/UBCS-WEB/src/components/Tree/classifyTrees.vue index 4741278..4afd457 100644 --- a/Source/UBCS-WEB/src/components/Tree/classifyTrees.vue +++ b/Source/UBCS-WEB/src/components/Tree/classifyTrees.vue @@ -29,9 +29,6 @@ <el-form-item label="鎻忚堪锛�" label-width="150px"> <el-input v-model="TreeAddform.description" autocomplete="off" style="width: 585px"></el-input> </el-form-item> - <el-form-item v-show="this.TreeFlag==false" label="瀛樺偍鐨勪笟鍔$被鍨嬶細" label-width="150px"> - <el-input v-model="TreeAddform.btmtypename" autocomplete="off" style="width: 585px"></el-input> - </el-form-item> <el-form-item label="缂栫爜瑙勫垯锛�" label-width="150px"> <el-input v-model="TreeAddform.coderuleoidName" autocomplete="off" style="width: 585px"></el-input> </el-form-item> @@ -51,7 +48,7 @@ </el-dialog> <!-- 淇敼瀵硅瘽妗�--> <el-dialog :visible.sync="TreeEditFormVisible" append-to-body title="淇敼鍒嗙被"> - <classifyTreeform ref="childForm" :loneTreeNewForm="TreeList" :nodeList="nodeList" :flag="'edit'"></classifyTreeform> + <classifyTreeform ref="childForm" :loneTreeNewForm="TreeList" :nodeList="nodeList" :flag="'edit'" @MasterHandler="MasterHandler" :Editclose=" ()=>{TreeEditFormVisible=false}"></classifyTreeform> </el-dialog> <avue-tree ref="tree" v-model="CloneTreeAvueform" v-loading="loading" :data="CloneTreedata" :defaultExpandAll="false" :option="Treeoption" @@ -84,20 +81,6 @@ <el-button plain size="small" type="primary" @click="Enable">鍚敤</el-button> <el-button plain size="small" type="primary" @click="Deactivate">鍋滅敤</el-button> <el-button plain size="small" type="primary" @click="CloneBtn">浠庡叾瀹冩ā鏉垮厠闅�</el-button> - <!-- <div style="display: inline-block"> - <el-select v-model="searchTemplate.searchCondition" placeholder="璇烽�夋嫨" class="search-condition"> - <el-option - v-for="item in searchTemplateOptions" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - <el-input v-model="searchTemplate.findText" placeholder="璇疯緭鍏ュ叧閿瓧鎸夊洖杞︽煡璇�" - size="small" - @keyup.enter.native="EnterFind"> - </el-input> - </div> --> <!-- 鏌ヨ瀵硅瘽妗�--> <el-dialog :visible.sync="FindFormVisible" append-to-body title="楂樼骇鏌ヨ"> <div> @@ -187,10 +170,6 @@ </el-container> </template> <script> -//杩欓噷澹版槑涓�浜涜彍鍗曠粍浠剁敤娉曪細棣栧厛甯冨眬鍒嗕负宸︿晶鑿滃崟鍙充晶琛ㄦ牸锛屽彲鑳戒細鏈夊彸渚ab鏍忓姞琛ㄥ崟鐨勬儏鍐点�傛墍浠ュ彟澶栧紩鍏ヤ簡涓�涓彸渚ц〃鍗曠殑缁勪欢"classifyTreeform"銆� -//棣栧厛鐖剁粍浠惰皟鐢ㄥ瓙缁勪欢鑿滃崟锛岄�氳繃provide浼犻�掑弬鏁般�傛湁Treeoption宸︿晶鏍戞柊澧炶〃鍗曢」 Treedata宸︿晶鏍戣妭鐐归厤缃」 crudTreeOption鍙充晶琛ㄦ牸閰嶇疆椤� crudTreeData鍙充晶琛ㄦ牸鏄剧ず鍐呭 -//鍏朵腑琛ㄦ牸鐨勯厤缃」鐩存帴鐖朵紶瀛愪紶閫掕繃鏉ュ氨琛岋紝鐩存帴:option=浼犻�掔殑鍙傛暟鍚嶏紝閲岄潰鏁版嵁鏄剧ず鐨勫唴瀹瑰洜涓烘槸鍜屽乏渚ц仈鍔ㄧ殑锛屾墍浠ラ噸鏂颁竴涓狥ormlist锛岄�氳繃鐐瑰嚮鏍戣妭鐐逛笅鏍囨潵鍔ㄦ�佹覆鏌撳彸渚ц〃鏍硷紝涓嬮潰鏂规硶閮芥湁鍏蜂綋娉ㄩ噴 -//鐒跺悗鍐嶈鍙充晶鐨勮〃鍗曪紝涓撻棬瀹氫箟浜嗕竴涓粍浠讹紝閫氳繃鐖朵紶瀛愬啀鎶婅〃鍗曟暟鎹甌reeList浼犻�掕繃鍘伙紝浼犻�掑墠鍦�10deCLi1ck鏂规硶閲岄潰渚夸簡澶勭悊涔熸槸涓�涓仈鍔ㄧ殑鏁堟灉锛岃〃鍗曠殑閰嶇疆椤瑰湪鍝釜瀛愮粍浠舵垨鑰呯埗缁勪欢鍐欓兘鍙互銆� import { getAtrrList, TreeSave, @@ -217,45 +196,6 @@ inject: [, "crudTreeData"], data() { return { - // //琛ㄦ牸option閰嶇疆椤� - // crudTreeOption: { - // index: true, - // border: true, - // height:180, - // selection:true, - // addBtn:this.addFlag, - // column: [ - // { - // label: "妯℃澘缂栧彿", - // prop: "id" - // }, - // { - // label:"妯℃澘鍚嶇О", - // prop:"name" - // }, - // { - // label: "妯℃澘鎻忚堪", - // prop:"description" - // }, - // { - // label:"鐗堟湰鍙�", - // prop:"revisionSeq" - // }, - // { - // label:"鐘舵��", - // prop:"lcStatusText" - // } - // ] - // }, - // searchTemplateOptions: [ - // { - // value: 'id', - // label: '妯℃澘缂栧彿' - // }, { - // value: 'name', - // label: '妯℃澘鍚嶇О' - // } - // ], addFlag:false, // 琛ㄦ牸褰撳墠琛宨d crudOid:"", @@ -268,7 +208,7 @@ searchCondition: 'id', findText: "", }, - + //楂樼骇鏌ヨ瀵硅瘽妗� FindFormVisible: false, //鍏嬮殕妯℃澘瀵硅瘽妗� @@ -494,6 +434,10 @@ } }, methods: { + MasterHandler(val){ + console.log('鐖朵翰',val) + this.TreeList=val + }, //琛屽崟閫変簨浠� selectHandle(selection,row){ this.crudOid=row.oid; diff --git a/Source/UBCS-WEB/src/components/template/SetPersonnel.vue b/Source/UBCS-WEB/src/components/template/SetPersonnel.vue index 60d037f..22644e7 100644 --- a/Source/UBCS-WEB/src/components/template/SetPersonnel.vue +++ b/Source/UBCS-WEB/src/components/template/SetPersonnel.vue @@ -135,7 +135,7 @@ return this.initFrom.findIndex(i => i.taskId === arr1) }, async apiInit() { - const response = await personnelInit({ type: this.parameter[this.parameterKeys.type], templateId: this.parameter[this.parameterKeys.code],ids:this.parameter.ids, codeClassifyOid:this.parameter.codeClassifyOid}) + const response = await personnelInit({ type: this.parameter[this.parameterKeys.type], templateId: this.parameter[this.parameterKeys.code]}) if (response.status === 200) { console.log(response) this.initFrom = response.data.data.user diff --git a/Source/UBCS-WEB/src/views/code/code.vue b/Source/UBCS-WEB/src/views/code/code.vue index ecb6eac..b8f60a2 100644 --- a/Source/UBCS-WEB/src/views/code/code.vue +++ b/Source/UBCS-WEB/src/views/code/code.vue @@ -2648,12 +2648,12 @@ // console.log(this.form); }, // 绗竴娆¤姹傜殑鏋氫妇鏁版嵁鏀剧紦瀛� - getLocalStorageEnum(key){ - let enumCach = JSON.parse(localStorage.getItem(key)); + getLocalStorageEnum(enumKey){ + let enumCach = JSON.parse(localStorage.getItem(enumKey)); if(enumCach == null) { - getDictionary({code: key}).then(res=>{ + getDictionary({code: enumKey}).then(res=>{ enumCach = res.data.data; - localStorage.setItem(key,JSON.stringify(res.data.data)); + localStorage.setItem(enumKey,JSON.stringify(res.data.data)); }) } return enumCach; @@ -2697,7 +2697,7 @@ loadCodeGetValueType(){ this.enumParam.codeGetValueType = this.getLocalStorageEnum("codeGetValueType"); }, - + } }; diff --git a/Source/UBCS/ubcs-ops/ubcs-report/src/main/java/com/vci/ubcs/report/config/BladeReportConfiguration.java b/Source/UBCS/ubcs-ops/ubcs-report/src/main/java/com/vci/ubcs/report/config/BladeReportConfiguration.java index cd043c2..d2d864f 100644 --- a/Source/UBCS/ubcs-ops/ubcs-report/src/main/java/com/vci/ubcs/report/config/BladeReportConfiguration.java +++ b/Source/UBCS/ubcs-ops/ubcs-report/src/main/java/com/vci/ubcs/report/config/BladeReportConfiguration.java @@ -16,7 +16,7 @@ */ package com.vci.ubcs.report.config; -import com.vci.ubcs.core.report.datasource.ReportDataSource; +import org.springblade.core.report.datasource.ReportDataSource; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/LifeCycleController.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/LifeCycleController.java index 2360c4b..7410c7a 100644 --- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/LifeCycleController.java +++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/LifeCycleController.java @@ -8,7 +8,6 @@ import com.vci.ubcs.omd.vo.BtmTypeVO; import com.vci.ubcs.omd.vo.LifeCycleVO; import com.vci.ubcs.omd.wrapper.LifeCycleRuleWrapper; -import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject; import com.vci.ubcs.starter.web.pagemodel.BladeQueryObject; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -65,26 +64,48 @@ } /** - * 鏂板鎴栦慨鏀� + * 鏂板 */ @PostMapping("/submit") @ApiOperationSupport(order = 3) - @ApiOperation(value = "鏂板鎴栦慨鏀�",notes = "浼犲叆鐢熷懡鍛ㄦ湡椤甸潰瀵硅薄") - public R<LifeCycleVO> submit(@RequestBody LifeCycleDTO lifeCycleDTO){ + @ApiOperation(value = "鏂板",notes = "浼犲叆鐢熷懡鍛ㄦ湡椤甸潰瀵硅薄") + public R<LifeCycleVO> addSave(@RequestBody LifeCycleDTO lifeCycleDTO){ return R.data(lifeCycleService.addSave(lifeCycleDTO)); } /** - * 鏂板鎴栦慨鏀� + * 淇敼 + */ + @PutMapping("/edit-save") + @ApiOperationSupport(order = 3) + @ApiOperation(value = "淇敼",notes = "浼犲叆鐢熷懡鍛ㄦ湡椤甸潰瀵硅薄") + public R<LifeCycleVO> editSave(@RequestBody LifeCycleDTO lifeCycleDTO){ + return R.data(lifeCycleService.editSave(lifeCycleDTO)); + } + + + + /** + * 鏂板 */ @PostMapping("/batch-submit") @ApiOperationSupport(order = 3) - @ApiOperation(value = "鏂板鎴栦慨鏀�",notes = "浼犲叆鐘舵�佹睜椤甸潰瀵硅薄") - public R<List<LifeCycleVO>> batchSubmit(@RequestBody List<LifeCycleDTO> lifeCycleDTOs){ + @ApiOperation(value = "鏂板鎴栦慨鏀�",notes = "浼犲叆鐢熷懡鍛ㄦ湡椤甸潰瀵硅薄") + public R<List<LifeCycleVO>> batchAddSave(@RequestBody List<LifeCycleDTO> lifeCycleDTOs){ return R.data(lifeCycleService.batchAddSave(lifeCycleDTOs)); } /** + * 淇敼 + */ + @PostMapping("/batch-edit-save") + @ApiOperationSupport(order = 3) + @ApiOperation(value = "淇敼",notes = "浼犲叆鐢熷懡鍛ㄦ湡椤甸潰瀵硅薄") + public R<List<LifeCycleVO>> batchEditSave(@RequestBody List<LifeCycleDTO> lifeCycleDTOs){ + return R.data(lifeCycleService.batchEditSave(lifeCycleDTOs)); + } + + /** * 鍒犻櫎 */ @PostMapping("/remove") diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IBtmTypeService.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IBtmTypeService.java index b8a6aff..bdf2f81 100644 --- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IBtmTypeService.java +++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IBtmTypeService.java @@ -7,6 +7,7 @@ import com.vci.ubcs.omd.vo.BtmTypeVO; import com.vci.ubcs.omd.vo.BtmTypeAttributeVO; import com.vci.ubcs.omd.vo.LinkTypeVO; +import io.swagger.models.auth.In; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseService; import org.springblade.core.tool.api.R; @@ -253,15 +254,29 @@ /** * 鑾峰彇寮曠敤鏌愪釜鐢熷懡鍛ㄦ湡鐨勪笟鍔$被鍨� - * @param lifeOid 鐢熷懡鍛ㄦ湡鐨勪富閿� + * @param lifeId 鐢熷懡鍛ㄦ湡鐨勭紪鍙� * @return 涓氬姟绫诲瀷鏄剧ず瀵硅薄 */ List<BtmTypeVO> selectByLifeId(String lifeId); /** + * 鑾峰彇寮曠敤鏌愪簺鐢熷懡鍛ㄦ湡鐨勪笟鍔$被鍨� + * @param lifeIds 鐢熷懡鍛ㄦ湡鐨勭紪鍙烽泦鍚� + * @return 涓氬姟绫诲瀷鏄剧ず瀵硅薄 + */ + List<BtmTypeVO> selectByLifeIds(Collection<String> lifeIds); + + /** * 缁熻寮曠敤鏌愪釜鐢熷懡鍛ㄦ湡鐨勪笟鍔$被鍨� - * @param lifeOid 鐢熷懡鍛ㄦ湡鐨勪富閿� + * @param lifeId 鐢熷懡鍛ㄦ湡鐨勭紪鍙� * @return 涓暟 */ Integer countByLifeId(String lifeId); + + /** + * 缁熻寮曠敤鏌愪簺鐢熷懡鍛ㄦ湡鐨勪笟鍔$被鍨� + * @param lifeIds 鐢熷懡鍛ㄦ湡鐨勭紪鍙烽泦鍚� + * @return 涓暟 + */ + Integer countByLifeIds(Collection<String> lifeIds); } diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/ILifeCycleService.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/ILifeCycleService.java index 525cfcd..982c852 100644 --- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/ILifeCycleService.java +++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/ILifeCycleService.java @@ -9,6 +9,7 @@ import com.vci.ubcs.starter.web.pagemodel.PageHelper; import org.springblade.core.mp.support.Query; +import java.util.Collection; import java.util.List; import java.util.Map; @@ -39,7 +40,21 @@ * @param lifeCycleDTOs 鏁版嵁浼犺緭瀵硅薄 * @return 娣诲姞鍚庣殑鏄剧ず瀵硅薄 */ - List<LifeCycleVO> batchAddSave(List<LifeCycleDTO> lifeCycleDTOs); + List<LifeCycleVO> batchAddSave(Collection<LifeCycleDTO> lifeCycleDTOs); + + /** + * 淇敼淇濆瓨 + * @param lifeCycleDTO 鏁版嵁浼犺緭瀵硅薄 + * @return + */ + LifeCycleVO editSave(LifeCycleDTO lifeCycleDTO); + + /** + * 鎵归噺淇敼淇濆瓨 + * @param lifeCycleDTOs + * @return + */ + List<LifeCycleVO> batchEditSave(Collection<LifeCycleDTO> lifeCycleDTOs); /** * 鍒犻櫎鐢熷懡鍛ㄦ湡 diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java index af7f220..a75265e 100644 --- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java @@ -887,6 +887,30 @@ } /** + * 鑾峰彇寮曠敤鏌愪簺鐢熷懡鍛ㄦ湡鐨勪笟鍔$被鍨� + * + * @param lifeIds 鐢熷懡鍛ㄦ湡鐨勭紪鍙烽泦鍚� + * @return 涓氬姟绫诲瀷鏄剧ず瀵硅薄 + */ + @Override + public List<BtmTypeVO> selectByLifeIds(Collection<String> lifeIds) { + if(CollectionUtils.isEmpty(lifeIds)){ + return new ArrayList<>(); + } + List<BtmType> btmTypeList = new ArrayList<>(); + VciBaseUtil.switchCollectionForOracleIn(lifeIds).stream().forEach(ids->{ + LambdaQueryWrapper<BtmType> query = new LambdaQueryWrapper<BtmType>(); + ids.stream().forEach(id->{ + query.eq(BtmType::getLifeCycleId,id); + query.or(); + }); + query.eq(BtmType::getLifeCycleId,"-1"); + btmTypeList.addAll(baseMapper.selectList(query)); + }); + return BtmTypeWrapper.build().listEntityVO(btmTypeList); + } + + /** * 缁熻寮曠敤鏌愪釜鐢熷懡鍛ㄦ湡鐨勪笟鍔$被鍨� * * @param lifeId 鐢熷懡鍛ㄦ湡鐨勭紪鍙� @@ -901,4 +925,28 @@ query.eq(BtmType::getLifeCycleId,lifeId); return baseMapper.selectCount(query).intValue(); } + + /** + * 缁熻寮曠敤鏌愪簺鐢熷懡鍛ㄦ湡鐨勪笟鍔$被鍨� + * + * @param lifeIds 鐢熷懡鍛ㄦ湡鐨勭紪鍙烽泦鍚� + * @return 涓暟 + */ + @Override + public Integer countByLifeIds(Collection<String> lifeIds) { + if(CollectionUtils.isEmpty(lifeIds)){ + return 0; + } + final Integer[] total = {0}; + VciBaseUtil.switchCollectionForOracleIn(lifeIds).stream().forEach(ids->{ + LambdaQueryWrapper<BtmType> query = new LambdaQueryWrapper<BtmType>(); + ids.stream().forEach(id->{ + query.eq(BtmType::getLifeCycleId,id); + query.or(); + }); + query.eq(BtmType::getLifeCycleId,"-1"); + total[0] += baseMapper.selectCount(query).intValue(); + }); + return total[0]; + } } diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/LifeCycleServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/LifeCycleServiceImpl.java index 62db19e..bd1f599 100644 --- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/LifeCycleServiceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/LifeCycleServiceImpl.java @@ -268,7 +268,7 @@ */ @Override @Transactional - public List<LifeCycleVO> batchAddSave(List<LifeCycleDTO> lifeCycleDTOs) { + public List<LifeCycleVO> batchAddSave(Collection<LifeCycleDTO> lifeCycleDTOs) { VciBaseUtil.alertNotNull(lifeCycleDTOs,"鐢熷懡鍛ㄦ湡鐨勪俊鎭�"); //鍏堥泦浣撴牎楠屼竴涓� if(lifeCycleDTOs.stream().anyMatch(s->!StringUtils.hasLength(s.getId()) || !StringUtils.hasLength(s.getName()) @@ -276,7 +276,7 @@ throw new VciBaseException("鐢熷懡鍛ㄦ湡鐨勭紪鍙凤紝鍚嶇О锛岃捣濮嬬姸鎬侊紝鍖呭惈鐨勮妭鐐逛笉鑳戒负绌�"); } //缁熶竴鏍¢獙閲嶅 - Map<String, List<LifeCycleDTO>> dtoMap = lifeCycleDTOs.stream().collect(Collectors.groupingBy(LifeCycleDTO::getId)); + Map<String, List<LifeCycleDTO>> dtoMap = lifeCycleDTOs.stream().collect(Collectors.groupingBy(s->s.getId().toLowerCase(Locale.ROOT))); dtoMap.forEach((id,dtos)->{ if(dtos.size()>1){ throw new VciBaseException("缂栧彿涓恒��" + id + "銆戠殑鐢熷懡鍛ㄦ湡閲嶅"); @@ -286,7 +286,7 @@ ids->{ QueryWrapper wrapper = new QueryWrapper(LifeCycleRule.class); ids.stream().forEach(id->{ - wrapper.eq("lower(id)",id.toLowerCase(Locale.ROOT)); + wrapper.eq("lower(id)",id); wrapper.or(); }); wrapper.eq("1","2"); @@ -304,6 +304,156 @@ } /** + * 淇敼淇濆瓨 + * + * @param lifeCycleDTO 鏁版嵁浼犺緭瀵硅薄 + * @return + */ + @Override + public LifeCycleVO editSave(LifeCycleDTO lifeCycleDTO) { + VciBaseUtil.alertNotNull(lifeCycleDTO,"鐢熷懡鍛ㄦ湡淇℃伅",lifeCycleDTO.getId(),"鐢熷懡鍛ㄦ湡鐨勭紪鍙�",lifeCycleDTO.getName(),"鐢熷懡鍛ㄦ湡鍚嶇О" + ,lifeCycleDTO.getNodes(),"鐢熷懡鍛ㄦ湡鐨勮妭鐐�",lifeCycleDTO.getStartStatus(),"璧峰鐘舵��", + lifeCycleDTO.getOid(),"涓婚敭"); + LifeCycleRule rule = selectByOid(lifeCycleDTO.getOid()); + //鏌ヨ閲嶅 + QueryWrapper wrapper = new QueryWrapper(LifeCycleRule.class); + if(rule.getId().equals(lifeCycleDTO.getId())){ + throw new VciBaseException("鐢熷懡鍛ㄦ湡缂栧彿涓嶈兘淇敼"); + } + wrapper.eq("lower(id)",lifeCycleDTO.getId().toLowerCase(Locale.ROOT)); + wrapper.ne("oid",lifeCycleDTO.getOid()); + if(baseMapper.selectCount(wrapper)>0){ + throw new VciBaseException("鐢熷懡鍛ㄦ湡鐨勭紪鍙蜂笉鑳介噸澶�"); + } + editLifeCycle(lifeCycleDTO,rule); + return LifeCycleRuleWrapper.build().entityVO(getById(rule.getOid())); + } + + /** + * 淇敼鐢熷懡鍛ㄦ湡 + * @param lifeCycleDTO + * @param life + */ + private void editLifeCycle(LifeCycleDTO lifeCycleDTO,LifeCycleRule life){ + if(!lifeCycleDTO.getId().matches(RegExpConstant.LETTER)){ + throw new VciBaseException("鐢熷懡鍛ㄦ湡鐨勭紪鍙峰彧鑳芥槸瀛楁瘝"); + } + BeanUtil.convert(lifeCycleDTO,life); + String creator = AuthUtil.getUserAccount(); + Date now = new Date(); + life.setLastModifier(creator); + life.setLastModifyTime(now); + life.setTs(now); + + //鍒犻櫎鐜板湪鍏ㄩ儴鐨勬暟鎹紝鐒跺悗閲嶆柊娣诲姞= + List<LifeCycleNode> nodeList = selectNodeByLifeOid(life.getOid()); + List<LifeCycleEdge> edges = selectEdgeByLifeOid(life.getOid()); + List<LifeCycleLineEvent> eventList = selectEventByEdgeOids(Optional.ofNullable(edges).orElseGet(ArrayList::new).stream().map(LifeCycleEdge::getOid).collect(Collectors.toList())); + if(!CollectionUtils.isEmpty(nodeList)){ + nodeMapper.deleteBatchIds(nodeList.stream().map(LifeCycleNode::getOid).collect(Collectors.toList())); + } + if(!CollectionUtils.isEmpty(edges)){ + edgeMapper.deleteBatchIds(edges.stream().map(LifeCycleEdge::getOid).collect(Collectors.toList())); + } + if(!CollectionUtils.isEmpty(eventList)){ + lineEventMapper.deleteBatchIds(eventList.stream().map(LifeCycleLineEvent::getOid).collect(Collectors.toList())); + } + + List<String> statusList = new ArrayList<>(); + //澶勭悊鑺傜偣 + if(!CollectionUtils.isEmpty(lifeCycleDTO.getNodes())){ + lifeCycleDTO.getNodes().stream().forEach(nodeDTO->{ + addLifeCycleNode(nodeDTO,life.getOid(),creator,now); + statusList.add(nodeDTO.getId()); + }); + } + if(!statusList.contains(life.getStartStatus())){ + throw new VciBaseException("璧峰鐘舵�佷笉鍦ㄧ敓鍛藉懆鏈熺殑鐢诲竷涓�"); + } + //鍒ゆ柇鎵�鏈夌殑鑺傜偣鍦ㄧ郴缁熼噷閮藉瓨鍦� + List<String> existStatusIdList = statusService.listStatusByIdCollection(statusList).stream().map(StatusVO::getId).collect(Collectors.toList()); + String unExistStatus = statusList.stream().filter(s -> !existStatusIdList.contains(s)).collect(Collectors.joining(",")); + if(StringUtils.hasLength(unExistStatus)){ + throw new VciBaseException(unExistStatus + "杩欎簺鐘舵�佸湪鐘舵�佹睜閲屼笉瀛樺湪锛屼笉鑳芥坊鍔犲埌鐢熷懡鍛ㄦ湡涓�"); + } + //澶勭悊杈圭晫鍜岃繛鎺ョ嚎 + if(!CollectionUtils.isEmpty(lifeCycleDTO.getEdges())){ + lifeCycleDTO.getEdges().stream().forEach(edgeDTO->{ + String edgeOid = addLifeCycleEdge(edgeDTO,statusList,life.getOid(),creator,now); + if(!CollectionUtils.isEmpty(edgeDTO.getEvents())){ + //鏈変簨浠� + edgeDTO.getEvents().stream().forEach(eventDTO->{ + addLifeCycleLineEvent(eventDTO,edgeOid,creator,now); + }); + } + }); + } + baseMapper.updateById(life); + + } + + /** + * 浣跨敤涓婚敭鏌ヨ + * @param oid + * @return + */ + private LifeCycleRule selectByOid(String oid){ + LifeCycleRule rule = null; + try { + rule = getById(oid); + }catch (Throwable e){ + throw new VciBaseException("浣跨敤涓婚敭鑾峰彇瀵硅薄鍑洪敊锛岃繖涓暟鎹彲鑳戒笉瀛樺湪锛屾垨鑰呮暟鎹噸澶嶄簡"); + } + return rule; + } + + /** + * 鎵归噺淇敼淇濆瓨 + * + * @param lifeCycleDTOs + * @return + */ + @Override + public List<LifeCycleVO> batchEditSave(Collection<LifeCycleDTO> lifeCycleDTOs) { + if(CollectionUtils.isEmpty(lifeCycleDTOs)){ + return new ArrayList<>(); + } + if(lifeCycleDTOs.stream().anyMatch(s->!StringUtils.hasLength(s.getId()) || !StringUtils.hasLength(s.getName()) + || CollectionUtils.isEmpty(s.getNodes()) || !StringUtils.hasLength(s.getStartStatus()))){ + throw new VciBaseException("鐢熷懡鍛ㄦ湡鐨勭紪鍙凤紝鍚嶇О锛岃捣濮嬬姸鎬侊紝鍖呭惈鐨勮妭鐐逛笉鑳戒负绌�"); + } + //缁熶竴鏍¢獙閲嶅 + Map<String, List<LifeCycleDTO>> dtoMap = lifeCycleDTOs.stream().collect(Collectors.groupingBy(s->s.getId().toLowerCase(Locale.ROOT))); + dtoMap.forEach((id,dtos)->{ + if(dtos.size()>1){ + throw new VciBaseException("缂栧彿涓恒��" + id + "銆戠殑鐢熷懡鍛ㄦ湡閲嶅"); + } + }); + VciBaseUtil.switchCollectionForOracleIn(dtoMap.keySet()).stream().forEach( + ids->{ + QueryWrapper wrapper = new QueryWrapper(LifeCycleRule.class); + ids.stream().forEach(id->{ + wrapper.eq("lower(id)",id); + wrapper.ne("oid",dtoMap.get(id).get(0).getOid()); + wrapper.or(); + }); + wrapper.eq("1","2"); + if(baseMapper.selectCount(wrapper)>0){ + throw new VciBaseException("鐢熷懡鍛ㄦ湡鐨勭紪鍙蜂笉鑳介噸澶�"); + } + } + ); + List<String> oidList = lifeCycleDTOs.stream().map(LifeCycleDTO::getOid).collect(Collectors.toList()); + List<LifeCycleRule> rules = listByIds(oidList); + if(!CollectionUtils.isEmpty(rules)){ + rules.stream().forEach(life->{ + editLifeCycle(dtoMap.get(life.getId().toLowerCase(Locale.ROOT)).get(0),life); + }); + } + return LifeCycleRuleWrapper.build().listEntityVO(listByIds(oidList)); + } + + /** * 鍒犻櫎鐢熷懡鍛ㄦ湡 * * @param lifeCycleDTO 鏁版嵁浼犺緭瀵硅薄 @@ -312,22 +462,93 @@ @Transactional public void delete(LifeCycleDTO lifeCycleDTO) { VciBaseUtil.alertNotNull(lifeCycleDTO,"鏁版嵁浼犺緭瀵硅薄",lifeCycleDTO.getOid(),"涓婚敭"); - LifeCycleRule rule = null; - try { - rule = getById(lifeCycleDTO.getOid()); - }catch (Throwable e){ - throw new VciBaseException("浣跨敤涓婚敭鑾峰彇瀵硅薄鍑洪敊锛岃繖涓暟鎹彲鑳戒笉瀛樺湪锛屾垨鑰呮暟鎹噸澶嶄簡"); - } + LifeCycleRule rule = selectByOid(lifeCycleDTO.getOid()); //妫�鏌ヨ寮曠敤涓嶈兘鍒犻櫎 - Integer count = btmTypeService.countByLifeId(lifeCycleDTO.getOid()); + Integer count = btmTypeService.countByLifeId(lifeCycleDTO.getId()); if(count !=null && count>0){ throw new VciBaseException("鐢熷懡鍛ㄦ湡琚娇鐢紝涓嶈兘琚垹闄�"); } //鎴戜滑鏌ヨ鍏ㄩ儴node鍜宔dge锛岀劧鍚庝竴璧峰垹闄� + List<LifeCycleNode> nodeList = selectNodeByLifeOid(rule.getOid()); + List<LifeCycleEdge> edges = selectEdgeByLifeOid(rule.getOid()); + List<LifeCycleLineEvent> eventList = selectEventByEdgeOids(Optional.ofNullable(edges).orElseGet(ArrayList::new).stream().map(LifeCycleEdge::getOid).collect(Collectors.toList())); + if(!CollectionUtils.isEmpty(nodeList)){ + nodeMapper.deleteBatchIds(nodeList.stream().map(LifeCycleNode::getOid).collect(Collectors.toList())); + } + if(!CollectionUtils.isEmpty(edges)){ + edgeMapper.deleteBatchIds(edges.stream().map(LifeCycleEdge::getOid).collect(Collectors.toList())); + } + if(!CollectionUtils.isEmpty(eventList)){ + lineEventMapper.deleteBatchIds(eventList.stream().map(LifeCycleLineEvent::getOid).collect(Collectors.toList())); + } + baseMapper.deleteById(rule); + } + /** + * 鏌ヨ閾炬帴绾� + * @param lifeOid + * @return + */ + private List<LifeCycleEdge> selectEdgeByLifeOid(String lifeOid){ + if(!StringUtils.hasLength(lifeOid)){ + return new ArrayList<>(); + } + LambdaQueryWrapper<LifeCycleEdge> query = new LambdaQueryWrapper<LifeCycleEdge>(); + query.eq(LifeCycleEdge::getLifeCycleOid,lifeOid); + return edgeMapper.selectList(query); } + /** + * 鑾峰彇鑺傜偣鐨勪俊鎭� + * @param lifeOids 鐢熷懡鍛ㄦ湡鐨勪富閿泦鍚� + * @return + */ + private List<LifeCycleEdge> selectEdgeByLifeOids(Collection<String> lifeOids){ + if(!CollectionUtils.isEmpty(lifeOids)){ + return new ArrayList<>(); + } + List<LifeCycleEdge> edgeList = new ArrayList<>(); + VciBaseUtil.switchCollectionForOracleIn(lifeOids).stream().forEach(lOids->{ + LambdaQueryWrapper<LifeCycleEdge> query = new LambdaQueryWrapper<LifeCycleEdge>(); + lOids.stream().forEach(lOid->{ + query.eq(LifeCycleEdge::getLifeCycleOid,lOid); + query.or(); + }); + query.eq(LifeCycleEdge::getLifeCycleOid,"-1"); + edgeList.addAll(edgeMapper.selectList(query)); + }); + return edgeList; + } + + /** + * 鏌ヨ閾炬帴绾夸笂鐨勪簨浠� + * @param edgeOids + * @return + */ + private List<LifeCycleLineEvent> selectEventByEdgeOids(Collection<String> edgeOids){ + if(CollectionUtils.isEmpty(edgeOids)){ + return new ArrayList<>(); + } + List<LifeCycleLineEvent> eventList = new ArrayList<>(); + VciBaseUtil.switchCollectionForOracleIn(edgeOids).stream().forEach(edgeOidList->{ + LambdaQueryWrapper<LifeCycleLineEvent> query = new LambdaQueryWrapper<LifeCycleLineEvent>(); + edgeOidList.stream().forEach(edgeOid->{ + query.eq(LifeCycleLineEvent::getPkLifeCycleEdge,edgeOid); + query.or(); + }); + query.eq(LifeCycleLineEvent::getPkLifeCycleEdge,"-1"); + eventList.addAll(lineEventMapper.selectList(query)); + }); + return eventList; + } + + + /** + * 鑾峰彇鑺傜偣鐨勪俊鎭� + * @param lifeOid + * @return + */ private List<LifeCycleNode> selectNodeByLifeOid(String lifeOid){ if(!StringUtils.hasLength(lifeOid)){ return new ArrayList<>(); @@ -338,13 +559,60 @@ } /** + * 鑾峰彇鑺傜偣鐨勪俊鎭� + * @param lifeOids 鐢熷懡鍛ㄦ湡鐨勪富閿泦鍚� + * @return + */ + private List<LifeCycleNode> selectNodeByLifeOids(Collection<String> lifeOids){ + if(!CollectionUtils.isEmpty(lifeOids)){ + return new ArrayList<>(); + } + List<LifeCycleNode> nodeList = new ArrayList<>(); + VciBaseUtil.switchCollectionForOracleIn(lifeOids).stream().forEach(lOids->{ + LambdaQueryWrapper<LifeCycleNode> query = new LambdaQueryWrapper<LifeCycleNode>(); + lOids.stream().forEach(lOid->{ + query.eq(LifeCycleNode::getLifeCycleOid,lOid); + query.or(); + }); + query.eq(LifeCycleNode::getLifeCycleOid,"-1"); + nodeList.addAll(nodeMapper.selectList(query)); + }); + return nodeList; + } + + /** * 鎵归噺鍒犻櫎鐢熷懡鍛ㄦ湡 * * @param lifeCycleDTOs 鏁版嵁浼犺緭瀵硅薄鍒楄〃 */ @Override + @Transactional public void batchDelete(List<LifeCycleDTO> lifeCycleDTOs) { - + VciBaseUtil.alertNotNull(lifeCycleDTOs,"鐢熷懡鍛ㄦ湡鐨勪俊鎭�"); + if(lifeCycleDTOs.stream().anyMatch(s->!StringUtils.hasLength(s.getOid()))){ + throw new VciBaseException("鐢熷懡鍛ㄦ湡鐨勪富閿笉鑳戒负绌�"); + } + List<String> oidList = lifeCycleDTOs.stream().map(LifeCycleDTO::getOid).collect(Collectors.toList()); + List<LifeCycleRule> lifeList = baseMapper.selectBatchIds(oidList); + //鎵归噺鏌ヨ + String usedBtmTypeId = Optional.ofNullable(btmTypeService.selectByLifeIds(lifeList.stream().map(LifeCycleRule::getId).collect(Collectors.toList()))).orElseGet(ArrayList::new).stream().map(BtmTypeVO::getId).collect(Collectors.joining(",")); + if(StringUtils.hasLength(usedBtmTypeId)){ + throw new VciBaseException(usedBtmTypeId + "杩欎簺涓氬姟绫诲瀷寮曠敤浜嗙敓鍛藉懆鏈燂紝涓嶈兘鍒犻櫎"); + } + List<LifeCycleNode> nodeList = selectNodeByLifeOids(oidList); + List<LifeCycleEdge> edgeList = selectEdgeByLifeOids(oidList); + if(!CollectionUtils.isEmpty(nodeList)){ + nodeMapper.deleteBatchIds(nodeList.stream().map(LifeCycleNode::getOid).collect(Collectors.toList())); + } + if(!CollectionUtils.isEmpty(edgeList)){ + List<String> edgeOids = edgeList.stream().map(LifeCycleEdge::getOid).collect(Collectors.toList()); + edgeMapper.deleteBatchIds(edgeOids); + List<LifeCycleLineEvent> eventList = selectEventByEdgeOids(edgeOids); + if(!CollectionUtils.isEmpty(eventList)){ + lineEventMapper.deleteBatchIds(eventList.stream().map(LifeCycleLineEvent::getOid).collect(Collectors.toList())); + } + } + baseMapper.deleteBatchIds(oidList); } /** @@ -355,6 +623,8 @@ */ @Override public List<BtmTypeVO> listUses(LifeCycleDTO lifeCycleDTO) { - return null; + VciBaseUtil.alertNotNull(lifeCycleDTO,"鏁版嵁浼犺緭瀵硅薄",lifeCycleDTO.getOid(),"涓婚敭"); + LifeCycleRule rule = selectByOid(lifeCycleDTO.getOid()); + return btmTypeService.selectByLifeId(rule.getId()); } } -- Gitblit v1.9.3