IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 【一月笔记】 -> 正文阅读

[Java知识库]【一月笔记】

作者:token keyword

入职后完成的第一个小模块

Controller
package com.ds.travel.biz.patrol.controller;

import com.ds.travel.biz.pojo.assets.vo.PatrolElementVo;
import com.ds.travel.biz.pojo.patrol.PatrolElement;
import com.ds.travel.biz.pojo.patrol.dto.PatrolElementDto;
import com.ds.travel.biz.pojo.patrol.dto.PatrolElementExcelDto;
import com.ds.travel.biz.pojo.patrol.dto.PatrolElementInforDto;
import com.ds.travel.biz.pojo.patrol.vo.PatrolElementCheckVo;
import com.github.pagehelper.PageInfo;
import com.jt.common.core.entity.Result;
import com.jt.common.core.entity.Param;
import com.ds.travel.biz.patrol.biz.PatrolElementBiz;
import com.jt.common.core.util.Common;
import com.jt.common.core.util.Constants;
import org.springframework.ui.Model;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.List;
/**
 * @Author zx
 * @Description 控制类
 * @Date 2022/1/7 19:05
 **/
@RestController
@RequestMapping("/element")
public class PatrolElementController {

    private final PatrolElementBiz patrolElementBiz;

    public PatrolElementController(PatrolElementBiz patrolElementBiz) {
        this.patrolElementBiz = patrolElementBiz;

    }
    /**
     * 功能描述:  查询列表所有记录
     * @Author zx
     * @Date 2022/1/7 19:16
     * @Param  Param
     **/
    @PostMapping("/list")
    public Result<PageInfo<PatrolElementVo>> list(@RequestBody Param param){
        if (param.getInteger("pageNo") == null){ return Result.asCheckError("pageNo不能为null"); }
        if (param.getInteger("limit") == null){ return Result.asCheckError("limit不能为null"); }
        return Result.asSuccess(patrolElementBiz.selectList(param));
    }
    /**
     * 功能描述:  新增地里要素数据
     * @Author zx
     * @Date 2022/1/7 19:20
     * @Param   PatrolElementInforDto
     **/
    @PostMapping("/add")
    public Result<?> add(@RequestBody @Validated PatrolElementInforDto patrolElementInforDto){
        if(!patrolElementInforDto.getPosition().contains(",") || patrolElementInforDto.getPosition().length() <10) {
            return Result.asCheckError("定位错误");
        }
        if(patrolElementInforDto.getIsGenerate().equals(Constants.COMMON_ONE.toString())){
            if(patrolElementInforDto.getRule() == null){ return Result.asCheckError("请选择规则"); }
        }
        patrolElementBiz.add(patrolElementInforDto);
        return Result.asSuccess();
    }
    /**
     * 功能描述:  更新修改地理要素数据
     * @Author zx
     * @Date 2022/1/7 19:52
     * @Param PatrolElementInforDto
     **/
    @PostMapping("/update")
    public Result<?> update(@RequestBody @Validated PatrolElementInforDto patrolElementInforDto){
        if(!patrolElementInforDto.getPosition().contains(",")){ return Result.asCheckError("定位错误"); }
        if(patrolElementInforDto.getIsGenerate().equals(Constants.COMMON_ONE.toString())){
            if(patrolElementInforDto.getRule() == null){ return Result.asCheckError("请选择规则"); }
        }
        patrolElementBiz.updateById(patrolElementInforDto);
        return Result.asSuccess();
    }
    /**
     * 功能描述:  根据ID删除地理要素数据
     * @Author zx
     * @Date 2022/1/7 19:53
     * @Param PatrolElementDto
     **/
    @PostMapping("/remove")
    public Result<?> remove(@RequestBody PatrolElementDto patrolElementDto){
        if(patrolElementDto.getId() == null ){ return Result.asCheckError("用户ID不能为null"); }
        patrolElementBiz.remove(patrolElementDto);
        return Result.asSuccess();
    }
    /**
     * 功能描述:  根据ID修改地理要素状态信息
     * @Author zx
     * @Date 2022/1/7 19:53
     * @Param PatrolElementDto
     **/
    @PostMapping("/status")
    public Result<?> status(@RequestBody PatrolElementDto patrolElementDto){
        if(patrolElementDto.getId() == null ){ return  Result.asCheckError("用户ID不能为null"); }
        if(patrolElementDto.getStatus() == null){ return Result.asCheckError("状态未找到"); }
        patrolElementBiz.statusUpd(patrolElementDto);
        return Result.asSuccess();
    }
    /**
     * 功能描述:  查看当前对应ID的地理要素信息
     * @Author zx
     * @Date 2022/1/7 19:54
     * @Param PatrolElement
     **/
    @PostMapping("/check")
    public Result<PatrolElementCheckVo> check(@RequestBody PatrolElementDto patrolElementDto){
        if(patrolElementDto.getId() == null){ return Result.asCheckError("用户ID不能为null"); }
        return Result.asSuccess(patrolElementBiz.checkById(patrolElementDto));
    }
    /**
     * 功能描述:  导入读取地理要素Excel文件接口
     * @Author zx
     * @Date 2022/1/7 19:57
     * @Param MultipartFile
     **/
    @PostMapping("/importExcel")
    public Result<?> importExcel(@RequestParam(value = "file",required = false) MultipartFile file) throws IOException {
        if(Common.isEmpty(file)||Common.isEmpty(file.getOriginalFilename()) || file.isEmpty()){
            return Result.asFail("文件空或文件类型无法识别,导入失败!");
        }
        if (!file.getOriginalFilename().endsWith(".xlsx") && !file.getOriginalFilename().endsWith(".xls")){
            return Result.asFail("导入仅支持.xlxs或.xlx类型文件!");
        }
        patrolElementBiz.importExcel(file);
        return Result.asSuccess();
    }

}

