1、完善一些代码
2、实现了片区管理
3、增加了apache的BeanUtils实现对象转Map
1 文件已重命名
21个文件已修改
14个文件已添加
1422 ■■■■■ 已修改文件
pipIrr-platform/pipIrr-common/pom.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mybatis/MyBatisConfig.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webUtil/QueryConditionVo.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webUtil/QueryResultVo.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/pipIrr-global.iml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/pom.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaBlockMapper.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaDistrictMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaRolePrivilegeMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaUserMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaBlock.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaDistrict.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaPrivilege.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaRole.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaRolePrivilege.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaUser.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaUserRole.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/TypeConversionEnum.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaBlockMapper.xml 179 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaDistrictMapper.xml 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-base/logs/pipIrrBase.log 250 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/block/BlockCtrl.java 191 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/block/BlockSv.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/block/QueryVo.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/block/说明.txt 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictCtrl.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictSv.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictVo.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictVoMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/说明.txt 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/QueryVo.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserSv.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web.iml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pom.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pom.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/文档/数据库服务器.txt 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/pom.xml
@@ -71,6 +71,7 @@
            <artifactId>springdoc-openapi-security</artifactId>
        </dependency>
        <!--mysql驱动-->
        <dependency>
            <groupId>com.mysql</groupId>
