最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Springboot實(shí)現(xiàn)送水公司信息管理系統(tǒng)

 更新時(shí)間:2022年01月18日 08:51:01   作者:編程指南針  
這篇文章主要介紹了基于Springboot實(shí)現(xiàn)送水公司信息管理,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

項(xiàng)目編號:BS-XX-014

項(xiàng)目描述

springboot實(shí)現(xiàn)的送水后臺管理系統(tǒng)

運(yùn)行環(huán)境

jdk8+tomcat7+mysql+IntelliJ IDEA+maven

項(xiàng)目技術(shù)(必填)

SpringBoot+mybatis

數(shù)據(jù)庫文件(可選)

壓縮包自帶

依賴包文件(可選)

maven項(xiàng)目

項(xiàng)目運(yùn)行截圖:

系統(tǒng)主界面

客戶管理

送水工管理

送水歷史訂單

工資計(jì)算

統(tǒng)計(jì)送水?dāng)?shù)量

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:登錄業(yè)務(wù)邏輯實(shí)現(xiàn)類
 * 被@Service注解修飾的類是業(yè)務(wù)邏輯實(shí)現(xiàn)類
 * @author znz
 * @version 1.0
 * @date 2022/1/2 16:25
 */
@Service
public class AccountServiceImpl implements AccountService {
 
    /**
     * service依賴mapper,程序運(yùn)行期SpringBoot容器自動幫我們
     * 按照類型裝配(將AccountMapper對象自動裝配到AccountServiceImpl里面)
     */
    @Autowired
    private AccountMapper accountMapper;
 
    /**
     * 處理用戶登錄的業(yè)務(wù)邏輯
     * 步驟:
     * 1 根據(jù)用戶名查詢對應(yīng)的賬戶
     * 2 判斷賬戶對象(Account)是否為空
     * 3 如果為空登錄失敗(數(shù)據(jù)庫沒有這個(gè)用戶),返回false
     * 4 如果非空,對表單輸入的密碼進(jìn)行MD5加密
     * 5 判斷加密之后的密碼和數(shù)據(jù)庫的密碼是否相等
     * 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);
        // 根據(jù)用戶名查詢對應(yīng)的賬戶
        Account account = accountMapper.selectOne(qw);
        // 條件成立:表示沒有對應(yīng)的賬戶,登錄失敗,返回false
        if (null == account) {
            return false;
        }
        // 對表單輸入的密碼進(jìn)行加密
        // encodingPwd存儲加密之后的密碼
        String encodingPwd = DigestUtil.md5Hex(userPwd);
        // 將加密之后的密碼和數(shù)據(jù)庫密碼進(jìn)行比較,條件成立:登錄成功,返回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: 客戶管理業(yè)務(wù)邏輯接口的實(shí)現(xiàn)類
 * 被@Service注解修飾的類是接口實(shí)現(xiàn)類,SpringBoot啟動的時(shí)候會自動注入
 * @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 受影響行數(shù),大于0添加成功,否則添加失敗
     */
    @Override
    public int saveCustomer(Customer customer) {
        return customerMapper.insert(customer);
    }
 
    /**
     * 根據(jù)客戶名稱搜索滿足條件的客戶列表
     * 例如:例如:使用模糊查詢,搜索所有包含“老”的客戶信息
     * 步驟:
     * 1 定義QueryWrapper對象
     * 2 定義查詢條件
     * 3 調(diào)用CustomerMapper對象的selectList方法,將QueryWrapper對象注入到該方法中
     * 4 返回搜索結(jié)果
     * @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;
    }
 
    /**
     * 根據(jù)客戶ID刪除客戶信息
     * 步驟:
     * 1 創(chuàng)建QueryWrapper對象
     * 2 設(shè)置要刪除的條件
     * 3 根據(jù)id刪除客戶信息,返回受影響行數(shù)
     * @param cid 客戶ID
     * @return 受影響行數(shù),大于0刪除成功,否則刪除失敗
     */
    @Override
    public int deleteCustomerById(Integer cid) {
        QueryWrapper<Customer> qw = new QueryWrapper<>();
        qw.eq("cid",cid);
        return customerMapper.delete(qw);
    }
 
