diff --git a/detection/src/main/java/com/njcn/gather/detection/handler/SocketDevResponseService.java b/detection/src/main/java/com/njcn/gather/detection/handler/SocketDevResponseService.java index 07d8d32e..bee4936e 100644 --- a/detection/src/main/java/com/njcn/gather/detection/handler/SocketDevResponseService.java +++ b/detection/src/main/java/com/njcn/gather/detection/handler/SocketDevResponseService.java @@ -1005,7 +1005,7 @@ public class SocketDevResponseService { if (successComm.size() == FormalTestManager.monitorIdListComm.size()) { System.out.println(sourceIssue.getType() + splitTag + sourceIssue.getIndex() + "当前测试小项读取数据已经全部结束。。。。。。。。。"); //修改装置为监测中 - adPlanService.updateTestState(param.getPlanId(), param.getDevIds()); +// adPlanService.updateTestState(param.getPlanId(), param.getDevIds()); //开启线程进行入库原始数据操作 baseDataInsert(FormalTestManager.realDataXiList, sourceIssue, param, SocketManager.valueTypeMap); diff --git a/detection/src/main/java/com/njcn/gather/device/service/impl/PqDevServiceImpl.java b/detection/src/main/java/com/njcn/gather/device/service/impl/PqDevServiceImpl.java index 45bdfd49..f7cda0ba 100644 --- a/detection/src/main/java/com/njcn/gather/device/service/impl/PqDevServiceImpl.java +++ b/detection/src/main/java/com/njcn/gather/device/service/impl/PqDevServiceImpl.java @@ -114,6 +114,9 @@ public class PqDevServiceImpl extends ServiceImpl implements throw new BusinessException(DevResponseEnum.SERIES_AND_DEVKEY_NOT_BLANK); } } + if("1".equals(sysTestConfigService.getCurrrentScene())){ + pqDev.setManufacturer("8fa73802c9e1abab973adcbeb0d58567"); // 南京灿能字典项目对应的id + } // 新增时默认设置 pqDev.setTimeCheckResult(TimeCheckResultEnum.UNKNOWN.getValue()); pqDev.setFactorCheckResult(FactorCheckResultEnum.UNKNOWN.getValue()); diff --git a/detection/src/main/java/com/njcn/gather/plan/mapper/AdPlanMapper.java b/detection/src/main/java/com/njcn/gather/plan/mapper/AdPlanMapper.java index d2fbfd66..1ecbdf81 100644 --- a/detection/src/main/java/com/njcn/gather/plan/mapper/AdPlanMapper.java +++ b/detection/src/main/java/com/njcn/gather/plan/mapper/AdPlanMapper.java @@ -2,6 +2,7 @@ package com.njcn.gather.plan.mapper; import com.github.yulichang.base.MPJBaseMapper; import com.njcn.gather.plan.pojo.po.AdPlan; +import com.njcn.gather.report.pojo.po.PqReport; /** * @author caozehui @@ -9,5 +10,21 @@ import com.njcn.gather.plan.pojo.po.AdPlan; */ public interface AdPlanMapper extends MPJBaseMapper { + /** + * 根据名称和版本获取报告id + * + * @param name + * @param version + * @return + */ + String getReportIdByNameAndVersion(String name, String version); + + /** + * 根据id获取报告模板 + * + * @param id + * @return + */ + PqReport getPqReportById(String id); } 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 c86cc180..6c555da7 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 @@ -3,5 +3,19 @@ + + + diff --git a/detection/src/main/java/com/njcn/gather/plan/pojo/enums/PlanResponseEnum.java b/detection/src/main/java/com/njcn/gather/plan/pojo/enums/PlanResponseEnum.java index ea5c84ab..b8549cd3 100644 --- a/detection/src/main/java/com/njcn/gather/plan/pojo/enums/PlanResponseEnum.java +++ b/detection/src/main/java/com/njcn/gather/plan/pojo/enums/PlanResponseEnum.java @@ -13,7 +13,8 @@ public enum PlanResponseEnum { SCRIPT_RELATE_DICT_NOT_EXIST("A003016","脚本关联的字典不存在"), NOT_CHECKED_PLAN_CANNOT_ANALYSE("A003017","只有检测状态为检测完成的计划才能进行统计分析" ), CANNOT_CHANGE_SCRIPT_WHEN_CHECKING("A003018","只有检测状态为未检时,才能修改检测脚本" ), - CANNOT_CHANGE_ERROR_SYS_WHEN_CHECKING("A003019","只有检测状态为未检时,才能修改误差体系" ); + CANNOT_CHANGE_ERROR_SYS_WHEN_CHECKING("A003019","只有检测状态为未检时,才能修改误差体系" ), + CANNOT_CHANGE_REPORT_WHEN_CHECKING("A003020","只有检测状态为未检时,才能修改绑定报告模板"); private final String message; private final String code; 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 16f0c8a8..8d489042 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 @@ -4,6 +4,7 @@ import com.njcn.common.pojo.constant.PatternRegex; import com.njcn.gather.device.pojo.constant.DevValidMessage; import com.njcn.web.pojo.param.BaseParam; import io.swagger.annotations.ApiModelProperty; +import io.swagger.models.auth.In; import lombok.Data; import lombok.EqualsAndHashCode; import org.springframework.web.bind.annotation.RequestParam; @@ -60,6 +61,15 @@ public class AdPlanParam { @NotNull(message = DevValidMessage.PQ_DEV_IDS_NOT_NULL) private List devIds; + @ApiModelProperty(value = "是否关联报告") + private Integer associateReport; + + @ApiModelProperty(value = "报告模板名称") + private String reportName; + + @ApiModelProperty(value = "报告模板版本") + private String reportVersion; + /** * 分页查询实体 */ diff --git a/detection/src/main/java/com/njcn/gather/plan/pojo/po/AdPlan.java b/detection/src/main/java/com/njcn/gather/plan/pojo/po/AdPlan.java index a5905363..3bca9ff8 100644 --- a/detection/src/main/java/com/njcn/gather/plan/pojo/po/AdPlan.java +++ b/detection/src/main/java/com/njcn/gather/plan/pojo/po/AdPlan.java @@ -78,6 +78,16 @@ public class AdPlan extends BaseEntity implements Serializable { */ private Integer code; + /** + * 是否关联报告,0-不关联 1-关联 + */ + private Integer associateReport; + + /** + * 报告模板ID,关联PQ_Report表 + */ + private String reportTemplateId; + /** * 状态:0-删除 1-正常 */ diff --git a/detection/src/main/java/com/njcn/gather/plan/pojo/vo/AdPlanVO.java b/detection/src/main/java/com/njcn/gather/plan/pojo/vo/AdPlanVO.java index d00897d4..5248fbf9 100644 --- a/detection/src/main/java/com/njcn/gather/plan/pojo/vo/AdPlanVO.java +++ b/detection/src/main/java/com/njcn/gather/plan/pojo/vo/AdPlanVO.java @@ -1,5 +1,6 @@ package com.njcn.gather.plan.pojo.vo; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; @@ -97,4 +98,19 @@ public class AdPlanVO { * 创建时间 */ private String createTime; + + /** + * 是否关联报告,0-不关联 1-关联 + */ + private Integer associateReport; + + /** + * 报告模板名称 + */ + private String reportTemplateName; + + /** + * 报告模板版本号 + */ + private String reportTemplateVersion; } 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 e524559d..cd439356 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 @@ -32,15 +32,14 @@ import com.njcn.gather.plan.pojo.vo.AdPlanExcel; import com.njcn.gather.plan.pojo.vo.AdPlanVO; import com.njcn.gather.plan.service.IAdPlanService; import com.njcn.gather.plan.service.IAdPlanSourceService; +import com.njcn.gather.report.pojo.po.PqReport; import com.njcn.gather.script.pojo.po.PqScriptDtls; import com.njcn.gather.script.service.IPqScriptDtlsService; import com.njcn.gather.script.service.IPqScriptService; import com.njcn.gather.source.pojo.po.PqSource; import com.njcn.gather.source.service.IPqSourceService; -import com.njcn.gather.storage.mapper.DetectionDataDealMapper; import com.njcn.gather.storage.pojo.param.StorageParam; import com.njcn.gather.storage.service.AdHarmonicService; -import com.njcn.gather.storage.service.AdNonHarmonicService; import com.njcn.gather.storage.service.TableGenService; import com.njcn.gather.system.config.pojo.po.SysTestConfig; import com.njcn.gather.system.config.service.ISysTestConfigService; @@ -106,6 +105,11 @@ public class AdPlanServiceImpl extends ServiceImpl impleme BeanUtil.copyProperties(adPlan, adPlanVO); adPlanVO.setCreateTime(adPlanVO.getCreateTime().replace("T", " ")); adPlanVO.setDatasourceIds(Arrays.asList(adPlan.getDatasourceId().split(StrUtil.COMMA))); + if (StrUtil.isNotBlank(adPlan.getReportTemplateId())) { + PqReport report = this.baseMapper.getPqReportById(adPlan.getReportTemplateId()); + adPlanVO.setReportTemplateName(report.getName()); + adPlanVO.setReportTemplateVersion(report.getVersion()); + } return adPlanVO; }).collect(Collectors.toList()); adPlanVOList.forEach(adPlanVO -> { @@ -144,6 +148,13 @@ public class AdPlanServiceImpl extends ServiceImpl impleme adPlan.setResult(CheckResultEnum.UNCHECKED.getValue()); adPlan.setCode(this.generateCode()); + if (param.getAssociateReport() == 1) { + String reportId = this.baseMapper.getReportIdByNameAndVersion(param.getReportName(), param.getReportVersion()); + if (StrUtil.isNotBlank(reportId)) { + adPlan.setReportTemplateId(reportId); + } + } + // 新增检测计划、检测源关联 adPlanSourceService.addAdPlanSource(planId, param.getSourceIds()); if (ObjectUtil.isNotEmpty(param.getDevIds())) { @@ -167,6 +178,14 @@ public class AdPlanServiceImpl extends ServiceImpl impleme this.checkRepeat(param, true); AdPlan plan1 = this.getById(param.getId()); AdPlan plan2 = new AdPlan(); + + if (param.getAssociateReport() == 1) { + String reportId = this.baseMapper.getReportIdByNameAndVersion(param.getReportName(), param.getReportVersion()); + if (StrUtil.isNotBlank(reportId)) { + plan2.setReportTemplateId(reportId); + } + } + if (plan1.getTestState() != CheckStateEnum.UNCHECKED.getValue()) { if (!plan1.getScriptId().equals(param.getScriptId())) { throw new BusinessException(PlanResponseEnum.CANNOT_CHANGE_SCRIPT_WHEN_CHECKING); @@ -379,7 +398,7 @@ public class AdPlanServiceImpl extends ServiceImpl impleme // scriptDtlsList = scriptDtlsList.stream().filter(obj -> !sortSet.contains(obj.getScriptIndex())).collect(Collectors.toList()); // } StorageParam storageParam = new StorageParam(); - storageParam.setCode(adPlan.getCode()+""); + storageParam.setCode(adPlan.getCode() + ""); storageParam.setScriptId(adPlan.getScriptId()); List indexes = adHarmonicService.getIndex(storageParam, true); scriptDtlsList = scriptDtlsList.stream().filter(obj -> indexes.contains(obj.getScriptIndex())).collect(Collectors.toList()); 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 9e33f27e..e0c6fa47 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 @@ -1,11 +1,15 @@ package com.njcn.gather.report.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.common.pojo.annotation.OperateInfo; +import com.njcn.common.pojo.constant.OperateType; import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.LogUtil; import com.njcn.gather.report.pojo.DevReportParam; -import com.njcn.gather.report.service.IReportService; +import com.njcn.gather.report.pojo.param.ReportParam; +import com.njcn.gather.report.pojo.vo.PqReportVO; +import com.njcn.gather.report.service.IPqReportService; import com.njcn.web.controller.BaseController; import com.njcn.web.utils.HttpResultUtil; import io.swagger.annotations.Api; @@ -16,6 +20,8 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import java.util.List; +import java.util.Map; /** @@ -30,7 +36,7 @@ import javax.servlet.http.HttpServletResponse; @RequiredArgsConstructor public class ReportController extends BaseController { - private final IReportService reportService; + private final IPqReportService pqReportService; /** * 此方法临时的,给楼下使用,实际需要优化 @@ -44,7 +50,7 @@ public class ReportController extends BaseController { public HttpResult generateReport(@RequestBody DevReportParam devReportParam) { String methodDescribe = getMethodDescribe("generateReport"); LogUtil.njcnDebug(log, "{},终端参数为:{}", methodDescribe, devReportParam); - reportService.generateReport(devReportParam); + pqReportService.generateReport(devReportParam); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); } @@ -58,9 +64,87 @@ public class ReportController extends BaseController { public void downloadReport(@RequestBody DevReportParam devReportParam, HttpServletResponse response) { String methodDescribe = getMethodDescribe("downloadReport"); LogUtil.njcnDebug(log, "{},终端参数为:{}", methodDescribe, devReportParam); - reportService.downloadReport(devReportParam,response); + pqReportService.downloadReport(devReportParam, response); } + @OperateInfo + @PostMapping("/list") + @ApiOperation("分页查询报告模板") + @ApiImplicitParam(name = "param", value = "查询参数", required = true) + public HttpResult> list(@RequestBody ReportParam.QueryParam queryParam) { + String methodDescribe = getMethodDescribe("list"); + LogUtil.njcnDebug(log, "{},查询参数为:{}", methodDescribe, queryParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, pqReportService.list(queryParam), methodDescribe); + } + @OperateInfo + @GetMapping("/getById") + @ApiOperation("查询报告模板详情") + @ApiImplicitParam(name = "param", value = "查询参数", required = true) + public HttpResult getById(@RequestParam("id") String id) { + String methodDescribe = getMethodDescribe("getById"); + LogUtil.njcnDebug(log, "{},查询参数为:{}", methodDescribe, id); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, pqReportService.getById(id), methodDescribe); + } + @OperateInfo(operateType = OperateType.ADD) + @PostMapping("/add") + @ApiOperation("新增报告模板") + @ApiImplicitParam(name = "param", value = "报告模板参数", required = true) + public HttpResult add(ReportParam reportParam) { + String methodDescribe = getMethodDescribe("add"); + LogUtil.njcnDebug(log, "{},新增参数为:{}", methodDescribe, reportParam); + boolean result = pqReportService.add(reportParam); + if (result) { + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); + } + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe); + } + + @OperateInfo(operateType = OperateType.UPDATE) + @PostMapping("/update") + @ApiOperation("更新报告模板") + @ApiImplicitParam(name = "param", value = "报告模板参数", required = true) + public HttpResult update(ReportParam.UpdateParam reportParam) { + String methodDescribe = getMethodDescribe("update"); + LogUtil.njcnDebug(log, "{},修改参数为:{}", methodDescribe, reportParam); + boolean result = pqReportService.update(reportParam); + if (result) { + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); + } + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe); + } + + @OperateInfo(operateType = OperateType.DELETE) + @PostMapping("/delete") + @ApiOperation("删除报告模板") + @ApiImplicitParam(name = "param", value = "报告模板参数", required = true) + public HttpResult delete(@RequestBody List ids) { + String methodDescribe = getMethodDescribe("delete"); + LogUtil.njcnDebug(log, "{},删除参数为:{}", methodDescribe, ids); + boolean result = pqReportService.delete(ids); + if (result) { + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); + } + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe); + } + + @OperateInfo + @GetMapping("/listAllName") + @ApiOperation("查询所有报告模板名称") + @ApiImplicitParam(name = "param", value = "查询参数", required = true) + public HttpResult> listAllName() { + String methodDescribe = getMethodDescribe("listAllName"); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, pqReportService.listAllName(), methodDescribe); + } + + @OperateInfo + @GetMapping("/listAllVersion") + @ApiOperation("根据名称查询指定报告模板的所有版本") + @ApiImplicitParam(name = "param", value = "查询参数", required = true) + public HttpResult> listAllVersion(@RequestParam String name) { + String methodDescribe = getMethodDescribe("listAllVersion"); + LogUtil.njcnDebug(log, "{},查询参数为:{}", methodDescribe, name); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, pqReportService.listAllVersion(name), methodDescribe); + } } 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 new file mode 100644 index 00000000..80d9b8ee --- /dev/null +++ b/detection/src/main/java/com/njcn/gather/report/mapper/PqReportMapper.java @@ -0,0 +1,13 @@ +package com.njcn.gather.report.mapper; + +import com.github.yulichang.base.MPJBaseMapper; +import com.njcn.gather.report.pojo.po.PqReport; + +/** + * @author makejava + * @date 2025-03-19 + */ +public interface PqReportMapper extends MPJBaseMapper { + +} + 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 new file mode 100644 index 00000000..72efe3ab --- /dev/null +++ b/detection/src/main/java/com/njcn/gather/report/mapper/mapping/PqReportMapper.xml @@ -0,0 +1,7 @@ + + + + + + + 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 new file mode 100644 index 00000000..7a0b3349 --- /dev/null +++ b/detection/src/main/java/com/njcn/gather/report/pojo/enums/ReportEnableEnum.java @@ -0,0 +1,22 @@ +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 new file mode 100644 index 00000000..b27885eb --- /dev/null +++ b/detection/src/main/java/com/njcn/gather/report/pojo/enums/ReportResponseEnum.java @@ -0,0 +1,23 @@ +package com.njcn.gather.report.pojo.enums; + +import lombok.Getter; + +/** + * @author caozehui + * @data 2025-03-19 + */ +@Getter +public enum ReportResponseEnum { + + FILE_UPLOAD_FAILED("A012001", "文件上传失败"), + FILE_SUFFIX_ERROR("A012002", "文件后缀错误,请上传.docx文件"), + REPORT_REPEATED("A012003", "已存在相同版本、相同名称的报告"); + + private String code; + private String message; + + ReportResponseEnum(String code, String message) { + this.code = code; + this.message = 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 new file mode 100644 index 00000000..b574e788 --- /dev/null +++ b/detection/src/main/java/com/njcn/gather/report/pojo/param/ReportParam.java @@ -0,0 +1,47 @@ +package com.njcn.gather.report.pojo.param; + +import com.njcn.web.pojo.param.BaseParam; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springframework.web.multipart.MultipartFile; + +/** + * @author caozehui + * @data 2025-03-19 + */ +@Data +public class ReportParam { + + @ApiModelProperty(value = "报告模板名称", required = true) + private String name; + + @ApiModelProperty(value = "版本号", required = true) + private String version; + + @ApiModelProperty(value = "描述信息", required = true) + private String description; + + @ApiModelProperty(value = "基础模板文件", required = true) + private MultipartFile baseFile; + + @ApiModelProperty(value = "检测项模版文件", required = true) + private MultipartFile detailFile; + + @Data + @EqualsAndHashCode(callSuper = true) + public static class QueryParam extends BaseParam { + @ApiModelProperty(value = "报告模板名称", required = true) + private String name; + + @ApiModelProperty(value = "版本号", required = true) + private String version; + } + + @Data + @EqualsAndHashCode(callSuper = true) + public static class UpdateParam extends ReportParam { + @ApiModelProperty(value = "id", required = true) + private String id; + } +} 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 new file mode 100644 index 00000000..d01ef474 --- /dev/null +++ b/detection/src/main/java/com/njcn/gather/report/pojo/po/PqReport.java @@ -0,0 +1,55 @@ +package com.njcn.gather.report.pojo.po; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.njcn.db.mybatisplus.bo.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author makejava + * @date 2025-03-19 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("pq_report") +public class PqReport extends BaseEntity implements Serializable { + private static final long serialVersionUID = 582972970946593407L; + /** + * 报告模板id + */ + private String id; + + /** + * 报告模板名称 + */ + private String name; + + /** + * 版本号 + */ + private String version; + + /** + * 基础模板文件路径 + */ + private String basePath; + + /** + * 检测项模版文件路径 + */ + private String detailPath; + + /** + * 描述信息 + */ + private String description; + + /** + * 状态:0-删除 1-激活 2-未激活 + */ + private Integer enable; +} + 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 new file mode 100644 index 00000000..ae58890b --- /dev/null +++ b/detection/src/main/java/com/njcn/gather/report/pojo/vo/PqReportVO.java @@ -0,0 +1,53 @@ +package com.njcn.gather.report.pojo.vo; + +import lombok.Data; + +/** + * @author caozehui + * @data 2025-03-19 + */ +@Data +public class PqReportVO { + /** + * 报告模板id + */ + private String id; + + /** + * 报告模板名称 + */ + private String name; + + /** + * 版本号 + */ + private String version; + + + /** + * 基础模板文件路径 + */ + private FileVO baseFileVO; + + /** + * 检测项模版文件路径 + */ + private FileVO detailFileVO; + + /** + * 描述信息 + */ + private String desc; + + /** + * 状态:0-删除 1-激活 2-未激活 + */ + private Integer enable; + + @Data + public static class FileVO{ + private String fileName; + + private String url; + } +} 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 new file mode 100644 index 00000000..392fb061 --- /dev/null +++ b/detection/src/main/java/com/njcn/gather/report/service/IPqReportService.java @@ -0,0 +1,86 @@ +package com.njcn.gather.report.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.gather.report.pojo.DevReportParam; +import com.njcn.gather.report.pojo.param.ReportParam; +import com.njcn.gather.report.pojo.po.PqReport; +import com.njcn.gather.report.pojo.vo.PqReportVO; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; +import java.util.Map; + +/** + * @author makejava + * @date 2025-03-19 + */ +public interface IPqReportService extends IService { + /** + * 分页查询报告列表 + * + * @param queryParam + * @return + */ + Page list(ReportParam.QueryParam queryParam); + + /** + * 根据id查询报告详情 + * + * @param id + * @return + */ + PqReportVO getById(String id); + + /** + * 新增报告 + * + * @param reportParam + * @return + */ + boolean add(ReportParam reportParam); + + /** + * 修改报告 + * + * @param reportParam + * @return + */ + boolean update(ReportParam.UpdateParam reportParam); + + /** + * 批量删除报告 + * + * @param ids + * @return + */ + boolean delete(List ids); + + /** + * 查询所有报告名称 + * + * @return key为报告id,value为报告名称 + */ + List listAllName(); + + /** + * 根据报告name查询改模板的所有版本号 + * + * @param name + * @return + */ + 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/IReportService.java b/detection/src/main/java/com/njcn/gather/report/service/IReportService.java deleted file mode 100644 index f8515a45..00000000 --- a/detection/src/main/java/com/njcn/gather/report/service/IReportService.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.njcn.gather.report.service; - -import com.njcn.gather.report.pojo.DevReportParam; - -import javax.servlet.http.HttpServletResponse; - -/** - * @author hongawen - * @version 1.0 - * @data 2025/1/9 20:59 - */ -public interface IReportService { - void generateReport(DevReportParam devReportParam); - - void downloadReport(DevReportParam devReportParam, HttpServletResponse response); -} diff --git a/detection/src/main/java/com/njcn/gather/report/service/impl/ReportServiceImpl.java b/detection/src/main/java/com/njcn/gather/report/service/impl/PqReportServiceImpl.java similarity index 71% rename from detection/src/main/java/com/njcn/gather/report/service/impl/ReportServiceImpl.java rename to detection/src/main/java/com/njcn/gather/report/service/impl/PqReportServiceImpl.java index 2e85d1e8..1d38416a 100644 --- a/detection/src/main/java/com/njcn/gather/report/service/impl/ReportServiceImpl.java +++ b/detection/src/main/java/com/njcn/gather/report/service/impl/PqReportServiceImpl.java @@ -4,9 +4,14 @@ import cn.hutool.core.collection.CollectionUtil; 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.StrUtil; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.njcn.common.pojo.enums.common.DataStateEnum; import com.njcn.common.pojo.exception.BusinessException; import com.njcn.gather.detection.pojo.vo.DetectionData; @@ -16,8 +21,14 @@ import com.njcn.gather.device.service.IPqDevService; import com.njcn.gather.plan.pojo.enums.PlanReportStateEnum; 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.service.IReportService; +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; +import com.njcn.gather.report.pojo.vo.PqReportVO; +import com.njcn.gather.report.service.IPqReportService; import com.njcn.gather.report.utils.WordUtil; import com.njcn.gather.script.pojo.po.PqScriptCheckData; import com.njcn.gather.script.pojo.po.PqScriptDtls; @@ -32,31 +43,39 @@ import com.njcn.gather.system.dictionary.pojo.po.DictData; import com.njcn.gather.system.dictionary.service.IDictDataService; import com.njcn.gather.type.pojo.po.DevType; import com.njcn.gather.type.service.IDevTypeService; +import com.njcn.web.factory.PageFactory; import com.njcn.web.utils.RequestUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.math.BigDecimal; import java.math.RoundingMode; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.*; +import java.util.stream.Collectors; /** - * @author hongawen - * @version 1.0 - * @data 2025/1/9 21:00 + * @author makejava + * @date 2025-03-19 */ @Slf4j @Service @RequiredArgsConstructor -public class ReportServiceImpl implements IReportService { +public class PqReportServiceImpl extends ServiceImpl implements IPqReportService { - @Value("${report.template:D:\\template\\}") + + @Value("${report.template:D:\\template}") private String templatePath; @Value("${report.reportDir:D:\\report}") @@ -78,6 +97,205 @@ public class ReportServiceImpl implements IReportService { private final IDevTypeService devTypeService; + @Override + public Page list(ReportParam.QueryParam queryParam) { + 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()); + Page page1 = this.page(new Page<>(PageFactory.getPageNum(queryParam), PageFactory.getPageSize(queryParam)), wrapper); + + List pqReportVOList = page1.getRecords().stream().map(pqReport -> { + PqReportVO pqReportVO = new PqReportVO(); + BeanUtils.copyProperties(pqReport, pqReportVO); + + PqReportVO.FileVO baseFileVo = new PqReportVO.FileVO(); + baseFileVo.setFileName(pqReport.getBasePath().substring(pqReport.getBasePath().lastIndexOf(File.separator) + 1)); + baseFileVo.setUrl(pqReport.getBasePath()); + pqReportVO.setBaseFileVO(baseFileVo); + + PqReportVO.FileVO detailFileVo = new PqReportVO.FileVO(); + detailFileVo.setFileName(pqReport.getBasePath().substring(pqReport.getBasePath().lastIndexOf(File.separator) + 1)); + detailFileVo.setUrl(pqReport.getBasePath()); + pqReportVO.setDetailFileVO(detailFileVo); + + return pqReportVO; + }).collect(Collectors.toList()); + + Page page2 = new Page<>(PageFactory.getPageNum(queryParam), PageFactory.getPageSize(queryParam)); + page2.setTotal(page1.getTotal()); + page2.setOrders(page1.orders()); + page2.setPages(page1.getPages()); + page2.setRecords(pqReportVOList); + return page2; + } + + @Override + public PqReportVO getById(String id) { + PqReport pqReport = this.baseMapper.selectById(id); + PqReportVO pqReportVO = new PqReportVO(); + BeanUtils.copyProperties(pqReport, pqReportVO); + + PqReportVO.FileVO baseFileVo = new PqReportVO.FileVO(); + baseFileVo.setFileName(pqReport.getBasePath().substring(pqReport.getBasePath().lastIndexOf(File.separator) + 1)); + baseFileVo.setUrl(pqReport.getBasePath()); + pqReportVO.setBaseFileVO(baseFileVo); + + PqReportVO.FileVO detailFileVo = new PqReportVO.FileVO(); + detailFileVo.setFileName(pqReport.getDetailPath().substring(pqReport.getDetailPath().lastIndexOf(File.separator) + 1)); + detailFileVo.setUrl(pqReport.getDetailPath()); + pqReportVO.setDetailFileVO(detailFileVo); + + return pqReportVO; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean add(ReportParam reportParam) { + this.checkRepeat(reportParam, false); + PqReport pqReport = new PqReport(); + BeanUtils.copyProperties(reportParam, pqReport); + pqReport.setEnable(ReportEnableEnum.DISABLE.getCode()); + // 上传文件 + this.uploadFile(reportParam, pqReport); + return this.save(pqReport); + } + + @Override + public boolean update(ReportParam.UpdateParam reportParam) { + this.checkRepeat(reportParam, true); + this.deleteFile(Collections.singletonList(reportParam.getId())); + PqReport pqReport = new PqReport(); + BeanUtils.copyProperties(reportParam, pqReport); + + // 上传文件 + this.uploadFile(reportParam, pqReport); + return this.updateById(pqReport); + } + + @Override + public boolean delete(List ids) { + // 删除对应的文件 + 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()) + .update(); + return result; + } + + @Override + public List listAllName() { + List result = this.lambdaQuery() + .ne(PqReport::getEnable, ReportEnableEnum.DELETE.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()) + .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属性 + * + * @param reportParam + * @param pqReport + */ + private void uploadFile(ReportParam reportParam, PqReport pqReport) { + String uploadDir = templatePath + File.separator + reportParam.getName() + File.separator + reportParam.getVersion() + File.separator; + + //校验文件后缀 + 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 (!"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); + } + + //清空目录下的文件 + 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); + } + } + + /** + * 根据id删除已有的文件 + * @param ids + */ + private void deleteFile(List ids) { + List pqReports = this.listByIds(ids); + for (PqReport pqReport : pqReports) { + String uploadDir = templatePath + File.separator + pqReport.getName() + File.separator + pqReport.getVersion() + File.separator; + Path uploadPath = Paths.get(uploadDir); + if (Files.exists(uploadPath)) { + //清空目录下的文件 + File file1 = uploadPath.toFile(); + File[] fileArr1 = file1.listFiles(); + if (ArrayUtil.isNotEmpty(fileArr1)) { + for (int i = 0; i < fileArr1.length; i++) { + fileArr1[i].delete(); + } + } + file1.delete(); + String dir = templatePath + File.separator + pqReport.getName() + File.separator; + Path dirPath = Paths.get(dir); + File dirFile = dirPath.toFile(); + File[] fileArr2 = dirFile.listFiles(); + if (ArrayUtil.isEmpty(fileArr2)) { + dirFile.delete(); + } + } + } + } @Override public void generateReport(DevReportParam devReportParam) { @@ -181,7 +399,6 @@ public class ReportServiceImpl implements IReportService { } - /** * 处理基础模版中的信息,非数据页报告 * @@ -586,5 +803,25 @@ public class ReportServiceImpl implements IReportService { } } - + /** + * 检查模板文件是否重复 + * + * @param reportParam 报告模板参数 + * @param isExcludeSelf 是否排除自己 + */ + private void checkRepeat(ReportParam reportParam, boolean isExcludeSelf) { + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq("name", reportParam.getName()) + .eq("version", reportParam.getVersion()) + .ne("enable", DataStateEnum.DELETED.getCode()); + if (isExcludeSelf) { + if (reportParam instanceof ReportParam.UpdateParam) { + wrapper.ne("id", ((ReportParam.UpdateParam) reportParam).getId()); + } + } + int count = this.count(wrapper); + if (count > 0) { + throw new BusinessException(ReportResponseEnum.REPORT_REPEATED); + } + } } diff --git a/entrance/src/main/resources/application.yml b/entrance/src/main/resources/application.yml index 5ca55656..e2ecc40e 100644 --- a/entrance/src/main/resources/application.yml +++ b/entrance/src/main/resources/application.yml @@ -75,6 +75,6 @@ log: homeDir: D:\logs commonLevel: info report: - template: D:\\template - reportDir: D:\\report + template: D:\template + reportDir: D:\report diff --git a/system/src/main/java/com/njcn/gather/system/dictionary/service/impl/DictTreeServiceImpl.java b/system/src/main/java/com/njcn/gather/system/dictionary/service/impl/DictTreeServiceImpl.java index b3efb696..7beec68e 100644 --- a/system/src/main/java/com/njcn/gather/system/dictionary/service/impl/DictTreeServiceImpl.java +++ b/system/src/main/java/com/njcn/gather/system/dictionary/service/impl/DictTreeServiceImpl.java @@ -92,21 +92,28 @@ public class DictTreeServiceImpl extends ServiceImpl i @Override @Transactional(rollbackFor = {Exception.class}) public boolean updateDictTree(DictTreeParam.UpdateParam param) { + DictTree dictTree = this.getById(param.getId()); + if("975f63baeb6f653c54fca226a9ae36ca".equals(param.getId()) || dictTree.getPids().contains("975f63baeb6f653c54fca226a9ae36ca")){ + throw new BusinessException(SystemResponseEnum.CAN_NOT_UPDATE_USED_DICT); + } checkRepeat(param, true); - boolean result; - DictTree dictTree = new DictTree(); - BeanUtils.copyProperties(param, dictTree); - result = this.updateById(dictTree); + DictTree copyDictTree = new DictTree(); + BeanUtils.copyProperties(param, copyDictTree); // if (result) { // refreshDictTreeCache(); // } - return result; + return this.updateById(copyDictTree); } @Override @Transactional(rollbackFor = {Exception.class}) public boolean deleteDictTree(String id) { boolean result = false; + DictTree dictTree = this.getById(id); + if("975f63baeb6f653c54fca226a9ae36ca".equals(id) || dictTree.getPids().contains("975f63baeb6f653c54fca226a9ae36ca")){ + throw new BusinessException(SystemResponseEnum.CAN_NOT_DELETE_USED_DICT); + } + List childrenList = this.lambdaQuery().eq(DictTree::getState, DictConst.ENABLE).eq(DictTree::getPid, id).list(); if (CollectionUtils.isEmpty(childrenList)) { result = this.lambdaUpdate().set(DictTree::getState, DictConst.DELETE).in(DictTree::getId, id).update(); diff --git a/system/src/main/java/com/njcn/gather/system/log/aop/LogAdvice.java b/system/src/main/java/com/njcn/gather/system/log/aop/LogAdvice.java index 3d99d920..dfdaf34d 100644 --- a/system/src/main/java/com/njcn/gather/system/log/aop/LogAdvice.java +++ b/system/src/main/java/com/njcn/gather/system/log/aop/LogAdvice.java @@ -48,8 +48,8 @@ public class LogAdvice implements ApplicationListener { private BlockingQueue logQueue = new LinkedBlockingDeque<>(); - // @Pointcut(value = "execution(* com.njcn.gather..controller.*(..))") - @Pointcut(value = "execution(* com.njcn.gather..controller.*.*(..)) && !execution(* com.njcn.gather..controller.AuthController.*(..))") + @Pointcut(value = "execution(* com.njcn.gather..controller.*(..))") + //@Pointcut(value = "execution(* com.njcn.gather..controller.*.*(..)) && !execution(* com.njcn.gather..controller.AuthController.*(..))") public void logPointcut() { } diff --git a/system/src/main/java/com/njcn/gather/system/pojo/enums/SystemResponseEnum.java b/system/src/main/java/com/njcn/gather/system/pojo/enums/SystemResponseEnum.java index 29af81af..3866463d 100644 --- a/system/src/main/java/com/njcn/gather/system/pojo/enums/SystemResponseEnum.java +++ b/system/src/main/java/com/njcn/gather/system/pojo/enums/SystemResponseEnum.java @@ -14,36 +14,36 @@ public enum SystemResponseEnum { * 系统模块异常响应码的范围: * A00350 ~ A00449 */ - SYSTEM_COMMON_ERROR("A00350","系统模块异常"), + SYSTEM_COMMON_ERROR("A00350", "系统模块异常"), DICT_TYPE_REPEAT("A00351", "字典类型名称或编码重复"), DICT_DATA_REPEAT("A00352", "字典数据名称或编码重复"), - AREA_CODE_REPEAT("A00353","行政区域编码重复"), - LOAD_TYPE_EMPTY("A00354","用能负荷数据为空"), - LINE_MARK_EMPTY("A00355","字典监测点评分等级数据为空"), - VOLTAGE_EMPTY("A00356","查询字典电压等级数据为空"), + AREA_CODE_REPEAT("A00353", "行政区域编码重复"), + LOAD_TYPE_EMPTY("A00354", "用能负荷数据为空"), + LINE_MARK_EMPTY("A00355", "字典监测点评分等级数据为空"), + VOLTAGE_EMPTY("A00356", "查询字典电压等级数据为空"), - INTERFERENCE_EMPTY("A00356","查询字典干扰源类型数据为空"), - BUSINESS_EMPTY("A00356","查询字典行业类型数据为空"), - SYSTEM_TYPE_EMPTY("A00356","查询字典系统类型数据为空"), - DEV_TYPE_EMPTY("A00357","查询字典设备类型数据为空"), - MANUFACTURER("A00358","查询字典终端厂家数据为空"), - DEV_VARIETY("A00359","查询字典终端类型数据为空"), + INTERFERENCE_EMPTY("A00356", "查询字典干扰源类型数据为空"), + BUSINESS_EMPTY("A00356", "查询字典行业类型数据为空"), + SYSTEM_TYPE_EMPTY("A00356", "查询字典系统类型数据为空"), + DEV_TYPE_EMPTY("A00357", "查询字典设备类型数据为空"), + MANUFACTURER("A00358", "查询字典终端厂家数据为空"), + DEV_VARIETY("A00359", "查询字典终端类型数据为空"), /*pms*/ - LINE_TYPE_VARIETY_EMPTY("A00360","查询字典监测点类型数据为空"), - LINE_STATE_EMPTY("A00361","查询字典监测点状态为空"), - LINE_TYPE_EMPTY("A00362","查询字典监测点类型状态为空"), - POTENTIAL_TYPE_EMPTY("A00363","查询字典电压互感器类型为空"), - Neutral_Mode_EMPTY("A00364","查询字典中性点接地方式为空"), - MONITOR_TAG_EMPTY("A00365","查询字典监测点标签类型为空"), - MONITORY_TYPE_EMPTY("A00366","查询字典监测对象类型为空"), - TERMINAL_WIRING_EMPTY("A00367","查询字典监测终端接线方式为空"), - MONITOR_TYPE_EMPTY("A00368","查询字典监测点类别为空"), - ACTIVATED_STATE("A00369","必须存在一个已激活的系统类型"), - ADVANCE_REASON("A00370","查询字典暂降原因为空"), - EFFECT_STATUS_EMPTY("A00370","查询字典实施状态为空"), + LINE_TYPE_VARIETY_EMPTY("A00360", "查询字典监测点类型数据为空"), + LINE_STATE_EMPTY("A00361", "查询字典监测点状态为空"), + LINE_TYPE_EMPTY("A00362", "查询字典监测点类型状态为空"), + POTENTIAL_TYPE_EMPTY("A00363", "查询字典电压互感器类型为空"), + Neutral_Mode_EMPTY("A00364", "查询字典中性点接地方式为空"), + MONITOR_TAG_EMPTY("A00365", "查询字典监测点标签类型为空"), + MONITORY_TYPE_EMPTY("A00366", "查询字典监测对象类型为空"), + TERMINAL_WIRING_EMPTY("A00367", "查询字典监测终端接线方式为空"), + MONITOR_TYPE_EMPTY("A00368", "查询字典监测点类别为空"), + ACTIVATED_STATE("A00369", "必须存在一个已激活的系统类型"), + ADVANCE_REASON("A00370", "查询字典暂降原因为空"), + EFFECT_STATUS_EMPTY("A00370", "查询字典实施状态为空"), - EVENT_REPORT_REPEAT("A00361","暂态报告模板重复"), + EVENT_REPORT_REPEAT("A00361", "暂态报告模板重复"), NOT_EXISTED("A00361", "您查询的该条记录不存在"), TIMER_NO_CLASS("A00361", "请检查定时任务是否添加"), @@ -65,7 +65,9 @@ public enum SystemResponseEnum { DELETE_DATA("A0303", "导入旧日志文件异常:删除数据失败"), MULTIPLE_CLICKS_LOG_FILE_WRITER("A0304", "当前文件备份数据未结束,请勿多次点击"), MULTIPLE_CLICKS_RECOVER_LOG_FILE("A0303", "当前文件恢复数据未结束,请勿多次点击"), - CODE_REPEAT("A0305","该层级下已存在相同的编码" ); + CODE_REPEAT("A0305", "该层级下已存在相同的编码"), + CAN_NOT_DELETE_USED_DICT("A0306", "该字典在使用中,不能删除"), + CAN_NOT_UPDATE_USED_DICT("A0307", "该字典在使用中,不能修改"); private final String code;