diff --git a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java index 5f2d8c542..1f9c8f14f 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java @@ -19,6 +19,7 @@ import com.jsowell.common.enums.ykc.PayModeEnum; import com.jsowell.common.enums.ykc.PileConnectorDataBaseStatusEnum; import com.jsowell.common.enums.ykc.ReturnCodeEnum; import com.jsowell.common.enums.ykc.ScenarioEnum; +import com.jsowell.common.enums.ykc.StartTypeEnum; import com.jsowell.common.exception.BusinessException; import com.jsowell.common.util.DateUtils; import com.jsowell.common.util.SecurityUtils; @@ -287,8 +288,18 @@ public class OrderService { orderInfo.setPayTime(new Date()); orderBasicInfoService.updateOrderBasicInfo(orderInfo); - String pileSn = orderInfo.getPileSn(); + if (StringUtils.equals(orderInfo.getStartType(), StartTypeEnum.NOW.getValue())) { + startCharging(orderInfo); + } + } + + /** + * 启动充电 + * @param orderInfo + */ + public void startCharging(OrderBasicInfo orderInfo) { + String pileSn = orderInfo.getPileSn(); // 发送启动充电指令前,再次下发计费模板 BillingTemplateVO billingTemplateVO = pileBillingTemplateService.selectBillingTemplateDetailByPileSn(pileSn); if (billingTemplateVO != null) { @@ -296,7 +307,7 @@ public class OrderService { } // 发送启动指令 - pileRemoteService.remoteStartCharging(pileSn, orderInfo.getConnectorCode(), orderInfo.getTransactionCode(), payAmount); + pileRemoteService.remoteStartCharging(pileSn, orderInfo.getConnectorCode(), orderInfo.getTransactionCode(), orderInfo.getPayAmount()); } /** diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java index 2a2ed9779..bae3a1ecb 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java @@ -13,6 +13,7 @@ import com.jsowell.pile.vo.web.OrderListVO; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; +import java.time.LocalDateTime; import java.util.List; /** @@ -29,7 +30,7 @@ public interface OrderBasicInfoMapper { * @param id 订单主键 * @return 订单 */ - public OrderBasicInfo selectOrderBasicInfoById(Long id); + OrderBasicInfo selectOrderBasicInfoById(Long id); /** * 条件查询订单基础信息 @@ -44,7 +45,7 @@ public interface OrderBasicInfoMapper { * @param orderBasicInfo 订单 * @return 订单集合 */ - public List selectOrderBasicInfoList(QueryOrderDTO orderBasicInfo); + List selectOrderBasicInfoList(QueryOrderDTO orderBasicInfo); /** * 新增订单 @@ -52,7 +53,7 @@ public interface OrderBasicInfoMapper { * @param orderBasicInfo 订单 * @return 结果 */ - public int insertOrderBasicInfo(OrderBasicInfo orderBasicInfo); + int insertOrderBasicInfo(OrderBasicInfo orderBasicInfo); /** * 修改订单 @@ -60,7 +61,7 @@ public interface OrderBasicInfoMapper { * @param orderBasicInfo 订单 * @return 结果 */ - public int updateOrderBasicInfo(OrderBasicInfo orderBasicInfo); + int updateOrderBasicInfo(OrderBasicInfo orderBasicInfo); /** * 批量删除订单 @@ -68,7 +69,7 @@ public interface OrderBasicInfoMapper { * @param ids 需要删除的数据主键集合 * @return 结果 */ - public int deleteOrderBasicInfoByIds(Long[] ids); + int deleteOrderBasicInfoByIds(Long[] ids); /** * 批量删除订单详情 @@ -76,7 +77,7 @@ public interface OrderBasicInfoMapper { * @param ids 需要删除的数据主键集合 * @return 结果 */ - public int deleteOrderDetailByOrderCodes(Long[] ids); + int deleteOrderDetailByOrderCodes(Long[] ids); /** * 批量新增订单详情 @@ -84,7 +85,7 @@ public interface OrderBasicInfoMapper { * @param orderDetailList 订单详情列表 * @return 结果 */ - public int batchOrderDetail(List orderDetailList); + int batchOrderDetail(List orderDetailList); /** @@ -93,7 +94,7 @@ public interface OrderBasicInfoMapper { * @param id 订单ID * @return 结果 */ - public int deleteOrderDetailByOrderCode(Long id); + int deleteOrderDetailByOrderCode(Long id); /** * 修改订单详情 @@ -185,4 +186,5 @@ public interface OrderBasicInfoMapper { */ List getAccumulativeInfo(QueryPersonPileDTO dto); + List getAppointmentOrder(LocalDateTime dateTime); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java index acb0011d9..95d4d334c 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java @@ -15,6 +15,7 @@ import com.jsowell.pile.vo.web.OrderListVO; import com.jsowell.pile.vo.web.OrderTotalDataVO; import com.jsowell.wxpay.dto.WeChatRefundDTO; +import java.time.LocalDateTime; import java.util.List; /** @@ -209,5 +210,10 @@ public interface IOrderBasicInfoService { */ void updateOrderStatusAsAbnormal(String pileSn); + /** + * 预约订单启动 + */ + void appointmentOrderStart(); + List getAppointmentOrder(LocalDateTime dateTime); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java index 114e09405..a889b74bb 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java @@ -71,6 +71,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.Comparator; import java.util.Date; import java.util.List; @@ -1169,4 +1170,9 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { } } } + + @Override + public List getAppointmentOrder(LocalDateTime dateTime) { + return orderBasicInfoMapper.getAppointmentOrder(dateTime); + } } diff --git a/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml index 1481e340c..34b2592ff 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml @@ -868,4 +868,14 @@ AND t1.del_flag = '0' + \ No newline at end of file diff --git a/jsowell-quartz/pom.xml b/jsowell-quartz/pom.xml index 540ac9fcc..86fde5deb 100644 --- a/jsowell-quartz/pom.xml +++ b/jsowell-quartz/pom.xml @@ -41,6 +41,12 @@ jsowell-pile 1.0.0 + + + com.jsowell + jsowell-admin + 1.0.0 + diff --git a/jsowell-quartz/src/main/java/com/jsowell/quartz/task/JsowellTask.java b/jsowell-quartz/src/main/java/com/jsowell/quartz/task/JsowellTask.java index c0b6069ea..e3b453421 100644 --- a/jsowell-quartz/src/main/java/com/jsowell/quartz/task/JsowellTask.java +++ b/jsowell-quartz/src/main/java/com/jsowell/quartz/task/JsowellTask.java @@ -1,13 +1,18 @@ package com.jsowell.quartz.task; import com.jsowell.common.util.DateUtils; +import com.jsowell.pile.domain.OrderBasicInfo; import com.jsowell.pile.service.IOrderBasicInfoService; +import com.jsowell.service.OrderService; +import org.apache.commons.collections4.CollectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.time.LocalDateTime; import java.util.Date; +import java.util.List; @Component("jsowellTask") public class JsowellTask { @@ -17,6 +22,9 @@ public class JsowellTask { @Autowired private IOrderBasicInfoService orderBasicInfoService; + @Autowired + private OrderService orderService; + /** * 关闭15分钟未支付的订单 * close15MinutesOfUnpaidOrders @@ -36,4 +44,19 @@ public class JsowellTask { String endTime = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, new Date()); orderBasicInfoService.closeStartFailedOrder(startTime, endTime); } + + /** + * 查询预约充电的订单并启动 + */ + public void appointmentOrderStart() { + // 查询出 已支付 设置预约充电 未启动 的订单 + LocalDateTime now = LocalDateTime.now(); + List list = orderBasicInfoService.getAppointmentOrder(now); + if (CollectionUtils.isEmpty(list)) { + return; + } + for (OrderBasicInfo order : list) { + orderService.startCharging(order); + } + } }