    /**
     * 根據(jù)客戶id查詢對應(yīng)的客戶信息
     * 步驟:
     * 1 創(chuàng)建QueryWrapper對象
     * 2 設(shè)置查詢條件
     * 3 調(diào)用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 創(chuàng)建QueryWrapper對象
     * 2 設(shè)置要修改的條件(根據(jù)ID進(jìn)行修改)
     * 3 調(diào)用CustomerMapper的update方法修改客戶信息,并返回受影響行數(shù)
     * @param customer 采集的客戶信息
     * @return 受影響行數(shù)
     */
    @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: 送水歷史管理接口實(shí)現(xiàn)類
 *
 * @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 受影響行數(shù),大于0添加成功,否則添加失敗
     */
    @Override
    public int saveHistory(History history) {
        return historyMapper.saveHistory(history);
    }
 
    /**
     * 根據(jù)送水歷史ID查詢對應(yīng)的送水歷史
     * 用途:修改之前的數(shù)據(jù)回顯
     *
     * @param hid 送水歷史ID
     * @return 送水歷史信息
     */
    @Override
    public History getHistoryById(Integer hid) {
        return historyMapper.getHistoryById(hid);
    }
 
    /**
     * 修改送水歷史
     *
     * @param history 表單采集的的送水歷史信息
     * @return update語句受影響行數(shù),大于0修改成功,否則修改失敗
     */
    @Override
    public int updateHistory(History history) {
        return historyMapper.updateHistory(history);
    }
 
    /**
     * 批量刪除
     *
     * @param idList 需要批量刪除的送水歷史id列表
     * @return 受影響行數(shù),大于0批量刪除成功,否批量刪除失敗
     */
    @Override
    public int batchDeleteHistory(String idList) {
        // 字符串轉(zhuǎn)換為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: 計(jì)算工資業(yè)務(wù)邏輯實(shí)現(xiàn)類
 * @author znz
 * @version 1.0
 * @date 2022/1/2 8:38
 */
@Service
public class SalaryServiceImpl implements SalaryService {
    /**
     * 自動裝配SalaryMapper對象
     */
    @Autowired
    private SalaryMapper salaryMapper;
 
    /**
     * 計(jì)算所有送水工的工資
     * @return 工資列表
     */
    @Override
    public List<Salary> listCalcSalary() {
        return salaryMapper.listCalcSalary();
    }
 
    /**
     * 根據(jù)條件計(jì)算某一段時(shí)間的送水工工資
     *
     * @param startDate 開始時(shí)間
     * @param endDate   結(jié)束時(shí)間
     * @return 工資列表
     */
    @Override
    public List<Salary> listCalcSalaryByCondition(String startDate, String endDate) {
        // 條件成立:表示輸入的結(jié)束時(shí)間為Null,將系統(tǒng)當(dāng)前時(shí)間作為結(jié)束時(shí)間
        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 在某個(gè)時(shí)間段已經(jīng)為客戶送過水的送水工信息
        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對象的數(shù)據(jù)注入到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());
                // 沒有送水的送水工默認(rèn)送水?dāng)?shù)量為0
                sa.setSendWaterCount(0);
                // 沒有送水的送水工默認(rèn)實(shí)發(fā)工資為基本工資
                sa.setFinalSalary(Double.valueOf(worker.getWorkerSalary()));
                salaryList.add(sa);
            }
        });
        // 將“實(shí)發(fā)工資”按照降序排序
        // 需要對每個(gè)送水工的”實(shí)發(fā)工資“進(jìn)行比較
        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;
    /**
     * 查詢每個(gè)送水工送水的詳細(xì)信息
     *
     * @return 送水信息列表
     */
    @Override
    public List<WaterDetails> queryWaterDetails() {
        return waterDetailsMapper.queryWaterDetails();
    }
}