biz接口
package com.ds.travel.biz.patrol.biz;

import com.ds.travel.biz.pojo.assets.vo.PatrolElementVo;
import com.ds.travel.biz.pojo.patrol.dto.PatrolElementDto;
import com.ds.travel.biz.pojo.patrol.dto.PatrolElementInforDto;
import com.ds.travel.biz.pojo.patrol.vo.PatrolElementCheckVo;
import com.github.pagehelper.PageInfo;
import com.ds.travel.biz.pojo.patrol.PatrolElement;
import com.jt.common.core.entity.Param;
import com.jt.common.core.entity.Result;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

/**
 * @author: Ru He
 * Date: Created in 2022-1-5.
 * Description: 应用业务类
 */
public interface PatrolElementBiz {
    /**
     * 查询列表
     */
    PageInfo<PatrolElementVo> selectList(Param param);
    /**
     * 新增
     */
    void add(PatrolElementInforDto patrolElementInforDto);
    /**
     * 更新
     */
    void updateById(PatrolElementInforDto patrolElementInforDto);
    /**
     * 删除
     */
    void remove(PatrolElementDto patrolElementDto);
    /**
     * 状态
     */
    void statusUpd(PatrolElementDto patrolElementDto);
    /**
     * 查看
     */
    PatrolElementCheckVo checkById(PatrolElementDto patrolElementDto);
    /**
     * 导入
     */
    void importExcel(MultipartFile file)throws IOException;
}
BizImpl接口实现

需要用到自定义的PatrolElementMessageConverter解析器

package com.ds.travel.biz.patrol.biz.impl;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.util.ListUtils;
import com.ds.travel.biz.patrol.biz.PatrolElementBiz;
import com.ds.travel.biz.patrol.listener.PatrolElementListener;
import com.ds.travel.biz.pojo.assets.converter.PatrolElementMessageConverter;
import com.ds.travel.biz.pojo.assets.vo.PatrolElementVo;
import com.ds.travel.biz.pojo.patrol.PatrolElement;
import com.ds.travel.biz.pojo.patrol.dto.PatrolElementDto;
import com.ds.travel.biz.pojo.patrol.dto.PatrolElementExcelDto;
import com.ds.travel.biz.pojo.patrol.dto.PatrolElementInforDto;
import com.ds.travel.biz.pojo.patrol.vo.PatrolElementCheckVo;
import com.github.pagehelper.PageInfo;
import com.jt.common.core.entity.Param;
import com.ds.travel.biz.patrol.service.PatrolElementService;
import com.jt.common.core.util.Constants;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;
import java.util.*;

/**
 * @author:
 * Date: Created in 2022-1-5.
 * Description: 业务逻辑类
 */
@Component
public class PatrolElementBizImpl implements PatrolElementBiz {

    private final PatrolElementService patrolElementService;

