From 6fbfe43ffcf038c83edca6ce4d627eb5c0b0c6df Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Tue, 31 May 2022 14:03:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E3=80=90=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E9=A1=B9=E7=9B=AE=E3=80=91=E6=96=B0=E5=A2=9E=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E6=9C=8D=E5=8A=A1=E5=8F=8D=E9=A6=88=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form/ServiceProjectFeedbackFormDTO.java | 20 ++++ .../IcServiceProjectController.java | 38 +++++++- .../epmet/service/IcServiceRecordService.java | 6 ++ .../impl/IcServiceRecordServiceImpl.java | 95 ++++++++++++------- 4 files changed, 121 insertions(+), 38 deletions(-) diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/ServiceProjectFeedbackFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/ServiceProjectFeedbackFormDTO.java index 8d0eb4e8b7..83ad440628 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/ServiceProjectFeedbackFormDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/ServiceProjectFeedbackFormDTO.java @@ -2,11 +2,24 @@ package com.epmet.dto.form; import lombok.Data; +import javax.validation.constraints.NotBlank; import java.util.List; @Data public class ServiceProjectFeedbackFormDTO { + /** + * 反馈接口分组 + */ + public interface FeedbackGroup {} + + /** + * 发起服务接口分组 + */ + public interface InitiateGroup {} + + @NotBlank(message = "服务记录id不能为空", groups = { FeedbackGroup.class }) + private String serviceRecordId; private String serviceProjectId; private String serviceGoal; private String serviceEffect; @@ -14,9 +27,11 @@ public class ServiceProjectFeedbackFormDTO { /** * 服务状态。in_service服务中;completed:已完成 */ + @NotBlank(message = "服务状态不能为空", groups = { FeedbackGroup.class, InitiateGroup.class }) private String serviceStatus; /** * 满意度。不满意:bad、基本满意:good、非常满意:perfect + * 按理说,服务完成的时候才可以选,不完成应该不能选,可是谁知道呢,原型也没写 */ private String satisfaction; private String longitude; @@ -26,9 +41,14 @@ public class ServiceProjectFeedbackFormDTO { @Data public static class Attachment { + + @NotBlank(message = "附件名称不能为空", groups = { FeedbackGroup.class, InitiateGroup.class }) private String attachmentName; + @NotBlank(message = "附件格式不能为空", groups = { FeedbackGroup.class, InitiateGroup.class }) private String attachmentFormat; + @NotBlank(message = "附件类型不能为空", groups = { FeedbackGroup.class, InitiateGroup.class }) private String attachmentType; + @NotBlank(message = "附件url不能为空", groups = { FeedbackGroup.class, InitiateGroup.class }) private String attachmentUrl; } } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcServiceProjectController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcServiceProjectController.java index 6a2d1e2f79..654594f7d8 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcServiceProjectController.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcServiceProjectController.java @@ -2,6 +2,8 @@ package com.epmet.controller; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; @@ -11,13 +13,11 @@ import com.epmet.commons.tools.validator.group.AddGroup; import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.dto.IcServiceProjectDTO; -import com.epmet.dto.form.IcServiceEditFormDTO; -import com.epmet.dto.form.ServiceProjectFormDTO; -import com.epmet.dto.form.ServiceProjectListFormDTO; -import com.epmet.dto.form.ServiceProjectRecordFormDTO; +import com.epmet.dto.form.*; import com.epmet.dto.result.IcServiceRecDetailRes; import com.epmet.dto.result.ServiceProjectListResultDTO; import com.epmet.dto.result.ServiceProjectRecordResultDTO; +import com.epmet.entity.IcServiceRecordEntity; import com.epmet.service.IcServiceProjectService; import com.epmet.service.IcServiceRecordService; import org.springframework.beans.factory.annotation.Autowired; @@ -211,4 +211,34 @@ public class IcServiceProjectController { return new Result(); } + + /** + * 反馈 + * @param input + * @return + */ + @PostMapping("/service/feedback") + public Result serviceFeedback(@RequestBody ServiceProjectFeedbackFormDTO input) { + ValidatorUtils.validateEntity(input, ServiceProjectFeedbackFormDTO.FeedbackGroup.class); + String serviceRecordId = input.getServiceRecordId(); + + // 做状态检查,未反馈的,服务状态为服务中的才可以反馈 + IcServiceRecordEntity serviceRecord = icServiceRecordService.selectById(serviceRecordId); + if (serviceRecord == null) { + String msg = "未找到服务记录"; + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), msg, msg); + } + + if ("completed".equals(serviceRecord.getServiceStatus())) { + String msg = "服务已完成,不能再次反馈"; + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), msg, msg); + } + + icServiceRecordService.serviceFeedback(serviceRecord.getServiceCategoryKey(), + serviceRecord.getServiceOrgId(), + serviceRecord.getServiceProjectId(), + serviceRecord.getId(), + input); + return new Result(); + } } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcServiceRecordService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcServiceRecordService.java index 58cb9c840d..1fe7cb518a 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcServiceRecordService.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcServiceRecordService.java @@ -3,6 +3,7 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; import com.epmet.dto.form.IcServiceEditFormDTO; +import com.epmet.dto.form.ServiceProjectFeedbackFormDTO; import com.epmet.dto.form.ServiceProjectRecordFormDTO; import com.epmet.dto.result.IcServiceRecDetailRes; import com.epmet.dto.result.ServiceProjectRecordResultDTO; @@ -47,4 +48,9 @@ public interface IcServiceRecordService extends BaseService query = new LambdaQueryWrapper<>(); + query.eq(IcServiceRecordEntity::getServiceProjectId, input.getServiceProjectId()); + + if (serviceRecordDao.selectCount(query) > 0) { + String msg = "该项目已经发起服务,不能重复发起"; + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), msg, msg); + } + IcServiceProjectEntity serviceProject = serviceProjectDao.selectById(input.getServiceProjectId()); IcServiceOrgEntity serviceOrg = serviceOrgDao.selectById(input.getServiceOrgId()); @@ -203,40 +215,7 @@ public class IcServiceRecordServiceImpl extends BaseServiceImpl attachmentList = feedbackDto.getAttachmentList(); - if (CollectionUtils.isNotEmpty(attachmentList)) { - for (int i = 0; i < attachmentList.size(); i++) { - ServiceProjectFeedbackFormDTO.Attachment a = attachmentList.get(i); - - IcServiceProjectAttachmentEntity at = new IcServiceProjectAttachmentEntity(); - at.setAttachmentFormat(a.getAttachmentFormat()); - at.setAttachmentName(a.getAttachmentName()); - at.setAttachmentType(a.getAttachmentType()); - at.setAttachmentUrl(a.getAttachmentUrl()); - at.setDuration(0); - at.setIcServiceId(input.getServiceProjectId()); - // 根本不需要审核,逗你玩 - at.setReason(null); - at.setStatus("auto_passed"); - at.setSort(i); - serviceProjectAttachmentDao.insert(at); - } - } + serviceFeedback(input.getServiceCategoryKey(), input.getServiceOrgId(), input.getServiceProjectId(), serviceRecord.getId(), feedbackDto); } /** @@ -283,4 +262,52 @@ public class IcServiceRecordServiceImpl extends BaseServiceImpl attachmentList = feedbackDto.getAttachmentList(); + if (CollectionUtils.isNotEmpty(attachmentList)) { + for (int i = 0; i < attachmentList.size(); i++) { + ServiceProjectFeedbackFormDTO.Attachment a = attachmentList.get(i); + + IcServiceProjectAttachmentEntity at = new IcServiceProjectAttachmentEntity(); + at.setAttachmentFormat(a.getAttachmentFormat()); + at.setAttachmentName(a.getAttachmentName()); + at.setAttachmentType(a.getAttachmentType()); + at.setAttachmentUrl(a.getAttachmentUrl()); + at.setDuration(0); + at.setIcServiceId(serviceProjectId); + // 根本不需要审核,逗你玩 + at.setReason(null); + at.setStatus("auto_passed"); + at.setSort(i); + serviceProjectAttachmentDao.insert(at); + } + } + } } \ No newline at end of file