缺物流管理系统项目经验的,推荐看看这个项目。

项目需求说明

首先,发货客户与快递公司签订货运合同(货运单),把货物交给快递公司来托运,并按照货运合同的付款方式付款。快递公司根据货物运输线路,为货物配车,找到合适的车辆后,与司机签订运输合同(回执单),并按照运输合同的运费结算方式结算。司机对货物检查无误后,装车,然后发车,发车后,货物的任何损失由司机承担。

司机到达目的地后,需要经过货物验收,验收通过,填写一份司机回执单,快递公司这时同时通知发货客户和收货客户,货物已到达。如果货物没有通过验收,则填写差错记录。如果该货物不需要中转,通知收货客户来提货,客户验收通过后,填写客户回执单,快递公司这时通知发货客户,所发货物已被提走。

如果该货物需要中转,则填写一份中转信息单,快递公司这时同时通知发货客户和收货客户,货物已被中转。中转成功后,收货客户来提货,并通知发货客户,货物已被提,然后进行转货结算。

项目技术选型

编写环境

  • Windows10 专业版 - 1803

  • Spring Tool Suite 3.9.4.RELEASE

  • Spring5 + SpringMvc5 + Spring-Data-Jpa

  • Mysql 8.0.11

架构选型

项目前后端分离,降低耦合度

前端

前端选用 layui 2.3.0,以 html 的形式保存,通过 js 向后端请求数据

后端

后端选用 SpringBoot 2.0.2 进行快速的原型开发,内部采用SSH(Spring + SpringMVC + Hibernate)

特色

  1. Hibernate 采用 SpringBoot-data-jpa 进行封装,简化数据库操作,采用命名规范进行数据库的增删改查,去除了接口的实现

  2. 使用 Springboot 进行快速开发,简化了配置文件的编写

  3. 项目中采用了 Swagger2.0,自动扫描 Controller 中的 RequestMapping,形成接口文档

接口截图文档如下:

必备技能!单点登录系统原理与实现!

功能模块介绍

票据管理

票据管理主要是对票据信息进行分发和历史票据的查询

票据分发

票据分发主要是对货运单进行司机分配,分发后,该货运单以及相应的货运回执单的状态会被更新为未到运单和未到车辆,同时更新发货时间

票据查询

票据查询主要是查询所有的历史票据

主要进行货运单的分发(分发到司机)及历史单据的查询

接货管理

接货管理主要由工作人员负责填写一份货运单合同。合同中发货客户和收货客户信息都是下拉选择后自动查找数据库返回前台,职员编号通过获取当前登录用户的编号自动填写。实际交货日期、是否有效、是否审核都是禁止填写,后续事件触发后自动补充填写。提交合同后,货运单事件表修改该合同状态为待运,票据状态为已填。填完货运单后,自动跳转添加货物信息

填写接货单

接货单中,部分信息由数据库读取自动生成 接货单中的发货和收货客户由数据库返回前端显示 中转地及中转费在填写完发货地和收货地后,根据路线情况动态生成 添加货运单的同时自动生成货运单号,以HY开头,提交合同后,添加票据,类型为货运单,状态为已填,修改货运单事件表状态为待发


String goodsBillCode = "HY";
while (true) {
goodsBillCode += randomCode();if (goodsBillDao.findByGoodsBillCode(goodsBillCode) == null) {break;}
}
goodsBill.setGoodsBillCode(goodsBillCode);
goodsBill.setValidity("无效");
goodsBill.setIfAudit("未审核");
goodsBill.setIfSettleAccounts("未结账");
goodsBillDao.save(goodsBill);BillInfo billInfo = new BillInfo();
billInfo.setBillType("货运单");
billInfo.setBillCode(goodsBillCode);
billInfo.setBillState("已填");
billInfo.setWriteDate(new Date());
billInfoDao.save(billInfo);GoodsBillEvent goodsBillEvent = new GoodsBillEvent();
goodsBillEvent.setGoodsBillId(goodsBillCode);
goodsBillEvent.setEventName("待发");
goodsBillEvent.setRemark("单据已填");
goodsBillEvent.setOccurTime(new Date());
goodsBillEventDao.save(goodsBillEvent);

添加货物后,给回执单一个编号,以HZ开头,并且修改货运单状态为有效和已填

String goodsRevertBillId = "HZ";
while (true) {goodsRevertBillId += randomCode();if (cargoReceiptDetailDao.findByGoodsRevertBillId(goodsRevertBillId) == null) {break;}
}
goodsBill.setValidity("有效");
goodsBill.setIfAudit("审核");123456789

死磕18个Java 8的日期处理,工作必用!

