Bladeren bron

独立接口修改事件状态,并补充申报完成状态与邀约事件编号

Co-authored-by: Cursor <cursoragent@cursor.com>
fuyuchuan 3 dagen geleden
bovenliggende
commit
2c83ca7831
19 gewijzigde bestanden met toevoegingen van 163 en 28 verwijderingen
  1. 17 0
      service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/constant/VppDrEventStatus.java
  2. 12 0
      service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/controller/web/DrController.java
  3. 1 0
      service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/domain/VppDrEvent.java
  4. 6 0
      service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/service/VppDrService.java
  5. 2 1
      service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/service/impl/VppBaselineServiceImpl.java
  6. 2 1
      service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/service/impl/VppDashboardServiceImpl.java
  7. 6 5
      service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/service/impl/VppDrEventIngestServiceImpl.java
  8. 43 6
      service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/service/impl/VppDrInvitationServiceImpl.java
  9. 3 2
      service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/service/impl/VppDrMonitorServiceImpl.java
  10. 35 5
      service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/service/impl/VppDrServiceImpl.java
  11. 2 1
      service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/service/impl/VppResponseMonitorServiceImpl.java
  12. 2 1
      service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/service/impl/VppSiteCompletionRateTaskServiceImpl.java
  13. 1 0
      service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/service/vo/DrEventDetailVO.java
  14. 19 0
      service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/service/vo/DrEventStatusRequest.java
  15. 2 0
      service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/service/vo/DrInvitationVO.java
  16. 1 0
      service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/service/vo/DrMonitorRecordVO.java
  17. 4 3
      service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/util/VppUnEventParser.java
  18. 4 2
      service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/util/VppUnPayloadHelper.java
  19. 1 1
      service-vpp/service-vpp-biz/src/main/resources/sql/vpp_schema.sql

+ 17 - 0
service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/constant/VppDrEventStatus.java

@@ -0,0 +1,17 @@
+package com.usky.vpp.constant;
+
+/**
+ * 需求响应事件状态:0待参与 1已申报 2申报完成 3执行中 4已结束 5已取消
+ */
+public final class VppDrEventStatus {
+
+    public static final int PENDING = 0;
+    public static final int DECLARED = 1;
+    public static final int DECLARE_COMPLETED = 2;
+    public static final int EXECUTING = 3;
+    public static final int ENDED = 4;
+    public static final int CANCELLED = 5;
+
+    private VppDrEventStatus() {
+    }
+}

+ 12 - 0
service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/controller/web/DrController.java

@@ -12,6 +12,7 @@ import com.usky.vpp.service.VppResponseDeviationPriceService;
 import com.usky.vpp.service.vo.DrClearingRequest;
 import com.usky.vpp.service.vo.DrEventDetailVO;
 import com.usky.vpp.service.vo.DrEventRequest;
+import com.usky.vpp.service.vo.DrEventStatusRequest;
 import com.usky.vpp.service.vo.DrInterveneRequest;
 import com.usky.vpp.service.vo.DrInvitationNotifyRequest;
 import com.usky.vpp.service.vo.DrInvitationReplyRequest;
@@ -53,6 +54,17 @@ public class DrController {
         return ApiResult.success(vppDrService.pageEvent(params));
     }
 
