| @@ -3,3 +3,4 @@ | |||||
| /target/ | /target/ | ||||
| /rms.iml | /rms.iml | ||||
| /app/node_modules/ | /app/node_modules/ | ||||
| /app/.idea/ | |||||
| @@ -166,6 +166,18 @@ | |||||
| :headers='headers' | :headers='headers' | ||||
| hide-default-footer | hide-default-footer | ||||
| > | > | ||||
| <template v-slot:item.isselect='{ item }'> | |||||
| {{item.isselect === 'true' ? '選項':'文字'}} | |||||
| </template> | |||||
| <template v-slot:item.isrequire='{ item }'> | |||||
| {{item.isselect === 'true' ? '是':'否'}} | |||||
| </template> | |||||
| <template v-slot:item.isexport='{ item }'> | |||||
| {{item.isselect === 'true' ? '是':'否'}} | |||||
| </template> | |||||
| <template v-slot:item.issearch='{ item }'> | |||||
| {{item.isselect === 'true' ? '是':'否'}} | |||||
| </template> | |||||
| <template v-slot:item.actions='{ item }'> | <template v-slot:item.actions='{ item }'> | ||||
| <!--修改資產群駔欄位對話--> | <!--修改資產群駔欄位對話--> | ||||
| <v-dialog | <v-dialog | ||||
| @@ -246,7 +258,7 @@ | |||||
| <v-btn | <v-btn | ||||
| color='blue darken-1' | color='blue darken-1' | ||||
| text | text | ||||
| @click='modifyCol(modifyColItem)' | |||||
| @click='modifyCol' | |||||
| > | > | ||||
| 修改 | 修改 | ||||
| </v-btn> | </v-btn> | ||||
| @@ -297,6 +309,7 @@ | |||||
| <v-text-field | <v-text-field | ||||
| v-if="header.text !== '' && header.value !== 'isselect' && isBooleanCol.indexOf(header.value) < 0" | v-if="header.text !== '' && header.value !== 'isselect' && isBooleanCol.indexOf(header.value) < 0" | ||||
| :label='header.text' | :label='header.text' | ||||
| :value="insertColItem[header.value]" | |||||
| hint='必填' | hint='必填' | ||||
| v-on:input='oninput(insertColItem, header.value, $event)' | v-on:input='oninput(insertColItem, header.value, $event)' | ||||
| /> | /> | ||||
| @@ -352,7 +365,7 @@ | |||||
| </v-tabs-items> | </v-tabs-items> | ||||
| <!--新增資產群組欄位選項對話--> | <!--新增資產群組欄位選項對話--> | ||||
| <v-dialog | <v-dialog | ||||
| width="80%" | |||||
| width="40%" | |||||
| v-model='dialogInsertSelectItem' | v-model='dialogInsertSelectItem' | ||||
| @click:outside='closeDialogInsertSelectItem' | @click:outside='closeDialogInsertSelectItem' | ||||
| :retain-focus="false" | :retain-focus="false" | ||||
| @@ -365,22 +378,23 @@ | |||||
| <v-card-text> | <v-card-text> | ||||
| <v-container> | <v-container> | ||||
| <v-row> | <v-row> | ||||
| <v-col cols="3" class="d-flex align-center"> | |||||
| <v-col cols="11" class="d-flex align-center"> | |||||
| <v-text-field outlined rounded hide-details | <v-text-field outlined rounded hide-details | ||||
| v-model="insertSelectItem"/> | v-model="insertSelectItem"/> | ||||
| <v-btn class="ml-2" @click='pushSelectItem'>新增</v-btn> | |||||
| <v-btn class="ml-2" @click='pushInsertSelectItem'>新增</v-btn> | |||||
| </v-col> | </v-col> | ||||
| </v-row> | </v-row> | ||||
| <v-card class="mt-2 elevation-2" | |||||
| style="border: 1px solid grey;min-height: 250px;border-radius: 10px"> | |||||
| <v-card class="mt-2 col-10" | |||||
| style="border: 1px solid grey;min-height: 500px;border-radius: 10px"> | |||||
| <v-chip | <v-chip | ||||
| v-for="(insertSelectItem, index) in insertSelectItems" | v-for="(insertSelectItem, index) in insertSelectItems" | ||||
| :key="index" | :key="index" | ||||
| class="ma-2" | |||||
| class="col-12 my-1" | |||||
| color="secondary" | color="secondary" | ||||
| > | > | ||||
| {{insertSelectItem}} | {{insertSelectItem}} | ||||
| <v-icon small class="ml-4" @click="deleteSelectItem(index)">mdi-close</v-icon> | |||||
| <v-icon small class="ml-4" @click="deleteInsertSelectItem(index)">mdi-close | |||||
| </v-icon> | |||||
| </v-chip> | </v-chip> | ||||
| </v-card> | </v-card> | ||||
| </v-container> | </v-container> | ||||
| @@ -414,27 +428,24 @@ | |||||
| <v-row> | <v-row> | ||||
| <v-col cols="11" class="d-flex align-center"> | <v-col cols="11" class="d-flex align-center"> | ||||
| <v-text-field outlined rounded hide-details | <v-text-field outlined rounded hide-details | ||||
| v-model="insertSelectItem"/> | |||||
| <v-btn class="ml-2" @click='pushSelectItem'>新增</v-btn> | |||||
| v-model="modifySelectItem"/> | |||||
| <v-btn class="ml-2" @click='pushModifySelectItem'>新增</v-btn> | |||||
| </v-col> | </v-col> | ||||
| </v-row> | </v-row> | ||||
| <p class="font-italic mb-0 mt-1">拖曳選項以排序</p> | |||||
| <v-card | <v-card | ||||
| max-width="80%" | |||||
| class="mt-2" | |||||
| class="mt-2 col-10" | |||||
| style="border: 1px solid grey; border-radius: 10px" | style="border: 1px solid grey; border-radius: 10px" | ||||
| > | > | ||||
| <v-card-text> | |||||
| <v-chip-group | |||||
| v-model="selection" | |||||
| column | |||||
| > | |||||
| <draggable @start="dragStart" @end="dragEnd"> | |||||
| <v-chip v-for="(modifySelectItem, i) in modifySelectItems" :key="i" color="secondary" class="col-12" draggable> | |||||
| {{ modifySelectItem }} | |||||
| </v-chip> | |||||
| </draggable> | |||||
| </v-chip-group> | |||||
| </v-card-text> | |||||
| <draggable v-model="modifySelectItems"> | |||||
| <v-chip v-for="(modifySelectItem, index) in modifySelectItems" :key="index" | |||||
| color="secondary" class="col-12 my-1" draggable> | |||||
| {{ modifySelectItem }} | |||||
| <v-icon small class="ml-4" @click="deleteModifySelectItem(index)"> | |||||
| mdi-close | |||||
| </v-icon> | |||||
| </v-chip> | |||||
| </draggable> | |||||
| </v-card> | </v-card> | ||||
| </v-container> | </v-container> | ||||
| </v-card-text> | </v-card-text> | ||||
| @@ -449,28 +460,6 @@ | |||||
| </v-btn> | </v-btn> | ||||
| </v-card-actions> | </v-card-actions> | ||||
| </v-card> | </v-card> | ||||
| <div id="app"> | |||||
| <v-app id="inspire"> | |||||
| <v-card | |||||
| max-width="400" | |||||
| class="mx-auto" | |||||
| > | |||||
| <v-card-text> | |||||
| <v-chip-group | |||||
| v-model="selection" | |||||
| column | |||||
| active-class="primary--text" | |||||
| > | |||||
| <draggable v-model="tags" @start="dragStart" @end="dragEnd"> | |||||
| <v-chip v-for="(tag, i) in tags" :key="i" draggable> | |||||
| {{ tag.name }} | |||||
| </v-chip> | |||||
| </draggable> | |||||
| </v-chip-group> | |||||
| </v-card-text> | |||||
| </v-card> | |||||
| </v-app> | |||||
| </div> | |||||
| </v-dialog> | </v-dialog> | ||||
| </v-tabs> | </v-tabs> | ||||
| </div> | </div> | ||||
| @@ -542,11 +531,9 @@ | |||||
| modifySelectItems: [], | modifySelectItems: [], | ||||
| modifySelectItem: '', | modifySelectItem: '', | ||||
| dialogModifySelectItem: false, | dialogModifySelectItem: false, | ||||
| selection: null, | |||||
| currentTag: null, | |||||
| tags: [{ | tags: [{ | ||||
| name: 'Shoping', | name: 'Shoping', | ||||
| },{ | |||||
| }, { | |||||
| name: 'Art', | name: 'Art', | ||||
| }, { | }, { | ||||
| name: 'Tech', | name: 'Tech', | ||||
| @@ -554,6 +541,7 @@ | |||||
| name: 'Creative Writing' | name: 'Creative Writing' | ||||
| } | } | ||||
| ], | ], | ||||
| oldIndex: '', | |||||
| } | } | ||||
| }, | }, | ||||
| async mounted() { | async mounted() { | ||||
| @@ -570,8 +558,19 @@ | |||||
| this.getCols(); | this.getCols(); | ||||
| }, | }, | ||||
| dialogModifySelectItem() { | dialogModifySelectItem() { | ||||
| this.getModifySelectItems(); | |||||
| if (this.modifySelectItems.length === 0) { | |||||
| this.getModifySelectItems(); | |||||
| } | |||||
| }, | |||||
| modifySelectItems() { | |||||
| console.log(this.modifySelectItems[0]); | |||||
| }, | |||||
| dialogInsert() { | |||||
| this.insertColItem.index = (parseInt(this.allCols[this.assertGroup[this.currentTab].value][this.allCols[this.assertGroup[this.currentTab].value].length - 1].index) + 1).toString(); | |||||
| }, | }, | ||||
| dialogModify() { | |||||
| this.oldIndex = this.modifyColItem.index; | |||||
| } | |||||
| }, | }, | ||||
| methods: { | methods: { | ||||
| // eslint-disable-next-line no-unused-vars | // eslint-disable-next-line no-unused-vars | ||||
| @@ -579,34 +578,8 @@ | |||||
| // console.log(col); | // console.log(col); | ||||
| console.log(this.modifySelectItems); | console.log(this.modifySelectItems); | ||||
| }, | }, | ||||
| dragStart() { | |||||
| if (this.modifySelectItems[this.selection]) { | |||||
| this.currentTag = this.modifySelectItems[this.selection]; | |||||
| } | |||||
| else { | |||||
| this.currentTag = null; | |||||
| } | |||||
| // console.log(this.selection); | |||||
| // console.log(this.currentTag); | |||||
| // console.log(this.tags[0].name); | |||||
| }, | |||||
| dragEnd() { | |||||
| var self = this; | |||||
| console.log(this.currentTag); | |||||
| if (this.currentTag) { | |||||
| this.modifySelectItems.forEach((x, i) => { | |||||
| if (x === self.currentTag) self.selection = i; | |||||
| }); | |||||
| } | |||||
| // console.log(this.selection); | |||||
| // console.log(this.currentTag); | |||||
| console.log(this.modifySelectItems[0]); | |||||
| }, | |||||
| closeDialogInsertSelectItem() { | closeDialogInsertSelectItem() { | ||||
| this.dialogInsertSelectItem = false | |||||
| this.insertSelectItems = []; | |||||
| this.dialogInsertSelectItem = false; | |||||
| }, | }, | ||||
| getModifySelectItems() { | getModifySelectItems() { | ||||
| this.$axios.get(`/assert/selectItems?tablename=${this.modifyColItem.tablename}&&colname=${this.modifyColItem.colname}`).then((resp) => { | this.$axios.get(`/assert/selectItems?tablename=${this.modifyColItem.tablename}&&colname=${this.modifyColItem.colname}`).then((resp) => { | ||||
| @@ -616,9 +589,9 @@ | |||||
| }, | }, | ||||
| closeDialogModifySelectItem() { | closeDialogModifySelectItem() { | ||||
| this.dialogModifySelectItem = false; | this.dialogModifySelectItem = false; | ||||
| this.modifySelectItems = []; | |||||
| // this.modifySelectItems = []; | |||||
| }, | }, | ||||
| pushSelectItem() { | |||||
| pushInsertSelectItem() { | |||||
| if (this.insertSelectItems.indexOf(this.insertSelectItem) >= 0 || this.insertSelectItem === '') { | if (this.insertSelectItems.indexOf(this.insertSelectItem) >= 0 || this.insertSelectItem === '') { | ||||
| alert('選項不得重複或為空'); | alert('選項不得重複或為空'); | ||||
| } else { | } else { | ||||
| @@ -626,9 +599,20 @@ | |||||
| this.insertSelectItem = ''; | this.insertSelectItem = ''; | ||||
| } | } | ||||
| }, | }, | ||||
| deleteSelectItem(index) { | |||||
| pushModifySelectItem() { | |||||
| if (this.modifySelectItems.indexOf(this.modifySelectItem) >= 0 || this.modifySelectItem === '') { | |||||
| alert('選項不得重複或為空'); | |||||
| } else { | |||||
| this.modifySelectItems.push(this.modifySelectItem); | |||||
| this.modifySelectItem = ''; | |||||
| } | |||||
| }, | |||||
| deleteInsertSelectItem(index) { | |||||
| this.insertSelectItems.splice(index, 1); | this.insertSelectItems.splice(index, 1); | ||||
| }, | }, | ||||
| deleteModifySelectItem(index) { | |||||
| this.modifySelectItems.splice(index, 1); | |||||
| }, | |||||
| oninput(item, key, val) { | oninput(item, key, val) { | ||||
| this.$set(item, key, val); | this.$set(item, key, val); | ||||
| }, | }, | ||||
| @@ -658,20 +642,23 @@ | |||||
| }, | }, | ||||
| insertCol() { | insertCol() { | ||||
| for (const key in this.insertColItem) { | for (const key in this.insertColItem) { | ||||
| if (this.insertColItem[key] === '') { | |||||
| if (this.insertColItem[key] === '' && key !== 'tablename') { | |||||
| console.log(key); | |||||
| alert('所有資料不可為空'); | alert('所有資料不可為空'); | ||||
| return; | return; | ||||
| } else { | |||||
| this.insertColItem.tablename = this.assertGroup[this.currentTab].value; | |||||
| this.insertColItem.insertselectItems = this.insertSelectItems; | |||||
| this.$axios.post(`/assert/col`, this.insertColItem).then(() => { | |||||
| this.getCols(); | |||||
| this.close(); | |||||
| this.insertSelectItems = []; | |||||
| } | |||||
| ); | |||||
| } | } | ||||
| } | } | ||||
| this.insertColItem.tablename = this.assertGroup[this.currentTab].value; | |||||
| this.insertColItem.insertSelectItems = this.insertSelectItems; | |||||
| this.$axios.post(`/assert/col`, this.insertColItem).then(() => { | |||||
| this.getCols(); | |||||
| this.close(); | |||||
| this.insertSelectItems = []; | |||||
| delete this.insertColItem.tablename; | |||||
| delete this.insertColItem.insertselectItems; | |||||
| } | |||||
| ); | |||||
| }, | }, | ||||
| close() { | close() { | ||||
| this.dialogInsert = false; | this.dialogInsert = false; | ||||
| @@ -697,14 +684,26 @@ | |||||
| this.selectItem = resp.data.data; | this.selectItem = resp.data.data; | ||||
| }); | }); | ||||
| }, | }, | ||||
| modifyCol(item) { | |||||
| console.log(item); | |||||
| item.tablename = this.tablename; | |||||
| this.$axios.put(`/assert/col`, item).then(() => { | |||||
| modifyCol() { | |||||
| for (const key in this.modifyColItem) { | |||||
| if (this.modifyColItem[key] === '') { | |||||
| alert('所有資料不可為空'); | |||||
| return; | |||||
| } | |||||
| } | |||||
| this.modifyColItem.tablename = this.assertGroup[this.currentTab].value; | |||||
| this.modifyColItem.modifySelectItems = this.modifySelectItems; | |||||
| this.modifyColItem.oldIndex = this.oldIndex; | |||||
| this.$axios.put(`/assert/col`, this.modifyColItem).then(() => { | |||||
| this.getCols(); | this.getCols(); | ||||
| this.close(); | this.close(); | ||||
| this.modifySelectItems = []; | |||||
| delete this.modifyColItem.tablename; | |||||
| delete this.modifyColItem.modifySelectItems; | |||||
| delete this.modifyColItem.oldIndex; | |||||
| } | } | ||||
| ); | ); | ||||
| }, | }, | ||||
| deleteCol(item) { | deleteCol(item) { | ||||
| let yes = confirm('確定刪除'); | let yes = confirm('確定刪除'); | ||||
| @@ -321,6 +321,7 @@ | |||||
| }); | }); | ||||
| }, | }, | ||||
| getHeaders() { | getHeaders() { | ||||
| this.headers.push({'text': '', 'value': 'actions', sortable: false}); | |||||
| this.$axios.get(`/headers?tablename=${this.tablename}`).then((resp) => { | this.$axios.get(`/headers?tablename=${this.tablename}`).then((resp) => { | ||||
| this.cols = resp.data.data; | this.cols = resp.data.data; | ||||
| resp.data.data.forEach((item) => { | resp.data.data.forEach((item) => { | ||||
| @@ -337,7 +338,6 @@ | |||||
| this.insertItem[item.colname] = null; | this.insertItem[item.colname] = null; | ||||
| this.searchItem[item.colname] = null; | this.searchItem[item.colname] = null; | ||||
| }); | }); | ||||
| this.headers.push({'text': '', 'value': 'actions', sortable: false}); | |||||
| }); | }); | ||||
| }, | }, | ||||
| getInventories() { | getInventories() { | ||||
| @@ -1,11 +1,11 @@ | |||||
| package com.moze.rms.controller; | package com.moze.rms.controller; | ||||
| import com.moze.rms.dao.AssertDAO; | import com.moze.rms.dao.AssertDAO; | ||||
| import com.moze.rms.entity.dto.SelectItemDTO; | |||||
| import com.moze.rms.entity.model.MappingCol; | import com.moze.rms.entity.model.MappingCol; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||
| import java.lang.reflect.InvocationTargetException; | |||||
| import java.util.List; | import java.util.List; | ||||
| import java.util.Map; | import java.util.Map; | ||||
| import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||
| @@ -53,12 +53,12 @@ public class AssertGroupController { | |||||
| } | } | ||||
| @GetMapping("/Types") | @GetMapping("/Types") | ||||
| public JsonResult getTypesByTable(@RequestParam String tablename) { | |||||
| public JsonResult getTypesByTable(@RequestParam String tablename) { | |||||
| return new JsonResult(StatusCode.SUCCESS, assertDAO.findTypesByTable(tablename)); | return new JsonResult(StatusCode.SUCCESS, assertDAO.findTypesByTable(tablename)); | ||||
| } | } | ||||
| @GetMapping("/allCols") | @GetMapping("/allCols") | ||||
| public JsonResult getCols(@RequestParam String tablename) { | |||||
| public JsonResult getCols(@RequestParam String tablename) { | |||||
| // return new JsonResult(StatusCode.SUCCESS, data.stream().collect(Collectors.groupingBy(SelectItemDTO::getColname))); | // return new JsonResult(StatusCode.SUCCESS, data.stream().collect(Collectors.groupingBy(SelectItemDTO::getColname))); | ||||
| List<MappingCol> data = assertDAO.findAllCols(); | List<MappingCol> data = assertDAO.findAllCols(); | ||||
| @@ -66,19 +66,35 @@ public class AssertGroupController { | |||||
| return new JsonResult(StatusCode.SUCCESS, data.stream().collect(Collectors.groupingBy(MappingCol::getTablename))); | return new JsonResult(StatusCode.SUCCESS, data.stream().collect(Collectors.groupingBy(MappingCol::getTablename))); | ||||
| } | } | ||||
| @GetMapping("/selectItems") | |||||
| public JsonResult getSelectItemsByCol(@RequestParam String tablename, @RequestParam String colname) { | |||||
| List<String> data = assertDAO.getSelectItemsByCol(tablename, colname); | |||||
| return new JsonResult(StatusCode.SUCCESS, data); | |||||
| } | |||||
| @PostMapping("/col") | @PostMapping("/col") | ||||
| public JsonResult insertCol(@RequestBody MappingCol mappingCol) { | |||||
| public JsonResult insertCol(@RequestBody MappingCol mappingCol) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException { | |||||
| System.out.println(mappingCol); | System.out.println(mappingCol); | ||||
| assertDAO.insertCol(mappingCol); | |||||
| assertDAO.addColToTable(mappingCol); | |||||
| assertDAO.insertColToMappingCol(mappingCol); | |||||
| assertDAO.insertSelectItems(mappingCol); | |||||
| return new JsonResult(StatusCode.SUCCESS, null); | return new JsonResult(StatusCode.SUCCESS, null); | ||||
| } | } | ||||
| @PutMapping("/col") | @PutMapping("/col") | ||||
| public JsonResult modifyCol(@RequestBody MappingCol mappingCol) { | |||||
| public JsonResult modifyCol(@RequestBody MappingCol mappingCol) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { | |||||
| System.out.println(mappingCol); | System.out.println(mappingCol); | ||||
| // assertDAO.modifyCol(mappingCol; | |||||
| // assertDAO.modifyColToTable(mappingCol); | |||||
| assertDAO.sortCol1(mappingCol.getOldIndex(), mappingCol.getIndex()); | |||||
| assertDAO.sortCol2(mappingCol.getOldIndex(), mappingCol.getIndex()); | |||||
| assertDAO.modifyColToMappingCol(mappingCol); | |||||
| assertDAO.modifySelectItems(mappingCol); | |||||
| return new JsonResult(StatusCode.SUCCESS, null); | return new JsonResult(StatusCode.SUCCESS, null); | ||||
| } | } | ||||
| @@ -86,20 +102,12 @@ public class AssertGroupController { | |||||
| @DeleteMapping("/deleteCol") | @DeleteMapping("/deleteCol") | ||||
| public JsonResult deleteCol(@RequestParam String tablename, @RequestParam String colname) { | public JsonResult deleteCol(@RequestParam String tablename, @RequestParam String colname) { | ||||
| // assertDAO.deleteColFromTable(tablename, colname); | |||||
| assertDAO.deleteColFromTable(tablename, colname); | |||||
| assertDAO.deleteColFromMappingCol(tablename, colname); | assertDAO.deleteColFromMappingCol(tablename, colname); | ||||
| if (colname.equals("type")) { | |||||
| //TODO | |||||
| } | |||||
| assertDAO.deleteColFromSelectItem(tablename, colname); | |||||
| assertDAO.deleteFromSelectItem(tablename, colname); | |||||
| return new JsonResult(StatusCode.SUCCESS, null); | return new JsonResult(StatusCode.SUCCESS, null); | ||||
| } | } | ||||
| @GetMapping("/selectItems") | |||||
| public JsonResult getSelectItemsByCol(@RequestParam String tablename, @RequestParam String colname) { | |||||
| List<String> data = assertDAO.getSelectItemsByCol(tablename , colname); | |||||
| return new JsonResult(StatusCode.SUCCESS, data); | |||||
| } | |||||
| } | } | ||||
| @@ -7,7 +7,12 @@ import org.jdbi.v3.core.Handle; | |||||
| import org.jdbi.v3.sqlobject.SqlObject; | import org.jdbi.v3.sqlobject.SqlObject; | ||||
| import org.jdbi.v3.sqlobject.config.RegisterBeanMapper; | import org.jdbi.v3.sqlobject.config.RegisterBeanMapper; | ||||
| import org.jdbi.v3.sqlobject.statement.SqlQuery; | import org.jdbi.v3.sqlobject.statement.SqlQuery; | ||||
| import org.jdbi.v3.sqlobject.statement.SqlUpdate; | |||||
| import java.lang.reflect.Field; | |||||
| import java.lang.reflect.InvocationTargetException; | |||||
| import java.lang.reflect.Method; | |||||
| import java.util.Iterator; | |||||
| import java.util.List; | import java.util.List; | ||||
| import java.util.Map; | import java.util.Map; | ||||
| @@ -25,39 +30,33 @@ public interface AssertDAO extends SqlObject { | |||||
| List<Map<String, Object>> assertGroup = findAssertGroups(); | List<Map<String, Object>> assertGroup = findAssertGroups(); | ||||
| Handle handle = this.getHandle(); | Handle handle = this.getHandle(); | ||||
| // String sql = "select * from mapping.mapping_" + assertGroup.get(0).get("tablename"); | |||||
| // for (int i = 1; i <= assertGroup.size() - 1; i++) { | |||||
| // sql += " union select * from mapping.mapping_" + assertGroup.get(i).get("tablename"); | |||||
| // } | |||||
| // String sql = "select * from mapping.\"selectItem\" where tablename = '" + tablename + "' and colname = 'type' order by index;"; | |||||
| String sql = "select * from mapping.mapping_" + tablename + " order by type"; | String sql = "select * from mapping.mapping_" + tablename + " order by type"; | ||||
| return handle.createQuery(sql).mapToMap().list(); | return handle.createQuery(sql).mapToMap().list(); | ||||
| } | } | ||||
| // default List<Map<String, Object>> findInventoryItemByTable() { | |||||
| // List<Map<String, Object>> assertGroup = findAssertGroups(); | |||||
| // | |||||
| // Handle handle = this.getHandle(); | |||||
| //// String sql = "select * from mapping.mapping_col where tablename = '" + tablename + "' order by index;"; | |||||
| // String sql = "select * from mapping.mapping_col;"; | |||||
| // return handle.createQuery(sql).mapToMap().list(); | |||||
| // } | |||||
| @RegisterBeanMapper(MappingCol.class) | @RegisterBeanMapper(MappingCol.class) | ||||
| @SqlQuery("select * from mapping.mapping_col;") | |||||
| @SqlQuery("select * from mapping.mapping_col order by index;") | |||||
| List<MappingCol> findAllCols(); | List<MappingCol> findAllCols(); | ||||
| //新增類別 | |||||
| default void insertAssertGroup(Map<String, Object> data) { | default void insertAssertGroup(Map<String, Object> data) { | ||||
| Handle handle = this.getHandle(); | Handle handle = this.getHandle(); | ||||
| String sql = "CREATE TABLE " + data.get("assertGroupTablename") + "()"; | String sql = "CREATE TABLE " + data.get("assertGroupTablename") + "()"; | ||||
| handle.createUpdate(sql).execute(); | handle.createUpdate(sql).execute(); | ||||
| } | } | ||||
| default void deleteAssertGroup(String tablename) { | |||||
| default void insertMappingType(Map<String, Object> data) { | |||||
| Handle handle = this.getHandle(); | Handle handle = this.getHandle(); | ||||
| String sql = "drop TABLE " + tablename; | |||||
| String sql = "CREATE TABLE mapping.mapping_" + data.get("assertGroupTablename") + "("; | |||||
| sql += " type varchar not null"; | |||||
| sql += " constraint mapping_" + data.get("assertGroupTablename") + "_pk primary key,"; | |||||
| sql += " name varchar,"; | |||||
| sql += " descript varchar,"; | |||||
| sql += " example varchar"; | |||||
| sql += ")"; | |||||
| handle.createUpdate(sql).execute(); | handle.createUpdate(sql).execute(); | ||||
| } | } | ||||
| @@ -67,82 +66,168 @@ public interface AssertDAO extends SqlObject { | |||||
| handle.createUpdate(sql).execute(); | handle.createUpdate(sql).execute(); | ||||
| } | } | ||||
| //修改類別 | |||||
| default void modifyMappingTable(String tablename, String newDescript) { | default void modifyMappingTable(String tablename, String newDescript) { | ||||
| Handle handle = this.getHandle(); | Handle handle = this.getHandle(); | ||||
| String sql = "update mapping.mapping_table set descript = '" + newDescript + "' where tablename = '" + tablename + "'"; | String sql = "update mapping.mapping_table set descript = '" + newDescript + "' where tablename = '" + tablename + "'"; | ||||
| handle.createUpdate(sql).execute(); | handle.createUpdate(sql).execute(); | ||||
| } | } | ||||
| //刪除類別 | |||||
| default void deleteAssertGroup(String tablename) { | |||||
| Handle handle = this.getHandle(); | |||||
| String sql = "drop TABLE " + tablename; | |||||
| handle.createUpdate(sql).execute(); | |||||
| } | |||||
| default void deleteMappingTable(String tablename) { | default void deleteMappingTable(String tablename) { | ||||
| Handle handle = this.getHandle(); | Handle handle = this.getHandle(); | ||||
| String sql = "delete from mapping.mapping_table where tablename = '" + tablename + "'"; | String sql = "delete from mapping.mapping_table where tablename = '" + tablename + "'"; | ||||
| handle.createUpdate(sql).execute(); | handle.createUpdate(sql).execute(); | ||||
| } | } | ||||
| default void insertMappingType(Map<String, Object> data) { | |||||
| default void deleteMappingType(String tablename) { | |||||
| Handle handle = this.getHandle(); | Handle handle = this.getHandle(); | ||||
| String sql = "CREATE TABLE mapping.mapping_" + data.get("assertGroupTablename") + "("; | |||||
| String sql = "drop TABLE mapping.mapping_" + tablename; | |||||
| handle.createUpdate(sql).execute(); | |||||
| sql += " type varchar not null"; | |||||
| sql += " constraint mapping_" + data.get("assertGroupTablename") + "_pk primary key,"; | |||||
| sql += " name varchar,"; | |||||
| sql += " descript varchar,"; | |||||
| sql += " example varchar"; | |||||
| sql += ")"; | |||||
| } | |||||
| @SqlQuery("select item from mapping.\"selectItem\" where tablename = ? and colname = ? order by index;") | |||||
| @RegisterBeanMapper(SelectItemDTO.class) | |||||
| List<String> getSelectItemsByCol(String tablename, String colname); | |||||
| //新增欄位sql | |||||
| default void addColToTable(MappingCol m) { | |||||
| Handle handle = this.getHandle(); | |||||
| String sql = "ALTER TABLE " + m.getTablename() + " ADD " + m.getColname() + " " + "varchar"; | |||||
| handle.createUpdate(sql).execute(); | handle.createUpdate(sql).execute(); | ||||
| } | } | ||||
| default void deleteMappingType(String tablename) { | |||||
| default void insertColToMappingCol(MappingCol m) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { | |||||
| Field[] fields = m.getClass().getDeclaredFields(); | |||||
| Handle handle = this.getHandle(); | Handle handle = this.getHandle(); | ||||
| String sql = "drop TABLE mapping.mapping_" + tablename; | |||||
| String cols = ""; | |||||
| String values = ""; | |||||
| for (int i = 0; i < fields.length; i++) { | |||||
| String name = fields[i].getName(); | |||||
| String type = fields[i].getGenericType().toString(); | |||||
| if (type.equals("class java.lang.String") && i < fields.length - 1) { | |||||
| cols += name; | |||||
| if (i < fields.length - 1) { | |||||
| cols += ","; | |||||
| } | |||||
| String name2 = name.substring(0, 1).toUpperCase() + name.substring(1); | |||||
| Method method = m.getClass().getMethod("get" + name2); | |||||
| String value = (String) method.invoke(m); | |||||
| values += "'" + value + "'"; | |||||
| if (i < fields.length - 1) { | |||||
| values += ","; | |||||
| } | |||||
| } | |||||
| } | |||||
| if (cols.endsWith(",")) { | |||||
| cols = cols.substring(0, cols.length() - 1); | |||||
| } | |||||
| if (values.endsWith(",")) { | |||||
| values = values.substring(0, values.length() - 1); | |||||
| } | |||||
| String sql = "insert into mapping.mapping_col(" + cols + ")values(" + values + ")"; | |||||
| handle.createUpdate(sql).execute(); | handle.createUpdate(sql).execute(); | ||||
| } | |||||
| default void insertSelectItems(MappingCol m) { | |||||
| Handle handle = this.getHandle(); | |||||
| for (int i = 1; i <= m.getInsertSelectItems().size(); i++) { | |||||
| String sql = "insert into mapping.\"selectItem\" values("; | |||||
| sql += "'" + m.getTablename() + "',"; | |||||
| sql += "'" + m.getColname() + "',"; | |||||
| sql += "'" + m.getInsertSelectItems().get(i - 1) + "',"; | |||||
| sql += "'" + i + "')"; | |||||
| handle.createUpdate(sql).execute(); | |||||
| } | |||||
| } | } | ||||
| default void deleteColFromMappingCol(String tablename, String colname) { | |||||
| //修改欄位sql | |||||
| // default void modifyColToTable(MappingCol m) { | |||||
| // Handle handle = this.getHandle(); | |||||
| // String sql = "ALTER TABLE " + m.getTablename() + " ADD " + m.getColname() + " " + "character varying"; | |||||
| // handle.createUpdate(sql).execute(); | |||||
| // | |||||
| // } | |||||
| default void modifyColToMappingCol(MappingCol m) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { | |||||
| Field[] fields = m.getClass().getDeclaredFields(); | |||||
| Handle handle = this.getHandle(); | Handle handle = this.getHandle(); | ||||
| String sql = "delete from mapping.mapping_col where tablename = '" + tablename + "' and colname = '" + colname + "'"; | |||||
| String sql = "update mapping.mapping_col set "; | |||||
| for (int i = 0; i < fields.length; i++) { | |||||
| String name = fields[i].getName(); | |||||
| String type = fields[i].getGenericType().toString(); | |||||
| if (type.equals("class java.lang.String") && !"tablename&colname&oldIndex".contains(name)) { | |||||
| String name2 = name.substring(0, 1).toUpperCase() + name.substring(1); | |||||
| Method method = m.getClass().getMethod("get" + name2); | |||||
| String value = (String) method.invoke(m); | |||||
| sql += " " + name + " = '" + value + "',"; | |||||
| } | |||||
| } | |||||
| if (sql.endsWith(",")) { | |||||
| sql = sql.substring(0, sql.length() - 1); | |||||
| } | |||||
| sql += " where tablename = '" + m.getTablename() + "'"; | |||||
| sql += " and colname = '" + m.getColname() + "'"; | |||||
| handle.createUpdate(sql).execute(); | handle.createUpdate(sql).execute(); | ||||
| } | } | ||||
| default void deleteColFromTable(String tablename, String colname) { | |||||
| default void modifySelectItems(MappingCol m) { | |||||
| Handle handle = this.getHandle(); | |||||
| if (m.getInsertSelectItems() != null) { | |||||
| for (int i = 1; i <= m.getInsertSelectItems().size(); i++) { | |||||
| String sql = "update mapping.\"selectItem\" set "; | |||||
| sql += "index = '" + i + "'"; | |||||
| sql += "where tablename = '" + m.getTablename() + "'"; | |||||
| sql += "and colname = '" + m.getColname() + "'"; | |||||
| handle.createUpdate(sql).execute(); | |||||
| } | |||||
| } | |||||
| } | |||||
| //刪除欄位sql | |||||
| default void deleteColFromTable(String tablename, String colname) { | |||||
| Handle handle = this.getHandle(); | Handle handle = this.getHandle(); | ||||
| String sql = "ALTER TABLE " + tablename + " DROP " + colname; | String sql = "ALTER TABLE " + tablename + " DROP " + colname; | ||||
| handle.createUpdate(sql).execute(); | handle.createUpdate(sql).execute(); | ||||
| } | } | ||||
| default void deleteColFromSelectItem(String tablename, String colname) { | |||||
| default void deleteColFromMappingCol(String tablename, String colname) { | |||||
| Handle handle = this.getHandle(); | Handle handle = this.getHandle(); | ||||
| String sql = "delete from mapping.\"selectItem\" where tablename = '" + tablename + "' and colname = '" + colname + "'"; | |||||
| String sql = "delete from mapping.mapping_col where tablename = '" + tablename + "' and colname = '" + colname + "'"; | |||||
| handle.createUpdate(sql).execute(); | handle.createUpdate(sql).execute(); | ||||
| } | } | ||||
| default void insertCol(MappingCol m) { | |||||
| default void deleteFromSelectItem(String tablename, String colname) { | |||||
| Handle handle = this.getHandle(); | Handle handle = this.getHandle(); | ||||
| String sql = "insert into mapping.mapping_col(tablename,colname,descript,level,type,index,\"isselect\",isrequire,issearch,isexport)"; | |||||
| sql += " values ("; | |||||
| sql += "'" + m.getTablename() + "',"; | |||||
| sql += "'" + m.getColname() + "',"; | |||||
| sql += "'" + m.getDescript() + "',"; | |||||
| sql += "'" + m.getLevel() + "',"; | |||||
| sql += "'" + m.getType() + "',"; | |||||
| sql += "" + m.getIndex() + ","; | |||||
| sql += "'" + m.getIsselect() + "',"; | |||||
| sql += "'" + m.getIsrequire() + "',"; | |||||
| sql += "'" + m.getIssearch() + "',"; | |||||
| sql += "'" + m.getIsexport() + "'"; | |||||
| sql += ")"; | |||||
| String sql = "delete from mapping.\"selectItem\" where tablename = '" + tablename + "' and colname = '" + colname + "'"; | |||||
| handle.createUpdate(sql).execute(); | handle.createUpdate(sql).execute(); | ||||
| } | } | ||||
| @SqlQuery("select item from mapping.\"selectItem\" where tablename = ? and colname = ? order by index;") | |||||
| @RegisterBeanMapper(SelectItemDTO.class) | |||||
| List<String> getSelectItemsByCol(String tablename, String colname); | |||||
| @SqlUpdate("update mapping.mapping_col set index = index + 1 where index < ?::numeric and index >= ?::numeric ") | |||||
| void sortCol1(String oldIndex ,String index); | |||||
| @SqlUpdate("update mapping.mapping_col set index = index - 1 where index > ?::numeric and index <= ?::numeric ") | |||||
| void sortCol2(String oldIndex ,String index); | |||||
| @SqlUpdate("select index from mapping.mapping_col where tablename = ? order by index desc limit 1;") | |||||
| Integer getLastIndex(String tablename); | |||||
| } | } | ||||
| @@ -19,5 +19,7 @@ public class MappingCol { | |||||
| private String issearch; | private String issearch; | ||||
| private String isexport; | private String isexport; | ||||
| private String isrequire; | private String isrequire; | ||||
| private List<String> insertselectItem; | |||||
| private List<String> insertSelectItems; | |||||
| private List<String> modifySelectItems; | |||||
| private String oldIndex; | |||||
| } | } | ||||