| @@ -3,3 +3,4 @@ | |||
| /target/ | |||
| /rms.iml | |||
| /app/node_modules/ | |||
| /app/.idea/ | |||
| @@ -166,6 +166,18 @@ | |||
| :headers='headers' | |||
| 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 }'> | |||
| <!--修改資產群駔欄位對話--> | |||
| <v-dialog | |||
| @@ -246,7 +258,7 @@ | |||
| <v-btn | |||
| color='blue darken-1' | |||
| text | |||
| @click='modifyCol(modifyColItem)' | |||
| @click='modifyCol' | |||
| > | |||
| 修改 | |||
| </v-btn> | |||
| @@ -297,6 +309,7 @@ | |||
| <v-text-field | |||
| v-if="header.text !== '' && header.value !== 'isselect' && isBooleanCol.indexOf(header.value) < 0" | |||
| :label='header.text' | |||
| :value="insertColItem[header.value]" | |||
| hint='必填' | |||
| v-on:input='oninput(insertColItem, header.value, $event)' | |||
| /> | |||
| @@ -352,7 +365,7 @@ | |||
| </v-tabs-items> | |||
| <!--新增資產群組欄位選項對話--> | |||
| <v-dialog | |||
| width="80%" | |||
| width="40%" | |||
| v-model='dialogInsertSelectItem' | |||
| @click:outside='closeDialogInsertSelectItem' | |||
| :retain-focus="false" | |||
| @@ -365,22 +378,23 @@ | |||
| <v-card-text> | |||
| <v-container> | |||
| <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-model="insertSelectItem"/> | |||
| <v-btn class="ml-2" @click='pushSelectItem'>新增</v-btn> | |||
| <v-btn class="ml-2" @click='pushInsertSelectItem'>新增</v-btn> | |||
| </v-col> | |||
| </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-for="(insertSelectItem, index) in insertSelectItems" | |||
| :key="index" | |||
| class="ma-2" | |||
| class="col-12 my-1" | |||
| color="secondary" | |||
| > | |||
| {{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-card> | |||
| </v-container> | |||
| @@ -414,27 +428,24 @@ | |||
| <v-row> | |||
| <v-col cols="11" class="d-flex align-center"> | |||
| <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-row> | |||
| <p class="font-italic mb-0 mt-1">拖曳選項以排序</p> | |||
| <v-card | |||
| max-width="80%" | |||
| class="mt-2" | |||
| class="mt-2 col-10" | |||
| 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-container> | |||
| </v-card-text> | |||
| @@ -449,28 +460,6 @@ | |||
| </v-btn> | |||
| </v-card-actions> | |||
| </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-tabs> | |||
| </div> | |||
| @@ -542,11 +531,9 @@ | |||
| modifySelectItems: [], | |||
| modifySelectItem: '', | |||
| dialogModifySelectItem: false, | |||
| selection: null, | |||
| currentTag: null, | |||
| tags: [{ | |||
| name: 'Shoping', | |||
| },{ | |||
| }, { | |||
| name: 'Art', | |||
| }, { | |||
| name: 'Tech', | |||
| @@ -554,6 +541,7 @@ | |||
| name: 'Creative Writing' | |||
| } | |||
| ], | |||
| oldIndex: '', | |||
| } | |||
| }, | |||
| async mounted() { | |||
| @@ -570,8 +558,19 @@ | |||
| this.getCols(); | |||
| }, | |||
| 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: { | |||
| // eslint-disable-next-line no-unused-vars | |||
| @@ -579,34 +578,8 @@ | |||
| // console.log(col); | |||
| 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() { | |||
| this.dialogInsertSelectItem = false | |||
| this.insertSelectItems = []; | |||
| this.dialogInsertSelectItem = false; | |||
| }, | |||
| getModifySelectItems() { | |||
| this.$axios.get(`/assert/selectItems?tablename=${this.modifyColItem.tablename}&&colname=${this.modifyColItem.colname}`).then((resp) => { | |||
| @@ -616,9 +589,9 @@ | |||
| }, | |||
| closeDialogModifySelectItem() { | |||
| this.dialogModifySelectItem = false; | |||
| this.modifySelectItems = []; | |||
| // this.modifySelectItems = []; | |||
| }, | |||
| pushSelectItem() { | |||
| pushInsertSelectItem() { | |||
| if (this.insertSelectItems.indexOf(this.insertSelectItem) >= 0 || this.insertSelectItem === '') { | |||
| alert('選項不得重複或為空'); | |||
| } else { | |||
| @@ -626,9 +599,20 @@ | |||
| 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); | |||
| }, | |||
| deleteModifySelectItem(index) { | |||
| this.modifySelectItems.splice(index, 1); | |||
| }, | |||
| oninput(item, key, val) { | |||
| this.$set(item, key, val); | |||
| }, | |||
| @@ -658,20 +642,23 @@ | |||
| }, | |||
| insertCol() { | |||
| for (const key in this.insertColItem) { | |||
| if (this.insertColItem[key] === '') { | |||
| if (this.insertColItem[key] === '' && key !== 'tablename') { | |||
| console.log(key); | |||
| alert('所有資料不可為空'); | |||
| 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() { | |||
| this.dialogInsert = false; | |||
| @@ -697,14 +684,26 @@ | |||
| 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.close(); | |||
| this.modifySelectItems = []; | |||
| delete this.modifyColItem.tablename; | |||
| delete this.modifyColItem.modifySelectItems; | |||
| delete this.modifyColItem.oldIndex; | |||
| } | |||
| ); | |||
| }, | |||
| deleteCol(item) { | |||
| let yes = confirm('確定刪除'); | |||
| @@ -321,6 +321,7 @@ | |||
| }); | |||
| }, | |||
| getHeaders() { | |||
| this.headers.push({'text': '', 'value': 'actions', sortable: false}); | |||
| this.$axios.get(`/headers?tablename=${this.tablename}`).then((resp) => { | |||
| this.cols = resp.data.data; | |||
| resp.data.data.forEach((item) => { | |||
| @@ -337,7 +338,6 @@ | |||
| this.insertItem[item.colname] = null; | |||
| this.searchItem[item.colname] = null; | |||
| }); | |||
| this.headers.push({'text': '', 'value': 'actions', sortable: false}); | |||
| }); | |||
| }, | |||
| getInventories() { | |||
| @@ -1,11 +1,11 @@ | |||
| package com.moze.rms.controller; | |||
| import com.moze.rms.dao.AssertDAO; | |||
| import com.moze.rms.entity.dto.SelectItemDTO; | |||
| import com.moze.rms.entity.model.MappingCol; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.web.bind.annotation.*; | |||
| import java.lang.reflect.InvocationTargetException; | |||
| import java.util.List; | |||
| import java.util.Map; | |||
| import java.util.stream.Collectors; | |||
| @@ -53,12 +53,12 @@ public class AssertGroupController { | |||
| } | |||
| @GetMapping("/Types") | |||
| public JsonResult getTypesByTable(@RequestParam String tablename) { | |||
| public JsonResult getTypesByTable(@RequestParam String tablename) { | |||
| return new JsonResult(StatusCode.SUCCESS, assertDAO.findTypesByTable(tablename)); | |||
| } | |||
| @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))); | |||
| List<MappingCol> data = assertDAO.findAllCols(); | |||
| @@ -66,19 +66,35 @@ public class AssertGroupController { | |||
| 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") | |||
| public JsonResult insertCol(@RequestBody MappingCol mappingCol) { | |||
| public JsonResult insertCol(@RequestBody MappingCol mappingCol) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException { | |||
| System.out.println(mappingCol); | |||
| assertDAO.insertCol(mappingCol); | |||
| assertDAO.addColToTable(mappingCol); | |||
| assertDAO.insertColToMappingCol(mappingCol); | |||
| assertDAO.insertSelectItems(mappingCol); | |||
| return new JsonResult(StatusCode.SUCCESS, null); | |||
| } | |||
| @PutMapping("/col") | |||
| public JsonResult modifyCol(@RequestBody MappingCol mappingCol) { | |||
| public JsonResult modifyCol(@RequestBody MappingCol mappingCol) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { | |||
| 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); | |||
| } | |||
| @@ -86,20 +102,12 @@ public class AssertGroupController { | |||
| @DeleteMapping("/deleteCol") | |||
| public JsonResult deleteCol(@RequestParam String tablename, @RequestParam String colname) { | |||
| // assertDAO.deleteColFromTable(tablename, colname); | |||
| assertDAO.deleteColFromTable(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); | |||
| } | |||
| @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.config.RegisterBeanMapper; | |||
| 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.Map; | |||
| @@ -25,39 +30,33 @@ public interface AssertDAO extends SqlObject { | |||
| List<Map<String, Object>> assertGroup = findAssertGroups(); | |||
| 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"; | |||
| 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) | |||
| @SqlQuery("select * from mapping.mapping_col;") | |||
| @SqlQuery("select * from mapping.mapping_col order by index;") | |||
| List<MappingCol> findAllCols(); | |||
| //新增類別 | |||
| default void insertAssertGroup(Map<String, Object> data) { | |||
| Handle handle = this.getHandle(); | |||
| String sql = "CREATE TABLE " + data.get("assertGroupTablename") + "()"; | |||
| handle.createUpdate(sql).execute(); | |||
| } | |||
| default void deleteAssertGroup(String tablename) { | |||
| default void insertMappingType(Map<String, Object> data) { | |||
| 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(); | |||
| } | |||
| @@ -67,82 +66,168 @@ public interface AssertDAO extends SqlObject { | |||
| handle.createUpdate(sql).execute(); | |||
| } | |||
| //修改類別 | |||
| default void modifyMappingTable(String tablename, String newDescript) { | |||
| Handle handle = this.getHandle(); | |||
| String sql = "update mapping.mapping_table set descript = '" + newDescript + "' where tablename = '" + tablename + "'"; | |||
| 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) { | |||
| Handle handle = this.getHandle(); | |||
| String sql = "delete from mapping.mapping_table where tablename = '" + tablename + "'"; | |||
| handle.createUpdate(sql).execute(); | |||
| } | |||
| default void insertMappingType(Map<String, Object> data) { | |||
| default void deleteMappingType(String tablename) { | |||
| 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(); | |||
| } | |||
| default void deleteMappingType(String tablename) { | |||
| default void insertColToMappingCol(MappingCol m) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { | |||
| Field[] fields = m.getClass().getDeclaredFields(); | |||
| 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(); | |||
| } | |||
| 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(); | |||
| 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(); | |||
| } | |||
| 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(); | |||
| String sql = "ALTER TABLE " + tablename + " DROP " + colname; | |||
| handle.createUpdate(sql).execute(); | |||
| } | |||
| default void deleteColFromSelectItem(String tablename, String colname) { | |||
| default void deleteColFromMappingCol(String tablename, String colname) { | |||
| 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(); | |||
| } | |||
| default void insertCol(MappingCol m) { | |||
| default void deleteFromSelectItem(String tablename, String colname) { | |||
| 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(); | |||
| } | |||
| @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 isexport; | |||
| private String isrequire; | |||
| private List<String> insertselectItem; | |||
| private List<String> insertSelectItems; | |||
| private List<String> modifySelectItems; | |||
| private String oldIndex; | |||
| } | |||