补充专项核查采购拓展查询SQL

This commit is contained in:
wkc
2026-03-24 22:55:59 +08:00
parent 1d013dc6df
commit c1a588b3fd
3 changed files with 167 additions and 0 deletions

View File

@@ -1,5 +1,9 @@
package com.ruoyi.ccdi.project.mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectExtendedPurchaseQueryDTO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedPurchaseDetailVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedPurchaseListItemVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetItemVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetLiabilityDetailVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetLiabilityListItemVO;
@@ -61,4 +65,28 @@ public interface CcdiProjectSpecialCheckMapper {
@Param("staffIdCard") String staffIdCard,
@Param("spouseIdCard") String spouseIdCard
);
/**
* 查询专项核查采购拓展列表
*
* @param page 分页对象
* @param queryDTO 查询条件
* @return 分页结果
*/
Page<CcdiProjectExtendedPurchaseListItemVO> selectExtendedPurchasePage(
@Param("page") Page<CcdiProjectExtendedPurchaseListItemVO> page,
@Param("query") CcdiProjectExtendedPurchaseQueryDTO queryDTO
);
/**
* 查询专项核查采购拓展详情
*
* @param projectId 项目ID
* @param purchaseId 采购事项ID
* @return 详情
*/
CcdiProjectExtendedPurchaseDetailVO selectExtendedPurchaseDetail(
@Param("projectId") Long projectId,
@Param("purchaseId") String purchaseId
);
}

View File

@@ -39,6 +39,15 @@
<result property="queryDate" column="query_date"/>
</resultMap>
<resultMap id="ExtendedPurchaseListItemResultMap"
type="com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedPurchaseListItemVO">
<id property="purchaseId" column="purchase_id"/>
<result property="projectName" column="project_name"/>
<result property="subjectName" column="subject_name"/>
<result property="applicantName" column="applicant_name"/>
<result property="applyDate" column="apply_date"/>
</resultMap>
<resultMap id="FamilyAssetLiabilityDetailResultMap"
type="com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetLiabilityDetailVO">
<association property="incomeDetail"
@@ -462,4 +471,87 @@
debt.debt_name asc
</select>
<select id="selectExtendedPurchasePage" resultMap="ExtendedPurchaseListItemResultMap">
select
p.purchase_id,
p.project_name,
p.subject_name,
p.applicant_name,
p.apply_date
from ccdi_purchase_transaction p
inner join (
select distinct scope.staff_name
from (
<include refid="projectEmployeeScopeSql"/>
) scope
where scope.staff_name is not null
and scope.staff_name != ''
) scoped_staff
on scoped_staff.staff_name = p.applicant_name
<where>
<if test="query.applicantName != null and query.applicantName != ''">
and p.applicant_name like concat('%', #{query.applicantName}, '%')
</if>
<if test="query.applyDateStart != null and query.applyDateStart != ''">
and p.apply_date &gt;= #{query.applyDateStart}
</if>
<if test="query.applyDateEnd != null and query.applyDateEnd != ''">
and p.apply_date &lt;= #{query.applyDateEnd}
</if>
</where>
order by p.apply_date desc, p.create_time desc, p.purchase_id desc
</select>
<select id="selectExtendedPurchaseDetail"
resultType="com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedPurchaseDetailVO">
select
p.purchase_id,
p.purchase_category,
p.project_name,
p.subject_name,
p.subject_desc,
p.purchase_qty,
p.budget_amount,
p.bid_amount,
p.actual_amount,
p.contract_amount,
p.settlement_amount,
p.purchase_method,
p.supplier_name,
p.contact_person,
p.contact_phone,
p.supplier_uscc,
p.supplier_bank_account,
p.apply_date,
p.plan_approve_date,
p.announce_date,
p.bid_open_date,
p.contract_sign_date,
p.expected_delivery_date,
p.actual_delivery_date,
p.acceptance_date,
p.settlement_date,
p.applicant_id,
p.applicant_name,
p.apply_department,
p.purchase_leader_id,
p.purchase_leader_name,
p.purchase_department,
p.created_by,
p.create_time,
p.updated_by,
p.update_time
from ccdi_purchase_transaction p
inner join (
select distinct scope.staff_name
from (
<include refid="projectEmployeeScopeSql"/>
) scope
where scope.staff_name is not null
and scope.staff_name != ''
) scoped_staff
on scoped_staff.staff_name = p.applicant_name
where p.purchase_id = #{purchaseId}
</select>
</mapper>

View File

@@ -0,0 +1,47 @@
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 CcdiProjectSpecialCheckExtendedPurchaseSqlTest {
@Test
void shouldExposeExtendedPurchaseMapperMethodsAndSqlCaliber() throws Exception {
Class<?> mapperClass = Class.forName("com.ruoyi.ccdi.project.mapper.CcdiProjectSpecialCheckMapper");
Class<?> queryClass = Class.forName("com.ruoyi.ccdi.project.domain.dto.CcdiProjectExtendedPurchaseQueryDTO");
Method listMethod = mapperClass.getMethod("selectExtendedPurchasePage", Page.class, queryClass);
Method detailMethod = mapperClass.getMethod("selectExtendedPurchaseDetail", Long.class, String.class);
assertEquals("Page", listMethod.getReturnType().getSimpleName());
assertEquals("CcdiProjectExtendedPurchaseDetailVO", detailMethod.getReturnType().getSimpleName());
String xml = Files.readString(Path.of("src/main/resources/mapper/ccdi/project/CcdiProjectSpecialCheckMapper.xml"));
String listSql = extractSelect(xml, "selectExtendedPurchasePage");
String detailSql = extractSelect(xml, "selectExtendedPurchaseDetail");
assertTrue(listSql.contains("projectEmployeeScopeSql"));
assertTrue(listSql.contains("select distinct scope.staff_name"));
assertTrue(listSql.contains("applicant_name"));
assertTrue(listSql.contains("apply_date"));
assertTrue(listSql.contains("purchase_id"));
assertTrue(listSql.contains("project_name"));
assertTrue(listSql.contains("subject_name"));
assertTrue(listSql.contains("order by p.apply_date desc, p.create_time desc, p.purchase_id desc"));
assertTrue(detailSql.contains("projectEmployeeScopeSql"));
assertTrue(detailSql.contains("purchase_id = #{purchaseId}"));
assertTrue(detailSql.contains("applicant_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);
}
}