基于Springboot实现送水公司信息管理系统

项目编号:BS-XX-014

项目描述

springboot实现的送水后台管理系统

运行环境

jdk8+tomcat7+mysql+IntelliJ IDEA+maven

项目技术(必填)

SpringBoot+mybatis

数据库文件(可选)

压缩包自带

依赖包文件(可选)

maven项目

项目运行截图:

系统主界面

客户管理

送水工管理

送水历史订单

工资计算

统计送水数量

package com.minzu.service.impl;

import cn.hutool.crypto.digest.DigestUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.minzu.entities.Account;
import com.minzu.mapper.AccountMapper;
import com.minzu.service.AccountService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Objects;

/**
 * TODO:登录业务逻辑实现类
 * 被@Service注解修饰的类是业务逻辑实现类
 * @author znz
 * @version 1.0
 * @date 2022/1/2 16:25
 */
@Service
public class AccountServiceImpl implements AccountService {

    /**
     * service依赖mapper,程序运行期SpringBoot容器自动帮我们
     * 按照类型装配(将AccountMapper对象自动装配到AccountServiceImpl里面)
     */
    @Autowired
    private AccountMapper accountMapper;

    /**
     * 处理用户登录的业务逻辑
     * 步骤:
     * 1 根据用户名查询对应的账户
     * 2 判断账户对象(Account)是否为空
     * 3 如果为空登录失败(数据库没有这个用户),返回false
     * 4 如果非空,对表单输入的密码进行MD5加密
     * 5 判断加密之后的密码和数据库的密码是否相等
     * 6 如果相等登录成功,返回true
     * 7 如果不相等登录失败,返回false
     *
     * @param userName 浏览器表单输入的用户名
     * @param userPwd  浏览器表单输入的密码
     * @return 登录成功返回true,否则返回false
     */
    @Override
    public boolean login(String userName, String userPwd) {
        // 封装查询条件
        QueryWrapper<Account> qw = new QueryWrapper<>();
        qw.eq("user_name",userName);
        // 根据用户名查询对应的账户
        Account account = accountMapper.selectOne(qw);
        // 条件成立:表示没有对应的账户,登录失败,返回false
        if (null == account) {
            return false;
        }
        // 对表单输入的密码进行加密
        // encodingPwd存储加密之后的密码
        String encodingPwd = DigestUtil.md5Hex(userPwd);
        // 将加密之后的密码和数据库密码进行比较,条件成立:登录成功,返回true。否则登录失败,返回false
        if (Objects.equals(encodingPwd,account.getUserPwd())) {
            return true;
        } else {
            return false;
        }
    }
}
package com.minzu.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.minzu.entities.Customer;
import com.minzu.mapper.CustomerMapper;
import com.minzu.service.CustomerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * TODO: 客户管理业务逻辑接口的实现类
 * 被@Service注解修饰的类是接口实现类,SpringBoot启动的时候会自动注入
 * @author znz
 * @version 1.0
 * @date 2022/1/1 8:27
 */
@Service
public class CustomerServiceImpl implements CustomerService {

    /**
     * 自动装配客户管理Mapper接口
     */
    @Autowired
    private CustomerMapper customerMapper;

    /**
     * 查询所有的客户信息
     *
     * @return 客户列表
     */
    @Override
    public List<Customer> listCustomer() {
        return customerMapper.selectList(null);
    }

    /**
     * 添加客户信息
     *
     * @param customer 需要添加的客户对象
     * @return 受影响行数,大于0添加成功,否则添加失败
     */
    @Override
    public int saveCustomer(Customer customer) {
        return customerMapper.insert(customer);
    }

    /**
     * 根据客户名称搜索满足条件的客户列表
     * 例如:例如:使用模糊查询,搜索所有包含“老”的客户信息
     * 步骤:
     * 1 定义QueryWrapper对象
     * 2 定义查询条件
     * 3 调用CustomerMapper对象的selectList方法,将QueryWrapper对象注入到该方法中
     * 4 返回搜索结果
     * @param userName 搜索的查询条件
     * @return 满足条件的客户列表
     */
    @Override
    public List<Customer> searchCustomer(String userName) {
        QueryWrapper<Customer> qw = new QueryWrapper<>();
        qw.like("cust_name",userName);
        List<Customer> custList = customerMapper.selectList(qw);
        return custList;
    }

    /**
     * 根据客户ID删除客户信息
     * 步骤:
     * 1 创建QueryWrapper对象
     * 2 设置要删除的条件
     * 3 根据id删除客户信息,返回受影响行数
     * @param cid 客户ID
     * @return 受影响行数,大于0删除成功,否则删除失败
     */
    @Override
    public int deleteCustomerById(Integer cid) {
        QueryWrapper<Customer> qw = new QueryWrapper<>();
        qw.eq("cid",cid);
        return customerMapper.delete(qw);
    }