    public PatrolElementBizImpl(PatrolElementService patrolElementService) {
        this.patrolElementService = patrolElementService;
    }
    /**
     * 查询列表
     */
    @Override
    public PageInfo<PatrolElementVo> selectList(Param param) {
        return patrolElementService.selectLisAll(param);
    }
    /**
     * 新增
     */
    @Override
    public void add(PatrolElementInforDto patrolElementInforDto) {
        patrolElementService.save(decomposes(patrolElementInforDto));
    }
    /**
     * 更新
     */
    @Override
    public void updateById(PatrolElementInforDto patrolElementInforDto) {
        patrolElementService.updById(decomposes(patrolElementInforDto));
    }
    /**
     * 删除
     */
    @Override
    public void remove(PatrolElementDto patrolElementDto){
        patrolElementService.removeById(patrolElementDto.getId());
    }
    /**
     * 状态
     */
    @Override
    public void statusUpd(PatrolElementDto patrolElementDto) {

        patrolElementService.statusUpd(patrolElementDto.getId(),patrolElementDto.getStatus());
    }
    /**
     * 查看
     */
    @Override
    public PatrolElementCheckVo checkById(PatrolElementDto patrolElementDto) {
        return patrolElementService.checkById(patrolElementDto.getId());
    }
    /**
     * 导入
     */
    @Override
    public void importExcel(MultipartFile file) throws IOException {
//        ExcelReader reader = EasyExcel.read(file.getInputStream()).build();
//        声明一个流对象
        InputStream inputStream = file.getInputStream();
//        try {
//            ReadSheet sheet1 = EasyExcel.readSheet(0).head(PatrolElementExcelDto.class)
//                    .registerReadListener(new PatrolElementListener(patrolElementService)).build();
//            reader.read(sheet1);
//            }finally {
//            reader.finish();
//        }
//        inputStream输入成PatrolElementExcelDto类型的实体,调用PatrolElementListener监听器
        EasyExcel.read(inputStream,PatrolElementExcelDto.class,new PatrolElementListener(patrolElementService)).sheet().doRead();
        inputStream.close();
    }
    /**
     * 功能描述:  用户地理要素Dto转换为patrolElement实体
     * @Author zx
     * @Date 2022/1/7 20:18
     * @Param PatrolElementInforDto
     **/
    public PatrolElement decomposes(PatrolElementInforDto patrolElementInforDto){
//调用PatrolElementMessageConverter解析器解析成PatrolElement实体类
        PatrolElement patrolElement=  PatrolElementMessageConverter.INSTANCE.toCompanyDto(patrolElementInforDto);
//        拆分经纬度,以","分隔
        String[] positions = patrolElementInforDto.getPosition().split(",");
        patrolElement.setLatitude(positions[Constants.COMMON_ZERO]);//纬度
        patrolElement.setLongitude(positions[Constants.COMMON_ONE]);//经度

//        是否生成任务
        if(patrolElementInforDto.getIsGenerate().equals(Constants.COMMON_ZERO.toString())){
//            不生成任务
            patrolElement.setRuleId(Long.parseLong(Constants.COMMON_ZERO.toString()));
            patrolElement.setIsCustom(Constants.COMMON_ZERO);
        }else {
//            生成任务
            if(Constants.COMMON_ZERO.toString().equals(patrolElementInforDto.getRulePattern())){
//            现有规则
                patrolElement.setRuleId(Long.parseLong(patrolElementInforDto.getRule().toString()));
                patrolElement.setIsCustom(Constants.COMMON_ZERO);
            }else {
//            自定义规则
                patrolElement.setRuleId(Long.parseLong(Constants.COMMON_ZERO.toString()));
                patrolElement.setIsCustom(Constants.COMMON_ONE);
            }
        }
        return patrolElement;
    }
}
service接口
package com.ds.travel.biz.patrol.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ds.travel.biz.pojo.assets.vo.PatrolElementVo;
import com.ds.travel.biz.pojo.patrol.PatrolElement;
import com.ds.travel.biz.pojo.patrol.dto.PatrolElementDto;
import com.ds.travel.biz.pojo.patrol.dto.PatrolElementExcelDto;
import com.ds.travel.biz.pojo.patrol.vo.PatrolElementCheckVo;
import com.github.pagehelper.PageInfo;
import com.jt.common.core.entity.Param;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

/**
 * Date: Created in 2022-1-5.
 * Description: 基础业务实接口现类
 */
public interface PatrolElementService extends IService<PatrolElement> {
    /**
     * 查询列表
     */
    PageInfo<PatrolElementVo> selectLisAll(Param param);
    /**
     * 更新
     */
    void updById(PatrolElement patrolElement);
    /**
     * 删除
     */
    void removeById(Long id);
    /**
     * 状态
     */
    void statusUpd(Long id, Object status);
    /**
     * 查看
     */
    PatrolElementCheckVo checkById(Long id);
    /**
     * 导入
     */
    void saveExcel(List<PatrolElementDto> list);
    /**
     * 查找要素类型Id
     */
    Long selectTypeId(String typeName);
    /**
     * 查找现有规则Id
     */
    Long selectRuleId(String ruleName);
    /**
     * 写入上级要素类型
     */
    void UpTypeId(PatrolElementExcelDto patrolElementExcelDto);
}
serviceImpl接口实现类
package com.ds.travel.biz.patrol.service.impl;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelReader;
import com.alibaba.excel.read.metadata.ReadSheet;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ds.travel.biz.patrol.listener.PatrolElementListener;
import com.ds.travel.biz.patrol.service.PatrolElementService;
import com.ds.travel.biz.pojo.assets.vo.PatrolElementVo;
import com.ds.travel.biz.pojo.patrol.PatrolElement;
import com.ds.travel.biz.patrol.mapper.PatrolElementMapper;
import com.ds.travel.biz.pojo.patrol.dto.PatrolElementDto;
import com.ds.travel.biz.pojo.patrol.dto.PatrolElementExcelDto;
import com.ds.travel.biz.pojo.patrol.vo.PatrolElementCheckVo;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.jt.common.core.entity.Param;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Date: Created in 2022-1-5.
 * Description: 基础业务实现类
 */
