如何使用ssm实现钢铁集团公司安全管理系统的构建与实现

news2024/12/25 13:40:07

@TOC

ssm748钢铁集团公司安全管理系统的构建与实现+jsp

研究背景与现状

时代的进步使人们的生活实现了部分自动化,由最初的全手动办公已转向手动+自动相结合的方式。比如各种办公系统、智能电子电器的出现,都为人们生活的享受提供帮助。采用新型的自动化方式可以减少手动的办公时间,增加正确率从而增加人们的幸福指数。时代进步中计算机技术的发展尤为突出,渗透进生活的方方面面,各种App、 网站、管理系统、小程序迅速占领市场。

对于公司安全管理的现实问题,大多数企业采用人工加办公辅助软件的方式进行管理,这类方式对于信息的发布和流程、后续的资料整理工作都是非常大的帮助。但一般都还是针对管理人员使用,如果其它用户想要操作需要一步一步进行批准,非常复杂。现实公司安全管理工作中缺少一种更为优质、简单的方法途径。

1.2课题实现目的和研究意义

时代的发展也为人们提出了更高的要求,只有不断的学习和发展才可以前进。目前我们正在科技和网络发展的关键点,网络已实现普及。然而还是有大量的企业、机构采用传统的办公方式进行处理事务,当然传统的方式对于小规模的企业、机构来说更为适合,但想要发展就需要以发展的目光来看待问题。如果可以采用更科学、省力的方式进行办公将会带来变革。

公司的安全日常管理关系着企业的业绩和销售、亏损。企业对商品的订货、退货要严格把关,更要考虑到商品的质量、到期情况。以往都是由员工人工统计商品情况,企业审核力度不好把控,监督不了商品的实际情况。如果采用共享的平台,把商品管理的相关负责人员都结合到一起,起到共同监管的目的就可以解决这类问题。商品的所有信息都可以由管理员直接管理,其它用户的操作过程也可由相关管理员负责把控,把其它用户的管理工作实现流程化、清晰化,减少暗箱操作,提供更为透明的工作流程,实现钢铁集团公司安全管理的真正价值。

1.3课题研究内容

  本系统从公司安全管理的工作出发,包括管理员和分公司、经销商、集团四种权限。管理员的功能为个人中心、集团管理、商品管理、经销商管理、分公司管理、订货计划表管理、退货计划表管理等,实现系统里信息的全面管控,分公司的功能为个人资料管理和查看商品信息进行订货申请和退货申请。经销商负责浏览商品信息和查询订货计划表、退货计划表,集团可以审核订货计划表和退货计划表。四种权限的用户功能相辅相成,不可缺少,共同帮助钢铁集团公司安全日常运营管理。本系统实现“放手”、“透明化”管理,使商品的管理更加简单、轻松。

1.4论文结构安排

本篇论文的结构分为摘要、目录、正文部分、总结、致谢和参考文献。正文部分为核心。正文部分分为:

第1章绪论,从课题的开发背景、现状、目的意义等进行本课题的介绍;

第2章系统分析,从系统的开发技术、环境、可行性、操作流程等进行系统的详细分析;

第3章系统设计,从系统的功能图、数据库设计、ER图、数据库表进行系统的设计;

第4章系统实现,主要介绍系统的实现界面和实现内容;

第5章系统测试,讲解主要功能的测试过程以及测试结果。

第2章 系统分析

2.1系统开发中使用相关技术介绍

2.1.1Java介绍

Java语言是从C++进行衍生出来的一种新型编程语言,他保留了c++语言中很多核心技术,继承了他的面向对象的优点,而且舍弃了很多缺点,比如在Java语言中去掉了指针,这样可以减少很多错误,还去掉了运算符,这样提高了运行处理效率。还增加了很多优点,添加了垃圾回收功能,提高了代码的使用率,总体来说,Java语言是一个分布式的、高性能的、多线程的开发语言。Java从开发之初就是打算作为一个开放性的语言技术,这就要求需要有很高的兼容性,首先就需要同样的代码程序可以在不同的计算机上运行,还要支持不同的网络,同时还要注重安全性,方便用户使用。Java语言最突出的特点就是面向对象,可以把一个对象当成很多代码状态的物体,然后进行自定义类型进行关联操作,这样进行集合起来的代码就叫对象,面向对象的方法可以使设计根据的简单,方便管理,还可以减少失败。C++最大的一个缺点就是没有垃圾回收机制,通常在编程的过程中,初始化对象时候系统会自动分配一个内存地址,如果不需要这个对象的时候,系统不能进行自动删除和回收,这样造成了很大的内存浪费,导致系统卡顿,会让系统非常的不稳定,严重的话甚至会系统崩溃,而Java语言就是在这个基础上设置了垃圾回收机制,当一个使用过的对象没有引用的时候,系统可以自动删除,回收内存,这样就可以很好的避免了内存泄漏,保障了程序的安全,同时提高了运行效率。

