博主介绍:专注于Java(springboot ssm 等开发框架) vue .net php phython node.js uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了2000+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
更多项目地址 介绍
文末下方有源码获取地址
4.1 系统功能设计
大连动物园动物信息管理系统共分为两个部分,该系统包括前台和后台两大部分功能。前台主要提供动物信息浏览、公告信息查看、请假信息提交与查询、用户注册与登录、动物信息收藏、动物体重检测、系统简介查看以及动物知识浏览等服务。后台则涵盖了更为详细的管理功能,包括动物信息管理、动物医治信息管理、饲养员管理、动物知识管理、公告管理及公告类型管理、请假信息管理、体重检测管理以及个人信息修改等内容。整体结构旨在为用户和管理员提供全面、便捷的操作体验。如图4.1所示。
图4.1系统功能结构图
4.2 类图
在之前的系统分析中,大连动物园动物信息管理系统中的类对象,包括dongwujibenxinxiController(动物基本信息类),dongwuyizhiController(动物医治类),dongwuyuanController(动物园场馆类),dongwuzhishiController(动物知识类),dongwuzhongleiController(动物种类类), newsController(公告信息类),newstypeController(公告信息分类类),qingjiaxinxiController(请假信息类),siyangyuanController(饲养员类),siyangyuanfenpeiController(饲养员分配类), systemintroController(系统简介类),tizhongceliangController(体重测量类),,由于篇幅有限,主要列举说明它们之间存在的关系,基于这些对象及其关系,创建出关键类图,如图4.2所示。
图4.2 关键类图
4.3 序列图
4.3.1 管理员删除饲养员序列图
(1)管理员需要在登录框里填好自己的用户名、密码这些登录信息,系统会对填的信息做核对,核对完毕,管理员成功进入系统。
(2)管理员顺利登录后,会跳转到系统的主操作界面,然后在这个主界面里找到并点击进入专门管理饲养员信息的子模块。
(3)进入到饲养员管理模块后,会看到显示所有饲养员信息的列表页面。管理员找到想要删除的那个饲养员对应的行,点击行里“删除”这个操作按钮,系统就会执行删除指令,把该饲养员的资料从数据库里移除。
(4)等系统提示删除操作顺利完成,页面会自动刷新,又回到饲养员信息列表页,这时候就能看到被删除的饲养员信息已经被删除。
管理员删除饲养员的序列图,见图4.3所示。
图4.3 管理员删除饲养员序列图
4.3.2 管理员查找动物信息序列图
(1)管理员要操作动物信息管理功能,得先在系统登录页面把账号、密码这些登录信息填好。填完后系统就会去核对这些信息,核对完毕,管理员就能成功进入系统,接着就会跳到系统主页面。
(2)管理员进入到主页面之后,在页面上找那个“动物信息管理”的按钮或者链接,点一下就能进入动物信息管理的界面了,在这个界面里就能对动物信息进行各种操作。
(3)动物信息管理界面,管理员能看到一个输入框,在这里把要找的动物相关信息输进去。输入完毕就点搜索按钮,系统就会根据输入的信息去数据库里找对应的动物信息。
(4)系统搜索完毕,又会回到显示动物列表的页面。在这个页面上,会显示刚才搜索到的动物信息,以列表的形式展示。
管理员查找动物的序列图,见图4.4所示。
图4.4 管理员查找动物序列图
4.5 数据库设计
4.5.1 数据库概念设计
管理员实体,主要包括管理员编号,管理员姓名,管理员账号,管理员密码,管理员联系方式等属性。如图4.11所示。
图4.11 管理员实体属性图
动物医治信息实体,主要包括动物医治信息编号,动物信息编号,医治日期,医治状况等属性。如图4.12所示。
图4.12 动物医治信息实体属性图
动物基本信息实体,主要包括动物基本信息编号,动物名称,动物种类编号,动物详情,年龄,接种疫苗,动物性别,动物园场馆编号,动物图片,是否驱虫等属性。如图4.13所示。
图4.13动物基本信息实体属性图
动物园场馆信息实体,主要包括动物园场馆信息编号,场馆地址,场馆名称,场馆图片,开馆时间,联系方式,场馆简介等属性。如图4.14所示。
图4.14 动物园场馆信息实体属性图
动物种类信息实体,主要包括动物种类编号,创建时间,动物种类名称,图片等属性。如图4.15所示:
图4.15 动物种类信息图
4.5.2 数据库逻辑设计
数据库的逻辑结构设计,就是把E-R图形转换成数据库所接收的数据库的逻辑结构,在E-R图形中,其逻辑结构如下:以波浪线作为外部关键字,以水平线作为主关键字。
管理员(管理员编号,管理员姓名,管理员账号,管理员密码,管理员联系方式)
动物基本信息(动物基本信息编号,动物名称,动物种类编号,动物详情,年龄,接种疫苗,动物性别,动物园场馆编号,动物图片,是否驱虫)
动物医治信息(动物医治信息编号,动物基本信息编号,医治日期,医治状况)
动物园场馆信息(动物园场馆信息编号,场馆地址,场馆名称,场馆图片,开馆时间,联系方式,场馆简介)
动物知识(动物知识编号,标题,发布日期,知识分类,知识简介,知识内容,动物知识,动物基本信息编号,管理员编号)
动物种类(动物种类编号,种类名称,种类简介)
公告(公告编号,创建时间,公告内容,公告简介,公告图片,公告标题,公告类型,管理员编号,公告类型编号)
公告类型(公告类型编号,类型名称)
请假(请假编号,开始时间,请假天数,请假原因,是否审核,申请时间,审核回复,饲养员编号)
饲养员(饲养员编号,密码,饲养员电话,饲养员姓名,饲养员账号,饲养员头像,饲养员性别)
饲养员分配场馆(分配编号,创建时间,动物园场馆编号,分配备注,分配时间,饲养员编号)
体重(体重编号,测量日期,体重数据,体重情况,饲养员编号,动物基本信息编号)
4.5.3 数据库物理设计
管理员数据表(guanliyuan)其主要包括:管理员编号,管理员姓名,管理员账号,管理员密码,管理员联系方式等信息字段。如表4.1显示了表中各个字段的数据类型、大小以及简短描述。
表 4.1管理员数据表
序号 |
字段名称 |
数据类型 |
长度 |
主键 |
外键 |
描述 |
1 |
id |
bigint |
20 |
是 |
否 |
管理员编号 |
2 |
guanliyuanxingming |
varchar |
50 |
否 |
否 |
管理员姓名 |
续表 4.1管理员数据表
序号 |
字段名称 |
数据类型 |
长度 |
主键 |
外键 |
描述 |
3 |
guanliyuanzhanghao |
varchar |
30 |
否 |
否 |
管理员账号 |
4 |
guanliyuanmima |
varchar |
8 |
否 |
否 |
管理员密码 |
5 |
guanliyuanlianxifangshi |
varchar |
20 |
否 |
否 |
管理员联系方式 |
动物基本信息数据表(dongwuxinxi)其主要用来存储所有动物基本信息的信息:动物基本信息编号,动物名称,动物种类编号,动物详情,年龄,接种疫苗,动物性别,动物园场馆编号,动物图片,是否驱虫等信息字段。如表4.2显示了表中各个字段的数据类型、大小以及简短描述。
表 4.2动物基本信息数据表
序号 |
字段名称 |
数据类型 |
长度 |
主键 |
外键 |
描述 |
1 |
dongwumingcheng |
varchar |
100 |
否 |
否 |
动物名称 |
2 |
dongwuxiangqing |
longtext |
- |
否 |
否 |
动物详情 |
3 |
dongwuxingbie |
varchar |
10 |
否 |
否 |
动物性别 |
4 |
dongwuyuandizhi |
bigint |
20 |
否 |
是 |
动物园场馆编号 |
5 |
id |
bigint |
20 |
是 |
否 |
动物基本信息编号 |
6 |
nianling |
varchar |
10 |
否 |
否 |
年龄 |
|
shifoujiezhongyimiao |
varchar |
3 |
否 |
否 |
是否接种疫苗 |
8 |
shifouquchong |
varchar |
3 |
否 |
否 |
是否驱虫 |
续表 4.2动物基本信息数据表
序号 |
字段名称 |
数据类型 |
长度 |
主键 |
外键 |
描述 |
9 |
tupian |
longtext |
255 |
否 |
否 |
动物图片 |
10 |
dongwuzhonglei |
bigint |
20 |
否 |
是 |
动物种类编号 |
动物医治信息数据表(dongwuyizhi)其主要用来存储所有动物医治的信息:动物医治信息编号,动物基本信息编号,医治日期,医治状况等信息字段。表4.3显示了表中各个字段的数据类型、大小以及简短描述。
表 4.3动物医治信息数据表
序号 |
字段名称 |
数据类型 |
长度 |
主键 |
外键 |
描述 |
1 |
dongwujibenxinxi |
bigint |
20 |
否 |
是 |
动物基本信息编号 |
2 |
id |
bigint |
20 |
是 |
否 |
动物医治信息编号 |
3 |
yizhiriqi |
datetime |
- |
否 |
否 |
医治日期 |
4 |
yizhizhuangkuang |
longtext |
- |
否 |
否 |
医治状况 |
动物园场馆信息数据表(dongwuyuan)其主要用来存储所有动物园场馆的信息:动物园场馆信息编号,场馆地址,场馆名称,场馆图片,开馆时间,联系方式,场馆简介等信息字段。表4.4显示了表中各个字段的数据类型、大小以及简短描述。
表 4.4动物园场馆信息数据表
序号 |
字段名称 |
数据类型 |
长度 |
主键 |
外键 |
描述 |
1 |
kaiguanshijian |
varchar |
50 |
否 |
否 |
开馆时间 |
2 |
lianxifangshi |
varchar |
30 |
否 |
否 |
联系方式 |
3 |
changguanmingchen |
varchar |
100 |
否 |
否 |
场馆名称 |
4 |
dongwujieshao |
longtext |
- |
否 |
否 |
场馆简介 |
5 |
changguandizhi |
varchar |
200 |
否 |
否 |
场馆地址 |
续表 4.4动物园场馆信息数据表
序号 |
字段名称 |
数据类型 |
长度 |
主键 |
外键 |
描述 |
6 |
changguantupian |
longtext |
255 |
否 |
否 |
场馆图片 |
7 |
id |
bigint |
20 |
是 |
否 |
动物园场馆信息编号 |
动物知识信息数据表(dongwuzhishi)主要用来存储所有动物知识的信息:动物知识编号,标题,发布日期,知识分类,知识简介,知识内容,动物知识,动物基本信息编号,管理员编号等信息字段。表4.5显示了表中各个字段的数据类型、大小以及简短描述。
表 4.5动物知识信息数据表
序号 |
字段名称 |
数据类型 |
长度 |
主键 |
外键 |
描述 |
1 |
biaoti |
varchar |
255 |
否 |
否 |
标题 |
2 |
faburiqi |
datetime |
- |
否 |
否 |
发布日期 |
3 |
id |
bigint |
- |
是 |
否 |
动物知识编号 |
|
zhishineirong |
longtext |
- |
否 |
否 |
知识内容 |
5 |
zhishifenlei |
varchar |
100 |
否 |
否 |
知识分类 |
6 |
zhishijianjie |
longtext |
- |
否 |
否 |
知识简介 |
7 |
dongwuzhishi |
varchar |
500 |
否 |
否 |
动物知识 |
8 |
dongwujibnexinxibianhao |
bigint |
- |
否 |
是 |
动物基本信息编号 |
9 |
guanliyuanbianhao |
bigint |
- |
否 |
是 |
管理员编号 |
动物种类信息数据表(dongwuzhonglei)其主要用来存储所有动物种类的信息:动物种类编号,种类名称,种类简介等信息字段。表4.6显示了表中各个字段的数据类型、大小以及简短描述。
表 4.6动物种类信息数据表
序号 |
字段名称 |
数据类型 |
长度 |
主键 |
外键 |
描述 |
1 |
zhongleimingcheng |
varchar |
200 |
否 |
否 |
种类名称 |
续表 4.6动物种类信息数据表
序号 |
字段名称 |
数据类型 |
长度 |
主键 |
外键 |
描述 |
2 |
id |
bigint |
- |
是 |
否 |
动物种类编号 |
3 |
zhongleijianjie |
longtext |
- |
否 |
否 |
种类简介 |
公告信息数据表(news)其主要用来存储所有公告信息的信息:公告编号,创建时间,公告内容,公告简介,公告图片,公告标题,公告类型,管理员编号,公告类型编号等信息字段。表4.7显示了表中各个字段的数据类型、大小以及简短描述。
表 4.7公告信息数据表
序号 |
字段名称 |
数据类型 |
长度 |
主键 |
外键 |
描述 |
1 |
addtime |
datetime |
- |
否 |
否 |
创建时间 |
2 |
gonggaoneirong |
longtext |
255 |
否 |
否 |
公告内容 |
3 |
id |
bigint |
20 |
是 |
否 |
公告编号 |
4 |
gonggaojianjie |
varchar |
50 |
否 |
否 |
公告简介 |
5 |
picture |
longtext |
255 |
否 |
否 |
公告图片 |
6 |
title |
varchar |
100 |
否 |
否 |
公告标题 |
|
typename |
bigint |
20 |
否 |
是 |
管理员编号 |
8 |
gonggaoleixing |
bigint |
20 |
否 |
是 |
公告类型编号 |
公告信息分类数据表(newstype)其主要用来存储所有公告信息分类的信息:公告类型编号和类型名称等信息字段。表4.8显示了表中各个字段的数据类型、大小以及简短描述。
表 4.8公告信息分类数据表
序号 |
字段名称 |
数据类型 |
长度 |
主键 |
外键 |
描述 |
1 |
id |
bigint |
20 |
是 |
否 |
公告类型编号 |
2 |
typename |
varchar |
50 |
否 |
否 |
类型名称 |
请假信息数据表(qingjiaxinxi)其主要用来存储所有请假信息的信息:请假编号,开始时间,请假天数,请假原因,是否审核,申请时间,审核回复,饲养员编号等信息字段。表4.9显示了表中各个字段的数据类型、大小以及简短描述。
表 4.9请假信息数据表
序号 |
字段名称 |
数据类型 |
长度 |
主键 |
外键 |
描述 |
1 |
id |
bigint |
20 |
是 |
否 |
请假编号 |
2 |
kaishishijian |
date |
- |
否 |
否 |
开始时间 |
3 |
qingjiatianshu |
varchar |
10 |
否 |
否 |
请假天数 |
4 |
qingjiayuanyin |
longtext |
- |
否 |
否 |
请假原因 |
5 |
sfsh |
varchar |
10 |
否 |
否 |
是否审核 |
6 |
shenqingshijian |
date |
- |
否 |
否 |
申请时间 |
7 |
shhf |
longtext |
- |
否 |
否 |
审核回复 |
8 |
siyangyuanbianhao |
bigint |
20 |
否 |
是 |
饲养员编号 |
饲养员信息数据表(siyangyuan)其主要用来存储所有饲养员的信息:饲养员编号,密码,饲养员电话,饲养员姓名,饲养员账号,饲养员头像,饲养员性别等信息字段。表4.10显示了表中各个字段的数据类型、大小以及简短描述。
表 4.10饲养员信息数据表
序号 |
字段名称 |
数据类型 |
长度 |
主键 |
外键 |
描述 |
1 |
id |
bigint |
20 |
是 |
否 |
饲养员编号 |
2 |
mima |
varchar |
8 |
否 |
否 |
密码 |
3 |
siyangyuanxingming |
varchar |
100 |
否 |
否 |
饲养员姓名 |
4 |
siyangyuandianhua |
varchar |
50 |
否 |
否 |
饲养员电话 |
5 |
siyangyuanzhanghao |
varchar |
30 |
否 |
否 |
饲养员账号 |
6 |
siyangyuantouxiang |
longtext |
255 |
否 |
否 |
饲养员头像 |
7 |
siyangyuanxingbie |
varchar |
2 |
否 |
否 |
饲养员性别 |
饲养员分配场馆信息数据表(siyangyuanfenpei)其主要用来存储所有饲养员分配的信息:分配编号,创建时间,动物园场馆编号,分配备注,分配时间,饲养员编号等信息字段。表4.11显示了表中各个字段的数据类型、大小以及简短描述。
表 4.11饲养员分配场馆信息数据表
序号 |
字段名称 |
数据类型 |
长度 |
主键 |
外键 |
描述 |
1 |
addtime |
datetime |
- |
否 |
否 |
创建时间 |
2 |
dongwuyuanchangguanbianhao |
bigint |
20 |
否 |
是 |
动物园场馆编号 |
3 |
fenpeibeizhu |
varchar |
500 |
否 |
否 |
分配备注 |
4 |
fenpeishijian |
datetime |
- |
否 |
否 |
分配时间 |
5 |
id |
bigint |
20 |
是 |
否 |
分配编号 |
6 |
Siyangyuanbianhao |
bigint |
20 |
否 |
是 |
饲养员编号 |
体重测量信息数据表(tizhongceliang)其主要用来存储所有体重测量的信息:体重编号,测量日期,体重数据,体重情况,饲养员编号,动物信息编号等信息字段。表4.12显示了表中各个字段的数据类型、大小以及简短描述。
表 4.12体重测量信息数据表
序号 |
字段名称 |
数据类型 |
长度 |
主键 |
外键 |
描述 |
1 |
celiangriqi |
datetime |
- |
否 |
否 |
测量日期 |
2 |
id |
bigint |
20 |
是 |
否 |
体重编号 |
3 |
siyangzhanghao |
bigint |
20 |
否 |
是 |
饲养员编号 |
4 |
tizhongqingkuang |
varchar |
255 |
否 |
否 |
体重情况 |
5 |
tizhongshuju |
varchar |
200 |
否 |
否 |
体重数据 |
6 |
dongwuxinxibianhao |
bigint |
20 |
否 |
是 |
动物信息编号 |
第5章 系统实现
5.1 饲养员管理端管理功能的实现
5.1.1 查看系统首页
展现最新发布的动物信息,以及公告信息,同时展示最新发布的动物知识息,如图5.1所示。
图5.1 系统首页图
5.1.2动物知识浏览
进入动物知识信息列表页面,系统以列表方式展现已经发布的动物知识信息,可以通过点击动物知识,可以查看动物知识,如图5.2,5.3所示。
图5.2 动物知识浏览图
package com.controller;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;
import com.entity.DongwuxinxiEntity;
import com.entity.view.DongwuxinxiView;
import com.service.DongwuxinxiService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MPUtil;
import com.utils.MapUtils;
import com.utils.CommonUtil;
import java.io.IOException;
import com.service.StoreupService;
import com.entity.StoreupEntity;
/**
* 动物信息
* 后端接口
* @author
* @email
* @date 2030-01-26 10:06:20
*/
@RestController
@RequestMapping("/dongwuxinxi")
public class DongwuxinxiController {
@Autowired
private DongwuxinxiService dongwuxinxiService;
@Autowired
private StoreupService storeupService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,DongwuxinxiEntity dongwuxinxi,
HttpServletRequest request){
EntityWrapper<DongwuxinxiEntity> ew = new EntityWrapper<DongwuxinxiEntity>();
PageUtils page = dongwuxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, dongwuxinxi), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,DongwuxinxiEntity dongwuxinxi,
HttpServletRequest request){
EntityWrapper<DongwuxinxiEntity> ew = new EntityWrapper<DongwuxinxiEntity>();
PageUtils page = dongwuxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, dongwuxinxi), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( DongwuxinxiEntity dongwuxinxi){
EntityWrapper<DongwuxinxiEntity> ew = new EntityWrapper<DongwuxinxiEntity>();
ew.allEq(MPUtil.allEQMapPre( dongwuxinxi, "dongwuxinxi"));
return R.ok().put("data", dongwuxinxiService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(DongwuxinxiEntity dongwuxinxi){
EntityWrapper< DongwuxinxiEntity> ew = new EntityWrapper< DongwuxinxiEntity>();
ew.allEq(MPUtil.allEQMapPre( dongwuxinxi, "dongwuxinxi"));
DongwuxinxiView dongwuxinxiView = dongwuxinxiService.selectView(ew);
return R.ok("查询动物信息成功").put("data", dongwuxinxiView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
DongwuxinxiEntity dongwuxinxi = dongwuxinxiService.selectById(id);
return R.ok().put("data", dongwuxinxi);
}
/**
* 前端详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
DongwuxinxiEntity dongwuxinxi = dongwuxinxiService.selectById(id);
return R.ok().put("data", dongwuxinxi);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody DongwuxinxiEntity dongwuxinxi, HttpServletRequest request){
//ValidatorUtils.validateEntity(dongwuxinxi);
dongwuxinxiService.insert(dongwuxinxi);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody DongwuxinxiEntity dongwuxinxi, HttpServletRequest request){
//ValidatorUtils.validateEntity(dongwuxinxi);
dongwuxinxiService.insert(dongwuxinxi);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
@Transactional
public R update(@RequestBody DongwuxinxiEntity dongwuxinxi, HttpServletRequest request){
//ValidatorUtils.validateEntity(dongwuxinxi);
dongwuxinxiService.updateById(dongwuxinxi);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
dongwuxinxiService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
/**
* (按值统计)
*/
@RequestMapping("/value/{xColumnName}/{yColumnName}")
public R value(@PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName,HttpServletRequest request) {
Map<String, Object> params = new HashMap<String, Object>();
params.put("xColumn", xColumnName);
params.put("yColumn", yColumnName);
EntityWrapper<DongwuxinxiEntity> ew = new EntityWrapper<DongwuxinxiEntity>();
List<Map<String, Object>> result = dongwuxinxiService.selectValue(params, ew);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
for(Map<String, Object> m : result) {
for(String k : m.keySet()) {
if(m.get(k) instanceof Date) {
m.put(k, sdf.format((Date)m.get(k)));
}
}
}
return R.ok().put("data", result);
}
/**
* (按值统计(多))
*/
@RequestMapping("/valueMul/{xColumnName}")
public R valueMul(@PathVariable("xColumnName") String xColumnName,@RequestParam String yColumnNameMul, HttpServletRequest request) {
String[] yColumnNames = yColumnNameMul.split(",");
Map<String, Object> params = new HashMap<String, Object>();
params.put("xColumn", xColumnName);
List<List<Map<String, Object>>> result2 = new ArrayList<List<Map<String,Object>>>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
EntityWrapper<DongwuxinxiEntity> ew = new EntityWrapper<DongwuxinxiEntity>();
for(int i=0;i<yColumnNames.length;i++) {
params.put("yColumn", yColumnNames[i]);
List<Map<String, Object>> result = dongwuxinxiService.selectValue(params, ew);
for(Map<String, Object> m : result) {
for(String k : m.keySet()) {
if(m.get(k) instanceof Date) {
m.put(k, sdf.format((Date)m.get(k)));
}
}
}
result2.add(result);
}
return R.ok().put("data", result2);
}
/**
* (按值统计)时间统计类型
*/
@RequestMapping("/value/{xColumnName}/{yColumnName}/{timeStatType}")
public R valueDay(@PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName, @PathVariable("timeStatType") String timeStatType,HttpServletRequest request) {
Map<String, Object> params = new HashMap<String, Object>();
params.put("xColumn", xColumnName);
params.put("yColumn", yColumnName);
params.put("timeStatType", timeStatType);
EntityWrapper<DongwuxinxiEntity> ew = new EntityWrapper<DongwuxinxiEntity>();
List<Map<String, Object>> result = dongwuxinxiService.selectTimeStatValue(params, ew);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
for(Map<String, Object> m : result) {
for(String k : m.keySet()) {
if(m.get(k) instanceof Date) {
m.put(k, sdf.format((Date)m.get(k)));
}
}
}
return R.ok().put("data", result);
}
/**
* (按值统计)时间统计类型(多)
*/
@RequestMapping("/valueMul/{xColumnName}/{timeStatType}")
public R valueMulDay(@PathVariable("xColumnName") String xColumnName, @PathVariable("timeStatType") String timeStatType,@RequestParam String yColumnNameMul,HttpServletRequest request) {
String[] yColumnNames = yColumnNameMul.split(",");
Map<String, Object> params = new HashMap<String, Object>();
params.put("xColumn", xColumnName);
params.put("timeStatType", timeStatType);
List<List<Map<String, Object>>> result2 = new ArrayList<List<Map<String,Object>>>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
EntityWrapper<DongwuxinxiEntity> ew = new EntityWrapper<DongwuxinxiEntity>();
for(int i=0;i<yColumnNames.length;i++) {
params.put("yColumn", yColumnNames[i]);
List<Map<String, Object>> result = dongwuxinxiService.selectTimeStatValue(params, ew);
for(Map<String, Object> m : result) {
for(String k : m.keySet()) {
if(m.get(k) instanceof Date) {
m.put(k, sdf.format((Date)m.get(k)));
}
}
}
result2.add(result);
}
return R.ok().put("data", result2);
}
/**
* 分组统计
*/
@RequestMapping("/group/{columnName}")
public R group(@PathVariable("columnName") String columnName,HttpServletRequest request) {
Map<String, Object> params = new HashMap<String, Object>();
params.put("column", columnName);
EntityWrapper<DongwuxinxiEntity> ew = new EntityWrapper<DongwuxinxiEntity>();
List<Map<String, Object>> result = dongwuxinxiService.selectGroup(params, ew);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
for(Map<String, Object> m : result) {
for(String k : m.keySet()) {
if(m.get(k) instanceof Date) {
m.put(k, sdf.format((Date)m.get(k)));
}
}
}
return R.ok().put("data", result);
}
/**
* 总数量
*/
@RequestMapping("/count")
public R count(@RequestParam Map<String, Object> params,DongwuxinxiEntity dongwuxinxi, HttpServletRequest request){
EntityWrapper<DongwuxinxiEntity> ew = new EntityWrapper<DongwuxinxiEntity>();
int count = dongwuxinxiService.selectCount(MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, dongwuxinxi), params), params));
return R.ok().put("data", count);
}
}
图5.3 动物知识浏览图详细页面
5.1.3 动物园场馆基本信息浏览
进入动物园场馆信息列表页面,系统以列表方式展现已经发布的动物园场馆基本信息,可以通过点击动物园场馆,可以查看动物园场馆,并且可以查看对应场馆所分配的饲养员如图5.4,5.5,5.6所示。
图5.4 动物园场馆信息图
图5.5 动物园场馆信息图详细页面
图5.6 饲养员被分配动物园场馆信息图
大家点赞、收藏、关注、评论啦 其他的定制服务 商务合作 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者