@@ -113,6 +114,7 @@
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
        </dependency>
    </dependencies>
    <build>
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mybatis/MyBatisConfig.java
@@ -1,8 +1,10 @@
package com.dy.common.mybatis;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import jakarta.annotation.PostConstruct;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.List;
@@ -13,6 +15,9 @@
    @Autowired
    private List<SqlSessionFactory> sqlSessionFactoryList;
    /**
     * ä¸¤ä¸ªæ‹¦æˆªå™¨ï¼Œè‡ªåŠ¨ç”ŸæˆID,异常时输出SQL
     */
    @PostConstruct
    public void addMyInterceptor() {
        for (SqlSessionFactory sqlSessionFactory : sqlSessionFactoryList) {
@@ -20,4 +25,13 @@
            sqlSessionFactory.getConfiguration().addInterceptor(new PrintExceptionSqlInterceptor());
        }
    }
    /**
     * mybatisPlus的分面插件
     * @return æ‹¦æˆªå™¨
     */
    @Bean
    public PaginationInnerInterceptor paginationInnerInterceptor(){
        return new PaginationInnerInterceptor() ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webUtil/QueryConditionVo.java
New file
@@ -0,0 +1,27 @@
package com.dy.common.webUtil;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotEmpty;
import lombok.*;
@Data
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "查询条件基类")
public class QueryConditionVo {
    /**
     * å½“前查询页
     */
    @Schema(description = "当前页", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "当前页不能为空") //不能为空也不能为null
    public Integer pageCurr ;
    /**
     * æ¯é¡µæ•°æ®æ¡æ•°
     */
    @Schema(description = "每页记录数", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "每页记录数不能为空") //不能为空也不能为null
    public Integer pageSize ;
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webUtil/QueryResultVo.java
New file
@@ -0,0 +1,91 @@
package com.dy.common.webUtil;
import com.alibaba.fastjson2.annotation.JSONField;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.Map;
@Data
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Schema(name = "查询结果基类")
public class QueryResultVo<T> {
    /**
     * æ¯é¡µæ˜¾ç¤ºçš„记录数
     */
    @Schema(description = "每页记录数")
    @Builder.Default
    public Integer pageSize = 0 ;
    /**
     * è®°å½•总数
     */
    @Schema(description = "记录总数")
    @Builder.Default
    public Long itemTotal = 0L;
    /**
     * å½“前页
     */
    @Schema(description = "当前页")
    @Builder.Default
    public Integer pageCurr = 0;
    /**
     * æ€»é¡µæ•°
     */
    @Schema(description = "总页数")
    @Builder.Default
    public Integer pageTotal = 0;
    @Schema(description = "数据")
    @Builder.Default
    public T content = null;
    /**
     * æŸ¥è¯¢å¼€å§‹è®°å½•
     */
    @Schema(hidden = true)
    @JSONField(serialize = false)
    public Integer queryStart ;
    /**
     * æŸ¥è¯¢æ•°é‡
     */
    @Schema(hidden = true)
    @JSONField(serialize = false)
    public Integer queryCount ;
    public void calculateAndSet(Long itemTotal, Map<String, Object> params) {
        this.itemTotal = itemTotal ;
        if(this.itemTotal == null){
            itemTotal = 0L ;
        }
        if (pageSize < 1) {
            pageSize = 1;
        }
        pageTotal = (int)Math.ceil((double)itemTotal/pageSize);
        if (pageTotal == 0) {
            pageTotal = 1;
        }
        if (pageCurr < 1) {
            pageCurr = 1;
        }
        if (pageCurr > pageTotal) {
            pageCurr = pageTotal;
        }
        //select * from table_name limit 5 ï¼Œ10;//从第6行开始,检索10行记录,即:检索记录行 6-15
        this.queryStart = (this.pageCurr - 1) * this.pageSize ;
        this.queryCount = this.pageSize ;
        params.put("queryStart", this.queryStart) ;
        params.put("queryCount", this.queryCount) ;
    }
}
pipIrr-platform/pipIrr-global/pipIrr-global.iml
@@ -33,7 +33,6 @@
    <orderEntry type="library" name="Maven: org.springframework:spring-jcl:6.0.11" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:3.1.3" level="project" />
    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:10.1.12" level="project" />
    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:10.1.12" level="project" />
    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:10.1.12" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-web:6.0.11" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-beans:6.0.11" level="project" />
@@ -43,6 +42,23 @@
    <orderEntry type="library" name="Maven: org.springframework:spring-aop:6.0.11" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-context:6.0.11" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-expression:6.0.11" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-validation:3.1.3" level="project" />
    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:10.1.12" level="project" />
    <orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:8.0.1.Final" level="project" />
    <orderEntry type="library" name="Maven: jakarta.validation:jakarta.validation-api:3.0.2" level="project" />
    <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.5.3.Final" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml:classmate:1.5.1" level="project" />
    <orderEntry type="library" name="Maven: org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0" level="project" />
    <orderEntry type="library" name="Maven: org.webjars:swagger-ui:5.2.0" level="project" />
    <orderEntry type="library" name="Maven: org.springdoc:springdoc-openapi-starter-webmvc-api:2.2.0" level="project" />
    <orderEntry type="library" name="Maven: org.springdoc:springdoc-openapi-starter-common:2.2.0" level="project" />
    <orderEntry type="library" name="Maven: io.swagger.core.v3:swagger-core-jakarta:2.2.15" level="project" />
    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.12.0" level="project" />
    <orderEntry type="library" name="Maven: io.swagger.core.v3:swagger-annotations-jakarta:2.2.15" level="project" />
    <orderEntry type="library" name="Maven: io.swagger.core.v3:swagger-models-jakarta:2.2.15" level="project" />
    <orderEntry type="library" name="Maven: jakarta.xml.bind:jakarta.xml.bind-api:4.0.0" level="project" />
    <orderEntry type="library" name="Maven: jakarta.activation:jakarta.activation-api:2.1.2" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.15.2" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: org.springframework.boot:spring-boot-devtools:3.1.3" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:3.1.3" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:3.1.3" level="project" />
pipIrr-platform/pipIrr-global/pom.xml
@@ -38,6 +38,20 @@
                </exclusion>
            </exclusions>
        </dependency>
        <!-- è¾“入参数据验证 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
        <!-- api在线文档  https://springdoc.org/#modules-->
        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-starter-webmvc-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaBlockMapper.java
New file
@@ -0,0 +1,76 @@
package com.dy.pipIrrGlobal.daoBa;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dy.pipIrrGlobal.pojoBa.BaBlock;
import com.dy.pipIrrGlobal.pojoBa.BaPrivilege;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Map;
@Mapper
public interface BaBlockMapper extends BaseMapper<BaPrivilege> {
    /**
     * delete by primary key
     * @param id primaryKey
     * @return deleteCount
     */
    int deleteByPrimaryKey(Long id);
    /**
     * é€»è¾‘删除
     * @param id primaryKey
     * @return update count
     */
    int deleteLogicById(Long id);
    /**
     * insert record to table
     * @param record the record
     * @return insert count
     */
    int insert(BaBlock record);
    /**
     * insert record to table selective
     * @param record the record
     * @return insert count
     */
    int insertSelective(BaBlock record);
    /**
     * select by primary key
     * @param id primary key
     * @return object by primary key
     */
    BaBlock selectByPrimaryKey(Long id);
    /**
     * æŸ¥è¯¢æ€»æ•°
     * @param params æŸ¥è¯¢æ¡ä»¶
     * @return æ€»æ•°
     */
    Long selectTotal(Map<?, ?> params) ;
    /**
     * åˆ†é¡µæŸ¥è¯¢ä¸€äº›
     * @param params æŸ¥è¯¢æ¡ä»¶
     * @return å®žä½“集合
     */
    List<BaBlock> selectSome(Map<?, ?> params) ;
    /**
     * update record selective
     * @param record the updated record
     * @return update count
     */
    int updateByPrimaryKeySelective(BaBlock record);
    /**
     * update record
     * @param record the updated record
     * @return update count
     */
    int updateByPrimaryKey(BaBlock record);
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaDistrictMapper.java
@@ -17,6 +17,13 @@
    int deleteByPrimaryKey(Long id);
    /**
     * é€»è¾‘删除
     * @param id primaryKey
     * @return update count
     */
    int deleteLogicById(Long id);
    /**
     * insert record to table
     * @param record the record
     * @return insert count
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaRolePrivilegeMapper.java
@@ -2,7 +2,6 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dy.pipIrrGlobal.pojoBa.BaRolePrivilege;
import com.dy.pipIrrGlobal.pojoBa.BaUserRole;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaUserMapper.java
@@ -1,9 +1,9 @@
package com.dy.pipIrrGlobal.daoBa;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dy.pipIrrGlobal.pojoBa.BaUser;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@Mapper
public interface BaUserMapper extends BaseMapper<BaUser> {
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaBlock.java
New file
@@ -0,0 +1,78 @@
package com.dy.pipIrrGlobal.pojoBa;
import com.alibaba.fastjson2.annotation.JSONField;
import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dy.common.mybatis.envm.Deleted;
import com.dy.common.po.BaseEntity;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotEmpty;
import lombok.*;
import io.swagger.v3.oas.annotations.media.Schema;
import org.hibernate.validator.constraints.Length;
/**
 * ç‰‡åŒºåˆ’实体
 */
@TableName(value="ba_district", autoResultMap = true)
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "片区实体")
public class BaBlock implements BaseEntity {
    public static final long serialVersionUID = 20231191728001L;
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    @TableId(type = IdType.INPUT)
    @Schema(description = "实体id", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Long id ;
    /**
     * ç‰‡åŒºåç§°
     */
    @Schema(description = "片区名称", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "片区名称不能为空") //不能为空也不能为null
    @Length(message = "片区名称小于{max}字", min = 1, max = 25)
    public String name;
    /**
     * è´Ÿè´£äºº
     */
    @Schema(description = "片区负责人", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @Length(message = "片区负责人姓名小于{max}字", min = 1, max = 25)
    public String header;
    /**
     * è´Ÿè´£äººç”µè¯
     */
    @Schema(description = "片区负责人手机号", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @Length(message = "片区负责人手机号必须{max}位数据", min = 11, max = 11)
    public String phone;
    /**
     * ç§æ¤é¢ç§¯
     */
    @Schema(description = "片区面积", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @Max(message = "片区面积不正确", value = 100000000)
    @Min(message = "片区面积不正确",value = 0)
    public Integer area;
    /**
     * ç”µå­åœ°å›¾åŒºåŸŸç€è‰²
     */
    @Schema(description = "区域着色", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @Length(message = "区域着色长度小于{max}字", min = 1, max = 6)
    public String color;
    /**
     * æ˜¯å¦åˆ é™¤: 0表示未删除  1表示删除.
     */
    @Schema(description = "片区删除标志", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Deleted deleted;
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaDistrict.java
@@ -6,32 +6,70 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dy.common.mybatis.envm.Deleted;
import com.dy.common.po.BaseEntity;
import com.dy.pipIrrGlobal.util.DistrictLevel;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.*;
import org.hibernate.validator.constraints.Length;
import java.util.List;
/**
 * è¡Œæ”¿åŒºåˆ’实体
 */
@TableName(value="ba_district", autoResultMap = true)
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "行政区划实体")
public class BaDistrict implements BaseEntity {
    public static final long serialVersionUID = 202311081046001L;
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    @TableId(type = IdType.INPUT)
    @Schema(description = "实体id", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Long id ;
    public Long supperId;//上级行政区ID
    /**
     * ä¸Šçº§è¡Œä¸‹åŒºID
     */
    @Schema(description = "上级实体id", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Long supperId;
    /**
     * è¡Œæ”¿åŒºåç§°
     */
    @Schema(description = "行政区名称", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "行政区名称不能为空") //不能为空也不能为null
    @Length(message = "行政区名称小于{max}字", min = 1, max = 25)
    public String name;
    /**
     * è¡Œæ”¿åŒºçº§åˆ«
     */
    @Schema(description = "行政区级别", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "行政区级别不能为空") //不能为空也不能为null
    @Max(message = "行政区级别不正确", value = 10)
    @Min(message = "行政区级别不正确",value = 0)
    public DistrictLevel level;
    /**
     * æ˜¯å¦åˆ é™¤: 0表示未删除  1表示删除.
     */
    @Schema(description = "行政区删除标志", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Deleted deleted;
    /**
     * ä¸‹çº§è¡Œæ”¿åŒºé›†åˆ
     */
    @TableField(exist = false)
    public List<BaDistrict> subDistricts ;
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaPrivilege.java
@@ -8,6 +8,9 @@
import com.dy.common.po.BaseEntity;
import lombok.*;
/**
 * æƒé™å®žä½“
 */
@TableName(value="ba_privilege", autoResultMap = true)
@Data
@Builder
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaRole.java
@@ -10,6 +10,9 @@
import com.dy.common.po.BaseEntity;
import lombok.*;
/**
 * è§’色实体
 */
@TableName(value="ba_role", autoResultMap = true)
@Data
@Builder
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaRolePrivilege.java
@@ -6,7 +6,9 @@
import com.baomidou.mybatisplus.annotation.TableName;
import com.dy.common.po.BaseEntity;
import lombok.*;
/**
 * è§’色与权限关系实体
 */
@TableName(value="ba_role_privilege", autoResultMap = true)
@Data
@Builder
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaUser.java
@@ -12,6 +12,8 @@
/**
 * ç”¨æˆ·å®žä½“
 *
 * TableName(value = â€œa”, autoResultMap = true)
 * autoResultMap参数为true时,表明个别字段在查询处理的时候自动转换为对象,
 * åªé€‚合设置了TypeHandler、jdbcTyped的情况。autoResultMap è‡ªåŠ¨æ˜ å°„ï¼Œ
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaUserRole.java
@@ -7,6 +7,9 @@
import com.dy.common.po.BaseEntity;
import lombok.*;
/**
 * ç”¨æˆ·ä¸Žè§’色关系实体
 */
@TableName(value="ba_user_role", autoResultMap = true)
@Data
@Builder
@@ -19,10 +22,10 @@
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    @TableField(value = "userId")
    private Long userId;
    public Long userId;
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    @TableField(value = "roleId")
    private Long roleId;
    public Long roleId;
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/TypeConversionEnum.java
File was renamed from pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/TypeConversionDistrict.java
@@ -1,5 +1,6 @@
package com.dy.pipIrrGlobal.util;
import com.dy.common.mybatis.envm.Deleted;
import org.mapstruct.Named;
import org.springframework.stereotype.Component;
import java.util.Objects;
@@ -9,7 +10,7 @@
 */
@Component
@SuppressWarnings("")
public class TypeConversionDistrict {
public class TypeConversionEnum {
    /**
     * @param obj å‚æ•°
     * @return è½¬æ¢æˆçš„对象
@@ -35,4 +36,25 @@
            return rObj ;
        }
    }
    /**
     * @param obj å‚æ•°
     * @return è½¬æ¢æˆçš„对象
     */
    @Named("deletedByteToObj")
    public Deleted converseDeleted(Object obj) {
        if (Objects.isNull(obj)) {
            return null;
        }else{
            byte sourceObj = (obj instanceof Byte?(Byte)obj: Deleted.NO.code);
            Deleted rObj ;
            if(sourceObj == Deleted.NO.code){
                rObj = Deleted.NO ;
            }else if(sourceObj == Deleted.YES.code){
                rObj = Deleted.YES ;
            }else{
                rObj = Deleted.NO ;
            }
            return rObj ;
        }
    }
}
pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaBlockMapper.xml
New file
@@ -0,0 +1,179 @@
<?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.dy.pipIrrGlobal.daoBa.BaBlockMapper">
  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoBa.BaBlock">
    <!--@mbg.generated-->
    <!--@Table ba_block-->
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="name" jdbcType="VARCHAR" property="name" />
    <result column="header" jdbcType="VARCHAR" property="header" />
    <result column="phone" jdbcType="VARCHAR" property="phone" />
    <result column="area" jdbcType="INTEGER" property="area" />
    <result column="color" jdbcType="VARCHAR" property="color" />
    <result property="deleted" column="deleted" typeHandler="com.dy.common.mybatis.envm.EnumCodeTypeHandler" javaType="com.dy.common.mybatis.envm.Deleted"/>
  </resultMap>
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
    id, `name`, `header`, phone, area, color,deleted
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    <!--@mbg.generated-->
    select
    <include refid="Base_Column_List" />
    from ba_block
    where id = #{id,jdbcType=BIGINT}
  </select>
  <select id="selectTotal" parameterType="java.lang.Long" resultType="java.lang.Long">
    <!--@mbg.generated-->
    select
    count(*)
    from ba_block
    <trim prefix="where ">
      <if test="name != null">
        name like '%#{name,jdbcType=VARCHAR}%' and
      </if>
      <if test="header != null">
        header = '#{header,jdbcType=VARCHAR}' and
      </if>
      <if test="phone != null">
        phone = '#{phone,jdbcType=VARCHAR}' and
      </if>
      <if test="area != null">
        area = #{area,jdbcType=INTEGER}
      </if>
    </trim>
  </select>
  <select id="selectSome" parameterType="java.util.Map" resultMap="BaseResultMap">
    <!--@mbg.generated-->
    select
    <include refid="Base_Column_List" />
    from ba_block
    <trim prefix="where ">
      <if test="name != null">
        name like '%#{name,jdbcType=VARCHAR}%' and
      </if>
      <if test="header != null">
        header = '#{header,jdbcType=VARCHAR}' and
      </if>
      <if test="phone != null">
        phone = '#{phone,jdbcType=VARCHAR}' and
      </if>
      <if test="area != null">
        area = #{area,jdbcType=INTEGER}
      </if>
    </trim>
    <trim prefix="limit " >
      <if test="queryStart != null and queryCount != null">
        #{queryStart}, #{queryCount}
      </if>
    </trim>
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
    <!--@mbg.generated-->
    delete from ba_block
    where id = #{id,jdbcType=BIGINT}
  </delete>
  <delete id="deleteLogicById" parameterType="java.lang.Long">
    <!--@mbg.generated-->
    update ba_block set deleted = 1
    where id = #{id,jdbcType=BIGINT}
  </delete>
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoBa.BaBlock">
    <!--@mbg.generated-->
    insert into ba_block (id, `name`, `header`, phone, area, color, deleted)
    values (#{id,jdbcType=BIGINT},
            #{name,jdbcType=VARCHAR},
            #{header,jdbcType=VARCHAR},
            #{phone,jdbcType=VARCHAR},
            #{area,jdbcType=INTEGER},
            #{color,jdbcType=VARCHAR},
            #{deleted,jdbcType=TINYINT})
  </insert>
  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoBa.BaBlock">
    <!--@mbg.generated-->
    insert into ba_block
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">
        id,
      </if>
      <if test="name != null">
        `name`,
      </if>
      <if test="header != null">
        `header`,
      </if>
      <if test="phone != null">
        phone,
      </if>
      <if test="area != null">
        area,
      </if>
      <if test="color != null">
        color,
      </if>
     <if test="deleted != null">
       deleted,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="id != null">
        #{id,jdbcType=BIGINT},
      </if>
      <if test="name != null">
        #{name,jdbcType=VARCHAR},
      </if>
      <if test="header != null">
        #{header,jdbcType=VARCHAR},
      </if>
      <if test="phone != null">
        #{phone,jdbcType=VARCHAR},
      </if>
      <if test="area != null">
        #{area,jdbcType=INTEGER},
      </if>
      <if test="color != null">
        #{color,jdbcType=VARCHAR},
      </if>
      <if test="deleted != null">
        #{deleted,jdbcType=TINYINT},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoBa.BaBlock">
    <!--@mbg.generated-->
    update ba_block
    <set>
      <if test="name != null">
        `name` = #{name,jdbcType=VARCHAR},
      </if>
      <if test="header != null">
        `header` = #{header,jdbcType=VARCHAR},
      </if>
      <if test="phone != null">
        phone = #{phone,jdbcType=VARCHAR},
      </if>
      <if test="area != null">
        area = #{area,jdbcType=INTEGER},
      </if>
      <if test="color != null">
        color = #{color,jdbcType=VARCHAR},
      </if>
      <if test="deleted != null">
        color = #{deleted,jdbcType=TINYINT},
      </if>
    </set>
    where id = #{id,jdbcType=BIGINT}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoBa.BaBlock">
    <!--@mbg.generated-->
    update ba_block
    set `name` = #{name,jdbcType=VARCHAR},
      `header` = #{header,jdbcType=VARCHAR},
      phone = #{phone,jdbcType=VARCHAR},
      area = #{area,jdbcType=INTEGER},
      color = #{color,jdbcType=VARCHAR},
      deleted = #{deleted,jdbcType=TINYINT}
    where id = #{id,jdbcType=BIGINT}
  </update>
</mapper>
pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaDistrictMapper.xml
@@ -8,10 +8,11 @@
    <id column="supperId" jdbcType="BIGINT" property="supperId" />
    <result column="name" jdbcType="VARCHAR" property="name" />
    <result property="level" column="level" typeHandler="com.dy.common.mybatis.envm.EnumCodeTypeHandler" javaType="com.dy.pipIrrGlobal.util.DistrictLevel"/>
    <result property="deleted" column="deleted" typeHandler="com.dy.common.mybatis.envm.EnumCodeTypeHandler" javaType="com.dy.common.mybatis.envm.Deleted"/>
  </resultMap>
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
    id, supperId, `name`, `level`
    id, supperId, `name`, `level`, deleted
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    <!--@mbg.generated-->
@@ -39,10 +40,20 @@
    delete from ba_district
    where id = #{id,jdbcType=BIGINT}
  </delete>
  <delete id="deleteLogicById" parameterType="java.lang.Long">
    <!--@mbg.generated-->
    update ba_district set deleted = 1
    where id = #{id,jdbcType=BIGINT}
  </delete>
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoBa.BaDistrict">
    <!--@mbg.generated-->
    insert into ba_district (id, supperId, `name`, `level`)
    values (#{id,jdbcType=BIGINT}, #{supperId,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{level,jdbcType=TINYINT})
    insert into ba_district (id, supperId, `name`, `level`, deleted)
    values (#{id,jdbcType=BIGINT},
            #{supperId,jdbcType=BIGINT},
            #{name,jdbcType=VARCHAR},
            #{level,jdbcType=TINYINT},
            #{deleted,jdbcType=TINYINT}
    )
  </insert>
  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoBa.BaDistrict">
    <!--@mbg.generated-->
@@ -60,6 +71,9 @@
      <if test="level != null">
        `level`,
      </if>
      <if test="deleted != null">
        deleted,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="id != null">
@@ -73,6 +87,9 @@
      </if>
      <if test="level != null">
        #{level,jdbcType=TINYINT},
      </if>
      <if test="deleted != null">
        #{deleted,jdbcType=TINYINT},
      </if>
    </trim>
  </insert>
@@ -89,6 +106,9 @@
      <if test="level != null">
        `level` = #{level,jdbcType=TINYINT},
      </if>
      <if test="deleted != null">
        deleted = #{deleted,jdbcType=TINYINT},
      </if>
    </set>
    where id = #{id,jdbcType=BIGINT}
  </update>
@@ -97,7 +117,8 @@
    update ba_district
    set supperId = #{supperId,jdbcType=BIGINT},
        `name` = #{name,jdbcType=VARCHAR},
        `level` = #{level,jdbcType=TINYINT}
        `level` = #{level,jdbcType=TINYINT},
        deleted = #{deleted,jdbcType=TINYINT}
    where id = #{id,jdbcType=BIGINT}
  </update>
</mapper>
pipIrr-platform/pipIrr-web/pipIrr-web-base/logs/pipIrrBase.log
New file
@@ -0,0 +1,250 @@
2023-11-11 20:47:34,491:ERROR main (org.springframework.boot.SpringApplication.reportFailure:824) - Application run failed
com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Class must not be null
    at com.baomidou.mybatisplus.core.toolkit.ExceptionUtils.mpe(ExceptionUtils.java:49) ~[mybatis-plus-core-3.5.3.2.jar:3.5.3.2]
    at com.baomidou.mybatisplus.core.toolkit.Assert.isTrue(Assert.java:38) ~[mybatis-plus-core-3.5.3.2.jar:3.5.3.2]
    at com.baomidou.mybatisplus.core.toolkit.Assert.notNull(Assert.java:72) ~[mybatis-plus-core-3.5.3.2.jar:3.5.3.2]
    at com.baomidou.mybatisplus.core.toolkit.ClassUtils.getUserClass(ClassUtils.java:95) ~[mybatis-plus-core-3.5.3.2.jar:3.5.3.2]
    at com.github.yulichang.toolkit.TableHelper.get(TableHelper.java:45) ~[mybatis-plus-join-core-1.4.7.1.jar:?]
    at com.github.yulichang.extension.mapping.mapper.MPJTableInfoHelper.initTableInfo(MPJTableInfoHelper.java:73) ~[mybatis-plus-join-extension-1.4.7.1.jar:?]
    at com.github.yulichang.extension.mapping.config.MappingConfig.lambda$new$0(MappingConfig.java:17) ~[mybatis-plus-join-extension-1.4.7.1.jar:?]
    at java.util.ArrayList.forEach(ArrayList.java:1511) ~[?:?]
    at java.util.Collections$UnmodifiableCollection.forEach(Collections.java:1092) ~[?:?]
    at com.github.yulichang.extension.mapping.config.MappingConfig.<init>(MappingConfig.java:16) ~[mybatis-plus-join-extension-1.4.7.1.jar:?]
    at com.github.yulichang.autoconfigure.MybatisPlusJoinAutoConfiguration$MPJMappingConfig.onApplicationEvent(MybatisPlusJoinAutoConfiguration.java:132) ~[mybatis-plus-join-boot-starter-1.4.7.1.jar:?]
    at com.github.yulichang.autoconfigure.MybatisPlusJoinAutoConfiguration$MPJMappingConfig.onApplicationEvent(MybatisPlusJoinAutoConfiguration.java:125) ~[mybatis-plus-join-boot-starter-1.4.7.1.jar:?]
    at com.github.yulichang.autoconfigure.MybatisPlusJoinAutoConfiguration$MPJMappingConfig$$SpringCGLIB$$0.onApplicationEvent(<generated>) ~[mybatis-plus-join-boot-starter-1.4.7.1.jar:?]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) ~[spring-context-6.0.11.jar:6.0.11]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165) ~[spring-context-6.0.11.jar:6.0.11]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-6.0.11.jar:6.0.11]
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:437) ~[spring-context-6.0.11.jar:6.0.11]
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:370) ~[spring-context-6.0.11.jar:6.0.11]
    at org.springframework.boot.context.event.EventPublishingRunListener.ready(EventPublishingRunListener.java:109) ~[spring-boot-3.1.3.jar:3.1.3]
    at org.springframework.boot.SpringApplicationRunListeners.lambda$ready$6(SpringApplicationRunListeners.java:80) ~[spring-boot-3.1.3.jar:3.1.3]
    at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?]
    at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:118) ~[spring-boot-3.1.3.jar:3.1.3]
    at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:112) ~[spring-boot-3.1.3.jar:3.1.3]
    at org.springframework.boot.SpringApplicationRunListeners.ready(SpringApplicationRunListeners.java:80) ~[spring-boot-3.1.3.jar:3.1.3]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:331) ~[spring-boot-3.1.3.jar:3.1.3]
    at org.springframework.boot.test.context.SpringBootContextLoader.lambda$loadContext$3(SpringBootContextLoader.java:137) ~[spring-boot-test-3.1.3.jar:3.1.3]
    at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:58) [spring-core-6.0.11.jar:6.0.11]
    at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:46) [spring-core-6.0.11.jar:6.0.11]
    at org.springframework.boot.SpringApplication.withHook(SpringApplication.java:1406) [spring-boot-3.1.3.jar:3.1.3]
    at org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.run(SpringBootContextLoader.java:545) [spring-boot-test-3.1.3.jar:3.1.3]
    at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:137) [spring-boot-test-3.1.3.jar:3.1.3]
    at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:108) [spring-boot-test-3.1.3.jar:3.1.3]
    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:187) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:119) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:127) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:191) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:130) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:241) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:228) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289) [spring-test-6.0.11.jar:6.0.11]
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) [junit-4.13.2.jar:4.13.2]
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:247) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) [spring-test-6.0.11.jar:6.0.11]
    at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) [junit-4.13.2.jar:4.13.2]
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) [junit-4.13.2.jar:4.13.2]
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) [junit-4.13.2.jar:4.13.2]
    at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) [junit-4.13.2.jar:4.13.2]
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) [junit-4.13.2.jar:4.13.2]
    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) [spring-test-6.0.11.jar:6.0.11]
    at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) [junit-4.13.2.jar:4.13.2]
    at org.junit.runners.ParentRunner.run(ParentRunner.java:413) [junit-4.13.2.jar:4.13.2]
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191) [spring-test-6.0.11.jar:6.0.11]
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137) [junit-4.13.2.jar:4.13.2]
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) [junit-rt.jar:?]
    at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) [junit-rt.jar:?]
    at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:221) [junit-rt.jar:?]
    at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54) [junit-rt.jar:?]
2023-11-11 20:47:34,563:ERROR main (org.springframework.test.context.TestContextManager.prepareTestInstance:245) - Caught exception while allowing TestExecutionListener [org.springframework.test.context.web.ServletTestExecutionListener] to prepare test instance [com.dy.pipIrrBase.BaUserTest@6958d5d0]
java.lang.IllegalStateException: Failed to load ApplicationContext for [WebMergedContextConfiguration@78f4d15d testClass = com.dy.pipIrrBase.BaUserTest, locations = [], classes = [com.dy.pipIrrBase.PipIrrBaseApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceLocations = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@6754ef00, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@7561db12, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@1968a49c, org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@3b65e559, org.springframework.boot.test.context.SpringBootTestAnnotation@21b79f2a], resourceBasePath = "src/main/webapp", contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null]
    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:143) ~[spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:127) ~[spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:191) ~[spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:130) ~[spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:241) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:228) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289) [spring-test-6.0.11.jar:6.0.11]
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) [junit-4.13.2.jar:4.13.2]
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:247) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) [spring-test-6.0.11.jar:6.0.11]
    at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) [junit-4.13.2.jar:4.13.2]
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) [junit-4.13.2.jar:4.13.2]
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) [junit-4.13.2.jar:4.13.2]
    at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) [junit-4.13.2.jar:4.13.2]
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) [junit-4.13.2.jar:4.13.2]
    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) [spring-test-6.0.11.jar:6.0.11]
    at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) [junit-4.13.2.jar:4.13.2]
    at org.junit.runners.ParentRunner.run(ParentRunner.java:413) [junit-4.13.2.jar:4.13.2]
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191) [spring-test-6.0.11.jar:6.0.11]
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137) [junit-4.13.2.jar:4.13.2]
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) [junit-rt.jar:?]
    at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) [junit-rt.jar:?]
    at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:221) [junit-rt.jar:?]
    at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54) [junit-rt.jar:?]