@Service
public class PatrolElementServiceImpl extends ServiceImpl<PatrolElementMapper, PatrolElement> implements PatrolElementService {

    private final PatrolElementMapper patrolElementMapper;

    public PatrolElementServiceImpl (PatrolElementMapper patrolElementMapper) {
        this.patrolElementMapper = patrolElementMapper;
    }
    /**
     * 查询列表
     */
    @Override
    public PageInfo<PatrolElementVo> selectLisAll(Param param) {
        Page<PatrolElementVo> page = PageHelper.startPage(param.getIntValue("pageNo"),param.getIntValue("limit"));
        patrolElementMapper.selectListAll(param.getInteger("typeId"),param.getString("elementName"));
        return new PageInfo<>(page);
    }
    /**
     * 更新
     */
    @Override
    public void updById(PatrolElement patrolElement) {
        patrolElementMapper.updById(patrolElement);
    }
    /**
     * 删除
     */
    @Override
    public void removeById(Long id) {
        patrolElementMapper.removeById(id);
    }
    /**
     * 状态
     */
    @Override
    public void statusUpd(Long id, Object status) {
        Map<String,Object> map = new HashMap<>();
        map.put("id",id);
        map.put("status",status);
        patrolElementMapper.statusUpd(map);
    }
    /**
     * 查看
     */
    @Override
    public PatrolElementCheckVo checkById(Long id) {
        return patrolElementMapper.checkById(id);
    }
    /**
     * 功能描述:  地理要素Excel文件导入
     * @Author zx
     * @Date 2022/1/7 20:35
     * @Param file文件
     **/
    @Override
    public void saveExcel(List<PatrolElementDto> list) {
        for(PatrolElementDto patrolElementDto:list){
            patrolElementMapper.saveExcel(patrolElementDto);
        }
    }
    /**
     * 查找要素类型Id
     */
    @Override
    public Long selectTypeId(String typeName) {
        return patrolElementMapper.selectTypeId(typeName);
    }
    /**
     * 查找现有规则Id
     */
    @Override
    public Long selectRuleId(String ruleName) {
        return patrolElementMapper.selectRuleId(ruleName);
    }
    /**
     * 写入上级要素类型
     */
    @Override
    public void UpTypeId(PatrolElementExcelDto patrolElementExcelDto) {
        Long parentTypeName = patrolElementMapper.selectTypeId(patrolElementExcelDto.getParentTypeName());
        patrolElementMapper.UpTypeId(patrolElementExcelDto.getTypeName(),parentTypeName);
    }
}
Mapper映射接口
package com.ds.travel.biz.patrol.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ds.travel.biz.pojo.assets.vo.PatrolElementVo;
import com.ds.travel.biz.pojo.patrol.PatrolElement;
import com.ds.travel.biz.pojo.patrol.dto.PatrolElementDto;
import com.ds.travel.biz.pojo.patrol.dto.PatrolElementExcelDto;
import com.ds.travel.biz.pojo.patrol.vo.PatrolElementCheckVo;
import com.github.pagehelper.PageInfo;
import org.apache.ibatis.annotations.Param;
import org.mapstruct.Mapper;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;
import java.util.Map;


/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author Ru He
 * @since 2022-1-5.
 */
@Mapper
public interface PatrolElementMapper extends BaseMapper<PatrolElement> {
    /**
     * 查询列表
     */
    List<PatrolElementVo> selectListAll(@Param("typeId") Integer typeId, @Param("elementName") String elementName);
    /**
     * 更新
     */
    void updById(PatrolElement patrolElement);
    /**
     * 删除
     */
    void removeById(Long id);
    /**
     * 状态
     */
    void statusUpd(Map<String,Object> map);
    /**
     * 查看
     */
    PatrolElementCheckVo checkById(Long id);
    /**
     * 导入
     */
    void saveExcel(PatrolElementDto patrolElementDto);
    /**
     * 查找要素类型Id
     */
    Long selectTypeId(String typeName);
    /**
     * 查找现有规则Id
     */
    Long selectRuleId(String ruleName);
    /**
     * 写入上级要素类型
     */
    void UpTypeId(@Param("typeName") String typeName,@Param("parentTypeName") Long parentTypeName);
}

Mapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ds.travel.biz.patrol.mapper.PatrolElementMapper">


    <!--导入-->
    <insert id="saveExcel" parameterType="com.ds.travel.biz.pojo.patrol.dto.PatrolElementDto">
        insert into am_patrol_element set element_name=#{elementName},type_id=#{typeId},is_generate=#{isGenerate},
            address=#{address},rule_id=#{ruleId},status=#{status},longitude=#{longitude},latitude=#{latitude},is_custom=#{isCustom}
    </insert>

    <!--分列-->
    <select id="selectListAll" resultType="com.ds.travel.biz.pojo.assets.vo.PatrolElementVo">
        select a.id,a.element_name,e.type_name,a.is_generate,a.address,a.is_custom,t.rule_name,a.status
            from (select * from am_patrol_element<if test="elementName != null ">
                where element_name = #{elementName}
            </if>)a
                join am_patrol_element_type e on
                <if test="typeId != null ">
                    a.type_id = #{typeId} and e.id = #{typeId}
                </if>
                <if test="typeId == null">
                    a.type_id=e.id
                </if>
                    left join am_patrol_task t on a.rule_id=t.id
                        where a.is_delete = 0
    </select>

    <!--删除-->
    <update id="removeById" parameterType="long">
        update am_patrol_element set is_delete = 1 where id = #{id}
    </update>

    <!--状态-->
    <update id="statusUpd" parameterType="map">
        update am_patrol_element
            <if test="status == 1">
                set status = 0
            </if>
            <if test="status == 0">
                set status = 1
            </if>
            where id = #{id}
    </update>

    <!--查看-->
    <select id="checkById" parameterType="long" resultType="com.ds.travel.biz.pojo.patrol.vo.PatrolElementCheckVo">
        select a.id,a.element_name,e.type_name,a.is_generate,a.address,t.rule_name,a.status,a.longitude,a.latitude,a.is_custom,a.is_delete,a.create_id,a.create_time,a.update_id,a.update_time
            from am_patrol_element a join am_patrol_element_type e on a.type_id=e.id
                left join am_patrol_task t on a.rule_id=t.id
                    where a.id = #{id}
    </select>

    <!--查找要素类型Id-->
    <select id="selectTypeId" parameterType="string" resultType="java.lang.Long">
        select id from am_patrol_element_type where type_name = #{typeName}
    </select>

    <!--查找现有规则Id-->
    <select id="selectRuleId" parameterType="string" resultType="java.lang.Long">
        select id from am_patrol_task where rule_name = #{ruleName}
    </select>

    <!--写入上级要素类型-->
    <update id="UpTypeId">
        update am_patrol_element_type set task_type_id = #{parentTypeName} where type_name = #{typeName}
    </update>

    <!--修改-->
    <update id="updById" parameterType="com.ds.travel.biz.pojo.patrol.PatrolElement">
        update am_patrol_element
        <set>
            <if test="elementName != null">
                element_name = #{elementName,jdbcType=VARCHAR},
            </if>
            <if test="typeId != null">
                type_id = #{typeId,jdbcType=BIGINT},
            </if>
            <if test="isGenerate != null">
                is_generate = #{isGenerate,jdbcType=TINYINT},
            </if>
            <if test="address != null">
                address = #{address,jdbcType=VARCHAR},
            </if>
            <if test="ruleId != null">
                rule_id = #{ruleId,jdbcType=BIGINT},
            </if>
            <if test="status != null">
                `status` = #{status,jdbcType=TINYINT},
            </if>
            <if test="longitude != null">
                longitude = #{longitude,jdbcType=DECIMAL},
            </if>
            <if test="latitude != null">
                latitude = #{latitude,jdbcType=VARCHAR},
            </if>
            <if test="isCustom != null">
                is_custom = #{isCustom,jdbcType=TINYINT},
            </if>
            <if test="isDelete != null">
                is_delete = #{isDelete,jdbcType=TINYINT},
            </if>
            <if test="createId != null">
                create_id = #{createId,jdbcType=BIGINT},
            </if>
            <if test="createTime != null">
                create_time = #{createTime,jdbcType=TIMESTAMP},
            </if>
            <if test="updateId != null">
                update_id = #{updateId,jdbcType=BIGINT},
            </if>
            <if test="updateTime != null">
                update_time = #{updateTime,jdbcType=TIMESTAMP},
            </if>
        </set>
        where id = #{id,jdbcType=BIGINT}
    </update>

