diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/builder/ProjectReviewResultBuilder.java b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/builder/ProjectReviewResultBuilder.java index 9a1ec43..8a8e1d3 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/builder/ProjectReviewResultBuilder.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/builder/ProjectReviewResultBuilder.java @@ -26,6 +26,7 @@ public class ProjectReviewResultBuilder { prr.setOtherAdvices(mip.getOtherAdvices()); prr.setTechFeasibility(mip.getTechFeasibility()); prr.setNeedRationality(mip.getNeedRationality()); + prr.setAttachFiles(mip.getAttachFiles()); return prr; } @@ -38,6 +39,7 @@ public class ProjectReviewResultBuilder { prr.setOtherAdvices(mop.getOtherAdvices()); prr.setTechFeasibility(mop.getTechFeasibility()); prr.setNeedRationality(mop.getNeedRationality()); + prr.setAttachFiles(mop.getAttachFiles()); return prr; } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/controller/MeetingController.java b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/controller/MeetingController.java index 94a97b1..107f21d 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/controller/MeetingController.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/controller/MeetingController.java @@ -203,6 +203,13 @@ public class MeetingController { meetingManage.uploadMeetingResult(req); } + @GetMapping("/{meetingId}/result/detail") + @ApiOperation("会议结果详情") + @WebLog("会议结详情") + public void uploadMeetingResult(@PathVariable Long meetingId) { + meetingManage.meetingResultDetail(meetingId); + } + @PostMapping("/project/result/upload") @ApiOperation("评审结果上传") @WebLog("评审结果上传") diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/controller/MeetingSettingsController.java b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/controller/MeetingSettingsController.java index 422f342..ba83cf6 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/controller/MeetingSettingsController.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/controller/MeetingSettingsController.java @@ -3,11 +3,10 @@ package com.hz.pm.api.meeting.controller; import com.hz.pm.api.meeting.entity.enumeration.MeetingSettingsTypeEnum; import com.hz.pm.api.meeting.entity.req.MeetingSettingsSaveReq; import com.hz.pm.api.meeting.manage.MeetingSettingsManage; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; /** *
@@ -17,6 +16,7 @@ import org.springframework.web.bind.annotation.RestController; * @author WendyYang * @since 2023-12-27 */ +@Api(tags = "会议配置管理") @RestController @AllArgsConstructor @RequestMapping("/api/v1/meeting/settings") @@ -25,9 +25,15 @@ public class MeetingSettingsController { private final MeetingSettingsManage meetingSettingsManage; @GetMapping("/{settingsType}") + @ApiOperation("获取配置详情") public MeetingSettingsSaveReq getSettings(@PathVariable MeetingSettingsTypeEnum settingsType) { return meetingSettingsManage.getSettings(settingsType); } + @PostMapping("/save") + @ApiOperation("保存配置") + public void saveSettings(@RequestBody MeetingSettingsSaveReq req) { + meetingSettingsManage.saveSettings(req); + } } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/domain/MeetingInnerProject.java b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/domain/MeetingInnerProject.java index 1c88f29..afd1dbb 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/domain/MeetingInnerProject.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/domain/MeetingInnerProject.java @@ -58,6 +58,8 @@ public class MeetingInnerProject implements Serializable { @ApiModelProperty("建议资金(单位:万元)") private BigDecimal suggestedFunding; + private String attachFiles; + @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateOn; diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/domain/MeetingOuterProject.java b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/domain/MeetingOuterProject.java index b704cad..b552499 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/domain/MeetingOuterProject.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/domain/MeetingOuterProject.java @@ -64,6 +64,8 @@ public class MeetingOuterProject implements Serializable { @ApiModelProperty("建议资金(单位:万元)") private BigDecimal suggestedFunding; + private String attachFiles; + @ApiModelProperty("会议ID") private Long meetingId; diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/dto/ExpertInviteIgnoreTimeContentDTO.java b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/dto/InviteCallIgnoreTimeContentDTO.java similarity index 85% rename from hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/dto/ExpertInviteIgnoreTimeContentDTO.java rename to hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/dto/InviteCallIgnoreTimeContentDTO.java index bdd66dd..e44486a 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/dto/ExpertInviteIgnoreTimeContentDTO.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/dto/InviteCallIgnoreTimeContentDTO.java @@ -13,7 +13,7 @@ import java.time.LocalTime; * @since 00:27 2023/12/27 */ @Data -public class ExpertInviteIgnoreTimeContentDTO { +public class InviteCallIgnoreTimeContentDTO { private LocalTime startTime; diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/dto/MeetingBasicDTO.java b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/dto/MeetingBasicDTO.java index 0f27810..e9e29ea 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/dto/MeetingBasicDTO.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/dto/MeetingBasicDTO.java @@ -67,6 +67,7 @@ public class MeetingBasicDTO { private String contact; @ApiModelProperty("是否是系统内部项目") + @NotNull(message = "是否系统内项目不能为空") private Boolean isInnerProject; @ApiModelProperty("内部项目ID") diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/dto/ProjectReviewResultDTO.java b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/dto/ProjectReviewResultDTO.java index 3975a6f..344d644 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/dto/ProjectReviewResultDTO.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/dto/ProjectReviewResultDTO.java @@ -37,4 +37,6 @@ public class ProjectReviewResultDTO { @ApiModelProperty("建议资金(单位:万元)") private BigDecimal suggestedFunding; + private String attachFiles; + } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/enumeration/MeetingSettingsTypeEnum.java b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/enumeration/MeetingSettingsTypeEnum.java index 475db69..28bcc61 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/enumeration/MeetingSettingsTypeEnum.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/enumeration/MeetingSettingsTypeEnum.java @@ -1,5 +1,7 @@ package com.hz.pm.api.meeting.entity.enumeration; +import com.hz.pm.api.meeting.entity.dto.ExpertJudgeTimeLimitContentDTO; +import com.hz.pm.api.meeting.entity.dto.InviteCallIgnoreTimeContentDTO; import lombok.AllArgsConstructor; import lombok.Getter; @@ -15,9 +17,11 @@ import lombok.Getter; @AllArgsConstructor public enum MeetingSettingsTypeEnum { - MEETING_INVITE_IGNORE_TIME("专家抽取免打扰时段配置"), - EXPERT_JUDGE_TIME_LIMIT("专家星级评分时间配置"); + INVITE_CALL_IGNORE_TIME("专家抽取免打扰时段配置", InviteCallIgnoreTimeContentDTO.class), + SMS_SEND_IGNORE_TIME("短信发送免打扰时间段", InviteCallIgnoreTimeContentDTO.class), + EXPERT_JUDGE_TIME_LIMIT("专家星级评分时间配置", ExpertJudgeTimeLimitContentDTO.class); private final String name; + private final Class> contentClass; } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/req/MeetingSettingsSaveReq.java b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/req/MeetingSettingsSaveReq.java index 1c00594..2e879f0 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/req/MeetingSettingsSaveReq.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/req/MeetingSettingsSaveReq.java @@ -1,6 +1,6 @@ package com.hz.pm.api.meeting.entity.req; -import com.hz.pm.api.meeting.entity.dto.ExpertInviteIgnoreTimeContentDTO; +import com.hz.pm.api.meeting.entity.dto.InviteCallIgnoreTimeContentDTO; import com.hz.pm.api.meeting.entity.dto.ExpertJudgeTimeLimitContentDTO; import com.hz.pm.api.meeting.entity.enumeration.MeetingSettingsTypeEnum; import io.swagger.annotations.ApiModelProperty; @@ -32,7 +32,7 @@ public class MeetingSettingsSaveReq { public static class SettingsContentPackageDTO { @ApiModelProperty("专家邀请免打扰时段设置") - private ExpertInviteIgnoreTimeContentDTO expertInviteIgnoreTimeContent; + private InviteCallIgnoreTimeContentDTO expertInviteIgnoreTimeContent; @ApiModelProperty("专家评价时间设置") private ExpertJudgeTimeLimitContentDTO expertJudgeTimeLimitContent; diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/req/ProjectReviewResultUploadReq.java b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/req/ProjectReviewResultUploadReq.java new file mode 100644 index 0000000..2e9a9ec --- /dev/null +++ b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/req/ProjectReviewResultUploadReq.java @@ -0,0 +1,52 @@ +package com.hz.pm.api.meeting.entity.req; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; + +/** + *
+ * MeetingResultUploadReq + *
+ * + * @author WendyYang + * @since 15:35 2023/12/18 + */ +@Data +public class ProjectReviewResultUploadReq { + + @ApiModelProperty("会议ID") + @NotNull(message = "会议ID不能为空") + private Long meetingId; + + @ApiModelProperty("项目关联会议ID") + @NotNull(message = "项目关联会议ID不能为空") + private Long meetingProjectId; + + @ApiModelProperty("建设必要性") + private String buildNecessity; + + @ApiModelProperty("需求合理性") + private String needRationality; + + @ApiModelProperty("技术方案可行性") + private String techFeasibility; + + @ApiModelProperty("审核结果:1 通过、0 不通过") + private Integer reviewResult; + + @ApiModelProperty("其他意见") + private String otherAdvices; + + @ApiModelProperty("投资测算合理性") + private String investRationality; + + @ApiModelProperty("建议资金(单位:万元)") + private BigDecimal suggestedFunding; + + @ApiModelProperty("相关材料") + private String attachFiles; + +} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/vo/MeetingByManagerVO.java b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/vo/MeetingByManagerVO.java index f8be7bb..fda5e0a 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/vo/MeetingByManagerVO.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/vo/MeetingByManagerVO.java @@ -80,4 +80,13 @@ public class MeetingByManagerVO { @ApiModelProperty("是否评价") private Boolean hasJudge; + @ApiModelProperty("是否关联系统内项目") + private Boolean isInnerProject; + + @ApiModelProperty("会议结果是否上传") + private Boolean hasMeetingResult; + + @ApiModelProperty("所有项目是否已上传评审结果") + private Boolean allProjectReviewed; + } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/helper/MeetingManageHelper.java b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/helper/MeetingManageHelper.java index e510cdf..f3d83c1 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/helper/MeetingManageHelper.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/helper/MeetingManageHelper.java @@ -61,12 +61,8 @@ public class MeetingManageHelper { private final RegionCacheHelper regionCacheHelper; public void checkReviewProject(MeetingBasicDTO meetingBasic) { - if (meetingBasic.getIsInnerProject() != null) { - if (meetingBasic.getIsInnerProject()) { - Assert.notEmpty(meetingBasic.getInnerProjects(), "评审项目不能为空"); - } else { - Assert.notEmpty(meetingBasic.getProjects(), "评审项目不能为空"); - } + if (Boolean.TRUE.equals(meetingBasic.getIsInnerProject())) { + Assert.notEmpty(meetingBasic.getInnerProjects(), "评审项目不能为空"); } } @@ -117,6 +113,8 @@ public class MeetingManageHelper { result.setConnecter(meeting.getConnecter()); result.setContact(meeting.getContact()); result.setMeetingAddress(meeting.getMeetingAddress()); + result.setIsInnerProject(meeting.getIsInnerProject()); + result.setHasMeetingResult(StrUtil.isNotBlank(meeting.getResultDescription())); return result; } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/manage/ExpertExportManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/manage/ExpertExportManage.java index 922382f..2bc10df 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/manage/ExpertExportManage.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/manage/ExpertExportManage.java @@ -104,14 +104,11 @@ public class ExpertExportManage { data.setMeetingTime(DateUtil.localDateTimeFormat(meeting.getStartTime(), "yyyy-MM-dd HH:mm")); data.setMeetingAddress(meeting.getMeetingAddress()); List