补充专项核查招聘调动拓展查询SQL
This commit is contained in:
@@ -2,8 +2,14 @@ package com.ruoyi.ccdi.project.mapper;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectExtendedPurchaseQueryDTO;
|
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectExtendedPurchaseQueryDTO;
|
||||||
|
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectExtendedRecruitmentQueryDTO;
|
||||||
|
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectExtendedTransferQueryDTO;
|
||||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedPurchaseDetailVO;
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedPurchaseDetailVO;
|
||||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedPurchaseListItemVO;
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedPurchaseListItemVO;
|
||||||
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedRecruitmentDetailVO;
|
||||||
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedRecruitmentListItemVO;
|
||||||
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedTransferDetailVO;
|
||||||
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedTransferListItemVO;
|
||||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetItemVO;
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetItemVO;
|
||||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetLiabilityDetailVO;
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetLiabilityDetailVO;
|
||||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetLiabilityListItemVO;
|
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetLiabilityListItemVO;
|
||||||
@@ -89,4 +95,52 @@ public interface CcdiProjectSpecialCheckMapper {
|
|||||||
@Param("projectId") Long projectId,
|
@Param("projectId") Long projectId,
|
||||||
@Param("purchaseId") String purchaseId
|
@Param("purchaseId") String purchaseId
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询专项核查招聘拓展列表
|
||||||
|
*
|
||||||
|
* @param page 分页对象
|
||||||
|
* @param queryDTO 查询条件
|
||||||
|
* @return 分页结果
|
||||||
|
*/
|
||||||
|
Page<CcdiProjectExtendedRecruitmentListItemVO> selectExtendedRecruitmentPage(
|
||||||
|
@Param("page") Page<CcdiProjectExtendedRecruitmentListItemVO> page,
|
||||||
|
@Param("query") CcdiProjectExtendedRecruitmentQueryDTO queryDTO
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询专项核查招聘拓展详情
|
||||||
|
*
|
||||||
|
* @param projectId 项目ID
|
||||||
|
* @param recruitId 招聘项目编号
|
||||||
|
* @return 详情
|
||||||
|
*/
|
||||||
|
CcdiProjectExtendedRecruitmentDetailVO selectExtendedRecruitmentDetail(
|
||||||
|
@Param("projectId") Long projectId,
|
||||||
|
@Param("recruitId") String recruitId
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询专项核查调动拓展列表
|
||||||
|
*
|
||||||
|
* @param page 分页对象
|
||||||
|
* @param queryDTO 查询条件
|
||||||
|
* @return 分页结果
|
||||||
|
*/
|
||||||
|
Page<CcdiProjectExtendedTransferListItemVO> selectExtendedTransferPage(
|
||||||
|
@Param("page") Page<CcdiProjectExtendedTransferListItemVO> page,
|
||||||
|
@Param("query") CcdiProjectExtendedTransferQueryDTO queryDTO
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询专项核查调动拓展详情
|
||||||
|
*
|
||||||
|
* @param projectId 项目ID
|
||||||
|
* @param id 主键ID
|
||||||
|
* @return 详情
|
||||||
|
*/
|
||||||
|
CcdiProjectExtendedTransferDetailVO selectExtendedTransferDetail(
|
||||||
|
@Param("projectId") Long projectId,
|
||||||
|
@Param("id") Long id
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,6 +48,24 @@
|
|||||||
<result property="applyDate" column="apply_date"/>
|
<result property="applyDate" column="apply_date"/>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
|
<resultMap id="ExtendedRecruitmentListItemResultMap"
|
||||||
|
type="com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedRecruitmentListItemVO">
|
||||||
|
<id property="recruitId" column="recruit_id"/>
|
||||||
|
<result property="recruitName" column="recruit_name"/>
|
||||||
|
<result property="posName" column="pos_name"/>
|
||||||
|
<result property="interviewerNameSummary" column="interviewer_name_summary"/>
|
||||||
|
<result property="admitStatus" column="admit_status"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<resultMap id="ExtendedTransferListItemResultMap"
|
||||||
|
type="com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedTransferListItemVO">
|
||||||
|
<result property="staffName" column="staff_name"/>
|
||||||
|
<result property="transferType" column="transfer_type"/>
|
||||||
|
<result property="deptNameBefore" column="dept_name_before"/>
|
||||||
|
<result property="deptNameAfter" column="dept_name_after"/>
|
||||||
|
<result property="transferDate" column="transfer_date"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
<resultMap id="FamilyAssetLiabilityDetailResultMap"
|
<resultMap id="FamilyAssetLiabilityDetailResultMap"
|
||||||
type="com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetLiabilityDetailVO">
|
type="com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetLiabilityDetailVO">
|
||||||
<association property="incomeDetail"
|
<association property="incomeDetail"
|
||||||
@@ -554,4 +572,143 @@
|
|||||||
where p.purchase_id = #{purchaseId}
|
where p.purchase_id = #{purchaseId}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectExtendedRecruitmentPage" resultMap="ExtendedRecruitmentListItemResultMap">
|
||||||
|
select distinct r.recruit_id,
|
||||||
|
r.recruit_name,
|
||||||
|
r.pos_name,
|
||||||
|
concat_ws(' / ',
|
||||||
|
nullif(trim(r.interviewer_name1), ''),
|
||||||
|
nullif(trim(r.interviewer_name2), '')
|
||||||
|
) as interviewer_name_summary,
|
||||||
|
r.admit_status
|
||||||
|
from ccdi_staff_recruitment r
|
||||||
|
where exists (
|
||||||
|
select 1
|
||||||
|
from (
|
||||||
|
<include refid="projectEmployeeScopeSql"/>
|
||||||
|
) scope
|
||||||
|
where scope.staff_name is not null
|
||||||
|
and scope.staff_name != ''
|
||||||
|
and (
|
||||||
|
scope.staff_name = r.interviewer_name1
|
||||||
|
or scope.staff_name = r.interviewer_name2
|
||||||
|
)
|
||||||
|
)
|
||||||
|
<if test="query.interviewerName != null and query.interviewerName != ''">
|
||||||
|
and (
|
||||||
|
r.interviewer_name1 like concat('%', #{query.interviewerName}, '%')
|
||||||
|
or r.interviewer_name2 like concat('%', #{query.interviewerName}, '%')
|
||||||
|
)
|
||||||
|
</if>
|
||||||
|
order by r.create_time desc, r.recruit_id desc
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="selectExtendedRecruitmentDetail"
|
||||||
|
resultType="com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedRecruitmentDetailVO">
|
||||||
|
select
|
||||||
|
r.recruit_id,
|
||||||
|
r.recruit_name,
|
||||||
|
r.pos_name,
|
||||||
|
r.pos_category,
|
||||||
|
r.pos_desc,
|
||||||
|
r.cand_name,
|
||||||
|
r.cand_edu,
|
||||||
|
r.cand_id,
|
||||||
|
r.cand_school,
|
||||||
|
r.cand_major,
|
||||||
|
r.cand_grad,
|
||||||
|
r.admit_status,
|
||||||
|
r.interviewer_name1,
|
||||||
|
r.interviewer_id1,
|
||||||
|
r.interviewer_name2,
|
||||||
|
r.interviewer_id2,
|
||||||
|
r.created_by,
|
||||||
|
r.create_time,
|
||||||
|
r.updated_by,
|
||||||
|
r.update_time
|
||||||
|
from ccdi_staff_recruitment r
|
||||||
|
where r.recruit_id = #{recruitId}
|
||||||
|
and exists (
|
||||||
|
select 1
|
||||||
|
from (
|
||||||
|
<include refid="projectEmployeeScopeSql"/>
|
||||||
|
) scope
|
||||||
|
where scope.staff_name is not null
|
||||||
|
and scope.staff_name != ''
|
||||||
|
and (
|
||||||
|
scope.staff_name = r.interviewer_name1
|
||||||
|
or scope.staff_name = r.interviewer_name2
|
||||||
|
)
|
||||||
|
)
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="selectExtendedTransferPage" resultMap="ExtendedTransferListItemResultMap">
|
||||||
|
select
|
||||||
|
s.name as staff_name,
|
||||||
|
t.transfer_type,
|
||||||
|
t.dept_name_before,
|
||||||
|
t.dept_name_after,
|
||||||
|
t.transfer_date
|
||||||
|
from ccdi_staff_transfer t
|
||||||
|
inner join ccdi_base_staff s
|
||||||
|
on t.staff_id = s.staff_id
|
||||||
|
inner join (
|
||||||
|
select distinct scope.staff_name
|
||||||
|
from (
|
||||||
|
<include refid="projectEmployeeScopeSql"/>
|
||||||
|
) scope
|
||||||
|
where scope.staff_name is not null
|
||||||
|
and scope.staff_name != ''
|
||||||
|
) scope
|
||||||
|
on scope.staff_name = s.name
|
||||||
|
<where>
|
||||||
|
<if test="query.staffName != null and query.staffName != ''">
|
||||||
|
and s.name like concat('%', #{query.staffName}, '%')
|
||||||
|
</if>
|
||||||
|
<if test="query.transferDateStart != null and query.transferDateStart != ''">
|
||||||
|
and t.transfer_date >= #{query.transferDateStart}
|
||||||
|
</if>
|
||||||
|
<if test="query.transferDateEnd != null and query.transferDateEnd != ''">
|
||||||
|
and t.transfer_date <= #{query.transferDateEnd}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
order by t.transfer_date desc, t.create_time desc, t.id desc
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="selectExtendedTransferDetail"
|
||||||
|
resultType="com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedTransferDetailVO">
|
||||||
|
select
|
||||||
|
t.id,
|
||||||
|
t.staff_id,
|
||||||
|
s.name as staff_name,
|
||||||
|
t.transfer_type,
|
||||||
|
t.transfer_sub_type,
|
||||||
|
t.dept_id_before,
|
||||||
|
t.dept_name_before,
|
||||||
|
t.grade_before,
|
||||||
|
t.position_before,
|
||||||
|
t.salary_level_before,
|
||||||
|
t.dept_id_after,
|
||||||
|
t.dept_name_after,
|
||||||
|
t.grade_after,
|
||||||
|
t.position_after,
|
||||||
|
t.salary_level_after,
|
||||||
|
t.transfer_date,
|
||||||
|
t.created_by,
|
||||||
|
t.create_time,
|
||||||
|
t.updated_by,
|
||||||
|
t.update_time
|
||||||
|
from ccdi_staff_transfer t
|
||||||
|
inner join ccdi_base_staff s
|
||||||
|
on t.staff_id = s.staff_id
|
||||||
|
where t.id = #{id}
|
||||||
|
and exists (
|
||||||
|
select 1
|
||||||
|
from (
|
||||||
|
<include refid="projectEmployeeScopeSql"/>
|
||||||
|
) scope
|
||||||
|
where scope.staff_name = s.name
|
||||||
|
)
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
package com.ruoyi.ccdi.project.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
|
class CcdiProjectSpecialCheckExtendedRecruitmentSqlTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void shouldExposeExtendedRecruitmentMapperMethodsAndSqlCaliber() throws Exception {
|
||||||
|
Class<?> mapperClass = Class.forName("com.ruoyi.ccdi.project.mapper.CcdiProjectSpecialCheckMapper");
|
||||||
|
Class<?> queryClass = Class.forName("com.ruoyi.ccdi.project.domain.dto.CcdiProjectExtendedRecruitmentQueryDTO");
|
||||||
|
|
||||||
|
Method listMethod = mapperClass.getMethod("selectExtendedRecruitmentPage", Page.class, queryClass);
|
||||||
|
Method detailMethod = mapperClass.getMethod("selectExtendedRecruitmentDetail", Long.class, String.class);
|
||||||
|
assertEquals("Page", listMethod.getReturnType().getSimpleName());
|
||||||
|
assertEquals("CcdiProjectExtendedRecruitmentDetailVO", detailMethod.getReturnType().getSimpleName());
|
||||||
|
|
||||||
|
String xml = Files.readString(Path.of("src/main/resources/mapper/ccdi/project/CcdiProjectSpecialCheckMapper.xml"));
|
||||||
|
String listSql = extractSelect(xml, "selectExtendedRecruitmentPage");
|
||||||
|
String detailSql = extractSelect(xml, "selectExtendedRecruitmentDetail");
|
||||||
|
|
||||||
|
assertTrue(listSql.contains("projectEmployeeScopeSql"));
|
||||||
|
assertTrue(listSql.contains("select distinct r.recruit_id"));
|
||||||
|
assertTrue(listSql.contains("interviewer_name1"));
|
||||||
|
assertTrue(listSql.contains("interviewer_name2"));
|
||||||
|
assertTrue(listSql.contains("concat_ws(' / '"));
|
||||||
|
assertTrue(listSql.contains("admit_status"));
|
||||||
|
assertTrue(detailSql.contains("projectEmployeeScopeSql"));
|
||||||
|
assertTrue(detailSql.contains("recruit_id = #{recruitId}"));
|
||||||
|
assertTrue(detailSql.contains("interviewer_name1"));
|
||||||
|
assertTrue(detailSql.contains("interviewer_name2"));
|
||||||
|
}
|
||||||
|
|
||||||
|
private String extractSelect(String xml, String selectId) {
|
||||||
|
String start = "<select id=\"" + selectId + "\"";
|
||||||
|
int startIndex = xml.indexOf(start);
|
||||||
|
int endIndex = xml.indexOf("</select>", startIndex);
|
||||||
|
return xml.substring(startIndex, endIndex);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
package com.ruoyi.ccdi.project.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
|
class CcdiProjectSpecialCheckExtendedTransferSqlTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void shouldExposeExtendedTransferMapperMethodsAndSqlCaliber() throws Exception {
|
||||||
|
Class<?> mapperClass = Class.forName("com.ruoyi.ccdi.project.mapper.CcdiProjectSpecialCheckMapper");
|
||||||
|
Class<?> queryClass = Class.forName("com.ruoyi.ccdi.project.domain.dto.CcdiProjectExtendedTransferQueryDTO");
|
||||||
|
|
||||||
|
Method listMethod = mapperClass.getMethod("selectExtendedTransferPage", Page.class, queryClass);
|
||||||
|
Method detailMethod = mapperClass.getMethod("selectExtendedTransferDetail", Long.class, Long.class);
|
||||||
|
assertEquals("Page", listMethod.getReturnType().getSimpleName());
|
||||||
|
assertEquals("CcdiProjectExtendedTransferDetailVO", detailMethod.getReturnType().getSimpleName());
|
||||||
|
|
||||||
|
String xml = Files.readString(Path.of("src/main/resources/mapper/ccdi/project/CcdiProjectSpecialCheckMapper.xml"));
|
||||||
|
String listSql = extractSelect(xml, "selectExtendedTransferPage");
|
||||||
|
String detailSql = extractSelect(xml, "selectExtendedTransferDetail");
|
||||||
|
|
||||||
|
assertTrue(listSql.contains("projectEmployeeScopeSql"));
|
||||||
|
assertTrue(listSql.contains("ccdi_staff_transfer t"));
|
||||||
|
assertTrue(listSql.contains("ccdi_base_staff s"));
|
||||||
|
assertTrue(listSql.contains("scope.staff_name = s.name"));
|
||||||
|
assertTrue(listSql.contains("transfer_date"));
|
||||||
|
assertTrue(listSql.contains("order by t.transfer_date desc, t.create_time desc, t.id desc"));
|
||||||
|
assertTrue(detailSql.contains("projectEmployeeScopeSql"));
|
||||||
|
assertTrue(detailSql.contains("t.id = #{id}"));
|
||||||
|
assertTrue(detailSql.contains("scope.staff_name = s.name"));
|
||||||
|
}
|
||||||
|
|
||||||
|
private String extractSelect(String xml, String selectId) {
|
||||||
|
String start = "<select id=\"" + selectId + "\"";
|
||||||
|
int startIndex = xml.indexOf(start);
|
||||||
|
int endIndex = xml.indexOf("</select>", startIndex);
|
||||||
|
return xml.substring(startIndex, endIndex);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user