2.1.2Mysql数据库介绍

Mysql数据库是目前比较流行的一种开源数据库,可以支持多种编译器进行在线测试,从而保证了代码的可移植性,而且支持多种操作系统有很好的跨平台性,为编程语言提供所需要的API,可以多线程同时运行,这样有效的减少了内存占用率,提高了使用效率。运行的过程中还能自动优化sql查询算法,这样使数据查询速度达到了显著的提高,而且Mysql数据库还可以作为一个独立的程序在客户端中单独使用,也可以嵌入到其他程序中搭配一起使用。Mysql数据库效率非常的高,可以处理上千万条数据,可以同时支持多种不同的数据引擎,而且是开源的软件,不需要支付任何费用,而且可以进行定制,使用GPL协议进行代码修改,开发属于自己的Mysql系统。综上所述,Mysql数据库是一个非常受欢迎的一个数据库,体积小,速度快,最重要的还是免费,非常适合中小型项目的开发使用。

2.1.3B/s架构介绍

B/s架构是随着网络快速发展而开发出来的一种网络框架,跟传统的cs框架最大的区别就是,直接把代码部署到网络服务器中,这样方便了系统的后期开发和维护,然后用户可以直接通过浏览器进行代码的访问,不需要额外安装任何的软件客户端,简化了用户的使用。B/s结构是指Browser/Server结构,意思就是只需要安装一个服务器就行了, 客户端方面主要就是采用浏览器进行访问,主要是对传统的c/s架构的一种改进,采用www浏览器技术和其他Script语言技术,把系统实现需要的代码全部部署到了服务器上面,是一种新型的架构技术,可以直接借助浏览器进行数据访问和数据交互。最大的优点就是,不需要安装客户端,不受环境影响,可以实时实地的进行访问,其次就是维护非常的方便。当然了有优点也有不可避免的缺点,首先是在访问速度方面,比较受网络的影响,不像C/s架构一样,处理速度非常的快,直接在本机就可以完成数据交互,而B/s需要借助网络才能进行服务器访问,必须保证有顺畅的网络,才能有好的使用体验,其次就是安全性,因为所有数据存储在网络服务器中,比较容易受到攻击,从而造成数据泄漏,这是目前B/s架构存在的最大的弊端。所以说B/s架构适合一些电子商务类的网站,适合比较有用户共享交互的,开放性的网站的设计与开发。所以我开发本系统采用B/s架构是非常适合的,可以达到多人同时登录系统,可以实现信息交互,而且方便随时随地的进行数据访问,而且我对B/s架构开发比较熟悉,所以本系统就采用B/s架构来进行开发设计。

2.2系统可行性分析

系统的可行性关系着系统开发的成功和市场,没有经过详细可行性分析的系统开发过程会非常艰难。系统可行性从系统的经济方面、操作方面和技术方面进行分析。

2.2.1经济可行性分析

系统开发所需要的经济主要在系统的成本问题、运行问题和维护问题上。本系统在开发中不需要经济的支撑,所需要的开发软件和设备都是在已有条件上。本系统在运行里所需要的环境也都为免费就可以下载的。本系统在后期的维护上也只需要技术支持就可以完成。所以本系统在经济可行性上可以通过。

2.2.2操作可行性分析

本系统在开发中充分调查了所使用用户的操作习惯和风格,所有的操作流程也都为简单的流程,在操作中也设置了提醒。用户在使用本系统时只要按照提示就可以完成,非常简单。所以本系统在操作可行性上可以通过。

2.2.3技术可行性分析

 本系统所需要的技术支持为Java语言,Mysql数据库,Jsp技术和B/s框架等。所使用的技术都为开源成熟的技术,也是目前流行的技术之一。使用这些技术开发的系统可以保证系统的前詹性和稳定性、安全性。所以本系统在技术可性性上可以通过。

2.3系统需求分析

