管道基础大数据平台系统开发-【后端】-Server
1
13693261870
2022-12-04 9c4f97da16048451d3ffc0a428cfd9f8cb81a50c
1
已添加3个文件
已修改5个文件
488 ■■■■■ 文件已修改
data/db_fn.sql 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
data/db_tab.sql 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/config/InitConfig.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/controller/data/ProjectController.java 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/entity/bs/BsprojectEntity.java 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/extend/UpdateBatchMethod.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/helper/StringHelper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/mapper/bs/BsprojectMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
data/db_fn.sql
@@ -352,14 +352,24 @@
select * from lf.sys_meta_file a where metaid in (113,120,121,122);
alter sequence bd.dlg_agnp_gid_seq restart with 4000;
select max(gid) from  bd.dlg_agnp;
----------------------------------------------------------------------------------------------
select * from bd.dlg_25w_boul where gid<11; -- delete from bd.dlg_25w_boul where gid>10; alter sequence bd.dlg_25w_boul_gid_seq restart with 20;
select * from bd.dlg_25w_resa where gid<12; -- delete from bd.dlg_25w_resa where gid>11; alter sequence bd.dlg_25w_resa_gid_seq restart with 20;
select * from bd.dlg_agnp where gid<13;     -- delete from bd.dlg_agnp where gid>12;     alter sequence bd.dlg_agnp_gid_seq restart with 20;
select gb,name,classes,pinyin,pac,bsm,geom,eventid,dirid,depid,verid,createtime,createuser,updateuser,updatetime from bd.dlg_agnp
select * from lf.sys_user
select * from lf.sys_download where guid='5ce046cc05b186332775c03ac6792caf'
select * from bs.bs_project;
select * from bd.dlg_agnp order by gid desc;
insert into bd.dlg_agnp(gb,name) values('01','A01');
insert into bd.dlg_agnp(gb,name) values('02','A02');
data/db_tab.sql
@@ -964,6 +964,56 @@
comment on column lf.sys_domain.bak is '备注';
select * from lf.sys_domain order by dom_name,orderid;
----------------------------------------------------------------------------------------------------- 27.项目表
-- drop table if exists lf.sys_project;
create table if not exists lf.sys_project (
    id serial primary key,
    dirid integer default 0,
    depid integer default 0,
    projname varchar(200),
    projtype varchar(50),
    location varchar(200),
    province varchar(50),
    country varchar(50),
    corpname varchar(200),
    department varchar(200),
    conperiod varchar(20),
    contents varchar(500),
    projstate varchar(50),
    remarks varchar(250),
    belongsid varchar(100),
    datastatus varchar(10),
    create_user integer default 1,
    create_time timestamp(6) without time zone default now(),
    update_user integer,
    update_time timestamp(6) without time zone,
    geom geometry(Point, 4490)
); -- drop index index_sys_project_geom;
create index index_sys_project_geom on lf.sys_project using gist (geom);
comment on table lf.sys_project is '项目表';
comment on column lf.sys_project.id is '主键id';
comment on column lf.sys_project.dirid is '目录id';
comment on column lf.sys_project.depid is '单位id';
comment on column lf.sys_project.projname is '项目名称';
comment on column lf.sys_project.projtype is '项目类型';
comment on column lf.sys_project.location is '地理位置';
comment on column lf.sys_project.province is '所属省份';
comment on column lf.sys_project.country is '所属国家';
comment on column lf.sys_project.corpname is '建设单位名称';
comment on column lf.sys_project.department is '主管部门';
comment on column lf.sys_project.conperiod is '建设工期';
comment on column lf.sys_project.contents is '工程内容';
comment on column lf.sys_project.projstate is '项目状态';
comment on column lf.sys_project.remarks is '备注';
comment on column lf.sys_project.belongsid is '权限代码';
comment on column lf.sys_project.datastatus is '数据状态';
comment on column lf.sys_project.create_user is '创建人id';
comment on column lf.sys_project.create_time is '创建时间';
comment on column lf.sys_project.update_user is '更新人id';
comment on column lf.sys_project.update_time is '更新时间';
comment on column lf.sys_project.geom is '空间位置';
select * from lf.sys_project;
----------------------------------------------------------------------------------------------------- å…ƒæ•°æ®æµ‹è¯•表 *
-- drop table if exists md.md_zxcg;
create table md.md_zxcg(
src/main/java/com/lf/server/config/InitConfig.java
@@ -75,6 +75,7 @@
            //testBlacklist();
            //FloatServerController.test();
            //testReadExcel();
            //testBatchUpdate();
            //boolean f1 = ZipHelper.unzip("D:\\LF\\data\\resources.zip", "D:\\LF\\data\\unzip");
            //boolean f2 = ZipHelper.zip("D:\\LF\\data\\res.zip", "D:\\LF\\data\\unzip\\resources");
@@ -92,6 +93,23 @@
        }
    }
    private void testBatchUpdate() {
        DlgagnpEntity d1 = new DlgagnpEntity();
        d1.setGid(56);
        d1.setGb("10");
        d1.setName("a01");
        DlgagnpEntity d2 = new DlgagnpEntity();
        d2.setGid(57);
        d2.setGb("20");
        d2.setName("a02");
        List<DlgagnpEntity> list = new ArrayList<>();
        list.add(d1);
        list.add(d2);
        int rows = dlgagnpMapper.updateBatch(list);
    }
    private void testMybatisPlus() {
        String s1 = locateService.selectWktById(1);
src/main/java/com/lf/server/controller/data/ProjectController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,167 @@
package com.lf.server.controller.data;
import com.lf.server.annotation.SysLog;
import com.lf.server.controller.all.BaseQueryController;
import com.lf.server.entity.all.ResponseMsg;
import com.lf.server.entity.bs.BsprojectEntity;
import com.lf.server.entity.data.DirEntity;
import com.lf.server.entity.sys.DepEntity;
import com.lf.server.entity.sys.UserEntity;
import com.lf.server.helper.StringHelper;
import com.lf.server.helper.WebHelper;
import com.lf.server.mapper.bs.BsprojectMapper;
import com.lf.server.service.data.DirService;
import com.lf.server.service.sys.DepService;
import com.lf.server.service.sys.TokenService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * æ•°æ®æ£€ç´¢
 * @author WWW
 */
@Api(tags = "数据管理\\项目管理")
@RestController
@RequestMapping("/project")
public class ProjectController extends BaseQueryController {
    @Autowired
    DepService depService;
    @Autowired
    DirService dirService;
    @Autowired
    TokenService tokenService;
    @Autowired
    BsprojectMapper bsprojectMapper;
    @SysLog()
    @ApiOperation(value = "查询所有单位数据")
    @GetMapping(value = "/selectDepAll")
    public ResponseMsg<List<DepEntity>> selectDepAll() {
        try {
            List<DepEntity> list = depService.selectDepAll();
            return success(list);
        } catch (Exception ex) {
            return fail(ex.getMessage(), null);
        }
    }
    @SysLog()
    @ApiOperation(value = "查询所有目录数据")
    @GetMapping(value = "/selectDirAll")
    public ResponseMsg<List<DirEntity>> selectDirAll() {
        try {
            List<DirEntity> list = dirService.selectDirAll();
            return success(list);
        } catch (Exception ex) {
            return fail(ex.getMessage(), null);
        }
    }
    @SysLog()
    @ApiOperation(value = "根据目录ID查询")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "dirid", value = "目录ID", dataType = "int", paramType = "query", example = "0")
    })
    @GetMapping(value = "/selectByDirid")
    public ResponseMsg<BsprojectEntity> selectByDirid(int dirid) {
        try {
            Map<String, Object> map = new HashMap<>(1);
            map.put("dirid", dirid);
            List<BsprojectEntity> list = bsprojectMapper.selectByMap(map);
            if (null == list || list.isEmpty()) {
                return success(null);
            }
            return success(list.get(0));
        } catch (Exception ex) {
            return fail(ex.getMessage(), null);
        }
    }
    @SysLog()
    @ApiOperation(value = "删除一条")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "gid", value = "ID", dataType = "int", paramType = "query", example = "1")
    })
    @GetMapping(value = "/delete")
    public ResponseMsg<Integer> delete(int gid) {
        try {
            int rows = bsprojectMapper.deleteById(gid);
            return success(rows);
        } catch (Exception ex) {
            return fail(ex.getMessage(), -1);
        }
    }
    @SysLog()
    @ApiOperation(value = "插入一条")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "entity", value = "实体类", dataType = "DictEntity", paramType = "body")
    })
    @PostMapping(value = "/insert", produces = "application/json; charset=UTF-8")
    public ResponseMsg<Integer> insert(@RequestBody BsprojectEntity entity, HttpServletRequest req) {
        try {
            if (null == entity) {
                return fail("实体类不能为空", 0);
            }
            UserEntity ue = tokenService.getCurrentUser(req);
            entity.setCreateuser(ue.getId());
            entity.setCreatetime(WebHelper.getCurrentTimestamp());
            entity.setGeom(StringHelper.getGeomWKT(entity.getGeom()));
            List<BsprojectEntity> list = new ArrayList<>();
            list.add(entity);
            int rows = bsprojectMapper.insertBatch(list);
            return success(rows);
        } catch (Exception ex) {
            return fail(ex.getMessage(), -1);
        }
    }
    @SysLog()
    @ApiOperation(value = "更新一条")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "entity", value = "实体类", dataType = "DictEntity", paramType = "body")
    })
    @ResponseBody
    @PostMapping(value = "/update", produces = "application/json; charset=UTF-8")
    public ResponseMsg<Integer> update(@RequestBody BsprojectEntity entity, HttpServletRequest req) {
        try {
            if (null == entity) {
                return fail("实体类不能为空", 0);
            }
            UserEntity ue = tokenService.getCurrentUser(req);
            entity.setUpdateuser(ue.getId());
            entity.setUpdatetime(WebHelper.getCurrentTimestamp());
            entity.setGeom(StringHelper.getGeomWKT(entity.getGeom()));
            List<BsprojectEntity> list = new ArrayList<>();
            list.add(entity);
            int rows = bsprojectMapper.updateBatch(list);
            return success(rows);
        } catch (Exception ex) {
            return fail(ex.getMessage(), -1);
        }
    }
}
src/main/java/com/lf/server/entity/bs/BsprojectEntity.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,154 @@
package com.lf.server.entity.bs;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.lf.server.entity.all.BaseGeoEntity;
import lombok.*;
import java.math.BigDecimal;
import java.sql.Timestamp;
/**
 * Bsproject
 * @author WWW
 */
