From 4a105da46e5704dea30962cbde7145d4198d1196 Mon Sep 17 00:00:00 2001 From: lzh Date: Thu, 19 Mar 2026 09:43:37 +0800 Subject: [PATCH] =?UTF-8?q?refactor(ops):=20=E6=8F=90=E5=8F=96=E5=B7=A1?= =?UTF-8?q?=E6=A3=80=E7=BB=93=E6=9E=9C=E5=92=8C=E5=BD=92=E5=B1=9E=E5=88=A4?= =?UTF-8?q?=E5=AE=9A=E6=9E=9A=E4=B8=BE=EF=BC=8C=E6=9B=BF=E6=8D=A2=E7=A1=AC?= =?UTF-8?q?=E7=BC=96=E7=A0=81=E5=B8=B8=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增 InspectionResultEnum(合格/不合格)和 InspectionAttributionEnum (个人责任/突发状况/正常),替换 InspectionRecordServiceImpl 和 InspectionAttributionServiceImpl 中的 private static final int 硬编码常量。 Co-Authored-By: Claude Opus 4.6 (1M context) --- .../inspection/vo/InspectionRecordRespVO.java | 8 +++-- .../InspectionAttributionServiceImpl.java | 16 +++------- .../InspectionRecordServiceImpl.java | 16 ++++------ .../ops/enums/InspectionAttributionEnum.java | 32 +++++++++++++++++++ .../ops/enums/InspectionResultEnum.java | 31 ++++++++++++++++++ 5 files changed, 81 insertions(+), 22 deletions(-) create mode 100644 viewsh-module-ops/viewsh-module-ops-api/src/main/java/com/viewsh/module/ops/enums/InspectionAttributionEnum.java create mode 100644 viewsh-module-ops/viewsh-module-ops-api/src/main/java/com/viewsh/module/ops/enums/InspectionResultEnum.java diff --git a/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/controller/admin/inspection/vo/InspectionRecordRespVO.java b/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/controller/admin/inspection/vo/InspectionRecordRespVO.java index fac3b1c..6f04f1e 100644 --- a/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/controller/admin/inspection/vo/InspectionRecordRespVO.java +++ b/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/controller/admin/inspection/vo/InspectionRecordRespVO.java @@ -4,6 +4,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.time.LocalDateTime; +import java.util.List; @Schema(description = "管理后台 - 巡检记录 Response VO") @Data @@ -21,18 +22,21 @@ public class InspectionRecordRespVO { @Schema(description = "位置是否异常(0正常 1异常)", example = "0") private Integer isLocationException; - @Schema(description = "巡检结果(0不合格 1合格)", example = "1") + @Schema(description = "巡检结果,参见 InspectionResultEnum(0不合格 1合格)", example = "1") private Integer resultStatus; @Schema(description = "备注", example = "检查完成") private String remark; - @Schema(description = "归属判定结果(1个人责任 2突发状况 3正常)", example = "3") + @Schema(description = "归属判定结果,参见 InspectionAttributionEnum(1个人责任 2突发状况 3正常)", example = "3") private Integer attributionResult; @Schema(description = "整改工单ID", example = "2048") private Long generatedOrderId; + @Schema(description = "快捷标签", example = "[\"地面污渍\",\"垃圾未清理\"]") + private List tags; + @Schema(description = "创建时间") private LocalDateTime createTime; diff --git a/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/service/inspection/InspectionAttributionServiceImpl.java b/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/service/inspection/InspectionAttributionServiceImpl.java index ceaa680..f320109 100644 --- a/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/service/inspection/InspectionAttributionServiceImpl.java +++ b/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/service/inspection/InspectionAttributionServiceImpl.java @@ -1,6 +1,7 @@ package com.viewsh.module.ops.environment.service.inspection; import com.viewsh.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.viewsh.module.ops.enums.InspectionAttributionEnum; import com.viewsh.module.ops.dal.dataobject.area.OpsBusAreaDO; import com.viewsh.module.ops.dal.dataobject.workorder.OpsOrderDO; import com.viewsh.module.ops.dal.mysql.area.OpsBusAreaMapper; @@ -22,13 +23,6 @@ import org.springframework.validation.annotation.Validated; @Slf4j public class InspectionAttributionServiceImpl implements InspectionAttributionService { - /** 归属判定:个人责任(停留时长不足) */ - private static final int ATTRIBUTION_PERSONAL = 1; - /** 归属判定:突发状况(停留时长达标) */ - private static final int ATTRIBUTION_EMERGENCY = 2; - /** 归属判定:正常(合格巡检,无需判定) */ - private static final int ATTRIBUTION_NORMAL = 3; - @Resource private OpsInspectionRecordMapper inspectionRecordMapper; @@ -50,7 +44,7 @@ public class InspectionAttributionServiceImpl implements InspectionAttributionSe if (lastOrder == null) { log.warn("[determineAttribution] 区域 {} 无已完成工单,标记为正常: recordId={}", areaId, recordId); - updateAttributionResult(recordId, null, null, ATTRIBUTION_NORMAL); + updateAttributionResult(recordId, null, null, InspectionAttributionEnum.NORMAL.getResult()); return; } @@ -65,7 +59,7 @@ public class InspectionAttributionServiceImpl implements InspectionAttributionSe OpsBusAreaDO area = opsBusAreaMapper.selectById(areaId); if (area == null || area.getStandardDuration() == null) { log.warn("[determineAttribution] 区域 {} 无标准时长配置,标记为正常: recordId={}", areaId, recordId); - updateAttributionResult(recordId, lastOrder.getId(), stayDurationSeconds, ATTRIBUTION_NORMAL); + updateAttributionResult(recordId, lastOrder.getId(), stayDurationSeconds, InspectionAttributionEnum.NORMAL.getResult()); return; } int standardDurationSeconds = area.getStandardDuration() * 60; // 分钟 → 秒 @@ -74,8 +68,8 @@ public class InspectionAttributionServiceImpl implements InspectionAttributionSe // T_stay >= clean_threshold → 突发状况(保洁员已做到位,不扣分) // T_stay < clean_threshold → 个人责任(保洁时长不足,扣信用分) int attributionResult = stayDurationSeconds >= standardDurationSeconds - ? ATTRIBUTION_EMERGENCY - : ATTRIBUTION_PERSONAL; + ? InspectionAttributionEnum.EMERGENCY.getResult() + : InspectionAttributionEnum.PERSONAL.getResult(); log.info("[determineAttribution] 归属判定完成: recordId={}, areaId={}, lastOrderId={}, " + "stayDuration={}s, standardDuration={}s({}min), result={}", diff --git a/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/service/inspection/InspectionRecordServiceImpl.java b/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/service/inspection/InspectionRecordServiceImpl.java index f2f109e..a3a2b5a 100644 --- a/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/service/inspection/InspectionRecordServiceImpl.java +++ b/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/service/inspection/InspectionRecordServiceImpl.java @@ -3,6 +3,7 @@ package com.viewsh.module.ops.environment.service.inspection; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.viewsh.framework.common.pojo.PageResult; import com.viewsh.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.viewsh.module.ops.enums.InspectionResultEnum; import com.viewsh.module.ops.environment.controller.admin.inspection.vo.InspectionRecordPageReqVO; import com.viewsh.module.ops.environment.controller.admin.inspection.vo.InspectionStatsReqVO; import com.viewsh.module.ops.environment.controller.admin.inspection.vo.InspectionStatsRespVO; @@ -33,11 +34,6 @@ import java.util.Map; @Slf4j public class InspectionRecordServiceImpl implements InspectionRecordService { - /** 巡检结果:合格 */ - private static final int RESULT_STATUS_PASSED = 1; - /** 巡检结果:不合格 */ - private static final int RESULT_STATUS_FAILED = 0; - @Resource private OpsInspectionRecordMapper inspectionRecordMapper; @@ -53,7 +49,7 @@ public class InspectionRecordServiceImpl implements InspectionRecordService { // 1. 判定巡检结果:任一项不合格 → 整体不合格 boolean allPassed = submitReqVO.getItems().stream() .allMatch(InspectionSubmitItemVO::getIsPassed); - int resultStatus = allPassed ? RESULT_STATUS_PASSED : RESULT_STATUS_FAILED; + int resultStatus = allPassed ? InspectionResultEnum.PASSED.getResult() : InspectionResultEnum.FAILED.getResult(); // 2. 保存巡检主记录 OpsInspectionRecordDO record = OpsInspectionRecordDO.builder() @@ -62,6 +58,7 @@ public class InspectionRecordServiceImpl implements InspectionRecordService { .isLocationException(submitReqVO.getIsLocationException()) .resultStatus(resultStatus) .remark(submitReqVO.getRemark()) + .tags(submitReqVO.getTags()) .build(); inspectionRecordMapper.insert(record); @@ -72,12 +69,13 @@ public class InspectionRecordServiceImpl implements InspectionRecordService { .templateId(itemVO.getTemplateId()) .isPassed(itemVO.getIsPassed()) .remark(itemVO.getRemark()) + .tags(itemVO.getTags()) .build()) .toList(); inspectionRecordItemMapper.insertBatch(items); // 4. 不合格时,在事务提交后异步触发归属判定 + 整改工单 - if (resultStatus == RESULT_STATUS_FAILED) { + if (resultStatus == InspectionResultEnum.FAILED.getResult()) { Long recordId = record.getId(); Long areaId = submitReqVO.getAreaId(); TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() { @@ -113,7 +111,7 @@ public class InspectionRecordServiceImpl implements InspectionRecordService { long passedCount = inspectionRecordMapper.selectCount(new LambdaQueryWrapperX() .eqIfPresent(OpsInspectionRecordDO::getAreaId, reqVO.getAreaId()) .betweenIfPresent(OpsInspectionRecordDO::getCreateTime, reqVO.getCreateTime()) - .eq(OpsInspectionRecordDO::getResultStatus, RESULT_STATUS_PASSED)); + .eq(OpsInspectionRecordDO::getResultStatus, InspectionResultEnum.PASSED.getResult())); long failedCount = totalCount - passedCount; // 3. 合格率 @@ -124,7 +122,7 @@ public class InspectionRecordServiceImpl implements InspectionRecordService { // 4. 不合格热点区域(按不合格次数降序,取前10) QueryWrapper groupWrapper = new QueryWrapper<>(); groupWrapper.select("area_id AS areaId", "COUNT(*) AS failedCount"); - groupWrapper.eq("result_status", RESULT_STATUS_FAILED); + groupWrapper.eq("result_status", InspectionResultEnum.FAILED.getResult()); groupWrapper.eq("deleted", false); if (reqVO.getAreaId() != null) { groupWrapper.eq("area_id", reqVO.getAreaId()); diff --git a/viewsh-module-ops/viewsh-module-ops-api/src/main/java/com/viewsh/module/ops/enums/InspectionAttributionEnum.java b/viewsh-module-ops/viewsh-module-ops-api/src/main/java/com/viewsh/module/ops/enums/InspectionAttributionEnum.java new file mode 100644 index 0000000..5098be1 --- /dev/null +++ b/viewsh-module-ops/viewsh-module-ops-api/src/main/java/com/viewsh/module/ops/enums/InspectionAttributionEnum.java @@ -0,0 +1,32 @@ +package com.viewsh.module.ops.enums; + +import com.viewsh.framework.common.core.ArrayValuable; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; + +/** + * 巡检归属判定枚举 + * + * @author lzh + */ +@AllArgsConstructor +@Getter +public enum InspectionAttributionEnum implements ArrayValuable { + + PERSONAL(1, "个人责任"), + EMERGENCY(2, "突发状况"), + NORMAL(3, "正常"); + + public static final Integer[] ARRAYS = Arrays.stream(values()).map(InspectionAttributionEnum::getResult).toArray(Integer[]::new); + + private final int result; + private final String description; + + @Override + public Integer[] array() { + return ARRAYS; + } + +} diff --git a/viewsh-module-ops/viewsh-module-ops-api/src/main/java/com/viewsh/module/ops/enums/InspectionResultEnum.java b/viewsh-module-ops/viewsh-module-ops-api/src/main/java/com/viewsh/module/ops/enums/InspectionResultEnum.java new file mode 100644 index 0000000..6f941bc --- /dev/null +++ b/viewsh-module-ops/viewsh-module-ops-api/src/main/java/com/viewsh/module/ops/enums/InspectionResultEnum.java @@ -0,0 +1,31 @@ +package com.viewsh.module.ops.enums; + +import com.viewsh.framework.common.core.ArrayValuable; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; + +/** + * 巡检结果枚举 + * + * @author lzh + */ +@AllArgsConstructor +@Getter +public enum InspectionResultEnum implements ArrayValuable { + + FAILED(0, "不合格"), + PASSED(1, "合格"); + + public static final Integer[] ARRAYS = Arrays.stream(values()).map(InspectionResultEnum::getResult).toArray(Integer[]::new); + + private final int result; + private final String description; + + @Override + public Integer[] array() { + return ARRAYS; + } + +}