目前计算机、网络技术已进入到各行各业。企业做为社会的重要组成部分更应该身体力行,公司安全管理里的所有工作都是围绕商品而展开,每件商品的档案信息都非常多,如果采用传统的管理方式非常容易造成混乱,而且对于商品的信息查询非常不便。对于商品的日期、质量、数据都需要额外的严谨,如果还是采用传统的商品管理方式对用户、商品都做不到百分百的监管,用户的操作也实现不了透明。所以非常需要新的管理方式出现。

2.4系统性能分析

系统在设计时也需要注意系统的性能,一般系统的性能方面包括系统的稳定性、安全性、界面设计方面、操作方面、协调等方面。

  1. 本系统在界面设计方面尊重所有的使用权限,多方面参考不同使用权限的使用习惯以及风格,综合不同的情况整理出符合大众要求的系统界面。做到自己的最大能力;
  2. 在系统的稳定性、安全性方面采用必要的登录验证,不同权限采用不同的账号和密码。为了使系统更为稳定采用成熟的开发环境和技术,在代码编写时尽可能的减少冗余,保证系统的运行效率;
  3. 在系统的操作流程方面,尽可能的采用简单的流程来实现用户要求的反馈,当用户提出需求时,可以用最少的步骤进行提问操作;
  4. 本系统采用数据库和功能界面分开设计,这样可以保证当系统的功能运行出错时不会影响系统里的数据,也就保证了数据的安全。

2.5系统功能分析

系统的功能分析决定了系统的功能设计,完整详细的系统功能分析可以使系统的开发事半功倍。本系统的功能围绕管理员、分公司、集团、经销商四种权限设计。根据不同权限的不同需求设计出更符合用户要求的功能。本系统中管理员可以管理所有内容,包括使用权限、商品信息、订货计划表、退货计划表信息等。本钢铁集团公司安全管理系统管理员的用例图如下图2-1所示:

图2-1管理员用例图

分公司用例为商品信息管理、订货计划表管理和退货计划表管理,分公司用例图如下图2-2所示:

图2-2分公司用例图

经销商用例为个人中心管理、商品信息管理、订货计划表管理和退货计划表管理。经销商用例图如下图2-3所示:

图2-3经销商用例图

集团用例为个人中心、商品信息管理和订货计划表管理、退货计划表管理。集团用例图如下图2-4所示:

图2-4集团用例图

2.6系统操作流程分析

  信息从如何产生到反馈结果的过程可以称为信息的流程。分析好系统的操作流程才可以使系统正确运行不会出现Bug。本系统的流程为管理员先进行登录,登录后管理分公司、集团、经销商的账号、密码等信息。公司和经销商可以注册登录。集团由管理员添加。管理员发布商品信息、分公司提出订货计划表和退货计划表,经销商可以进行查询,集团负责审核。当用户操作后,管理员可以在管理员界面立即收到操作后的信息,并且可以进行修改。本钢铁集团公司安全管理系统的操作流程如下图2-5所示:

图2-5钢铁集团公司安全管理系统操作流程图

第3章 系统设计

3.1系统功能结构设计

系统的功能结构是采用树形图来绘制功能设计。根据分析所得,本系统的功能设计为管理员和集团、分公司、经销商四个部分。管理员为高级角色,可以管理系统里的所有信息,包括不同分类的用户信息。本钢铁集团公司安全管理系统的功能结构设计图如下图3-1所示:

  图3-1钢铁集团公司安全管理系统功能结构图

3.2数据库设计

  数据库为数据的仓库,决定了数据的保存和修改、删除、调用等。数据库的稳定决定了系统里数据的安全。本系统采用Mysql数据库,在建立数据库时采用Root用户名。数据库的建立过程为先进行数据的ER图设计然后进行数据库表的实现。

3.2.1数据ER图设计

数据ER图中记录了关系、实体、属性。实体与实体的关系决定了数据在调用时的正确与否,实体的属性决定了该实体的内容。数据ER图的设计同样重要,也是数据库建立的基础。

通过系统中的功能数据分析,本系统的实体主要有用户(分公司、集团、经销商)、管理员、商品信息、订货计划表、退计划表信息等。

  1. 管理员的ER图中的属性有账号、密码、权限。管理员ER图如下图3-2所示:

图3-2管理员ER图

  1. 分公司的ER图里的属性有账号、名称、编号等,分公司的ER图如下图3-3所示:

图3-3分公司ER图

  1. 商品信息的ER图里的属性有名称、品类、规格、价格、材质等,商品的ER图如下图3-4所示:

图3-4商品信息ER图

(4)订货计划表的ER图里的属性有商品名称、数量、是否交货等,订货计划表ER图如下图3-5所示:

图3-5订货计划表ER图

(5)退货计划表信息ER图里的属性有退货单号、生成时间、商品名称等,退货计划表信息ER图如下图3-6所示:

图3-6退货计划表信息ER图

3.2.2数据库表设计

数据库表是把ER图进行详细化、实体化。不同的表名下保存着相对应的表信息数据。在数据库表里记录着数据的主键、外键、数据类型、长度等。本钢铁集团公司安全管理系统所创建的数据库表有管理员信息表、分公司信息表、商品信息表、订货计划表、退货计划表等。本钢铁集团公司安全管理系统的数据库表如下表3-1—3-9所示:

表3-1 config

表3-2 dinghuojihuabiao

表3-3 fengongsi

表3-4 jingxiaoshang

表3-5 jituan

表3-6 shangpinxinxi

表3-7 token

表3-8 tuihuojihuabiao

表3-9 users

第4章 系统详细实现

4.1用户登录功能的详细实现

用户登录界面起到验证身份的作用,本界面采用图片背景进行设计。在用户登录界面里设置了程序的名称和用户、密码、权限的文本框。在文本框下是登录按钮和分公司注册、经销商注册按钮。用户在信息输入完成后可以使用对应按钮进行相对应的操作。用户登录功能的实现界面如下图4-1所示:

图4-1用户登录实现界面

4.2管理员权限的功能实现

4.2.1个人中心管理功能的详细实现

个人中心管理功能的作用为修改密码和修改管理员资料。本功能可以实现管理员资料的更新。个人中心管理功能的实现界面如下图4-2所示:

图4-2个人中心管理功能的界面实现

4.2.2集团信息管理功能的详细实现

管理员负责集团信息的录入和管理。集团信息包括集团地址、代表人等信息,集团的账号和密码则是由本功能进行添加。管理员查询集团信息的功能实现如下图4-3所示:

图4-3管理员查询集团信息的实现界面

4.2.3商品信息管理功能的详细实现

管理员可以对商品的信息进行管理、审核。管理员查询商品信息的实现界面如下图4-4所示:

图4-4管理员查询商品信息的实现界面

4.2.4分公司管理功能的详细界面实现

管理员可以对分公司信息进行管理和审核。管理员查询分公司信息的实现界面如下图4-5所示:

图4-5管理员查询分公司功能的运行界面

4.2.5经销商管理功能的详细实现

管理员可以审核和删除经销商信息,查询经销商功能的界面实现如下图4-6所示:

图4-6管理员查询经销商功能的运行界面

4.2.6订货计划表功能的详细实现

管理员可以查询订货的详情,了解订货的审核情况。订货计划表功能的实现界面如下图4-7所示:

图4-7管理员查询订货计划表功能的运行界面

4.2.7退货计划表管理功能的实现界面

管理员可以查看和管理退货的计划表信息,实现界面如下图4-8所示:

图4-8管理员查询退货计划表信息功能的实现界面

4.3分公司角色的功能实现

4.3.1商品信息管理功能的实现界面

分公司只能查看商品信息不能修改和删除、添加商品信息。实现界面如下图4-9所示:

图4-9分公司查询商品信息功能的实现界面

4.3.2订货计划表管理功能的详细实现

分公司负责订货计划表的申请。分公司添加订货计划表功能的实现界面如下图4-10所示:

图4-10分公司添加订货计划表功能的运行界面

4.3.3退货计划表管理功能的详细实现

分公司在退货计划表功能里可以添加退货信息和统计退货信息。分公司添加退货计划表信息功能的实现界面如下图4-11所示:

图4-11添加退货计划表信息功能的运行界面

4.4经销商角色的功能实现

经销商负责商品信息、订货计划表和退货计划表的信息查询。实现界面如下图4-12所示:

图4-12经销商角色的功能实现界面

4.5集团角色功能的界面实现

4.5.1商品信息管理功能的详细实现

集团也可以添加和管理商品,集团查询商品信息的实现界面如下图4-13所示:

图4-13集团查询商品信息功能的运行界面

4.5.2订货计划表管理的功能实现

