Author home page:Li Yangyong
Introduction: a high-quality creator in Java field and a public author of [Java Li Yang Yong] ✌ Resume template, learning materials, interview question bank [pay attention to me and give it to you]
🍅At the end of the article, get the source code, contact and send the book🍅
preface:
With the progress of society and the development of science and technology, more and more people pursue novel, unique and practical living, working and learning environment. Therefore, in today’s architectural decoration engineering, we should not only consider the needs of customers and the coordination and unity with the building structure, but also consider the cost and construction organization arrangement. Therefore, modern decoration engineering is a relatively cumbersome but must be done well. While completing the work content with quality and quantity, we should also ensure the standard data of construction acceptance, basically understand various process flows and characteristics in the construction process through learning java related development knowledge for a period of time, and simply make a decoration acceptance management system by using javaspringboot + layui, which is suitable for simple learning and reference.
Main design:
- Hydropower acceptance
Main functions:
(1) List query
Functions: query, add, modify, delete and export.
Query fields: serial number, project name, project type, project address, entered by, entered date, person in charge of the site, designer, supervisor, contract amount, construction date, end date, material brand, construction personnel, appraisal results and remarks.
(2) Business document
Function: add hydropower assessment content
Operation fields: project name, project type, project address, input person, input date, person in charge of the site, designer, supervisor, contract amount, construction date, end date, material brand, construction personnel, assessment results and remarks.
- Bricklayer acceptance
(1) List query
Functions: query, add, modify, delete and export.
Query fields: serial number, project name, project type, project address, entered by, entered date, person in charge of the site, designer, supervisor, contract amount, construction date, end date, material brand, construction personnel, appraisal results and remarks.
(2) Business document
Function: add bricklayer assessment content
Operation fields: project name, project type, project address, input person, input date, person in charge of the site, designer, supervisor, contract amount, construction date, end date, material brand, construction personnel, assessment results and remarks.
- Woodworking acceptance
(1) List query
Functions: query, add, modify, delete and export.
Query fields: serial number, project name, project type, project address, entered by, entered date, person in charge of the site, designer, supervisor, contract amount, construction date, end date, material brand, construction personnel, appraisal results and remarks.
(2) Business document
Function: add carpentry assessment content
Operation fields: project name, project type, project address, input person, input date, person in charge of the site, designer, supervisor, contract amount, construction date, end date, material brand, construction personnel, assessment results and remarks.
- Painter acceptance
(1) List query
Functions: query, add, modify, delete and export.
Query fields: serial number, project name, project type, project address, entered by, entered date, person in charge of the site, designer, supervisor, contract amount, construction date, end date, material brand, construction personnel, appraisal results and remarks.
(2) Business document
Function: add paint assessment content
Operation fields: project name, project type, project address, input person, input date, person in charge of the site, designer, supervisor, contract amount, construction date, end date, material brand, construction personnel, assessment results and remarks.
- Acceptance after construction
(1) List query
Functions: query, add, modify, delete and export.
Query fields: serial number, project name, project type, project address, entered by, entered date, person in charge of the site, designer, supervisor, contract amount, construction date, end date, material brand, construction personnel, appraisal results and remarks.
(2) Business document
Function: add construction end assessment content
Operation fields: project name, project type, project address, input person, input date, person in charge of the site, designer, supervisor, contract amount, construction date, end date, material brand, construction personnel, assessment results and remarks.
Function screenshot:
Administrator login:
System home page:
User management:
Role management:
Menu management:
SQL monitoring:
Hydropower acceptance:
Data export:
Woodworking acceptance:
Change Password:
Code implementation:
Decoration acceptance controller:
@RestController
@RequestMapping("/sys/ysWater")
public class YsWaterController extends AbstractController {
@Autowired
private YsWaterService ysWaterervice;
@Autowired
private YsWaterServiceImpl ysWaterServiceImpl;
@RequestMapping("/waterList")
public R waterList(@RequestParam Map<String, Object> params){
params. Put ("ystype", "hydropower decoration acceptance");
PageUtils page = ysWaterervice.queryPage(params);
return R.ok().put("page", page);
}
@RequestMapping("/waterDjList")
public R waterDjList(@RequestParam Map<String, Object> params){
params. Put ("ystype", "water and electricity business document");
PageUtils page = ysWaterervice.queryPage(params);
return R.ok().put("page", page);
}
@RequestMapping("/wgList")
public R wgList(@RequestParam Map<String, Object> params){
params. Put ("ystype", "bricklayer decoration acceptance");
PageUtils page = ysWaterervice.queryPage(params);
return R.ok().put("page", page);
}
@RequestMapping("/wgDjList")
public R wgDjList(@RequestParam Map<String, Object> params){
params. Put ("ystype", "bricklayer business document");
PageUtils page = ysWaterervice.queryPage(params);
return R.ok().put("page", page);
}
@RequestMapping("/mgList")
public R mgList(@RequestParam Map<String, Object> params){
params. Put ("ystype", "woodworking decoration acceptance");
PageUtils page = ysWaterervice.queryPage(params);
return R.ok().put("page", page);
}
@RequestMapping("/mgDjList")
public R mgDjList(@RequestParam Map<String, Object> params){
params. Put ("ystype", "woodworking business document");
PageUtils page = ysWaterervice.queryPage(params);
return R.ok().put("page", page);
}
@RequestMapping("/yqgList")
public R yqgList(@RequestParam Map<String, Object> params){
params. Put ("ystype", "painter decoration acceptance");
PageUtils page = ysWaterervice.queryPage(params);
return R.ok().put("page", page);
}
@RequestMapping("/yqgDjList")
public R yqgDjList(@RequestParam Map<String, Object> params){
params. Put ("ystype", "painter business document");
PageUtils page = ysWaterervice.queryPage(params);
return R.ok().put("page", page);
}
@RequestMapping("/sgjsList")
public R sgjsList(@RequestParam Map<String, Object> params){
params. Put ("ystype", "construction completion acceptance");
PageUtils page = ysWaterervice.queryPage(params);
return R.ok().put("page", page);
}
@RequestMapping("/sgjsDjList")
public R sgjsDjList(@RequestParam Map<String, Object> params){
params. Put ("ystype", "construction completion business document");
PageUtils page = ysWaterervice.queryPage(params);
return R.ok().put("page", page);
}
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
YsWater ysWater = ysWaterervice.getById(id);
return R.ok().put("ysWater", ysWater);
}
@RequestMapping("/export")
public R save(HttpServletResponse response, HttpServletRequest request){
try {
ysWaterServiceImpl.outExcelByMealOrReserve(getParametersMap(request),response);
} catch (Exception e) {
e.printStackTrace();
}
return R.ok();
}
/**
*Assemble all parameters into a map
* @return
*/
private Map<String, String> getParametersMap(HttpServletRequest request) throws UnsupportedEncodingException {
Map<String, String> map = new HashMap<String, String>();
Enumeration<String> paramNames = request.getParameterNames();
String encoding = request.getCharacterEncoding();
while (paramNames.hasMoreElements()) {
String paramName = paramNames.nextElement();
String[] paramValues = request.getParameterValues(paramName);
if (paramValues.length == 1) {
String paramValue = paramValues[0];
if (paramValue.length() != 0) {
if (!encoding.toUpperCase().equals("UTF-8")) {
map.put(paramName, new String(paramValue.getBytes("ISO-8859-1"),"UTF-8"));
} else {
map.put(paramName, paramValue);
}
}
}
}
return map;
}
@RequestMapping("/save")
public R save(@RequestBody YsWater ysWater){
ysWaterervice.save(ysWater);
return R.ok();
}
@RequestMapping("/update")
public R update(@RequestBody YsWater ysWater){
ysWaterervice.updateById(ysWater);
return R.ok();
}
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
ysWaterervice.removeByIds(Arrays.asList(ids));
return R.ok();
}
}
User permission interception and release:
/**
*Shiro's profile
*
*/
@Configuration
public class ShiroConfig {
/**
*In a stand-alone environment, the session is managed by Shiro
*/
@Bean
@ConditionalOnProperty(prefix = "renren", name = "cluster", havingValue = "false")
public DefaultWebSessionManager sessionManager(@Value("${renren.globalSessionTimeout:3600}") long globalSessionTimeout){
DefaultWebSessionManager sessionManager = new DefaultWebSessionManager();
sessionManager.setSessionValidationSchedulerEnabled(true);
sessionManager.setSessionIdUrlRewritingEnabled(false);
sessionManager.setSessionValidationInterval(globalSessionTimeout * 1000);
sessionManager.setGlobalSessionTimeout(globalSessionTimeout * 1000);
return sessionManager;
}
/**
*In the cluster environment, the session is managed by spring session
*/
@Bean
@ConditionalOnProperty(prefix = "renren", name = "cluster", havingValue = "true")
public ServletContainerSessionManager servletContainerSessionManager() {
return new ServletContainerSessionManager();
}
@Bean("securityManager")
public SecurityManager securityManager(UserRealm userRealm, SessionManager sessionManager) {
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
securityManager.setCacheManager(new EhCacheManager());
securityManager.setRealm(userRealm);
securityManager.setSessionManager(sessionManager);
securityManager.setRememberMeManager(null);
return securityManager;
}
@Bean("shiroFilter")
public ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager) {
ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean();
shiroFilter.setSecurityManager(securityManager);
shiroFilter.setLoginUrl("/login.html");
shiroFilter.setUnauthorizedUrl("/");
Map<String, String> filterMap = new LinkedHashMap<>();
filterMap.put("/swagger/**", "anon");
filterMap.put("/v2/api-docs", "anon");
filterMap.put("/swagger-ui.html", "anon");
filterMap.put("/webjars/**", "anon");
filterMap.put("/swagger-resources/**", "anon");
filterMap.put("/statics/**", "anon");
filterMap.put("/login.html", "anon");
filterMap.put("/sys/login", "anon");
filterMap.put("/favicon.ico", "anon");
filterMap.put("/captcha.jpg", "anon");
filterMap.put("/**", "authc");
shiroFilter.setFilterChainDefinitionMap(filterMap);
return shiroFilter;
}
@Bean("lifecycleBeanPostProcessor")
public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {
return new LifecycleBeanPostProcessor();
}
@Bean
public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor();
advisor.setSecurityManager(securityManager);
return advisor;
}
}
Database design:
Database name:renren_zxys
Document version:V1.0.0
Document description:Decoration acceptance database table design description
Table sys_ Config (system configuration information table)
number |
name |
data type |
length |
Decimal places |
Null value allowed |
Primary key |
explain |
1 |
id |
bigint |
20 |
0 |
N |
Y |
|
2 |
param_key |
varchar |
50 |
0 |
Y |
N |
key |
3 |
param_value |
varchar |
2000 |
0 |
Y |
N |
value |
4 |
status |
tinyint |
4 |
0 |
Y |
N |
Status} 0: hide} 1: Show |
5 |
remark |
varchar |
500 |
0 |
Y |
N |
remarks |
Table sys_ Dept (Department Management)
number |
name |
data type |
length |
Decimal places |
Null value allowed |
Primary key |
explain |
1 |
dept_id |
bigint |
20 |
0 |
N |
Y |
|
2 |
parent_id |
bigint |
20 |
0 |
Y |
N |
Parent department ID, first level department is 0 |
3 |
name |
varchar |
50 |
0 |
Y |
N |
Department name |
4 |
order_num |
int |
10 |
0 |
Y |
N |
sort |
5 |
del_flag |
tinyint |
4 |
0 |
Y |
N |
Delete – 1: deleted 0: normal |
Table sys_ Dict (data dictionary table)
number |
name |
data type |
length |
Decimal places |
Null value allowed |
Primary key |
explain |
1 |
id |
bigint |
20 |
0 |
N |
Y |
|
2 |
name |
varchar |
100 |
0 |
N |
N |
Dictionary name |
3 |
type |
varchar |
100 |
0 |
Y |
N |
Dictionary type |
4 |
code |
varchar |
100 |
0 |
Y |
N |
Dictionary code |
5 |
value |
varchar |
1000 |
0 |
Y |
N |
Dictionary value |
6 |
order_num |
int |
10 |
0 |
Y |
N |
sort |
7 |
remark |
varchar |
255 |
0 |
Y |
N |
remarks |
8 |
del_flag |
tinyint |
4 |
0 |
Y |
N |
Delete tag – 1: deleted 0: normal |
Table sys_ Log (system log)
number |
name |
data type |
length |
Decimal places |
Null value allowed |
Primary key |
explain |
1 |
id |
bigint |
20 |
0 |
N |
Y |
|
2 |
username |
varchar |
50 |
0 |
Y |
N |
user name |
3 |
operation |
varchar |
50 |
0 |
Y |
N |
User operation |
4 |
method |
varchar |
200 |
0 |
Y |
N |
Request method |
5 |
params |
varchar |
5000 |
0 |
Y |
N |
Request parameters |
6 |
time |
bigint |
20 |
0 |
N |
N |
Execution time (MS) |
7 |
ip |
varchar |
64 |
0 |
Y |
N |
IP address |
8 |
create_date |
datetime |
19 |
0 |
Y |
N |
Creation time |
Table sys_ Menu (menu management)
number |
name |
data type |
length |
Decimal places |
Null value allowed |
Primary key |
explain |
1 |
menu_id |
bigint |
20 |
0 |
N |
Y |
|
2 |
parent_id |
bigint |
20 |
0 |
Y |
N |
Parent menu ID, first level menu is 0 |
3 |
name |
varchar |
50 |
0 |
Y |
N |
Menu name |
4 |
url |
varchar |
200 |
0 |
Y |
N |
Menu URL |
5 |
perms |
varchar |
500 |
0 |
Y |
N |
Authorization (multiple are separated by commas, such as user: list, user: create) |
6 |
type |
int |
10 |
0 |
Y |
N |
Type 0: Catalog 1: menu 2: button |
7 |
icon |
varchar |
50 |
0 |
Y |
N |
Menu icon |
8 |
order_num |
int |
10 |
0 |
Y |
N |
sort |
Table sys_ Role
number |
name |
data type |
length |
Decimal places |
Null value allowed |
Primary key |
explain |
1 |
role_id |
bigint |
20 |
0 |
N |
Y |
|
2 |
role_name |
varchar |
100 |
0 |
Y |
N |
Role name |
3 |
remark |
varchar |
100 |
0 |
Y |
N |
remarks |
4 |
dept_id |
bigint |
20 |
0 |
Y |
N |
Department ID |
5 |
create_time |
datetime |
19 |
0 |
Y |
N |
Creation time |
Table sys_ role_ Dept (corresponding relationship between role and department)
number |
name |
data type |
length |
Decimal places |
Null value allowed |
Primary key |
explain |
1 |
id |
bigint |
20 |
0 |
N |
Y |
|
2 |
role_id |
bigint |
20 |
0 |
Y |
N |
Role ID |
3 |
dept_id |
bigint |
20 |
0 |
Y |
N |
Department ID |
Table sys_ role_ Menu (corresponding relationship between role and menu)
number |
name |
data type |
length |
Decimal places |
Null value allowed |
Primary key |
Default value |
explain |
1 |
id |
bigint |
20 |
0 |
N |
Y |
|
|
2 |
role_id |
bigint |
20 |
0 |
Y |
N |
|
Role ID |
3 |
menu_id |
bigint |
20 |
0 |
Y |
N |
|
Menu ID |
Table sys_ User (system user)
number |
name |
data type |
length |
Decimal places |
Null value allowed |
Primary key |
explain |
1 |
user_id |
bigint |
20 |
0 |
N |
Y |
|
2 |
username |
varchar |
50 |
0 |
N |
N |
user name |
3 |
password |
varchar |
100 |
0 |
Y |
N |
password |
4 |
salt |
varchar |
20 |
0 |
Y |
N |
salt |
5 |
|
varchar |
100 |
0 |
Y |
N |
mailbox |
6 |
mobile |
varchar |
100 |
0 |
Y |
N |
cell-phone number |
7 |
status |
tinyint |
4 |
0 |
Y |
N |
Status # 0: disabled # 1: normal |
8 |
dept_id |
bigint |
20 |
0 |
Y |
N |
Department ID |
9 |
create_time |
datetime |
19 |
0 |
Y |
N |
Creation time |
Table sys_ user_ Role (corresponding relationship between user and role)
number |
name |
data type |
length |
Decimal places |
Null value allowed |
Primary key |
explain |
1 |
id |
bigint |
20 |
0 |
N |
Y |
|
2 |
user_id |
bigint |
20 |
0 |
Y |
N |
User ID |
3 |
role_id |
bigint |
20 |
0 |
Y |
N |
Role ID |
Table YS_ water
number |
name |
data type |
length |
Decimal places |
Null value allowed |
Primary key |
explain |
1 |
id |
int |
10 |
0 |
N |
Y |
|
2 |
name |
varchar |
255 |
0 |
Y |
N |
entry name |
3 |
xm_type |
varchar |
255 |
0 |
Y |
N |
Project type |
4 |
xm_dizhi |
varchar |
255 |
0 |
Y |
N |
Project address |
5 |
username |
varchar |
255 |
0 |
Y |
N |
Entered by |
6 |
lr_time |
datetime |
19 |
0 |
Y |
N |
Entry date |
7 |
gz_username |
varchar |
255 |
0 |
Y |
N |
Site leader |
8 |
sjs |
varchar |
255 |
0 |
Y |
N |
designer |
9 |
jlry |
varchar |
255 |
0 |
Y |
N |
Supervision personnel |
10 |
money |
varchar |
255 |
0 |
Y |
N |
|
11 |
sg_time |
datetime |
19 |
0 |
Y |
N |
|
12 |
js_time |
datetime |
19 |
0 |
Y |
N |
|
13 |
clpp |
varchar |
255 |
0 |
Y |
N |
Material brand |
14 |
sg_username |
varchar |
255 |
0 |
Y |
N |
Construction personnel |
15 |
khjg |
varchar |
255 |
0 |
Y |
N |
Assessment results |
16 |
remark |
varchar |
255 |
0 |
Y |
N |
|
17 |
ys_type |
varchar |
255 |
0 |
Y |
N |
Acceptance type (water and electricity bricklayer, carpenter, painter) |
Personal summary:
After the recent mastery and learning of java object-oriented programming, front-end knowledge and Java framework, as well as the development of this education and teaching system during this period, I have better understood the importance of java learning. In developing which system this system is, I have completed many experiments and functional tests of the land management platform. During the system development and learning stage, I learned that I am familiar with Java, and then I can independently use relevant technologies. I found that it does have many conveniences, such as Java integrates abstraction and encapsulation, inheritance and polymorphism, The functions of code reuse and code expansion are realized, and the speed and efficiency of the overall software development are improved. For example, when the administrator adds a user, it reports Java Lang.nullpointexception. Solution: check the console print information, find that relevant information is not filled in when adding, and report to Java Lang.nullpointexception, the data item with empty user information found through power-off debugging, the user’s complete relevant information must be filled in when saving at the front end, or the database setting field can be empty. The main purpose of learning program design is to improve the key skills and technologies of program solutions to my actual problems.
Source code acquisition:
EverybodyLike, collect, follow and commentAhsee👇🏻👇🏻👇🏻WeChat official account for contact information👇🏻👇🏻👇🏻
Punch in article update156 / 365 days
Recommended subscription for wonderful column:stayColumn below👇🏻👇🏻👇🏻👇🏻
Fans in the review area are pumping books
You are welcome to put forward your opinions and suggestions in the comment area! (three high-quality comments and praise books are sent, and the physical picture is as follows)
Content introduction:
Java multithreading and big data processing practice explains the data processing of Java multithreading and mainstream big data middleware in detail. This book mainly talks about Java’s thread creation method and thread life cycle, which is convenient for us to manage multi-threaded thread groups and thread pools, set thread priorities, set guard threads, learn multi-threaded concurrent, synchronous and asynchronous operations, and understand Java’s multi-threaded concurrent processing tools (such as semaphores and multi-threaded counters). At the same time, the book also introduces spring boot, spring batch, quartz, Kafka and other big data middleware. This provides a good reference for readers learning java multithreading and big data processing. Multithreading and big data processing are the knowledge points that are easy to be asked in many development job interviews. Some important job interviews of front-line development will take multithreading as the final question or important investigation point. Therefore, learning many thread knowledge points is very useful for future development work and interview preparation for front-line development positions.
This book is not only suitable for students majoring in Computer Science in Colleges and universities, but also suitable for junior and intermediate developers engaged in software development related industries
JD self purchase link:
Dangdang self operated purchase link: