新增结果总览员工结果表结构
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
package com.ruoyi.ccdi.project.domain.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 结果总览员工结果实体
|
||||
*/
|
||||
@Data
|
||||
@TableName("ccdi_project_overview_employee_result")
|
||||
public class CcdiProjectOverviewEmployeeResult implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
private Long projectId;
|
||||
|
||||
private String staffIdCard;
|
||||
|
||||
private String staffCode;
|
||||
|
||||
private String staffName;
|
||||
|
||||
private Long deptId;
|
||||
|
||||
private String deptName;
|
||||
|
||||
private Integer ruleCount;
|
||||
|
||||
private Integer modelCount;
|
||||
|
||||
private Integer hitCount;
|
||||
|
||||
private String riskLevelCode;
|
||||
|
||||
private String riskPoint;
|
||||
|
||||
private String modelCodesCsv;
|
||||
|
||||
private String modelNamesJson;
|
||||
|
||||
private String hitRulesJson;
|
||||
|
||||
private String modelHitSummaryJson;
|
||||
|
||||
private String createBy;
|
||||
|
||||
private Date createTime;
|
||||
|
||||
private String updateBy;
|
||||
|
||||
private Date updateTime;
|
||||
|
||||
private String remark;
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.ruoyi.ccdi.project.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.ruoyi.ccdi.project.domain.entity.CcdiProjectOverviewEmployeeResult;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 结果总览员工结果 Mapper
|
||||
*/
|
||||
public interface CcdiProjectOverviewEmployeeResultMapper extends BaseMapper<CcdiProjectOverviewEmployeeResult> {
|
||||
|
||||
/**
|
||||
* 按项目删除结果
|
||||
*
|
||||
* @param projectId 项目ID
|
||||
* @return 删除条数
|
||||
*/
|
||||
int deleteByProjectId(@Param("projectId") Long projectId);
|
||||
|
||||
/**
|
||||
* 批量插入结果
|
||||
*
|
||||
* @param list 结果列表
|
||||
* @return 插入条数
|
||||
*/
|
||||
int insertBatch(@Param("list") List<CcdiProjectOverviewEmployeeResult> list);
|
||||
|
||||
/**
|
||||
* 按项目查询结果
|
||||
*
|
||||
* @param projectId 项目ID
|
||||
* @return 结果列表
|
||||
*/
|
||||
List<CcdiProjectOverviewEmployeeResult> selectByProjectId(@Param("projectId") Long projectId);
|
||||
}
|
||||
@@ -0,0 +1,100 @@
|
||||
<?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.ruoyi.ccdi.project.mapper.CcdiProjectOverviewEmployeeResultMapper">
|
||||
|
||||
<resultMap id="CcdiProjectOverviewEmployeeResultMap"
|
||||
type="com.ruoyi.ccdi.project.domain.entity.CcdiProjectOverviewEmployeeResult">
|
||||
<id property="id" column="id"/>
|
||||
<result property="projectId" column="project_id"/>
|
||||
<result property="staffIdCard" column="staff_id_card"/>
|
||||
<result property="staffCode" column="staff_code"/>
|
||||
<result property="staffName" column="staff_name"/>
|
||||
<result property="deptId" column="dept_id"/>
|
||||
<result property="deptName" column="dept_name"/>
|
||||
<result property="ruleCount" column="rule_count"/>
|
||||
<result property="modelCount" column="model_count"/>
|
||||
<result property="hitCount" column="hit_count"/>
|
||||
<result property="riskLevelCode" column="risk_level_code"/>
|
||||
<result property="riskPoint" column="risk_point"/>
|
||||
<result property="modelCodesCsv" column="model_codes_csv"/>
|
||||
<result property="modelNamesJson" column="model_names_json"/>
|
||||
<result property="hitRulesJson" column="hit_rules_json"/>
|
||||
<result property="modelHitSummaryJson" column="model_hit_summary_json"/>
|
||||
<result property="createBy" column="create_by"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
<result property="updateBy" column="update_by"/>
|
||||
<result property="updateTime" column="update_time"/>
|
||||
<result property="remark" column="remark"/>
|
||||
</resultMap>
|
||||
|
||||
<delete id="deleteByProjectId">
|
||||
delete from ccdi_project_overview_employee_result
|
||||
where project_id = #{projectId}
|
||||
</delete>
|
||||
|
||||
<insert id="insertBatch" parameterType="java.util.List">
|
||||
insert into ccdi_project_overview_employee_result (
|
||||
project_id, staff_id_card, staff_code, staff_name, dept_id, dept_name,
|
||||
rule_count, model_count, hit_count, risk_level_code, risk_point,
|
||||
model_codes_csv, model_names_json, hit_rules_json, model_hit_summary_json,
|
||||
create_by, create_time, update_by, update_time, remark
|
||||
) values
|
||||
<foreach collection="list" item="item" separator=",">
|
||||
(
|
||||
#{item.projectId}, #{item.staffIdCard}, #{item.staffCode}, #{item.staffName},
|
||||
#{item.deptId}, #{item.deptName}, #{item.ruleCount}, #{item.modelCount},
|
||||
#{item.hitCount}, #{item.riskLevelCode}, #{item.riskPoint},
|
||||
#{item.modelCodesCsv}, #{item.modelNamesJson}, #{item.hitRulesJson}, #{item.modelHitSummaryJson},
|
||||
#{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}, #{item.remark}
|
||||
)
|
||||
</foreach>
|
||||
on duplicate key update
|
||||
staff_code = values(staff_code),
|
||||
staff_name = values(staff_name),
|
||||
dept_id = values(dept_id),
|
||||
dept_name = values(dept_name),
|
||||
rule_count = values(rule_count),
|
||||
model_count = values(model_count),
|
||||
hit_count = values(hit_count),
|
||||
risk_level_code = values(risk_level_code),
|
||||
risk_point = values(risk_point),
|
||||
model_codes_csv = values(model_codes_csv),
|
||||
model_names_json = values(model_names_json),
|
||||
hit_rules_json = values(hit_rules_json),
|
||||
model_hit_summary_json = values(model_hit_summary_json),
|
||||
update_by = values(update_by),
|
||||
update_time = values(update_time),
|
||||
remark = values(remark)
|
||||
</insert>
|
||||
|
||||
<select id="selectByProjectId" resultMap="CcdiProjectOverviewEmployeeResultMap">
|
||||
select
|
||||
id,
|
||||
project_id,
|
||||
staff_id_card,
|
||||
staff_code,
|
||||
staff_name,
|
||||
dept_id,
|
||||
dept_name,
|
||||
rule_count,
|
||||
model_count,
|
||||
hit_count,
|
||||
risk_level_code,
|
||||
risk_point,
|
||||
model_codes_csv,
|
||||
model_names_json,
|
||||
hit_rules_json,
|
||||
model_hit_summary_json,
|
||||
create_by,
|
||||
create_time,
|
||||
update_by,
|
||||
update_time,
|
||||
remark
|
||||
from ccdi_project_overview_employee_result
|
||||
where project_id = #{projectId}
|
||||
order by id asc
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,56 @@
|
||||
package com.ruoyi.ccdi.project.domain.entity;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertAll;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
class CcdiProjectOverviewEmployeeResultEntityTest {
|
||||
|
||||
private static final Path ENTITY_PATH = Path.of(
|
||||
"src/main/java/com/ruoyi/ccdi/project/domain/entity/CcdiProjectOverviewEmployeeResult.java"
|
||||
);
|
||||
@Test
|
||||
void entityAndSqlShouldDefineProjectOverviewEmployeeResultTable() throws Exception {
|
||||
String entitySource = Files.readString(ENTITY_PATH);
|
||||
String sql = Files.readString(resolveSqlPath());
|
||||
String normalizedSql = sql.toLowerCase().replace("`", "");
|
||||
|
||||
assertAll(
|
||||
() -> assertTrue(entitySource.contains("@TableName(\"ccdi_project_overview_employee_result\")")),
|
||||
() -> assertTrue(entitySource.contains("private Long projectId;")),
|
||||
() -> assertTrue(entitySource.contains("private String staffIdCard;")),
|
||||
() -> assertTrue(entitySource.contains("private Integer ruleCount;")),
|
||||
() -> assertTrue(entitySource.contains("private Integer modelCount;")),
|
||||
() -> assertTrue(entitySource.contains("private Integer hitCount;")),
|
||||
() -> assertTrue(entitySource.contains("private String riskLevelCode;")),
|
||||
() -> assertTrue(entitySource.contains("private String modelCodesCsv;")),
|
||||
() -> assertTrue(entitySource.contains("private String modelNamesJson;")),
|
||||
() -> assertTrue(entitySource.contains("private String hitRulesJson;")),
|
||||
() -> assertTrue(entitySource.contains("private String modelHitSummaryJson;")),
|
||||
() -> assertTrue(normalizedSql.contains("create table if not exists ccdi_project_overview_employee_result")),
|
||||
() -> assertTrue(normalizedSql.contains("unique key")),
|
||||
() -> assertTrue(normalizedSql.contains("project_id")),
|
||||
() -> assertTrue(normalizedSql.contains("staff_id_card")),
|
||||
() -> assertTrue(normalizedSql.contains("rule_count")),
|
||||
() -> assertTrue(normalizedSql.contains("model_count")),
|
||||
() -> assertTrue(normalizedSql.contains("hit_count")),
|
||||
() -> assertTrue(normalizedSql.contains("risk_level_code")),
|
||||
() -> assertTrue(normalizedSql.contains("model_codes_csv")),
|
||||
() -> assertTrue(normalizedSql.contains("model_names_json")),
|
||||
() -> assertTrue(normalizedSql.contains("hit_rules_json")),
|
||||
() -> assertTrue(normalizedSql.contains("model_hit_summary_json"))
|
||||
);
|
||||
}
|
||||
|
||||
private Path resolveSqlPath() {
|
||||
Path moduleRelative = Path.of("../sql/migration/2026-03-20-create-project-overview-employee-result-table.sql");
|
||||
if (Files.exists(moduleRelative)) {
|
||||
return moduleRelative;
|
||||
}
|
||||
return Path.of("sql/migration/2026-03-20-create-project-overview-employee-result-table.sql");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package com.ruoyi.ccdi.project.mapper;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertAll;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
class CcdiProjectOverviewEmployeeResultMapperXmlTest {
|
||||
|
||||
private static final Path MAPPER_PATH = Path.of(
|
||||
"src/main/java/com/ruoyi/ccdi/project/mapper/CcdiProjectOverviewEmployeeResultMapper.java"
|
||||
);
|
||||
private static final Path XML_PATH = Path.of(
|
||||
"src/main/resources/mapper/ccdi/project/CcdiProjectOverviewEmployeeResultMapper.xml"
|
||||
);
|
||||
|
||||
@Test
|
||||
void mapperAndXmlShouldExposeMinimumCrudStatements() throws Exception {
|
||||
String mapperSource = Files.readString(MAPPER_PATH);
|
||||
String xml = Files.readString(XML_PATH);
|
||||
|
||||
assertAll(
|
||||
() -> assertTrue(mapperSource.contains("interface CcdiProjectOverviewEmployeeResultMapper")),
|
||||
() -> assertTrue(mapperSource.contains("deleteByProjectId")),
|
||||
() -> assertTrue(mapperSource.contains("insertBatch")),
|
||||
() -> assertTrue(mapperSource.contains("selectByProjectId")),
|
||||
() -> assertTrue(xml.contains("delete id=\"deleteByProjectId\"")),
|
||||
() -> assertTrue(xml.contains("insert id=\"insertBatch\"")),
|
||||
() -> assertTrue(xml.contains("select id=\"selectByProjectId\"")),
|
||||
() -> assertTrue(xml.contains("ccdi_project_overview_employee_result"))
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user