@Data
@AllArgsConstructor
@TableName("bs.bs_project")
@EqualsAndHashCode(callSuper = false)
public class BsprojectEntity extends BaseGeoEntity {
    private static final long serialVersionUID = 39899152256501448L;
    private String projname;
    private String projtype;
    private String location;
    private String province;
    private String country;
    private String corpname;
    private String department;
    private String conperiod;
    private String contents;
    private String projstate;
    private String remarks;
    private String belongsid;
    private String datastatus;
    public BsprojectEntity() {
    }
    public String getProjname() {
        return projname;
    }
    public void setProjname(String projname) {
        this.projname = projname;
    }
    public String getProjtype() {
        return projtype;
    }
    public void setProjtype(String projtype) {
        this.projtype = projtype;
    }
    public String getLocation() {
        return location;
    }
    public void setLocation(String location) {
        this.location = location;
    }
    public String getProvince() {
        return province;
    }
    public void setProvince(String province) {
        this.province = province;
    }
    public String getCountry() {
        return country;
    }
    public void setCountry(String country) {
        this.country = country;
    }
    public String getCorpname() {
        return corpname;
    }
    public void setCorpname(String corpname) {
        this.corpname = corpname;
    }
    public String getDepartment() {
        return department;
    }
    public void setDepartment(String department) {
        this.department = department;
    }
    public String getConperiod() {
        return conperiod;
    }
    public void setConperiod(String conperiod) {
        this.conperiod = conperiod;
    }
    public String getContents() {
        return contents;
    }
    public void setContents(String contents) {
        this.contents = contents;
    }
    public String getProjstate() {
        return projstate;
    }
    public void setProjstate(String projstate) {
        this.projstate = projstate;
    }
    public String getRemarks() {
        return remarks;
    }
    public void setRemarks(String remarks) {
        this.remarks = remarks;
    }
    public String getBelongsid() {
        return belongsid;
    }
    public void setBelongsid(String belongsid) {
        this.belongsid = belongsid;
    }
    public String getDatastatus() {
        return datastatus;
    }
    public void setDatastatus(String datastatus) {
        this.datastatus = datastatus;
    }
}
src/main/java/com/lf/server/extend/UpdateBatchMethod.java
@@ -1,9 +1,17 @@
package com.lf.server.extend;
import com.baomidou.mybatisplus.core.injector.AbstractMethod;
import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
import com.baomidou.mybatisplus.core.metadata.TableInfo;
import com.baomidou.mybatisplus.core.toolkit.sql.SqlScriptUtils;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.mapping.SqlSource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
 * æ‰¹é‡æ›´æ–°æ–¹æ³•
