All Projects → kissyou323 → production_ssm

kissyou323 / production_ssm

Licence: other
转载测试通过--这是一个生产管理ERP系统。依托科技计划重点项目“制造装备物联及生产管理系统研发”,主要包括:计划进度、设备管理、工艺监控、物料监控、人员监控、质量监控、系统管理7大模块。

Programming Languages

javascript
184084 projects - #8 most used programming language
java
68154 projects - #9 most used programming language
CSS
56736 projects
HTML
75241 projects

Projects that are alternatives of or similar to production ssm

Ruoyi
(RuoYi)官方仓库 基于SpringBoot的权限管理系统 易读易懂、界面简洁美观。 核心技术采用Spring、MyBatis、Shiro没有任何其它重度依赖。直接运行即可用
Stars: ✭ 905 (+2485.71%)
Mutual labels:  druid, shiro
Autumn
Autumn-Blog and Autumn-CMS
Stars: ✭ 101 (+188.57%)
Mutual labels:  druid, shiro
Student Homework Management System
使用SSM+Shiro开发的学生作业管理系统。支持批量打包下载,QQ登陆等功能 生产版:
Stars: ✭ 79 (+125.71%)
Mutual labels:  druid, shiro
Hope Boot
🌱 Hope-Boot 一款现代化的脚手架项目
Stars: ✭ 3,241 (+9160%)
Mutual labels:  druid, shiro
springboot-learning-demo
springboot学习示例
Stars: ✭ 17 (-51.43%)
Mutual labels:  druid, shiro
Highdsa
2018年本科毕设项目,已更新所有开发和部署文档。基于Dubbo、SSM、Shiro、ELK、ActiveMQ、Redis等实现的一套高可用、高性能、高可扩展的分布式系统架构,实现可支持业务的基础公共服务,API使用Restful风格对外暴露。已经实现的包括:发送邮件服务、FastDFS文件存储服务、ELK实时日志查询服务、Redis缓存服务、Mybatis数据库、阿里短信推送、Goeasy消息推送、Druid监控、ActiveMQ消息队列、shiro权限认证、cas单点登录、权限配置web系统、移动端后台系统。持续更新中......
Stars: ✭ 385 (+1000%)
Mutual labels:  druid, shiro
Jeeplatform
一款企业信息化开发基础平台,拟集成OA(办公自动化)、CMS(内容管理系统)等企业系统的通用业务功能 JeePlatform项目是一款以SpringBoot为核心框架,集ORM框架Mybatis,Web层框架SpringMVC和多种开源组件框架而成的一款通用基础平台,代码已经捐赠给开源中国社区
Stars: ✭ 1,285 (+3571.43%)
Mutual labels:  druid, shiro
learn-java-demo
java学习demo
Stars: ✭ 17 (-51.43%)
Mutual labels:  druid, shiro
Skill6 Website Backend
java进阶开发,高级版web项目。基于dubbo实现分布式微服务架构,基于spring boot、spring mvc、mybatis、docker、ELK、redis、vue.js、node.js等技术实现的技术分享交流网站。网站名称:技术流,英文名:skill6。主要功能有:登录注册、单点登录、restful设计、文章及评论、代码及资源下载、主题讨论等。持续更新中...
Stars: ✭ 140 (+300%)
Mutual labels:  druid, shiro
Ruoyi Oracle
(RuoYi)官方仓库 基于SpringBoot的权限管理系统 易读易懂、界面简洁美观。 核心技术采用Spring、MyBatis、Shiro没有任何其它重度依赖。直接运行即可用
Stars: ✭ 134 (+282.86%)
Mutual labels:  druid, shiro
Yan
使用Maven构建,整合Dubbo+Zookeeper+SpringMVC+Spring+MyBatis+Redis支持分布式的高效率便捷开发框架
Stars: ✭ 293 (+737.14%)
Mutual labels:  druid, shiro
Spring Dubbo Service
微服务 spring dubbo项目:dubbo rpc;druid数据源连接池;mybatis配置集成,多数据源;jmx监控MBean;定时任务;aop;ftp;测试;Metrics监控;参数验证;跨域处理;shiro权限控制;consul服务注册,发现;redis分布式锁;SPI服务机制;cat监控;netty服务代理;websocket;disconf;mongodb集成;rest;docker;fescar
Stars: ✭ 224 (+540%)
Mutual labels:  druid, shiro
Zheng
基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构,提供整套公共微服务服务模块:集中权限管理(单点登录)、内容管理、支付中心、用户管理(支持第三方登录)、微信平台、存储系统、配置中心、日志分析、任务和通知等,支持服务治理、监控和追踪,努力为中小型企业打造全方位J2EE企业级开发解决方案。
Stars: ✭ 16,163 (+46080%)
Mutual labels:  druid, shiro
Webside
基于RBAC的完全响应式权限管理系统
Stars: ✭ 19 (-45.71%)
Mutual labels:  druid, shiro
Springboot Learn
🌹springboot常用框架整合示例,涉及多种网站监控,数据缓存,网络通信,持久层,权限管理,常用工具等
Stars: ✭ 270 (+671.43%)
Mutual labels:  druid, shiro
Bootplus
基于SpringBoot + Shiro + MyBatisPlus的权限管理框架
Stars: ✭ 88 (+151.43%)
Mutual labels:  druid, shiro
Ssm shiro blog
spring+springmvc+mybatis+shiro整合DEMO.后台管理,权限管理
Stars: ✭ 167 (+377.14%)
Mutual labels:  shiro, ssm
RuoYi-fast
🎉 (RuoYi)官方仓库 基于SpringBoot的权限管理系统 易读易懂、界面简洁美观。 核心技术采用Spring、MyBatis、Shiro没有任何其它重度依赖。直接运行即可用
Stars: ✭ 117 (+234.29%)
Mutual labels:  druid, shiro
X Admin
致力于快速开发中小型后台管理系统项目模板(更新中......)
Stars: ✭ 123 (+251.43%)
Mutual labels:  druid, shiro
Okhelper Service
OK帮 云进销存 (SpringBoot Restful 全家桶)
Stars: ✭ 146 (+317.14%)
Mutual labels:  druid, shiro

