Selaa lähdekoodia

'新增报修单申请、处理、评价、列表和历史记录接口'

james 1 vuosi sitten
vanhempi
commit
9ff0efb9a6

+ 86 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/CrmDeviceRepairController.java

@@ -0,0 +1,86 @@
+package com.usky.iot.controller.web;
+
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.iot.domain.CrmDeviceRepair;
+import com.usky.iot.service.CrmDeviceRepairService;
+import com.usky.iot.service.vo.CrmDeviceRepairScoreVO;
+import com.usky.iot.service.vo.CrmDeviceRepairVO;
+import com.usky.iot.service.vo.PhoneVerifyVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 设备报修记录表 前端控制器
+ * </p>
+ *
+ * @author han
+ * @since 2023-09-06
+ */
+@RestController
+@RequestMapping("/crmDeviceRepair")
+public class CrmDeviceRepairController {
+    @Autowired
+    private CrmDeviceRepairService crmDeviceRepairService;
+
+    /**
+     * 报修申请
+     * @param crmDeviceRepair
+     * @return
+     */
+    @PostMapping("add")
+    ApiResult<Void> add(@RequestBody CrmDeviceRepair crmDeviceRepair){
+        crmDeviceRepairService.add(crmDeviceRepair);
+        return ApiResult.success();
+    }
+
+    /**
+     * 分页
+     * @param crmDeviceRepairVO
+     * @return
+     */
+    @PostMapping("page")
+    ApiResult<CommonPage<CrmDeviceRepair>> page(@RequestBody CrmDeviceRepairVO crmDeviceRepairVO){
+        return ApiResult.success(crmDeviceRepairService.page(crmDeviceRepairVO));
+    }
+
+    /**
+     * 填报
+     * @param crmDeviceRepair
+     * @return
+     */
+    @PostMapping("fill")
+    ApiResult<Void> fill(@RequestBody CrmDeviceRepair crmDeviceRepair){
+        crmDeviceRepairService.fill(crmDeviceRepair);
+        return ApiResult.success();
+    }
+
+    /**
+     * 服务评价
+     * @param scoreVO
+     * @return
+     */
+    @PostMapping("score")
+    ApiResult<Void> score(@RequestBody CrmDeviceRepairScoreVO scoreVO){
+        crmDeviceRepairService.score(scoreVO);
+        return ApiResult.success();
+    }
+
+    /**
+     * 获取每个手机号提交的历史记录
+     * @param phoneVerifyVO
+     * @return
+     */
+    @PostMapping("getHistory")
+    ApiResult<CommonPage<CrmDeviceRepair>> getHistory(@RequestBody PhoneVerifyVO phoneVerifyVO){
+        return ApiResult.success(crmDeviceRepairService.getHistory(phoneVerifyVO));
+    }
+}
+

+ 111 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/CrmDeviceRepair.java

@@ -0,0 +1,111 @@
+package com.usky.iot.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 设备报修记录表
+ * </p>
+ *
+ * @author han
+ * @since 2023-09-06
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class CrmDeviceRepair implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 报修单编码
+     */
+    private String repairCode;
+
+    /**
+     * 项目名称
+     */
+    private String projectName;
+
+    /**
+     * 项目地址
+     */
+    private String projectAddress;
+
+    /**
+     * 报修人
+     */
+    private String reflectName;
+
+    /**
+     * 报修手机号码
+     */
+    private String reflectPhone;
+
+    /**
+     * 报修内容
+     */
+    private String repairContent;
+
+    /**
+     * 报修图片
+     */
+    private String repairPicture;
+
+    /**
+     * 报修状态;1:受理中,2:处理完成
+     */
+    private Integer repairStatus;
+
+    /**
+     * 报修时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 处理人
+     */
+    private String handleName;
+
+    /**
+     * 处理内容
+     */
+    private String handleContent;
+
+    /**
+     * 处理时间
+     */
+    private LocalDateTime handleTime;
+
+    /**
+     * 评分
+     */
+    private Float score;
+
+    /**
+     * 评价内容
+     */
+    private String appraiseContent;
+
+    /**
+     * 组织结构ID
+     */
+    private Integer deptId;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+
+}

+ 16 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/CrmDeviceRepairMapper.java

@@ -0,0 +1,16 @@
+package com.usky.iot.mapper;
+
+import com.usky.iot.domain.CrmDeviceRepair;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 设备报修记录表 Mapper 接口
+ * </p>
+ *
+ * @author han
+ * @since 2023-09-06
+ */
+public interface CrmDeviceRepairMapper extends CrudMapper<CrmDeviceRepair> {
+
+}

+ 30 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/CrmDeviceRepairService.java

@@ -0,0 +1,30 @@
+package com.usky.iot.service;
+
+import com.usky.common.core.bean.CommonPage;
+import com.usky.iot.domain.CrmDeviceRepair;
+import com.usky.common.mybatis.core.CrudService;
+import com.usky.iot.service.vo.CrmDeviceRepairScoreVO;
+import com.usky.iot.service.vo.CrmDeviceRepairVO;
+import com.usky.iot.service.vo.PhoneVerifyVO;
+import org.springframework.web.bind.annotation.RequestBody;
+
+/**
+ * <p>
+ * 设备报修记录表 服务类
+ * </p>
+ *
+ * @author han
+ * @since 2023-09-06
+ */
+public interface CrmDeviceRepairService extends CrudService<CrmDeviceRepair> {
+
+    void add(CrmDeviceRepair crmDeviceRepair);
+
+    CommonPage<CrmDeviceRepair> page(CrmDeviceRepairVO crmDeviceRepairVO);
+
+    void fill(CrmDeviceRepair crmDeviceRepair);
+
+    void score(CrmDeviceRepairScoreVO scoreVO);
+
+    CommonPage<CrmDeviceRepair> getHistory(PhoneVerifyVO phoneVerifyVO);
+}

+ 230 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/CrmDeviceRepairServiceImpl.java

