管道基础大数据平台系统开发-【后端】-Server
1
13693261870
2022-11-20 c3adc095b714ed84c037759de5834fc946494cb7
1
已添加3个文件
已修改6个文件
249 ■■■■■ 文件已修改
data/db_tab.sql 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/config/MybatisPlusConfig.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/entity/md/MdGdcgEntity.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/entity/md/MdZxcgEntity.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/extend/CustomizedSqlInjector.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/extend/InsertBatchMethod.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/extend/UpdateBatchMethod.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/mapper/all/BasicMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/service/data/DataLoaderService.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
data/db_tab.sql
@@ -960,14 +960,13 @@
----------------------------------------------------------------------------------------------------- å…ƒæ•°æ®æµ‹è¯•表 *
-- drop table if exists md.md_zxcg;
create table md.md_zxcg(
  id serial primary key,
  gid serial primary key,
  zh varchar(50),
  zj float8,
  lc float8,
  x float8,
  y float8,
  z float8,
  pid integer,
  create_user integer,
  create_time timestamp(6) without time zone default now(),
  update_user integer,
@@ -979,7 +978,7 @@
-- drop table if exists md.md_gdcg;
create table md.md_gdcg(
  id serial primary key,
  gid serial primary key,
  bh varchar(100),
  gxdh varchar(100),
  ljdh varchar(100),
@@ -998,7 +997,6 @@
  gkpl varchar(100),
  dldy varchar(100),
  bz varchar(100),
  pid integer,
  create_user integer,
  create_time timestamp(6) without time zone default now(),
  update_user integer,
src/main/java/com/lf/server/config/MybatisPlusConfig.java
@@ -5,6 +5,7 @@
import com.baomidou.mybatisplus.core.MybatisConfiguration;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import com.lf.server.extend.CustomizedSqlInjector;
import org.apache.ibatis.type.JdbcType;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
@@ -43,4 +44,9 @@
            }
        };
    }
    @Bean
    public CustomizedSqlInjector customizedSqlInjector() {
        return new CustomizedSqlInjector();
    }
}
src/main/java/com/lf/server/entity/md/MdGdcgEntity.java
@@ -1,11 +1,16 @@
package com.lf.server.entity.md;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.lf.server.annotation.ExcelHead;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.sql.Timestamp;
/**
 * ç®¡é“成果表
@@ -16,7 +21,12 @@
@AllArgsConstructor
@TableName("md.md_gdcg")
@ExcelHead(headRows = 3,excludeSheets = "封面,目录")
public class MdGdcgEntity {
public class MdGdcgEntity implements Serializable {
    private static final long serialVersionUID = -221347663194025408L;
    @TableId(type = IdType.AUTO)
    private Integer gid;
    @ExcelProperty(index = 0)
    private String bh;
@@ -70,6 +80,14 @@
    @ExcelProperty(index = 17)
    private String bz;
    private Integer createUser;
    private Timestamp createTime;
    private Integer updateUser;
    private Timestamp updateTime;
    public String getBh() {
        return bh;
@@ -214,4 +232,44 @@
    public void setBz(String bz) {
        this.bz = bz;
    }
    public Integer getGid() {
        return gid;
    }
    public void setGid(Integer gid) {
        this.gid = gid;
    }
    public Integer getCreateUser() {
        return createUser;
    }
    public void setCreateUser(Integer createUser) {
        this.createUser = createUser;
    }
    public Timestamp getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Timestamp createTime) {
        this.createTime = createTime;
    }
    public Integer getUpdateUser() {
        return updateUser;
    }
    public void setUpdateUser(Integer updateUser) {
        this.updateUser = updateUser;
    }
    public Timestamp getUpdateTime() {
        return updateTime;
    }
    public void setUpdateTime(Timestamp updateTime) {
        this.updateTime = updateTime;
    }
}
src/main/java/com/lf/server/entity/md/MdZxcgEntity.java
@@ -45,8 +45,6 @@
    @ExcelProperty(index = 5)
    private Double z;
    private Integer pid;
    private Integer createUser;
    private Timestamp createTime;
@@ -54,14 +52,6 @@
    private Integer updateUser;
    private Timestamp updateTime;
    public Integer getGid() {
        return gid;
    }
    public void setGid(Integer gid) {
        this.gid = gid;
    }
    public String getZh() {
        return zh;
@@ -111,12 +101,12 @@
        this.z = z;
    }
    public Integer getPid() {
        return pid;
    public Integer getGid() {
        return gid;
    }
    public void setPid(Integer pid) {
        this.pid = pid;
    public void setGid(Integer gid) {
        this.gid = gid;
    }
    public Integer getCreateUser() {
src/main/java/com/lf/server/extend/CustomizedSqlInjector.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package com.lf.server.extend;
import com.baomidou.mybatisplus.core.injector.AbstractMethod;
import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;
import com.baomidou.mybatisplus.core.metadata.TableInfo;
import java.util.List;
/**
 * è‡ªå®šä¹‰æ–¹æ³•SQL注入器
 * @author WWW
 */
