springboot vue 大连动物园动物信息管理系统设计与实现

博主介绍:专注于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

年龄


7

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

-

动物知识编号


4

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

公告标题


7

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 饲养员被分配动物园场馆信息图


大家点赞、收藏、关注、评论啦  其他的定制服务 商务合作  下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

翰文编程

你的鼓励 是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值