ssm物流管理系统源码和论文

news2024/12/23 9:11:48

ssm物流管理系统设计与实现037


 开发工具:idea 
 数据库mysql5.7+
 数据库链接工具:navcat,小海豚等
  技术:ssm

1.选题的意义与目的、文献综述与研究现状

     随着我国经济的快速发展,以及信息化步伐的快,物流企业对行业信息的需求越来越大,促使物流信息网迅速发展,以适应物流行业的市场变化。而经济全球化进程的加快,使现代企业的专业分工和协作对现代物流提出了越来越高的要求,物流行业的人工管理早己不再适应企业发展的要求,信息化、自动化、网络化、智能化、柔性化己成为现代物流的鲜明特征。物流行业的发展,使物流的信息化日益被广大从业者和信息系统提供商所重视。物流信息网信息的及时性、准确性完全符合国内物流企业对行业信息的要求。同时,现代企业的供应链时刻在提醒我们,物流要在激烈的竞争中占据绝对的优势,必须要求企业及时准确的掌握客户信息,同时对客户的需求做出快速的反应,在最短的时间内以最大限度挖掘和优化物流资源来满足客户需求,从而建立高效的物流经济。

物流信息网站的出现,使得企业之间的物流信息能够迅速的传递,使生产资料和商品得到快速的流动。实现物流企业之间,企业与客户之间的物流信息和物流功能的共享,最终能够充分发挥企业物流信息网的优势,提高企业物流效率。

随着信息技术的发展,企业间的竞争己突破了地域的限制。企业竞争优势的建立和保持必须以可靠,高效的物流运作为保证,采取高效的物流运作模式来增强竞争实力、提高经济效益。随着信息技术特别是计算机的不断发展,国际互联网的全球化热潮使人类社会进入了一个新的信息时代,因此通过计算机来获取物流信息已经是信息时代到来必然要发生的结果。物流信息管理系统,为企业提供各类管理决策信息,辅助企业进行现代化的管理,提高企业的经济效益以及社会效益。

物流管理系统的应用价值体现在以下四个方面:

一.建立了信息标准,规范了基础数据管理。通过建立物流体系,会对系统涉及到的所有基础信息进行整理,定义出基础档案的编码标准和管理规范,从而使各部门能以共同的标准对业务信息进行描述,避免理解误差。

二.打破了部门信息壁垒,降低了信息沟通成本。首先,信息可以及时的传递。其次,信息通过物流系统传递不会失真。再者,信息的获取方式从被动式变为主动式。总之,物流系统的应用改变了部门间信息沟通的方式,保证了信息沟通的效率和质量

三.规范、优化了业务流程。在实施物流系统的过程中,会对相关的部门和岗位进行明确的职能定义,规定其工作的范围、内容和要求。在形成了流程规范后,还可以在物流系统中进行设置,确保在系统中只能按规定的流程开展业务,从而保证了业务流程的规范性。

四.降低了对基层业务人员能力的要求。在应用了库存管理后,库管员只需要能在系统中输入收发单据即可,报表会自动生成。

参考文献

[1]Haul Lee,Seungin Whang.Winning the lastmile Of E-Commence.[J]MIT SloanManagement Review,,20042(4):54·62

[2]孙茶萍·电子商务环境下的物流模式分析一一以s公司物流模式选择为例·[D]·广西大学,2010

[3]白福贤·电子商务与物流的关系[J]·现场现代化,2008(20):114

[4]张鑫,汤思源,廉子龙等电子商务物流浅析[J]新疆大学学报2010,(3):51-55

[5]陈伟,张建洋誣于电子商务的物流模式选择研究一以昆山哈森鞋业有限公司为例[J]·大江周刊(论坛),2011,(4):22:24

[6]唐盛·我国电子商务环境下物流模式研究[J].现代商业,2011,(11):18-19

[7]Marilyn A.Stone.Has Europe fulfilled its promise to UK third-party logistics [J].European Business Review,200乙14(2):89-91

[8]夏文汇·物流战略管理[M].成都:西南财经大学出版社,2006

[9]何明珂·物流系统论[M].北京:中国审计出版社,2001

[10]孙红,冯江华,孙杨·现代物流管理基础[M].上海:立信会计出版社,2006

[11]吕洪霞·物流管理[M].杭州:浙江大学出版社,2008

[12]日本日通综合研究所.物流手册[M]吴润涛译北京:中国物资出版社,1986

