feat: 资质申请监控

dev^2
zhanglei 2026-07-14 10:24:47 +08:00
parent f3dd76298d
commit 9cd57ab23e
9 changed files with 88 additions and 4 deletions

View File

@ -114,4 +114,10 @@ public class QualFilingController {
return qualFilingApi.detail(id);
}
@ApiOperation("资质监控页面")
@GetMapping("/qualificationMonitoringPage")
public PageResponse<QualFilingCO> qualificationMonitoringPage(@Validated QualificationMonitoringQuery query) {
return qualFilingApi.qualificationMonitoringPage(query);
}
}

View File

@ -11,7 +11,6 @@ import org.qinan.safetyeval.client.co.QualFilingCO;
import org.qinan.safetyeval.client.co.QualFilingComplianceCheckResultCO;
import org.qinan.safetyeval.client.co.QualFilingDetailCO;
import org.qinan.safetyeval.client.dto.*;
import org.qinan.safetyeval.domain.constant.AlertStatusEnum;
import org.qinan.safetyeval.domain.constant.QualFilingApplyTypeEnum;
import org.qinan.safetyeval.domain.constant.QualFilingReviewResultEnum;
import org.qinan.safetyeval.domain.entity.*;
@ -21,7 +20,6 @@ import org.qinan.safetyeval.infrastructure.dataobject.*;
import org.qinan.safetyeval.infrastructure.mapper.*;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -251,6 +249,12 @@ public class QualFilingExecutor implements QualFilingApi {
}
}
@Override
public PageResponse<QualFilingCO> qualificationMonitoringPage(QualificationMonitoringQuery query) {
PageResult<QualFilingCO> pageResult = qualFilingOrchestrator.qualificationMonitoringPage(query);
return PageResponse.of(pageResult.getRecords(), pageResult.getTotal());
}
private QualFilingCO toLegacyCO(QualFilingEntity entity) {
if (entity == null) {
return null;

View File

@ -1,9 +1,11 @@
package org.qinan.safetyeval.app.orchestrator;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.qinan.safetyeval.app.support.*;
import org.qinan.safetyeval.client.co.*;
import org.qinan.safetyeval.client.dto.QualFilingModifyCmd;
import org.qinan.safetyeval.client.dto.QualFilingPageQuery;
import org.qinan.safetyeval.client.dto.QualificationMonitoringQuery;
import org.qinan.safetyeval.domain.change.gateway.QualFilingCommitmentChangeGateway;
import org.qinan.safetyeval.domain.change.gateway.QualFilingMaterialChangeGateway;
import org.qinan.safetyeval.domain.change.gateway.QualFilingPersonnelChangeGateway;
@ -17,8 +19,10 @@ import org.qinan.safetyeval.domain.query.PageResult;
import org.qinan.safetyeval.domain.query.QualFilingQuery;
import org.qinan.safetyeval.domain.support.QualFilingExpertCheckSupport;
import org.qinan.safetyeval.infrastructure.adapter.auth.AuthUserContextAdapter;
import org.qinan.safetyeval.infrastructure.mapper.QualFilingMapper;
import org.qinan.safetyeval.infrastructure.support.OrgContextResolver;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -100,6 +104,9 @@ public class QualFilingOrchestrator {
@Resource
private OrgContextResolver orgContextResolver;
@Autowired
private QualFilingMapper qualFilingMapper;
@Value("${safety-eval.public-api.tenant-id:0}")
private Long fallbackTenantId;
@ -1093,4 +1100,10 @@ public class QualFilingOrchestrator {
}
return fallbackTenantId != null && fallbackTenantId > 0 ? fallbackTenantId : null;
}
public PageResult<QualFilingCO> qualificationMonitoringPage(QualificationMonitoringQuery query) {
Page<QualFilingCO> page = new Page<>(query.getCurrent(), query.getSize());
List<QualFilingCO> co = qualFilingMapper.qualificationMonitoringPage(page, query);
return PageResult.of(co, page.getTotal(), page.getCurrent(), page.getSize());
}
}

View File

@ -43,4 +43,6 @@ public interface QualFilingApi {
SingleResponse<QualFilingCO> aggregationSaveOrEdit(AggregationSaveOrEditQualFilingCmd cmd);
void review(QualFilingReviewAddCmd cmd);
PageResponse<QualFilingCO> qualificationMonitoringPage(QualificationMonitoringQuery query);
}

View File

@ -126,4 +126,11 @@ public class QualFilingCO {
@ApiModelProperty(value = "租户ID")
private Long tenantId;
///////////////机构相关信息
@ApiModelProperty(value = "区划名称")
private String districtName;
@ApiModelProperty(value = "单位名称")
private String unitName;
}

View File

@ -1,8 +1,6 @@
package org.qinan.safetyeval.client.dto;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import lombok.Data;
import lombok.EqualsAndHashCode;

View File

@ -0,0 +1,28 @@
package org.qinan.safetyeval.client.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
*
*
* @author safety-eval
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class QualificationMonitoringQuery extends BasePageQuery {
/////////////////////机构相关信息
@ApiModelProperty(value = "统一社会信用代码")
private String creditCode;
@ApiModelProperty(value = "单位名称")
private String unitName;
@ApiModelProperty(value = "预警状态 normal:正常person_rate:人员比例预警")
private String alertStatus;
@ApiModelProperty(value = "经营范围")
private String businessScope;
}

View File

@ -1,9 +1,16 @@
package org.qinan.safetyeval.infrastructure.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.qinan.safetyeval.client.co.QualFilingCO;
import org.qinan.safetyeval.client.dto.QualificationMonitoringQuery;
import org.qinan.safetyeval.infrastructure.dataobject.QualFilingDO;
import java.util.List;
@Mapper
public interface QualFilingMapper extends BaseMapper<QualFilingDO> {
List<QualFilingCO> qualificationMonitoringPage(@Param("page") Page<QualFilingCO> page, @Param("query") QualificationMonitoringQuery query);
}

View File

@ -53,4 +53,23 @@
`id`, `org_id`, `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`, `origin_filing_id`, `reject_reason`, `submit_time`, `approve_time`, `filing_status_code`, `filing_status_name`, `apply_type_code`, `apply_type_name`, `delete_enum`, `remarks`, `create_name`, `update_name`, `tenant_id`, `version`, `create_time`, `update_time`, `create_id`, `update_id`, `env`
</sql>
<select id="qualificationMonitoringPage" resultType="org.qinan.safetyeval.client.co.QualFilingCO">
select info.credit_code as creditCode, info.unit_name as unitName, filing.* from org_info as info
left join qual_filing as filing on info.id = filing.org_id
where 1=1
<if test="query.creditCode != null">
and info.credit_code = #{query.creditCode}
</if>
<if test="query.unitName != null">
and info.unit_name like concat('%',#{query.unitName},'%')
</if>
<if test="query.alertStatus != null">
and filing.alert_status = #{query.alertStatus}
</if>
<if test="query.businessScope != null">
and filing.expert_status like concat('%',#{query.unitName},'%')
</if>
order by filing.id desc
</select>
</mapper>