集团负责审核分公司提出的订货计划表申请,实现界面如下图4-14所示:

图4-14审核订货计划表的功能实现界面

4.5.3退货计划表管理功能的实现界面

集团还可以审核退货的计划表信息。审核退货计划表信息的实现界面如下图4-15所示:

图4-15退货计划表信息的审核界面

第5章 系统测试

系统测试的方

ConfigServiceImpl.java

package com.service.impl;


import java.util.Map;

import org.springframework.stereotype.Service;

import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.dao.ConfigDao;
import com.entity.ConfigEntity;
import com.service.ConfigService;
import com.utils.PageUtils;
import com.utils.Query;


/**
 * 系统用户
 */
@Service("configService")
public class ConfigServiceImpl extends ServiceImpl<ConfigDao, ConfigEntity> implements ConfigService {
	@Override
	public PageUtils queryPage(Map<String, Object> params, Wrapper<ConfigEntity> wrapper) {
		Page<ConfigEntity> page = this.selectPage(
                new Query<ConfigEntity>(params).getPage(),
                wrapper
        );
        return new PageUtils(page);
	}
}

MD5Util.java
package com.utils;

import cn.hutool.crypto.digest.DigestUtil;

public class MD5Util {
    
	/**
	 * @param text明文
	 * @param key密钥
	 * @return 密文
	 */
	// 带秘钥加密
	public static String md5(String text) {
		// 加密后的字符串
		String md5str = DigestUtil.md5Hex(text);
		return md5str;
	}

}

JingxiaoshangController.java
package com.controller;

import java.text.SimpleDateFormat;
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.JingxiaoshangEntity;
import com.entity.view.JingxiaoshangView;

import com.service.JingxiaoshangService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
import java.io.IOException;

/**
 * 经销商
 * 后端接口
 * @author 
 * @email 
 * @date 2022-04-21 15:54:45
 */
@RestController
@RequestMapping("/jingxiaoshang")
public class JingxiaoshangController {
    @Autowired
    private JingxiaoshangService jingxiaoshangService;



    
	@Autowired
	private TokenService tokenService;
	
