Browse Source

充电站充电桩状态统计

skyline 2 năm trước cách đây
mục cha
commit
929692508d

+ 11 - 7
admin/src/main/java/com/kym/admin/controller/EquipmentInfoController.java

@@ -5,12 +5,7 @@ import com.kym.entity.admin.EquipmentInfo;
 import com.kym.entity.admin.queryParams.EquipmentQueryParam;
 import com.kym.entity.common.PageBean;
 import com.kym.service.admin.EquipmentInfoService;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.ModelAttribute;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import static com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isNotNull;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * <p>
@@ -39,8 +34,17 @@ public class EquipmentInfoController {
     @GetMapping("/listEquipment")
     R listEquipment(@ModelAttribute EquipmentQueryParam params) {
         PageBean<EquipmentInfo> res = equipmentInfoService.listEquipment(params);
-
         return R.success(res);
     }
 
+    /**
+     * 统计充电桩状态
+     *
+     * @return
+     */
+    @GetMapping({"/statEquipmentStatus/{stationId}","/statEquipmentStatus"})
+    R statEquipment(@PathVariable(required = false) String stationId) {
+        return R.success(equipmentInfoService.statEquipmentStatus(stationId));
+    }
+
 }

+ 4 - 0
entity/src/main/java/com/kym/entity/admin/EquipmentInfo.java

@@ -21,6 +21,10 @@ public class EquipmentInfo extends BaseEntity {
 
     private static final long serialVersionUID = 1L;
 
+    private static int SERVICE_STATUS_空闲 = 0;
+    private static int SERVICE_STATUS_已连接 = 1;
+    private static int SERVICE_STATUS_充电中 = 2;
+
     /**
      * 公司id
      */

+ 15 - 0
entity/src/main/java/com/kym/entity/miniapp/ChargeOrder.java

@@ -24,6 +24,21 @@ public class ChargeOrder extends BaseEntity implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
+    public static int ORDER_STATUS_未知 = 0;
+    public static int ORDER_STATUS_成功 = 1;
+    public static int ORDER_STATUS_失败 = 2;
+
+
+    public static int CHARGE_STATUS_启动中 = 1;
+    public static int CHARGE_STATUS_充电中 = 2;
+    public static int CHARGE_STATUS_停止中 = 3;
+    public static int CHARGE_STATUS_已结束 = 4;
+    public static int CHARGE_STATUS_未知 = 5;
+
+
+    public static int INVOICE_STATUS_未开票 = 0;
+    public static int INVOICE_STATUS_已开票 = 1;
+
     private Long userId;
 
     private String stationId;

+ 4 - 0
service/src/main/java/com/kym/service/admin/EquipmentInfoService.java

@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.kym.entity.admin.queryParams.EquipmentQueryParam;
 import com.kym.entity.common.PageBean;
 
+import java.util.Map;
+
 /**
  * <p>
  * 充电桩桩体设备 服务类
@@ -16,4 +18,6 @@ import com.kym.entity.common.PageBean;
 public interface EquipmentInfoService extends IService<EquipmentInfo> {
 
     PageBean<EquipmentInfo> listEquipment(EquipmentQueryParam params);
+
+    Map statEquipmentStatus(String stationId);
 }

+ 10 - 0
service/src/main/java/com/kym/service/admin/impl/EquipmentInfoServiceImpl.java

@@ -13,6 +13,8 @@ import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
 import java.util.Comparator;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 import static com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isNotNull;
 
@@ -47,4 +49,12 @@ public class EquipmentInfoServiceImpl extends ServiceImpl<EquipmentInfoMapper, E
                 .toList().stream().sorted(Comparator.comparing(EquipmentInfo::getShortId)).toList();
         return new PageBean<>(res);
     }
+
+    @Override
+    public Map<Integer, Long> statEquipmentStatus(String stationId) {
+        // 获取指定站点下的充电桩
+        var equipmentInfos = lambdaQuery().eq(isNotNull(stationId), EquipmentInfo::getStationId, stationId).list();
+        // 根据状态进行分组
+        return equipmentInfos.stream().collect(Collectors.groupingBy(EquipmentInfo::getServiceStatus, Collectors.counting()));
+    }
 }

+ 4 - 5
service/src/main/java/com/kym/service/miniapp/impl/ChargeServiceImpl.java

@@ -39,8 +39,7 @@ public class ChargeServiceImpl implements ChargeService {
 
     private final EnPlusConfig enPlusConfig;
 
-    public ChargeServiceImpl(EquipmentRelationService equipmentRelationService, ChargeOrderService chargeOrderService,
-                             AccountService accountService, EnPlusService enPlusService, EnPlusConfig enPlusConfig) {
+    public ChargeServiceImpl(EquipmentRelationService equipmentRelationService, ChargeOrderService chargeOrderService, AccountService accountService, EnPlusService enPlusService, EnPlusConfig enPlusConfig) {
         this.equipmentRelationService = equipmentRelationService;
         this.chargeOrderService = chargeOrderService;
         this.accountService = accountService;
@@ -95,7 +94,7 @@ public class ChargeServiceImpl implements ChargeService {
                 order.setStationId(stationId);
                 order.setStartChargeSeq(startChargeSeq);
                 order.setConnectorId(connectorId);
-                order.setOrderStatus(0);
+                order.setOrderStatus(ChargeOrder.ORDER_STATUS_成功);
                 order.setChargeStatus(startCharge.getIntValue("StartChargeSeqStat"));
                 chargeOrderService.save(order);
                 return Map.of("startChargeSeq", startChargeSeq);
@@ -151,7 +150,7 @@ public class ChargeServiceImpl implements ChargeService {
             return chargeOrder;
         } else {
             LOGGER.debug("用户:{}无进行中的订单", userId);
-            return null;
+            throw null;
         }
     }
 
@@ -207,7 +206,7 @@ public class ChargeServiceImpl implements ChargeService {
         var chargeOrder = chargeOrderService.lambdaQuery()
                 .eq(ChargeOrder::getUserId, userId)
                 .eq(ChargeOrder::getConnectorId, connectorId)
-                .eq(ChargeOrder::getChargeStatus, 2)
+                .eq(ChargeOrder::getChargeStatus, ChargeOrder.CHARGE_STATUS_充电中)
                 .one();
         if (chargeOrder == null) {
             // 记录失败原因