    /**
     * 根据客户id查询对应的客户信息
     * 步骤:
     * 1 创建QueryWrapper对象
     * 2 设置查询条件
     * 3 调用CustomerMapper对象selectOne方法,并将QueryWrapper对象注入到该方法中,返回客户信息
     * @param cid 客户id
     * @return 客户信息
     */
    @Override
    public Customer getCustomerById(Integer cid) {
        QueryWrapper<Customer> qw = new QueryWrapper<>();
        qw.eq("cid",cid);
        return customerMapper.selectOne(qw);
    }

    /**
     * 修改客户信息
     * 步骤:
     * 1 创建QueryWrapper对象
     * 2 设置要修改的条件(根据ID进行修改)
     * 3 调用CustomerMapper的update方法修改客户信息,并返回受影响行数
     * @param customer 采集的客户信息
     * @return 受影响行数
     */
    @Override
    public int updateCustomer(Customer customer) {
        QueryWrapper<Customer> qw = new QueryWrapper<>();
        qw.eq("cid",customer.getCid());
        return customerMapper.update(customer,qw);
    }
}

package com.minzu.service.impl;

import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.minzu.entities.History;
import com.minzu.mapper.HistoryMapper;
import com.minzu.service.HistoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
 * TODO: 送水历史管理接口实现类
 *
 * @author znz
 * @version 1.0
 * @date 2022/1/3 8:56
 */
@Service
public class HistoryServiceImpl implements HistoryService {

    @Autowired
    private HistoryMapper historyMapper;

    /**
     * 查询所有的送水历史信息
     * @return 送水历史列表
     */
    @Override
    public List<History> listHistory() {
        return historyMapper.listHistory();
    }

    /**
     * 添加送水历史
     *
     * @param history 表单采集的送水历史信息
     * @return 受影响行数,大于0添加成功,否则添加失败
     */
    @Override
    public int saveHistory(History history) {
        return historyMapper.saveHistory(history);
    }

    /**
     * 根据送水历史ID查询对应的送水历史
     * 用途:修改之前的数据回显
     *
     * @param hid 送水历史ID
     * @return 送水历史信息
     */
    @Override
    public History getHistoryById(Integer hid) {
        return historyMapper.getHistoryById(hid);
    }

    /**
     * 修改送水历史
     *
     * @param history 表单采集的的送水历史信息
     * @return update语句受影响行数,大于0修改成功,否则修改失败
     */
    @Override
    public int updateHistory(History history) {
        return historyMapper.updateHistory(history);
    }

    /**
     * 批量删除
     *
     * @param idList 需要批量删除的送水历史id列表
     * @return 受影响行数,大于0批量删除成功,否批量删除失败
     */
    @Override
    public int batchDeleteHistory(String idList) {
        // 字符串转换为List集合
        String[] split = StrUtil.split(idList, ",");
        List<Integer> ids = new ArrayList<>();
        for (String id : split) {
            if (StrUtil.isNotEmpty(id)) {
                ids.add(Integer.parseInt(id));
            }
        }
        return historyMapper.batchDeleteHistory(ids);
    }
}
package com.minzu.service.impl;

import cn.hutool.core.util.StrUtil;
import com.minzu.entities.Salary;
import com.minzu.entities.Worker;
import com.minzu.mapper.SalaryMapper;
import com.minzu.service.SalaryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;

/**
 * TODO: 计算工资业务逻辑实现类
 * @author znz
 * @version 1.0
 * @date 2022/1/2 8:38
 */
@Service
public class SalaryServiceImpl implements SalaryService {
    /**
     * 自动装配SalaryMapper对象
     */
    @Autowired
    private SalaryMapper salaryMapper;

    /**
     * 计算所有送水工的工资
     * @return 工资列表
     */
    @Override
    public List<Salary> listCalcSalary() {
        return salaryMapper.listCalcSalary();
    }

