init
parent
ca3c003587
commit
b018e2e71c
|
|
@ -772,6 +772,55 @@ create table `eval_sign_record` (
|
|||
) engine=innodb default charset=utf8mb4 collate=utf8mb4_0900_ai_ci comment='项目签字记录表';
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `qual_on_site_review` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '自增主键',
|
||||
`biz_type` varchar(64) DEFAULT NULL COMMENT '资质类型:add 新增 ,change:变更',
|
||||
`biz_id` bigint DEFAULT NULL COMMENT '业务id',
|
||||
`org_id` bigint NOT NULL COMMENT '受审查机构ID (关联机构表)',
|
||||
`review_date_start` datetime NOT NULL COMMENT '现场审查开始时间',
|
||||
`review_location` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '审查地点',
|
||||
`review_members` varchar(512) DEFAULT NULL COMMENT '审查组成员名单',
|
||||
`material_requirements` text COMMENT '材料准备要求',
|
||||
`supervisor_contact` varchar(64) DEFAULT NULL COMMENT '监管联系人姓名',
|
||||
`contact_phone` varchar(32) DEFAULT NULL COMMENT '监管联系电话',
|
||||
`status` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '1' COMMENT '现场审查状态(AGENCY_PENDING_CONFIRMATION机构待确认、AGENCY_CONFIRMED机构已确认、REVIEW_PASSED核查通过、REVIEW_FAILED核查不通过)',
|
||||
`review_opinion` varchar(256) DEFAULT NULL COMMENT '核查意见',
|
||||
`delete_enum` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '删除标识true false',
|
||||
`remarks` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '备注',
|
||||
`create_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '创建人姓名',
|
||||
`update_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '更新人姓名',
|
||||
`tenant_id` bigint DEFAULT NULL COMMENT '租户id',
|
||||
`version` int DEFAULT NULL COMMENT '版本',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '修改时间',
|
||||
`create_id` bigint DEFAULT NULL COMMENT '创建人id',
|
||||
`update_id` bigint DEFAULT NULL COMMENT '修改人id',
|
||||
`env` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '环境',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_review_date_start` (`review_date_start`),
|
||||
KEY `idx_org_id` (`org_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='资质现场核查';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `qual_on_site_review_file` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '自增主键',
|
||||
`qual_on_site_review_id` bigint NOT NULL COMMENT '资质现场核查id',
|
||||
`file_name` varchar(128) NOT NULL COMMENT '文件名称',
|
||||
`file_url` varchar(1024) NOT NULL COMMENT '文件url',
|
||||
`delete_enum` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '删除标识true false',
|
||||
`remarks` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '备注',
|
||||
`create_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '创建人姓名',
|
||||
`update_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '更新人姓名',
|
||||
`tenant_id` bigint DEFAULT NULL COMMENT '租户id',
|
||||
`version` int DEFAULT NULL COMMENT '版本',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '修改时间',
|
||||
`create_id` bigint DEFAULT NULL COMMENT '创建人id',
|
||||
`update_id` bigint DEFAULT NULL COMMENT '修改人id',
|
||||
`env` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '环境',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_qual_on_site_review_id` (`qual_on_site_review_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='资质现场核查-文件信息';
|
||||
|
||||
set foreign_key_checks = 1;
|
||||
|
||||
-- =============================================
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ import org.qinan.safetyeval.client.review.request.QualOnSiteReviewUpdateCmd;
|
|||
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewCo;
|
||||
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewMonitorCo;
|
||||
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewOrgCo;
|
||||
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewStatisticsCo;
|
||||
import org.qinan.safetyeval.domain.constant.QualOnSiteReviewStatusEnum;
|
||||
import org.qinan.safetyeval.infrastructure.adapter.ThreadLocalUserInfoAdapter;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
|
@ -59,6 +60,12 @@ public class QualOnSiteReviewController implements Serializable {
|
|||
return qualOnSiteReviewServiceI.orgPage(qry);
|
||||
}
|
||||
|
||||
@GetMapping("/statistics")
|
||||
@ApiOperation("资质现场核查统计")
|
||||
public SingleResponse<QualOnSiteReviewStatisticsCo> statistics(@RequestParam(required = false) Long orgId) {
|
||||
return SingleResponse.of(qualOnSiteReviewServiceI.statistics(orgId));
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
@ApiOperation("查询资质现场核查详情页面")
|
||||
public SingleResponse<QualOnSiteReviewCo> getInfo(@PathVariable("id") Long id) {
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import org.qinan.safetyeval.client.review.request.QualOnSiteReviewPageQry;
|
|||
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewCo;
|
||||
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewMonitorCo;
|
||||
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewOrgCo;
|
||||
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewStatisticsCo;
|
||||
import org.qinan.safetyeval.infrastructure.persistence.mapper.QualOnSiteReviewMapper;
|
||||
import org.qinan.safetyeval.infrastructure.persistence.queryservice.QualOnSiteReviewQueryService;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
|
@ -62,4 +63,14 @@ public class QualOnSiteReviewPageQueryExe {
|
|||
return org.qinan.safetyeval.client.dto.PageResponse.of(list, page.getTotal());
|
||||
}
|
||||
|
||||
/**
|
||||
* 资质现场核查统计
|
||||
*
|
||||
* @param orgId 机构ID(为空时统计全部)
|
||||
* @return 统计结果
|
||||
*/
|
||||
public QualOnSiteReviewStatisticsCo executeStatistics(Long orgId) {
|
||||
return qualOnSiteReviewMapper.statistics(orgId);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import org.qinan.safetyeval.client.review.request.QualOnSiteReviewUpdateCmd;
|
|||
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewCo;
|
||||
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewMonitorCo;
|
||||
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewOrgCo;
|
||||
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewStatisticsCo;
|
||||
|
||||
/**
|
||||
* 资质现场核查
|
||||
|
|
@ -90,5 +91,13 @@ public interface QualOnSiteReviewServiceI {
|
|||
*/
|
||||
boolean uploadReviewResult(QualOnSiteReviewResultUploadCmd qualOnSiteReviewResultUploadCmd);
|
||||
|
||||
/**
|
||||
* 资质现场核查统计
|
||||
*
|
||||
* @param orgId 机构ID(为空时统计全部)
|
||||
* @return 统计结果
|
||||
*/
|
||||
QualOnSiteReviewStatisticsCo statistics(Long orgId);
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ import org.qinan.safetyeval.client.review.request.QualOnSiteReviewUpdateCmd;
|
|||
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewCo;
|
||||
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewMonitorCo;
|
||||
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewOrgCo;
|
||||
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewStatisticsCo;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
|
|
@ -80,4 +81,9 @@ public class QualOnSiteReviewServiceImpl implements QualOnSiteReviewServiceI {
|
|||
return qualOnSiteReviewUpdateCommandExe.execute(qualOnSiteReviewResultUploadCmd);
|
||||
}
|
||||
|
||||
@Override
|
||||
public QualOnSiteReviewStatisticsCo statistics(Long orgId) {
|
||||
return qualOnSiteReviewPageQueryExe.executeStatistics(orgId);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,6 +25,12 @@ public class QualOnSiteReviewAddCmd implements Serializable {
|
|||
@ApiModelProperty(value = "资质类型:add 新增 ,change:变更")
|
||||
@Size(max = 64, message = "资质类型不能超过64个字符")
|
||||
private String bizType;
|
||||
/**
|
||||
* 受审查机构ID (关联机构表)
|
||||
*/
|
||||
@ApiModelProperty(value = "受审查机构ID (关联机构表)", required = true)
|
||||
@NotNull(message = "受审查机构ID不能为空")
|
||||
private Long orgId;
|
||||
/**
|
||||
* 业务id
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -23,6 +23,12 @@ public class QualOnSiteReviewCo extends ClientObject {
|
|||
*/
|
||||
@ApiModelProperty(value = "资质类型:add 新增 ,change:变更")
|
||||
private String bizType;
|
||||
/**
|
||||
* 受审查机构ID (关联机构表)
|
||||
*/
|
||||
@ApiModelProperty(value = "受审查机构ID (关联机构表)")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING)
|
||||
private Long orgId;
|
||||
/**
|
||||
* 业务id
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -0,0 +1,36 @@
|
|||
package org.qinan.safetyeval.client.review.response;
|
||||
|
||||
import com.alibaba.cola.dto.ClientObject;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* 资质现场核查统计Co
|
||||
*
|
||||
* @Author: ltq
|
||||
* @Date: 2026-07-21
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class QualOnSiteReviewStatisticsCo extends ClientObject {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty(value = "通知总数")
|
||||
private Integer totalCount;
|
||||
|
||||
@ApiModelProperty(value = "本年度累计")
|
||||
private Integer annualCumulativeCount;
|
||||
|
||||
@ApiModelProperty(value = "待开展审查")
|
||||
private Integer pendingReviewCount;
|
||||
|
||||
@ApiModelProperty(value = "未来30日内")
|
||||
private Integer nextThirtyDaysCount;
|
||||
|
||||
@ApiModelProperty(value = "已完成")
|
||||
private Integer completedCount;
|
||||
|
||||
@ApiModelProperty(value = "审查结果已归档")
|
||||
private Integer archivedCount;
|
||||
}
|
||||
|
|
@ -9,6 +9,7 @@ import org.qinan.safetyeval.client.review.request.QualOnSiteReviewOrgPageQry;
|
|||
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewCo;
|
||||
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewMonitorCo;
|
||||
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewOrgCo;
|
||||
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewStatisticsCo;
|
||||
import org.qinan.safetyeval.infrastructure.persistence.domainobject.QualOnSiteReviewDO;
|
||||
|
||||
import java.util.List;
|
||||
|
|
@ -27,4 +28,12 @@ public interface QualOnSiteReviewMapper extends BaseMapper<QualOnSiteReviewDO> {
|
|||
|
||||
List<QualOnSiteReviewOrgCo> orgPage(@Param("page") Page<QualOnSiteReviewOrgCo> page,
|
||||
@Param("query") QualOnSiteReviewOrgPageQry query);
|
||||
|
||||
/**
|
||||
* 资质现场核查统计(单条SQL聚合)
|
||||
*
|
||||
* @param orgId 机构ID(为空时统计全部)
|
||||
* @return 统计结果
|
||||
*/
|
||||
QualOnSiteReviewStatisticsCo statistics(@Param("orgId") Long orgId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -105,4 +105,21 @@
|
|||
</if>
|
||||
order by review.id desc
|
||||
</select>
|
||||
|
||||
<!-- 资质现场核查统计:单条SQL聚合返回全部指标 -->
|
||||
<select id="statistics"
|
||||
resultType="org.qinan.safetyeval.client.review.response.QualOnSiteReviewStatisticsCo">
|
||||
select
|
||||
count(*) as totalCount,
|
||||
SUM(CASE WHEN YEAR(create_time) = YEAR(CURDATE()) THEN 1 ELSE 0 END) AS annualCumulativeCount,
|
||||
SUM(CASE WHEN status IN ('AGENCY_PENDING_CONFIRMATION', 'AGENCY_CONFIRMED') THEN 1 ELSE 0 END) AS pendingReviewCount,
|
||||
SUM(CASE WHEN review_date_start BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 30 DAY) THEN 1 ELSE 0 END) AS nextThirtyDaysCount,
|
||||
SUM(CASE WHEN status = 'REVIEW_PASSED' THEN 1 ELSE 0 END) AS completedCount,
|
||||
SUM(CASE WHEN status = 'REVIEW_FAILED' THEN 1 ELSE 0 END) AS archivedCount
|
||||
from qual_on_site_review
|
||||
where delete_enum = 'false'
|
||||
<if test="orgId != null">
|
||||
and org_id = #{orgId}
|
||||
</if>
|
||||
</select>
|
||||
</mapper>
|
||||
Loading…
Reference in New Issue