查询接货单

查询页面可以查看不同状态的货运单:待发运单、未到运单、未结运单、所有运单。页面以分页形式展示货运单编号、事件名称、备注、发生时间等简略信息。只有在待运状态的货运单,才有修改和删除功能,其他状态不能对其数据操作。所有页面都可以通过货运单编号查看详情。

刚填写好后的接货单将会以待发的状态保存在待发运单中

可以查看运单的详细内容

对待发运单可以进行修改或删除 删除货运单时只能修改货运单及票据状态,不能真正删除

GoodsBillEvent goodsBillEvent = new GoodsBillEvent();
goodsBillEvent.setGoodsBillId(goodsBillCode);
goodsBillEvent.setEventName("删除货运单");
goodsBillEvent.setRemark("顾客不想发货");
goodsBillEvent.setOccurTime(new Date());BillInfo billInfo = billInfoDao.findByBillCode(goodsBillCode);
billInfo.setBillState("作废");

配车管理

主要进行货运回执单的填写。下拉选择未填写的货运回执单,选择后数据库查询联系人、地址等信息直接填写到页面。货运单状态自动填写为未出合同。

装货地点下拉选择,能找到所有路线的出发地,交货地点后台根据装货地点查询能到达的相应目的地供工作人员选择。起运时间和司机编号在分发票据的时候自动补充填写。是否结算在结算页面事件触发更改。

查询页面可以查看运输合同在不同阶段的状态:未出合同、未到合同、未结车辆、所有合同。页面以分页形式展示货运回执单编号、回执单状态、收货联系人等大致信息。只有运输合同状态为未出合同时,才有修改和删除功能,其他状态不能对其进行数据操作。所有页面都可以通过货运单编号查看详情

填写运输合同

填写主要是填写货运回执单主表,后端会检索数据库中没有运输合同的信息,从而显示在下拉框中,填票人选择相应的货运单后,会返显部分信息 填写后运输合同将处于未出合同状态 添加货运回执单的同时添加票据,类型为货运回执单,状态为已填,修改货运单事件表状态为待发。

BillInfo billInfo = new BillInfo();
billInfo.setBillType("货运回执单");
billInfo.setBillCode(cargoReceipt.getGoodsRevertBillCode());
billInfo.setBillState("已填");
billInfo.setWriteDate(new Date());
billInfoDao.save(billInfo);

查询运输合同

可以查询未出合同、未到车辆、未结合同、所有合同4个状态的货运回执单

可以查看未出合同的详细信息并进行修改、删除操作 删除货运回执单时只能修改货运单及票据状态,不能真正删除

BillInfo billInfo = billInfoDao.findByBillCode(goodsRevertBillCode);
billInfo.setBillState("作废");
billInfo.setWriteDate(new Date());

操作同接货类似,在此不重复展示

到货管理

司机可以在此进行到货回执的填写、用户可以填写顾客回执,并进行历史货物的查询

到货主要分两个部分:1. 司机填写到货回执,确认货物到货;2. 客户填写收货回执,确认收货

司机到货回执

司机填写到货回执,同时后端更新货运单和货运回执为未结;同时客服可以进行提货回告和到货回告并进行填写

面试:数据量很大,分页查询很慢,有什么优化方案?

客户到货回执

客户填写到货回执后,同时客服可以进行收货回告

客户可以查询自己的收货历史

中转管理

中转管理主要是进行中转公司信息的填写、查询以及对货物中转信息的录入和历史查询

中转公司

选择某一个城市,并对该城市的中转公司信息进行录入

可以在中转公司信息查询中查询所有的中转公司信息

使用 Redis 实现一个轻量级的搜索引擎,牛逼啊 !

中转信息

中转信息主要是填写中转货物的中转信息

可以在中转历史中查询所有的中转信息

源码地址获取

点击下方卡片,关注并回复 物流管理” 领取吧

往期推荐

必备技能!单点登录系统原理与实现!

使用 Redis 实现一个轻量级的搜索引擎,牛逼啊 !

必备技能!聊聊二维码扫码登录的原理

来给IDEA换个酷炫的主题吧!这几个都有点哇塞啊!

一二线城市都有哪些互联网公司是大家都想去的?

喜欢的这里报道

↘↘↘