欢迎报bug或pull request ~

若图片不能正常显示,请点击博客地址:制造装备物联及生产管理系统

production_ssm

这是一个生产管理ERP系统。依托科技计划重点项目“制造装备物联及生产管理系统研发”,主要包括:计划进度、设备管理、工艺监控、物料监控、人员监控、质量监控、系统管理7大模块。

项目技术架构(Spring+SpringMVC+Mybatis)

  • Maven
  • Spring(IOC DI AOP 声明式事务处理)
  • SpringMVC(支持Restful风格)
  • Hibernate Validator(参数校验)
  • Mybatis(最少配置方案)
  • shiro权限控制,结合ajax实现了异步认证与异步授权,同时实现了细粒度的权限动态分配(到按钮级别);添加了shiro session过期的登录跳转
  • jQuery EasyUI开发前端页面,利用jQuery文件上传插件实现拖拽上传的效果并对文件类型、大小、数量进行控制;利用search-box实现查找功能
  • Druid(数据源配置 sql防注入 sql性能监控)
  • 统一的异常处理
  • JSP JSTL JavaScript
  • kindeditor富文本编辑器,处理图片上传和富文本编辑

系统架构

系统架构图

数据库设计(详见sql文件)

数据库设计

软件运行截图

  • 登录界面

登录可使用账号:22,密码:22的超级管理员登录,若密码输错,下次登录需输入验证码。

登录界面

  • 运行界面

超级管理员可显示系统管理模块进行系统权限分配与管理,其他角色可查看除系统管理外的剩余模块的信息(包括下载附件、查看图片等),但是只能维护该角色对应权限内的信息。
左边功能搜索栏可进行功能模糊查找。

运行界面

  • 图片上传

图片上传的配置请查看文档尾部的注释,图片大小要求不能超过1M,支持jpg、png等多种格式的图片,上传成功后可在相应的展示栏进行回显。

图片上传

  • 文件上传

文件上传使用了一个开源的jQuery文件上传插件,可以在common.js里面修改上传文件的参数,包括上传个数,支持的文件类型等,配置信息如下:

url:"file/upload",
maxFileCount: 5,                //上传文件个数(多个时修改此处
returnType: 'json',              //服务返回数据
allowedTypes: 'doc,docx,excel,sql,txt,ppt,pdf',  //允许上传的文件式
showDone: false,                     //是否显示"Done"(完成)按钮
showDelete: true,                  //是否显示"Delete"(删除)按钮