Caused by: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Class must not be null
    at com.baomidou.mybatisplus.core.toolkit.ExceptionUtils.mpe(ExceptionUtils.java:49) ~[mybatis-plus-core-3.5.3.2.jar:3.5.3.2]
    at com.baomidou.mybatisplus.core.toolkit.Assert.isTrue(Assert.java:38) ~[mybatis-plus-core-3.5.3.2.jar:3.5.3.2]
    at com.baomidou.mybatisplus.core.toolkit.Assert.notNull(Assert.java:72) ~[mybatis-plus-core-3.5.3.2.jar:3.5.3.2]
    at com.baomidou.mybatisplus.core.toolkit.ClassUtils.getUserClass(ClassUtils.java:95) ~[mybatis-plus-core-3.5.3.2.jar:3.5.3.2]
    at com.github.yulichang.toolkit.TableHelper.get(TableHelper.java:45) ~[mybatis-plus-join-core-1.4.7.1.jar:?]
    at com.github.yulichang.extension.mapping.mapper.MPJTableInfoHelper.initTableInfo(MPJTableInfoHelper.java:73) ~[mybatis-plus-join-extension-1.4.7.1.jar:?]
    at com.github.yulichang.extension.mapping.config.MappingConfig.lambda$new$0(MappingConfig.java:17) ~[mybatis-plus-join-extension-1.4.7.1.jar:?]
    at java.util.ArrayList.forEach(ArrayList.java:1511) ~[?:?]
    at java.util.Collections$UnmodifiableCollection.forEach(Collections.java:1092) ~[?:?]
    at com.github.yulichang.extension.mapping.config.MappingConfig.<init>(MappingConfig.java:16) ~[mybatis-plus-join-extension-1.4.7.1.jar:?]
    at com.github.yulichang.autoconfigure.MybatisPlusJoinAutoConfiguration$MPJMappingConfig.onApplicationEvent(MybatisPlusJoinAutoConfiguration.java:132) ~[mybatis-plus-join-boot-starter-1.4.7.1.jar:?]
    at com.github.yulichang.autoconfigure.MybatisPlusJoinAutoConfiguration$MPJMappingConfig.onApplicationEvent(MybatisPlusJoinAutoConfiguration.java:125) ~[mybatis-plus-join-boot-starter-1.4.7.1.jar:?]
    at com.github.yulichang.autoconfigure.MybatisPlusJoinAutoConfiguration$MPJMappingConfig$$SpringCGLIB$$0.onApplicationEvent(<generated>) ~[mybatis-plus-join-boot-starter-1.4.7.1.jar:?]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) ~[spring-context-6.0.11.jar:6.0.11]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165) ~[spring-context-6.0.11.jar:6.0.11]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-6.0.11.jar:6.0.11]
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:437) ~[spring-context-6.0.11.jar:6.0.11]
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:370) ~[spring-context-6.0.11.jar:6.0.11]
    at org.springframework.boot.context.event.EventPublishingRunListener.ready(EventPublishingRunListener.java:109) ~[spring-boot-3.1.3.jar:3.1.3]
    at org.springframework.boot.SpringApplicationRunListeners.lambda$ready$6(SpringApplicationRunListeners.java:80) ~[spring-boot-3.1.3.jar:3.1.3]
    at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?]
    at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:118) ~[spring-boot-3.1.3.jar:3.1.3]
    at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:112) ~[spring-boot-3.1.3.jar:3.1.3]
    at org.springframework.boot.SpringApplicationRunListeners.ready(SpringApplicationRunListeners.java:80) ~[spring-boot-3.1.3.jar:3.1.3]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:331) ~[spring-boot-3.1.3.jar:3.1.3]
    at org.springframework.boot.test.context.SpringBootContextLoader.lambda$loadContext$3(SpringBootContextLoader.java:137) ~[spring-boot-test-3.1.3.jar:3.1.3]
    at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:58) ~[spring-core-6.0.11.jar:6.0.11]
    at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:46) ~[spring-core-6.0.11.jar:6.0.11]
    at org.springframework.boot.SpringApplication.withHook(SpringApplication.java:1406) ~[spring-boot-3.1.3.jar:3.1.3]
    at org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.run(SpringBootContextLoader.java:545) ~[spring-boot-test-3.1.3.jar:3.1.3]
    at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:137) ~[spring-boot-test-3.1.3.jar:3.1.3]
    at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:108) ~[spring-boot-test-3.1.3.jar:3.1.3]
    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:187) ~[spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:119) ~[spring-test-6.0.11.jar:6.0.11]
    ... 25 more