public class CustomizedSqlInjector extends DefaultSqlInjector {
    /**
     * å¦‚果只需增加方法,保留mybatis plus自带方法,
     * å¯ä»¥å…ˆèŽ·å–super.getMethodList(),再添加add
     */
    @Override
    public List<AbstractMethod> getMethodList(Class<?> mapperClass, TableInfo tableInfo) {
        List<AbstractMethod> methodList = super.getMethodList(mapperClass, tableInfo);
        methodList.add(new InsertBatchMethod());
        methodList.add(new UpdateBatchMethod());
        return methodList;
    }
}
src/main/java/com/lf/server/extend/InsertBatchMethod.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
package com.lf.server.extend;
import com.baomidou.mybatisplus.core.injector.AbstractMethod;
import com.baomidou.mybatisplus.core.metadata.TableInfo;
import org.apache.ibatis.executor.keygen.NoKeyGenerator;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.mapping.SqlSource;
/**
 * æ‰¹é‡æ’入方法
 * @author WWW
 */
@SuppressWarnings("ALL")
public class InsertBatchMethod extends AbstractMethod {
    /**
     * insert into user(id, name, age) values (1, "a", 17), (2, "b", 18);
     * <script>
     * insert into user(id, name, age) values
     * <foreach collection="list" item="item" index="index" open="(" separator="),(" close=")">
     * #{item.id}, #{item.name}, #{item.age}
     * </foreach>
     * </script>
     */
    @Override
    public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
        final String sql = "<script>insert into %s %s values %s</script>";
        final String fieldSql = prepareFieldSql(tableInfo);
        final String valueSql = prepareValuesSql(tableInfo);
        final String sqlResult = String.format(sql, tableInfo.getTableName(), fieldSql, valueSql);
        SqlSource sqlSource = languageDriver.createSqlSource(configuration, sqlResult, modelClass);
        // ç¬¬ä¸‰ä¸ªå‚数必须和RootMapper的自定义方法名一致
        return this.addInsertMappedStatement(mapperClass, modelClass, "insertBatch", sqlSource, new NoKeyGenerator(), null, null);
    }
    private String prepareFieldSql(TableInfo tableInfo) {
        StringBuilder fieldSql = new StringBuilder();
        fieldSql.append(tableInfo.getKeyColumn()).append(",");
        tableInfo.getFieldList().forEach(x -> {
            fieldSql.append(x.getColumn()).append(",");
        });
        fieldSql.delete(fieldSql.length() - 1, fieldSql.length());
        fieldSql.insert(0, "(");
        fieldSql.append(")");
        return fieldSql.toString();
    }
    private String prepareValuesSql(TableInfo tableInfo) {
        final StringBuilder valueSql = new StringBuilder();
        valueSql.append("<foreach collection=\"list\" item=\"item\" index=\"index\" open=\"(\" separator=\"),(\" close=\")\">");
        valueSql.append("#{item.").append(tableInfo.getKeyProperty()).append("},");
        tableInfo.getFieldList().forEach(x -> valueSql.append("#{item.").append(x.getProperty()).append("},"));
        valueSql.delete(valueSql.length() - 1, valueSql.length());
        valueSql.append("</foreach>");
        return valueSql.toString();
    }
}
src/main/java/com/lf/server/extend/UpdateBatchMethod.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
package com.lf.server.extend;
import com.baomidou.mybatisplus.core.injector.AbstractMethod;
import com.baomidou.mybatisplus.core.metadata.TableInfo;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.mapping.SqlSource;
/**
 * æ‰¹é‡æ›´æ–°æ–¹æ³•
 * @author WWW
 */