[13]周启雷·物流学概论[M].北京:清华大学出版社,2005

 

package com.controller;

import java.text.SimpleDateFormat;
import java.util.*;
import javax.servlet.http.HttpServletRequest;

import com.annotation.IgnoreAuth;
import com.service.TokenService;
import org.apache.commons.lang3.StringUtils;
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.KehuEntity;

import com.service.KehuService;
import com.utils.PageUtils;
import com.utils.R;

/**
 * 
 * 后端接口
 * @author
 * @email
 * @date 2023-02-25
*/
@RestController
@Controller
@RequestMapping("/kehu")
public class KehuController {
    private static final Logger logger = LoggerFactory.getLogger(KehuController.class);

    @Autowired
    private KehuService kehuService;

    @Autowired
    private TokenService tokenService;

    /**
     * 登录
     */
    @IgnoreAuth
    @PostMapping(value = "/login")
    public R login(String username, String password, String role, HttpServletRequest request) {
        KehuEntity user = kehuService.selectOne(new EntityWrapper<KehuEntity>().eq("account", username));
        if(user != null){
            if(!user.getRole().equals(role)){
                return R.error("权限不正常");
            }
            if(user==null || !user.getPassword().equals(password)) {
                return R.error("账号或密码不正确");
            }
            String token = tokenService.generateToken(user.getId(),user.getName(), "users", user.getRole());
            return R.ok().put("token", token);
        }else{
            return R.error("账号或密码或权限不对");
        }

    }

    /**
     * 注册
     */
    @IgnoreAuth
    @PostMapping(value = "/register")
    public R register(@RequestBody KehuEntity user){
        if(kehuService.selectOne(new EntityWrapper<KehuEntity>().eq("account", user.getAccount())) !=null) {
            return R.error("学生已存在");
        }
        user.setRole("学生");
        kehuService.insert(user);
        return R.ok();
    }

    /**
     * 退出
     */
    @GetMapping(value = "logout")
    public R logout(HttpServletRequest request) {
        request.getSession().invalidate();
        return R.ok("退出成功");
    }