</mapper>

PatrolElementMessageConverter解析器

将PatrolElementInforDto实体解析为PatrolElement实体

package com.ds.travel.biz.pojo.assets.converter;

import com.ds.travel.biz.pojo.patrol.PatrolElement;
import com.ds.travel.biz.pojo.patrol.dto.PatrolElementDto;
import com.ds.travel.biz.pojo.patrol.dto.PatrolElementInforDto;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;

@Mapper
public interface PatrolElementMessageConverter {

    PatrolElementMessageConverter INSTANCE = Mappers.getMapper(PatrolElementMessageConverter.class);
    /**
     * 新增dto转地里实体dto
     */
//    PatrolElementDto otDtoToDo (PatrolElementMessageDto data);
    /**
     * @Author zx
     * 功能概述:新增地里dto解析为PatrolElementDto
     * @Date 2022/1/6 20:56
     * @return com.ds.travel.biz.pojo.patrol.dto.PatrolElement
     **/
    @Mappings(value = {
            @Mapping(source = "id",target = "id"),
            @Mapping(source = "elementName",target = "elementName"),
            @Mapping(source = "typeId",target = "typeId"),
            @Mapping(source = "address",target = "address"),
            @Mapping(source = "isGenerate",target = "isGenerate"),
            @Mapping(source = "rule",target = "ruleId")
    })
    PatrolElement toCompanyDto (PatrolElementInforDto dto);

}

数据库实体视图vo类
package com.ds.travel.biz.pojo.assets.vo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import lombok.Data;
import java.sql.*;

/**
 * @Auther: zx
 * @Date: 2022/1/7 13:15
 * @Description: 地理要素vo
 */
@Data
public class PatrolElementVo {
    /**
     * 自增组件
     */
    private Long id;

    /**
     * 地理要素名称
     */
    private String elementName;

    /**
     * 类型ID对应要素类型名
     */
    private String typeName;

    /**
     * 是否需要生成任务(0 否,1 是)
     */
    private Object isGenerate;

    /**
     * 地址
     */
    private String address;
    /**
     * 判断是否自定义规则(0 未启用,1 已启用)
     */
    private Object isCustom;
    /**
     * 规则ID对应任务规则名
     */
    private String ruleName;
    /**
     * 状态(0 未启用,1 已启用)
     */
    private Object status ;

}

查看实体视图vo类
package com.ds.travel.biz.pojo.patrol.vo;

import lombok.Data;
import java.sql.*;


/**
 * @Auther: zx
 * @Date: 2022/1/8 16:10
 * @Description: TODO
 */
@Data
public class PatrolElementCheckVo {
    /**
     * 自增组件
     */
    private Long id;

    /**
     * 地理要素名称
     */
    private String elementName;

    /**
     * 要素类型名
     */
    private String typeName;

    /**
     * 是否需要生成任务(0 否,1 是)
     */
    private Object isGenerate;

    /**
     * 地址
     */
    private String address;

    /**
     * 任务规则名
     */
    private String ruleName;

    /**
     * 状态(0 未启用,1 已启用)
     */
    private Object status;

    /**
     * 经度
     */
    private Object longitude;

    /**
     * 纬度
     */
    private String latitude;

    /**
     * 是否自定义(0 否,1 是)
     */
    private Object isCustom;

    /**
     * 是否删除(0 否,1 是)
     */
    private Object isDelete;

    /**
     * 创建人
     */
    private Long createId;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 更新人
     */
    private Long updateId;

    /**
     * 更新时间
     */
    private Date updateTime;
}

Excel文件导入监听器
package com.ds.travel.biz.patrol.listener;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.exception.ExcelAnalysisStopException;
import com.alibaba.excel.exception.ExcelDataConvertException;
import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.excel.util.ListUtils;
import com.alibaba.fastjson.JSON;
import com.ds.travel.biz.patrol.service.PatrolElementService;
import com.ds.travel.biz.pojo.patrol.dto.PatrolElementDto;
import com.ds.travel.biz.pojo.patrol.dto.PatrolElementExcelDto;
import com.jt.common.core.util.Constants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.List;
import java.util.regex.Pattern;

/**
 * @Auther: zx
 * @Date: 2022/1/7 21:27
 * @Description: TODO
 */
public class PatrolElementListener implements ReadListener<PatrolElementExcelDto> {

//    private final PatrolElementService patrolElementService;