@SuppressWarnings("ALL")
public class UpdateBatchMethod extends AbstractMethod {
    /**
     * update user set name = "a", age = 17 where id = 1;
     * update user set name = "b", age = 18 where id = 2;
     * <script>
     * <foreach collection="list" item="item" separator=";">
     * update user
     * <set>
     * <if test="item.name != null and item.name != ''">
     * name = #{item.name,jdbcType=VARCHAR},
     * </if>
     * <if test="item.age != null">
     * age = #{item.age,jdbcType=INTEGER},
     * </if>
     * </set>
     * where id = #{item.id,jdbcType=INTEGER}
     * </foreach>
     * </script>
     */
    @Override
    public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
        String sql = "<script>\n<foreach collection=\"list\" item=\"item\" separator=\";\">\nupdate %s %s where %s=#{%s} %s\n</foreach>\n</script>";
        String additional = tableInfo.isWithVersion() ? tableInfo.getVersionFieldInfo().getVersionOli("item", "item.") : "" + tableInfo.getLogicDeleteSql(true, true);
        String setSql = sqlSet(tableInfo.isWithLogicDelete(), false, tableInfo, false, "item", "item.");
        String sqlResult = String.format(sql, tableInfo.getTableName(), setSql, tableInfo.getKeyColumn(), "item." + tableInfo.getKeyProperty(), additional);
        SqlSource sqlSource = languageDriver.createSqlSource(configuration, sqlResult, modelClass);
        // ç¬¬ä¸‰ä¸ªå‚数必须和RootMapper的自定义方法名一致
        return this.addUpdateMappedStatement(mapperClass, modelClass, "updateBatch", sqlSource);
    }
}
src/main/java/com/lf/server/mapper/all/BasicMapper.java
@@ -22,4 +22,22 @@
     */
    @Select("select ${field} from ${tab} where ${field} like #{value} order by ${field} limit 10")
    public List<String> selectFieldFuzzy(@Param("tab") String tab, @Param("field") String field, @Param("value") String value);
    /**
     * è‡ªå®šä¹‰æ‰¹é‡æ’å…¥
     * å¦‚果要自动填充,@Param(xx) xx参数名必须是 list/collection/array 3个的其中之一
     *
     * @param list
     * @return
     */
    public int insertBatch(@Param("list") List<T> list);
    /**
     * è‡ªå®šä¹‰æ‰¹é‡æ›´æ–°ï¼Œæ¡ä»¶ä¸ºä¸»é”®
     * å¦‚果要自动填充,@Param(xx) xx参数名必须是 list/collection/array 3个的其中之一
     *
     * @param list
     * @return
     */
    public int updateBatch(@Param("list") List<T> list);
}
src/main/java/com/lf/server/service/data/DataLoaderService.java
@@ -4,7 +4,6 @@
import com.lf.server.entity.ctrl.TabMapperEntity;
import com.lf.server.entity.data.MetaEntity;
import com.lf.server.entity.data.MetaFileEntity;
import com.lf.server.entity.md.MdZxcgEntity;
import com.lf.server.helper.ClassHelper;
import com.lf.server.helper.ExcelHelper;
import com.lf.server.helper.FileHelper;
@@ -203,7 +202,14 @@
            return 0;
        }
        return 0;
        // https://blog.csdn.net/LSL1618/article/details/109102424
        int rows = 0;
        for (int i = 0, c = list.size(); i < c; i++) {
            rows += baseMapper.insert(list.get(i));
        }
        return rows;
    }
    /**