    /**
     * 根据条件计算某一段时间的送水工工资
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @return 工资列表
     */
    @Override
    public List<Salary> listCalcSalaryByCondition(String startDate, String endDate) {
        // 条件成立:表示输入的结束时间为Null,将系统当前时间作为结束时间
        if(StrUtil.isEmpty(endDate)){
            long currentTime = System.currentTimeMillis();
            Date dt = new Date(currentTime);
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            endDate = sdf.format(dt);
        }
        // salaryList 在某个时间段已经为客户送过水的送水工信息
        List<Salary> salaryList = salaryMapper.listCalcSalaryByCondition(startDate, endDate);
        // 没有为客户送过水的送水工信息
        List<Worker> workerList = salaryMapper.queryNonSendWaterWorker();
        // 获取以送水的送水工名称
        List<String> workerNameList =
                salaryList.stream()
                        .map(Salary::getWorkerName)
                        .collect(Collectors.toList());
        // 将没有送水的送水工信息合并到salaryList
        // 遍历workerList,将worker对象的数据注入到Salary对象中,让后添加到salaryList集合
        workerList.forEach(worker->{
            // 条件成立:表示没有没有送水的送水工在salaryList集合中不存在,将其放入集合
            if (!workerNameList.contains(worker.getWorkerName())){
                Salary sa = new Salary();
                sa.setWorkerName(worker.getWorkerName());
                sa.setWorkerSalary(worker.getWorkerSalary());
                sa.setWorkerMoney(worker.getWorkerMoney());
                // 没有送水的送水工默认送水数量为0
                sa.setSendWaterCount(0);
                // 没有送水的送水工默认实发工资为基本工资
                sa.setFinalSalary(Double.valueOf(worker.getWorkerSalary()));
                salaryList.add(sa);
            }
        });
        // 将“实发工资”按照降序排序
        // 需要对每个送水工的”实发工资“进行比较
        Collections.sort(salaryList,(o1,o2)->{
            if(o1.getFinalSalary() > o2.getFinalSalary()){
                return -1;
            } else if (o1.getFinalSalary() < o2.getFinalSalary()){
                return 1;
            } else {
                return 0;
            }
        });
//        Collections.sort(salaryList, new Comparator<Salary>() {
//            @Override
//            public int compare(Salary o1, Salary o2) {
//                if(o1.getFinalSalary() > o2.getFinalSalary()){
//                    return -1;
//                } else if(o1.getFinalSalary() < o2.getFinalSalary()) {
//                    return 1;
//                } else {
//                    return 0;
//                }
//            }
//        });
        return salaryList;
    }
}
package com.minzu.service.impl;

import com.minzu.entities.WaterDetails;
import com.minzu.mapper.WaterDetailsMapper;
import com.minzu.service.WaterDetailsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * TODO
 *
 * @author znz
 * @version 1.0
 * @date 2022/1/2  15:36
 */
@Service
public class WaterDetailsServiceImpl implements WaterDetailsService {

    @Autowired
    private WaterDetailsMapper waterDetailsMapper;
    /**
     * 查询每个送水工送水的详细信息
     *
     * @return 送水信息列表
     */
    @Override
    public List<WaterDetails> queryWaterDetails() {
        return waterDetailsMapper.queryWaterDetails();
    }
}

