胶州网站建设公司,有哪些国外网站做的好的效果图,吉林北京网站建设,wordpress是干什么的TOC
springboot413福泰轴承股份有限公司进销存系统pf
绪论
1.1 研究背景
现在大家正处于互联网加的时代#xff0c;这个时代它就是一个信息内容无比丰富#xff0c;信息处理与管理变得越加高效的网络化的时代#xff0c;这个时代让大家的生活不仅变得更加地便利化#…TOC
springboot413福泰轴承股份有限公司进销存系统pf
绪论
1.1 研究背景
现在大家正处于互联网加的时代这个时代它就是一个信息内容无比丰富信息处理与管理变得越加高效的网络化的时代这个时代让大家的生活不仅变得更加地便利化也让时间变得更加地宝贵化因为每天的每分钟每秒钟这些时间都能让人们处理大批量的日常事务这些场景是之前的手工模式无法与之相抗衡的。对于商品信息的管理来说传统的通过纸质文档记录信息的方式已经落后了依靠手工管理商品信息不仅花费较长的工作时间在对记录各种信息的文档进行信息查询以及信息核对操作时也不能及时保证信息的准确性基于这样的办公低效率环境下对于商品信息的处理就要提出新的解决方案。因为这个时代的信息一直都在高速发展要是不抱着发展的观念看待事情极有可能被这个市场快速遗忘甚至被无情地淘汰掉。所以尽早开发一款福泰轴承股份有限公司进销存系统进行信息的快速处理既跟上了时代的发展脚步也能让自己的核心竞争力有所提升。
1.2目的和意义
互联网加的时代一方面是加快信息的发展另一方面也是对传统行业进行筛选能够继续发展的肯定是那些能够充分运用互联网技术进行自身升级改革的行业。那些停步不前的行业只能就此结束进而被大家所遗忘。这次设计出来的福泰轴承股份有限公司进销存系统它不仅能够让管理人员在信息增加信息的编辑等事务处理上节省很多的时间也会砍掉一部分的人工成本节省不必要开支的资金。另外此系统的操作界面是可视化的界面管理人员无需付费培训就能尽快上手。福泰轴承股份有限公司进销存系统的开发意义如下
1、管理人员再也不用在查询信息上花费大量宝贵的时间了通过信息关键词字段就可以在几秒内获取需要的信息在各种突发事件面前管理人员也不用慌张可以从容淡定地处理各种相关信息。
2、该系统在每天的24小时期间都是不会停止服务的只要有信息操作的需要管理人员都能使用常用的360浏览器或者百度浏览器或者谷歌浏览器2345浏览器等大众浏览器都能登录系统然后操作对应的功能。
3、有了这款信息管理类操作软件所有需要进行处理的数据不用在纸质版本的文档上进行记载而是基于电脑进行信息录入。
4、商品方面的信息都是通过网站进行显示其实质是这些信息都保存在网站对应的数据库里面。只要操作员不去恶意删除信息那么这些信息将会永久保存。
1.3 论文结构安排
编写福泰轴承股份有限公司进销存系统相对应的论文其实就是对开发完成的程序进行再次解读的过程。本论文从七个方面的内容讲解了开发的程序具体内容如下
第一个部分就是论文的绪论这个部分就是介绍在什么样的背景下开发的程序以及这个程序开发出来具有什么意义等内容。
第二个部分就是介绍开发这个程序使用了什么技术使用什么数据库保存程序的数据信息程序开发的语言是使用的什么语言等内容。
第三个部分就是介绍这个程序开发在现实生活的可行性问题也讲述了程序开发需要设置什么功能等内容。
第四个部分就是已经知晓程序的大致功能需要对程序的功能进行更为严格的细分也需要出具相应的功能结构图同时也要设计程序对应的数据库包括数据库里面的数据表的设计等内容。
第五个部分就是在系统的编码阶段需要使用编程语言完成程序的功能完成程序的界面设计最终以界面实现的效果图展示设计成果等内容。
第六个部分就是程序已经完成了开发的前提之下需要检测程序的各个模块是否衔接正常程序各个功能能否在网络等一切外部条件正常的情况下运行这期间要是出现任何错误都需要及时记录并在后期进行修补完善。
第七个部分就是论文最后的总结部分描述遇到的问题采用的解决思路等内容。
2 相关技术
2.1 VUE介绍
Vue (读音 /vjuː/类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层不仅易于上手还便于与第三方库或既有项目整合。另一方面当与现代化的工具链以及各种支持类库结合使用时Vue 也完全能够为复杂的单页应用提供驱动。
2.2 Mysql数据库介绍
有了程序功能的操作也需要对程序操作的各个功能所产生的数据信息存放在一个固定的仓库里面这个所谓的仓库就是大家最熟悉的程序开发需要使用的数据库了数据库能够发展到至今的模样其实也是经历了很多的变化历程的在最开始由于数据信息处理的需要开始推出最低级的数据管理这个阶段也是数据库早期的人工管理的阶段后来也经历了文件管理的阶段这个阶段的数据管理因为信息不能够进行共享加上管理的数据对配套的程序产生了较强的依赖性在数据信息管理上也存在很多数据的重复记载造成数据冗余等问题。所以为了解决上述一系列文件管理阶段所产生的数据管理的问题对数据管理方式进行了全方位的升级改造也就让数据管理进入了一个全新的阶段——数据库系统的阶段。这个阶段也是数据库管理数据的一个全新的相当高级的阶段。
说到数据库也不得不说数据库的模型数据库拥有的数据模型有网状还有层次以及关系型这三样数据库模型。网状的结构就是把记录的每条信息都比喻成一个点点跟点之间也有联系最终就形成了一个像网一样的结构就是所谓的网状数据模型。也有对数据记录使用树状结构的方式进行数据保存这个就是层次数据模型关系数据库模型运用在现在市面上常见的数据库当中了像本系统开发使用的MySQL数据库还有安装过程比较复杂的Sqlserver数据库也有一些比较小巧的关系型数据库像Access数据库FoxPro数据库等数据库。这样的关系型数据库将数据表里面的行还有列进行相互关联形成一个二维矩阵的方式来保存程序所产生的数据信息。
本次之所以选择MySQL数据库来当程序数据存放的仓库则是因为此数据库安装不用费时也不需要各种百度信息去解决安装过程中出现的任何问题而且由于自己的电脑内存比较小才4个G为了更好的开发项目程序针对低配置的电脑选择MySQL数据库也是情理之中。图2.3展示了数据列设计中需要使用的列类型。 图2.3数据列类型图
2.3 JAVA语言介绍
在1995年这一年的5月份著名的Sun Microsystems公司在程序开发设计上面郑重推出一种面向对象开发的程序设计语言——Java最开始的时候Java是由詹姆斯.高斯林这位伟大的JAVA之父来进行主导但是在后来由于各种原因让甲骨文公司这个针对商业程序创建了oracle大型数据库的公司收购了Java。Java的平台总共算下来有3个分别为javaME和javaSE以及javaEE这3个java平台。下面将对其进行分别介绍。
1.在电脑桌面程序的开发上面需要选择JavaME这个用得也比较多。
2.企业也会根据工作以及业务需要开发各种软件那么就会选用JavcEE这个支持企业版软件的开发的Java平台JavcEE主攻运用在企业领域上面的web应用JavcEE也在javaSE的基础上获得了比如jsp技术 Servlet技术等程序开发技术的支持。
3.现在生活中手机的普及化也使得手机端这样的移动设备的软件的兴起JavaME这个迷你版java平台就能运用于移动端的软件开发操作。图2.4就是 Java技术原理图。 图2.4 Java技术原理图
3 系统分析
3.1系统可行性分析
需要使用大部分精力开发的福泰轴承股份有限公司进销存系统为了充分降低开发风险特意在开发之前进行可行性分析这个验证系统开发是否可行的步骤。本文就会从技术角度经济角度还有用户使用的程序的运行角度进行综合阐述。
3.1.1 技术可行性分析
开发程序选择的是面向对象的功能强大的简单易用的Java程序设计语言数据库的开发工具使用到了Mysql数据库由于自己之前接触过一些简单的程序开发方面的设计作品所以对Myeclipse工具的使用比较熟练对于数据库的操作技巧也有一定的积累。另外程序开发需要在自己电脑上安装的软件并不多在win7操作系统的大环境下能够完全搭建好程序开发的操作环境比如Myeclipse工具Mysql数据库工具游览器以及处理程序图片的Photoshop工具等都能安装在自己的电脑上。总的说来开发这个程序在技术上是可以实现的。
3.1.2 经济可行性分析
开发出来的程序并不是朝着商业程序的方向进行设计开发的它只是作为一个毕业设计项目进行开发主要用于检验学生在学校所学知识的一个检验也锻炼学生运用网络图书等工具进行自学的能力。所以开发这个程序软件并不会涉及到经济上面的开销在开发软件的选择上也不会额外付费安装软件在开发软件的官网上面就可以下载需要的软件并根据提示的安装步骤安装软件到自己的电脑上面。总的说来开发这个程序在经济上也不存在经费支出。
3.1.3 运行可行性分析
因为这个程序软件从开始开发到开发截止都是根据用户的需求进行定制考虑到此程序软件是面向广大普通操作用户鉴于他们的知识文化水平特意开发出一个可操作性强的能够很容易让使用用户上手的具有可视化操作界面的一个程序软件。总的说来这个程序站在用户运行程序的角度上分析是不存在操作难的问题的。用户只要打开程序就可以免去专人培训进行程序功能操作。
经过上面从技术的角度从经济的角度从程序运行的角度这三个角度分析现打算开发的程序可以得出该程序软件是可以进行开发操作的。
3.2系统性能分析
3.2.1 系统安全性
程序在使用中是不允许其他访问者随意窃取程序里面的隐秘信息也不允许其他操作者越权操作其他管理用户操作的功能要真正杜绝这些现象就必须在程序开发之前把程序的安全性给考虑进去。
比如现在很多程序都会把用户注册的功能给考虑进去让用户在注册页面功能区填写自己的个人信息这些数据信息涵盖了用户本人的姓名用户对程序登录设置的密码用户经常使用的邮箱用户的常用联系方式还有用户的所住地址等信息这些信息都是设计到用户本人的隐私那么这些信息在传输给程序后台时是需要进行管理并保存至对应的数据库文件里面。要是有人恶意窃取程序的数据信息也就会让那些注册了此程序软件的用户的个人隐秘信息都会遭到泄露。这些信息落入其他不法分子手里他们极有可能根据用户的隐私信息去骚扰用户并把这些信息用于各种商业用途谋取其他非法的利益。所以数据安全性是一个系统能不能使用的首要标准。
3.2.2 数据完整性
数据完整性是确保数据信息是否具有可靠性是否具有参考价值的一个重要因素数据信息只描述一部分或者必有的数据信息反而为空等现象都是代表着这个数据信息不完整有数据缺陷这是个很严肃的问题因为这样的数据信息跟垃圾信息没什么两样。
说到数据完整性不得不提最常用的程序表单功能。这些表单主要就是提取广大用户的数据信息的需要广大用户根据表单上的要求填写自己的姓名信息以及自己的联系方式信息有些也会有额外的信息填写要求有必须要填的选项也有不需要必填的选项。假如广大用户为了保护自己的隐私或者不想受到其他人的骚扰不填写必填项等信息广大用户在最后提交此表单的时候往往都是提交不了的。
数据完整性不仅仅限于登记的数据要完整它也需要程序里面的所有数据信息之间存在关联而且这种联系也是要求不能出差错的。
由于数据表之间也会存在一定的联系所以同一个数据也会出现在另一个表格里面那么这两个表格记录的同一个数据应该是一样的。不能够是同样的数据信息在不同表中不一样。
3.2.3系统可扩展性
一切事物都是一直在发展程序员开发软件也需要带着发展的思维去进行软件开发操作这样的话开发出来的程序在应对管理所需时也会相对应的进行程序升级与更新。不论是功能完善还是数据库升级都能在原来的基础上对原有程序进行迭代升级。让开发出来的程序能够走得越来越远。这也是广大用户对程序软件的使用要求。
3.3系统流程分析
管理员假如要操作系统提供的功能那么管理员就要在系统的登录界面填写管理员登录的账号信息填写相应的密码信息管理员需要保证这两者能够验证身份的账号以及密码信息的正确性这样管理员就可以通过登录界面进入系统后台操作界面。图3.1就是开发的程序软件福泰轴承股份有限公司进销存系统它的操作流程图。 图3.1 系统操作流程图
3.3.1系统登录流程
福泰轴承股份有限公司进销存系统的登录流程针对的角色就是操作员的操作角色。在登录界面需要的必填信息就是账号信息配上登录的密码信息就能登录福泰轴承股份有限公司进销存系统需要注意的就是必填的账号信息和登录密码信息都需要进行验证系统会判断账号还有填写的密码信息的正确性只有这两者信息都正确了就能成功登录福泰轴承股份有限公司进销存系统了。系统登录流程图如下图。 图3.2 系统登录流程图
3.3.2信息添加流程
用户在添加信息的界面填写的任何数据信息也是需要验证的系统会判断用户填写信息的格式还有数据信息是不是合法信息如果用户填写的信息是合法内容系统就会在数据库对应的数据表里面添加信息。添加信息流程如下图。 图3.3 添加信息流程图
3.3.3信息删除流程
对于那些已经失效的信息需要用户及时进行删除这样有利于腾出空间存放其他信息。删除信息也是先从数据库对应数据表里面删除数据接着就是更新数据表的信息。这样删除的数据在用户操作界面就查看不到了。信息删除流程如下图所示。 图3.4 信息删除流程图
3.4系统功能分析
福泰轴承股份有限公司进销存系统具有管理员角色用户角色这几个操作权限。
福泰轴承股份有限公司进销存系统针对管理员设置的功能有添加并管理各种类型信息管理用户账户信息管理商品信息管理公告信息等内容。
福泰轴承股份有限公司进销存系统针对用户设置的功能有查看并修改个人信息查看商品信息查看公告信息等内容。
4 系统设计
4.1系统概要设计
福泰轴承股份有限公司进销存系统并没有使用C/S结构而是基于网络浏览器的方式去访问服务器进而获取需要的数据信息这种依靠浏览器进行数据访问的模式就是现在用得比较广泛的适用于广域网并且没有网速限制要求的小程序结构图4.1就是开发出来的程序工作原理图。 图4.1 程序工作的原理图
4.2系统功能结构设计
福泰轴承股份有限公司进销存系统针对管理员设置的功能有添加并管理各种类型信息管理用户账户信息管理商品信息管理公告信息等内容。
福泰轴承股份有限公司进销存系统针对用户设置的功能有查看并修改个人信息查看商品信息查看公告信息等内容。
4.3数据库设计
4.3.1数据库E-R图设计
程序设计是离不开对应数据库的设计操作的这样的做法就是减少数据对程序的依赖性所以数据库的设计也是需要花费大量的日常时间来进行设计的在设计中对程序开发需要存储的数据信息进行实体划分先确认实体然后设计实体的属性等操作这种设计就是数据库设计里面不能少的必须有的E-R模型设计。为了降低程序设计的对应的数据库设计难度开发人员也可以使用相应的工具来进行E-R模型设计现在市面上设计E-R模型的工具有PowerDesigner建模工具Navicat制作工具还有微软的Visio绘图工具。为了简便起见本程序在设计E-R模型的时候就选用了微软的Visio这款功能强大操作便利的绘图工具。
1下图是商品出入库实体和其具备的属性。 商品出入库实体属性图
2下图是商品实体和其具备的属性。 商品实体属性图
3下图是商品退货实体和其具备的属性。 商品退货实体属性图
4下图是公告实体和其具备的属性。 公告实体属性图
5下图是销售人员实体和其具备的属性。 销售人员实体属性图
6下图是供应商信息实体和其具备的属性。 供应商信息实体属性图
7下图是商品销售实体和其具备的属性。 商品销售实体属性图
8下图是客户实体和其具备的属性。 客户实体属性图
9下图是仓库人员实体和其具备的属性。 仓库人员实体属性图
4.3.2 数据库表结构设计
本次程序开发选用的数据库管理工具是Mysql数据管理工具使用它存放数据也需要创建程序对应的数据库文件并命名刚创建的数据库文件有了数据库也需要创建各种数据表来充实数据库在数据表的创建中不仅需要对数据表命名也需要对数据表的字段进行设计包括每个数据表里面需要设置的字段名称字段对应的数据类型信息字段的主键设置这个也是不可缺少的因为每个数据表里面的主键就是标记着这个数据表跟其他数据表相区分的唯一标志。就相当于生活中的每个人都有姓名但是上网搜索自己的名字会发现全国上下有很多人的名字跟自己的名字一模一样包括姓氏以及名字区分每个人的唯一信息就是每个人的身份证号信息主键在数据表里面也是起着这样的重要作用。下面就介绍本次开发的程序福泰轴承股份有限公司进销存系统的数据表结构信息。
表4.1仓库人员表
序号列名数据类型说明允许空1IdIntid否2cangkurenyuan_nameString仓库人员姓名是3cangkurenyuan_phoneString仓库人员手机号是4cangkurenyuan_id_numberString仓库人员身份证号是5cangkurenyuan_photoString仓库人员照片是6xiaoshourenyuan_zhuzhiString现住址是7cangkurenyuan_emailString电子邮箱是8create_timeDate创建时间是
表4.2字典表
序号列名数据类型说明允许空1IdIntid否2dic_codeString字段是3dic_nameString字段名是4code_indexInteger编码是5index_nameString编码名字是6super_idInteger父字段id是7beizhuString备注是8create_timeDate创建时间是
表4.3公告表
序号列名数据类型说明允许空1IdIntid否2gonggao_nameString公告名称是3gonggao_typesInteger公告类型是4insert_timeDate公告发布时间是5gonggao_contentString公告详情是6create_timeDate创建时间是
表4.4供应商信息表
序号列名数据类型说明允许空1IdIntid否2gongyingshang_uuid_numberString供应商唯一编号是3gongyingshang_nameString供应商名称是4lianxiren_nameString联系人姓名是5lianxiren_phoneString联系人手机号是6lianxiren_addressString地址是7gongyingshang_typesInteger供应商类型是8gongyingshang_xinyongdengji_typesInteger信用等级是9gongyingshang_contentString供应商详情是10create_timeDate创建时间是
表4.5客户表
序号列名数据类型说明允许空1IdIntid否2xiaoshourenyuan_idInteger销售人员是3kehu_uuid_numberString客户编号是4kehu_nameString客户姓名是5kehu_phoneString客户手机号是6kehu_id_numberString客户身份证号是7kehu_photoString客户照片是8kehu_zhuzhiString客户住址是9laiyuan_typesInteger客户来源是10sex_typesInteger性别是11ageInteger年龄是12kehu_emailString客户邮箱是13kehu_contentString客户备注是14insert_timeDate录入时间是15create_timeDate创建时间是
表4.6商品表
序号列名数据类型说明允许空1IdIntid否2gongyingshang_idInteger供应商是3shangpin_uuid_numberString商品编号是4shangpin_nameString商品名称是5shangpin_photoString商品照片是6shangpin_danweiString单位是7shangpin_typesInteger商品类型是8shangpin_kucun_numberInteger商品库存是9shangpin_new_moneyBigDecimal进价是10shangpin_old_moneyBigDecimal售价是11cangku_typesInteger仓库是12daoqi_timeDate到期时间是13shangpin_contentString商品介绍是14insert_timeDate录入时间是15create_timeDate创建时间是
表4.7商品出入库表
序号列名数据类型说明允许空1IdIntid否2shangpin_idInteger商品是3cangkurenyuan_idInteger仓库人员是4shangpincuruku_uuid_numberString出入库编号是5shangpincuruku_nameString出入库标题是6shangpincuruku_typesInteger类型是7caozuo_numberInteger操作数量是8jieqing_typesInteger钱款结清是9shangpincuruku_contentString备注是10insert_timeDate录入时间是11create_timeDate创建时间是
表4.8商品销售表
序号列名数据类型说明允许空1IdIntid否2shangpin_idInteger商品是3kehu_idInteger客户是4xiaoshourenyuan_idInteger销售人员是5shangpinxiaoshou_uuid_numberString销售编号是6shangpinxiaoshou_nameString销售标题是7caozuo_numberInteger销售数量是8jieqing_typesInteger钱款结清是9huafei_moneyBigDecimal销售金额是10xiaoshou_timeDate销售时间是11shangpinxiaoshou_contentString备注是12insert_timeDate录入时间是13create_timeDate创建时间是
表4.9销售人员表
序号列名数据类型说明允许空1IdIntid否2xiaoshourenyuan_nameString销售人员姓名是3xiaoshourenyuan_phoneString销售人员手机号是4xiaoshourenyuan_id_numberString销售人员身份证号是5xiaoshourenyuan_photoString销售人员照片是6xiaoshourenyuan_zhuzhiString现住址是7xiaoshourenyuan_emailString电子邮箱是8create_timeDate创建时间是
表4.10商品退货表
序号列名数据类型说明允许空1IdIntid否2shangpinxiaoshou_idInteger商品销售是3xiaoshoutuihuo_uuid_numberString退货编号是4caozuo_numberInteger退货数量是5xiaoshoutuihuo_yuanyou_contentString退货缘由是6tuihuan_jineBigDecimal退还金额是7tuihuo_timeDate退货时间是8xiaoshoutuihuo_contentString备注是9insert_timeDate录入时间是10create_timeDate创建时间是
表4.11管理员表
序号列名数据类型说明允许空1IdIntid否2usernameString用户名是3passwordString密码是4roleString角色是5addtimeDate新增时间是
5 系统实现
5.1管理员功能介绍
5.1.1管理员登录
系统登录功能是程序必不可少的功能在登录页面必填的数据有两项一项就是账号另一项数据就是密码当管理员正确填写并提交这二者数据之后管理员就可以进入系统后台功能操作区。下图就是管理员登录页面。 图5.1 管理员登录页面
5.1.2 商品管理
项目管理页面提供的功能操作有查看商品删除商品操作新增商品操作修改商品操作。下图就是商品管理页面。 图5.2 商品管理页面
5.1.3 公告信息管理
公告信息管理页面提供的功能操作有新增公告修改公告删除公告操作。下图就是公告信息管理页面。 图5.3 公告信息管理页面
5.1.4公告类型管理
公告类型管理页面显示所有公告类型在此页面既可以让管理员添加新的公告信息类型也能对已有的公告类型信息执行编辑更新失效的公告类型信息也能让管理员快速删除。下图就是公告类型管理页面。 图5.4 公告类型列表页面
系统
CangkurenyuanController.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(/cangkurenyuan)
public class CangkurenyuanController {private static final Logger logger LoggerFactory.getLogger(CangkurenyuanController.class);private static final String TABLE_NAME cangkurenyuan;Autowiredprivate CangkurenyuanService cangkurenyuanService;Autowiredprivate TokenService tokenService;Autowiredprivate DictionaryService dictionaryService;//级联表非注册的service//注册表serviceAutowiredprivate XiaoshourenyuanService xiaoshourenyuanService;/*** 后端列表*/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(cangkurenyuanId,request.getSession().getAttribute(userId));else if(销售人员.equals(role))params.put(xiaoshourenyuanId,request.getSession().getAttribute(userId));CommonUtil.checkMap(params);PageUtils page cangkurenyuanService.queryPage(params);//字典表数据转换ListCangkurenyuanView list (ListCangkurenyuanView)page.getList();for(CangkurenyuanView 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);CangkurenyuanEntity cangkurenyuan cangkurenyuanService.selectById(id);if(cangkurenyuan !null){//entity转viewCangkurenyuanView view new CangkurenyuanView();BeanUtils.copyProperties( cangkurenyuan , view );//把实体数据重构到view中//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put(data, view);}else {return R.error(511,查不到数据);}}/*** 后端保存*/RequestMapping(/save)public R save(RequestBody CangkurenyuanEntity cangkurenyuan, HttpServletRequest request){logger.debug(save方法:,,Controller:{},,cangkurenyuan:{},this.getClass().getName(),cangkurenyuan.toString());String role String.valueOf(request.getSession().getAttribute(role));if(false)return R.error(511,永远不会进入);WrapperCangkurenyuanEntity queryWrapper new EntityWrapperCangkurenyuanEntity().eq(username, cangkurenyuan.getUsername()).or().eq(cangkurenyuan_phone, cangkurenyuan.getCangkurenyuanPhone()).or().eq(cangkurenyuan_id_number, cangkurenyuan.getCangkurenyuanIdNumber());logger.info(sql语句:queryWrapper.getSqlSegment());CangkurenyuanEntity cangkurenyuanEntity cangkurenyuanService.selectOne(queryWrapper);if(cangkurenyuanEntitynull){cangkurenyuan.setCreateTime(new Date());cangkurenyuan.setPassword(123456);cangkurenyuanService.insert(cangkurenyuan);return R.ok();}else {return R.error(511,账户或者仓库人员手机号或者仓库人员身份证号已经被使用);}}/*** 后端修改*/RequestMapping(/update)public R update(RequestBody CangkurenyuanEntity cangkurenyuan, HttpServletRequest request) throws NoSuchFieldException, ClassNotFoundException, IllegalAccessException, InstantiationException {logger.debug(update方法:,,Controller:{},,cangkurenyuan:{},this.getClass().getName(),cangkurenyuan.toString());CangkurenyuanEntity oldCangkurenyuanEntity cangkurenyuanService.selectById(cangkurenyuan.getId());//查询原先数据String role String.valueOf(request.getSession().getAttribute(role));
// if(false)
// return R.error(511,永远不会进入);//根据字段查询是否有相同数据WrapperCangkurenyuanEntity queryWrapper new EntityWrapperCangkurenyuanEntity().notIn(id,cangkurenyuan.getId()).andNew().eq(username, cangkurenyuan.getUsername()).or().eq(cangkurenyuan_phone, cangkurenyuan.getCangkurenyuanPhone()).or().eq(cangkurenyuan_id_number, cangkurenyuan.getCangkurenyuanIdNumber());logger.info(sql语句:queryWrapper.getSqlSegment());CangkurenyuanEntity cangkurenyuanEntity cangkurenyuanService.selectOne(queryWrapper);if(.equals(cangkurenyuan.getCangkurenyuanPhoto()) || null.equals(cangkurenyuan.getCangkurenyuanPhoto())){cangkurenyuan.setCangkurenyuanPhoto(null);}if(cangkurenyuanEntitynull){cangkurenyuanService.updateById(cangkurenyuan);//根据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());ListCangkurenyuanEntity oldCangkurenyuanList cangkurenyuanService.selectBatchIds(Arrays.asList(ids));//要删除的数据cangkurenyuanService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 批量上传*/RequestMapping(/batchInsert)public R save( String fileName, HttpServletRequest request){logger.debug(batchInsert方法:,,Controller:{},,fileName:{},this.getClass().getName(),fileName);Integer cangkurenyuanId Integer.valueOf(String.valueOf(request.getSession().getAttribute(userId)));SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);try {ListCangkurenyuanEntity cangkurenyuanList 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){//循环CangkurenyuanEntity cangkurenyuanEntity new CangkurenyuanEntity();
// cangkurenyuanEntity.setUsername(data.get(0)); //账户 要改的
// //cangkurenyuanEntity.setPassword(123456);//密码
// cangkurenyuanEntity.setCangkurenyuanName(data.get(0)); //仓库人员姓名 要改的
// cangkurenyuanEntity.setCangkurenyuanPhone(data.get(0)); //仓库人员手机号 要改的
// cangkurenyuanEntity.setCangkurenyuanIdNumber(data.get(0)); //仓库人员身份证号 要改的
// cangkurenyuanEntity.setCangkurenyuanPhoto();//详情和图片
// cangkurenyuanEntity.setXiaoshourenyuanZhuzhi(data.get(0)); //现住址 要改的
// cangkurenyuanEntity.setSexTypes(Integer.valueOf(data.get(0))); //性别 要改的
// cangkurenyuanEntity.setCangkurenyuanEmail(data.get(0)); //电子邮箱 要改的
// cangkurenyuanEntity.setCreateTime(date);//时间cangkurenyuanList.add(cangkurenyuanEntity);//把要查询是否重复的字段放入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(cangkurenyuanPhone)){ListString cangkurenyuanPhone seachFields.get(cangkurenyuanPhone);cangkurenyuanPhone.add(data.get(0));//要改的}else{ListString cangkurenyuanPhone new ArrayList();cangkurenyuanPhone.add(data.get(0));//要改的seachFields.put(cangkurenyuanPhone,cangkurenyuanPhone);}//仓库人员身份证号if(seachFields.containsKey(cangkurenyuanIdNumber)){ListString cangkurenyuanIdNumber seachFields.get(cangkurenyuanIdNumber);cangkurenyuanIdNumber.add(data.get(0));//要改的}else{ListString cangkurenyuanIdNumber new ArrayList();cangkurenyuanIdNumber.add(data.get(0));//要改的seachFields.put(cangkurenyuanIdNumber,cangkurenyuanIdNumber);}}//查询是否重复//账户ListCangkurenyuanEntity cangkurenyuanEntities_username cangkurenyuanService.selectList(new EntityWrapperCangkurenyuanEntity().in(username, seachFields.get(username)));if(cangkurenyuanEntities_username.size() 0 ){ArrayListString repeatFields new ArrayList();for(CangkurenyuanEntity s:cangkurenyuanEntities_username){repeatFields.add(s.getUsername());}return R.error(511,数据库的该表中的 [账户] 字段已经存在 存在数据为:repeatFields.toString());}//仓库人员手机号ListCangkurenyuanEntity cangkurenyuanEntities_cangkurenyuanPhone cangkurenyuanService.selectList(new EntityWrapperCangkurenyuanEntity().in(cangkurenyuan_phone, seachFields.get(cangkurenyuanPhone)));if(cangkurenyuanEntities_cangkurenyuanPhone.size() 0 ){ArrayListString repeatFields new ArrayList();for(CangkurenyuanEntity s:cangkurenyuanEntities_cangkurenyuanPhone){repeatFields.add(s.getCangkurenyuanPhone());}return R.error(511,数据库的该表中的 [仓库人员手机号] 字段已经存在 存在数据为:repeatFields.toString());}//仓库人员身份证号ListCangkurenyuanEntity cangkurenyuanEntities_cangkurenyuanIdNumber cangkurenyuanService.selectList(new EntityWrapperCangkurenyuanEntity().in(cangkurenyuan_id_number, seachFields.get(cangkurenyuanIdNumber)));if(cangkurenyuanEntities_cangkurenyuanIdNumber.size() 0 ){ArrayListString repeatFields new ArrayList();for(CangkurenyuanEntity s:cangkurenyuanEntities_cangkurenyuanIdNumber){repeatFields.add(s.getCangkurenyuanIdNumber());}return R.error(511,数据库的该表中的 [仓库人员身份证号] 字段已经存在 存在数据为:repeatFields.toString());}cangkurenyuanService.insertBatch(cangkurenyuanList);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) {CangkurenyuanEntity cangkurenyuan cangkurenyuanService.selectOne(new EntityWrapperCangkurenyuanEntity().eq(username, username));if(cangkurenyuannull || !cangkurenyuan.getPassword().equals(password))return R.error(账号或密码不正确);String token tokenService.generateToken(cangkurenyuan.getId(),username, cangkurenyuan, 仓库人员);R r R.ok();r.put(token, token);r.put(role,仓库人员);r.put(username,cangkurenyuan.getCangkurenyuanName());r.put(tableName,cangkurenyuan);r.put(userId,cangkurenyuan.getId());return r;}/*** 注册*/IgnoreAuthPostMapping(value /register)public R register(RequestBody CangkurenyuanEntity cangkurenyuan, HttpServletRequest request) {
// ValidatorUtils.validateEntity(user);WrapperCangkurenyuanEntity queryWrapper new EntityWrapperCangkurenyuanEntity().eq(username, cangkurenyuan.getUsername()).or().eq(cangkurenyuan_phone, cangkurenyuan.getCangkurenyuanPhone()).or().eq(cangkurenyuan_id_number, cangkurenyuan.getCangkurenyuanIdNumber());CangkurenyuanEntity cangkurenyuanEntity cangkurenyuanService.selectOne(queryWrapper);if(cangkurenyuanEntity ! null)return R.error(账户或者仓库人员手机号或者仓库人员身份证号已经被使用);cangkurenyuan.setCreateTime(new Date());cangkurenyuanService.insert(cangkurenyuan);return R.ok();}/*** 重置密码*/GetMapping(value /resetPassword)public R resetPassword(Integer id, HttpServletRequest request) {CangkurenyuanEntity cangkurenyuan cangkurenyuanService.selectById(id);cangkurenyuan.setPassword(123456);cangkurenyuanService.updateById(cangkurenyuan);return R.ok();}/*** 忘记密码*/IgnoreAuthRequestMapping(value /resetPass)public R resetPass(String username, HttpServletRequest request) {CangkurenyuanEntity cangkurenyuan cangkurenyuanService.selectOne(new EntityWrapperCangkurenyuanEntity().eq(username, username));if(cangkurenyuan!null){cangkurenyuan.setPassword(123456);boolean b cangkurenyuanService.updateById(cangkurenyuan);if(!b){return R.error();}return R.ok();}else{return R.error(账号不存在);}}/*** 获取用户的session用户信息*/RequestMapping(/session)public R getCurrCangkurenyuan(HttpServletRequest request){Integer id (Integer)request.getSession().getAttribute(userId);CangkurenyuanEntity cangkurenyuan cangkurenyuanService.selectById(id);if(cangkurenyuan !null){//entity转viewCangkurenyuanView view new CangkurenyuanView();BeanUtils.copyProperties( cangkurenyuan , 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(退出成功);}}
ShangpinServiceImpl.java
package com.service.impl;import com.utils.StringUtil;
import com.service.DictionaryService;
import com.utils.ClazzDiff;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.lang.reflect.Field;
import java.util.*;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.transaction.annotation.Transactional;
import com.utils.PageUtils;
import com.utils.Query;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import com.dao.ShangpinDao;
import com.entity.ShangpinEntity;
import com.service.ShangpinService;
import com.entity.view.ShangpinView;/*** 商品 服务实现类*/
Service(shangpinService)
Transactional
public class ShangpinServiceImpl extends ServiceImplShangpinDao, ShangpinEntity implements ShangpinService {Overridepublic PageUtils queryPage(MapString,Object params) {PageShangpinView page new QueryShangpinView(params).getPage();page.setRecords(baseMapper.selectListView(page,params));return new PageUtils(page);}}
UsersController.java package com.controller;import java.util.Arrays;
import java.util.Map;import javax.servlet.http.HttpServletRequest;import com.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
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.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.UsersEntity;
import com.service.TokenService;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;/*** 登录相关*/
RequestMapping(users)
RestController
public class UsersController {Autowiredprivate UsersService usersService;Autowiredprivate TokenService tokenService;/*** 登录*/IgnoreAuthPostMapping(value /login)public R login(String username, String password, String captcha, HttpServletRequest request) {UsersEntity user usersService.selectOne(new EntityWrapperUsersEntity().eq(username, username));if(usernull || !user.getPassword().equals(password)) {return R.error(账号或密码不正确);}String token tokenService.generateToken(user.getId(),username, users, user.getRole());R r R.ok();r.put(token, token);r.put(role,user.getRole());r.put(userId,user.getId());return r;}/*** 注册*/IgnoreAuthPostMapping(value /register)public R register(RequestBody UsersEntity user){
// ValidatorUtils.validateEntity(user);if(usersService.selectOne(new EntityWrapperUsersEntity().eq(username, user.getUsername())) !null) {return R.error(用户已存在);}usersService.insert(user);return R.ok();}/*** 退出*/GetMapping(value logout)public R logout(HttpServletRequest request) {request.getSession().invalidate();return R.ok(退出成功);}/*** 密码重置*/IgnoreAuthRequestMapping(value /resetPass)public R resetPass(String username, HttpServletRequest request){UsersEntity user usersService.selectOne(new EntityWrapperUsersEntity().eq(username, username));if(usernull) {return R.error(账号不存在);}user.setPassword(123456);usersService.update(user,null);return R.ok(密码已重置为123456);}/*** 列表*/RequestMapping(/page)public R page(RequestParam MapString, Object params,UsersEntity user){EntityWrapperUsersEntity ew new EntityWrapperUsersEntity();PageUtils page usersService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));return R.ok().put(data, page);}/*** 列表*/RequestMapping(/list)public R list( UsersEntity user){EntityWrapperUsersEntity ew new EntityWrapperUsersEntity();ew.allEq(MPUtil.allEQMapPre( user, user)); return R.ok().put(data, usersService.selectListView(ew));}/*** 信息*/RequestMapping(/info/{id})public R info(PathVariable(id) String id){UsersEntity user usersService.selectById(id);return R.ok().put(data, user);}/*** 获取用户的session用户信息*/RequestMapping(/session)public R getCurrUser(HttpServletRequest request){Integer id (Integer)request.getSession().getAttribute(userId);UsersEntity user usersService.selectById(id);return R.ok().put(data, user);}/*** 保存*/PostMapping(/save)public R save(RequestBody UsersEntity user){
// ValidatorUtils.validateEntity(user);if(usersService.selectOne(new EntityWrapperUsersEntity().eq(username, user.getUsername())) !null) {return R.error(用户已存在);}usersService.insert(user);return R.ok();}/*** 修改*/RequestMapping(/update)public R update(RequestBody UsersEntity user){
// ValidatorUtils.validateEntity(user);usersService.updateById(user);//全部更新return R.ok();}/*** 删除*/RequestMapping(/delete)public R delete(RequestBody Long[] ids){usersService.deleteBatchIds(Arrays.asList(ids));return R.ok();}
}
声明 本博客适用于广泛的学术和教育用途包括但不限于个人学习、开发设计产品设计。仅供学习参考旨在为读者提供深入理解和学术研究的材料。
文章转载自: http://www.morning.ywpwg.cn.gov.cn.ywpwg.cn http://www.morning.xinyishufa.cn.gov.cn.xinyishufa.cn http://www.morning.wmsgt.cn.gov.cn.wmsgt.cn http://www.morning.wjzzh.cn.gov.cn.wjzzh.cn http://www.morning.mzwfw.cn.gov.cn.mzwfw.cn http://www.morning.zrpys.cn.gov.cn.zrpys.cn http://www.morning.cwknc.cn.gov.cn.cwknc.cn http://www.morning.rdsst.cn.gov.cn.rdsst.cn http://www.morning.nclps.cn.gov.cn.nclps.cn http://www.morning.kxrld.cn.gov.cn.kxrld.cn http://www.morning.trmpj.cn.gov.cn.trmpj.cn http://www.morning.gjsjt.cn.gov.cn.gjsjt.cn http://www.morning.ztdlp.cn.gov.cn.ztdlp.cn http://www.morning.zrgsg.cn.gov.cn.zrgsg.cn http://www.morning.gpfuxiu.cn.gov.cn.gpfuxiu.cn http://www.morning.qbksx.cn.gov.cn.qbksx.cn http://www.morning.ktblf.cn.gov.cn.ktblf.cn http://www.morning.yjprj.cn.gov.cn.yjprj.cn http://www.morning.zrqs.cn.gov.cn.zrqs.cn http://www.morning.ns3nt8.cn.gov.cn.ns3nt8.cn http://www.morning.hdnd.cn.gov.cn.hdnd.cn http://www.morning.btpzn.cn.gov.cn.btpzn.cn http://www.morning.pftjj.cn.gov.cn.pftjj.cn http://www.morning.sgfpn.cn.gov.cn.sgfpn.cn http://www.morning.ljllt.cn.gov.cn.ljllt.cn http://www.morning.snzgg.cn.gov.cn.snzgg.cn http://www.morning.gswfs.cn.gov.cn.gswfs.cn http://www.morning.mtymb.cn.gov.cn.mtymb.cn http://www.morning.zwmjq.cn.gov.cn.zwmjq.cn http://www.morning.dmsxd.cn.gov.cn.dmsxd.cn http://www.morning.tmfm.cn.gov.cn.tmfm.cn http://www.morning.dyxlm.cn.gov.cn.dyxlm.cn http://www.morning.wtxdp.cn.gov.cn.wtxdp.cn http://www.morning.rbcw.cn.gov.cn.rbcw.cn http://www.morning.ypdmr.cn.gov.cn.ypdmr.cn http://www.morning.lznqb.cn.gov.cn.lznqb.cn http://www.morning.trplf.cn.gov.cn.trplf.cn http://www.morning.kcypc.cn.gov.cn.kcypc.cn http://www.morning.ltdxq.cn.gov.cn.ltdxq.cn http://www.morning.gtnyq.cn.gov.cn.gtnyq.cn http://www.morning.rynq.cn.gov.cn.rynq.cn http://www.morning.mfnsn.cn.gov.cn.mfnsn.cn http://www.morning.hxrg.cn.gov.cn.hxrg.cn http://www.morning.jbmbj.cn.gov.cn.jbmbj.cn http://www.morning.zlbjx.cn.gov.cn.zlbjx.cn http://www.morning.ygth.cn.gov.cn.ygth.cn http://www.morning.hsrpr.cn.gov.cn.hsrpr.cn http://www.morning.lnwdh.cn.gov.cn.lnwdh.cn http://www.morning.wblpn.cn.gov.cn.wblpn.cn http://www.morning.zqdzg.cn.gov.cn.zqdzg.cn http://www.morning.txlxr.cn.gov.cn.txlxr.cn http://www.morning.hnzrl.cn.gov.cn.hnzrl.cn http://www.morning.kehejia.com.gov.cn.kehejia.com http://www.morning.pxmyw.cn.gov.cn.pxmyw.cn http://www.morning.fkyrk.cn.gov.cn.fkyrk.cn http://www.morning.bbgn.cn.gov.cn.bbgn.cn http://www.morning.sqmbb.cn.gov.cn.sqmbb.cn http://www.morning.wjlbb.cn.gov.cn.wjlbb.cn http://www.morning.httzf.cn.gov.cn.httzf.cn http://www.morning.shawls.com.cn.gov.cn.shawls.com.cn http://www.morning.rtlth.cn.gov.cn.rtlth.cn http://www.morning.dskmq.cn.gov.cn.dskmq.cn http://www.morning.txzmy.cn.gov.cn.txzmy.cn http://www.morning.yxzfl.cn.gov.cn.yxzfl.cn http://www.morning.qqpg.cn.gov.cn.qqpg.cn http://www.morning.tnmmp.cn.gov.cn.tnmmp.cn http://www.morning.rykmf.cn.gov.cn.rykmf.cn http://www.morning.fnwny.cn.gov.cn.fnwny.cn http://www.morning.bhgnj.cn.gov.cn.bhgnj.cn http://www.morning.rsmtx.cn.gov.cn.rsmtx.cn http://www.morning.lmqfq.cn.gov.cn.lmqfq.cn http://www.morning.gbybx.cn.gov.cn.gbybx.cn http://www.morning.rttkl.cn.gov.cn.rttkl.cn http://www.morning.ftcrt.cn.gov.cn.ftcrt.cn http://www.morning.dshkp.cn.gov.cn.dshkp.cn http://www.morning.kzrbn.cn.gov.cn.kzrbn.cn http://www.morning.dyxzn.cn.gov.cn.dyxzn.cn http://www.morning.qkqzm.cn.gov.cn.qkqzm.cn http://www.morning.xxrwp.cn.gov.cn.xxrwp.cn http://www.morning.wdskl.cn.gov.cn.wdskl.cn