Browse Source

2022-11-4 18:21 RMS报告管理系统提交 报告添加功能开发完毕 并初步设定几种错误说明

沈永艺 2 years ago
parent
commit
6d8f968993

+ 3 - 0
RMS/src/main/java/cn/cslg/report/common/utils/LogExceptionUtil.java

@@ -1,9 +1,12 @@
 package cn.cslg.report.common.utils;
 
+import lombok.extern.slf4j.Slf4j;
+
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.StringWriter;
 
+@Slf4j
 public class LogExceptionUtil {
 
     /**

+ 41 - 0
RMS/src/main/java/cn/cslg/report/controller/ReportController.java

@@ -1,10 +1,15 @@
 package cn.cslg.report.controller;
 
 import cn.cslg.report.common.core.base.Constants;
+import cn.cslg.report.common.utils.Response;
+import cn.cslg.report.entity.Report;
+import cn.cslg.report.service.business.ReportService;
+import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
 @Tag(name = "报告管理")
@@ -12,4 +17,40 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping(Constants.REPORT_API + "/report")
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class ReportController {
+    private final ReportService reportService;
+
+    /**
+     * @param report 报告类
+     * @author 沈永艺
+     * @date 2022-11-4
+     * @see ReportService
+     */
+    @RequestMapping(value = "/addReport", method = RequestMethod.POST)
+    @Operation(summary = "新增报告")
+    public String addReport(Report report) {
+        // TODO: 2022/11/4 关于错误提示与对应的错误码还需要制定 避免前台看到失败字样 用网络异常来代替说明
+        // 目前的错误说明有
+        //  添加成功 是正常添加成功
+        //  网络异常,添加失败 是数据库的操作或返回的数据有问题但没抛出异常
+        //  请求失败 是Service抛出了异常
+        //  服务器无响应 是未知情况 需要重点查看
+        //  网络异常 是传入参数出现了问题
+        // 以上的说明可以参考或者改变,按照实际情况使用,另外这些说明我没有设置CODE码,建议加上
+
+        if (report != null) {
+            Integer flag = reportService.addReport(report);
+            switch (flag) {
+                case 1:
+                    return Response.success("添加成功");
+                case 0:
+                    return Response.error("网络异常,添加失败");
+                case -1:
+                    return Response.error("请求失败");
+                default:
+                    return Response.error("服务器无响应");
+            }
+        } else {
+            return Response.error("网络异常");
+        }
+    }
 }

+ 34 - 0
RMS/src/main/java/cn/cslg/report/service/business/ReportService.java

@@ -1,10 +1,44 @@
 package cn.cslg.report.service.business;
 
+import cn.cslg.report.common.utils.LogExceptionUtil;
 import cn.cslg.report.entity.Report;
 import cn.cslg.report.mapper.ReportMapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
 
 @Service
+@Slf4j
 public class ReportService extends ServiceImpl<ReportMapper, Report> {
+
+    /**
+     * @author 沈永艺
+     * @param report 报告类
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public Integer addReport(Report report) {
+        try {
+            boolean addFlag = this.save(report);
+            if (addFlag) {
+                return 1;
+            } else {
+                return 0;
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("新增报告异常,异常信息:" + LogExceptionUtil.getMessage(e));
+            log.info("新增报告功能异常,开始回滚! 时间: " + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            log.info("回滚完毕! 时间: " + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
+            return -1;
+        } finally {
+            // TODO: 2022/11/4 这个Finally可以引入表日志记录 或者做点别的什么 也可以删掉
+            System.out.println("报告新增结束");
+        }
+    }
 }

+ 4 - 4
RMS/src/main/resources/application-dev.yml

@@ -6,20 +6,20 @@ spring:
     password: Xx0GWxdWQJxx6Swe
     timeout: 1000
   datasource:
-    url: jdbc:mysql://47.101.137.223:3306/PCS_TEST?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
+    url: jdbc:mysql://47.101.137.223:3306/RMS_TEST?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
     driver-class-name: com.mysql.cj.jdbc.Driver
     username: root
     password: TU5x6IeBi7rl
     dynamic:
-      primary: pas
+      primary: rms
       datasource:
         pas:
           url: jdbc:mysql://47.101.137.223:3306/pas?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
           driver-class-name: com.mysql.cj.jdbc.Driver
           username: root
           password: TU5x6IeBi7rl
-        pcs:
-          url: jdbc:mysql://47.101.137.223:3306/PCS_TEST?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
+        rms:
+          url: jdbc:mysql://47.101.137.223:3306/RMS_TEST?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
           driver-class-name: com.mysql.cj.jdbc.Driver
           username: root
           password: TU5x6IeBi7rl