2023-11-11 20:48:16,317:ERROR main (org.springframework.boot.SpringApplication.reportFailure:824) - Application run failed
com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Class must not be null
    at com.baomidou.mybatisplus.core.toolkit.ExceptionUtils.mpe(ExceptionUtils.java:49) ~[mybatis-plus-core-3.5.3.2.jar:3.5.3.2]
    at com.baomidou.mybatisplus.core.toolkit.Assert.isTrue(Assert.java:38) ~[mybatis-plus-core-3.5.3.2.jar:3.5.3.2]
    at com.baomidou.mybatisplus.core.toolkit.Assert.notNull(Assert.java:72) ~[mybatis-plus-core-3.5.3.2.jar:3.5.3.2]
    at com.baomidou.mybatisplus.core.toolkit.ClassUtils.getUserClass(ClassUtils.java:95) ~[mybatis-plus-core-3.5.3.2.jar:3.5.3.2]
    at com.github.yulichang.toolkit.TableHelper.get(TableHelper.java:45) ~[mybatis-plus-join-core-1.4.7.1.jar:?]
    at com.github.yulichang.extension.mapping.mapper.MPJTableInfoHelper.initTableInfo(MPJTableInfoHelper.java:73) ~[mybatis-plus-join-extension-1.4.7.1.jar:?]
    at com.github.yulichang.extension.mapping.config.MappingConfig.lambda$new$0(MappingConfig.java:17) ~[mybatis-plus-join-extension-1.4.7.1.jar:?]
    at java.util.ArrayList.forEach(ArrayList.java:1511) ~[?:?]
    at java.util.Collections$UnmodifiableCollection.forEach(Collections.java:1092) ~[?:?]
    at com.github.yulichang.extension.mapping.config.MappingConfig.<init>(MappingConfig.java:16) ~[mybatis-plus-join-extension-1.4.7.1.jar:?]
    at com.github.yulichang.autoconfigure.MybatisPlusJoinAutoConfiguration$MPJMappingConfig.onApplicationEvent(MybatisPlusJoinAutoConfiguration.java:132) ~[mybatis-plus-join-boot-starter-1.4.7.1.jar:?]
    at com.github.yulichang.autoconfigure.MybatisPlusJoinAutoConfiguration$MPJMappingConfig.onApplicationEvent(MybatisPlusJoinAutoConfiguration.java:125) ~[mybatis-plus-join-boot-starter-1.4.7.1.jar:?]
    at com.github.yulichang.autoconfigure.MybatisPlusJoinAutoConfiguration$MPJMappingConfig$$SpringCGLIB$$0.onApplicationEvent(<generated>) ~[mybatis-plus-join-boot-starter-1.4.7.1.jar:?]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) ~[spring-context-6.0.11.jar:6.0.11]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165) ~[spring-context-6.0.11.jar:6.0.11]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-6.0.11.jar:6.0.11]
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:437) ~[spring-context-6.0.11.jar:6.0.11]
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:370) ~[spring-context-6.0.11.jar:6.0.11]
    at org.springframework.boot.context.event.EventPublishingRunListener.ready(EventPublishingRunListener.java:109) ~[spring-boot-3.1.3.jar:3.1.3]
    at org.springframework.boot.SpringApplicationRunListeners.lambda$ready$6(SpringApplicationRunListeners.java:80) ~[spring-boot-3.1.3.jar:3.1.3]
    at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?]
    at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:118) ~[spring-boot-3.1.3.jar:3.1.3]
    at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:112) ~[spring-boot-3.1.3.jar:3.1.3]
    at org.springframework.boot.SpringApplicationRunListeners.ready(SpringApplicationRunListeners.java:80) ~[spring-boot-3.1.3.jar:3.1.3]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:331) ~[spring-boot-3.1.3.jar:3.1.3]
    at org.springframework.boot.test.context.SpringBootContextLoader.lambda$loadContext$3(SpringBootContextLoader.java:137) ~[spring-boot-test-3.1.3.jar:3.1.3]
    at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:58) [spring-core-6.0.11.jar:6.0.11]
    at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:46) [spring-core-6.0.11.jar:6.0.11]
    at org.springframework.boot.SpringApplication.withHook(SpringApplication.java:1406) [spring-boot-3.1.3.jar:3.1.3]
    at org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.run(SpringBootContextLoader.java:545) [spring-boot-test-3.1.3.jar:3.1.3]
    at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:137) [spring-boot-test-3.1.3.jar:3.1.3]
    at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:108) [spring-boot-test-3.1.3.jar:3.1.3]
    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:187) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:119) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:127) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:191) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:130) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:241) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:228) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289) [spring-test-6.0.11.jar:6.0.11]
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) [junit-4.13.2.jar:4.13.2]
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:247) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) [spring-test-6.0.11.jar:6.0.11]
    at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) [junit-4.13.2.jar:4.13.2]
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) [junit-4.13.2.jar:4.13.2]
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) [junit-4.13.2.jar:4.13.2]
    at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) [junit-4.13.2.jar:4.13.2]
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) [junit-4.13.2.jar:4.13.2]
    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) [spring-test-6.0.11.jar:6.0.11]
    at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) [junit-4.13.2.jar:4.13.2]
    at org.junit.runners.ParentRunner.run(ParentRunner.java:413) [junit-4.13.2.jar:4.13.2]
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191) [spring-test-6.0.11.jar:6.0.11]
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137) [junit-4.13.2.jar:4.13.2]
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) [junit-rt.jar:?]
    at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) [junit-rt.jar:?]
    at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:221) [junit-rt.jar:?]
    at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54) [junit-rt.jar:?]
2023-11-11 20:48:16,336:ERROR main (org.springframework.test.context.TestContextManager.prepareTestInstance:245) - Caught exception while allowing TestExecutionListener [org.springframework.test.context.web.ServletTestExecutionListener] to prepare test instance [com.dy.pipIrrBase.BaUserTest@7169d668]
java.lang.IllegalStateException: Failed to load ApplicationContext for [WebMergedContextConfiguration@314c28dc testClass = com.dy.pipIrrBase.BaUserTest, locations = [], classes = [com.dy.pipIrrBase.PipIrrBaseApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceLocations = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@3a7704c, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@4acf72b6, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@54a3ab8f, org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@64b31700, org.springframework.boot.test.context.SpringBootTestAnnotation@cea03b4f], resourceBasePath = "src/main/webapp", contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null]
    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:143) ~[spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:127) ~[spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:191) ~[spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:130) ~[spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:241) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:228) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289) [spring-test-6.0.11.jar:6.0.11]
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) [junit-4.13.2.jar:4.13.2]
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:247) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) [spring-test-6.0.11.jar:6.0.11]
    at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) [junit-4.13.2.jar:4.13.2]
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) [junit-4.13.2.jar:4.13.2]
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) [junit-4.13.2.jar:4.13.2]
    at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) [junit-4.13.2.jar:4.13.2]
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) [junit-4.13.2.jar:4.13.2]
    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) [spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) [spring-test-6.0.11.jar:6.0.11]
    at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) [junit-4.13.2.jar:4.13.2]
    at org.junit.runners.ParentRunner.run(ParentRunner.java:413) [junit-4.13.2.jar:4.13.2]
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191) [spring-test-6.0.11.jar:6.0.11]
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137) [junit-4.13.2.jar:4.13.2]
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) [junit-rt.jar:?]
    at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) [junit-rt.jar:?]
    at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:221) [junit-rt.jar:?]
    at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54) [junit-rt.jar:?]