到此这篇关于基于Springboot实现送水公司信息管理系统的文章就介绍到这了,更多相关Springboot送水公司信息管理内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 基于java SSM springboot实现抗疫物质信息管理系统

    主要功能设计: 用户.区域.物质类型.物质详情.物质申请和审核以及我的申请和通知公告以及灵活控制菜单权限 主要技术实现:spring. springmvc. springboot.springboot security权限框架 mybatis . jquery . md5 .bootstarp.js tomcat.器.拦截器等 具体功能模块:用户模块.角色模块.菜单模块.部门模块以及灵活的权限控制,可控制到页面或按钮,满足绝大部分的权限需求 业务模块功能:区域管理.对不同区域的进行管理以及物质发

  • 基于Java SpringBoot的前后端分离信息管理系统的设计和实现

    目录 前言 视频演示 主要功能说明 功能截图 主要代码实现 主要数据表设计 前言 当今社会,随着科学技术的发展,以及市场经济的多元化,使人才的流动速度大大增加,因此也对党建工作的管理层面工作带来了空前且复杂的挑战, 从而使得如何高效的开展管理党建工作成为了亟待解决的问题.为此将高速发展的信息科学技术引入到党建工作管理的应用中,力求合理有效的提升全面各项工作的进展,实现以人为本的科学发展思想和意识,是一种高效可实现的方法. Java作为一种面向对象的.可以撰写跨平台应用软件的程序设计语言,其技术具

  • 基于Springboot实现送水公司信息管理系统

    项目编号:BS-XX-014 项目描述 springboot实现的送水后台管理系统 运行环境 jdk8+tomcat7+mysql+IntelliJ IDEA+maven 项目技术(必填) SpringBoot+mybatis 数据库文件(可选) 压缩包自带 依赖包文件(可选) maven项目 项目运行截图: 系统主界面 客户管理 送水工管理 送水历史订单 工资计算 统计送水数量 package com.minzu.service.impl; import cn.hutool.crypto.di

  • 基于VUE实现简单的学生信息管理系统

    一.主要功能 本次任务主要是使用VUE来实现一个简单的学生信息管理系统,主要功能为: 1.显示所有学生的信息(默认为10个) 2. 点击按钮,显示出学号尾号为单数(或双数)的学生信息 3. 增加学生信息 4. 要求使用VUE中 父子组件间通信 二.实现思路 1.数据管理:使用json数组的方式来管理储存数据 2.显示学生信息:因为组件是可复用的 Vue 实例,所以在这里引入子组件(用来显示每个学生的信息),将主页作为父组件.主页(父组件)使用v-for循环显示子组件. 3.按单双号筛选查找学生:

  • 基于python制作简易版学生信息管理系统

    一.前言 本篇博客对于文件操作.字典.列表.匿名函数以及sort()等内置函数进行了系统的整理操作,以设计一个学生信息管理系统的形式展示,具体概念方法等会在代码后进行分析讲述,请读者仔细分析每一处解析,对于基础巩固将会有很大的帮助,其中还有每一块代码的设计思路图,逻辑分析会有一定的提升. 二.需求分析 本程序需要用到os模板首先导入,并命名要存储信息的文件 import os File_Object_Name = 'Student_Inforation.txt' 三.主函数 def Main()

  • 基于Springboot商品进销存管理系统的设计与实现

    目录 一.项目简介 二.环境介绍 三.系统展示 四.核心代码展示 五.项目总结 一.项目简介 本项目实现了基于springboot的进销存管理系统,主要用户开设网店的相关商品的进货.销售.库存的管理,功能比较完整,有着完备的权限管理系统,可以自行根据需要来设计角色和分配权限,权限的粒度可以做到页面级的权限控制,整个项目来讲比较优秀.主要实现的功能有如下几个模块: 基础管理模块:包含客户管理.供应商管理.商品管理三个子模块 进货管理模块:包含商品进货.退货.商品退货查询几个子查块 销售管理:包含商

  • Java+MySQL实现学生信息管理系统源码

    基于Java swing+MySQL实现学生信息管理系统:主要实现JDBC对学生信息进行增删改查,应付一般课设足矣,分享给大家.(由于篇幅原因,代码未全部列出,如有需要留下邮箱) 鉴于太多同学要源码,实在发不过来,上传到github上 https://github.com/ZhuangM/student.git 1. 开发环境:jdk7+MySQL5+win7 代码结构:model-dao-view 2. 数据库设计--建库建表语句: CREATE DATABASE student; DROP

  • 基于springboot+vue实现垃圾分类管理系统

    本文实例为大家分享了springboot+vue实现垃圾分类管理系统的具体代码,供大家参考,具体内容如下 一.项目概述 1.项目内容 本项目利用IDEA,Visual Studio Code 开发工具,借助Mysql,Navicat for MySQL 工具,实现了一个基于springboot+vue的垃圾分类管理系统.系统为两种类型的用户提供服务,用户和管理员. 2.实现功能 (1)登陆功能 通过和数据库建立联系后,数据库内的用户和管理员可在登录页面输入账号和密码登陆网页. (2)数据的增.查

  • 基于java+springboot+mybatis+laiyu实现学科竞赛管理系统

    目录 项目背景: 主要功能模块: 主要技术: 主要功能: 功能截图: 数据图主要表设计: 用户表: 菜单表: 项目申请表: 竞赛报名表: 项目总结: 项目背景: 伴随着当今世界信息科技与联网的飞速发展,计算机也在迅速的普及,人们的生活方式已经迈入了以网络为主的时代,每行每业的信息化程度也越来越高,社会和经济发展的主要动力就是网络,随着我们国家对教育的重视程度不断提高,各个学校的学生数量不断增加,学生的校园生活也越来越精彩,学术竞赛.团队比赛也越来越丰富,在竞赛的申请及报名参加过程中,以往的纸质提

  • 基于Springboot实现高校社团管理系统的设计与实现

    目录 一.项目简介 二.环境介绍 三.系统展示 四.核心代码展示 一.项目简介 本项目基于Springboot+Mybatis开发实现了一个高校社团管理系统,系统包含三个角色:管理员.团长.会员.管理员主要是做一些基础数据的管理,比较用户管理,新闻管理,活动审批,社团创建审批等等,会员可以申请加入相关的社团,也可自己申请社团,管理员审批通过后成为团长,可以申请开展相关的活动.团长登陆后可以审批申请加入本社团的申请信息,并管理和查看相关的社团用户信息.各角色进入均可以查看发布的新闻信息. 二.环境

随机推荐