    /**
     * 每隔5条存储数据库,实际使用中可以10条,然后清理list ,方便内存回收
     */
    private static final int BATCH_COUNT = 10;
    /**
     * 缓存的数据
     */
    private List<PatrolElementDto> patrolElementDtos = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
    /**
    * PatrolElementService,存储PatrolElementExcelDto对象。
    */
    private PatrolElementService patrolElementService;
    /**
     * 如果使用了spring,请使用这个构造方法。每次创建Listener的时候需要把spring管理的类传进来
     */
    public PatrolElementListener (PatrolElementService patrolElementService) {
        this.patrolElementService = patrolElementService;
    }
    /**
     * 这个每一条数据解析都会来调用
     *
     * @param data    one row value. Is is same as {@link AnalysisContext#readRowHolder()}
     * @param context
     */
    @Override
    public void invoke(PatrolElementExcelDto data, AnalysisContext context) throws ArithmeticException{
        System.out.println("解析到一条数据:"+JSON.toJSONString(data));
//        log.info("解析到一条数据:{}", JSON.toJSONString(data));

        patrolElementDtos.add(mapping(data));
        // 达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM
        if (patrolElementDtos.size() >= BATCH_COUNT) {
//            保存数据库
            saveData();
            // 存储完成清理 list
            patrolElementDtos = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
        }
    }
    /**
     * 所有数据解析完成了 都会来调用
     *
     * @param context
     */
    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        // 这里也要保存数据,确保最后遗留的数据也存储到数据库
        saveData();
        System.out.println("所有数据解析完成!");
    }
    /**
     * 加上存储数据库
     */
    private void saveData() {
        System.out.println("开始存储数据库!"+ patrolElementDtos.size());
        patrolElementService.saveExcel(patrolElementDtos);
        System.out.println("存储数据库成功!");
    }
    /**
     * PatrolElementExcelDto转换为PatrolElementDto数据
     * @return
     */
    public PatrolElementDto mapping(PatrolElementExcelDto patrolElementExcelDto){
        PatrolElementDto patrolElementDto = new PatrolElementDto();
        patrolElementDto.setElementName(patrolElementExcelDto.getElementName());
//        上级要素类型
        patrolElementService.UpTypeId(patrolElementExcelDto);
        patrolElementDto.setTypeId(patrolElementService.selectTypeId(patrolElementExcelDto.getTypeName()));
//        生成任务
        if("是".equals(patrolElementExcelDto.getGenerate())){
//            生成任务
            patrolElementDto.setIsGenerate(Constants.COMMON_ONE);
            if ("自定义规则".equals(patrolElementExcelDto.getRuleName())){
//                自定义规则
                patrolElementDto.setRuleId(Long.parseLong(Constants.COMMON_ZERO.toString()));
                patrolElementDto.setIsCustom(Constants.COMMON_ONE);
            }else {
//                现有规则
                patrolElementDto.setRuleId(patrolElementService.selectRuleId(patrolElementExcelDto.getRuleName()));
                patrolElementDto.setIsCustom(Constants.COMMON_ZERO);
            }
        }else {
//            不生成任务
            if (patrolElementExcelDto.getRuleName() != null){
                throw new RuntimeException("是否生成任务与任务规则冲突:"+patrolElementExcelDto.getGenerate()+":"+patrolElementExcelDto.getRuleName());
            }
            patrolElementDto.setIsGenerate(Constants.COMMON_ZERO);
            patrolElementDto.setRuleId(Long.parseLong(Constants.COMMON_ZERO.toString()));
            patrolElementDto.setIsCustom(Constants.COMMON_ZERO);
        }
        patrolElementDto.setAddress(patrolElementExcelDto.getAddress());
//        范围是0?90,保留6位小数
        String regLatitude = "^(([1-8]\\d?)|([1-8]\\d))(\\.\\d{1,6})|90|0(\\.\\d{1,6})?$";
        if(Pattern.matches(regLatitude,patrolElementExcelDto.getLatitude())){
            patrolElementDto.setLatitude(patrolElementExcelDto.getLatitude());//纬度
        }else {
            throw new RuntimeException("纬度格式输入错误,范围是0?90,保留6位小数:"+patrolElementExcelDto.getLatitude());
        }
//        范围是0-180,保留6位小数
        String regLongitude = "^(([1-9]\\d?)|(1[0-7]\\d))(\\.\\d{1,6})|180|0(\\.\\d{1,6})?$";
        if(Pattern.matches(regLongitude,patrolElementExcelDto.getLongitude())){
            patrolElementDto.setLongitude(patrolElementExcelDto.getLongitude());//经度
        }else {
            throw new RuntimeException("经度格式输入错误,范围是0-180,保留6位小数:"+patrolElementExcelDto.getLongitude());
        }
        patrolElementDto.setStatus(Constants.COMMON_ONE);
        return patrolElementDto;
    }
}

