diff --git a/.gitignore b/.gitignore
index 896d5c0..0c74397 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,5 @@
/.idea/
/src/main/resources/public/
/target/
+/rms.iml
+/app/node_modules/
diff --git a/app/.idea/.gitignore b/app/.idea/.gitignore
new file mode 100644
index 0000000..e7e9d11
--- /dev/null
+++ b/app/.idea/.gitignore
@@ -0,0 +1,2 @@
+# Default ignored files
+/workspace.xml
diff --git a/app/package-lock.json b/app/package-lock.json
index a38827e..4c29657 100644
--- a/app/package-lock.json
+++ b/app/package-lock.json
@@ -1710,16 +1710,6 @@
"integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
"dev": true
},
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "optional": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
"cacache": {
"version": "13.0.1",
"resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz",
@@ -1752,34 +1742,6 @@
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
"dev": true
},
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "dev": true,
- "optional": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "optional": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true,
- "optional": true
- },
"css-loader": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz",
@@ -1823,13 +1785,6 @@
}
}
},
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "optional": true
- },
"icss-utils": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz",
@@ -1839,18 +1794,6 @@
"postcss": "^7.0.14"
}
},
- "loader-utils": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
- "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
- "dev": true,
- "optional": true,
- "requires": {
- "big.js": "^5.2.2",
- "emojis-list": "^3.0.0",
- "json5": "^2.1.2"
- }
- },
"postcss-modules-extract-imports": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz",
@@ -1914,16 +1857,6 @@
"minipass": "^3.1.1"
}
},
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "optional": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
"terser-webpack-plugin": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz",
@@ -1940,18 +1873,6 @@
"terser": "^4.6.12",
"webpack-sources": "^1.4.3"
}
- },
- "vue-loader-v16": {
- "version": "npm:vue-loader@16.1.2",
- "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.1.2.tgz",
- "integrity": "sha512-8QTxh+Fd+HB6fiL52iEVLKqE9N1JSlMXLR92Ijm6g8PZrwIxckgpqjPDWRP5TWxdiPaHR+alUWsnu1ShQOwt+Q==",
- "dev": true,
- "optional": true,
- "requires": {
- "chalk": "^4.1.0",
- "hash-sum": "^2.0.0",
- "loader-utils": "^2.0.0"
- }
}
}
},
@@ -11180,6 +11101,87 @@
}
}
},
+ "vue-loader-v16": {
+ "version": "npm:vue-loader@16.1.2",
+ "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.1.2.tgz",
+ "integrity": "sha512-8QTxh+Fd+HB6fiL52iEVLKqE9N1JSlMXLR92Ijm6g8PZrwIxckgpqjPDWRP5TWxdiPaHR+alUWsnu1ShQOwt+Q==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "chalk": "^4.1.0",
+ "hash-sum": "^2.0.0",
+ "loader-utils": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
+ "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "optional": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "optional": true
+ },
+ "loader-utils": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
+ "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^2.1.2"
+ }
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
"vue-router": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.5.1.tgz",
diff --git a/app/package.json b/app/package.json
index 5a81b7f..56d9d6f 100644
--- a/app/package.json
+++ b/app/package.json
@@ -3,7 +3,7 @@
"version": "0.1.0",
"private": true,
"scripts": {
- "serve": "vue-cli-service serve",
+ "serve": "vue-cli-service serve --port 3000",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
diff --git a/app/public/index.html b/app/public/index.html
index 3e5a139..6702573 100644
--- a/app/public/index.html
+++ b/app/public/index.html
@@ -5,6 +5,8 @@
+
+
<%= htmlWebpackPlugin.options.title %>
diff --git a/app/src/App.vue b/app/src/App.vue
index cb403f4..e92298c 100644
--- a/app/src/App.vue
+++ b/app/src/App.vue
@@ -1,10 +1,44 @@
-
-
-
+
+
+
diff --git a/app/src/components/AssetGroup.vue b/app/src/components/AssetGroup.vue
new file mode 100644
index 0000000..c0a3553
--- /dev/null
+++ b/app/src/components/AssetGroup.vue
@@ -0,0 +1,201 @@
+
+
+
歷史報表檢視
+
+
+ 歷史報表 -- 共 {{reports.length}} 筆
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 重新產生報表
+
+
+ 以選定日期重新產生報表, 不會發送 Email 及 FTP
+
+
+
+
+
+ {{item.fileName}}
+
+
+
+
+ {{snackbarMessage}}.
+
+
+
+
diff --git a/app/src/components/FileAndData.vue b/app/src/components/FileAndData.vue
new file mode 100644
index 0000000..3c5c7d7
--- /dev/null
+++ b/app/src/components/FileAndData.vue
@@ -0,0 +1,8 @@
+
+
+
+
diff --git a/app/src/components/Hardware.vue b/app/src/components/Hardware.vue
new file mode 100644
index 0000000..2038360
--- /dev/null
+++ b/app/src/components/Hardware.vue
@@ -0,0 +1,153 @@
+
+
+
+
+
+
+
+
+
+ mdi-plus-circle
+ 新增
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/components/Home.vue b/app/src/components/Home.vue
index e69de29..a7f349a 100644
--- a/app/src/components/Home.vue
+++ b/app/src/components/Home.vue
@@ -0,0 +1,154 @@
+
+
+
+
+
+
+
+
+
+ {{ item.text }}
+
+
+
+
+
+ {{ child.icon }}
+
+
+
+ {{ child.text }}
+
+
+
+
+
+
+ {{ item.icon }}
+
+
+
+ {{ item.text }}
+
+
+
+
+
+
+
+
+
+ 資訊資產管理系統
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ message }}
+
+ Close
+
+
+
+
+
+
diff --git a/app/src/components/Login.vue b/app/src/components/Login.vue
index afeb6ba..416b1e6 100644
--- a/app/src/components/Login.vue
+++ b/app/src/components/Login.vue
@@ -1,10 +1,128 @@
-
- Login
-
+
+
+
+
+
+
+ 資訊資產管理系統
+
+
+
+
+
+
+
+
+
+
+
+ Login
+
+
+
+
+
+
+ {{ message }}
+
+ Close
+
+
+
diff --git a/app/src/components/Person.vue b/app/src/components/Person.vue
new file mode 100644
index 0000000..3c5c7d7
--- /dev/null
+++ b/app/src/components/Person.vue
@@ -0,0 +1,8 @@
+
+
+
+
diff --git a/app/src/components/Software.vue b/app/src/components/Software.vue
new file mode 100644
index 0000000..3c5c7d7
--- /dev/null
+++ b/app/src/components/Software.vue
@@ -0,0 +1,8 @@
+
+
+
+
diff --git a/app/src/main.js b/app/src/main.js
index a9e1696..7804664 100644
--- a/app/src/main.js
+++ b/app/src/main.js
@@ -6,12 +6,12 @@ import router from './router/index'
import axios from './plugins/axios'
import vuetify from '@/plugins/vuetify'
-Vue.config.productionTip = false
+Vue.config.productionTip = false;
+Vue.prototype.$axios = axios;
new Vue({
router,
- axios,
vuetify,
render: h => h(App),
-}).$mount('#app')
+}).$mount('#app');
diff --git a/app/src/plugins/axios.js b/app/src/plugins/axios.js
index f4746ac..f7d79d5 100644
--- a/app/src/plugins/axios.js
+++ b/app/src/plugins/axios.js
@@ -2,11 +2,11 @@ import axios from 'axios';
//在開發環境中的測試 development
if(process.env.NODE_ENV === 'development') {
- axios.defaults.baseURL = '/'
+ axios.defaults.baseURL = '/api'
}
//在生產環境中的測試 production
if(process.env.NODE_ENV === 'production') {
- axios.defaults.baseURL = '/'
+ axios.defaults.baseURL = '/api'
}
axios.defaults.headers.post['Content-Type'] = 'charset=utf-8';
axios.defaults.headers.common.Pragma = 'no-cache';
diff --git a/app/src/router/index.js b/app/src/router/index.js
index 5d3ef4d..04e9b55 100644
--- a/app/src/router/index.js
+++ b/app/src/router/index.js
@@ -1,29 +1,53 @@
import Vue from 'vue'
import Router from 'vue-router'
import Login from '@/components/Login'
+import Home from "../components/Home";
+import AssetGroup from "../components/AssetGroup";
+import Hardware from "../components/Hardware";
+import Software from "../components/Software";
+import FileAndData from "../components/FileAndData";
+import Person from "../components/Person";
-Vue.use(Router)
+Vue.use(Router);
export const constantRoutes = [
{
- path: '/',
- alias: '/login',
+ path: '/login',
+ name: 'login',
component: Login,
},
- // {
- // path: '/',
- // component: ,
- // name: '',
- // children: [
- // {
- // path: '',
- // component: () => import(''),
- // name: '',
- // meta: {
- // },
- // },
- // ],
- // },
+ {
+ path: '/home',
+ component: Home,
+ name: 'home',
+ children: [
+ {
+ path: '/asset_group',
+ name: 'asset_group',
+ component: AssetGroup
+ },
+ {
+ path: '/hardware',
+ name: 'hardware',
+ component: Hardware
+ },
+ {
+ path: '/software',
+ name: 'software',
+ component: Software
+ },
+ {
+ path: '/fileAndData',
+ name: 'fileAndData',
+ component: FileAndData
+ },
+ {
+ path: '/person',
+ name: 'person',
+ component: Person
+ },
+ ]
+ }
];
export default new Router({
diff --git a/pom.xml b/pom.xml
index 0531a48..11c0e84 100644
--- a/pom.xml
+++ b/pom.xml
@@ -57,6 +57,10 @@
test
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+
org.jdbi
@@ -92,6 +96,17 @@
1.18.16
true
+
+
+ org.slf4j
+ slf4j-api
+ 1.7.30
+
+
+ org.slf4j
+ slf4j-simple
+ 1.7.30
+
diff --git a/src/main/java/com/moze/rms/RmsApplication.java b/src/main/java/com/moze/rms/RmsApplication.java
index a66b21d..1ba9ec0 100644
--- a/src/main/java/com/moze/rms/RmsApplication.java
+++ b/src/main/java/com/moze/rms/RmsApplication.java
@@ -3,9 +3,10 @@ package com.moze.rms;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
-public class RmsApplication {
+public class RmsApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(RmsApplication.class, args);
diff --git a/src/main/java/com/moze/rms/config/JdbiFactory.java b/src/main/java/com/moze/rms/config/JdbiFactory.java
new file mode 100644
index 0000000..0bb8443
--- /dev/null
+++ b/src/main/java/com/moze/rms/config/JdbiFactory.java
@@ -0,0 +1,55 @@
+package com.moze.rms.config;
+
+import com.moze.rms.dao.HardwareDAO;
+import org.jdbi.v3.core.Jdbi;
+import org.jdbi.v3.core.statement.SqlLogger;
+import org.jdbi.v3.core.statement.StatementContext;
+import org.jdbi.v3.sqlobject.SqlObjectPlugin;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy;
+
+import javax.sql.DataSource;
+
+@Configuration
+public class JdbiFactory {
+
+ @Autowired
+ DataSource dataSource;
+
+ @Bean
+ public Jdbi getInstance() {
+ TransactionAwareDataSourceProxy proxy = new TransactionAwareDataSourceProxy(dataSource);
+ Jdbi jdbi = Jdbi.create(proxy);
+ jdbi.setSqlLogger(new SqlLogger() {
+ @Override
+ public void logBeforeExecution(StatementContext ctx) {
+ if (ctx.getStatement() != null)
+ System.out.println(ctx.getStatement().toString());
+ }
+// @Override
+// public void logAfterExecution(StatementContext context) {
+//// jdbi.setSqlLogger(SqlLogger.NOP_SQL_LOGGER);
+// }
+// @Override
+// public void logException(StatementContext context, SQLException ex) {
+//// jdbi.setSqlLogger(SqlLogger.NOP_SQL_LOGGER);
+// }
+ });
+ return jdbi.installPlugin(new SqlObjectPlugin());
+ }
+// @Bean
+// public Jdbi jdbi(DataSource ds, List jdbiPlugins, List> rowMappers) {
+// TransactionAwareDataSourceProxy proxy = new TransactionAwareDataSourceProxy(ds);
+// Jdbi jdbi = Jdbi.create(proxy);
+// jdbiPlugins.forEach(plugin -> jdbi.installPlugin(plugin));
+// rowMappers.forEach(mapper -> jdbi.registerRowMapper(mapper));
+// return jdbi;
+// }
+
+ @Bean
+ public HardwareDAO hardwareDAO(Jdbi jdbi) {
+ return jdbi.onDemand(HardwareDAO.class);
+ }
+}
diff --git a/src/main/java/com/moze/rms/controller/HardwareController.java b/src/main/java/com/moze/rms/controller/HardwareController.java
new file mode 100644
index 0000000..73b78c3
--- /dev/null
+++ b/src/main/java/com/moze/rms/controller/HardwareController.java
@@ -0,0 +1,23 @@
+package com.moze.rms.controller;
+
+import com.moze.rms.dao.HardwareDAO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/api/hardware")
+public class HardwareController {
+
+ @Autowired
+ HardwareDAO hardwareDAO;
+
+ @GetMapping("/hardwares")
+ public JsonResult getHardwares() {
+
+ return new JsonResult(StatusCode.SUCCESS, hardwareDAO.findAll());
+ }
+
+
+}
diff --git a/src/main/java/com/moze/rms/controller/JsonResult.java b/src/main/java/com/moze/rms/controller/JsonResult.java
new file mode 100644
index 0000000..9d7bade
--- /dev/null
+++ b/src/main/java/com/moze/rms/controller/JsonResult.java
@@ -0,0 +1,19 @@
+package com.moze.rms.controller;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+public class JsonResult {
+
+ private int code;
+ private String message;
+ private Object data;
+
+ public JsonResult(StatusCode statusCode, Object data) {
+ this.code = statusCode.getCode();
+ this.message = statusCode.getMessage();
+ this.data = data;
+ }
+}
diff --git a/src/main/java/com/moze/rms/controller/StatusCode.java b/src/main/java/com/moze/rms/controller/StatusCode.java
new file mode 100644
index 0000000..3c079f1
--- /dev/null
+++ b/src/main/java/com/moze/rms/controller/StatusCode.java
@@ -0,0 +1,55 @@
+package com.moze.rms.controller;
+
+public enum StatusCode {
+
+ /** 成功 */
+ SUCCESS(200, "成功"),
+
+ /** 沒有登入 */
+ NOT_LOGIN(400, "帳號或密碼錯誤"),
+
+ /** 發生異常 */
+ EXCEPTION(401, "發生異常"),
+
+ /** 系統錯誤 */
+ SYS_ERROR(402, "系統錯誤"),
+
+ /** 引數錯誤 */
+ PARAMS_ERROR(403, "引數錯誤 "),
+
+ /** 不支援或已經廢棄 */
+ NOT_SUPPORTED(410, "不支援或已經廢棄"),
+
+ /** AuthCode錯誤 */
+ INVALID_AUTHCODE(444, "無效的AuthCode"),
+
+ /** 太頻繁的呼叫 */
+ TOO_FREQUENT(445, "太頻繁的呼叫"),
+
+ /** 未知的錯誤 */
+ UNKNOWN_ERROR(499, "未知錯誤");
+
+ private int code;
+ private String message;
+
+ StatusCode(int code, String message) {
+ this.code = code;
+ this.message = message;
+ }
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+}
diff --git a/src/main/java/com/moze/rms/dao/HardwareDAO.java b/src/main/java/com/moze/rms/dao/HardwareDAO.java
new file mode 100644
index 0000000..53b7739
--- /dev/null
+++ b/src/main/java/com/moze/rms/dao/HardwareDAO.java
@@ -0,0 +1,18 @@
+package com.moze.rms.dao;
+
+
+import com.moze.rms.entity.model.Hardware;
+import org.jdbi.v3.sqlobject.config.RegisterBeanMapper;
+import org.jdbi.v3.sqlobject.statement.SqlQuery;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@RegisterBeanMapper(Hardware.class)
+public interface HardwareDAO {
+
+ @SqlQuery("select * from hardware;")
+ List findAll();
+
+
+}
diff --git a/src/main/java/com/moze/rms/entity/model/Hardware.java b/src/main/java/com/moze/rms/entity/model/Hardware.java
new file mode 100644
index 0000000..5ffd728
--- /dev/null
+++ b/src/main/java/com/moze/rms/entity/model/Hardware.java
@@ -0,0 +1,23 @@
+package com.moze.rms.entity.model;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+public class Hardware {
+ private String hostname;
+ private String type;
+ private String descript;
+ private String ip1;
+ private String ip2;
+ private String model;
+ private String environment;
+ private String position;
+ private String position_number;
+ private Integer amount;
+ private String owner_department;
+ private String keep_department;
+ private String keeper;
+ private String remark;
+}
diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties
index 600e1fd..2396860 100644
--- a/src/main/resources/application-dev.properties
+++ b/src/main/resources/application-dev.properties
@@ -1,6 +1,8 @@
server.servlet.context-path=/
-spring.datasource.url=jdbc:postgresql://
-spring.datasource.username=
-spring.datasource.password=
+spring.datasource.url=jdbc:postgresql://172.105.222.191:54132/rms
+spring.datasource.username=moze
+spring.datasource.password=moze794064,!
+
+
diff --git a/src/main/resources/application-pro.properties b/src/main/resources/application-pro.properties
index 67722bc..05feec1 100644
--- a/src/main/resources/application-pro.properties
+++ b/src/main/resources/application-pro.properties
@@ -1,3 +1,3 @@
-spring.datasource.url=jdbc:postgresql://
-spring.datasource.username=
-spring.datasource.password=
\ No newline at end of file
+spring.datasource.url=jdbc:postgresql://172.105.222.191:54132/rms
+spring.datasource.username=moze
+spring.datasource.password=moze794064,!
\ No newline at end of file