文件上传

  • 富文本编辑

本系统采用了开源的KindEditor富文本编辑器,它是一套在线HTML编辑器,主要用于让用户在网站上获得所见即所得编辑效果。KindEditor把传统的多行文本输入框(textarea)替换为可视化的富文本输入框。

KindEditor主要特点

  • 快速:体积小,加载速度快

  • 开源:开放源代码,高水平,高品质

  • 底层:内置自定义 DOM 类库,精确操作 DOM

  • 扩展:基于插件的设计,所有功能都是插件,可根据需求增减功能

  • 风格:修改编辑器风格非常容易,只需修改一个 CSS 文件

  • 兼容:支持大部分主流浏览器,比如 IE、Firefox、Safari、Chrome、Opera

富文本编辑

  • 关联信息

关联对象的信息,点击以弹窗的形式显示,若具有该模块对应的修改权限,则也可在此进行信息维护。

关联信息

  • search-box查找

可以在右上角的search-box选择查询条件,输入关键字进行对应信息的模糊查找。

search-box查找

  • session过期跳转登录

用户登录后,会建立相应的session,系统默认过期时间为10分钟,若需更改,可在applicationContext-shiro.xml配置文件中,更改如下配置。

<!-- 会话管理器 -->
<bean id="sessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">
    <!-- session的失效时长,单位毫秒 ,这里设置为10分钟-->
    <property name="globalSessionTimeout" value="600000"/>
    <!-- 删除失效的session -->
    <property name="deleteInvalidSessions" value="true"/>
    <!-- 指定本系统sessionId, 默认为: JSESSIONID 问题: 与Servlet容器名冲突, 如Jetty, Tomcat等默认JSESSIONID,
    	当跳出shiro Servlet时如Error-page容器会为JSESSIONID重新分配值导致登录会话丢失! -->
    <property name="sessionIdCookie" ref="sessionIdCookie"/>
</bean>

若session过期,则应跳转登录界面重新登录。系统采用的方式是设置一个sessionfilter,如下:

public class SessionFilter implements Filter {

    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException,
            ServletException {

        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        if (!SecurityUtils.getSubject().isAuthenticated()) {
            //判断session里是否有用户信息,且是否为ajax请求,如果是ajax请求响应头会有,x-requested-with
            if (request.getHeader("x-requested-with") != null
                    && request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")) {
                response.setHeader("session-status", "timeout");//在响应头设置session状态
            }
        }
        filterChain.doFilter(request, servletResponse);
    }

    @Override
    public void destroy() {
        // TODO Auto-generated method stub
    }

    @Override
    public void init(FilterConfig arg0) throws ServletException {
        // TODO Auto-generated method stub
    }
}

并在web.xml中配置该filter。当session过期时, 在响应头设置session状态为timeout,然后采用全局的ajax事件对session状态进行判断,跳转到登录页面。该事件定义在common.js中,如下:

//全局ajax事件,处理session过期跳转登录
$.ajaxSetup({
	complete:function(XMLHttpRequest,sessionStatus){
		var sessionstatus = XMLHttpRequest.getResponseHeader("session-status");
		if(sessionstatus=="timeout"){
		     $.messager.alert('提示信息', "登录超时!请重新登录!", 'info',function(){
		         window.location.href = 'login';
		     });
		} 
    }
});

关于这部分的详细内容请参考我的一篇博客:利用filter和全局ajax事件实现shiro session过期登录跳转

https://coding.net/u/megagao/p/ziyuan/git/raw/master/pm_image/session%25E8%25BF%2587%25E6%259C%259F%25E8%25B7%25B3%25E8%25BD%25AC%25E7%2599%25BB%25E5%25BD%2595.png

  • 动态权限控制

本系统采用经典的权限模型,即RBAC(Role-Based Access Control )基于角色的访问控制,即用户通过角色与权限进行关联。模型用到5张表:用户表、角色表、权限表、用户角色表、角色权限表。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限”的授权模型。在这种模型中,用户与角色之间,角色与权限之间,一般者是多对多的关系。

该模型可简化表示为下图:

