From f294cb315fb8cb7ca9a7462f96fc342620051864 Mon Sep 17 00:00:00 2001
From: caozehui <2427765068@qq.com>
Date: Thu, 20 Mar 2025 11:15:20 +0800
Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E8=B0=83?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../device/pojo/constant/DevValidMessage.java | 1 +
.../plan/mapper/mapping/AdPlanMapper.xml | 4 +-
.../gather/plan/pojo/param/AdPlanParam.java | 1 +
.../plan/service/impl/AdPlanServiceImpl.java | 12 ++
.../report/controller/ReportController.java | 1 -
.../gather/report/mapper/PqReportMapper.java | 8 +-
.../report/mapper/mapping/PqReportMapper.xml | 3 +
.../pojo/constant/ReportValidMessage.java | 11 ++
.../report/pojo/enums/ReportEnableEnum.java | 22 ----
.../report/pojo/enums/ReportResponseEnum.java | 5 +-
.../gather/report/pojo/param/ReportParam.java | 6 +
.../njcn/gather/report/pojo/po/PqReport.java | 4 +-
.../gather/report/pojo/vo/PqReportVO.java | 6 +-
.../report/service/IPqReportService.java | 9 --
.../service/impl/PqReportServiceImpl.java | 117 +++++++++---------
15 files changed, 113 insertions(+), 97 deletions(-)
create mode 100644 detection/src/main/java/com/njcn/gather/report/pojo/constant/ReportValidMessage.java
delete mode 100644 detection/src/main/java/com/njcn/gather/report/pojo/enums/ReportEnableEnum.java
diff --git a/detection/src/main/java/com/njcn/gather/device/pojo/constant/DevValidMessage.java b/detection/src/main/java/com/njcn/gather/device/pojo/constant/DevValidMessage.java
index 02363996..df0fe7a6 100644
--- a/detection/src/main/java/com/njcn/gather/device/pojo/constant/DevValidMessage.java
+++ b/detection/src/main/java/com/njcn/gather/device/pojo/constant/DevValidMessage.java
@@ -210,4 +210,5 @@ public interface DevValidMessage {
String PREINVESTMENT_PLAN_NOT_BLANK = "预投资计划不能为空";
String TIMECHECK_NOT_NULL = "是否做守时检测不能为空";
String CREATEID_NOT_BLANK = "设备序列号不能为空";
+ String ASSOCIATE_REPORT_NOT_NULL = "是否关联报告不能为空";
}
diff --git a/detection/src/main/java/com/njcn/gather/plan/mapper/mapping/AdPlanMapper.xml b/detection/src/main/java/com/njcn/gather/plan/mapper/mapping/AdPlanMapper.xml
index 6c555da7..2ed76027 100644
--- a/detection/src/main/java/com/njcn/gather/plan/mapper/mapping/AdPlanMapper.xml
+++ b/detection/src/main/java/com/njcn/gather/plan/mapper/mapping/AdPlanMapper.xml
@@ -8,14 +8,14 @@
FROM pq_report
WHERE name = #{name}
AND version = #{version}
- and enable !=0
+ and state = 1
diff --git a/detection/src/main/java/com/njcn/gather/plan/pojo/param/AdPlanParam.java b/detection/src/main/java/com/njcn/gather/plan/pojo/param/AdPlanParam.java
index 8d489042..4e0d480f 100644
--- a/detection/src/main/java/com/njcn/gather/plan/pojo/param/AdPlanParam.java
+++ b/detection/src/main/java/com/njcn/gather/plan/pojo/param/AdPlanParam.java
@@ -62,6 +62,7 @@ public class AdPlanParam {
private List devIds;
@ApiModelProperty(value = "是否关联报告")
+ @NotNull(message = DevValidMessage.ASSOCIATE_REPORT_NOT_NULL)
private Integer associateReport;
@ApiModelProperty(value = "报告模板名称")
diff --git a/detection/src/main/java/com/njcn/gather/plan/service/impl/AdPlanServiceImpl.java b/detection/src/main/java/com/njcn/gather/plan/service/impl/AdPlanServiceImpl.java
index cd439356..51f6aebb 100644
--- a/detection/src/main/java/com/njcn/gather/plan/service/impl/AdPlanServiceImpl.java
+++ b/detection/src/main/java/com/njcn/gather/plan/service/impl/AdPlanServiceImpl.java
@@ -193,6 +193,18 @@ public class AdPlanServiceImpl extends ServiceImpl impleme
if (!plan1.getErrorSysId().equals(param.getErrorSysId())) {
throw new BusinessException(PlanResponseEnum.CANNOT_CHANGE_ERROR_SYS_WHEN_CHECKING);
}
+ if (param.getAssociateReport() != plan1.getAssociateReport()) {
+ throw new BusinessException(PlanResponseEnum.CANNOT_CHANGE_REPORT_WHEN_CHECKING);
+ }
+ if (param.getAssociateReport() != plan1.getAssociateReport()) {
+ throw new BusinessException(PlanResponseEnum.CANNOT_CHANGE_REPORT_WHEN_CHECKING);
+ }
+ if (param.getAssociateReport() == 1) {
+ String reportId = this.baseMapper.getReportIdByNameAndVersion(param.getReportName(), param.getReportVersion());
+ if (!reportId.equals(plan1.getReportTemplateId())) {
+ throw new BusinessException(PlanResponseEnum.CANNOT_CHANGE_REPORT_WHEN_CHECKING);
+ }
+ }
}
BeanUtil.copyProperties(param, plan2);
diff --git a/detection/src/main/java/com/njcn/gather/report/controller/ReportController.java b/detection/src/main/java/com/njcn/gather/report/controller/ReportController.java
index e0c6fa47..73445c44 100644
--- a/detection/src/main/java/com/njcn/gather/report/controller/ReportController.java
+++ b/detection/src/main/java/com/njcn/gather/report/controller/ReportController.java
@@ -21,7 +21,6 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
-import java.util.Map;
/**
diff --git a/detection/src/main/java/com/njcn/gather/report/mapper/PqReportMapper.java b/detection/src/main/java/com/njcn/gather/report/mapper/PqReportMapper.java
index 80d9b8ee..2fc9c2f2 100644
--- a/detection/src/main/java/com/njcn/gather/report/mapper/PqReportMapper.java
+++ b/detection/src/main/java/com/njcn/gather/report/mapper/PqReportMapper.java
@@ -3,11 +3,17 @@ package com.njcn.gather.report.mapper;
import com.github.yulichang.base.MPJBaseMapper;
import com.njcn.gather.report.pojo.po.PqReport;
+import java.util.List;
+
/**
* @author makejava
* @date 2025-03-19
*/
public interface PqReportMapper extends MPJBaseMapper {
-
+ /**
+ * 获取所有已被计划绑定的报告模板id
+ * @return
+ */
+ List getBoundReportIds();
}
diff --git a/detection/src/main/java/com/njcn/gather/report/mapper/mapping/PqReportMapper.xml b/detection/src/main/java/com/njcn/gather/report/mapper/mapping/PqReportMapper.xml
index 72efe3ab..a215e556 100644
--- a/detection/src/main/java/com/njcn/gather/report/mapper/mapping/PqReportMapper.xml
+++ b/detection/src/main/java/com/njcn/gather/report/mapper/mapping/PqReportMapper.xml
@@ -3,5 +3,8 @@
+
diff --git a/detection/src/main/java/com/njcn/gather/report/pojo/constant/ReportValidMessage.java b/detection/src/main/java/com/njcn/gather/report/pojo/constant/ReportValidMessage.java
new file mode 100644
index 00000000..4e6ba17b
--- /dev/null
+++ b/detection/src/main/java/com/njcn/gather/report/pojo/constant/ReportValidMessage.java
@@ -0,0 +1,11 @@
+package com.njcn.gather.report.pojo.constant;
+
+/**
+ * @author caozehui
+ * @data 2025-03-20
+ */
+public interface ReportValidMessage {
+ String NAME_NOT_BLANK = "报告模板名称不能为空";
+ String VERSION_NOT_BLANK = "报告模板版本号不能为空";
+ String ENABLE_NOT_NULL = "报告模板的启用状态不能为空";
+}
diff --git a/detection/src/main/java/com/njcn/gather/report/pojo/enums/ReportEnableEnum.java b/detection/src/main/java/com/njcn/gather/report/pojo/enums/ReportEnableEnum.java
deleted file mode 100644
index 7a0b3349..00000000
--- a/detection/src/main/java/com/njcn/gather/report/pojo/enums/ReportEnableEnum.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.njcn.gather.report.pojo.enums;
-
-import lombok.Getter;
-
-/**
- * @author caozehui
- * @data 2025-03-20
- */
-@Getter
-public enum ReportEnableEnum {
- DELETE(0, "删除"),
- ENABLE(1, "启用"),
- DISABLE(2, "禁用");
-
- private int code;
- private String desc;
-
- ReportEnableEnum(int code, String desc) {
- this.code = code;
- this.desc = desc;
- }
-}
diff --git a/detection/src/main/java/com/njcn/gather/report/pojo/enums/ReportResponseEnum.java b/detection/src/main/java/com/njcn/gather/report/pojo/enums/ReportResponseEnum.java
index b27885eb..29cd309f 100644
--- a/detection/src/main/java/com/njcn/gather/report/pojo/enums/ReportResponseEnum.java
+++ b/detection/src/main/java/com/njcn/gather/report/pojo/enums/ReportResponseEnum.java
@@ -11,7 +11,10 @@ public enum ReportResponseEnum {
FILE_UPLOAD_FAILED("A012001", "文件上传失败"),
FILE_SUFFIX_ERROR("A012002", "文件后缀错误,请上传.docx文件"),
- REPORT_REPEATED("A012003", "已存在相同版本、相同名称的报告");
+ REPORT_REPEATED("A012003", "已存在相同版本、相同名称的报告"),
+ FILE_NOT_NULL("A012004", "上传的文件不能为空"),
+ DELETE_BOUND_REPORT_ERROR("A012005", "已被计划绑定模板的报告不能删除"),
+ FILE_NAME_SAME_ERROR("A012006", "文件名不能相同");
private String code;
private String message;
diff --git a/detection/src/main/java/com/njcn/gather/report/pojo/param/ReportParam.java b/detection/src/main/java/com/njcn/gather/report/pojo/param/ReportParam.java
index b574e788..51f4b7af 100644
--- a/detection/src/main/java/com/njcn/gather/report/pojo/param/ReportParam.java
+++ b/detection/src/main/java/com/njcn/gather/report/pojo/param/ReportParam.java
@@ -1,11 +1,15 @@
package com.njcn.gather.report.pojo.param;
+import com.njcn.gather.report.pojo.constant.ReportValidMessage;
import com.njcn.web.pojo.param.BaseParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.web.multipart.MultipartFile;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
/**
* @author caozehui
* @data 2025-03-19
@@ -14,9 +18,11 @@ import org.springframework.web.multipart.MultipartFile;
public class ReportParam {
@ApiModelProperty(value = "报告模板名称", required = true)
+ @NotBlank(message = ReportValidMessage.NAME_NOT_BLANK)
private String name;
@ApiModelProperty(value = "版本号", required = true)
+ @NotBlank(message = ReportValidMessage.VERSION_NOT_BLANK)
private String version;
@ApiModelProperty(value = "描述信息", required = true)
diff --git a/detection/src/main/java/com/njcn/gather/report/pojo/po/PqReport.java b/detection/src/main/java/com/njcn/gather/report/pojo/po/PqReport.java
index d01ef474..25c8b89e 100644
--- a/detection/src/main/java/com/njcn/gather/report/pojo/po/PqReport.java
+++ b/detection/src/main/java/com/njcn/gather/report/pojo/po/PqReport.java
@@ -48,8 +48,8 @@ public class PqReport extends BaseEntity implements Serializable {
private String description;
/**
- * 状态:0-删除 1-激活 2-未激活
+ * 状态:0-删除 1-正常
*/
- private Integer enable;
+ private Integer state;
}
diff --git a/detection/src/main/java/com/njcn/gather/report/pojo/vo/PqReportVO.java b/detection/src/main/java/com/njcn/gather/report/pojo/vo/PqReportVO.java
index ae58890b..539249a6 100644
--- a/detection/src/main/java/com/njcn/gather/report/pojo/vo/PqReportVO.java
+++ b/detection/src/main/java/com/njcn/gather/report/pojo/vo/PqReportVO.java
@@ -37,12 +37,12 @@ public class PqReportVO {
/**
* 描述信息
*/
- private String desc;
+ private String description;
/**
- * 状态:0-删除 1-激活 2-未激活
+ * 状态:0-删除 1-正常
*/
- private Integer enable;
+ //private Integer state;
@Data
public static class FileVO{
diff --git a/detection/src/main/java/com/njcn/gather/report/service/IPqReportService.java b/detection/src/main/java/com/njcn/gather/report/service/IPqReportService.java
index 392fb061..16b090ef 100644
--- a/detection/src/main/java/com/njcn/gather/report/service/IPqReportService.java
+++ b/detection/src/main/java/com/njcn/gather/report/service/IPqReportService.java
@@ -71,15 +71,6 @@ public interface IPqReportService extends IService {
*/
List listAllVersion(String name);
- /**
- * 根据报告名称和版本号查询报告
- *
- * @param name
- * @param version
- * @return
- */
- PqReport getReportByNameAndVersion(String name, String version);
-
void generateReport(DevReportParam devReportParam);
void downloadReport(DevReportParam devReportParam, HttpServletResponse response);
diff --git a/detection/src/main/java/com/njcn/gather/report/service/impl/PqReportServiceImpl.java b/detection/src/main/java/com/njcn/gather/report/service/impl/PqReportServiceImpl.java
index 1d38416a..04d01899 100644
--- a/detection/src/main/java/com/njcn/gather/report/service/impl/PqReportServiceImpl.java
+++ b/detection/src/main/java/com/njcn/gather/report/service/impl/PqReportServiceImpl.java
@@ -5,6 +5,7 @@ import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.StrPool;
import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -23,7 +24,6 @@ import com.njcn.gather.plan.pojo.po.AdPlan;
import com.njcn.gather.plan.service.IAdPlanService;
import com.njcn.gather.report.mapper.PqReportMapper;
import com.njcn.gather.report.pojo.DevReportParam;
-import com.njcn.gather.report.pojo.enums.ReportEnableEnum;
import com.njcn.gather.report.pojo.enums.ReportResponseEnum;
import com.njcn.gather.report.pojo.param.ReportParam;
import com.njcn.gather.report.pojo.po.PqReport;
@@ -102,7 +102,7 @@ public class PqReportServiceImpl extends ServiceImpl i
QueryWrapper wrapper = new QueryWrapper<>();
wrapper.like(StrUtil.isNotBlank(queryParam.getName()), "name", queryParam.getName())
.eq(StrUtil.isNotBlank(queryParam.getVersion()), "version", queryParam.getVersion())
- .ne("enable", ReportEnableEnum.DELETE.getCode());
+ .eq("state", DataStateEnum.ENABLE.getCode());
Page page1 = this.page(new Page<>(PageFactory.getPageNum(queryParam), PageFactory.getPageSize(queryParam)), wrapper);
List pqReportVOList = page1.getRecords().stream().map(pqReport -> {
@@ -155,7 +155,8 @@ public class PqReportServiceImpl extends ServiceImpl i
this.checkRepeat(reportParam, false);
PqReport pqReport = new PqReport();
BeanUtils.copyProperties(reportParam, pqReport);
- pqReport.setEnable(ReportEnableEnum.DISABLE.getCode());
+ pqReport.setState(DataStateEnum.ENABLE.getCode());
+
// 上传文件
this.uploadFile(reportParam, pqReport);
return this.save(pqReport);
@@ -175,11 +176,15 @@ public class PqReportServiceImpl extends ServiceImpl i
@Override
public boolean delete(List ids) {
+ List boundReportIds = this.baseMapper.getBoundReportIds();
+ if (CollectionUtil.containsAny(boundReportIds, ids)) {
+ throw new BusinessException(ReportResponseEnum.DELETE_BOUND_REPORT_ERROR);
+ }
+
// 删除对应的文件
this.deleteFile(ids);
boolean result = this.lambdaUpdate().in(CollectionUtil.isNotEmpty(ids), PqReport::getId, ids)
- .ne(PqReport::getEnable, ReportEnableEnum.DELETE.getCode())
- .set(PqReport::getEnable, ReportEnableEnum.DELETE.getCode())
+ .set(PqReport::getState, DataStateEnum.DELETED.getCode())
.update();
return result;
}
@@ -187,26 +192,18 @@ public class PqReportServiceImpl extends ServiceImpl i
@Override
public List listAllName() {
List result = this.lambdaQuery()
- .ne(PqReport::getEnable, ReportEnableEnum.DELETE.getCode()).list().stream().map(PqReport::getName).collect(Collectors.toList());
+ .eq(PqReport::getState, DataStateEnum.ENABLE.getCode()).list().stream().map(PqReport::getName).collect(Collectors.toList());
return result;
}
@Override
public List listAllVersion(String name) {
List result = this.lambdaQuery().eq(PqReport::getName, name)
- .ne(PqReport::getEnable, ReportEnableEnum.DELETE.getCode())
+ .eq(PqReport::getState, DataStateEnum.ENABLE.getCode())
.list().stream().map(PqReport::getVersion).collect(Collectors.toList());
return result;
}
- @Override
- public PqReport getReportByNameAndVersion(String name, String version) {
- PqReport one = this.lambdaQuery().eq(PqReport::getName, name).eq(PqReport::getVersion, version)
- .ne(PqReport::getEnable, ReportEnableEnum.DELETE.getCode())
- .last("LIMIT 1").one();
- return one;
- }
-
/**
* 上传文件,并设置pqReport的basePath和detailPath属性
*
@@ -219,56 +216,64 @@ public class PqReportServiceImpl extends ServiceImpl i
//校验文件后缀
MultipartFile baseFile = reportParam.getBaseFile();
MultipartFile detailFile = reportParam.getDetailFile();
- String baseOriginalFilename = baseFile.getOriginalFilename();
- String baseFileName = baseOriginalFilename.substring(0, baseOriginalFilename.lastIndexOf("."));
- String baseSuffix = baseOriginalFilename.substring(baseOriginalFilename.lastIndexOf(".") + 1);
- String detailOriginalFilename = detailFile.getOriginalFilename();
- String detailFileName = detailOriginalFilename.substring(0, detailOriginalFilename.lastIndexOf("."));
- String detailSuffix = detailOriginalFilename.substring(detailOriginalFilename.lastIndexOf(".") + 1);
+ if (ObjectUtil.isNotNull(baseFile) && ObjectUtil.isNotNull(detailFile) && !baseFile.isEmpty() && !detailFile.isEmpty()) {
+ String baseOriginalFilename = baseFile.getOriginalFilename();
+ String baseFileName = baseOriginalFilename.substring(0, baseOriginalFilename.lastIndexOf("."));
+ String baseSuffix = baseOriginalFilename.substring(baseOriginalFilename.lastIndexOf(".") + 1);
+ String detailOriginalFilename = detailFile.getOriginalFilename();
+ String detailFileName = detailOriginalFilename.substring(0, detailOriginalFilename.lastIndexOf("."));
+ String detailSuffix = detailOriginalFilename.substring(detailOriginalFilename.lastIndexOf(".") + 1);
- if (!"docx".equals(baseSuffix) || !"docx".equals(detailSuffix)) {
- throw new BusinessException(ReportResponseEnum.FILE_SUFFIX_ERROR);
- }
-
- pqReport.setBasePath(uploadDir + baseFileName + "_" + pqReport.getVersion() + ".docx");
- pqReport.setDetailPath(uploadDir + detailFileName + "_" + pqReport.getVersion() + ".docx");
-
- try {
- // 创建上传目录(如果不存在)
- Path uploadPath = Paths.get(uploadDir);
- if (!Files.exists(uploadPath)) {
- Files.createDirectories(uploadPath);
+ if (!"docx".equals(baseSuffix) || !"docx".equals(detailSuffix)) {
+ throw new BusinessException(ReportResponseEnum.FILE_SUFFIX_ERROR);
+ }
+ if (baseFileName.equals(detailFileName)) {
+ throw new BusinessException(ReportResponseEnum.FILE_NAME_SAME_ERROR);
}
- //清空目录下的文件
- File[] files = uploadPath.toFile().listFiles();
- if (ArrayUtil.isNotEmpty(files)) {
- for (int i = 0; i < files.length; i++) {
- files[i].delete();
+ pqReport.setBasePath(uploadDir + baseFileName + "_" + pqReport.getVersion() + ".docx");
+ pqReport.setDetailPath(uploadDir + detailFileName + "_" + pqReport.getVersion() + ".docx");
+
+ try {
+ // 创建上传目录(如果不存在)
+ Path uploadPath = Paths.get(uploadDir);
+ if (!Files.exists(uploadPath)) {
+ Files.createDirectories(uploadPath);
}
+
+ //清空目录下的文件
+ File[] files = uploadPath.toFile().listFiles();
+ if (ArrayUtil.isNotEmpty(files)) {
+ for (int i = 0; i < files.length; i++) {
+ files[i].delete();
+ }
+ }
+
+ // 保存文件
+ byte[] baseBytes = baseFile.getBytes();
+ BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(pqReport.getBasePath()));
+ bufferedOutputStream.write(baseBytes);
+ bufferedOutputStream.flush();
+ bufferedOutputStream.close();
+
+ byte[] detailBytes = detailFile.getBytes();
+ bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(pqReport.getDetailPath()));
+ bufferedOutputStream.write(detailBytes);
+ bufferedOutputStream.flush();
+
+ bufferedOutputStream.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ throw new BusinessException(ReportResponseEnum.FILE_UPLOAD_FAILED);
}
-
- // 保存文件
- byte[] baseBytes = baseFile.getBytes();
- BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(pqReport.getBasePath()));
- bufferedOutputStream.write(baseBytes);
- bufferedOutputStream.flush();
- bufferedOutputStream.close();
-
- byte[] detailBytes = detailFile.getBytes();
- bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(pqReport.getDetailPath()));
- bufferedOutputStream.write(detailBytes);
- bufferedOutputStream.flush();
-
- bufferedOutputStream.close();
- } catch (IOException e) {
- e.printStackTrace();
- throw new BusinessException(ReportResponseEnum.FILE_UPLOAD_FAILED);
+ } else {
+ throw new BusinessException(ReportResponseEnum.FILE_NOT_NULL);
}
}
/**
* 根据id删除已有的文件
+ *
* @param ids
*/
private void deleteFile(List ids) {
@@ -813,7 +818,7 @@ public class PqReportServiceImpl extends ServiceImpl i
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("name", reportParam.getName())
.eq("version", reportParam.getVersion())
- .ne("enable", DataStateEnum.DELETED.getCode());
+ .eq("state", DataStateEnum.ENABLE.getCode());
if (isExcludeSelf) {
if (reportParam instanceof ReportParam.UpdateParam) {
wrapper.ne("id", ((ReportParam.UpdateParam) reportParam).getId());