diff --git a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/regulator/RegulatorEvalProjectMonitorController.java b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/regulator/RegulatorEvalProjectMonitorController.java index ef79ac7..ec2edbd 100644 --- a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/regulator/RegulatorEvalProjectMonitorController.java +++ b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/regulator/RegulatorEvalProjectMonitorController.java @@ -8,11 +8,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.RegulatorEvalProjectSurveyPageCO; import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectSurveyStatCO; +import org.qinan.safetyeval.client.co.regulator.RegulatorEvalSurveyClockInCO; 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.client.dto.regulator.RegulatorEvalProjectSurveyPageQuery; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -20,6 +23,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.util.List; @Api(tags = "监管端-安评项目") @RestController @@ -66,4 +70,17 @@ public class RegulatorEvalProjectMonitorController { return regulatorEvalProjectMonitorApi.realtimePage(query); } + @ApiOperation("项目踏勘监管分页") + @GetMapping("/survey-page") + public PageResponse surveyPage(@Validated RegulatorEvalProjectSurveyPageQuery query) { + return regulatorEvalProjectMonitorApi.surveyPage(query); + } + + @ApiOperation("人员打卡信息查询") + @GetMapping("/survey-clock-in") + public SingleResponse> surveyClockInList( + @ApiParam("项目ID") @RequestParam String projectId) { + return regulatorEvalProjectMonitorApi.surveyClockInList(projectId); + } + } diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/regulator/RegulatorEvalProjectMonitorExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/regulator/RegulatorEvalProjectMonitorExecutor.java index b402f6a..5018e7e 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/regulator/RegulatorEvalProjectMonitorExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/regulator/RegulatorEvalProjectMonitorExecutor.java @@ -9,11 +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.RegulatorEvalProjectSurveyPageCO; import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectSurveyStatCO; +import org.qinan.safetyeval.client.co.regulator.RegulatorEvalSurveyClockInCO; 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.client.dto.regulator.RegulatorEvalProjectSurveyPageQuery; import org.qinan.safetyeval.domain.constant.EvalTypeEnum; import org.qinan.safetyeval.domain.constant.IndustryEnum; import org.qinan.safetyeval.domain.constant.ProjectProcessWaringStatusEnum; @@ -28,11 +31,15 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.LocalDate; +import java.util.List; import java.util.stream.Collectors; @Service public class RegulatorEvalProjectMonitorExecutor implements RegulatorEvalProjectMonitorApi { + /** 项目踏勘监管-应到人数固定为2 */ + private static final int SURVEY_EXPECTED_COUNT = 2; + @Resource private EvalProjectGateway evalProjectGateway; @Resource @@ -91,6 +98,25 @@ public class RegulatorEvalProjectMonitorExecutor implements RegulatorEvalProject return PageResponse.of(result.getRecords(), result.getTotal()); } + @Override + public PageResponse surveyPage(RegulatorEvalProjectSurveyPageQuery query) { + Page page = new Page<>(query.getCurrent(), query.getSize()); + IPage result = evalProjectMapper.selectRegulatorSurveyPage(page, query); + if (result.getRecords() != null) { + // 应到人数固定为2;人脸识别直接复用签退统计结果 + result.getRecords().forEach(co -> { + co.setExpectedCount(SURVEY_EXPECTED_COUNT); + co.setFaceCount(co.getSignOutCount()); + }); + } + return PageResponse.of(result.getRecords(), result.getTotal()); + } + + @Override + public SingleResponse> surveyClockInList(String projectId) { + return SingleResponse.success(evalProjectMapper.selectRegulatorSurveyClockInList(Long.parseLong(projectId))); + } + private void fillDisplayFields(RegulatorEvalProjectMonitorPageCO co) { LocalDate planEndDate = co.getPlanEndDate(); // 当前时间大于等于计划完成日期,则项目逾期:预警状态与过程预警状态置为异常 diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/regulator/RegulatorEvalProjectMonitorApi.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/regulator/RegulatorEvalProjectMonitorApi.java index bb49d27..485f451 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/regulator/RegulatorEvalProjectMonitorApi.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/regulator/RegulatorEvalProjectMonitorApi.java @@ -4,11 +4,16 @@ 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.RegulatorEvalProjectSurveyPageCO; import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectSurveyStatCO; +import org.qinan.safetyeval.client.co.regulator.RegulatorEvalSurveyClockInCO; 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.client.dto.regulator.RegulatorEvalProjectSurveyPageQuery; + +import java.util.List; public interface RegulatorEvalProjectMonitorApi { @@ -23,4 +28,8 @@ public interface RegulatorEvalProjectMonitorApi { SingleResponse selectRegulatorSurveyStat(); PageResponse realtimePage(RegulatorEvalProjectMonitorRealtimePageQuery query); + + PageResponse surveyPage(RegulatorEvalProjectSurveyPageQuery query); + + SingleResponse> surveyClockInList(String projectId); } diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/regulator/RegulatorEvalProjectSurveyPageCO.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/regulator/RegulatorEvalProjectSurveyPageCO.java new file mode 100644 index 0000000..a2ea889 --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/regulator/RegulatorEvalProjectSurveyPageCO.java @@ -0,0 +1,47 @@ +package org.qinan.safetyeval.client.co.regulator; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 监管端-项目踏勘监管分页列表项 + */ +@Data +public class RegulatorEvalProjectSurveyPageCO { + + @ApiModelProperty("项目ID") + private String id; + + @ApiModelProperty("机构ID") + private String orgId; + + @ApiModelProperty("项目编号") + private String projectNo; + + @ApiModelProperty("项目名称") + private String projectName; + + @ApiModelProperty("评价机构") + private String orgName; + + @ApiModelProperty("应到人数(固定2)") + private Integer expectedCount; + + @ApiModelProperty("实到人数") + private Integer actualCount; + + @ApiModelProperty("签到人数") + private Integer signInCount; + + @ApiModelProperty("签退人数") + private Integer signOutCount; + + @ApiModelProperty("人脸识别人数") + private Integer faceCount; + + @ApiModelProperty("现场照片数") + private Integer scenePhotoCount; + + @ApiModelProperty("告知书文件地址") + private String notificationFileUrl; +} diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/regulator/RegulatorEvalSurveyClockInCO.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/regulator/RegulatorEvalSurveyClockInCO.java new file mode 100644 index 0000000..b8d8e8c --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/regulator/RegulatorEvalSurveyClockInCO.java @@ -0,0 +1,40 @@ +package org.qinan.safetyeval.client.co.regulator; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 监管端-项目踏勘人员打卡信息 + */ +@Data +public class RegulatorEvalSurveyClockInCO { + + @ApiModelProperty("踏勘记录ID") + private Long id; + + @ApiModelProperty("人员姓名(org_personnel.user_name)") + private String userName; + + @ApiModelProperty("项目角色") + private String role; + + @ApiModelProperty("人脸识别:0未通过 1通过") + private Integer faceState; + + @ApiModelProperty("GPS定位:0未通过 1通过") + private Integer gpsState; + + @ApiModelProperty("签到时间") + private LocalDateTime singInTime; + + @ApiModelProperty("签退时间") + private LocalDateTime signOutTime; + + @ApiModelProperty("现场照片") + private String sceneUrl; + + @ApiModelProperty("签字") + private String signatureUrl; +} diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/regulator/RegulatorEvalProjectSurveyPageQuery.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/regulator/RegulatorEvalProjectSurveyPageQuery.java new file mode 100644 index 0000000..d536572 --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/regulator/RegulatorEvalProjectSurveyPageQuery.java @@ -0,0 +1,23 @@ +package org.qinan.safetyeval.client.dto.regulator; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.qinan.safetyeval.client.dto.BasePageQuery; + +/** + * 监管端-项目踏勘监管分页查询 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class RegulatorEvalProjectSurveyPageQuery extends BasePageQuery { + + @ApiModelProperty("项目名称/编号") + private String projectNameOrNo; + + @ApiModelProperty("评价机构ID") + private Long orgId; + + @ApiModelProperty("人员打卡状态") + private String clockInStatus; +} diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/mapper/EvalProjectMapper.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/mapper/EvalProjectMapper.java index 3062af5..8c76b82 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/mapper/EvalProjectMapper.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/mapper/EvalProjectMapper.java @@ -10,8 +10,11 @@ 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.RegulatorEvalProjectSurveyPageCO; import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectSurveyStatCO; +import org.qinan.safetyeval.client.co.regulator.RegulatorEvalSurveyClockInCO; import org.qinan.safetyeval.client.dto.regulator.RegulatorEvalProjectMonitorRealtimePageQuery; +import org.qinan.safetyeval.client.dto.regulator.RegulatorEvalProjectSurveyPageQuery; import org.qinan.safetyeval.domain.query.EvalProjectQuery; import org.qinan.safetyeval.infrastructure.dataobject.EvalProjectDO; @@ -51,4 +54,16 @@ public interface EvalProjectMapper extends BaseMapper { IPage selectRegulatorMonitorPage( Page page, @Param("query") RegulatorEvalProjectMonitorRealtimePageQuery query); + /** + * 监管端-项目踏勘监管分页(未删除且法定项目,关联 org_info 获取评价机构名称, + * 关联 eval_survey 统计实到/签到/签退/人脸识别,关联 eval_survey_attach 统计现场照片与告知书) + */ + IPage selectRegulatorSurveyPage( + Page page, @Param("query") RegulatorEvalProjectSurveyPageQuery query); + + /** + * 监管端-项目踏勘人员打卡信息查询(关联 org_personnel 获取人员姓名,按项目ID查询 eval_survey) + */ + List selectRegulatorSurveyClockInList(@Param("projectId") Long projectId); + } diff --git a/safety-eval-infrastructure/src/main/resources/mapper/EvalProjectMapper.xml b/safety-eval-infrastructure/src/main/resources/mapper/EvalProjectMapper.xml index cdf5a97..9d29b05 100644 --- a/safety-eval-infrastructure/src/main/resources/mapper/EvalProjectMapper.xml +++ b/safety-eval-infrastructure/src/main/resources/mapper/EvalProjectMapper.xml @@ -171,4 +171,77 @@ ORDER BY p.id DESC + + + + + +