不错!基于Springboot 2.0 + LayUI开发的物流管理系统(已开源)相关推荐

  1. idea新建springboot后端到前端_基于SpringBoot+AntDesign的快速开发平台

    项目介绍 Jeecg-Boot是一款基于SpringBoot+代码生成器的快速开发平台!前后端分离架构.技术采用SpringBoot.AntDesignVue.Mybatis.Shiro.JWT.强大 ...

  2. 基于springboot+mybatis+mysql+layui员工工资管理系统

    基于springboot+mybatis+mysql+layui员工工资管理系统 一.目的 二.需求 功能划分 系统结构设计 软件界面截图 三.系统开发配置 四.获取源码 一.目的 ​ 运用JavaE ...

  3. 基于springboot+redis+bootstrap+mysql开发一套属于自己的分布式springcloud云权限架构(七)【权限架构生产者(数据字典)】

    在我们的编码中我们经常会存放一些静态常量,而这些静态变量我们通常都是写死的,如果我们需要改变这些静态变量的值那么我们必须要修改代码,并重新发布程序,这很明显很不符合我们现实中的业务场景,我们现实中的业 ...

  4. JeecgBoot 2.1 Online表单版本发布,基于SpringBoot+AntDesign的快速开发平台

    项目介绍 Jeecg-Boot 是一款基于SpringBoot+代码生成器的快速开发平台!采用前后端分离架构:SpringBoot,Ant-Design-Vue,Mybatis,Shiro,JWT.强 ...

  5. ssm如何支持热部署_IntelliJ IDEA基于SpringBoot如何搭建SSM开发环境

    之前给大家在博文中讲过如何通过eclipse快速搭建SSM开发环境,但相对而言还是有些麻烦的,今天小编给大家介绍下如何使用IntelliJ IDEA基于SpringBoot来更快速地搭建SSM开发环境 ...

  6. 基于springboot+dubbo微服务开发的商城系统

    基于springboot+dubbo微服务开发的商城系统 模仿天猫商城 更多资源,访问搬砖联盟-每天搬一点,收货多一点.

  7. quartz配置_基于spring-boot 2.x +quartz 的CRUD任务管理系统

    基于spring-boot 2.x + quartz 的CRUD任务管理系统,适用于中小项目. 开发环境 JDK1.8.Maven.Eclipse 技术栈 SpringBoot 2.0.1.thyme ...

  8. 基于springboot+mybatis+mysql+html实现宠物医院管理系统(包含实训报告)

    基于springboot+mybatis+mysql+html实现宠物医院管理系统(包含实训报告) 一.系统简介 二.系统主要功能界面 2.1登陆 2.2系统设置 2.3宠物管理 2.4预约管理 2. ...

  9. java计算机毕业设计基于springboot+vue+elementUI的口腔管理平台管理系统(前后端分离)

    项目介绍 口腔卫生是关系民生的一个重要问题.口腔健康会直接影响全身的健康,口腔基本常见的有龋齿,牙周炎等问题,而且人类的牙齿只有2次更换周期,一旦牙齿彻底完成更换终生将不再更换,所以越来越多的人开始关 ...

最新文章

  1. 设计模式C#描述——单例与多例模式
  2. 保Cloudera弃Hortonworks,新平台将支持五大云供应商
  3. SRM 583 DIV1
  4. 蛮力算法百元百鸡java_每日一算法:百元百鸡
  5. boost::range::for_each相关的测试程序
  6. 任务调度之Elastic-Job1
  7. 【APICloud系列|30】苹果MAC电脑取消辅助功能-语音识别
  8. delphi中richedit中光标如何定位到最后_嵌入式开发之Linux系统中Vi编辑器的使用
  9. 区分PO,VO,DAO,BO,POJO
  10. 从零开始学数据分析,什么程度可以找工作?
  11. css如何把图片设置成梯形,css实现梯形
  12. 自己动手编译nodemcu固件(ESP8266)
  13. Excel处理数据技巧
  14. B 站视频下载器(BV号、dash、音视频分离)
  15. 希尔排序--简单易懂图解
  16. 怎么关闭fcitx的简繁切换和vscode的查找快捷键冲突了
  17. 控制面板打开后立即自动关闭
  18. Speedpdf——无需下载软件,就可以免费轻松搞定CAJ转word
  19. 一、物流的基本概念|1.2现代物流管理的形成和发展
  20. How to build openssl with fips module on Linux and Windows?

热门文章

  1. 『第26天』Sunos (一)
  2. python3 pip3 install 报错 ModuleNotFoundError: No module named ‘_ctypes‘ 解决方法
  3. lua sleep函数实现
  4. linux rsync 增量同步备份文件
  5. mysql update 加减乘除运算
  6. linux内核 arm交叉编译
  7. 十种MySQL报错注入
  8. ASP.NETcompilation debug=false targetFramework=4.0/错误
  9. 通过 SHGetSpecialFolderLocation、SHGetPathFromIDList 函数获取常用路径
  10. 汇编中的字符串操作指令