@@ -11,6 +19,8 @@
 */
@SuppressWarnings("ALL")
public class UpdateBatchMethod extends AbstractMethod {
    private static List<String> excludeFields = new ArrayList<>(Arrays.asList("objectid", "createuser", "createtime", "shape_leng", "shape_area"));
    /**
     * update user set name = "a", age = 17 where id = 1;
     * update user set name = "b", age = 18 where id = 2;
@@ -33,12 +43,51 @@
    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 setSql = sqlSet(tableInfo.isWithLogicDelete(), false, tableInfo, false, "item", "item.");
        String setSql = getSqlSet(tableInfo.isWithLogicDelete(), false, tableInfo, false, "item", "item.");
        String sqlResult = String.format(sql, tableInfo.getTableName(), setSql, tableInfo.getKeyColumn(), "item." + tableInfo.getKeyProperty(), additional);
        // update %s %s where %s=#{%s} %s
        // update tab set a=#{a} where gid=1
        SqlSource sqlSource = languageDriver.createSqlSource(configuration, sqlResult, modelClass);
        // ç¬¬ä¸‰ä¸ªå‚数必须和RootMapper的自定义方法名一致
        return this.addUpdateMappedStatement(mapperClass, modelClass, "updateBatch", sqlSource);
    }
    private String getSqlSet(boolean logic, boolean ew, TableInfo table, boolean judgeAliasNull, final String alias, final String prefix) {
        // String sqlScript = table.getAllSqlSet(logic, prefix);
        String sqlScript = getSqlSet(table);
        if (judgeAliasNull) {
            sqlScript = SqlScriptUtils.convertIf(sqlScript, String.format("%s != null", alias), true);
        }
        if (ew) {
            sqlScript = sqlScript + "\n";
            sqlScript = sqlScript + this.convertIfEwParam("ew.sqlSet", false);
        }
        sqlScript = SqlScriptUtils.convertSet(sqlScript);
        return sqlScript;
    }
    private String getSqlSet(TableInfo tableInfo) {
        StringBuilder sb = new StringBuilder();
        for (TableFieldInfo f : tableInfo.getFieldList()) {
            if (excludeFields.contains(f.getColumn())) {
                continue;
            }
            if ("geom".equals(f.getColumn())) {
                sb.append("<if test=\"item['geom'] != null\">geom=${item.geom},</if>\n");
                continue;
            }
            sb.append(String.format("<if test=\"item['%s'] != null\">%s=#{item.%s},</if>\n", f.getColumn(), f.getColumn(), f.getColumn()));
        }
        sb.deleteCharAt(sb.length() - 1);
        return sb.toString();
    }
}
src/main/java/com/lf/server/helper/StringHelper.java
@@ -129,6 +129,20 @@
    }
    /**
     * èŽ·å–å›¾å½¢çš„WKT字符串
     *
     * @param wkt
     * @return
     */
    public static String getGeomWKT(String wkt) {
        if (StringHelper.isEmpty(wkt)) {
            return "null";
        }
        return String.format("ST_GeomFromText('%s')", wkt);
    }
    /**
     * é¦–字母大写
     */
    public static String firstCharToUpperCase(String str) {
@@ -166,6 +180,7 @@
    /**
     * è¿žæŽ¥List集合
     *
     * @param list æ•´æ•°é›†åˆ
     * @param join è¿žæŽ¥å­—符
     * @return
@@ -183,7 +198,7 @@
        }
        if (sb.length() > 0 && sb.lastIndexOf(join) == sb.length() - 1) {
            sb.deleteCharAt(sb.length() -1 );
            sb.deleteCharAt(sb.length() - 1);
        }
        return sb.toString();
src/main/java/com/lf/server/mapper/bs/BsprojectMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package com.lf.server.mapper.bs;
import com.lf.server.entity.bs.BsprojectEntity;
import com.lf.server.mapper.all.GeomBaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
/**
 * Bsproject
 * @author WWW
 */
@Mapper
@Repository
public interface BsprojectMapper extends GeomBaseMapper<BsprojectEntity> {
}