Caused by: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Class must not be null
    at com.baomidou.mybatisplus.core.toolkit.ExceptionUtils.mpe(ExceptionUtils.java:49) ~[mybatis-plus-core-3.5.3.2.jar:3.5.3.2]
    at com.baomidou.mybatisplus.core.toolkit.Assert.isTrue(Assert.java:38) ~[mybatis-plus-core-3.5.3.2.jar:3.5.3.2]
    at com.baomidou.mybatisplus.core.toolkit.Assert.notNull(Assert.java:72) ~[mybatis-plus-core-3.5.3.2.jar:3.5.3.2]
    at com.baomidou.mybatisplus.core.toolkit.ClassUtils.getUserClass(ClassUtils.java:95) ~[mybatis-plus-core-3.5.3.2.jar:3.5.3.2]
    at com.github.yulichang.toolkit.TableHelper.get(TableHelper.java:45) ~[mybatis-plus-join-core-1.4.7.1.jar:?]
    at com.github.yulichang.extension.mapping.mapper.MPJTableInfoHelper.initTableInfo(MPJTableInfoHelper.java:73) ~[mybatis-plus-join-extension-1.4.7.1.jar:?]
    at com.github.yulichang.extension.mapping.config.MappingConfig.lambda$new$0(MappingConfig.java:17) ~[mybatis-plus-join-extension-1.4.7.1.jar:?]
    at java.util.ArrayList.forEach(ArrayList.java:1511) ~[?:?]
    at java.util.Collections$UnmodifiableCollection.forEach(Collections.java:1092) ~[?:?]
    at com.github.yulichang.extension.mapping.config.MappingConfig.<init>(MappingConfig.java:16) ~[mybatis-plus-join-extension-1.4.7.1.jar:?]
    at com.github.yulichang.autoconfigure.MybatisPlusJoinAutoConfiguration$MPJMappingConfig.onApplicationEvent(MybatisPlusJoinAutoConfiguration.java:132) ~[mybatis-plus-join-boot-starter-1.4.7.1.jar:?]
    at com.github.yulichang.autoconfigure.MybatisPlusJoinAutoConfiguration$MPJMappingConfig.onApplicationEvent(MybatisPlusJoinAutoConfiguration.java:125) ~[mybatis-plus-join-boot-starter-1.4.7.1.jar:?]
    at com.github.yulichang.autoconfigure.MybatisPlusJoinAutoConfiguration$MPJMappingConfig$$SpringCGLIB$$0.onApplicationEvent(<generated>) ~[mybatis-plus-join-boot-starter-1.4.7.1.jar:?]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) ~[spring-context-6.0.11.jar:6.0.11]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165) ~[spring-context-6.0.11.jar:6.0.11]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-6.0.11.jar:6.0.11]
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:437) ~[spring-context-6.0.11.jar:6.0.11]
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:370) ~[spring-context-6.0.11.jar:6.0.11]
    at org.springframework.boot.context.event.EventPublishingRunListener.ready(EventPublishingRunListener.java:109) ~[spring-boot-3.1.3.jar:3.1.3]
    at org.springframework.boot.SpringApplicationRunListeners.lambda$ready$6(SpringApplicationRunListeners.java:80) ~[spring-boot-3.1.3.jar:3.1.3]
    at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?]
    at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:118) ~[spring-boot-3.1.3.jar:3.1.3]
    at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:112) ~[spring-boot-3.1.3.jar:3.1.3]
    at org.springframework.boot.SpringApplicationRunListeners.ready(SpringApplicationRunListeners.java:80) ~[spring-boot-3.1.3.jar:3.1.3]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:331) ~[spring-boot-3.1.3.jar:3.1.3]
    at org.springframework.boot.test.context.SpringBootContextLoader.lambda$loadContext$3(SpringBootContextLoader.java:137) ~[spring-boot-test-3.1.3.jar:3.1.3]
    at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:58) ~[spring-core-6.0.11.jar:6.0.11]
    at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:46) ~[spring-core-6.0.11.jar:6.0.11]
    at org.springframework.boot.SpringApplication.withHook(SpringApplication.java:1406) ~[spring-boot-3.1.3.jar:3.1.3]
    at org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.run(SpringBootContextLoader.java:545) ~[spring-boot-test-3.1.3.jar:3.1.3]
    at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:137) ~[spring-boot-test-3.1.3.jar:3.1.3]
    at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:108) ~[spring-boot-test-3.1.3.jar:3.1.3]
    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:187) ~[spring-test-6.0.11.jar:6.0.11]
    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:119) ~[spring-test-6.0.11.jar:6.0.11]
    ... 25 more
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/block/BlockCtrl.java
New file
@@ -0,0 +1,191 @@
package com.dy.pipIrrBase.block;
import com.dy.common.aop.SsoAop;
import com.dy.common.webUtil.BaseResponse;
import com.dy.common.webUtil.BaseResponseUtils;
import com.dy.common.webUtil.QueryResultVo;
import com.dy.common.webUtil.ResultCodeMsg;
import com.dy.pipIrrGlobal.pojoBa.BaBlock;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Objects;
@Slf4j
@Tag(name = "片区管理", description = "片区增删改查等操作")
@RestController
@RequestMapping(path="block")
@SuppressWarnings("unchecked")//java版本越高,对泛型约束越严,所以配置SuppressWarnings("unchecked")
public class BlockCtrl {
    private BlockSv sv ;
    @Autowired
    private void setSv(BlockSv sv){
        this.sv = sv ;
    }
    /**
     * å®¢æˆ·ç«¯è¯·æ±‚得到所有片区数据
     * @return æ‰€æœ‰ç‰‡åŒºæ•°æ®
     */
    @Operation(summary = "获得一页片区", description = "返回一页片区数据")
    @ApiResponses(value = {
            @ApiResponse(
                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
                    description = "返回一页片区数据(BaseResponse.content:QueryResultVo[{}])",
                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
                            schema = @Schema(implementation = BaBlock.class))}
            )
    })
    @PostMapping(path = "some")
    public BaseResponse<QueryResultVo<List<BaBlock>>> some(QueryVo vo){
        try {
            QueryResultVo<List<BaBlock>> res = this.sv.selectSome(vo) ;
            return BaseResponseUtils.buildSuccess(res);
        } catch (Exception e) {
            log.error("查询片区异常", e);
            return BaseResponseUtils.buildException(e.getMessage()) ;
        }
    }
    /**
     * å¾—到一个片区数据
     * @return ä¸€ä¸ªç‰‡åŒºæ•°æ®
     */
    @Operation(summary = "一个片区", description = "得到一个片区数据")
    @ApiResponses(value = {
            @ApiResponse(
                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
                    description = "返回一个片区数据(BaseResponse.content:{})",
                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
                            schema = @Schema(implementation = BaBlock.class))}
            )
    })
    @GetMapping(path = "one")
    public BaseResponse<BaBlock> one(@Parameter(description = "实体id", required = true) Long id){
        return BaseResponseUtils.buildSuccess(this.sv.selectById(id));
    }
    /**
     * ä¿å­˜ç‰‡åŒº
     * @param po ä¿å­˜ç‰‡åŒºform表单对象
     * @return æ˜¯å¦æˆåŠŸ
     */
    @Operation(summary = "保存片区", description = "提交片区数据(form表单),进行保存")
    @ApiResponses(value = {
            @ApiResponse(
                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
                    description = "操作结果:true:成功,false:失败(BaseResponse.content)",
                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
                            schema = @Schema(implementation = Boolean.class))}
            )
    })
    @PostMapping(path = "save", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    @SsoAop("-1")//@SsoAop(power = "-1")
    public BaseResponse<Boolean> save(@Parameter(description = "form表单数据", required = true) @Valid BaBlock po, @Parameter(hidden = true) BindingResult bindingResult){
        if(bindingResult != null && bindingResult.hasErrors()){
            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
        }
        po.id = null ;
        int count;
        try {
            count = this.sv.save(po);
        } catch (Exception e) {
            log.error("保存片区异常", e);
            return BaseResponseUtils.buildException(e.getMessage()) ;
        }
        if(count <= 0){
            return BaseResponseUtils.buildFail("数据库存储失败") ;
        }else{
            return BaseResponseUtils.buildSuccess(true) ;
        }
    }
    /**
     * ç¼–辑修改片区
     * @param po ä¿å­˜ç‰‡åŒºform表单对象
     * @return æ˜¯å¦æˆåŠŸ
     */
    @Operation(summary = "编辑修改片区", description = "提交片区数据(form表单),进行修改")
    @ApiResponses(value = {
            @ApiResponse(
                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
                    description = "操作结果:true:成功,false:失败(BaseResponse.content)",
                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
                            schema = @Schema(implementation = Boolean.class))}
            )
    })
    @PostMapping(path = "update", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    @SsoAop("-1")//@SsoAop(power = "-1")
    public BaseResponse<Boolean> update(@Parameter(description = "form表单数据", required = true) @Valid BaBlock po, @Parameter(hidden = true) BindingResult bindingResult){
        if(bindingResult != null && bindingResult.hasErrors()){
            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
        }
        if(po.id == null){
            return BaseResponseUtils.buildFail("无数据实体ID") ;
        }
        int count;
        try {
            count = this.sv.update(po);
        } catch (Exception e) {
            log.error("保存片区异常", e);
            return BaseResponseUtils.buildException(e.getMessage()) ;
        }
        if(count <= 0){
            return BaseResponseUtils.buildFail("数据库存储失败") ;
        }else{
            return BaseResponseUtils.buildSuccess(true) ;
        }
    }
    /**
     * åˆ é™¤ç‰‡åŒº
     * @param id ç‰‡åŒºID
     * @return æ˜¯å¦æˆåŠŸ
     */
    @Operation(summary = "删除片区", description = "提交片区ID,进行逻辑删除")
    @ApiResponses(value = {
            @ApiResponse(
                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
                    description = "操作结果:true:成功,false:失败(BaseResponse.content)",
                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
                            schema = @Schema(implementation = Boolean.class))}
            )
    })
    @GetMapping(path = "delete", consumes = MediaType.TEXT_PLAIN_VALUE)
    @SsoAop("-1")//@SsoAop(power = "-1")
    public BaseResponse<Boolean> delete(@Parameter(description = "实体id", required = true) Long id){
        if(id == null){
            return BaseResponseUtils.buildFail("id不能为空") ;
        }
        int count;
        try {
            count = this.sv.delete(id);
        } catch (Exception e) {
            log.error("保存片区异常", e);
            return BaseResponseUtils.buildException(e.getMessage()) ;
        }
        if(count <= 0){
            return BaseResponseUtils.buildFail("数据库存储失败") ;
        }else{
            return BaseResponseUtils.buildSuccess(true) ;
        }
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/block/BlockSv.java
New file
@@ -0,0 +1,83 @@
package com.dy.pipIrrBase.block;
import com.alibaba.fastjson2.JSON;
import com.dy.common.webUtil.QueryResultVo;
import com.dy.pipIrrGlobal.daoBa.BaBlockMapper;
import com.dy.pipIrrGlobal.pojoBa.BaBlock;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.apache.commons.beanutils.BeanUtils ;
import java.util.HashMap;
import java.util.Map;
import java.util.List;
@Slf4j
@Service
public class BlockSv {
    private BaBlockMapper dao;
    @Autowired
    private void setDao(BaBlockMapper dao){
        this.dao = dao;
    }
    /**
     * å¾—到一个片区
     * @param id ç‰‡åŒºID
     * @return ç‰‡åŒºå®žä½“
     */
    public BaBlock selectById(Long id){
        return this.dao.selectByPrimaryKey(id) ;
    }
    /**
     * å¾—到一个片区
     * @param vo æŸ¥è¯¢æ¡ä»¶å€¼å¯¹è±¡
     * @return ç‰‡åŒºå®žä½“
     */
    public QueryResultVo<List<BaBlock>> selectSome(QueryVo vo) throws Exception{
        Map<String, Object> params = new HashMap<>();
        BeanUtils.populate(vo, params);
        Long itemTotal = this.dao.selectTotal(params) ;
        QueryResultVo<List<BaBlock>> rsVo = new QueryResultVo<>() ;
        rsVo.pageSize = vo.pageSize ;
        rsVo.pageCurr = vo.pageCurr ;
        rsVo.calculateAndSet(itemTotal, params);
        List<BaBlock> list = this.dao.selectSome(params) ;
        return (QueryResultVo.<List<BaBlock>>builder().content(list)).build() ;
    }
    /**
     * ä¿å­˜å®žä½“
     * @param po å®žä½“
     * @return æ•°é‡
     */
    public int save(BaBlock po){
        return this.dao.insert(po) ;
    }
    /**
     * ä¿å­˜ä¿®æ”¹å®žä½“
     * @param po å®žä½“
     * @return æ•°é‡
     */
    public int update(BaBlock po){
        return this.dao.updateByPrimaryKeySelective(po) ;
    }
    /**
     * ä¿å­˜ä¿®æ”¹å®žä½“
     * @param id å®žä½“ID
     * @return æ•°é‡
     */
    public int delete(Long id){
        return this.dao.deleteLogicById(id) ;
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/block/QueryVo.java
New file
@@ -0,0 +1,27 @@
package com.dy.pipIrrBase.block;
import com.dy.common.webUtil.QueryConditionVo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
@Data
@EqualsAndHashCode(callSuper = false)
@ToString(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Schema(name = "片区查询条件")
public class QueryVo extends QueryConditionVo {
    @Schema(description = "片区名称")
    public String name;
    @Schema(description = "负责人")
    public String header;
    @Schema(description = "负责人电话")
    public String phone;
    @Schema(description = "种植面积")
    public Integer area;
}
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/block/˵Ã÷.txt
New file
@@ -0,0 +1 @@
提交的form表单由实体类接收数据
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictCtrl.java
@@ -68,15 +68,33 @@
    @ApiResponses(value = {
            @ApiResponse(
                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
                    description = "返回所有行政区数据(BaseResponse是基类)",
                    description = "返回所有行政区数据(BaseResponse.content:[{}])",
                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
                            schema = @Schema(implementation = BaDistrict.class))}
            )
    })
    @GetMapping(path = "allDistricts")
    public BaseResponse<List<BaDistrict>> allDistricts(){
        List<BaDistrict> list = this.sv.getAll(DistrictLevel.City.code) ;
    @GetMapping(path = "all")
    public BaseResponse<List<BaDistrict>> all(){
        List<BaDistrict> list = this.sv.selectAllByLevel(DistrictLevel.City.code) ;
        return BaseResponseUtils.buildSuccess(list);
    }
    /**
     * å¾—到一个行政区数据
     * @return ä¸€ä¸ªè¡Œæ”¿åŒºæ•°æ®
     */
    @Operation(summary = "一个行政区", description = "得到一个行政区数据")
    @ApiResponses(value = {
            @ApiResponse(
                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
                    description = "返回一个行政区数据(BaseResponse.content:{})",
                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
                            schema = @Schema(implementation = BaDistrict.class))}
            )
    })
    @GetMapping(path = "one")
    public BaseResponse<BaDistrict> one(@Parameter(description = "实体id", required = true) Long id){
        return BaseResponseUtils.buildSuccess(this.sv.selectById(id));
    }
    /**
@@ -88,7 +106,7 @@
    @ApiResponses(value = {
            @ApiResponse(
                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
                    description = "保存行政区返回:true:成功,false:失败(数据基类的content)",
                    description = "操作结果:true:成功,false:失败(BaseResponse.content)",
                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
                            schema = @Schema(implementation = Boolean.class))}
            )
@@ -113,4 +131,74 @@
            return BaseResponseUtils.buildSuccess(true) ;
        }
    }
    /**
     * ç¼–辑修改行政区
     * @param vo ä¿å­˜è¡Œæ”¿åŒºform表单对象
     * @return æ˜¯å¦æˆåŠŸ
     */
    @Operation(summary = "编辑修改行政区", description = "提交行政区数据(form表单),进行修改")
    @ApiResponses(value = {
            @ApiResponse(
                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
                    description = "操作结果:true:成功,false:失败(BaseResponse.content)",
                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
                            schema = @Schema(implementation = Boolean.class))}
            )
    })
    @PostMapping(path = "update", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    @SsoAop("-1")//@SsoAop(power = "-1")
    public BaseResponse<Boolean> update(@Parameter(description = "form表单数据", required = true) @Valid DistrictVo vo, @Parameter(hidden = true) BindingResult bindingResult){
        if(bindingResult != null && bindingResult.hasErrors()){
            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
        }
        BaDistrict po = DistrictVoMapper.INSTANCT.convert(vo);
        int count;
        try {
            count = this.sv.update(po);
        } catch (Exception e) {
            log.error("保存行政区异常", e);
            return BaseResponseUtils.buildException(e.getMessage()) ;
        }
        if(count <= 0){
            return BaseResponseUtils.buildFail("数据库存储失败") ;
        }else{
            return BaseResponseUtils.buildSuccess(true) ;
        }
    }
    /**
     * åˆ é™¤è¡Œæ”¿åŒº
     * @param id è¡Œæ”¿åŒºID
     * @return æ˜¯å¦æˆåŠŸ
     */
    @Operation(summary = "删除行政区", description = "提交行政区ID,进行逻辑删除")
    @ApiResponses(value = {
            @ApiResponse(
                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
                    description = "操作结果:true:成功,false:失败(BaseResponse.content)",
                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
                            schema = @Schema(implementation = Boolean.class))}
            )
    })
    @GetMapping(path = "delete", consumes = MediaType.TEXT_PLAIN_VALUE)
    @SsoAop("-1")//@SsoAop(power = "-1")
    public BaseResponse<Boolean> delete(@Parameter(description = "实体id", required = true) Long id){
        if(id == null){
            return BaseResponseUtils.buildFail("id不能为空") ;
        }
        int count;
        try {
            count = this.sv.delete(id);
        } catch (Exception e) {
            log.error("保存行政区异常", e);
            return BaseResponseUtils.buildException(e.getMessage()) ;
        }
        if(count <= 0){
            return BaseResponseUtils.buildFail("数据库存储失败") ;
        }else{
            return BaseResponseUtils.buildSuccess(true) ;
        }
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictSv.java
@@ -19,9 +19,31 @@
        this.dao = dao;
    }
    /**
     * ä¿å­˜å®žä½“
     * @param po å®žä½“
     * @return æ•°é‡
     */
    public int save(BaDistrict po){
        return this.dao.insert(po) ;
    }
    /**
     * ä¿å­˜ä¿®æ”¹å®žä½“
     * @param po å®žä½“
     * @return æ•°é‡
     */
    public int update(BaDistrict po){
        return this.dao.updateByPrimaryKeySelective(po) ;
    }
    /**
     * ä¿å­˜ä¿®æ”¹å®žä½“
     * @param id å®žä½“ID
     * @return æ•°é‡
     */
    public int delete(Long id){
        return this.dao.deleteLogicById(id) ;
    }
    /**
@@ -29,7 +51,7 @@
     * @param firstLevel ç¬¬ä¸€çº§è¡Œä¸‹åŒº level
     * @return æ‰€æœ‰è¡Œæ”¿åŒºåˆ’集合
     */
    public List<BaDistrict> getAll(byte firstLevel){
    public List<BaDistrict> selectAllByLevel(byte firstLevel){
        List<BaDistrict> list = this.dao.selectByLevel(firstLevel) ;
        if(list != null && list.size() > 0){
            for(BaDistrict po : list){
@@ -40,6 +62,15 @@
    }
    /**
     * å¾—到一个行政区
     * @param id è¡Œæ”¿åŒºID
     * @return è¡Œæ”¿åŒºå®žä½“
     */
    public BaDistrict selectById(Long id){
        return this.dao.selectByPrimaryKey(id) ;
    }
    /**
     * å¾—到下级行政区划
     * @param po ä¸Šçº§è¡Œæ”¿åŒºåˆ’
     */
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictVo.java
@@ -15,6 +15,9 @@
@Builder
@Schema(name = "行政区划值对象")
public class DistrictVo {
    @Schema(description = "行政区实体id", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Long id;
    @Schema(description = "上级行政区ID", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Long supperId ;
@@ -29,4 +32,7 @@
    @Min(message = "行政区级别不正确",value = 0)
    public Byte level ;
    @Schema(description = "行政区删除标志", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Byte deleted ;
}
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictVoMapper.java
@@ -1,12 +1,12 @@
package com.dy.pipIrrBase.district;
import com.dy.pipIrrGlobal.pojoBa.BaDistrict;
import com.dy.pipIrrGlobal.util.TypeConversionDistrict;
import com.dy.pipIrrGlobal.util.TypeConversionEnum;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
@Mapper(uses = {TypeConversionDistrict.class})
@Mapper(uses = {TypeConversionEnum.class})
public interface DistrictVoMapper {
    DistrictVoMapper INSTANCT = Mappers.getMapper(DistrictVoMapper.class);
    /**
@@ -14,9 +14,11 @@
     * @param vo å€¼å¯¹è±¡
     * @return po
     */
    @Mapping(target = "id", ignore = true)
    @Mapping(target = "id", source = "supperId")
    @Mapping(target = "supperId", source = "supperId")
    @Mapping(target = "name", source = "name")
    @Mapping(target = "level", source = "level", qualifiedByName = "districtLevelByteToObj")
    @Mapping(target = "deleted", source = "deleted", qualifiedByName = "deletedByteToObj")
    @Mapping(target = "subDistricts", ignore = true)
    BaDistrict convert(DistrictVo vo);
}
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/˵Ã÷.txt
New file
@@ -0,0 +1,2 @@
提交的form表单由一个值对象类接收数据
并由MapperStruct实现值对象类与实体类数据交换
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/QueryVo.java
New file
@@ -0,0 +1,26 @@
package com.dy.pipIrrBase.user;
import com.dy.common.webUtil.QueryConditionVo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
@Data
@EqualsAndHashCode(callSuper = false)
@ToString(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Schema(name = "用户查询条件")
public class QueryVo extends QueryConditionVo {
    @Schema(description = "用户姓名")
    public String name;
    @Schema(description = "用户姓名电话")
    public String phone;
    @Schema(description = "角色ID")
    public Long roleId;
}
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserSv.java
New file
@@ -0,0 +1,61 @@
package com.dy.pipIrrBase.user;
import com.dy.common.webUtil.QueryResultVo;
import com.dy.pipIrrGlobal.daoBa.BaUserMapper;
import com.dy.pipIrrGlobal.pojoBa.BaUser;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Slf4j
@Service
//public class UserSv extends MPJBaseServiceImpl<BaUserMapper, BaUser> {
public class UserSv {
    private BaUserMapper dao;
    @Autowired
    private void setDao(BaUserMapper dao){
        this.dao = dao;
    }
    /**
     * å¾—到一个片区
     * @param id ç‰‡åŒºID
     * @return ç‰‡åŒºå®žä½“
     */
    public BaUser selectById(Long id){
        return this.dao.selectById(id) ;
    }
    /**
     * å¾—到一个片区
     * @param vo æŸ¥è¯¢æ¡ä»¶å€¼å¯¹è±¡
     * @return ç‰‡åŒºå®žä½“
     */
    public QueryResultVo<List<BaUser>> selectSome(QueryVo vo){
//        MPJLambdaWrapper<BaUser> wrapper = new MPJLambdaWrapper<BaUser>()
//                .selectAll(BaUser.class)//查询user表全部字段
//                .select(BaRole::getId, BaRole::getName)
//                .leftJoin(BaUserRole.class, BaUserRole::getUserId, BaUser::getId)
//                .leftJoin(BaRole.class, BaRole::getId, BaUserRole::getRoleId);
//
//        wrapper.like(StringUtils.isNotEmpty(vo.name), "t.name", vo.name) ;
//        wrapper.eq(StringUtils.isNotEmpty(vo.name), "t.phone", vo.phone) ;
//        wrapper.eq(!Objects.isNull(vo.roleId), "t1.id", vo.roleId) ;
//
//        Page<BaUser> page = new Page<>(vo.pageCurr, vo.pageSize) ;
//
//        IPage<BaUser> iPage = this.dao.selectJoinPage(page, BaUser.class, wrapper) ;
//
//        List<BaUser> list = iPage.getRecords() ;
//
//        return (QueryResultVo.<List<BaUser>>builder().content(list)).build() ;
        return null ;
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web.iml
@@ -111,6 +111,8 @@
    <orderEntry type="library" name="Maven: org.mapstruct:mapstruct-processor:1.5.5.Final" level="project" />
    <orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.8.21" level="project" />
    <orderEntry type="library" name="Maven: org.jdom:jdom2:2.0.6.1" level="project" />
    <orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.4" level="project" />
    <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.2" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:3.1.3" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:3.1.3" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:3.1.3" level="project" />
pipIrr-platform/pipIrr-web/pom.xml
@@ -162,6 +162,13 @@
            <artifactId>jdom2</artifactId>
        </dependency>
        <!-- bean转map -->
        <dependency>
            <groupId>commons-beanutils</groupId>
            <artifactId>commons-beanutils</artifactId>
            <version>1.9.4</version>
        </dependency>
        <!-- æµ‹è¯• -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
pipIrr-platform/pom.xml
@@ -167,6 +167,7 @@
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--mybatis-plus-spring-boot-->
            <dependency>
                <groupId>com.baomidou</groupId>
pipIrr-platform/Îĵµ/Êý¾Ý¿â·þÎñÆ÷.txt
New file
@@ -0,0 +1,3 @@
向日葵:
331 203 058
dy1234