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='项目签字记录表';
|
) 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;
|
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.QualOnSiteReviewCo;
|
||||||
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewMonitorCo;
|
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewMonitorCo;
|
||||||
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewOrgCo;
|
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.domain.constant.QualOnSiteReviewStatusEnum;
|
||||||
import org.qinan.safetyeval.infrastructure.adapter.ThreadLocalUserInfoAdapter;
|
import org.qinan.safetyeval.infrastructure.adapter.ThreadLocalUserInfoAdapter;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
@ -59,6 +60,12 @@ public class QualOnSiteReviewController implements Serializable {
|
||||||
return qualOnSiteReviewServiceI.orgPage(qry);
|
return qualOnSiteReviewServiceI.orgPage(qry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/statistics")
|
||||||
|
@ApiOperation("资质现场核查统计")
|
||||||
|
public SingleResponse<QualOnSiteReviewStatisticsCo> statistics(@RequestParam(required = false) Long orgId) {
|
||||||
|
return SingleResponse.of(qualOnSiteReviewServiceI.statistics(orgId));
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping("/{id}")
|
@GetMapping("/{id}")
|
||||||
@ApiOperation("查询资质现场核查详情页面")
|
@ApiOperation("查询资质现场核查详情页面")
|
||||||
public SingleResponse<QualOnSiteReviewCo> getInfo(@PathVariable("id") Long id) {
|
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.QualOnSiteReviewCo;
|
||||||
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewMonitorCo;
|
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewMonitorCo;
|
||||||
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewOrgCo;
|
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.mapper.QualOnSiteReviewMapper;
|
||||||
import org.qinan.safetyeval.infrastructure.persistence.queryservice.QualOnSiteReviewQueryService;
|
import org.qinan.safetyeval.infrastructure.persistence.queryservice.QualOnSiteReviewQueryService;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
@ -62,4 +63,14 @@ public class QualOnSiteReviewPageQueryExe {
|
||||||
return org.qinan.safetyeval.client.dto.PageResponse.of(list, page.getTotal());
|
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.QualOnSiteReviewCo;
|
||||||
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewMonitorCo;
|
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewMonitorCo;
|
||||||
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewOrgCo;
|
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);
|
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.QualOnSiteReviewCo;
|
||||||
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewMonitorCo;
|
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewMonitorCo;
|
||||||
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewOrgCo;
|
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewOrgCo;
|
||||||
|
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewStatisticsCo;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -80,4 +81,9 @@ public class QualOnSiteReviewServiceImpl implements QualOnSiteReviewServiceI {
|
||||||
return qualOnSiteReviewUpdateCommandExe.execute(qualOnSiteReviewResultUploadCmd);
|
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:变更")
|
@ApiModelProperty(value = "资质类型:add 新增 ,change:变更")
|
||||||
@Size(max = 64, message = "资质类型不能超过64个字符")
|
@Size(max = 64, message = "资质类型不能超过64个字符")
|
||||||
private String bizType;
|
private String bizType;
|
||||||
|
/**
|
||||||
|
* 受审查机构ID (关联机构表)
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "受审查机构ID (关联机构表)", required = true)
|
||||||
|
@NotNull(message = "受审查机构ID不能为空")
|
||||||
|
private Long orgId;
|
||||||
/**
|
/**
|
||||||
* 业务id
|
* 业务id
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,12 @@ public class QualOnSiteReviewCo extends ClientObject {
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "资质类型:add 新增 ,change:变更")
|
@ApiModelProperty(value = "资质类型:add 新增 ,change:变更")
|
||||||
private String bizType;
|
private String bizType;
|
||||||
|
/**
|
||||||
|
* 受审查机构ID (关联机构表)
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "受审查机构ID (关联机构表)")
|
||||||
|
@JsonFormat(shape = JsonFormat.Shape.STRING)
|
||||||
|
private Long orgId;
|
||||||
/**
|
/**
|
||||||
* 业务id
|
* 业务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.QualOnSiteReviewCo;
|
||||||
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewMonitorCo;
|
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewMonitorCo;
|
||||||
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewOrgCo;
|
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 org.qinan.safetyeval.infrastructure.persistence.domainobject.QualOnSiteReviewDO;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -27,4 +28,12 @@ public interface QualOnSiteReviewMapper extends BaseMapper<QualOnSiteReviewDO> {
|
||||||
|
|
||||||
List<QualOnSiteReviewOrgCo> orgPage(@Param("page") Page<QualOnSiteReviewOrgCo> page,
|
List<QualOnSiteReviewOrgCo> orgPage(@Param("page") Page<QualOnSiteReviewOrgCo> page,
|
||||||
@Param("query") QualOnSiteReviewOrgPageQry query);
|
@Param("query") QualOnSiteReviewOrgPageQry query);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 资质现场核查统计(单条SQL聚合)
|
||||||
|
*
|
||||||
|
* @param orgId 机构ID(为空时统计全部)
|
||||||
|
* @return 统计结果
|
||||||
|
*/
|
||||||
|
QualOnSiteReviewStatisticsCo statistics(@Param("orgId") Long orgId);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -105,4 +105,21 @@
|
||||||
</if>
|
</if>
|
||||||
order by review.id desc
|
order by review.id desc
|
||||||
</select>
|
</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>
|
</mapper>
|
||||||
Loading…
Reference in New Issue