dev
parent
48be6c639e
commit
a863916fc6
|
|
@ -244,6 +244,7 @@ create table `eval_project` (
|
|||
`checkin_radius_meters` int default null comment '打卡有效范围(米,手填)',
|
||||
`participants_json` json default null comment '参与人员JSON:[{"name":"名称","id":1}]',
|
||||
`project_leader_name` varchar(50) default null comment '项目负责人(手填)',
|
||||
`clock_in_status` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'NOT_CLOCKED_IN' COMMENT '人员打卡状态 : 未打卡 → NOT_CLOCKED_IN,人员未到齐 → NOT_ALL_PRESENT,正常 → NORMAL',
|
||||
`archive_flag` int not null default 0 comment '项目归档(1归档0未归档)',
|
||||
`is_statutory` tinyint not null default 0 comment '是否法定项目 1是 0否',
|
||||
`delete_enum` varchar(32) default null comment '删除标识true false',
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectMonitorCO;
|
|||
import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectMonitorPageCO;
|
||||
import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectMonitorStatCO;
|
||||
import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectNodeOverviewCO;
|
||||
import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectSurveyStatCO;
|
||||
import org.qinan.safetyeval.client.dto.PageResponse;
|
||||
import org.qinan.safetyeval.client.dto.SingleResponse;
|
||||
import org.qinan.safetyeval.client.dto.regulator.RegulatorEvalProjectMonitorPageQuery;
|
||||
|
|
@ -53,6 +54,12 @@ public class RegulatorEvalProjectMonitorController {
|
|||
return regulatorEvalProjectMonitorApi.selectRegulatorMonitorStat();
|
||||
}
|
||||
|
||||
@ApiOperation("项目踏勘监管统计")
|
||||
@GetMapping("/survey-stat")
|
||||
public SingleResponse<RegulatorEvalProjectSurveyStatCO> selectRegulatorSurveyStat() {
|
||||
return regulatorEvalProjectMonitorApi.selectRegulatorSurveyStat();
|
||||
}
|
||||
|
||||
@ApiOperation("实时监控分页")
|
||||
@GetMapping("/realtime-page")
|
||||
public PageResponse<RegulatorEvalProjectMonitorPageCO> realtimePage(@Validated RegulatorEvalProjectMonitorRealtimePageQuery query) {
|
||||
|
|
|
|||
|
|
@ -9,12 +9,14 @@ import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectMonitorCO;
|
|||
import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectMonitorPageCO;
|
||||
import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectMonitorStatCO;
|
||||
import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectNodeOverviewCO;
|
||||
import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectSurveyStatCO;
|
||||
import org.qinan.safetyeval.client.dto.PageResponse;
|
||||
import org.qinan.safetyeval.client.dto.SingleResponse;
|
||||
import org.qinan.safetyeval.client.dto.regulator.RegulatorEvalProjectMonitorPageQuery;
|
||||
import org.qinan.safetyeval.client.dto.regulator.RegulatorEvalProjectMonitorRealtimePageQuery;
|
||||
import org.qinan.safetyeval.domain.constant.EvalTypeEnum;
|
||||
import org.qinan.safetyeval.domain.constant.IndustryEnum;
|
||||
import org.qinan.safetyeval.domain.constant.ProjectProcessWaringStatusEnum;
|
||||
import org.qinan.safetyeval.domain.entity.EvalProjectEntity;
|
||||
import org.qinan.safetyeval.domain.exception.BizException;
|
||||
import org.qinan.safetyeval.domain.exception.ErrorCode;
|
||||
|
|
@ -25,6 +27,7 @@ import org.qinan.safetyeval.infrastructure.mapper.EvalProjectMapper;
|
|||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDate;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
|
|
@ -73,6 +76,11 @@ public class RegulatorEvalProjectMonitorExecutor implements RegulatorEvalProject
|
|||
return SingleResponse.success(evalProjectMapper.selectRegulatorMonitorStat());
|
||||
}
|
||||
|
||||
@Override
|
||||
public SingleResponse<RegulatorEvalProjectSurveyStatCO> selectRegulatorSurveyStat() {
|
||||
return SingleResponse.success(evalProjectMapper.selectRegulatorSurveyStat());
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResponse<RegulatorEvalProjectMonitorPageCO> realtimePage(RegulatorEvalProjectMonitorRealtimePageQuery query) {
|
||||
Page<RegulatorEvalProjectMonitorPageCO> page = new Page<>(query.getCurrent(), query.getSize());
|
||||
|
|
@ -84,6 +92,13 @@ public class RegulatorEvalProjectMonitorExecutor implements RegulatorEvalProject
|
|||
}
|
||||
|
||||
private void fillDisplayFields(RegulatorEvalProjectMonitorPageCO co) {
|
||||
|
||||
LocalDate planEndDate = co.getPlanEndDate();
|
||||
// 当前时间大于等于计划完成日期,则项目逾期:预警状态与过程预警状态置为异常
|
||||
if (planEndDate != null && !planEndDate.isAfter(LocalDate.now())) {
|
||||
co.setWaringStatus(ProjectProcessWaringStatusEnum.ABNORMAL.getValue());
|
||||
co.setProcessWaringStatus(ProjectProcessWaringStatusEnum.ABNORMAL.getValue());
|
||||
} else {
|
||||
co.setWaringStatus(ProjectProcessWaringStatusEnum.NORMAL.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectMonitorCO;
|
|||
import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectMonitorPageCO;
|
||||
import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectMonitorStatCO;
|
||||
import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectNodeOverviewCO;
|
||||
import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectSurveyStatCO;
|
||||
import org.qinan.safetyeval.client.dto.PageResponse;
|
||||
import org.qinan.safetyeval.client.dto.SingleResponse;
|
||||
import org.qinan.safetyeval.client.dto.regulator.RegulatorEvalProjectMonitorPageQuery;
|
||||
|
|
@ -19,5 +20,7 @@ public interface RegulatorEvalProjectMonitorApi {
|
|||
|
||||
SingleResponse<RegulatorEvalProjectMonitorStatCO> selectRegulatorMonitorStat();
|
||||
|
||||
SingleResponse<RegulatorEvalProjectSurveyStatCO> selectRegulatorSurveyStat();
|
||||
|
||||
PageResponse<RegulatorEvalProjectMonitorPageCO> realtimePage(RegulatorEvalProjectMonitorRealtimePageQuery query);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -72,6 +72,9 @@ public class EvalProjectCO {
|
|||
@ApiModelProperty("项目节点完成进度")
|
||||
private String projectNode;
|
||||
|
||||
@ApiModelProperty("人员打卡状态:NOT_CLOCKED_IN未打卡 NOT_ALL_PRESENT人员未到齐 NORMAL正常")
|
||||
private String clockInStatus;
|
||||
|
||||
@ApiModelProperty(value = "项目归档:1归档 0未归档", example = "0")
|
||||
private Integer archiveFlag;
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,23 @@
|
|||
package org.qinan.safetyeval.client.co.regulator;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 监管端-项目踏勘监管统计
|
||||
*/
|
||||
@Data
|
||||
public class RegulatorEvalProjectSurveyStatCO {
|
||||
|
||||
@ApiModelProperty("告知书已归档数(正常)")
|
||||
private Integer notificationArchivedCount;
|
||||
|
||||
@ApiModelProperty("告知异常数")
|
||||
private Integer notificationAbnormalCount;
|
||||
|
||||
@ApiModelProperty("人员打卡正常数")
|
||||
private Integer clockInNormalCount;
|
||||
|
||||
@ApiModelProperty("打卡异常数")
|
||||
private Integer clockInAbnormalCount;
|
||||
}
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
package org.qinan.safetyeval.domain.constant;
|
||||
|
||||
/** 人员打卡状态:NOT_CLOCKED_IN未打卡 NOT_ALL_PRESENT人员未到齐 NORMAL正常 */
|
||||
public enum ClockInStatusEnum {
|
||||
|
||||
NOT_CLOCKED_IN("NOT_CLOCKED_IN", "未打卡"),
|
||||
NOT_ALL_PRESENT("NOT_ALL_PRESENT", "人员未到齐"),
|
||||
NORMAL("NORMAL", "正常"),
|
||||
;
|
||||
|
||||
private final String code;
|
||||
private final String value;
|
||||
|
||||
ClockInStatusEnum(String code, String value) {
|
||||
this.code = code;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public static ClockInStatusEnum ofCode(String code) {
|
||||
if (code == null) {
|
||||
return null;
|
||||
}
|
||||
for (ClockInStatusEnum item : values()) {
|
||||
if (item.code.equals(code)) {
|
||||
return item;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
package org.qinan.safetyeval.domain.constant;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.EnumValue;
|
||||
import com.fasterxml.jackson.annotation.JsonValue;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
/**
|
||||
* 项目过程预警状态
|
||||
*/
|
||||
@Getter
|
||||
@RequiredArgsConstructor
|
||||
public enum ProjectProcessWaringStatusEnum {
|
||||
|
||||
NORMAL("normal", "正常"),
|
||||
ABNORMAL("abnormal", "异常"),
|
||||
;
|
||||
|
||||
@JsonValue
|
||||
@EnumValue
|
||||
private final String value;
|
||||
private final String label;
|
||||
}
|
||||
|
|
@ -28,6 +28,8 @@ public class EvalProjectEntity {
|
|||
private String projectLeaderName;
|
||||
/** 项目节点完成进度 */
|
||||
private String projectNode;
|
||||
/** 人员打卡状态:NOT_CLOCKED_IN未打卡 NOT_ALL_PRESENT人员未到齐 NORMAL正常 */
|
||||
private String clockInStatus;
|
||||
/** 1归档 0未归档 */
|
||||
private Integer archiveFlag;
|
||||
/** 是否法定项目 1是 0否 */
|
||||
|
|
|
|||
|
|
@ -29,6 +29,8 @@ public class EvalProjectDO {
|
|||
private String participantsJson;
|
||||
private String projectLeaderName;
|
||||
private String projectNode;
|
||||
/** 人员打卡状态:NOT_CLOCKED_IN未打卡 NOT_ALL_PRESENT人员未到齐 NORMAL正常 */
|
||||
private String clockInStatus;
|
||||
private Integer archiveFlag;
|
||||
/** 是否法定项目 1是 0否 */
|
||||
private Boolean isStatutory;
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import org.qinan.safetyeval.client.co.institution.EvalProjectProgressCO;
|
|||
import org.qinan.safetyeval.client.co.institution.RiskWarningCO;
|
||||
import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectMonitorPageCO;
|
||||
import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectMonitorStatCO;
|
||||
import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectSurveyStatCO;
|
||||
import org.qinan.safetyeval.client.dto.regulator.RegulatorEvalProjectMonitorRealtimePageQuery;
|
||||
import org.qinan.safetyeval.domain.query.EvalProjectQuery;
|
||||
import org.qinan.safetyeval.infrastructure.dataobject.EvalProjectDO;
|
||||
|
|
@ -39,6 +40,11 @@ public interface EvalProjectMapper extends BaseMapper<EvalProjectDO> {
|
|||
*/
|
||||
RegulatorEvalProjectMonitorStatCO selectRegulatorMonitorStat();
|
||||
|
||||
/**
|
||||
* 监管端-项目踏勘监管统计(未删除且法定项目,告知书归档+人员打卡)
|
||||
*/
|
||||
RegulatorEvalProjectSurveyStatCO selectRegulatorSurveyStat();
|
||||
|
||||
/**
|
||||
* 监管端-安评项目实时监控分页(未删除且法定项目,关联 org_info 获取评价机构名称)
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -93,6 +93,27 @@
|
|||
AND is_statutory = 1
|
||||
</select>
|
||||
|
||||
<!-- 监管端-项目踏勘监管统计:未删除且法定项目(is_statutory=1),告知书归档关联eval_survey_attach,人员打卡状态取clock_in_status -->
|
||||
<select id="selectRegulatorSurveyStat"
|
||||
resultType="org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectSurveyStatCO">
|
||||
SELECT
|
||||
IFNULL(SUM(CASE WHEN EXISTS (
|
||||
SELECT 1 FROM eval_survey_attach sa
|
||||
WHERE sa.project_id = p.id
|
||||
AND sa.attach_type_code = 'PRACTICE_NOTIFICATION'
|
||||
) THEN 1 ELSE 0 END), 0) AS notificationArchivedCount,
|
||||
IFNULL(SUM(CASE WHEN EXISTS (
|
||||
SELECT 1 FROM eval_survey_attach sa
|
||||
WHERE sa.project_id = p.id
|
||||
AND sa.attach_type_code = 'PRACTICE_NOTIFICATION'
|
||||
) THEN 0 ELSE 1 END), 0) AS notificationAbnormalCount,
|
||||
IFNULL(SUM(CASE WHEN p.clock_in_status = 'NORMAL' THEN 1 ELSE 0 END), 0) AS clockInNormalCount,
|
||||
IFNULL(SUM(CASE WHEN p.clock_in_status = 'NORMAL' THEN 0 ELSE 1 END), 0) AS clockInAbnormalCount
|
||||
FROM eval_project p
|
||||
WHERE p.delete_enum = 'false'
|
||||
AND p.is_statutory = 1
|
||||
</select>
|
||||
|
||||
<!-- 监管端-安评项目实时监控分页:未删除且法定项目(is_statutory=1),关联 org_info 获取评价机构名称,关联 eval_project_process_waring 获取预警信息 -->
|
||||
<select id="selectRegulatorMonitorPage"
|
||||
resultType="org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectMonitorPageCO">
|
||||
|
|
|
|||
Loading…
Reference in New Issue