新乡彩票网站建设,厦门注册公司网上申请入口,WordPress修改首页文章预览,ppt汇报模板下载TOC
springboot365高校疫情防控web系统pf
第1章 绪论
1.1 课题背景
互联网发展至今#xff0c;无论是其理论还是技术都已经成熟#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播#xff0c;搭配信息管理工具可以很好地为人们提供服务。所以各行…TOC
springboot365高校疫情防控web系统pf
第1章 绪论
1.1 课题背景
互联网发展至今无论是其理论还是技术都已经成熟而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播搭配信息管理工具可以很好地为人们提供服务。所以各行业尤其是规模较大的企业和学校等都开始借助互联网和软件工具管理信息传播信息共享信息等等以此可以增强自身实力提高在同行业当中的竞争能力并从各种激烈的竞争中获取发展的机会。针对健康信息申报信息管理混乱出错率高信息安全性差劳动强度大费时费力等问题经过分析和考虑在目前的情况下可以引进一款高校疫情防控这样的现代化管理工具这个工具就是解决上述问题的最好的解决方案。它不仅可以实时完成信息处理还缩短健康信息申报信息管理流程使其系统化和规范化。同时还可以减少工作量节约健康信息申报信息管理需要的人力和资金。所以高校疫情防控是信息管理环节中不可缺少的工具它对管理者来说非常重要。
1.2 课题意义
现如今信息种类变得越来越多信息的容量也变得越来越大这就是信息时代的标志。近些年计算机科学发展得也越来越快而且软件开发技术也越来越成熟因此在生活中的各个领域只要存在信息管理几乎都有计算机的影子可以说很多行业都采用计算机的方式管理信息。信息计算机化处理相比手工操作有着保密性强效率高存储空间大成本低等诸多优点。针对健康信息申报信息管理采用高校疫情防控可以有效管理使信息管理能够更加科学和规范。
总之在实际中使用高校疫情防控其意义如下
第一点高校疫情防控的实际运用可以帮助管理人员在短时间内完成信息处理工作
第二点通过系统页面的合理排版布局可以更加直观的展示系统的内容并且使用者可以随时阅读页面信息随时操作系统提供的功能
第三点可以实现信息管理计算机化
第四点可以降低信息管理成本
1.3 研究内容
对高校疫情防控设计制作不仅需要技术支撑也需要大量的理论研究。本文在对高校疫情防控进行介绍时将按照如下内容进行。
第一部分介绍高校疫情防控研究的背景意义便于用户了解系统
第二部分介绍开发高校疫情防控需要搭建的环境包括技术和工具
第三部分介绍用户对高校疫情防控的功能要求以及对高校疫情防控的性能要求等
第四部分介绍数据库的设计方案以及根据功能要求设计的功能结构
第五部分介绍通过编码最终实现的系统功能运行效果
第六部分介绍系统的功能测试对系统进行综合检测并及时解决系统出现的问题直至系统运行正常。
第2章 开发环境与技术
高校疫情防控的编码实现需要搭建一定的环境和使用相应的技术接下来的内容就是对高校疫情防控用到的技术和工具进行介绍。
2.1 MYSQL数据库
本课题所开发的应用程序在数据操作方面是不可预知的是经常变动的没有办法直接把数据写在文档里这样不仅仅不安全也不能实现应用程序的功能。如果要能实现应用程序所需要的数据存储功能就避免不了要进行专业数据库存储软件的选择。基本上应用程序实现的功能不算太复杂市面上任何一个关系型数据库软件都可以实现。参考自己的学习进度和操作习惯来讲Oracle数据库是适合的但是所需要的的安装软件很大并且有好多不需要的功能都是开启的状态十分消耗电脑资源所以没有选择Oracle数据库而SQL Server数据库虽然学过但是安装的时候因为电脑上可能有其他的软件存在经常性的出问题而安装问题不好解决就需要重新安装操作系统这样对已经存在的软件来讲又是一种时间上的浪费。只有MySQL数据库安装包小安装速度快操作简单哪怕安装出问题也好解决不用重装操作系统也不影响电脑上运行的其他软件消耗资源也少最重要的是在功能方面完全的符合设计需要所以最后选择了MySQL数据库作为应用软件开发需要的数据库。
2.2 vue技术
在动态网站的兴起之初作为高级编程语言的Java自然不会放弃这个领域的蛋糕。Sun公司推出了Servlet作为输出动态网站的一种技术标准虽然不怎么受当时程序员的喜爱但是当初也没有太多的选择随后几个月java语言问世不考虑性能和效率如何起码在书写网页所需要的动态代码块和静态代码块方面进行了区分让书写效率和可读效率大大的提升所以很多Java程序员以及刚入行的初级程序员都选择了java语言作为自己职业的发展方向Sun公司为了维护Java语言在高级编程语言上的江湖地位防止java继续抢走市场份额占有率Sun公司联合Apache基金会研发了一个关于Java动态网页的一个新型的技术标准这就是vue技术。vue吸取了java语言在页面书写上面的所有优点但是又背靠Java EE的庞大后台又能实现很多通过Java组件就能实现的功能在vue页面上可以直接引用那些组件让vue更加的强壮丰富。保证了Java技术纵向的可持续发展并且在动态网站开发领域终于站稳了脚跟其他java开发人员可以很快的转移到vue进行开发不考虑一些特殊组件或者功能的开发只从动态页面的开发上来讲完全实现了java程序和vue程序的几乎无成本的转换vue技术就这样的发展了起来。
2.3 Spring Boot框架
Spring Boot是由Pivotal团队提供的全新框架其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置从而使开发人员不再需要定义样板化的配置。通过这种方式Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
SpringBoot基于Spring4.0设计不仅继承了Spring框架原有的优秀特性而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突以及引用的不稳定性等问题得到了很好的解决。
SpringBoot框架中还有两个非常重要的策略开箱即用和约定优于配置。开箱即用Outofbox是指在开发过程中通过在MAVEN项目的pom文件中添加相关依赖包然后使用对应注解来代替繁琐的XML配置文件以管理对象的生命周期。这个特点使得开发人员摆脱了复杂的配置工作以及依赖的管理工作更加专注于业务逻辑。约定优于配置Convention over configuration是一种由SpringBoot本身来配置目标结构由开发者在结构中添加信息的软件设计范式。这一特点虽降低了部分灵活性增加了BUG定位的复杂性但减少了开发人员需要做出决定的数量同时减少了大量的XML配置并且可以将代码编译、测试和打包等工作自动化。
SpringBoot应用系统开发模板的基本架构设计从前端到后台进行说明前端常使用模板引擎主要有FreeMarker和Thymeleaf它们都是用Java语言编写的渲染模板并输出相应文本使得界面的设计与应用的逻辑分离同时前端开发还会使用到Bootstrap、AngularJS、JQuery等在浏览器的数据传输格式上采用Json非xml同时提供RESTfulAPISpringMVC框架用于数据到达服务器后处理请求到数据访问层主要有Hibernate、MyBatis、JPA等持久层框架数据库常用MySQL开发工具推荐IntelliJIDEA。
第3章 系统分析
面对即将开发的系统进行提前的分析是必要的。这也是开发流程中必须有的环节。通常分析系统期间主要涉及的内容包括系统开发可行性问题对系统功能和性能的分析等问题。
3.1 可行性分析
在正式对需要建设的项目进行投资前有一个比较关键的步骤是不能缺少的那就是可行性分析。它主要从当前技术经济等角度去评估系统的可行性在投资决策中常常采用这种科学的方法来论证项目。
3.1.1 技术可行性
当前系统开发的技术已经发展成熟而且通过计算机网络可以获取开发工具的使用方法以及规范化编写的模块化代码这些知识可以帮助开发者顺利完成本系统的编码工作。
3.1.2 经济可行性
本系统开发期间需要配置的软件环境可以免费通过开发类官网下载安装需要配置的硬件设备也不需要具备很高的性能通常网吧电脑或学校计算机机房的电脑都符合要求。因此从经济方面考虑高校疫情防控开发可行。
3.1.3 操作可行性
高校疫情防控根据用户使用习惯进行开发设计的界面具有统一性并具备优秀的导航功能。所以只要会简单操作电脑的人员可以无压力操作高校疫情防控。
总之从上述的论证来看本系统可以开发。
3.2 系统流程
流程图这样的工具可以直观反映出系统内部的操作逻辑可以帮助用户更好的理解系统。
3.2.1 操作流程
进入本系统需要访问者提供验证信息。验证合格的访问者才能获取访问资格。其具体的操作流程见下图。访问者根据登录界面设置的信息项如实填写待信息通过验证后访问者可以进入指定的页面享受本系统提供的服务和阅读本系统的相关信息。 图3.1 操作流程图
3.2.2 登录流程
本系统的登录模块其内部的流程见下图。主要对访问本系统的人员提供的验证信息进行逐个判断系统面对录入错误的信息会给出提示比如提示账号不对或提示密码不匹配等提示信息。总之在登录页面填写的所有信息都符合要求访问者就登录成功了。 图3.2 登录流程图
3.2.3 删除信息流程
本系统在经常性的使用后会产生很多失去价值的信息因此就需要及时清理数据腾出系统的空间。对这些数据进行清理时其对应的流程见下图。先选中要清理的数据通过反复确认需要清理的数据避免操作人员误删。已经删除的数据就不会出现在系统里面。 图3.3 删除信息流程图
3.2.4 添加信息流程
本系统主要用于显示信息提供服务其中数据添加功能就是其中的服务之一具体流程见下图。让操作者在信息添加的页面录入数据待这些数据被提交检验合格后就会在系统指定页面显示出来。 图3.4 添加信息流程图
3.3 性能需求
进行需求分析包括了根据用户实际需求制定功能也涵盖了对即将设计的系统进行性能上的需求分析。所以一般分析系统时一方面要分析系统功能另一方面也要分析系统的性能。毕竟设计开发出一个好性能的系统可以确保系统的质量可靠。
接下来分析系统的性能还要从界面友好性系统的时间特性系统的可靠性等方面来分析说明。
1时间特性要求系统处理数据都有时间要求这也是系统的时间特性。通常都会把数据处理的时间进行分析也会设置用户请求的响应时间还有系统在满负荷运行时可以偏离的范围数值等都需要提前分析确定。
2界面友好性除了功能上需要考虑用户需求外在人机交互界面的设计上也需要考虑用户的使用习惯包括界面的布局界面基调选择以及颜色搭配等。尽量做到用户在接受简单的培训之后可以对系统进行独立操作。
3系统可靠性对于初学者而言很容易出现一个问题就是设计开发的系统因为人为的误操作出现崩溃有些也会导致电脑死机。这样的现象也说明这种容错能力低下的系统是不可靠的。完全不能作为生活中处理信息的系统。当下系统开发要保证可靠性设计时把模块化和结构化的设计理念也考虑进来。如果遇到对时效性要求比较严格的系统也需要采取其它的措施比如双机系统还有磁盘阵列等方式。还有就是一个可靠性的系统对设备的供电能力也有要求。
第4章 系统设计
一个成功设计的系统在内容上必定是丰富的在系统外观或系统功能上必定是对用户友好的。所以为了提升系统的价值吸引更多的访问者访问系统以及让来访用户可以花费更多时间停留在系统上则表明该系统设计得比较专业。
4.1 设计原则
本系统在设计过程中需要依照一定的设计原则进行目的就是为了让开发的系统具备高质量齐全完备的功能方便简单的操作如此才可以最大限度的满足使用者的要求。系统设计原则除了基本的易操作原则外还有安全性原则准确性原则。
第一个设计原则易操作原则针对本系统设计的功能要完备齐全编码时设计的各个接口要具备友好性使用者一旦使用本系统时要能够轻松上手操作本系统处理数据时要具备便利性。此外也需要设计一些必要提示引导使用者操作系统。
第二个设计原则安全性原则本系统在登录模块要对各个访问者进行身份验证系统会通过访问者输入的信息进行判断使用提前编写的安全验证代码进行数据比对引导匹配成功的访问者进入指定的操作界面。这样可以避免无关性访问者窃取系统的数据。
第三个设计原则准确性原则为了保证使用者登记的数据是正确的需要提前设计数据纠错机制让使用者可以通过系统的报错提示仔细检查登记的错误信息并及时纠正错误填写规范正确的信息。比如设置密码时要求密码的长度不能低于6个字符且数据类型要求不能全部是数字等都能进行规范。
4.2 功能结构设计
在前面分析的管理员功能的基础上进行接下来的设计工作最终展示设计的管理员结构图见下图。管理员增删改查健康信息申报 4.3 数据库设计
开发一个系统也需要提前设计数据库。这里的数据库是相关数据的集合存储在一起的这些数据也是按照一定的组织方式进行的。目前数据库能够服务于多种应用程序则是源于它存储方式最佳具备数据冗余率低的优势。虽然数据库为程序提供信息存储服务但它与程序之间也可以保持较高的独立性。总而言之数据库经历了很长一段时间的发展从最初的不为人知到现在的人尽皆知其相关技术也越发成熟同时也拥有着坚实的理论基础。
1下图是用户实体和其具备的属性。 用户实体属性图
2下图是教师实体和其具备的属性。 教师实体属性图
3下图是学校管理员实体和其具备的属性。 学校管理员实体属性图
4下图是教师防控申报实体和其具备的属性。 教师防控申报实体属性图
5下图是公告信息实体和其具备的属性。 公告信息实体属性图
6下图是学院管理员实体和其具备的属性。 学院管理员实体属性图
7下图是学生防控申报实体和其具备的属性。 学生防控申报实体属性图 4.3.2 数据库物理设计
本数据库是关系型数据库因此对二维表的结构设计也比较关键。毕竟二维表格模型就是关系型数据库中的关系模型。而一些常用的关系模型中的概念也需要了解才可以对关系模型进行设计。下面就简单介绍关系元组属性域关键字等常用概念的含义。
关系关系就是数据库中的一张数据表每张数据表都有命名也就是每个关系也有名字那就是数据表名
元组元组就是数据表中的一行记录
属性属性就是数据表中的字段也就是数据表中的一列
域域就是对数据表中属性的取值进行限定
关键字关键字就是数据表中的主键
在了解了表结构设计的常用概念后接下来就需要使用前面绘制的E-R模型完成表结构的设计工作并在数据库中创建数据表并为各个数据表进行命名。以下就对设计的结果通过表格形式进行展示。
表4.1字典表
序号列名数据类型说明允许空1IdIntid否2dic_codeString字段是3dic_nameString字段名是4code_indexInteger编码是5index_nameString编码名字是6super_idInteger父字段id是7beizhuString备注是8create_timeDate创建时间是
表4.2教师防控申报表
序号列名数据类型说明允许空1IdIntid否2yonghu_idInteger教师是3fangkongshenbao_jiaoshi_tiwenBigDecimal当天体温是4keshou_typesInteger有无咳嗽是5wuaichu_typesInteger有无外出是6fangkongshenbao_jiaoshi_didianString外出地点是7binghuan_typesInteger是否接触病患是8gaofengxian_typesInteger是否出入高风险区域是9fangkongshenbao_jiaoshi_textString备注是10insert_timeDate添加时间是11create_timeDate创建时间是
表4.3学生防控申报表
序号列名数据类型说明允许空1IdIntid否2yonghu_idInteger学生是3fangkongshenbao_xuesheng_tiwenBigDecimal当天体温是4keshou_typesInteger有无咳嗽是5wuaichu_typesInteger有无外出是6fangkongshenbao_xuesheng_didianString外出地点是7binghuan_typesInteger是否接触病患是8gaofengxian_typesInteger是否出入高风险区域是9fangkongshenbao_xuesheng_textString备注是10insert_timeDate添加时间是11create_timeDate创建时间是
表4.4教师表
序号列名数据类型说明允许空1IdIntid否2jiaoshi_nameString教师姓名是3jiaoshi_photoString头像是4jiaoshi_id_numberString身份证号是5jiaoshi_phoneString联系方式是6jiaoshi_emailString电子邮箱是7xuanyuan_typesInteger学院是8jiaoshi_deleteInteger逻辑删除是9create_timeDate创建时间是
表4.5公告信息表
序号列名数据类型说明允许空1IdIntid否2news_nameString公告标题是3news_typesInteger公告类型是4news_photoString公告图片是5insert_timeDate添加时间是6news_contentString公告详情是7create_timeDate创建时间是
表4.6学校管理员表
序号列名数据类型说明允许空1IdIntid否2xuexiao_nameString学校管理员姓名是3xuexiao_photoString头像是4xuexiao_phoneString联系方式是5xuexiao_emailString电子邮箱是6xuexiao_deleteInteger逻辑删除是7create_timeDate创建时间是
表4.7学院管理员表
序号列名数据类型说明允许空1IdIntid否2xueyuan_nameString学院管理员姓名是3xueyuan_photoString头像是4xueyuan_phoneString联系方式是5xueyuan_emailString电子邮箱是6xuanyuan_typesInteger学院是7xueyuan_deleteInteger逻辑删除是8create_timeDate创建时间是
表4.8用户表
序号列名数据类型说明允许空1IdIntid否2yonghu_nameString用户姓名是3yonghu_photoString头像是4yonghu_id_numberString身份证号是5yonghu_phoneString联系方式是6yonghu_emailString电子邮箱是7yonghu_suseString宿舍号是8xuanyuan_typesInteger学院是9yonghu_deleteInteger逻辑删除是10create_timeDate创建时间是
表4.9管理员表
序号列名数据类型说明允许空1IdIntid否2usernameString学生名是3passwordString密码是4roleString角色是5addtimeDate新增时间是 5.1学生信息管理
如图5.1显示的就是学生信息管理页面此页面提供给管理员的功能有学生信息的查询管理可以删除学生信息、修改学生信息、新增学生信息
还进行了对用户名称的模糊查询的条件 图5.1 学生信息管理页面
5.2 健康信息申报管理
如图5.2显示的就是健康信息申报管理页面此页面提供给管理员的功能有查看已发布的健康信息申报数据修改健康信息申报健康信息申报作废即可删除还进行了对健康信息申报名称的模糊查询 健康信息申报信息的类型查询等等一些条件。 图5.2 健康信息申报管理页面
5.3教师信息管理
如图5.3显示的就是教师信息管理页面此页面提供给管理员的功能有根据教师信息进行条件查询还可以对教师信息进行新增、修改、查询操作等等。 图5.3 教师信息管理页面
5.1公告信息管理
如图5.4显示的就是公告信息管理页面此页面提供给管理员的功能有根据公告信息进行新增、修改、查询操作等等。 图5.4 公告信息管理页面 CommonUtil.java
package com.utils;import java.util.*;/*** 公共方法*/
public class CommonUtil {/*** 获取随机字符串** param num* return*/public static String getRandomString(Integer num) {String base abcdefghijklmnopqrstuvwxyz0123456789;Random random new Random();StringBuffer sb new StringBuffer();for (int i 0; i num; i) {int number random.nextInt(base.length());sb.append(base.charAt(number));}return sb.toString();}/*** 检查map参数并添加缺失参数* param params* return*/public static void checkMap(MapString, Object params) {boolean pagetrue,limittrue,sorttrue,ordertrue;IteratorMap.EntryString, Object iter params.entrySet().iterator();while (iter.hasNext()) {Map.EntryString, Object info iter.next();Object key info.getKey();Object value info.getValue();if(valuenull || .equals(value) || null.equals(value)){iter.remove();}else if(page.equals(key)){pagefalse;}else if(limit.equals(key)){limitfalse;}else if(sort.equals(key)){sortfalse;}else if(order.equals(key)){orderfalse;}}if(page){params.put(page,1);}if(limit){params.put(limit,10);}if(sort){params.put(sort,id);}if(order){params.put(order,desc);}}
}
JiaoshiController.java package com.controller;import java.io.File;
import java.math.BigDecimal;
import java.net.URL;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.*;
import java.lang.reflect.InvocationTargetException;import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.*;
import com.entity.view.*;
import com.service.*;
import com.utils.PageUtils;
import com.utils.R;
import com.alibaba.fastjson.*;/*** 教师* 后端接口* author* email
*/
RestController
Controller
RequestMapping(/jiaoshi)
public class JiaoshiController {private static final Logger logger LoggerFactory.getLogger(JiaoshiController.class);private static final String TABLE_NAME jiaoshi;Autowiredprivate JiaoshiService jiaoshiService;Autowiredprivate TokenService tokenService;Autowiredprivate DictionaryService dictionaryService;//级联表非注册的service//注册表serviceAutowiredprivate YonghuService yonghuService;Autowiredprivate XuexiaoService xuexiaoService;Autowiredprivate XueyuanService xueyuanService;/*** 后端列表*/RequestMapping(/page)public R page(RequestParam MapString, Object params, HttpServletRequest request){logger.debug(page方法:,,Controller:{},,params:{},this.getClass().getName(),JSONObject.toJSONString(params));String role String.valueOf(request.getSession().getAttribute(role));if(false)return R.error(511,永不会进入);else if(用户.equals(role))params.put(yonghuId,request.getSession().getAttribute(userId));else if(教师.equals(role))params.put(jiaoshiId,request.getSession().getAttribute(userId));else if(学校管理员.equals(role))params.put(xuexiaoId,request.getSession().getAttribute(userId));else if(学院管理员.equals(role))params.put(xueyuanId,request.getSession().getAttribute(userId));params.put(jiaoshiDeleteStart,1);params.put(jiaoshiDeleteEnd,1);CommonUtil.checkMap(params);PageUtils page jiaoshiService.queryPage(params);//字典表数据转换ListJiaoshiView list (ListJiaoshiView)page.getList();for(JiaoshiView c:list){//修改对应字典表字段dictionaryService.dictionaryConvert(c, request);}return R.ok().put(data, page);}/*** 后端详情*/RequestMapping(/info/{id})public R info(PathVariable(id) Long id, HttpServletRequest request){logger.debug(info方法:,,Controller:{},,id:{},this.getClass().getName(),id);JiaoshiEntity jiaoshi jiaoshiService.selectById(id);if(jiaoshi !null){//entity转viewJiaoshiView view new JiaoshiView();BeanUtils.copyProperties( jiaoshi , view );//把实体数据重构到view中//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put(data, view);}else {return R.error(511,查不到数据);}}/*** 后端保存*/RequestMapping(/save)public R save(RequestBody JiaoshiEntity jiaoshi, HttpServletRequest request){logger.debug(save方法:,,Controller:{},,jiaoshi:{},this.getClass().getName(),jiaoshi.toString());String role String.valueOf(request.getSession().getAttribute(role));if(false)return R.error(511,永远不会进入);WrapperJiaoshiEntity queryWrapper new EntityWrapperJiaoshiEntity().eq(username, jiaoshi.getUsername()).or().eq(jiaoshi_phone, jiaoshi.getJiaoshiPhone()).or().eq(jiaoshi_id_number, jiaoshi.getJiaoshiIdNumber()).andNew().eq(jiaoshi_delete, 1);logger.info(sql语句:queryWrapper.getSqlSegment());JiaoshiEntity jiaoshiEntity jiaoshiService.selectOne(queryWrapper);if(jiaoshiEntitynull){jiaoshi.setJiaoshiDelete(1);jiaoshi.setCreateTime(new Date());jiaoshi.setPassword(123456);jiaoshiService.insert(jiaoshi);return R.ok();}else {return R.error(511,账户或者联系方式或者身份证号已经被使用);}}/*** 后端修改*/RequestMapping(/update)public R update(RequestBody JiaoshiEntity jiaoshi, HttpServletRequest request) throws NoSuchFieldException, ClassNotFoundException, IllegalAccessException, InstantiationException {logger.debug(update方法:,,Controller:{},,jiaoshi:{},this.getClass().getName(),jiaoshi.toString());JiaoshiEntity oldJiaoshiEntity jiaoshiService.selectById(jiaoshi.getId());//查询原先数据String role String.valueOf(request.getSession().getAttribute(role));
// if(false)
// return R.error(511,永远不会进入);//根据字段查询是否有相同数据WrapperJiaoshiEntity queryWrapper new EntityWrapperJiaoshiEntity().notIn(id,jiaoshi.getId()).andNew().eq(username, jiaoshi.getUsername()).or().eq(jiaoshi_phone, jiaoshi.getJiaoshiPhone()).or().eq(jiaoshi_id_number, jiaoshi.getJiaoshiIdNumber()).andNew().eq(jiaoshi_delete, 1);logger.info(sql语句:queryWrapper.getSqlSegment());JiaoshiEntity jiaoshiEntity jiaoshiService.selectOne(queryWrapper);if(.equals(jiaoshi.getJiaoshiPhoto()) || null.equals(jiaoshi.getJiaoshiPhoto())){jiaoshi.setJiaoshiPhoto(null);}if(jiaoshiEntitynull){jiaoshiService.updateById(jiaoshi);//根据id更新return R.ok();}else {return R.error(511,账户或者联系方式或者身份证号已经被使用);}}/*** 删除*/RequestMapping(/delete)public R delete(RequestBody Integer[] ids, HttpServletRequest request){logger.debug(delete:,,Controller:{},,ids:{},this.getClass().getName(),ids.toString());ListJiaoshiEntity oldJiaoshiList jiaoshiService.selectBatchIds(Arrays.asList(ids));//要删除的数据ArrayListJiaoshiEntity list new ArrayList();for(Integer id:ids){JiaoshiEntity jiaoshiEntity new JiaoshiEntity();jiaoshiEntity.setId(id);jiaoshiEntity.setJiaoshiDelete(2);list.add(jiaoshiEntity);}if(list ! null list.size() 0){jiaoshiService.updateBatchById(list);}return R.ok();}/*** 批量上传*/RequestMapping(/batchInsert)public R save( String fileName, HttpServletRequest request){logger.debug(batchInsert方法:,,Controller:{},,fileName:{},this.getClass().getName(),fileName);Integer yonghuId Integer.valueOf(String.valueOf(request.getSession().getAttribute(userId)));SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);try {ListJiaoshiEntity jiaoshiList new ArrayList();//上传的东西MapString, ListString seachFields new HashMap();//要查询的字段Date date new Date();int lastIndexOf fileName.lastIndexOf(.);if(lastIndexOf -1){return R.error(511,该文件没有后缀);}else{String suffix fileName.substring(lastIndexOf);if(!.xls.equals(suffix)){return R.error(511,只支持后缀为xls的excel文件);}else{URL resource this.getClass().getClassLoader().getResource(static/upload/ fileName);//获取文件路径File file new File(resource.getFile());if(!file.exists()){return R.error(511,找不到上传文件请联系管理员);}else{ListListString dataList PoiUtil.poiImport(file.getPath());//读取xls文件dataList.remove(0);//删除第一行因为第一行是提示for(ListString data:dataList){//循环JiaoshiEntity jiaoshiEntity new JiaoshiEntity();
// jiaoshiEntity.setUsername(data.get(0)); //账户 要改的
// //jiaoshiEntity.setPassword(123456);//密码
// jiaoshiEntity.setJiaoshiName(data.get(0)); //教师姓名 要改的
// jiaoshiEntity.setSexTypes(Integer.valueOf(data.get(0))); //性别 要改的
// jiaoshiEntity.setJiaoshiPhoto();//详情和图片
// jiaoshiEntity.setJiaoshiIdNumber(data.get(0)); //身份证号 要改的
// jiaoshiEntity.setJiaoshiPhone(data.get(0)); //联系方式 要改的
// jiaoshiEntity.setJiaoshiEmail(data.get(0)); //电子邮箱 要改的
// jiaoshiEntity.setXuanyuanTypes(Integer.valueOf(data.get(0))); //学院 要改的
// jiaoshiEntity.setJiaoshiDelete(1);//逻辑删除字段
// jiaoshiEntity.setCreateTime(date);//时间jiaoshiList.add(jiaoshiEntity);//把要查询是否重复的字段放入map中//账户if(seachFields.containsKey(username)){ListString username seachFields.get(username);username.add(data.get(0));//要改的}else{ListString username new ArrayList();username.add(data.get(0));//要改的seachFields.put(username,username);}//身份证号if(seachFields.containsKey(jiaoshiIdNumber)){ListString jiaoshiIdNumber seachFields.get(jiaoshiIdNumber);jiaoshiIdNumber.add(data.get(0));//要改的}else{ListString jiaoshiIdNumber new ArrayList();jiaoshiIdNumber.add(data.get(0));//要改的seachFields.put(jiaoshiIdNumber,jiaoshiIdNumber);}//联系方式if(seachFields.containsKey(jiaoshiPhone)){ListString jiaoshiPhone seachFields.get(jiaoshiPhone);jiaoshiPhone.add(data.get(0));//要改的}else{ListString jiaoshiPhone new ArrayList();jiaoshiPhone.add(data.get(0));//要改的seachFields.put(jiaoshiPhone,jiaoshiPhone);}}//查询是否重复//账户ListJiaoshiEntity jiaoshiEntities_username jiaoshiService.selectList(new EntityWrapperJiaoshiEntity().in(username, seachFields.get(username)).eq(jiaoshi_delete, 1));if(jiaoshiEntities_username.size() 0 ){ArrayListString repeatFields new ArrayList();for(JiaoshiEntity s:jiaoshiEntities_username){repeatFields.add(s.getUsername());}return R.error(511,数据库的该表中的 [账户] 字段已经存在 存在数据为:repeatFields.toString());}//身份证号ListJiaoshiEntity jiaoshiEntities_jiaoshiIdNumber jiaoshiService.selectList(new EntityWrapperJiaoshiEntity().in(jiaoshi_id_number, seachFields.get(jiaoshiIdNumber)).eq(jiaoshi_delete, 1));if(jiaoshiEntities_jiaoshiIdNumber.size() 0 ){ArrayListString repeatFields new ArrayList();for(JiaoshiEntity s:jiaoshiEntities_jiaoshiIdNumber){repeatFields.add(s.getJiaoshiIdNumber());}return R.error(511,数据库的该表中的 [身份证号] 字段已经存在 存在数据为:repeatFields.toString());}//联系方式ListJiaoshiEntity jiaoshiEntities_jiaoshiPhone jiaoshiService.selectList(new EntityWrapperJiaoshiEntity().in(jiaoshi_phone, seachFields.get(jiaoshiPhone)).eq(jiaoshi_delete, 1));if(jiaoshiEntities_jiaoshiPhone.size() 0 ){ArrayListString repeatFields new ArrayList();for(JiaoshiEntity s:jiaoshiEntities_jiaoshiPhone){repeatFields.add(s.getJiaoshiPhone());}return R.error(511,数据库的该表中的 [联系方式] 字段已经存在 存在数据为:repeatFields.toString());}jiaoshiService.insertBatch(jiaoshiList);return R.ok();}}}}catch (Exception e){e.printStackTrace();return R.error(511,批量插入数据异常请联系管理员);}}/*** 登录*/IgnoreAuthRequestMapping(value /login)public R login(String username, String password, String captcha, HttpServletRequest request) {JiaoshiEntity jiaoshi jiaoshiService.selectOne(new EntityWrapperJiaoshiEntity().eq(username, username));if(jiaoshinull || !jiaoshi.getPassword().equals(password))return R.error(账号或密码不正确);else if(jiaoshi.getJiaoshiDelete() ! 1)return R.error(账户已被删除);String token tokenService.generateToken(jiaoshi.getId(),username, jiaoshi, 教师);R r R.ok();r.put(token, token);r.put(role,教师);r.put(username,jiaoshi.getJiaoshiName());r.put(tableName,jiaoshi);r.put(userId,jiaoshi.getId());return r;}/*** 注册*/IgnoreAuthPostMapping(value /register)public R register(RequestBody JiaoshiEntity jiaoshi, HttpServletRequest request) {
// ValidatorUtils.validateEntity(user);WrapperJiaoshiEntity queryWrapper new EntityWrapperJiaoshiEntity().eq(username, jiaoshi.getUsername()).or().eq(jiaoshi_id_number, jiaoshi.getJiaoshiIdNumber()).or().eq(jiaoshi_phone, jiaoshi.getJiaoshiPhone()).andNew().eq(jiaoshi_delete, 1);JiaoshiEntity jiaoshiEntity jiaoshiService.selectOne(queryWrapper);if(jiaoshiEntity ! null)return R.error(账户或者联系方式或者身份证号已经被使用);jiaoshi.setJiaoshiDelete(1);jiaoshi.setCreateTime(new Date());jiaoshiService.insert(jiaoshi);return R.ok();}/*** 重置密码*/GetMapping(value /resetPassword)public R resetPassword(Integer id, HttpServletRequest request) {JiaoshiEntity jiaoshi jiaoshiService.selectById(id);jiaoshi.setPassword(123456);jiaoshiService.updateById(jiaoshi);return R.ok();}/*** 忘记密码*/IgnoreAuthRequestMapping(value /resetPass)public R resetPass(String username, HttpServletRequest request) {JiaoshiEntity jiaoshi jiaoshiService.selectOne(new EntityWrapperJiaoshiEntity().eq(username, username));if(jiaoshi!null){jiaoshi.setPassword(123456);boolean b jiaoshiService.updateById(jiaoshi);if(!b){return R.error();}return R.ok();}else{return R.error(账号不存在);}}/*** 获取用户的session用户信息*/RequestMapping(/session)public R getCurrJiaoshi(HttpServletRequest request){Integer id (Integer)request.getSession().getAttribute(userId);JiaoshiEntity jiaoshi jiaoshiService.selectById(id);if(jiaoshi !null){//entity转viewJiaoshiView view new JiaoshiView();BeanUtils.copyProperties( jiaoshi , view );//把实体数据重构到view中//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put(data, view);}else {return R.error(511,查不到数据);}}/*** 退出*/GetMapping(value logout)public R logout(HttpServletRequest request) {request.getSession().invalidate();return R.ok(退出成功);}}
XueyuanController.java package com.controller;import java.io.File;
import java.math.BigDecimal;
import java.net.URL;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.*;
import java.lang.reflect.InvocationTargetException;import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.*;
import com.entity.view.*;
import com.service.*;
import com.utils.PageUtils;
import com.utils.R;
import com.alibaba.fastjson.*;/*** 学院管理员* 后端接口* author* email
*/
RestController
Controller
RequestMapping(/xueyuan)
public class XueyuanController {private static final Logger logger LoggerFactory.getLogger(XueyuanController.class);private static final String TABLE_NAME xueyuan;Autowiredprivate XueyuanService xueyuanService;Autowiredprivate TokenService tokenService;Autowiredprivate DictionaryService dictionaryService;//级联表非注册的service//注册表serviceAutowiredprivate YonghuService yonghuService;Autowiredprivate JiaoshiService jiaoshiService;Autowiredprivate XuexiaoService xuexiaoService;/*** 后端列表*/RequestMapping(/page)public R page(RequestParam MapString, Object params, HttpServletRequest request){logger.debug(page方法:,,Controller:{},,params:{},this.getClass().getName(),JSONObject.toJSONString(params));String role String.valueOf(request.getSession().getAttribute(role));if(false)return R.error(511,永不会进入);else if(用户.equals(role))params.put(yonghuId,request.getSession().getAttribute(userId));else if(教师.equals(role))params.put(jiaoshiId,request.getSession().getAttribute(userId));else if(学校管理员.equals(role))params.put(xuexiaoId,request.getSession().getAttribute(userId));else if(学院管理员.equals(role))params.put(xueyuanId,request.getSession().getAttribute(userId));params.put(xueyuanDeleteStart,1);params.put(xueyuanDeleteEnd,1);CommonUtil.checkMap(params);PageUtils page xueyuanService.queryPage(params);//字典表数据转换ListXueyuanView list (ListXueyuanView)page.getList();for(XueyuanView c:list){//修改对应字典表字段dictionaryService.dictionaryConvert(c, request);}return R.ok().put(data, page);}/*** 后端详情*/RequestMapping(/info/{id})public R info(PathVariable(id) Long id, HttpServletRequest request){logger.debug(info方法:,,Controller:{},,id:{},this.getClass().getName(),id);XueyuanEntity xueyuan xueyuanService.selectById(id);if(xueyuan !null){//entity转viewXueyuanView view new XueyuanView();BeanUtils.copyProperties( xueyuan , view );//把实体数据重构到view中//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put(data, view);}else {return R.error(511,查不到数据);}}/*** 后端保存*/RequestMapping(/save)public R save(RequestBody XueyuanEntity xueyuan, HttpServletRequest request){logger.debug(save方法:,,Controller:{},,xueyuan:{},this.getClass().getName(),xueyuan.toString());String role String.valueOf(request.getSession().getAttribute(role));if(false)return R.error(511,永远不会进入);WrapperXueyuanEntity queryWrapper new EntityWrapperXueyuanEntity().eq(username, xueyuan.getUsername()).or().eq(xueyuan_phone, xueyuan.getXueyuanPhone()).andNew().eq(xueyuan_delete, 1);logger.info(sql语句:queryWrapper.getSqlSegment());XueyuanEntity xueyuanEntity xueyuanService.selectOne(queryWrapper);if(xueyuanEntitynull){xueyuan.setXueyuanDelete(1);xueyuan.setCreateTime(new Date());xueyuan.setPassword(123456);xueyuanService.insert(xueyuan);return R.ok();}else {return R.error(511,账户或者联系方式已经被使用);}}/*** 后端修改*/RequestMapping(/update)public R update(RequestBody XueyuanEntity xueyuan, HttpServletRequest request) throws NoSuchFieldException, ClassNotFoundException, IllegalAccessException, InstantiationException {logger.debug(update方法:,,Controller:{},,xueyuan:{},this.getClass().getName(),xueyuan.toString());XueyuanEntity oldXueyuanEntity xueyuanService.selectById(xueyuan.getId());//查询原先数据String role String.valueOf(request.getSession().getAttribute(role));
// if(false)
// return R.error(511,永远不会进入);//根据字段查询是否有相同数据WrapperXueyuanEntity queryWrapper new EntityWrapperXueyuanEntity().notIn(id,xueyuan.getId()).andNew().eq(username, xueyuan.getUsername()).or().eq(xueyuan_phone, xueyuan.getXueyuanPhone()).andNew().eq(xueyuan_delete, 1);logger.info(sql语句:queryWrapper.getSqlSegment());XueyuanEntity xueyuanEntity xueyuanService.selectOne(queryWrapper);if(.equals(xueyuan.getXueyuanPhoto()) || null.equals(xueyuan.getXueyuanPhoto())){xueyuan.setXueyuanPhoto(null);}if(xueyuanEntitynull){xueyuanService.updateById(xueyuan);//根据id更新return R.ok();}else {return R.error(511,账户或者联系方式已经被使用);}}/*** 删除*/RequestMapping(/delete)public R delete(RequestBody Integer[] ids, HttpServletRequest request){logger.debug(delete:,,Controller:{},,ids:{},this.getClass().getName(),ids.toString());ListXueyuanEntity oldXueyuanList xueyuanService.selectBatchIds(Arrays.asList(ids));//要删除的数据ArrayListXueyuanEntity list new ArrayList();for(Integer id:ids){XueyuanEntity xueyuanEntity new XueyuanEntity();xueyuanEntity.setId(id);xueyuanEntity.setXueyuanDelete(2);list.add(xueyuanEntity);}if(list ! null list.size() 0){xueyuanService.updateBatchById(list);}return R.ok();}/*** 批量上传*/RequestMapping(/batchInsert)public R save( String fileName, HttpServletRequest request){logger.debug(batchInsert方法:,,Controller:{},,fileName:{},this.getClass().getName(),fileName);Integer yonghuId Integer.valueOf(String.valueOf(request.getSession().getAttribute(userId)));SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);try {ListXueyuanEntity xueyuanList new ArrayList();//上传的东西MapString, ListString seachFields new HashMap();//要查询的字段Date date new Date();int lastIndexOf fileName.lastIndexOf(.);if(lastIndexOf -1){return R.error(511,该文件没有后缀);}else{String suffix fileName.substring(lastIndexOf);if(!.xls.equals(suffix)){return R.error(511,只支持后缀为xls的excel文件);}else{URL resource this.getClass().getClassLoader().getResource(static/upload/ fileName);//获取文件路径File file new File(resource.getFile());if(!file.exists()){return R.error(511,找不到上传文件请联系管理员);}else{ListListString dataList PoiUtil.poiImport(file.getPath());//读取xls文件dataList.remove(0);//删除第一行因为第一行是提示for(ListString data:dataList){//循环XueyuanEntity xueyuanEntity new XueyuanEntity();
// xueyuanEntity.setUsername(data.get(0)); //账户 要改的
// //xueyuanEntity.setPassword(123456);//密码
// xueyuanEntity.setXueyuanName(data.get(0)); //学院管理员姓名 要改的
// xueyuanEntity.setSexTypes(Integer.valueOf(data.get(0))); //性别 要改的
// xueyuanEntity.setXueyuanPhoto();//详情和图片
// xueyuanEntity.setXueyuanPhone(data.get(0)); //联系方式 要改的
// xueyuanEntity.setXueyuanEmail(data.get(0)); //电子邮箱 要改的
// xueyuanEntity.setXuanyuanTypes(Integer.valueOf(data.get(0))); //学院 要改的
// xueyuanEntity.setXueyuanDelete(1);//逻辑删除字段
// xueyuanEntity.setCreateTime(date);//时间xueyuanList.add(xueyuanEntity);//把要查询是否重复的字段放入map中//账户if(seachFields.containsKey(username)){ListString username seachFields.get(username);username.add(data.get(0));//要改的}else{ListString username new ArrayList();username.add(data.get(0));//要改的seachFields.put(username,username);}//联系方式if(seachFields.containsKey(xueyuanPhone)){ListString xueyuanPhone seachFields.get(xueyuanPhone);xueyuanPhone.add(data.get(0));//要改的}else{ListString xueyuanPhone new ArrayList();xueyuanPhone.add(data.get(0));//要改的seachFields.put(xueyuanPhone,xueyuanPhone);}}//查询是否重复//账户ListXueyuanEntity xueyuanEntities_username xueyuanService.selectList(new EntityWrapperXueyuanEntity().in(username, seachFields.get(username)).eq(xueyuan_delete, 1));if(xueyuanEntities_username.size() 0 ){ArrayListString repeatFields new ArrayList();for(XueyuanEntity s:xueyuanEntities_username){repeatFields.add(s.getUsername());}return R.error(511,数据库的该表中的 [账户] 字段已经存在 存在数据为:repeatFields.toString());}//联系方式ListXueyuanEntity xueyuanEntities_xueyuanPhone xueyuanService.selectList(new EntityWrapperXueyuanEntity().in(xueyuan_phone, seachFields.get(xueyuanPhone)).eq(xueyuan_delete, 1));if(xueyuanEntities_xueyuanPhone.size() 0 ){ArrayListString repeatFields new ArrayList();for(XueyuanEntity s:xueyuanEntities_xueyuanPhone){repeatFields.add(s.getXueyuanPhone());}return R.error(511,数据库的该表中的 [联系方式] 字段已经存在 存在数据为:repeatFields.toString());}xueyuanService.insertBatch(xueyuanList);return R.ok();}}}}catch (Exception e){e.printStackTrace();return R.error(511,批量插入数据异常请联系管理员);}}/*** 登录*/IgnoreAuthRequestMapping(value /login)public R login(String username, String password, String captcha, HttpServletRequest request) {XueyuanEntity xueyuan xueyuanService.selectOne(new EntityWrapperXueyuanEntity().eq(username, username));if(xueyuannull || !xueyuan.getPassword().equals(password))return R.error(账号或密码不正确);else if(xueyuan.getXueyuanDelete() ! 1)return R.error(账户已被删除);String token tokenService.generateToken(xueyuan.getId(),username, xueyuan, 学院管理员);R r R.ok();r.put(token, token);r.put(role,学院管理员);r.put(username,xueyuan.getXueyuanName());r.put(tableName,xueyuan);r.put(userId,xueyuan.getId());return r;}/*** 注册*/IgnoreAuthPostMapping(value /register)public R register(RequestBody XueyuanEntity xueyuan, HttpServletRequest request) {
// ValidatorUtils.validateEntity(user);WrapperXueyuanEntity queryWrapper new EntityWrapperXueyuanEntity().eq(username, xueyuan.getUsername()).or().eq(xueyuan_phone, xueyuan.getXueyuanPhone()).andNew().eq(xueyuan_delete, 1);XueyuanEntity xueyuanEntity xueyuanService.selectOne(queryWrapper);if(xueyuanEntity ! null)return R.error(账户或者联系方式已经被使用);xueyuan.setXueyuanDelete(1);xueyuan.setCreateTime(new Date());xueyuanService.insert(xueyuan);return R.ok();}/*** 重置密码*/GetMapping(value /resetPassword)public R resetPassword(Integer id, HttpServletRequest request) {XueyuanEntity xueyuan xueyuanService.selectById(id);xueyuan.setPassword(123456);xueyuanService.updateById(xueyuan);return R.ok();}/*** 忘记密码*/IgnoreAuthRequestMapping(value /resetPass)public R resetPass(String username, HttpServletRequest request) {XueyuanEntity xueyuan xueyuanService.selectOne(new EntityWrapperXueyuanEntity().eq(username, username));if(xueyuan!null){xueyuan.setPassword(123456);boolean b xueyuanService.updateById(xueyuan);if(!b){return R.error();}return R.ok();}else{return R.error(账号不存在);}}/*** 获取用户的session用户信息*/RequestMapping(/session)public R getCurrXueyuan(HttpServletRequest request){Integer id (Integer)request.getSession().getAttribute(userId);XueyuanEntity xueyuan xueyuanService.selectById(id);if(xueyuan !null){//entity转viewXueyuanView view new XueyuanView();BeanUtils.copyProperties( xueyuan , view );//把实体数据重构到view中//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put(data, view);}else {return R.error(511,查不到数据);}}/*** 退出*/GetMapping(value logout)public R logout(HttpServletRequest request) {request.getSession().invalidate();return R.ok(退出成功);}}
声明 本博客适用于广泛的学术和教育用途包括但不限于个人学习、开发设计产品设计。仅供学习参考旨在为读者提供深入理解和学术研究的材料。
文章转载自: http://www.morning.gsdbg.cn.gov.cn.gsdbg.cn http://www.morning.rnpnn.cn.gov.cn.rnpnn.cn http://www.morning.lzjxn.cn.gov.cn.lzjxn.cn http://www.morning.qlckc.cn.gov.cn.qlckc.cn http://www.morning.nrlsg.cn.gov.cn.nrlsg.cn http://www.morning.xhddb.cn.gov.cn.xhddb.cn http://www.morning.qqbw.cn.gov.cn.qqbw.cn http://www.morning.yqyhr.cn.gov.cn.yqyhr.cn http://www.morning.xlyt.cn.gov.cn.xlyt.cn http://www.morning.hhpkb.cn.gov.cn.hhpkb.cn http://www.morning.pjqxk.cn.gov.cn.pjqxk.cn http://www.morning.xknsn.cn.gov.cn.xknsn.cn http://www.morning.ygth.cn.gov.cn.ygth.cn http://www.morning.qlrwf.cn.gov.cn.qlrwf.cn http://www.morning.jlrym.cn.gov.cn.jlrym.cn http://www.morning.yjfmj.cn.gov.cn.yjfmj.cn http://www.morning.pmwhj.cn.gov.cn.pmwhj.cn http://www.morning.txtzr.cn.gov.cn.txtzr.cn http://www.morning.nnrqg.cn.gov.cn.nnrqg.cn http://www.morning.qfgwx.cn.gov.cn.qfgwx.cn http://www.morning.qfcnp.cn.gov.cn.qfcnp.cn http://www.morning.rykgh.cn.gov.cn.rykgh.cn http://www.morning.mjbjq.cn.gov.cn.mjbjq.cn http://www.morning.zpstm.cn.gov.cn.zpstm.cn http://www.morning.wmhlz.cn.gov.cn.wmhlz.cn http://www.morning.qfwfj.cn.gov.cn.qfwfj.cn http://www.morning.bpds.cn.gov.cn.bpds.cn http://www.morning.jytrb.cn.gov.cn.jytrb.cn http://www.morning.rdkqt.cn.gov.cn.rdkqt.cn http://www.morning.gkpgj.cn.gov.cn.gkpgj.cn http://www.morning.dbtdy.cn.gov.cn.dbtdy.cn http://www.morning.wmfmj.cn.gov.cn.wmfmj.cn http://www.morning.qsy37.cn.gov.cn.qsy37.cn http://www.morning.ymtbr.cn.gov.cn.ymtbr.cn http://www.morning.lgsqy.cn.gov.cn.lgsqy.cn http://www.morning.stxg.cn.gov.cn.stxg.cn http://www.morning.pakistantractors.com.gov.cn.pakistantractors.com http://www.morning.pgzgy.cn.gov.cn.pgzgy.cn http://www.morning.bbtn.cn.gov.cn.bbtn.cn http://www.morning.yrsg.cn.gov.cn.yrsg.cn http://www.morning.leyuhh.com.gov.cn.leyuhh.com http://www.morning.nrwr.cn.gov.cn.nrwr.cn http://www.morning.bkxnp.cn.gov.cn.bkxnp.cn http://www.morning.lfpdc.cn.gov.cn.lfpdc.cn http://www.morning.jcrfm.cn.gov.cn.jcrfm.cn http://www.morning.mrtdq.cn.gov.cn.mrtdq.cn http://www.morning.lskyz.cn.gov.cn.lskyz.cn http://www.morning.rdsst.cn.gov.cn.rdsst.cn http://www.morning.ey3h2d.cn.gov.cn.ey3h2d.cn http://www.morning.dkqyg.cn.gov.cn.dkqyg.cn http://www.morning.nqxdg.cn.gov.cn.nqxdg.cn http://www.morning.jkcnq.cn.gov.cn.jkcnq.cn http://www.morning.hxxyp.cn.gov.cn.hxxyp.cn http://www.morning.jxfmn.cn.gov.cn.jxfmn.cn http://www.morning.cptzd.cn.gov.cn.cptzd.cn http://www.morning.rwmqp.cn.gov.cn.rwmqp.cn http://www.morning.mbhdl.cn.gov.cn.mbhdl.cn http://www.morning.jqrhz.cn.gov.cn.jqrhz.cn http://www.morning.fwdln.cn.gov.cn.fwdln.cn http://www.morning.dtlnz.cn.gov.cn.dtlnz.cn http://www.morning.cwtrl.cn.gov.cn.cwtrl.cn http://www.morning.ryfq.cn.gov.cn.ryfq.cn http://www.morning.ybgpk.cn.gov.cn.ybgpk.cn http://www.morning.jcfqg.cn.gov.cn.jcfqg.cn http://www.morning.qddtd.cn.gov.cn.qddtd.cn http://www.morning.gcysq.cn.gov.cn.gcysq.cn http://www.morning.ymfzd.cn.gov.cn.ymfzd.cn http://www.morning.hpprx.cn.gov.cn.hpprx.cn http://www.morning.rhqr.cn.gov.cn.rhqr.cn http://www.morning.trzzm.cn.gov.cn.trzzm.cn http://www.morning.pfgln.cn.gov.cn.pfgln.cn http://www.morning.yodajy.cn.gov.cn.yodajy.cn http://www.morning.njftk.cn.gov.cn.njftk.cn http://www.morning.jbshh.cn.gov.cn.jbshh.cn http://www.morning.pqcsx.cn.gov.cn.pqcsx.cn http://www.morning.bzcjx.cn.gov.cn.bzcjx.cn http://www.morning.xymkm.cn.gov.cn.xymkm.cn http://www.morning.bhrbr.cn.gov.cn.bhrbr.cn http://www.morning.huihuangwh.cn.gov.cn.huihuangwh.cn http://www.morning.ggnkt.cn.gov.cn.ggnkt.cn