	/**
	 * 登录
	 */
	@IgnoreAuth
	@RequestMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		JingxiaoshangEntity user = jingxiaoshangService.selectOne(new EntityWrapper<JingxiaoshangEntity>().eq("jingxiaoshangzhanghao", username));
		if(user==null || !user.getMima().equals(password)) {
			return R.error("账号或密码不正确");
		}
                if("否".equals(user.getSfsh())) return R.error("账号已锁定,请联系管理员审核。");
		String token = tokenService.generateToken(user.getId(), username,"jingxiaoshang",  "经销商" );
		return R.ok().put("token", token);
	}
	
	/**
     * 注册
     */
	@IgnoreAuth
    @RequestMapping("/register")
    public R register(@RequestBody JingxiaoshangEntity jingxiaoshang){
    	//ValidatorUtils.validateEntity(jingxiaoshang);
    	JingxiaoshangEntity user = jingxiaoshangService.selectOne(new EntityWrapper<JingxiaoshangEntity>().eq("jingxiaoshangzhanghao", jingxiaoshang.getJingxiaoshangzhanghao()));
		if(user!=null) {
			return R.error("注册用户已存在");
		}
		Long uId = new Date().getTime();
		jingxiaoshang.setId(uId);
        jingxiaoshangService.insert(jingxiaoshang);
        return R.ok();
    }

	
	/**
	 * 退出
	 */
	@RequestMapping("/logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        JingxiaoshangEntity user = jingxiaoshangService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	JingxiaoshangEntity user = jingxiaoshangService.selectOne(new EntityWrapper<JingxiaoshangEntity>().eq("jingxiaoshangzhanghao", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
        user.setMima("123456");
        jingxiaoshangService.updateById(user);
        return R.ok("密码已重置为:123456");
    }


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,JingxiaoshangEntity jingxiaoshang, 
		HttpServletRequest request){

		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("fengongsi")) {
			jingxiaoshang.setFengongsizhanghao((String)request.getSession().getAttribute("username"));
		}
        EntityWrapper<JingxiaoshangEntity> ew = new EntityWrapper<JingxiaoshangEntity>();
    	PageUtils page = jingxiaoshangService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, jingxiaoshang), params), params));
		request.setAttribute("data", page);
        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,JingxiaoshangEntity jingxiaoshang, 
		HttpServletRequest request){
        EntityWrapper<JingxiaoshangEntity> ew = new EntityWrapper<JingxiaoshangEntity>();
    	PageUtils page = jingxiaoshangService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, jingxiaoshang), params), params));
		request.setAttribute("data", page);
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( JingxiaoshangEntity jingxiaoshang){
       	EntityWrapper<JingxiaoshangEntity> ew = new EntityWrapper<JingxiaoshangEntity>();
      	ew.allEq(MPUtil.allEQMapPre( jingxiaoshang, "jingxiaoshang")); 
        return R.ok().put("data", jingxiaoshangService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(JingxiaoshangEntity jingxiaoshang){
        EntityWrapper< JingxiaoshangEntity> ew = new EntityWrapper< JingxiaoshangEntity>();
 		ew.allEq(MPUtil.allEQMapPre( jingxiaoshang, "jingxiaoshang")); 
		JingxiaoshangView jingxiaoshangView =  jingxiaoshangService.selectView(ew);
		return R.ok("查询经销商成功").put("data", jingxiaoshangView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        JingxiaoshangEntity jingxiaoshang = jingxiaoshangService.selectById(id);
        return R.ok().put("data", jingxiaoshang);
    }

    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        JingxiaoshangEntity jingxiaoshang = jingxiaoshangService.selectById(id);
        return R.ok().put("data", jingxiaoshang);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody JingxiaoshangEntity jingxiaoshang, HttpServletRequest request){
    	jingxiaoshang.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(jingxiaoshang);
    	JingxiaoshangEntity user = jingxiaoshangService.selectOne(new EntityWrapper<JingxiaoshangEntity>().eq("jingxiaoshangzhanghao", jingxiaoshang.getJingxiaoshangzhanghao()));
		if(user!=null) {
			return R.error("用户已存在");
		}

		jingxiaoshang.setId(new Date().getTime());
        jingxiaoshangService.insert(jingxiaoshang);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody JingxiaoshangEntity jingxiaoshang, HttpServletRequest request){
    	jingxiaoshang.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(jingxiaoshang);
    	JingxiaoshangEntity user = jingxiaoshangService.selectOne(new EntityWrapper<JingxiaoshangEntity>().eq("jingxiaoshangzhanghao", jingxiaoshang.getJingxiaoshangzhanghao()));
		if(user!=null) {
			return R.error("用户已存在");
		}

		jingxiaoshang.setId(new Date().getTime());
        jingxiaoshangService.insert(jingxiaoshang);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    @Transactional
    public R update(@RequestBody JingxiaoshangEntity jingxiaoshang, HttpServletRequest request){
        //ValidatorUtils.validateEntity(jingxiaoshang);
        jingxiaoshangService.updateById(jingxiaoshang);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        jingxiaoshangService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<JingxiaoshangEntity> wrapper = new EntityWrapper<JingxiaoshangEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}

		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("fengongsi")) {
			wrapper.eq("fengongsizhanghao", (String)request.getSession().getAttribute("username"));
		}

		int count = jingxiaoshangService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	
	





}

head.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<title>钢铁集团公司安全管理系统</title>
	<!-- Fav  Icon Link -->
	<link rel="shortcut icon" type="image/png" href="${pageContext.request.contextPath}/resources/images/fav.png">
	<!-- Bootstrap core CSS -->
	<link rel="stylesheet" href="${pageContext.request.contextPath}/resources/css/bootstrap.min.css">
	<!-- themify icons CSS -->
	<link rel="stylesheet" href="${pageContext.request.contextPath}/resources/css/themify-icons.css">
	<!-- Animations CSS -->
	<link rel="stylesheet" href="${pageContext.request.contextPath}/resources/css/animate.css">
	<!-- Main CSS -->
	<link rel="stylesheet" href="${pageContext.request.contextPath}/resources/css/styles.css">
	<link rel="stylesheet" href="${pageContext.request.contextPath}/resources/css/green.css" id="style_theme">
	<link rel="stylesheet" href="${pageContext.request.contextPath}/resources/css/responsive.css">
	<!-- morris charts -->
	<link rel="stylesheet" href="${pageContext.request.contextPath}/resources/charts/css/morris.css">
	<!-- jvectormap -->
	<link rel="stylesheet" href="${pageContext.request.contextPath}/resources/css/jquery-jvectormap.css">
	<link rel="stylesheet" href="${pageContext.request.contextPath}/resources/datatable/dataTables.bootstrap4.min.css">

	<script src="${pageContext.request.contextPath}/resources/js/modernizr.min.js"></script>

声明

本博客适用于广泛的学术和教育用途,包括但不限于个人学习、开发设计,产品设计。仅供学习参考,旨在为读者提供深入理解和学术研究的材料。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2180795.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot教程(三十一) | SpringBoot生成Docker镜像包

SpringBoot教程&#xff08;三十&#xff09; | SpringBoot生成Docker镜像包 前提方式一&#xff1a;spring-boot-maven-plugin 方式方式二&#xff1a;Dockfile 方式&#xff08;推荐&#xff09; 前提 如果你在 Windows 上&#xff0c;确保 Docker Desktop 已经启动并正在运…

Java常用三类定时器快速入手指南

文章目录 Java常用三类定时器快速入手指南一、序言二&#xff0c;Timer相关1、概念2、Timer类3、TimerTask类4、ScheduleExecutorService接口 三&#xff0c;Scheduled相关1、配置1.1 SpringMVC配置1.2 SpringBoot配置&#xff08;1&#xff09;单线程&#xff08;2&#xff09…

python 如何引用变量

在字符串中引入变量有三种方法&#xff1a; 1、 连字符 name zhangsan print(my name is name) 结果为 my name is zhangsan 2、% 字符 name zhangsan age 25 price 4500.225 print(my name is %s%(name)) print(i am %d%(age) years old) print(my price is %f%(pric…

【数字图像处理】小白也能懂,最浅显方式手撕直方图均衡化(附python实现)

文章目录 1 概念2 原理2.1 数学原理 3 python代码实现4 测试效果5 结论 1 概念 直方图均衡化&#xff0c;同伽马变换一样&#xff0c;也是增强图像对比度的一种工具。区别在于&#xff0c;直方图均衡化是一种自适应的工具&#xff0c;即自动工具。也就是说&#xff0c;我们只需…

使用RestTemplate调用EMQX API查询MQTT客户端列表信息

项目中集成mqtt客户端查询功能&#xff0c;使用到了EMQX api-v5&#xff0c;具体步骤&#xff1a; 一、准备工作 首先在EMQX dashboard中添加API 密钥 填写密钥名称&#xff0c;点击确定&#xff0c;会生成API Key和Secret Key&#xff0c;保存起来备用。 二、配置文件 在…

SUP-NeRF-ECCV2024数据集: 单目3D对象重建的新突破

2024-09-25&#xff0c;由Bosch Research North America和Michigan State University联合发布的SUP-NeRF&#xff0c;是一个基于单目图像进行3D对象重建的新型方法。一个无缝集成姿态估计和物体重建的统一网格。 ECCV&#xff1a;欧洲计算机视觉会议的缩写&#xff0c;它是计算…

如何使用ssm实现科技银行业务管理系统+vue

TOC ssm743科技银行业务管理系统vue 第一章 绪论 1.1 研究背景 在现在社会&#xff0c;对于信息处理方面&#xff0c;是有很高的要求的&#xff0c;因为信息的产生是无时无刻的&#xff0c;并且信息产生的数量是呈几何形式的增加&#xff0c;而增加的信息如何存储以及短时间…

移除元素

移除元素 题目链接&#xff1a;移除元素 示例 1&#xff1a; 输入&#xff1a;nums [3,2,2,3], val 3 输出&#xff1a;2, nums [2,2,_,_] 解释&#xff1a;你的函数函数应该返回 k 2, 并且 nums 中的前两个元素均为 2。 你在返回的 k 个元素之外留下了什么并不重要&…

URL从输入到⻚面显示的过程(详细版)

URL从输入到⻚面显示的过程&#xff08;详细版&#xff09; 浏览器中输入网址 DNS 解析域名得到 IP 地址 DNS 解析首先会从你的浏览器的缓存中去寻找是否有这个网址对应的 IP 地址&#xff0c;如果没有就向OS系统的 DNS 缓存中寻找&#xff0c;如果没有就是路由器的 DNS 缓存&…

C++之 友元重载 以及最常用的几种友元函数

在之前的友元中就曾经讲过&#xff0c;我们为了去访问修改私有成员中的数据时&#xff0c;只能通过公有的办法去进行访问操作&#xff0c;非常的局限。所以C引用了友元函数&#xff0c;只要加上friend关键字&#xff0c;C的这个类&#xff0c;会自动把这个函数的权限拉到类内&a…

无水印短视频素材下载网站有哪些?十个高清无水印视频素材网站分享

你知道怎么下载无水印视频素材吗&#xff1f;今天小编就给大家推荐十个高清无水印视频素材下载的网站&#xff0c;如果你也是苦于下载高清无水印的短视频素材&#xff0c;赶紧来看看吧&#xff5e; 1. 稻虎网 首推的是稻虎网。这个网站简直就是短视频创作者的宝库。无论你需要…

编程魔法:基于LLM的AI function开发,如何实现高效数据生成?

基于大语言模型&#xff08;LLM&#xff09;的AI function开发&#xff0c;简直就是现代编程界的“魔法棒”&#xff01; 你好&#xff0c;我是三桥君 最近三桥君有个任务&#xff0c;需要造一些测试数据&#xff0c;比如姓名、手机号、银行卡号、邮箱啥的&#xff0c;用来做测…

每日OJ题_牛客_添加逗号_模拟_C++_Java

目录 牛客_添加逗号_模拟 题目解析 C代码1 C代码2 Java代码 牛客_添加逗号_模拟 添加逗号_牛客题霸_牛客网 题目解析 读取输入&#xff1a;读取一行字符串。分割字符串&#xff1a;使用空格将字符串分割成单词数组。拼接字符串&#xff1a;将单词数组中的每个单词用逗号…

群晖安装Gitea(代码托管工具)

一、Gitea介绍 Gitea 是一款开源的轻量级代码托管平台,可以为团队和开发者提供了一个易于部署、运行快速、使用体验良好的自建 Git 服务。相比于其它自部署代码托管平台,Gitea 的设计更加轻量,对系统资源的占用相对较少,能够在较低配置的服务器上流畅运行。相比于其他代码…

嘉楠科技AI芯片K230-初探

勘智K230 介绍入门购买开发板 安装开机开发学习点亮第1个LED点亮屏幕预览摄像头代码离线运行 在线训练平台 参考 介绍 K230芯片是嘉楠科技 Kendryte系列AIoT芯片中的最新一代SoC产品。该芯片采用全新的多异构单元加速计算架构&#xff0c;集成了2个RISC-V高能效计算核心&#x…

Spring系列 BeanPostProcessor

文章目录 BeanPostProcessor注册时机执行时机 InstantiationAwareBeanPostProcessorSmartInstantiationAwareBeanPostProcessor 本文源码基于spring-beans-5.3.31 参考&#xff1a;https://docs.spring.io/spring-framework/reference/core/beans/factory-extension.html#beans…

【ASE】第四课_高亮显示效果(手动切换)

今天我们一起来学习ASE插件&#xff0c;希望各位点个关注&#xff0c;一起跟随我的步伐 今天我们来学习高亮的效果。 思路&#xff1a; 1.添加纹理贴图和法线贴图&#xff0c;环境光遮挡贴图 2.添加高亮的参数&#xff0c;并设置 3.手搓一个边缘光,通过高亮参数调节 4.将模…

微信小程序——音乐播放器

目的 掌握swiper组件、scroll-view组件的使用掌握image组件的使用掌握音频API的使用掌握slider组件的使用 内容 了音乐小程序项目的完整开发流程&#xff0c;其开发步骤包括页面结构的分析、样式的设计、组件的运用等。通过本章的学习&#xff0c;读者能够掌握小程序的基本交…

聚星文社——绘唐科技有什么区别!

聚星文社和绘唐科技是两个不同的公司&#xff0c;有一些区别。下面是它们的一些区别&#xff1a; 绘唐科技——聚星文社https://iimenvrieak.feishu.cn/docx/ZhRNdEWT6oGdCwxdhOPcdds7nof 行业领域&#xff1a;聚星文社主要从事文化娱乐行业&#xff0c;包括出版、影视制作等&…

点餐小程序实战教程14点餐功能

目录 1 功能分析2 初始化菜品的数量3 加入购物车4 显示购物车5 最终的效果总结 上一篇我们讲解了如果通过扫码实现餐桌信息显示&#xff0c;本篇我们介绍一下点餐的功能。 1 功能分析 点餐的话一般我们是在菜品点击号或者-号来加入购物车&#xff0c;加入购物车之后还可以修改…