From cc41cb420abb36348bb3fee445dab3ef83c26101 Mon Sep 17 00:00:00 2001 From: wxz Date: Tue, 9 May 2023 15:56:48 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E7=BA=A2=E8=89=B2=E4=BB=A3=E5=8A=9E?= =?UTF-8?q?=E3=80=91=E5=81=9A=E4=BA=86=E4=B8=80=E7=82=B9=EF=BC=8C=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E4=B8=80=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...LingShanAgentServiceProcessStatusEnum.java | 59 ++++++ .../WorkCloseAgentServiceFormDTO.java | 18 ++ .../AgentServiceResiSubmitFormDTO.java | 35 ++++ .../ResiMyCreatedAgentServiceResultDTO.java | 41 +++++ .../WorkServiceAgentResultDTO.java | 25 +++ .../LingShanAgentServiceController.java | 131 +++++++++++++ .../dao/LingshanAgentServiceCategoryDao.java | 16 ++ .../dao/LingshanAgentServiceRecordDao.java | 16 ++ .../LingshanAgentServiceCategoryEntity.java | 39 ++++ .../LingshanAgentServiceRecordEntity.java | 131 +++++++++++++ .../service/LingShanAgentServiceService.java | 20 ++ .../impl/LingShanAgentServiceServiceImpl.java | 173 ++++++++++++++++++ .../LingshanAgentServiceCategoryDao.xml | 20 ++ .../mapper/LingshanAgentServiceRecordDao.xml | 39 ++++ .../com/epmet/constant/RoleKeyConstants.java | 5 + 15 files changed, 768 insertions(+) create mode 100644 epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/LingShanAgentServiceProcessStatusEnum.java create mode 100644 epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/agentservice/WorkCloseAgentServiceFormDTO.java create mode 100644 epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/lingshan/AgentServiceResiSubmitFormDTO.java create mode 100644 epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/agentservice/ResiMyCreatedAgentServiceResultDTO.java create mode 100644 epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/agentservice/WorkServiceAgentResultDTO.java create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/LingShanAgentServiceController.java create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/LingshanAgentServiceCategoryDao.java create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/LingshanAgentServiceRecordDao.java create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LingshanAgentServiceCategoryEntity.java create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LingshanAgentServiceRecordEntity.java create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LingShanAgentServiceService.java create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LingShanAgentServiceServiceImpl.java create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LingshanAgentServiceCategoryDao.xml create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LingshanAgentServiceRecordDao.xml diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/LingShanAgentServiceProcessStatusEnum.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/LingShanAgentServiceProcessStatusEnum.java new file mode 100644 index 0000000000..a96310b991 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/LingShanAgentServiceProcessStatusEnum.java @@ -0,0 +1,59 @@ +package com.epmet; + +/** + * @Description 红色待办-待办状态枚举 + * @Author wangxianzhang + * @Time 2023/5/9 9:59 AM + */ +public enum LingShanAgentServiceProcessStatusEnum { + // 办理状态。0待受理,1已受理,2已驳回,3已办结,-1已撤回 + + WAIT_ACCEPT(0, "待受理"), + ACCEPTED(1, "已受理"), + REJECTED(2, "已驳回"), + CLOSED(3, "已办结"), + WITHDRAW(-1, "已撤回"); + + private int statusCode; + + private String statusName; + + LingShanAgentServiceProcessStatusEnum(int status, String name) { + this.statusCode = status; + this.statusName = name; + } + + public static LingShanAgentServiceProcessStatusEnum getByStatus(int statusCode) { + for (LingShanAgentServiceProcessStatusEnum e : LingShanAgentServiceProcessStatusEnum.values()) { + if (e.statusCode == statusCode) { + return e; + } + } + return null; + } + + public static LingShanAgentServiceProcessStatusEnum getByName(String statusName) { + for (LingShanAgentServiceProcessStatusEnum e : LingShanAgentServiceProcessStatusEnum.values()) { + if (e.statusName.equals(statusName)) { + return e; + } + } + return null; + } + + public int getStatusCode() { + return statusCode; + } + + public void setStatusCode(int statusCode) { + this.statusCode = statusCode; + } + + public String getStatusName() { + return statusName; + } + + public void setStatusName(String statusName) { + this.statusName = statusName; + } +} diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/agentservice/WorkCloseAgentServiceFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/agentservice/WorkCloseAgentServiceFormDTO.java new file mode 100644 index 0000000000..5a949299f6 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/agentservice/WorkCloseAgentServiceFormDTO.java @@ -0,0 +1,18 @@ +package com.epmet.dto.form.agentservice; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.util.List; + +/** + * 工作端:代理服务办结 + */ +@Data +public class WorkCloseAgentServiceFormDTO { + @NotBlank(message = "待办服务ID必填") + private String id; + + private String processDesc; + private List processAttachments; +} \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/lingshan/AgentServiceResiSubmitFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/lingshan/AgentServiceResiSubmitFormDTO.java new file mode 100644 index 0000000000..f4f914c07d --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/lingshan/AgentServiceResiSubmitFormDTO.java @@ -0,0 +1,35 @@ +package com.epmet.dto.form.lingshan; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.util.Date; +import java.util.List; + +@Data +public class AgentServiceResiSubmitFormDTO { + + public interface Create extends CustomerClientShowGroup {} + + @NotBlank(message = "网格ID不能为空", groups = { Create.class }) + private String gridId; + @NotBlank(message = "服务类别不能为空", groups = { Create.class }) + private String serviceCategory; + @NotBlank(message = "详细说明不能为空", groups = { Create.class }) + private String content; + @NotBlank(message = "预约服务地点不能为空", groups = { Create.class }) + private String exceptServeAddress; + @NotBlank(message = "联系人不能为空", groups = { Create.class }) + private String contactName; + @NotBlank(message = "联系电话不能为空", groups = { Create.class }) + private String contactMobile; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @NotNull(message = "预约服务时间不能为空", groups = { Create.class }) + private Date exceptServeTime; + private List attachmentsList; +} diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/agentservice/ResiMyCreatedAgentServiceResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/agentservice/ResiMyCreatedAgentServiceResultDTO.java new file mode 100644 index 0000000000..1922dea3bd --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/agentservice/ResiMyCreatedAgentServiceResultDTO.java @@ -0,0 +1,41 @@ +package com.epmet.dto.result.agentservice; + +import lombok.Data; + +import java.util.Date; + +@Data +public class ResiMyCreatedAgentServiceResultDTO { + + private String serviceCategory; + private String serviceCategoryName; + private String content; + private Date createdTime; + // 待受理 + private Date exceptServeTime; + private String exceptServeAddress; + + /** + * 处理时间 + */ + private Date processTime; + + /** + * 处理说明 + */ + private String processDesc; + + /** + * 办结时间 + */ + private Date closeTime; + + /** + * 办结说明 + */ + private String closeDesc; + + private Integer processStatus; + + private String processStatusName; +} diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/agentservice/WorkServiceAgentResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/agentservice/WorkServiceAgentResultDTO.java new file mode 100644 index 0000000000..83c8f040e4 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/agentservice/WorkServiceAgentResultDTO.java @@ -0,0 +1,25 @@ +package com.epmet.dto.result.agentservice; + +import lombok.Data; + +import java.util.Date; + +/** + * @Description 工作单-服务代办列表 + * @Author wangxianzhang + * @Time 2023/5/9 10:52 AM + */ +@Data +public class WorkServiceAgentResultDTO { + + private Integer serviceCategory; + private String serviceCategoryName; + + private Date createdTime; + private String content; + + // 待受理 + private Date exceptServeTime; + private String exceptServeAddress; + +} diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/LingShanAgentServiceController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/LingShanAgentServiceController.java new file mode 100644 index 0000000000..f27ffc4181 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/LingShanAgentServiceController.java @@ -0,0 +1,131 @@ +package com.epmet.controller; + +import com.epmet.LingShanAgentServiceProcessStatusEnum; +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.exception.ValidateException; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.dto.form.agentservice.WorkCloseAgentServiceFormDTO; +import com.epmet.dto.form.lingshan.AgentServiceResiSubmitFormDTO; +import com.epmet.dto.result.agentservice.ResiMyCreatedAgentServiceResultDTO; +import com.epmet.dto.result.agentservice.WorkServiceAgentResultDTO; +import com.epmet.service.LingShanAgentServiceService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + +/** + * @Description 灵山-服务代办 + * @Author wangxianzhang + * @Time 2023/5/6 2:49 PM + */ +@RestController +@RequestMapping("lingshan/serviceAgent") +public class LingShanAgentServiceController { + + @Autowired + private LingShanAgentServiceService lingShanServiceAgentService; + + /** + * @description: 居民端-提交代办服务 + * @param form: + * @return + * @author: WangXianZhang + * @date: 2023/5/6 3:02 PM + */ + @PostMapping("resi/submit") + public Result resiSubmit(@RequestBody AgentServiceResiSubmitFormDTO form) { + ValidatorUtils.validateEntity(form, AgentServiceResiSubmitFormDTO.Create.class); + lingShanServiceAgentService.resiSubmit(form); + return new Result(); + } + + /** + * @description: 我创建的 + * @return + * @author: WangXianZhang + * @date: 2023/5/9 10:06 AM + */ + @GetMapping("resi/mycreated") + public Result> myCreated(@RequestParam(value = "processStatus", required = false) Integer processStatus, + @RequestParam("gridId") String gridId, + @RequestParam("pageNo") Integer pageNo, + @RequestParam("pageSize") Integer pageSize) { + + PageData pd = lingShanServiceAgentService.myCreatedList(processStatus, gridId, pageNo, pageSize); + return new Result().ok(pd); + } + + /** + * @description: 工作端-服务列表 + * 这个接口返回的跟居民端一样,所以暂时就调用居民端一样的接口了。 + * @param processStatus: + * @param gridId: + * @return + * @author: WangXianZhang + * @date: 2023/5/9 10:59 AM + */ + @GetMapping("work/serviceList") + public Result> workServiceList(@RequestParam(value = "processStatus", required = false) Integer processStatus, + @RequestParam("gridId") String gridId, + @RequestParam("pageNo") Integer pageNo, + @RequestParam("pageSize") Integer pageSize) { + PageData pd = lingShanServiceAgentService.myCreatedList(processStatus, gridId, pageNo, pageSize); + return new Result().ok(pd); + } + + /** + * @description: 工作端提交处理。没几个参数,不值当用dto了 + * @return + * @author: WangXianZhang + * @date: 2023/5/9 11:10 AM + */ + @PostMapping("work/process") + public Result workProcess(@RequestBody Map input) { + + String id = (String) input.get("id"); + Integer processType = (Integer) input.get("processType"); + String processDesc = (String) input.get("processDesc"); + + if (StringUtils.isAnyBlank(id) || processType == null) { + throw new ValidateException("参数错误"); + } + + LingShanAgentServiceProcessStatusEnum processTypeEnum = LingShanAgentServiceProcessStatusEnum.getByStatus(processType); + + // 如果是驳回,那么描述必填 + if (processTypeEnum == LingShanAgentServiceProcessStatusEnum.REJECTED + && StringUtils.isBlank(processDesc)) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, "驳回操作时,驳回原因为必填项"); + } + + lingShanServiceAgentService.workProcess(id, processType, processDesc); + return new Result(); + } + + /** + * @description: 工作端:办结 + * @param input: + * @return + * @author: WangXianZhang + * @date: 2023/5/9 2:57 PM + */ + @PostMapping("work/close") + public Result workClose(@RequestBody WorkCloseAgentServiceFormDTO input) { + ValidatorUtils.validateEntity(input); + + String id = input.getId(); + String processDesc = input.getProcessDesc(); + List processAttachments = input.getProcessAttachments(); + + lingShanServiceAgentService.workClose(id, processDesc, processAttachments); + return new Result(); + } + + +} diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/LingshanAgentServiceCategoryDao.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/LingshanAgentServiceCategoryDao.java new file mode 100644 index 0000000000..7d23603738 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/LingshanAgentServiceCategoryDao.java @@ -0,0 +1,16 @@ +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.entity.LingshanAgentServiceCategoryEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * 待办服务类别 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-05-06 + */ +@Mapper +public interface LingshanAgentServiceCategoryDao extends BaseDao { + +} \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/LingshanAgentServiceRecordDao.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/LingshanAgentServiceRecordDao.java new file mode 100644 index 0000000000..f75e7e08df --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/LingshanAgentServiceRecordDao.java @@ -0,0 +1,16 @@ +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.entity.LingshanAgentServiceRecordEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * 待办服务记录 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-05-06 + */ +@Mapper +public interface LingshanAgentServiceRecordDao extends BaseDao { + +} \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LingshanAgentServiceCategoryEntity.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LingshanAgentServiceCategoryEntity.java new file mode 100644 index 0000000000..60ba1474d3 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LingshanAgentServiceCategoryEntity.java @@ -0,0 +1,39 @@ +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.TableName; + +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 待办服务类别 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-05-06 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("lingshan_agent_service_category") +public class LingshanAgentServiceCategoryEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 租户号 + */ + private String customerId; + + /** + * 类别名称 + */ + private String categoryName; + + /** + * 描述 + */ + private String description; + +} diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LingshanAgentServiceRecordEntity.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LingshanAgentServiceRecordEntity.java new file mode 100644 index 0000000000..a4d3a8c67e --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LingshanAgentServiceRecordEntity.java @@ -0,0 +1,131 @@ +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; + +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 待办服务记录 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-05-06 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("lingshan_agent_service_record") +public class LingshanAgentServiceRecordEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 租户号 + */ + @TableField(fill = FieldFill.INSERT) + private String customerId; + + /** + * 申请人ID(居民端用户ID) + */ + private String applicantId; + + /** + * 申请人姓名 + */ + private String applicantName; + + /** + * 代办员ID。默认使用空字符串。 + */ + private String agentId; + + /** + * 代办员姓名 + */ + private String agentName; + + /** + * 提交者所在网格ID + */ + private String gridId; + + /** + * 组织id路径,含本级,含网格id + */ + private String orgIdPath; + + private String attachments; + + /** + * 服务类型id + */ + private String serviceCategory; + + /** + * 预约服务时间 + */ + private Date exceptServeTime; + + /** + * 预约服务地点 + */ + private String exceptServeAddress; + + /** + * 受理时间。状态变为受理的时间 + */ + private Date processTime; + private String processDesc; + + private String processAttachments; + + /** + * 联系人姓名 + */ + private String contactName; + + /** + * 联系电话 + */ + private String contactMobile; + + /** + * 办理状态。0待受理,1已受理,2已驳回,3已办结,-1已撤回 + */ + private Integer processStatus; + + /** + * 办结时间 + */ + private Date closeTime; + + /** + * 办结说明 + */ + private String closeDesc; + + /** + * 内容,详细说明 + */ + private String content; + + /** + * 满意度评价。-1不满意,0基本满意,1非常满意 + */ + private Integer satisfication; + + /** + * 经度 + */ + private String longitude; + /** + * 纬度 + */ + private String latitude; + +} diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LingShanAgentServiceService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LingShanAgentServiceService.java new file mode 100644 index 0000000000..1f9e7093a5 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LingShanAgentServiceService.java @@ -0,0 +1,20 @@ +package com.epmet.service; + +import com.epmet.commons.tools.page.PageData; +import com.epmet.dto.form.lingshan.AgentServiceResiSubmitFormDTO; +import com.epmet.dto.result.agentservice.ResiMyCreatedAgentServiceResultDTO; +import com.epmet.dto.result.agentservice.WorkServiceAgentResultDTO; + +import java.util.List; + +public interface LingShanAgentServiceService { + void resiSubmit(AgentServiceResiSubmitFormDTO form); + + PageData myCreatedList(Integer processStatus, String gridId, Integer pageNo, Integer pageSize); + + PageData workServiceList(Integer processStatus, String gridId); + + void workProcess(String id, Integer processType, String processDesc); + + void workClose(String id, String processDesc, List processAttachments); +} diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LingShanAgentServiceServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LingShanAgentServiceServiceImpl.java new file mode 100644 index 0000000000..b75d84f059 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LingShanAgentServiceServiceImpl.java @@ -0,0 +1,173 @@ +package com.epmet.service.impl; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.epmet.LingShanAgentServiceProcessStatusEnum; +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.redis.common.CustomerOrgRedis; +import com.epmet.commons.tools.redis.common.CustomerResiUserRedis; +import com.epmet.commons.tools.redis.common.bean.GridInfoCache; +import com.epmet.commons.tools.redis.common.bean.ResiUserInfoCache; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.EpmetRequestHolder; +import com.epmet.commons.tools.utils.PidUtils; +import com.epmet.dao.LingshanAgentServiceCategoryDao; +import com.epmet.dao.LingshanAgentServiceRecordDao; +import com.epmet.dto.form.lingshan.AgentServiceResiSubmitFormDTO; +import com.epmet.dto.result.agentservice.ResiMyCreatedAgentServiceResultDTO; +import com.epmet.dto.result.agentservice.WorkServiceAgentResultDTO; +import com.epmet.entity.LingshanAgentServiceCategoryEntity; +import com.epmet.entity.LingshanAgentServiceRecordEntity; +import com.epmet.service.LingShanAgentServiceService; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +@Service +@Slf4j +public class LingShanAgentServiceServiceImpl implements LingShanAgentServiceService { + + @Autowired + private LingshanAgentServiceCategoryDao agentServiceCategoryDao; + + @Autowired + private LingshanAgentServiceRecordDao agentServiceRecordDao; + + + @Override + public void resiSubmit(AgentServiceResiSubmitFormDTO form) { + // 判断类别是否存在 + if (agentServiceCategoryDao.selectById(form.getServiceCategory()) == null) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, "【代办服务】未找到指定的服务类别ID:" + form.getServiceCategory()); + } + + ResiUserInfoCache resiInfo = CustomerResiUserRedis.getUserBaseInfo(EpmetRequestHolder.getLoginUserId()); + + LingshanAgentServiceRecordEntity e2Insert = ConvertUtils.sourceToTarget(form, LingshanAgentServiceRecordEntity.class); + e2Insert.setAttachments(JSON.toJSONString(form.getAttachmentsList())); + e2Insert.setApplicantId(EpmetRequestHolder.getLoginUserId()); + e2Insert.setApplicantName(resiInfo.getRealName()); + e2Insert.setProcessStatus(LingShanAgentServiceProcessStatusEnum.WAIT_ACCEPT.getStatusCode()); //初始为待受理状态 + + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(form.getGridId()); + e2Insert.setOrgIdPath(PidUtils.convertPid2OrgIdPath(gridInfo.getId(), gridInfo.getPids())); + + agentServiceRecordDao.insert(e2Insert); + } + + @Override + public PageData myCreatedList(Integer processStatus, String gridId, Integer pageNo, Integer pageSize) { + LambdaQueryWrapper q = new LambdaQueryWrapper<>(); + q.eq(processStatus != null, LingshanAgentServiceRecordEntity::getProcessStatus, processStatus); + q.eq(LingshanAgentServiceRecordEntity::getGridId, gridId); + + PageHelper.startPage(pageNo, pageSize); + List l = agentServiceRecordDao.selectList(q); + + List rl = l.stream().map(e -> { + ResiMyCreatedAgentServiceResultDTO d = ConvertUtils.sourceToTarget(e, ResiMyCreatedAgentServiceResultDTO.class); + + d.setProcessStatusName(LingShanAgentServiceProcessStatusEnum.getByStatus(e.getProcessStatus()).getStatusName()); + + LingshanAgentServiceCategoryEntity sc = agentServiceCategoryDao.selectById(e.getServiceCategory()); + if (sc != null) { + d.setServiceCategoryName(sc.getCategoryName()); + } else { + log.error("【红色待办】居民-我创建的列表:未找到服务类别数据:{}", e.getServiceCategory()); + } + + return d; + }).collect(Collectors.toList()); + + return new PageData<>(rl, new PageInfo<>(l).getTotal()); + } + + @Override + public PageData workServiceList(Integer processStatus, String gridId) { + + + return null; + } + + @Override + public void workProcess(String id, Integer processType, String processDesc) { + LingshanAgentServiceRecordEntity service; + if ((service = agentServiceRecordDao.selectById(id)) == null) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, "【代办服务】未找到指定的服务信息,ID:" + id); + } + + // 执行状态变更校验 + statusChangeValid(service.getProcessStatus(), processType); + + Date now = new Date(); + + LingshanAgentServiceRecordEntity e2Update = new LingshanAgentServiceRecordEntity(); + e2Update.setId(id); + // 处理,处理受理状态和描述,以及处理时间 + e2Update.setProcessStatus(processType); + e2Update.setProcessDesc(processDesc); + e2Update.setProcessTime(now); + + agentServiceRecordDao.updateById(e2Update); + } + + @Override + public void workClose(String id, String processDesc, List processAttachments) { + LingshanAgentServiceRecordEntity service; + if ((service = agentServiceRecordDao.selectById(id)) == null) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, "【代办服务】未找到指定的服务信息,ID:" + id); + } + + // 执行状态变更校验 + LingShanAgentServiceProcessStatusEnum closeStatusEnum = LingShanAgentServiceProcessStatusEnum.CLOSED; + statusChangeValid(service.getProcessStatus(), closeStatusEnum.getStatusCode()); + + Date now = new Date(); + + LingshanAgentServiceRecordEntity e2Update = new LingshanAgentServiceRecordEntity(); + e2Update.setId(id); + // 办结,设置处理状态,办结描述,办结时间 + e2Update.setProcessStatus(closeStatusEnum.getStatusCode()); + e2Update.setCloseDesc(processDesc); + e2Update.setCloseTime(now); + + agentServiceRecordDao.updateById(e2Update); + } + + /** + * @description: 状态变更校验 + * @param oldStatus: 旧状态 + * @param newStatus: 新状态 + * @return + * @author: WangXianZhang + * @date: 2023/5/9 1:57 PM + */ + private void statusChangeValid(Integer oldStatus, Integer newStatus) { + if (newStatus.intValue() == LingShanAgentServiceProcessStatusEnum.WITHDRAW.getStatusCode() + && oldStatus.intValue() != LingShanAgentServiceProcessStatusEnum.WAIT_ACCEPT.getStatusCode()) { + // 只有待处理状态,才能撤回 + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, String.format("【代办服务】当前状态为'%s',不允许撤回", LingShanAgentServiceProcessStatusEnum.getByStatus(oldStatus).getStatusName())); + } + + if ((newStatus.intValue() == LingShanAgentServiceProcessStatusEnum.ACCEPTED.getStatusCode() + || newStatus.intValue() == LingShanAgentServiceProcessStatusEnum.REJECTED.getStatusCode()) + && oldStatus.intValue() != LingShanAgentServiceProcessStatusEnum.WAIT_ACCEPT.getStatusCode()) { + // 如果要接受,或者拒绝,那么当前状态必须为待处理 + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, String.format("【代办服务】当前状态为'%s',不允许操作", LingShanAgentServiceProcessStatusEnum.getByStatus(oldStatus).getStatusName())); + } + + if (newStatus.intValue() == LingShanAgentServiceProcessStatusEnum.CLOSED.getStatusCode() + && oldStatus.intValue() != LingShanAgentServiceProcessStatusEnum.ACCEPTED.getStatusCode()) { + // 如果要关闭,那么当前状态必须为已受理 + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, String.format("【代办服务】当前状态为'%s',不允许操作", LingShanAgentServiceProcessStatusEnum.getByStatus(oldStatus).getStatusName())); + } + } +} diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LingshanAgentServiceCategoryDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LingshanAgentServiceCategoryDao.xml new file mode 100644 index 0000000000..8790cc1735 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LingshanAgentServiceCategoryDao.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LingshanAgentServiceRecordDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LingshanAgentServiceRecordDao.xml new file mode 100644 index 0000000000..3eea2c861e --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LingshanAgentServiceRecordDao.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/constant/RoleKeyConstants.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/constant/RoleKeyConstants.java index 3a8361be2c..e565f9da43 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/constant/RoleKeyConstants.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/constant/RoleKeyConstants.java @@ -49,4 +49,9 @@ public class RoleKeyConstants { */ public static final String ROLE_KEY_GRID_MEMBER = "grid_member"; + /** + * 代办员 + */ + public static final String ROLE_KEY_AGENT = "agent"; + }