+    /**
+     * 修改事件状态(独立接口,不修改事件其它字段)。
+     * <p>校验租户后,仅允许从 0待参与 改为 1已申报。</p>
+     * <p>事件状态:0待参与 1已申报 2申报完成 3执行中 4已结束 5已取消</p>
+     */
+    @PutMapping(value = "/event/status")
+    public ApiResult<Void> updateEventStatus(@RequestBody DrEventStatusRequest body) {
+        vppDrService.updateEventStatus(body);
+        return ApiResult.success();
+    }
+
     @GetMapping(value = "/event/{id}")
     public ApiResult<DrEventDetailVO> getEvent(@PathVariable("id") Long id) {
         return ApiResult.success(vppDrService.getEvent(id));

+ 1 - 0
service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/domain/VppDrEvent.java

@@ -60,6 +60,7 @@ public class VppDrEvent implements Serializable {
     /** 下浮系数(必填) */
     @TableField("floating_coefficient")
     private BigDecimal floatingCoefficient;
+    /** 0待参与 1已申报 2申报完成 3执行中 4已结束 5已取消 */
     @TableField("event_status")
     private Integer eventStatus;
     @TableField("raw_payload")

+ 6 - 0
service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/service/VppDrService.java

@@ -7,6 +7,7 @@ import com.usky.vpp.domain.VppDrStrategy;
 import com.usky.vpp.service.vo.DrClearingRequest;
 import com.usky.vpp.service.vo.DrEventDetailVO;
 import com.usky.vpp.service.vo.DrEventRequest;
+import com.usky.vpp.service.vo.DrEventStatusRequest;
 import com.usky.vpp.service.vo.DrInterveneRequest;
 import com.usky.vpp.service.vo.DrParticipateRequest;
 import com.usky.vpp.service.vo.DrStrategyRequest;
@@ -27,6 +28,11 @@ public interface VppDrService {
 
     void updateEvent(Long id, DrEventRequest request);
 
+    /**
+     * 修改事件状态(独立接口,不走编辑事件)。校验租户后仅允许 0待参与 → 1已申报。
+     */
+    void updateEventStatus(DrEventStatusRequest request);
+
     void deleteEvent(Long id);
 
     Object assessCapability(Long eventId);

+ 2 - 1
service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/service/impl/VppBaselineServiceImpl.java

@@ -2,6 +2,7 @@ package com.usky.vpp.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.usky.common.core.exception.BusinessException;
+import com.usky.vpp.constant.VppDrEventStatus;
 import com.usky.vpp.domain.VppDevice;
 import com.usky.vpp.domain.VppDrEvent;
 import com.usky.vpp.domain.VppResourcePoint;
@@ -42,7 +43,7 @@ import java.util.stream.Collectors;
 @Service
 public class VppBaselineServiceImpl implements VppBaselineService {
 
-    private static final int EVENT_STATUS_ENDED = 3;
+    private static final int EVENT_STATUS_ENDED = VppDrEventStatus.ENDED;
     private static final DateTimeFormatter DATE_TIME_FMT = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 
     @Autowired

+ 2 - 1
service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/service/impl/VppDashboardServiceImpl.java

@@ -2,6 +2,7 @@ package com.usky.vpp.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.usky.common.security.utils.SecurityUtils;
+import com.usky.vpp.constant.VppDrEventStatus;
 import com.usky.vpp.constant.VppSocialBenefitConstants;
 import com.usky.vpp.domain.DmpDeviceStatus;
 import com.usky.vpp.domain.VppCustomer;
@@ -61,7 +62,7 @@ import java.util.stream.Collectors;
 @Service
 public class VppDashboardServiceImpl implements VppDashboardService {
 
-    private static final int EVENT_STATUS_ENDED = 3;
+    private static final int EVENT_STATUS_ENDED = VppDrEventStatus.ENDED;
     private static final int EVENT_TYPE_PEAK = 1;
     private static final int EVENT_TYPE_VALLEY = 2;
     private static final int REPLY_ACCEPT = 1;

+ 6 - 5
service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/service/impl/VppDrEventIngestServiceImpl.java

@@ -3,6 +3,7 @@ package com.usky.vpp.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.usky.vpp.constant.VppDrEventStatus;
 import com.usky.vpp.domain.VppDrEvent;
 import com.usky.vpp.enums.VppUnEventPhase;
 import com.usky.vpp.mapper.VppDrEventMapper;
@@ -29,11 +30,11 @@ public class VppDrEventIngestServiceImpl implements VppDrEventIngestService {
 
     private static final Logger log = LoggerFactory.getLogger(VppDrEventIngestServiceImpl.class);
 
-    private static final int EVENT_STATUS_PENDING = 0;
-    private static final int EVENT_STATUS_DECLARED = 1;
-    private static final int EVENT_STATUS_EXECUTING = 2;
-    private static final int EVENT_STATUS_ENDED = 3;
-    private static final int EVENT_STATUS_CANCELLED = 4;
+    private static final int EVENT_STATUS_PENDING = VppDrEventStatus.PENDING;
+    private static final int EVENT_STATUS_DECLARED = VppDrEventStatus.DECLARED;
+    private static final int EVENT_STATUS_EXECUTING = VppDrEventStatus.EXECUTING;
+    private static final int EVENT_STATUS_ENDED = VppDrEventStatus.ENDED;
+    private static final int EVENT_STATUS_CANCELLED = VppDrEventStatus.CANCELLED;
 
     @Autowired
     private VppDrEventMapper eventMapper;

+ 43 - 6
service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/service/impl/VppDrInvitationServiceImpl.java

@@ -311,6 +311,19 @@ public class VppDrInvitationServiceImpl implements VppDrInvitationService {
         if (params.get("drEventId") != null) {
             wrapper.eq(VppDrInvitation::getDrEventId, Long.parseLong(params.get("drEventId").toString()));
         }
+        if (params.get("eventId") != null && StringUtils.hasText(params.get("eventId").toString())) {
+            List<Long> eventPks = eventMapper.selectList(new LambdaQueryWrapper<VppDrEvent>()
+                            .eq(VppDrEvent::getDeleteFlag, VppAuditHelper.NOT_DELETED)
+                            .like(VppDrEvent::getEventId, params.get("eventId").toString().trim()))
+                    .stream()
+                    .map(VppDrEvent::getId)
+                    .collect(Collectors.toList());
+            if (eventPks.isEmpty()) {
+                wrapper.eq(VppDrInvitation::getDrEventId, -1L);
+            } else {
+                wrapper.in(VppDrInvitation::getDrEventId, eventPks);
+            }
+        }
         if (params.get("responseType") != null) {
             wrapper.eq(VppDrInvitation::getResponseType, Integer.parseInt(params.get("responseType").toString()));
         }
@@ -489,13 +502,27 @@ public class VppDrInvitationServiceImpl implements VppDrInvitationService {
         if (CollectionUtils.isEmpty(invitations)) {
             return Collections.emptyList();
         }
-        Set<Long> customerIds = invitations.stream().map(VppDrInvitation::getCustomerId).collect(Collectors.toSet());
-
-        Map<Long, VppCustomer> customerMap = customerMapper.selectBatchIds(customerIds).stream()
+        Set<Long> customerIds = invitations.stream()
+                .map(VppDrInvitation::getCustomerId)
+                .filter(Objects::nonNull)
+                .collect(Collectors.toSet());
+        Map<Long, VppCustomer> customerMap = customerIds.isEmpty()
+                ? Collections.emptyMap()
+                : customerMapper.selectBatchIds(customerIds).stream()
                 .collect(Collectors.toMap(VppCustomer::getId, c -> c, (a, b) -> a));
 
+        Set<Long> eventPks = invitations.stream()
+                .map(VppDrInvitation::getDrEventId)
+                .filter(Objects::nonNull)
+                .collect(Collectors.toSet());
+        Map<Long, VppDrEvent> eventMap = eventPks.isEmpty()
+                ? Collections.emptyMap()
+                : eventMapper.selectBatchIds(eventPks).stream()
+                .filter(e -> !VppAuditHelper.isDeleted(e.getDeleteFlag()))
+                .collect(Collectors.toMap(VppDrEvent::getId, e -> e, (a, b) -> a));
+
         return invitations.stream()
-                .map(inv -> toVo(inv, customerMap.get(inv.getCustomerId()), null))
+                .map(inv -> toVo(inv, customerMap.get(inv.getCustomerId()), null, eventMap.get(inv.getDrEventId())))
                 .collect(Collectors.toList());
     }
 
@@ -504,10 +531,17 @@ public class VppDrInvitationServiceImpl implements VppDrInvitationService {
         VppCustomerContact contact = invitation.getSmsContactId() != null
                 ? contactMapper.selectById(invitation.getSmsContactId())
                 : null;
-        return toVo(invitation, customer, contact);
+        VppDrEvent event = invitation.getDrEventId() != null
+                ? eventMapper.selectById(invitation.getDrEventId())
+                : null;
+        if (event != null && VppAuditHelper.isDeleted(event.getDeleteFlag())) {
+            event = null;
+        }
+        return toVo(invitation, customer, contact, event);
     }
 
-    private DrInvitationVO toVo(VppDrInvitation invitation, VppCustomer customer, VppCustomerContact contact) {
+    private DrInvitationVO toVo(VppDrInvitation invitation, VppCustomer customer, VppCustomerContact contact,
+                                VppDrEvent event) {
         DrInvitationVO vo = new DrInvitationVO();
         BeanUtils.copyProperties(invitation, vo);
         if (customer != null) {
@@ -517,6 +551,9 @@ public class VppDrInvitationServiceImpl implements VppDrInvitationService {
             vo.setSmsContactName(contact.getContactName());
             vo.setSmsContactPhone(contact.getContactPhone());
         }
+        if (event != null) {
+            vo.setEventId(event.getEventId());
+        }
         return vo;
     }
 

+ 3 - 2
service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/service/impl/VppDrMonitorServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.usky.common.core.bean.CommonPage;
 import com.usky.common.core.exception.BusinessException;
 import com.usky.common.security.utils.SecurityUtils;
+import com.usky.vpp.constant.VppDrEventStatus;
 import com.usky.vpp.domain.VppDrEvent;
 import com.usky.vpp.domain.VppDrInvitation;
 import com.usky.vpp.domain.VppDrParticipation;
@@ -56,8 +57,8 @@ import java.util.stream.Collectors;
 @Service
 public class VppDrMonitorServiceImpl implements VppDrMonitorService {
 
-    private static final int EVENT_STATUS_EXECUTING = 2;
-    private static final int EVENT_STATUS_ENDED = 3;
+    private static final int EVENT_STATUS_EXECUTING = VppDrEventStatus.EXECUTING;
+    private static final int EVENT_STATUS_ENDED = VppDrEventStatus.ENDED;
     private static final int SUPPORT_PEAK = 1;
     private static final int PARTICIPATE_ACCEPT = 1;
     private static final int SCALE = 4;

+ 35 - 5
service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/service/impl/VppDrServiceImpl.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.usky.common.core.bean.CommonPage;
 import com.usky.common.core.exception.BusinessException;
+import com.usky.common.security.utils.SecurityUtils;
+import com.usky.vpp.constant.VppDrEventStatus;
 import com.usky.vpp.domain.VppCustomer;
 import com.usky.vpp.domain.VppDrEvaluation;
 import com.usky.vpp.domain.VppDrEvent;
@@ -26,6 +28,7 @@ import com.usky.vpp.service.VppUnIntegrationService;
 import com.usky.vpp.service.vo.DrClearingRequest;
 import com.usky.vpp.service.vo.DrEventDetailVO;
 import com.usky.vpp.service.vo.DrEventRequest;
+import com.usky.vpp.service.vo.DrEventStatusRequest;
 import com.usky.vpp.service.vo.DrParticipationVO;
 import com.usky.vpp.service.vo.DrInterveneRequest;
 import com.usky.vpp.service.vo.DrParticipateRequest;
@@ -53,11 +56,11 @@ public class VppDrServiceImpl implements VppDrService {
 
     private static final Logger log = LoggerFactory.getLogger(VppDrServiceImpl.class);
 
-    private static final int EVENT_STATUS_PENDING = 0;
-    private static final int EVENT_STATUS_DECLARED = 1;
-    private static final int EVENT_STATUS_EXECUTING = 2;
-    private static final int EVENT_STATUS_ENDED = 3;
-    private static final int EVENT_STATUS_CANCELLED = 4;
+    private static final int EVENT_STATUS_PENDING = VppDrEventStatus.PENDING;
+    private static final int EVENT_STATUS_DECLARED = VppDrEventStatus.DECLARED;
+    private static final int EVENT_STATUS_EXECUTING = VppDrEventStatus.EXECUTING;
+    private static final int EVENT_STATUS_ENDED = VppDrEventStatus.ENDED;
+    private static final int EVENT_STATUS_CANCELLED = VppDrEventStatus.CANCELLED;
 
     private static final int PARTICIPATE_STATUS_ACCEPT = 1;
 
@@ -194,6 +197,33 @@ public class VppDrServiceImpl implements VppDrService {
         eventMapper.updateById(event);
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateEventStatus(DrEventStatusRequest request) {
+        if (request == null || request.getId() == null) {
+            throw new BusinessException("事件ID不能为空");
+        }
+        if (request.getEventStatus() == null) {
+            throw new BusinessException("事件状态不能为空");
+        }
+        if (request.getEventStatus() != EVENT_STATUS_DECLARED) {
+            throw new BusinessException("仅允许将事件从待参与改为已申报");
+        }
+
+        VppDrEvent event = requireEvent(request.getId());
+        Integer tenantId = SecurityUtils.getTenantId();
+        if (tenantId != null && event.getTenantId() != null && !tenantId.equals(event.getTenantId())) {
+            throw new BusinessException("无权操作其他租户的事件");
+        }
+        if (event.getEventStatus() == null || event.getEventStatus() != EVENT_STATUS_PENDING) {
+            throw new BusinessException("仅待参与状态的事件可改为已申报");
+        }
+
+        event.setEventStatus(EVENT_STATUS_DECLARED);
+        VppAuditHelper.fillUpdate(event);
+        eventMapper.updateById(event);
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void deleteEvent(Long id) {

+ 2 - 1
service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/service/impl/VppResponseMonitorServiceImpl.java

@@ -2,6 +2,7 @@ package com.usky.vpp.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.usky.common.core.exception.BusinessException;
+import com.usky.vpp.constant.VppDrEventStatus;
 import com.usky.vpp.constant.VppTsdbConstants;
 import com.usky.vpp.domain.VppCustomer;
 import com.usky.vpp.domain.VppDevice;
@@ -57,7 +58,7 @@ import java.util.stream.Collectors;
 public class VppResponseMonitorServiceImpl implements VppResponseMonitorService {
 
     private static final DateTimeFormatter DATE_FMT = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-    private static final int EVENT_STATUS_ENDED = 3;
+    private static final int EVENT_STATUS_ENDED = VppDrEventStatus.ENDED;
 
     @Autowired
     private VppSiteMapper siteMapper;

+ 2 - 1
service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/service/impl/VppSiteCompletionRateTaskServiceImpl.java

@@ -3,6 +3,7 @@ package com.usky.vpp.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.usky.common.security.utils.SecurityUtils;
+import com.usky.vpp.constant.VppDrEventStatus;
 import com.usky.vpp.domain.VppDevice;
 import com.usky.vpp.domain.VppDrEvent;
 import com.usky.vpp.domain.VppDrParticipation;
@@ -40,7 +41,7 @@ public class VppSiteCompletionRateTaskServiceImpl implements VppSiteCompletionRa
 
     private static final Logger log = LoggerFactory.getLogger(VppSiteCompletionRateTaskServiceImpl.class);
 
-    private static final int EVENT_STATUS_ENDED = 3;
+    private static final int EVENT_STATUS_ENDED = VppDrEventStatus.ENDED;
     private static final int SITE_STATUS_ONLINE = 0;
     private static final int SITE_STATUS_OFFLINE = 1;
     private static final int SITE_STATUS_FAULT = 2;

+ 1 - 0
service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/service/vo/DrEventDetailVO.java

@@ -36,6 +36,7 @@ public class DrEventDetailVO {
     private BigDecimal subsidyPrice;
     /** 下浮系数 */
     private BigDecimal floatingCoefficient;
+    /** 0待参与 1已申报 2申报完成 3执行中 4已结束 5已取消 */
     private Integer eventStatus;
     private List<DrParticipationVO> participations;
 }

+ 19 - 0
service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/service/vo/DrEventStatusRequest.java

@@ -0,0 +1,19 @@
+package com.usky.vpp.service.vo;
+
+import lombok.Data;
+
+/**
+ * 修改需求响应事件状态
+ */
+@Data
+public class DrEventStatusRequest {
+
+    /** 事件表主键 id */
+    private Long id;
+
+    /**
+     * 目标状态。当前仅允许 1(已申报),且原状态必须为 0(待参与)。
+     * 0待参与 1已申报 2申报完成 3执行中 4已结束 5已取消
+     */
+    private Integer eventStatus;
+}

+ 2 - 0
service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/service/vo/DrInvitationVO.java

@@ -15,6 +15,8 @@ public class DrInvitationVO {
     private Long id;
     private String invitationNo;
     private Long drEventId;
+    /** 事件业务编号(vpp_dr_event.event_id) */
+    private String eventId;
     private Long customerId;
     private String customerName;
     private LocalDate executeStartDate;

+ 1 - 0
service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/service/vo/DrMonitorRecordVO.java

@@ -38,6 +38,7 @@ public class DrMonitorRecordVO {
     private BigDecimal subsidyPrice;
     /** 下浮系数 */
     private BigDecimal floatingCoefficient;
+    /** 0待参与 1已申报 2申报完成 3执行中 4已结束 5已取消 */
     private Integer eventStatus;
     private String rawPayload;
     private Integer tenantId;

+ 4 - 3
service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/util/VppUnEventParser.java

@@ -1,5 +1,6 @@
 package com.usky.vpp.util;
 
+import com.usky.vpp.constant.VppDrEventStatus;
 import com.usky.vpp.enums.VppUnEventPhase;
 import org.springframework.util.StringUtils;
 
@@ -130,11 +131,11 @@ public final class VppUnEventParser {
         }
         switch (status.trim().toLowerCase()) {
             case "cancelled":
-                return 4;
+                return VppDrEventStatus.CANCELLED;
             case "completed":
-                return 3;
+                return VppDrEventStatus.ENDED;
             case "active":
-                return 2;
+                return VppDrEventStatus.EXECUTING;
             case "far":
             case "near":
             case "none":

+ 4 - 2
service-vpp/service-vpp-biz/src/main/java/com/usky/vpp/util/VppUnPayloadHelper.java

@@ -1,5 +1,6 @@
 package com.usky.vpp.util;
 
+import com.usky.vpp.constant.VppDrEventStatus;
 import org.springframework.util.StringUtils;
 
 import java.math.BigDecimal;
@@ -205,7 +206,7 @@ public final class VppUnPayloadHelper {
 
     public static boolean isCancelled(Map<String, Object> payload) {
         Integer status = getInteger(payload, "eventStatus", "event_status", "status");
-        if (status != null && status == 4) {
+        if (status != null && (status == 4 || status == VppDrEventStatus.CANCELLED)) {
             return true;
         }
         String text = getString(payload, "eventStatus", "event_status", "status", "eventState");
@@ -213,7 +214,8 @@ public final class VppUnPayloadHelper {
             return false;
         }
         text = text.trim().toUpperCase();
-        return text.contains("取消") || "CANCELLED".equals(text) || "CANCELED".equals(text) || "4".equals(text);
+        return text.contains("取消") || "CANCELLED".equals(text) || "CANCELED".equals(text)
+                || "4".equals(text) || "5".equals(text);
     }
 
     private static Object getValue(Map<String, Object> map, String... keys) {

+ 1 - 1
service-vpp/service-vpp-biz/src/main/resources/sql/vpp_schema.sql

@@ -453,7 +453,7 @@ CREATE TABLE `vpp_dr_event` (
     `attachment_name` VARCHAR(200) NULL COMMENT '附件名称',
     `subsidy_price` DECIMAL(10,4) NULL COMMENT '补贴标准 元/kWh',
     `floating_coefficient` DECIMAL(10,4) NULL COMMENT '下浮系数',
-    `event_status` TINYINT NOT NULL COMMENT '0待参与 1已申报 2执行中 3已结束 4已取消',
+    `event_status` TINYINT NOT NULL COMMENT '0待参与 1已申报 2申报完成 3执行中 4已结束 5已取消',
     `raw_payload` JSON NULL COMMENT '原始邀约报文',
     `tenant_id` INT NULL COMMENT '租户ID',
     `create_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',