到此這篇關(guān)于基于Springboot實(shí)現(xiàn)送水公司信息管理系統(tǒng)的文章就介紹到這了,更多相關(guān)Springboot送水公司信息管理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java實(shí)現(xiàn)簡單圖書管理系統(tǒng)

    java實(shí)現(xiàn)簡單圖書管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡單圖書管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • SpringBoot指標(biāo)監(jiān)控功能實(shí)現(xiàn)

    SpringBoot指標(biāo)監(jiān)控功能實(shí)現(xiàn)

    這篇文章主要介紹了SpringBoot指標(biāo)監(jiān)控功能實(shí)現(xiàn),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • MyBatis-Plus 查詢返回實(shí)體對象還是map

    MyBatis-Plus 查詢返回實(shí)體對象還是map

    這篇文章主要介紹了MyBatis-Plus 查詢返回實(shí)體對象還是map,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 在項(xiàng)目中直接使用hystrix的流程分析

    在項(xiàng)目中直接使用hystrix的流程分析

    最近由于一些背景原因,需要在項(xiàng)目中需要對接口進(jìn)行限流。所以就考慮到了直接使用Hystrix,但是呢,又不想直接使用SpringCloud,而是直接引入原生,現(xiàn)在發(fā)現(xiàn)挺好用的,所以記錄下來,需要的朋友參考下吧
    2022-06-06
  • 教你幾個(gè)?Java?編程中使用技巧

    教你幾個(gè)?Java?編程中使用技巧

    枯燥的編程中總得有些樂趣,今天我們不談?wù)撃切└呱畹募寄?,教你幾個(gè)在編程中的奇技淫巧,說不定在某些時(shí)候還能炫耀一番呢,今天小編教你幾個(gè)?Java?編程中使用技巧,感興趣的朋友參考下吧
    2022-12-12
  • SpringBoot中的手動提交事務(wù)

    SpringBoot中的手動提交事務(wù)

    在Spring框架中使用@Transactional注解通常管理事務(wù),但在多線程環(huán)境下此方法失效,本文討論了手動事務(wù)的必要性及其實(shí)現(xiàn)方式,探討了Spring的七種事務(wù)傳播行為和數(shù)據(jù)庫的四大特性與隔離級別,了解這些可以幫助開發(fā)者在無法使用聲明式事務(wù)時(shí)
    2024-09-09
  • Netty分布式pipeline管道傳播事件的邏輯總結(jié)分析

    Netty分布式pipeline管道傳播事件的邏輯總結(jié)分析

    這篇文章主要為大家介紹了Netty分布式pipeline管道傳播事件總結(jié)分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • spring boot上傳文件出錯(cuò)問題如何解決

    spring boot上傳文件出錯(cuò)問題如何解決

    這篇文章主要介紹了spring boot上傳文件出錯(cuò)問題如何解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • java使用計(jì)算md5校驗(yàn)碼方式比較兩個(gè)文件是否相同

    java使用計(jì)算md5校驗(yàn)碼方式比較兩個(gè)文件是否相同

    MD5文件效驗(yàn)碼是一個(gè)判斷文件是否是相同文件的途徑,通過比較兩個(gè)文件的Md5效驗(yàn)碼是否相同來精確判斷兩個(gè)文件是否相同
    2014-04-04
  • Java指令重排引發(fā)問題及解決方案

    Java指令重排引發(fā)問題及解決方案

    指令重排是JVM在解釋執(zhí)行Java代碼時(shí)對指令順序進(jìn)行重新排列的一種優(yōu)化技術(shù),本文主要介紹了Java指令重排引發(fā)問題及解決方案,感興趣的可以了解一下
    2023-08-08

最新評論

长汀县| 克东县| 大埔县| 黎城县| 钦州市| 临海市| 延安市| 汾阳市| 靖安县| 特克斯县| 广灵县| 青浦区| 南平市| 陆丰市| 青岛市| 金湖县| 龙井市| 汶上县| 西乌珠穆沁旗| 江口县| 沙洋县| 乐至县| 沂源县| 侯马市| 札达县| 宁都县| 玉龙| 波密县| 安义县| 靖安县| 平罗县| 县级市| 临邑县| 库尔勒市| 宣恩县| 瑞金市| 九龙城区| 当阳市| 泰兴市| 衡山县| 桦川县|