diff --git a/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/dal/dataobject/workorder/OpsOrderCleanExtDO.java b/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/dal/dataobject/workorder/OpsOrderCleanExtDO.java index c68f12f..7599c05 100644 --- a/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/dal/dataobject/workorder/OpsOrderCleanExtDO.java +++ b/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/dal/dataobject/workorder/OpsOrderCleanExtDO.java @@ -42,6 +42,14 @@ public class OpsOrderCleanExtDO extends BaseDO { * 预计作业时长(分钟) */ private Integer expectedDuration; + /** + * 实际下发时间 + */ + private LocalDateTime dispatchedTime; + /** + * 首次下发时间(用于计算响应时长,不受暂停影响) + */ + private LocalDateTime firstDispatchedTime; /** * 实际到岗时间 */ diff --git a/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/dal/mysql/workorder/OpsOrderCleanExtMapper.java b/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/dal/mysql/workorder/OpsOrderCleanExtMapper.java index da47f82..f4848f5 100644 --- a/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/dal/mysql/workorder/OpsOrderCleanExtMapper.java +++ b/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/dal/mysql/workorder/OpsOrderCleanExtMapper.java @@ -38,4 +38,26 @@ public interface OpsOrderCleanExtMapper extends BaseMapperX } } + /** + * 插入或选择性更新扩展信息 + *

+ * 只更新非空字段,且保留 firstDispatchedTime(已存在时不覆盖) + * + * @param entity 扩展信息实体 + * @return 影响行数 + */ + default int insertOrUpdateSelective(OpsOrderCleanExtDO entity) { + OpsOrderCleanExtDO existing = selectByOpsOrderId(entity.getOpsOrderId()); + if (existing == null) { + return insert(entity); + } else { + entity.setId(existing.getId()); + // 保留首次下发时间 + if (existing.getFirstDispatchedTime() != null && entity.getFirstDispatchedTime() != null) { + entity.setFirstDispatchedTime(existing.getFirstDispatchedTime()); + } + return updateById(entity); + } + } + }