    /**
     * 密码重置
     */
    @IgnoreAuth
    @RequestMapping(value = "/resetPass")
    public R resetPass(@RequestBody KehuEntity kehu, HttpServletRequest request){
        KehuEntity user = kehuService.selectOne(new EntityWrapper<KehuEntity>().eq("account", kehu.getAccount()).eq("name", kehu.getName()));
        if(user==null) {
            return R.error("账号不存在");
        }
        user.setPassword("123456");
        kehuService.updateById(user);
        return R.ok("密码已重置为:123456");
    }

    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
        Integer id = (Integer)request.getSession().getAttribute("userId");
        KehuEntity user = kehuService.selectById(id);
        return R.ok().put("data", user);
    }

    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
        logger.debug("Controller:"+this.getClass().getName()+",page方法");
        Object role = request.getSession().getAttribute("role");
        PageUtils page = null;
        if(role.equals("客户")){
            params.put("yh",request.getSession().getAttribute("userId"));
            page = kehuService.queryPage(params);
        }else{
            page = kehuService.queryPage(params);
        }
        return R.ok().put("data", page);
    }
    /**
    * 后端详情
    */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        logger.debug("Controller:"+this.getClass().getName()+",info方法");
        KehuEntity kehu = kehuService.selectById(id);
        if(kehu!=null){
            return R.ok().put("data", kehu);
        }else {
            return R.error(511,"查不到数据");
        }

    }

    /**
    * 后端保存
    */
    @IgnoreAuth
    @RequestMapping("/save")
    public R save(@RequestBody KehuEntity kehu, HttpServletRequest request){
        logger.debug("Controller:"+this.getClass().getName()+",save");
        Wrapper<KehuEntity> queryWrapper = new EntityWrapper<KehuEntity>()
            .eq("name", kehu.getName())
            .eq("account", kehu.getAccount())
            .eq("password", kehu.getPassword())
            .eq("sex_types", kehu.getSexTypes())
            .eq("role", kehu.getRole())
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        KehuEntity kehuEntity = kehuService.selectOne(queryWrapper);
        if("".equals(kehu.getImgPhoto()) || "null".equals(kehu.getImgPhoto())){
            kehu.setImgPhoto(null);
        }
        if(kehuEntity==null){
            kehu.setRole("客户");
            kehuService.insert(kehu);
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }

    /**
    * 修改
    */
    @RequestMapping("/update")
    public R update(@RequestBody KehuEntity kehu, HttpServletRequest request){
        logger.debug("Controller:"+this.getClass().getName()+",update");
        //根据字段查询是否有相同数据
        Wrapper<KehuEntity> queryWrapper = new EntityWrapper<KehuEntity>()
            .notIn("id",kehu.getId())
            .eq("name", kehu.getName())
            .eq("account", kehu.getAccount())
            .eq("password", kehu.getPassword())
            .eq("sex_types", kehu.getSexTypes())
            .eq("role", kehu.getRole())
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        KehuEntity kehuEntity = kehuService.selectOne(queryWrapper);
        if("".equals(kehu.getImgPhoto()) || "null".equals(kehu.getImgPhoto())){
                kehu.setImgPhoto(null);
        }
        if(kehuEntity==null){
            kehuService.updateById(kehu);//根据id更新
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }


    /**
    * 删除
    */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        logger.debug("Controller:"+this.getClass().getName()+",delete");
        kehuService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

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

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

相关文章

使用GEWE框架进行微信个人资料管理、批量管理

友情链接 geweapi.com 点击即可访问 更新个人资料 请求URL&#xff1a; http://域名地址/api/personal/updateprofile 请求方式&#xff1a; POST 请求头&#xff1a; Content-Type&#xff1a;application/json X-GEWE-TOKEN: 后台获取 参数&#xff1a; 参数名必填…

【正点原子STM32连载】第十八章 通用定时器PWM输出实验 摘自【正点原子】APM32F407最小系统板使用指南

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html# 第十…

【附安装包】Solid Edge2023安装教程最强CAD选择

软件下载 软件&#xff1a;Solid Edge版本&#xff1a;2023语言&#xff1a;简体中文大小&#xff1a;3.85G安装环境&#xff1a;Win11/Win10/Win8/Win7硬件要求&#xff1a;CPU2.0GHz 内存4G(或更高&#xff09;下载通道①百度网盘丨64位下载链接&#xff1a;https://pan.bai…

Python 如何复制列表,高效复制列表,列表复制效率对比,copy 与 deepcopy 差距对比

背景 在python中&#xff0c;避免不了经常使用 list 类型的变量&#xff0c;list 变量的复制也是经常遇到的需求&#xff0c;那么如何高效的复制一个 list呢&#xff1f; 代码 下面代码给出了 4 种不同的list复现方法&#xff0c;观察其代码效率&#xff1a; # -*- coding:…

Vue3 中引入液晶数字字体(通常用于大屏设计)

一、下载 .ttf 字体文件到本地&#xff0c;放在 src 中的 assets 文件下 下载液晶字体 DS-Digital.ttf 二、在 css 文件中引入字体 /* src/assets/fonts/dsfont.css */ font-face {font-family: electronicFont;src: url(./DS-Digital.ttf);font-weight: normal;font-styl…

CS144 计算机网络 Lab2:TCP Receiver

前言 Lab1 中我们使用双端队列实现了字节流重组器&#xff0c;可以将无序到达的数据重组为有序的字节流。Lab2 将在此基础上实现 TCP Receiver&#xff0c;在收到报文段之后将数据写入重组器中&#xff0c;并回复发送方。 实验要求 TCP 接收方除了将收到的数据写入重组器中外…

记录:ubuntu20.04+ORB_SLAM2_with_pointcloud_map+ROS noetic

由于相机实时在线运行需要ROS&#xff0c;但Ubuntu22.04只支持ROS2&#xff0c;于是重装Ubuntu20.04。上一篇文章跑通的是官方版本的ORB_SLAM2&#xff0c;不支持点云显示。高翔修改版本支持RGB-D相机的点云显示功能。 高翔修改版本ORB_SLAM2&#xff1a;https://github.com/ga…

vue中css修改滚动条样式

vue中css修改滚动条样式 效果图&#xff1a; 代码(在app.vue中全局增加下面样式即可)&#xff1a; &::-webkit-scrollbar {width: 8px;height: 8px;border-radius: 3px;}/*定义滚动条轨道 内阴影圆角*/&::-webkit-scrollbar-track {//-webkit-box-shadow: inset 0 0 …

服务器的介绍

1.服务器概述 1.1 服务器的基本概念 服务器是计算机的一种&#xff0c;是网络中为客户端计算机提供各种服务的高性能计算机&#xff1b; 服务器在网络操作系统的控制下&#xff0c;将与其相连的硬盘、磁带、 打印机及昂贵的专用通讯设备提供给网络上的客户站点共享&#xf…

HTML动态爱心特效代码【一】(附源码)

前言 七夕马上就要到了&#xff0c;为了帮助大家高效表白&#xff0c;下面再给大家带来了实用的HTML浪漫表白代码(附源码)背景音乐&#xff0c;可用于520&#xff0c;情人节&#xff0c;生日&#xff0c;表白等场景&#xff0c;可直接使用。 效果演示 文案修改 var loverNam…

2023七夕小程序

又是一年七夕节 往年七夕小程序 2020 https://blog.csdn.net/chen_227/article/details/107062998 2022 视频 QiXi2022 代码 https://gitee.com/chen227/qixi2022-qt-qml 2023 效果 代码 https://gitee.com/chen227/qixi2023-qt-qml

ICC2工具如何避免对mux选择信号端口进行检查

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f;拾陆楼知识星球入口 time.clock_gating_user_seeting_only这个option设置成false&#xff0c;导致对选择器的S端进行了时序分析&#xff0c;进而可能出现违例。 设置成true即可。

cuda面试准备(一),架构调试

1 cuda架构 硬件方面 SP (streaming Process) ,SM (streaming multiprocessor) 是硬件(GPUhardware) 概念。而thread,block,grid,warp是软件上的(CUDA) 概念 SP:最基本的处理单元,streaming processor,也称为CUDA core,最后具体的指令和任务都是在SP上处理的。GPU进行并行…

QT中按钮的基类QAbstractButton

QT中按钮的基类QAbstractButton 关于控件类的学习方法继承关系信号槽函数标题和图标按钮的 Check 属性 关于控件类的学习方法 控件类很多&#xff0c;API更多&#xff0c;但是不需要记忆知道控件对应的类名&#xff0c;通过帮助文档随用随查优先看帮助文档中控件对应的信号和槽…

速通蓝桥杯嵌入式省一教程:(八)ADC测量模拟电压

ADC(Analog to Digital Converter)&#xff0c;模拟数字转换器&#xff0c;是电子工程师必须掌握的一个内容。由于单片机、计算机等是由0和1组成的&#xff0c;因此其无法直接测量或使用连续的模拟信号&#xff0c;需要用ADC将模拟信号转换为离散的数字信号。ADC的具体原理在此…

AM62x GPMC并口如何实现“小数据-低时延,大数据-高带宽”—ARM+FPGA低成本通信方案

GPMC并口简介 GPMC(General Purpose Memory Controller)是TI处理器特有的通用存储器控制器接口&#xff0c;支持8/16bit数据位宽&#xff0c;支持128MB访问空间&#xff0c;最高时钟速率133MHz。GPMC是AM62x、AM64x、AM437x、AM335x、AM57x等处理器专用于与外部存储器设备的接口…

SpringCloud之Stream3.0广播消息

SpringCloud之Stream消息驱动RocketMQ讲解_rocketmq stream_爱吃牛肉的大老虎的博客-CSDN博客3.0使用的函数式消费&#xff0c;如果使用广播消费&#xff0c;就是配置2个group&#xff0c;destination和生产者保持一致即可 spring.cloud.stream:bindings:testData-in-0:destin…

【3Ds Max】可编辑多边形“边”层级的简单使用

目录 简介 示例 1. 编辑边 &#xff08;1&#xff09;插入顶点 &#xff08;2&#xff09;移除 &#xff08;3&#xff09;分割 &#xff08;4&#xff09;挤出 &#xff08;5&#xff09;切角 &#xff08;6&#xff09;焊接 &#xff08;7&#xff09;桥 &…

一阶线性微分方程

形如&#xff1a; y ′ p ( x ) y q ( x ) (1.first) y p(x)y q(x) \tag{1.first} y′p(x)yq(x)(1.first) 的方程叫做一阶线性微分方程。 同济版教材的求解方法是常数变异法&#xff0c;初次接触感觉主编的脑回路异常清奇&#xff0c;自己怎么也get不到核心要义。一直到现…

隧道HTTP具备的条件

作为一名专业的爬虫代理供应商&#xff0c;我们都知道使用代理是保证爬虫的高效性和稳定性的重要手段之一。而隧道代理则是近年来备受推崇的一种代理形式&#xff0c;它通过将请求通过隧道传输&#xff0c;可以有效地隐藏爬虫的真实IP地址&#xff0c;提高爬虫的反爬能力。 在…