|
|
|
@ -96,7 +96,9 @@ public class HandleOrderTarckService {
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**处理未上报的订单 将它挂起*/
|
|
|
|
|
/**
|
|
|
|
|
* 处理未上报的订单 将它挂起
|
|
|
|
|
*/
|
|
|
|
|
public void handleUnReportOrder() {
|
|
|
|
|
List<String> unReportedOrderList = equipmentChargeOrderTrackDOMapper.queryUnReportedOrder(ToolDateTime.curTimeAgo(2));/**查询卡单信息*/
|
|
|
|
|
Stream.iterate(0, i -> i + 1).limit(unReportedOrderList.size()).forEach(i -> {
|
|
|
|
@ -133,7 +135,9 @@ public class HandleOrderTarckService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**批量处理挂起订单,进行补单*/
|
|
|
|
|
/**
|
|
|
|
|
* 批量处理挂起订单,进行补单
|
|
|
|
|
*/
|
|
|
|
|
// public void completeUnReportOrder(){
|
|
|
|
|
// List<EquipmentChargeOrderDO> hangUpOrderList = equipmentChargeOrderDOMapper.queryHangUpOrder();//查询挂起订单
|
|
|
|
|
// Stream.iterate(0,i->i+1).limit(hangUpOrderList.size()).forEach(i->{
|
|
|
|
@ -144,7 +148,6 @@ public class HandleOrderTarckService {
|
|
|
|
|
// }
|
|
|
|
|
// });
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
public void completeUnReportOrder() {
|
|
|
|
|
Date startDate = ToolDateTime.startDateByDay(new Date(), -1);
|
|
|
|
|
Date endDate = ToolDateTime.endDateByDay(startDate);
|
|
|
|
@ -173,18 +176,42 @@ public class HandleOrderTarckService {
|
|
|
|
|
*/
|
|
|
|
|
public void completeUnReportReverseOrder() {
|
|
|
|
|
//处理指定 ~ 指定时间三天前 时间内的反向挂起的订单
|
|
|
|
|
// #{code} = push_reverse_orders.duration
|
|
|
|
|
// select value from t_biz_parameter where state = 1 and code = #{code} order by id desc limit 1
|
|
|
|
|
// select value from t_biz_parameter where state = 1 and code = 'push_reverse_orders.duration' order by id desc limit 1
|
|
|
|
|
// 返回值 : 72 小时
|
|
|
|
|
String time = equipmentChargeOrderDOMapper.getReverseFinishTime(Constant.REVERSE_ORDER_TIME);
|
|
|
|
|
int hour = new BigDecimal(time).intValue();
|
|
|
|
|
Date startDate = DateUtil.offset(new Date(), DateField.HOUR_OF_DAY, -(hour + 720));
|
|
|
|
|
Date endDate = DateUtil.offset(new Date(), DateField.HOUR_OF_DAY, -hour);
|
|
|
|
|
|
|
|
|
|
Date startDate = DateUtil.offset(new Date(), DateField.HOUR_OF_DAY, -(hour + 720));//33天之内的
|
|
|
|
|
Date endDate = DateUtil.offset(new Date(), DateField.HOUR_OF_DAY, -hour);//72小时前,也就是3天前
|
|
|
|
|
//查询这段时间内挂起的工单
|
|
|
|
|
/**
|
|
|
|
|
<select id="queryHangUpReverseOrder" resultMap="BaseResultMap">
|
|
|
|
|
SELECT
|
|
|
|
|
o.*
|
|
|
|
|
FROM
|
|
|
|
|
t_equipment_charge_order o left join t_station s on o.station_id = s.id
|
|
|
|
|
WHERE o.state = 5 and s.is_hlht = 1
|
|
|
|
|
<if test="startDate != null">
|
|
|
|
|
AND o.create_time >= #{startDate}
|
|
|
|
|
</if>
|
|
|
|
|
<if test="endDate != null">
|
|
|
|
|
AND o.create_time <= #{endDate}
|
|
|
|
|
</if>
|
|
|
|
|
ORDER BY o.id DESC
|
|
|
|
|
</select>
|
|
|
|
|
|
|
|
|
|
o.state = 5 订单状态 0 创建中 1准备充电中 2 充电中 3完成 4 取消 5挂起 6需要手动补单 7结算中
|
|
|
|
|
is_hlht=1 是否是互联互通站点 1是 0不是 , 注意:这里只处理了互联互通的!因为is_hlht=1,也就是说不是互联互通的挂单,调用这个接口补单是无效的!!!
|
|
|
|
|
*/
|
|
|
|
|
List<EquipmentChargeOrderDO> hangUpOrderList = equipmentChargeOrderDOMapper.queryHangUpReverseOrder(startDate, endDate);//查询挂起订单
|
|
|
|
|
|
|
|
|
|
Stream.iterate(0, i -> i + 1).limit(hangUpOrderList.size()).forEach(i -> {
|
|
|
|
|
CompletableFuture<Map<String, Object>> sendCoupon = CompletableFuture.supplyAsync(() -> {
|
|
|
|
|
//处理挂起订单进行补单
|
|
|
|
|
asyncTaskService.completeUnReportReverseOrder(hangUpOrderList.get(i));
|
|
|
|
|
return null;
|
|
|
|
|
}, handleReverseService);
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -204,7 +231,9 @@ public class HandleOrderTarckService {
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**补单结算*/
|
|
|
|
|
/**
|
|
|
|
|
* 补单结算
|
|
|
|
|
*/
|
|
|
|
|
public void addSettle(EquipmentChargeOrderDO orderInfo, EquipmentOrder equipmentOrder, String equipmentSn) {
|
|
|
|
|
String chargeDegree = orderInfo.getChargeDegree().toString();
|
|
|
|
|
String chargeBeginTime = ToolDateTime.dateToDateString(orderInfo.getChargeBeginTime());
|
|
|
|
@ -236,7 +265,9 @@ public class HandleOrderTarckService {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**补全订单的计费信息*/
|
|
|
|
|
/**
|
|
|
|
|
* 补全订单的计费信息
|
|
|
|
|
*/
|
|
|
|
|
private EquipmentChargeOrderDO settle(EquipmentChargeOrderDO orderInfo, JSONObject settleValue) {
|
|
|
|
|
String invoiceFee = settleValue.optString("invoiceFee");
|
|
|
|
|
String totalElectricFee = settleValue.optString("electricFee");
|
|
|
|
@ -296,7 +327,9 @@ public class HandleOrderTarckService {
|
|
|
|
|
return orderInfo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**补全订单的结算信息*/
|
|
|
|
|
/**
|
|
|
|
|
* 补全订单的结算信息
|
|
|
|
|
*/
|
|
|
|
|
private EquipmentChargeOrderDO outlay(EquipmentChargeOrderDO orderInfo, JSONObject outlayValue) {
|
|
|
|
|
String payAmount = outlayValue.optString("pay_amount");
|
|
|
|
|
String actualPayAmount = outlayValue.optString("actual_pay_amount");
|
|
|
|
@ -332,7 +365,9 @@ public class HandleOrderTarckService {
|
|
|
|
|
return orderInfo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**记录订单的分时信息*/
|
|
|
|
|
/**
|
|
|
|
|
* 记录订单的分时信息
|
|
|
|
|
*/
|
|
|
|
|
public void insertOrderDetail(String orderNo, JSONArray detailJSONArray) {
|
|
|
|
|
try {
|
|
|
|
|
for (int i = 0; i < detailJSONArray.size(); i++) {
|
|
|
|
@ -396,7 +431,9 @@ public class HandleOrderTarckService {
|
|
|
|
|
return chargeBillsBO;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**判断订单类型*/
|
|
|
|
|
/**
|
|
|
|
|
* 判断订单类型
|
|
|
|
|
*/
|
|
|
|
|
private EquipmentChargeOrderDO judgeOrderType(EquipmentChargeOrderDO orderInfo) {
|
|
|
|
|
PlatformDO platformInfo = platformDOMapper.getPlatformInfoByUserId(orderInfo.getUserId().intValue());
|
|
|
|
|
if (platformInfo != null) {
|
|
|
|
@ -408,7 +445,9 @@ public class HandleOrderTarckService {
|
|
|
|
|
return orderInfo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**推送订单停止中到互通互联运营商*/
|
|
|
|
|
/**
|
|
|
|
|
* 推送订单停止中到互通互联运营商
|
|
|
|
|
*/
|
|
|
|
|
public void pullHthlStopResult(String orderNo, Integer userId) {
|
|
|
|
|
PlatformDO platformInfo = platformDOMapper.getPlatformInfoByUserId(userId);
|
|
|
|
|
if (platformInfo != null) {
|
|
|
|
@ -444,7 +483,9 @@ public class HandleOrderTarckService {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**推送账单到互通互联运营商*/
|
|
|
|
|
/**
|
|
|
|
|
* 推送账单到互通互联运营商
|
|
|
|
|
*/
|
|
|
|
|
public void pullHthl(String orderNo, Integer userId) {
|
|
|
|
|
PlatformDO platformInfo = platformDOMapper.getPlatformInfoByUserId(userId);
|
|
|
|
|
if (platformInfo != null) {
|
|
|
|
@ -500,7 +541,9 @@ public class HandleOrderTarckService {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**补全停止前最新一次的订单信息*/
|
|
|
|
|
/**
|
|
|
|
|
* 补全停止前最新一次的订单信息
|
|
|
|
|
*/
|
|
|
|
|
public EquipmentChargeOrderDO beforeStopLastOrderInfo(EquipmentOrder equipmentOrder, EquipmentChargeOrderDO orderInfo) {
|
|
|
|
|
String timeShare = timeShareComputeStr(equipmentOrder.getMultiChargeDegree());
|
|
|
|
|
orderInfo.setChargeTimesDegree(timeShare);
|
|
|
|
@ -524,7 +567,9 @@ public class HandleOrderTarckService {
|
|
|
|
|
return orderInfo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**保存第三方平台订单到第三方平台推送表*/
|
|
|
|
|
/**
|
|
|
|
|
* 保存第三方平台订单到第三方平台推送表
|
|
|
|
|
*/
|
|
|
|
|
private void saveOpenapiNotifyOrderInfo(String orderNo, String platformCode) {
|
|
|
|
|
Integer count = openapiNotifyOrderInfoDOMapper.countOpenapiNotifyOrderInfo(orderNo); //第三方平台需要推送的订单
|
|
|
|
|
if (count == 0) {
|
|
|
|
@ -536,7 +581,9 @@ public class HandleOrderTarckService {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**处理分时段电量*/
|
|
|
|
|
/**
|
|
|
|
|
* 处理分时段电量
|
|
|
|
|
*/
|
|
|
|
|
private String timeShareComputeStr(double[] chargeTimesDegree) {
|
|
|
|
|
StringBuilder chargeTimesDegreeStr = new StringBuilder();
|
|
|
|
|
Stream.iterate(0, i -> i + 1).limit(chargeTimesDegree.length).forEach(i -> {
|
|
|
|
@ -549,10 +596,9 @@ public class HandleOrderTarckService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**充电中订单挂起*/
|
|
|
|
|
/**
|
|
|
|
|
* 充电中订单挂起
|
|
|
|
|
*/
|
|
|
|
|
public void chargeIngeSuspend() {
|
|
|
|
|
Date nowTime = new Date();
|
|
|
|
|
List<EquipmentChargeOrderDO> hangUpOrderList = equipmentChargeOrderDOMapper.queryTimeOutOrderToStateTwo(Tools.getDayTime());//查询充电中订单
|
|
|
|
@ -576,8 +622,7 @@ public class HandleOrderTarckService {
|
|
|
|
|
long interval = 0;
|
|
|
|
|
try {
|
|
|
|
|
interval = (start.getTime() - end.getTime()) / 1000;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e){
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
return interval;
|
|
|
|
|