change filing query logic

dev
luotaiqian 2026-07-07 10:27:23 +08:00
parent 9ebdafe5a2
commit 083bebf2ac
6 changed files with 204 additions and 2 deletions

View File

@ -7,6 +7,7 @@ import org.qinan.safetyeval.client.api.QualFilingChangeApi;
import org.qinan.safetyeval.client.co.QualFilingChangeAggregationCO;
import org.qinan.safetyeval.client.co.QualFilingChangeCO;
import org.qinan.safetyeval.client.co.QualFilingChangeComplianceCheckResultCO;
import org.qinan.safetyeval.client.co.QualFilingChangeOrgCO;
import org.qinan.safetyeval.client.dto.*;
import org.qinan.safetyeval.infrastructure.utils.RequestHandlerUtil;
import org.springframework.validation.annotation.Validated;
@ -43,10 +44,10 @@ public class QualFilingChangeController {
@ApiOperation("分页查询备案变更-机构端")
@GetMapping("/org/page")
public PageResponse<QualFilingChangeCO> orgPage(@Validated QualFilingChangePageQuery query) {
public PageResponse<QualFilingChangeOrgCO> orgPage(@Validated QualFilingChangePageQuery query) {
Long orgId = RequestHandlerUtil.getOrgId();
query.setOrgId(orgId);
return qualFilingChangeApi.page(query);
return qualFilingChangeApi.orgPage(query);
}

View File

@ -7,6 +7,7 @@ import org.qinan.safetyeval.client.co.QualFilingChangeAggregationCO;
import org.qinan.safetyeval.client.co.QualFilingChangeCO;
import org.qinan.safetyeval.client.co.QualFilingChangeComplianceCheckResultCO;
import org.qinan.safetyeval.client.co.QualFilingChangeHistoryCO;
import org.qinan.safetyeval.client.co.QualFilingChangeOrgCO;
import org.qinan.safetyeval.client.dto.*;
import org.qinan.safetyeval.domain.change.gateway.*;
import org.qinan.safetyeval.domain.change.model.*;
@ -23,7 +24,10 @@ import org.qinan.safetyeval.domain.service.QualFilingChangeDomainService;
import org.qinan.safetyeval.domain.service.QualFilingDomainService;
import org.qinan.safetyeval.domain.service.QualFilingReviewDomainService;
import org.qinan.safetyeval.infrastructure.adapter.auth.AuthUserContextAdapter;
import org.qinan.safetyeval.infrastructure.mapper.QualFilingChangeMapper;
import org.qinan.safetyeval.infrastructure.utils.RequestHandlerUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
@ -47,6 +51,9 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi {
@Autowired(required = false)
private QualFilingChangeDomainService qualFilingChangeDomainService;
@Resource
private QualFilingChangeMapper qualFilingChangeMapper;
@Lazy
@Autowired(required = false)
private QualFilingDomainService qualFilingDomainService;
@ -174,6 +181,21 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi {
pageResult.getTotal());
}
@Override
public PageResponse<QualFilingChangeOrgCO> orgPage(QualFilingChangePageQuery query) {
QualFilingChangeQuery domainQuery = new QualFilingChangeQuery();
domainQuery.setPageNum(query.getCurrent());
domainQuery.setPageSize(query.getSize());
domainQuery.setOrgId(query.getOrgId());
domainQuery.setFilingNo(query.getFilingNo());
domainQuery.setFilingStatusCode(query.getFilingStatusCode());
// 直连 infrastructure 层 Mapper跳过 domain由 XML 直接返回 CO无需转换
Page<QualFilingChangeOrgCO> page = new Page<>(domainQuery.getPageNum(), domainQuery.getPageSize());
IPage<QualFilingChangeOrgCO> result = qualFilingChangeMapper.orgPage(page, domainQuery);
return PageResponse.of(result.getRecords(), result.getTotal());
}
@Override
public SingleResponse<Long> start(Long filingId) {
return SingleResponse.success(qualFilingOrchestrator.startChange(filingId));

View File

@ -4,6 +4,7 @@ import org.qinan.safetyeval.client.co.QualFilingChangeAggregationCO;
import org.qinan.safetyeval.client.co.QualFilingChangeComplianceCheckResultCO;
import org.qinan.safetyeval.client.co.QualFilingChangeHistoryCO;
import org.qinan.safetyeval.client.co.QualFilingChangeCO;
import org.qinan.safetyeval.client.co.QualFilingChangeOrgCO;
import org.qinan.safetyeval.client.dto.AggregationSaveOrEditQualFilingChangeCmd;
import org.qinan.safetyeval.client.dto.PageResponse;
import org.qinan.safetyeval.client.dto.SingleResponse;
@ -31,6 +32,8 @@ public interface QualFilingChangeApi {
PageResponse<QualFilingChangeCO> page(QualFilingChangePageQuery query);
PageResponse<QualFilingChangeOrgCO> orgPage(QualFilingChangePageQuery query);
SingleResponse<Long> start(Long filingId);
SingleResponse<Void> submit(QualFilingChangeSubmitCmd cmd);

View File

@ -0,0 +1,111 @@
package org.qinan.safetyeval.client.co;
import java.math.BigDecimal;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* COClient Object
* <p>
* Mapper XML Entity
* filing_id
* </p>
*
* @author safety-eval
*/
@Data
public class QualFilingChangeOrgCO {
@ApiModelProperty(value = "主键ID")
private Long id;
@ApiModelProperty(value = "机构ID")
private Long orgId;
@ApiModelProperty(value = "备案申请ID")
private Long filingId;
@ApiModelProperty(value = "审核ID")
private Long filingReviewId;
@ApiModelProperty(value = "变更备案ID")
private Long changeFilingId;
@ApiModelProperty(value = "驳回原因")
private String rejectReason;
@ApiModelProperty(value = "提交时间")
private java.time.LocalDateTime submitTime;
@ApiModelProperty(value = "备案地区编码")
private String filingTerritoryCode;
@ApiModelProperty(value = "备案地区名称")
private String filingTerritoryName;
@ApiModelProperty(value = "备案单位名称")
private String filingUnitName;
@ApiModelProperty(value = "备案单位类型编码")
private String filingUnitTypeCode;
@ApiModelProperty(value = "备案单位类型名称")
private String filingUnitTypeName;
@ApiModelProperty(value = "备案编号")
private String filingNo;
@ApiModelProperty(value = "经营范围")
private String businessScope;
@ApiModelProperty(value = "注册地址")
private String registerAddress;
@ApiModelProperty(value = "办公地址")
private String officeAddress;
@ApiModelProperty(value = "统一社会信用代码")
private String creditCode;
@ApiModelProperty(value = "资质证书编号")
private String qualCertNo;
@ApiModelProperty(value = "法定代表人电话")
private String legalPersonPhone;
@ApiModelProperty(value = "联系电话")
private String contactPhone;
@ApiModelProperty(value = "信息公开网址")
private String infoDisclosureUrl;
@ApiModelProperty(value = "固定资产总额")
private Long fixedAssetAmount;
@ApiModelProperty(value = "档案室面积")
private BigDecimal archiveRoomArea;
@ApiModelProperty(value = "专职评价人员数量")
private Integer fulltimeEvaluatorCount;
@ApiModelProperty(value = "注册安全工程师数量")
private Integer registeredEngineerCount;
@ApiModelProperty(value = "办公场所面积")
private BigDecimal workplaceArea;
@ApiModelProperty(value = "单位简介")
private String unitIntro;
@ApiModelProperty(value = "附件地址")
private String attachmentUrl;
@ApiModelProperty(value = "备案状态编码(1已备案2审核中3已打回4变更审核中5暂存)")
private Integer filingStatusCode;
@ApiModelProperty(value = "备案状态名称")
private String filingStatusName;
@ApiModelProperty(value = "租户ID")
private Long tenantId;
}

View File

@ -1,9 +1,18 @@
package org.qinan.safetyeval.infrastructure.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.qinan.safetyeval.client.co.QualFilingChangeOrgCO;
import org.qinan.safetyeval.domain.query.QualFilingChangeQuery;
import org.qinan.safetyeval.infrastructure.dataobject.QualFilingChangeDO;
@Mapper
public interface QualFilingChangeMapper extends BaseMapper<QualFilingChangeDO> {
/**
* filing_idCO
*/
IPage<QualFilingChangeOrgCO> orgPage(IPage<QualFilingChangeOrgCO> page, @Param("query") QualFilingChangeQuery query);
}

View File

@ -52,4 +52,60 @@
`id`, `org_id`, `filing_id`, `change_filing_id`, `filing_review_id`, `reject_reason`, `submit_time`, `filing_territory_code`, `filing_territory_name`, `filing_unit_name`, `filing_unit_type_code`, `filing_unit_type_name`, `filing_no`, `business_scope`, `register_address`, `office_address`, `credit_code`, `qual_cert_no`, `legal_person_phone`, `contact_phone`, `info_disclosure_url`, `fixed_asset_amount`, `archive_room_area`, `fulltime_evaluator_count`, `registered_engineer_count`, `workplace_area`, `unit_intro`, `attachment_url`, `filing_status_code`, `filing_status_name`, `delete_enum`, `remarks`, `create_name`, `update_name`, `tenant_id`, `version`, `create_time`, `update_time`, `create_id`, `update_id`, `env`
</sql>
<!-- 机构端分页查询结果映射直接映射为CO无需Entity中转 -->
<resultMap id="OrgCOResultMap" type="org.qinan.safetyeval.client.co.QualFilingChangeOrgCO">
<id column="id" property="id"/>
<result column="org_id" property="orgId"/>
<result column="filing_id" property="filingId"/>
<result column="change_filing_id" property="changeFilingId"/>
<result column="reject_reason" property="rejectReason"/>
<result column="filing_review_id" property="filingReviewId"/>
<result column="submit_time" property="submitTime"/>
<result column="filing_territory_code" property="filingTerritoryCode"/>
<result column="filing_territory_name" property="filingTerritoryName"/>
<result column="filing_unit_name" property="filingUnitName"/>
<result column="filing_unit_type_code" property="filingUnitTypeCode"/>
<result column="filing_unit_type_name" property="filingUnitTypeName"/>
<result column="filing_no" property="filingNo"/>
<result column="business_scope" property="businessScope"/>
<result column="register_address" property="registerAddress"/>
<result column="office_address" property="officeAddress"/>
<result column="credit_code" property="creditCode"/>
<result column="qual_cert_no" property="qualCertNo"/>
<result column="legal_person_phone" property="legalPersonPhone"/>
<result column="contact_phone" property="contactPhone"/>
<result column="info_disclosure_url" property="infoDisclosureUrl"/>
<result column="fixed_asset_amount" property="fixedAssetAmount"/>
<result column="archive_room_area" property="archiveRoomArea"/>
<result column="fulltime_evaluator_count" property="fulltimeEvaluatorCount"/>
<result column="registered_engineer_count" property="registeredEngineerCount"/>
<result column="workplace_area" property="workplaceArea"/>
<result column="unit_intro" property="unitIntro"/>
<result column="attachment_url" property="attachmentUrl"/>
<result column="filing_status_code" property="filingStatusCode"/>
<result column="filing_status_name" property="filingStatusName"/>
<result column="tenant_id" property="tenantId"/>
</resultMap>
<!-- 机构端分页查询每个filing_id只取最新一条变更记录直接返回CO -->
<select id="orgPage" resultMap="OrgCOResultMap">
SELECT * FROM (
SELECT
ROW_NUMBER() OVER (PARTITION BY qfc.filing_id ORDER BY qfc.id DESC) AS rn,
qfc.*
FROM qual_filing_change qfc
<where>
qfc.delete_enum = 'false'
AND qfc.org_id = #{query.orgId}
<if test="query.filingNo != null and query.filingNo != ''">
AND qfc.filing_no = #{query.filingNo}
</if>
<if test="query.filingStatusCode != null">
AND qfc.filing_status_code = #{query.filingStatusCode}
</if>
</where>
) temp
WHERE temp.rn = 1
</select>
</mapper>