@@ -0,0 +1,230 @@
+package com.usky.iot.service.impl;
+
+import com.aliyuncs.DefaultAcsClient;
+import com.aliyuncs.IAcsClient;
+import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsRequest;
+import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsResponse;
+import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
+import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
+import com.aliyuncs.exceptions.ClientException;
+import com.aliyuncs.profile.DefaultProfile;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.google.gson.Gson;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.common.core.exception.BusinessException;
+import com.usky.common.core.util.DateUtils;
+import com.usky.common.redis.core.RedisHelper;
+import com.usky.common.security.utils.SecurityUtils;
+import com.usky.iot.domain.CrmDeviceRepair;
+import com.usky.iot.mapper.CrmDeviceRepairMapper;
+import com.usky.iot.service.CrmDeviceRepairService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import com.usky.iot.service.vo.CrmDeviceRepairScoreVO;
+import com.usky.iot.service.vo.CrmDeviceRepairVO;
+import com.usky.iot.service.vo.PhoneVerifyVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Date;
+
+/**
+ * <p>
+ * 设备报修记录表 服务实现类
+ * </p>
+ *
+ * @author han
+ * @since 2023-09-06
+ */
+@Service
+public class CrmDeviceRepairServiceImpl extends AbstractCrudService<CrmDeviceRepairMapper, CrmDeviceRepair> implements CrmDeviceRepairService {
+    @Autowired
+    private RedisHelper redisHelper;
+
+    @Override
+    public void add(CrmDeviceRepair crmDeviceRepair){
+        crmDeviceRepair.setRepairCode("bx-"+System.currentTimeMillis());
+        crmDeviceRepair.setCreateTime(LocalDateTime.now());
+        crmDeviceRepair.setRepairStatus(1);
+        crmDeviceRepair.setTenantId(SecurityUtils.getTenantId());
+
+        this.save(crmDeviceRepair);
+
+
+        //发送短信
+//        StringBuffer sendStatus = new StringBuffer();
+//        StringBuffer sendContext = new StringBuffer();
+//        DefaultProfile profile = DefaultProfile.getProfile("cn-beijing", "LTAI5tH3VvRL5BUkovCokHJX", "SaaWUouNqvcA0C746gcNOH9m6SRYN4");
+//        IAcsClient client = new DefaultAcsClient(profile);
+//        SendSmsRequest request = new SendSmsRequest();
+//        request.setPhoneNumbers(crmDeviceRepair.getReflectPhone());//接收短信的手机号码
+//        request.setSignName("上海永天科技股份有限公司");//短信签名名称
+//        request.setTemplateCode("SMS_461850226");//短信模板CODE
+//
+//        String name = crmDeviceRepair.getReflectName();
+//        request.setTemplateParam("{\"name\":\""+crmDeviceRepair.getReflectName()+"\"}");//短信模板变量对应的实际值
+//
+//        try {
+//            SendSmsResponse response = client.getAcsResponse(request);
+//            if(response.getCode() != null){
+//                if(response.getCode().equals("OK")){
+//                    sendStatus.append("1");
+//                    //查询发送短信内容
+//
+//                    try {
+//                        Thread.sleep(3000);
+//                    } catch (InterruptedException e) {
+//                        e.printStackTrace();
+//                    }
+//
+//                    QuerySendDetailsRequest request1 = new QuerySendDetailsRequest();
+//                    request1.setPhoneNumber(crmDeviceRepair.getReflectPhone());
+//                    request1.setSendDate(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")));
+//                    request1.setPageSize((long)10);
+//                    request1.setCurrentPage((long)1);
+//                    QuerySendDetailsResponse response1 = client.getAcsResponse(request1);
+//                    if(response1.getCode() != null){
+//                        if(response1.getCode().equals("OK")){
+//                            sendContext.append(response1.getSmsSendDetailDTOs().get(0).getContent());
+//                        }
+//
+//                    }
+//
+//                    crmDeviceRepair.setRepairCode("bx-"+System.currentTimeMillis());
+//                    crmDeviceRepair.setCreateTime(LocalDateTime.now());
+//                    crmDeviceRepair.setRepairStatus(1);
+//                    crmDeviceRepair.setTenantId(SecurityUtils.getTenantId());
+//
+//                    this.save(crmDeviceRepair);
+//
+//                }else{
+//                    sendStatus.append("2");
+//                }
+//            }
+//            System.out.println(new Gson().toJson(response));
+//        } catch (ClientException e) {
+//            System.out.println("ErrCode:" + e.getErrCode());
+//            System.out.println("ErrMsg:" + e.getErrMsg());
+//            System.out.println("RequestId:" + e.getRequestId());
+//        }
+
+    }
+
+    @Override
+    public CommonPage<CrmDeviceRepair> page(CrmDeviceRepairVO crmDeviceRepairVO){
+        IPage<CrmDeviceRepair> page = new Page<>(crmDeviceRepairVO.getCurrent(),crmDeviceRepairVO.getSize());
+        LambdaQueryWrapper<CrmDeviceRepair> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.like(StringUtils.isNotBlank(crmDeviceRepairVO.getProjectName()),CrmDeviceRepair::getProjectName,crmDeviceRepairVO.getProjectName())
+                .like(StringUtils.isNotBlank(crmDeviceRepairVO.getReflectName()),CrmDeviceRepair::getReflectName,crmDeviceRepairVO.getReflectName())
+                .eq(crmDeviceRepairVO.getRepairStatus() != null,CrmDeviceRepair::getRepairStatus,crmDeviceRepairVO.getRepairStatus())
+                .between(StringUtils.isNotBlank(crmDeviceRepairVO.getStartTime()) && StringUtils.isNotBlank(crmDeviceRepairVO.getEndTime()),CrmDeviceRepair::getCreateTime,crmDeviceRepairVO.getStartTime(),crmDeviceRepairVO.getEndTime())
+                .orderByDesc(CrmDeviceRepair::getId);
+        page = this.page(page,queryWrapper);
+
+        return new CommonPage<>(page.getRecords(),page.getTotal(),page.getSize(),page.getCurrent());
+
+    }
+
+    @Override
+    public void fill(CrmDeviceRepair crmDeviceRepair){
+        crmDeviceRepair.setHandleTime(LocalDateTime.now());
+        this.updateById(crmDeviceRepair);
+
+
+        //发送短信
+//        StringBuffer sendStatus = new StringBuffer();
+//        StringBuffer sendContext = new StringBuffer();
+//        DefaultProfile profile = DefaultProfile.getProfile("cn-beijing", "LTAI5tH3VvRL5BUkovCokHJX", "SaaWUouNqvcA0C746gcNOH9m6SRYN4");
+//        IAcsClient client = new DefaultAcsClient(profile);
+//        SendSmsRequest request = new SendSmsRequest();
+//        request.setPhoneNumbers(crmDeviceRepair.getReflectPhone());//接收短信的手机号码
+//        request.setSignName("上海永天科技股份有限公司");//短信签名名称
+//        request.setTemplateCode("SMS_461850226");//短信模板CODE
+//
+//        String custom = "#/pages/common/invoicing/index?projectId="+crmDeviceRepair.getRepairCode();
+//        request.setTemplateParam("{\"name\":\""+crmDeviceRepair.getReflectName()+"\","+"\"date\":\""+crmDeviceRepair.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))+"\","+"\"custom\":\""+custom+"\"}");//短信模板变量对应的实际值
+//
+//        try {
+//            SendSmsResponse response = client.getAcsResponse(request);
+//            if(response.getCode() != null){
+//                if(response.getCode().equals("OK")){
+//                    sendStatus.append("1");
+//                    //查询发送短信内容
+//
+//                    try {
+//                        Thread.sleep(3000);
+//                    } catch (InterruptedException e) {
+//                        e.printStackTrace();
+//                    }
+//
+//                    QuerySendDetailsRequest request1 = new QuerySendDetailsRequest();
+//                    request1.setPhoneNumber(crmDeviceRepair.getReflectPhone());
+//                    request1.setSendDate(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")));
+//                    request1.setPageSize((long)10);
+//                    request1.setCurrentPage((long)1);
+//                    QuerySendDetailsResponse response1 = client.getAcsResponse(request1);
+//                    if(response1.getCode() != null){
+//                        if(response1.getCode().equals("OK")){
+//                            sendContext.append(response1.getSmsSendDetailDTOs().get(0).getContent());
+//                        }
+//
+//                    }
+//
+//                    crmDeviceRepair.setHandleTime(LocalDateTime.now());
+//                    this.updateById(crmDeviceRepair);
+//
+//                }else{
+//                    sendStatus.append("2");
+//                }
+//            }
+//            System.out.println(new Gson().toJson(response));
+//        } catch (ClientException e) {
+//            System.out.println("ErrCode:" + e.getErrCode());
+//            System.out.println("ErrMsg:" + e.getErrMsg());
+//            System.out.println("RequestId:" + e.getRequestId());
+//        }
+
+    }
+
+    @Override
+    public void score(CrmDeviceRepairScoreVO scoreVO){
+        LambdaQueryWrapper<CrmDeviceRepair> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(CrmDeviceRepair::getRepairCode,scoreVO.getRepairCode());
+        CrmDeviceRepair crmDeviceRepair = this.getOne(queryWrapper);
+
+        crmDeviceRepair.setScore(scoreVO.getScore());
+        crmDeviceRepair.setAppraiseContent(scoreVO.getAppraiseContent());
+        this.updateById(crmDeviceRepair);
+    }
+
+    @Override
+    public CommonPage<CrmDeviceRepair> getHistory(PhoneVerifyVO phoneVerifyVO){
+        String phone = phoneVerifyVO.getPhone();
+        String verify = phoneVerifyVO.getVerify();
+        if(!com.usky.common.core.util.StringUtils.isBlank(phone) && !com.usky.common.core.util.StringUtils.isBlank(verify)) {
+            //手机验证码登录
+            if (com.usky.common.core.util.StringUtils.isBlank(verify)) {
+                throw new BusinessException("验证码不能为空");
+            }
+            if (!verify.equals(redisHelper.get(phone))) {
+                throw new BusinessException("验证码错误");
+            }
+            if (com.usky.common.core.util.StringUtils.isBlank(phone)) {
+                throw new BusinessException("用户名或手机号不能为空");
+            }
+        }
+        IPage<CrmDeviceRepair> page = new Page<>(phoneVerifyVO.getCurrent(), phoneVerifyVO.getSize());
+        LambdaQueryWrapper<CrmDeviceRepair> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(CrmDeviceRepair::getReflectPhone,phone)
+                .orderByDesc(CrmDeviceRepair::getId);
+        page = this.page(page,queryWrapper);
+
+        return new CommonPage<>(page.getRecords(),page.getTotal(),page.getSize(),page.getCurrent());
+    }
+}

+ 23 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/CrmDeviceRepairScoreVO.java

@@ -0,0 +1,23 @@
+package com.usky.iot.service.vo;
+
+import lombok.Data;
+
+@Data
+public class CrmDeviceRepairScoreVO {
+
+    /**
+     * 报修单编码
+     */
+    private String repairCode;
+
+    /**
+     * 评分
+     */
+    private Float score;
+
+    /**
+     * 评价内容
+     */
+    private String appraiseContent;
+
+}

+ 41 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/CrmDeviceRepairVO.java

@@ -0,0 +1,41 @@
+package com.usky.iot.service.vo;
+
+import lombok.Data;
+
+@Data
+public class CrmDeviceRepairVO {
+
+    /**
+     * 页数
+     */
+    private Integer current;
+    /**
+     * 条数
+     */
+    private Integer size;
+
+    /**
+     * 项目名称
+     */
+    private String projectName;
+
+    /**
+     * 报修人
+     */
+    private String reflectName;
+
+    /**
+     * 报修状态;1:受理中,2:处理完成
+     */
+    private Integer repairStatus;
+
+    /**
+     * 开始时间
+     */
+    private String startTime;
+
+    /**
+     * 结束时间
+     */
+    private String endTime;
+}

+ 26 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/PhoneVerifyVO.java

@@ -0,0 +1,26 @@
+package com.usky.iot.service.vo;
+
+import lombok.Data;
+
+@Data
+public class PhoneVerifyVO {
+
+    /**
+     * 页数
+     */
+    private Integer current;
+    /**
+     * 条数
+     */
+    private Integer size;
+
+    /**
+     * 手机号
+     */
+    private String phone;
+
+    /**
+     * 验证码
+     */
+    private String verify;
+}

+ 26 - 0
service-iot/service-iot-biz/src/main/resources/mapper/iot/CrmDeviceRepairMapper.xml

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.usky.iot.mapper.CrmDeviceRepairMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.iot.domain.CrmDeviceRepair">
+        <id column="id" property="id" />
+        <result column="repair_code" property="repairCode" />
+        <result column="project_name" property="projectName" />
+        <result column="project_address" property="projectAddress" />
+        <result column="reflect_name" property="reflectName" />
+        <result column="reflect_phone" property="reflectPhone" />
+        <result column="repair_content" property="repairContent" />
+        <result column="repair_picture" property="repairPicture" />
+        <result column="repair_status" property="repairStatus" />
+        <result column="create_time" property="createTime" />
+        <result column="handle_name" property="handleName" />
+        <result column="handle_content" property="handleContent" />
+        <result column="handle_time" property="handleTime" />
+        <result column="score" property="score" />
+        <result column="appraise_content" property="appraiseContent" />
+        <result column="dept_id" property="deptId" />
+        <result column="tenant_id" property="tenantId" />
+    </resultMap>
+
+</mapper>