diff --git a/sec-api/src/main/java/com/imdroid/secapi/dto/DeviceCmd.java b/sec-api/src/main/java/com/imdroid/secapi/dto/DeviceCmd.java index fd54a627..01368d0f 100644 --- a/sec-api/src/main/java/com/imdroid/secapi/dto/DeviceCmd.java +++ b/sec-api/src/main/java/com/imdroid/secapi/dto/DeviceCmd.java @@ -26,4 +26,6 @@ public class DeviceCmd { String name; Short type; String content; + Integer sort; + } diff --git a/sec-beidou/src/main/java/com/imdroid/beidou/controller/CmdLineController.java b/sec-beidou/src/main/java/com/imdroid/beidou/controller/CmdLineController.java index 4993057e..5b70f9cb 100644 --- a/sec-beidou/src/main/java/com/imdroid/beidou/controller/CmdLineController.java +++ b/sec-beidou/src/main/java/com/imdroid/beidou/controller/CmdLineController.java @@ -183,7 +183,7 @@ public class CmdLineController extends BasicController{ public JSONObject listCmd(int page, int limit) { Page pageable = new Page<>(page, limit); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.orderByDesc("id"); + queryWrapper.orderByAsc("sort"); IPage cs = deviceCmdMapper.selectPage(pageable, queryWrapper); JSONObject jsonObject = new JSONObject(); @@ -208,10 +208,19 @@ public class CmdLineController extends BasicController{ return jsonObject; } + private int getMaxSort() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.orderByDesc("sort"); + queryWrapper.last("limit 1"); + DeviceCmd maxSortCmd = deviceCmdMapper.selectOne(queryWrapper); + return maxSortCmd != null ? maxSortCmd.getSort() : 0; + } + @PostMapping("/gnss/cmd/add") @ResponseBody public String addCmd(@RequestBody JSONObject object) throws Exception { - DeviceCmd deviceCmd = JSONObject.toJavaObject(object,DeviceCmd.class); + DeviceCmd deviceCmd = JSONObject.toJavaObject(object, DeviceCmd.class); + deviceCmd.setSort(getMaxSort() + 1); int num = deviceCmdMapper.insert(deviceCmd); if (num == 0) { @@ -229,6 +238,7 @@ public class CmdLineController extends BasicController{ return HttpResult.failed(); } else return HttpResult.ok(); } + @PostMapping("/gnss/cmd/go_top") @ResponseBody public String topCmd(@RequestParam int id) throws Exception { @@ -236,14 +246,75 @@ public class CmdLineController extends BasicController{ if(cmd == null) return HttpResult.failed(); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.orderByDesc("id"); + queryWrapper.orderByAsc("sort"); queryWrapper.last("limit 1"); - DeviceCmd cmdMaxId = deviceCmdMapper.selectOne(queryWrapper); - if(!cmdMaxId.getId().equals(cmd.getId())){ - deviceCmdMapper.deleteById(cmd.getId()); - cmd.setId(cmdMaxId.getId()+1); - deviceCmdMapper.insert(cmd); + DeviceCmd minSortCmd = deviceCmdMapper.selectOne(queryWrapper); + + if(minSortCmd != null && !minSortCmd.getId().equals(cmd.getId())) { + cmd.setSort(minSortCmd.getSort() - 1); + deviceCmdMapper.updateById(cmd); } + + return HttpResult.ok(); + } + + @PostMapping("/gnss/cmd/go_bottom") + @ResponseBody + public String bottomCmd(@RequestParam int id) throws Exception { + DeviceCmd cmd = deviceCmdMapper.selectById(id); + if(cmd == null) return HttpResult.failed(); + + cmd.setSort(getMaxSort() + 1); + deviceCmdMapper.updateById(cmd); + + return HttpResult.ok(); + } + + @PostMapping("/gnss/cmd/move_up") + @ResponseBody + public String moveUpCmd(@RequestParam int id) throws Exception { + DeviceCmd cmd = deviceCmdMapper.selectById(id); + if(cmd == null) return HttpResult.failed(); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lt("sort", cmd.getSort()); + queryWrapper.orderByDesc("sort"); + queryWrapper.last("limit 1"); + DeviceCmd prevCmd = deviceCmdMapper.selectOne(queryWrapper); + + if(prevCmd != null) { + int tempSort = cmd.getSort(); + cmd.setSort(prevCmd.getSort()); + prevCmd.setSort(tempSort); + + deviceCmdMapper.updateById(cmd); + deviceCmdMapper.updateById(prevCmd); + } + + return HttpResult.ok(); + } + + @PostMapping("/gnss/cmd/move_down") + @ResponseBody + public String moveDownCmd(@RequestParam int id) throws Exception { + DeviceCmd cmd = deviceCmdMapper.selectById(id); + if(cmd == null) return HttpResult.failed(); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.gt("sort", cmd.getSort()); + queryWrapper.orderByAsc("sort"); + queryWrapper.last("limit 1"); + DeviceCmd nextCmd = deviceCmdMapper.selectOne(queryWrapper); + + if(nextCmd != null) { + int tempSort = cmd.getSort(); + cmd.setSort(nextCmd.getSort()); + nextCmd.setSort(tempSort); + + deviceCmdMapper.updateById(cmd); + deviceCmdMapper.updateById(nextCmd); + } + return HttpResult.ok(); } @@ -255,4 +326,17 @@ public class CmdLineController extends BasicController{ return HttpResult.failed(); } else return HttpResult.ok(); } + + @PostMapping("/gnss/cmd/update") + @ResponseBody + public String updateCmd(@RequestBody JSONObject object) throws Exception { + DeviceCmd deviceCmd = JSONObject.toJavaObject(object, DeviceCmd.class); + int num = deviceCmdMapper.updateById(deviceCmd); + + if (num == 0) { + return HttpResult.failed(); + } else { + return HttpResult.ok(); + } + } } diff --git a/sec-beidou/src/main/resources/templates/page/table/frequent_cmd.html b/sec-beidou/src/main/resources/templates/page/table/frequent_cmd.html index bf7fd308..6f9ea007 100644 --- a/sec-beidou/src/main/resources/templates/page/table/frequent_cmd.html +++ b/sec-beidou/src/main/resources/templates/page/table/frequent_cmd.html @@ -12,165 +12,522 @@ body { background-color: #ffffff; } + .ctx-menu-container { + position: absolute; + background: #fff; + border: 1px solid #d2d2d2; + border-radius: 2px; + box-shadow: 0 2px 4px rgba(0,0,0,.12); + z-index: 999; + display: none; + } + .ctx-menu-container li { + padding: 7px 15px; + cursor: pointer; + } + .ctx-menu-container li:hover { + background-color: #f2f2f2; + } + .ctx-submenu { + padding-left: 20px; + display: none; + } + .active-row { + background-color: #f2f2f2 !important; + } + .highlight-row { + background-color: #fffdd1 !important; + transition: background-color 0.5s; + }
- - + + +
-
-
- - -
-
- -
- -
-
-
- -
- -
+