https://coding.net/u/megagao/p/ziyuan/git/raw/master/pm_image/RBAC%25E6%259D%2583%25E9%2599%2590%25E6%25A8%25A1%25E5%259E%258B.png

本系统基于RBAC权限模型,采用shiro框架进行权限控制。只有角色为超级管理员的用户才能进行系统的权限管理,权限级别细化到菜单选项。

动态权限控制

注:

导入项目到STS

感谢一位韩国道友给我发的邮件,介绍了将production_ssm导入到STS中,并将详细过程与注意事项完整记录了下来。非常感谢他的文档,也为STS的使用提供了参考。 参见:导入production_ssm到STS

文件上传配置

在本地建立上传图片和文件的文件夹,如我的存放路径是在D:\upload\temp\img,D:\upload\temp\file文件夹下,然后修改tomcat的配置文件server.xml,添加虚拟路径,将对图片和文件的请求url映射到本机硬盘的相应路径,如下:

<Host name="localhost"  appBase="webapps"
        unpackWARs="true" autoDeploy="true">
    <!-- SingleSignOn valve, share authentication between web applications
         Documentation at: /docs/config/valve.html -->
    <!--
    <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
    -->

    <!-- Access log processes all example.
         Documentation at: /docs/config/valve.html
         Note: The pattern used is equivalent to using pattern="common" -->
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="localhost_access_log" suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />

    <!-- 在Host标签下添加下面两行,配置虚拟路径到你本机的文件夹 -->
    <Context path="/pic" docBase="D:\upload\temp\img" crossContext="true" trusted="true" reloadable="true"/>
    <Context path="/file" docBase="D:\upload\temp\file" crossContext="true" trusted="true" reloadable="true"/>
</Host>

idea classpath配置

idea引入项目后,resources目录在eclipse中是在classpath下的,而在idea中变成在classpath外,导致项目无法识别配置文件。解决办法是把resources文件夹加入到classpath中,请参照此博文操作:eclipse与idea中classpath配置路径不同导致迁移项目时的FileNotFoundException问题

Mybatis逆向工程

系统使用了Mybatis的逆向工程,依据数据库表自动生成domain和mapper(注:自动生成的代码都是针对单表,若需多表整合,则要手动修改实现),其中,针对每个数据库表,都会生成两个封装对象,可以认为example对象是对其相应的ORM映射对象查询条件的封装。逆向工程的实现--Mybatis Generator的代码托管在https://github.com/mybatis/generator,代码down下来后,配置generatorConfig.xml文件,如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
  PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
	<context id="testTables" targetRuntime="MyBatis3">

		<commentGenerator>
			<!-- 是否去除自动生成的注释 true:是 : false:否 -->
			<property name="suppressAllComments" value="true" />
		</commentGenerator>

		<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
		<jdbcConnection driverClass="com.mysql.jdbc.Driver"
			connectionURL="jdbc:mysql://localhost:3306/production_ms" userId="root"
			password="root">
		</jdbcConnection>

		<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 
			NUMERIC 类型解析为java.math.BigDecimal -->
		<javaTypeResolver>
			<property name="forceBigDecimals" value="false" />
		</javaTypeResolver>

		<!-- targetProject:生成PO类的位置 -->
		<javaModelGenerator targetPackage="org.hqu.production_ms.domain"
			targetProject=".\src">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
			<!-- 从数据库返回的值被清理前后的空格 -->
			<property name="trimStrings" value="true" />
		</javaModelGenerator>

        <!-- targetProject:mapper映射文件生成的位置 -->
		<sqlMapGenerator targetPackage="org.hqu.production_ms.mapper" 
			targetProject=".\src">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
		</sqlMapGenerator>

		<!-- targetPackage:mapper接口生成的位置 -->
		<javaClientGenerator type="XMLMAPPER"
			targetPackage="org.hqu.production_ms.mapper" 
			targetProject=".\src">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
		</javaClientGenerator>

		<!-- 指定数据库表 -->
		<table schema="" tableName="unqualify_apply"></table>

	</context>
</generatorConfiguration>

修改完成后,执行main方法即可。需要注意的是,若要重新生成,则需把已经生成的文件删除,因为它不会自己覆盖,导致文件混乱。关于Mybatis逆向工程的更多详细信息,读者可以自行上网查阅。

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].