Excel文件dto实体类
package com.ds.travel.biz.pojo.patrol.dto;

import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.NumberFormat;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import sun.rmi.runtime.Log;

import java.io.Serializable;
import java.security.PrivateKey;
import java.sql.Date;

/**
 * @Auther: zx
 * @Date: 2022/1/7 20:47
 * @Description: TODO
 */
@Getter
@Setter
@EqualsAndHashCode
public class PatrolElementExcelDto implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     *序号
     */
    @NumberFormat("序号")
    private String id;
    /**
     * 名称
     */
    @ExcelProperty("名称")
    private String elementName;
    /**
     * 上级要素类型
     */
    @ExcelProperty("上级要素类型")
    private String parentTypeName;
    /**
     * 要素类型
     */
    @ExcelProperty("要素类型")
    private String typeName;
    /**
     * 是否生成任务
     */
    @ExcelProperty("是否生成任务")
    private String generate;
    /**
     * 地址
     */
    @ExcelProperty("地址")
    private String address;
    /**
     * 纬度
     */
    @ExcelProperty("纬度")
    private String latitude;
    /**
     * 经度
     */
    @ExcelProperty("经度")
    private String longitude;
    /**
     * 任务规则
     */
    @ExcelProperty("任务规则")
    private String ruleName;
    /**
     * 状态(可忽略)
     */
    @NumberFormat("状态")
    private String status;
    /**
     * 是否删除(可忽略)
     */
    @NumberFormat("是否删除")
    private String isDelete;
    /**
     * 创建人(可忽略)
     */
    @NumberFormat("创建人")
    private String createId;
    /**
     * 创建时间(可忽略)
     */
    @NumberFormat("创建时间")
    private Date createTime;
    /**
     * 修改人(可忽略)
     */
    @NumberFormat("修改时间")
    private String updateId;
    /**
     * 创建时间(可忽略)
     */
    @NumberFormat("创建时间")
    private Date updateTime;

}

新增/更新实体dto类
package com.ds.travel.biz.pojo.patrol.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.sql.*;


/**
 * @Auther: zx
 * @Date: 2022/1/7 19:32
 * @Description: TODO
 */
@Data
public class PatrolElementInforDto {
    /**
     * 要素ID值
     */
    private Long id;
    /**
     * 编号
     */
    @NotNull(message = "编号不能为null")
    private String elementName;
    /**
     * 要素类型Id
     */
    @NotNull(message = "请选择要素类型")
    private Long typeId;

    /**
     * 位置(经纬度)
     */
    @NotNull(message = "定位错误")
    private String position;

    /**
     * 地址
     */
    private String address;

    /**
     * 是否生成任务(0 否,1 是)
     */
    @NotNull(message = "请选择是否生成任务")
    private Object isGenerate;

    /**
     * 选择的规则模式(0 现有规则,1 自定义规则)
     */
    private String rulePattern;

    /**
     * 具体规则 (现有对应id / 自定义规则)
     */
    private Long rule;


}

数据库实体
package com.ds.travel.biz.pojo.patrol.dto;


import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.sql.*;


/**
 * 功能描述: 地理要素信息表实体Dto类
 * @author author
 * @date 2022-1-5.
 */
@Data
public class PatrolElementDto {

    /**
     * 自增组件
     */
	private Long id;

    /**
     * 地理要素名称
     */
    @NotBlank(message = "请填写编号")
	private String elementName;

    /**
     * 类型ID
     */
    @NotEmpty(message = "请填写类型")
	private Long typeId;

    /**
     * 是否需要生成任务(0 否,1 是)
     */
    @NotEmpty(message = "请选择")
	private Object isGenerate;

    /**
     * 地址
     */

	private String address;

    /**
     * 规则ID
     */
    @NotEmpty(message = "请选择规则")
	private Long ruleId;

    /**
     * 状态(0 未启用,1 已启用)
     */
	private Object status;

    /**
     * 经度
     */
    @NotEmpty(message = "请定位位置")
	private Object longitude;

    /**
     * 纬度
     */
    @NotBlank(message = "请定位位置")
	private String latitude;

    /**
     * 是否自定义(0 否,1 是)
     */
	private Object isCustom;

    /**
     * 是否删除(0 否,1 是)
     */
	private Object isDelete;

    /**
     * 创建人
     */
	private Long createId;

    /**
     * 创建时间
     */
	private Date createTime;

    /**
     * 更新人
     */
	private Long updateId;

    /**
     * 更新时间
     */
	private Date updateTime;

}

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-01-11 23:51:22  更:2022-01-11 23:52:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:00:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码