修改小程序请求路径,增加桩订单结束回调实体类

This commit is contained in:
yuyang 2021-08-16 19:24:26 +08:00
parent a5cd226d97
commit d48ba4bb9f
14 changed files with 458 additions and 194 deletions

View File

@ -0,0 +1,90 @@
package com.xhpc.charging.station.api;
import com.xhpc.charging.station.service.IXhpcChargingStationService;
import com.xhpc.charging.station.service.IXhpcTerminalService;
import com.xhpc.common.core.web.controller.BaseController;
import com.xhpc.common.core.web.domain.AjaxResult;
import com.xhpc.common.core.web.page.TableDataInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/api/station")
public class XhpcChargingStationApiController extends BaseController {
@Autowired
private IXhpcChargingStationService xhpcChargingStationService;
@Autowired
private IXhpcTerminalService xhpcTerminalService;
/**
* 微信小程序电站列表
*
* @param name 电站名称
* @param serviceFacilities 标签服务设施
* @param code 城市id
* @param longitude 经度
* @param latitude 维度
* @return
*/
//@PreAuthorize(hasPermi = "system:station:list")
@GetMapping("/getWXList")
public TableDataInfo getWXList(String name, String serviceFacilities, Integer code, String longitude, String latitude) {
startPage();
List<Map<String, Object>> list = xhpcChargingStationService.getWXList(name, serviceFacilities, code, longitude, latitude);
return getDataTable(list);
}
/**
* 电站详情+站点详情(微信)
*
* @param chargingStationId 站点id
* @param longitude 经度
* @param latitude 维度
* @return
*/
@GetMapping(value = "/getWXXhpcChargingStationMessage")
public AjaxResult getWXXhpcChargingStationMessage(@RequestParam(value = "chargingStationId", required = true) Long chargingStationId, @RequestParam(value = "longitude", required = true) String longitude, @RequestParam(value = "latitude", required = true) String latitude) {
return AjaxResult.success(xhpcChargingStationService.getWXXhpcChargingStationMessage(chargingStationId, longitude, latitude));
}
/**
* 电站详情---价格详情
*
* @param chargingStationId 站点id
* @return
*/
@GetMapping(value = "/getWXXhpcRateTimeMassage")
public AjaxResult getXhpcRateTimeMassage(@RequestParam Long chargingStationId) {
return AjaxResult.success(xhpcChargingStationService.getWXXhpcRateTimeMassage(chargingStationId));
}
/**
* 电站详情---终端列表微信
*
* @param chargingStationId 站点id
* @return
*/
@GetMapping(value = "/getWXXhpcTerminalMassage")
public AjaxResult getWXXhpcTerminalMassage(@RequestParam Long chargingStationId) {
return AjaxResult.success(xhpcChargingStationService.getWXXhpcTerminalMassage(chargingStationId));
}
/**
* 通过终端编号进入小程序开始充电页面
*/
@GetMapping(value = "/getWXpNumMessage")
public AjaxResult getWXpNumMessage(@RequestParam(value = "pNum") String pNum) {
return xhpcTerminalService.getWXpNumMessage(pNum);
}
}

View File

@ -160,63 +160,14 @@ public class XhpcChargingStationController extends BaseController {
return AjaxResult.success(xhpcChargingStationService.getXhpcChargingStationMessage(chargingStationId, type)); return AjaxResult.success(xhpcChargingStationService.getXhpcChargingStationMessage(chargingStationId, type));
} }
/**
* 微信小程序电站列表
*
* @param name 电站名称
* @param serviceFacilities 标签服务设施
* @param code 城市id
* @param longitude 经度
* @param latitude 维度
* @return
*/
//@PreAuthorize(hasPermi = "system:station:list")
@GetMapping("/getWXList")
public TableDataInfo getWXList(String name, String serviceFacilities, Integer code, String longitude, String latitude) {
startPage();
List<Map<String, Object>> list = xhpcChargingStationService.getWXList(name, serviceFacilities, code, longitude, latitude);
return getDataTable(list);
}
/**
* 电站详情+站点详情
*
* @param chargingStationId 站点id
* @param longitude 经度
* @param latitude 维度
* @return
*/
@GetMapping(value = "/getWXXhpcChargingStationMessage")
public AjaxResult getWXXhpcChargingStationMessage(@RequestParam(value = "chargingStationId", required = true) Long chargingStationId, @RequestParam(value = "longitude", required = true) String longitude, @RequestParam(value = "latitude", required = true) String latitude) {
return AjaxResult.success(xhpcChargingStationService.getWXXhpcChargingStationMessage(chargingStationId, longitude, latitude));
}
/**
* 电站详情---价格详情
*
* @param chargingStationId 站点id
* @return
*/
@GetMapping(value = "/getWXXhpcRateTimeMassage")
public AjaxResult getXhpcRateTimeMassage(@RequestParam Long chargingStationId) {
return AjaxResult.success(xhpcChargingStationService.getWXXhpcRateTimeMassage(chargingStationId));
}
/**
* 电站详情---终端列表
*
* @param chargingStationId 站点id
* @return
*/
@GetMapping(value = "/getWXXhpcTerminalMassage")
public AjaxResult getWXXhpcTerminalMassage(@RequestParam Long chargingStationId) {
return AjaxResult.success(xhpcChargingStationService.getWXXhpcTerminalMassage(chargingStationId));
}
/** /**

View File

@ -84,14 +84,7 @@ public class XhpcTerminalController extends BaseController {
} }
/**
* 通过终端编号进入小程序开始充电页面
*/
@GetMapping(value = "/getWXpNumMessage")
public AjaxResult getWXpNumMessage(@RequestParam(value = "pNum") String pNum) {
return xhpcTerminalService.getWXpNumMessage(pNum);
}
} }

View File

@ -16,6 +16,7 @@ import com.xhpc.common.domain.XhpcChargingStation;
import com.xhpc.common.domain.XhpcRate; import com.xhpc.common.domain.XhpcRate;
import com.xhpc.common.domain.XhpcRateModel; import com.xhpc.common.domain.XhpcRateModel;
import com.xhpc.common.domain.XhpcRateTime; import com.xhpc.common.domain.XhpcRateTime;
import com.xhpc.common.redis.service.RedisService;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -43,6 +44,8 @@ public class XhpcChargingStationServiceImpl implements IXhpcChargingStationServi
private IXhpcTerminalService xhpcTerminalService; private IXhpcTerminalService xhpcTerminalService;
@Autowired @Autowired
private PowerPileService powerPileService; private PowerPileService powerPileService;
@Autowired
private RedisService redisService;
/** /**
* 查询电站 * 查询电站
@ -579,7 +582,11 @@ public class XhpcChargingStationServiceImpl implements IXhpcChargingStationServi
for (int i = 0; i < list.size(); i++) { for (int i = 0; i < list.size(); i++) {
Map<String, Object> map = list.get(i); Map<String, Object> map = list.get(i);
//空闲和使用从redis获取 //空闲和使用从redis获取
map.put("free", 10); if(map.get("serialNumbers") !=null){
map.put("free", countTerminal(map.get("serialNumbers").toString()));
}else{
map.put("free", 0);
}
} }
} }
return list; return list;
@ -592,7 +599,11 @@ public class XhpcChargingStationServiceImpl implements IXhpcChargingStationServi
Map<String, Object> map = xhpcChargingStationMapper.getWXXhpcChargingStationMessage(chargingStationId, longitude, latitude); Map<String, Object> map = xhpcChargingStationMapper.getWXXhpcChargingStationMessage(chargingStationId, longitude, latitude);
//空闲和使用从redis获取 //空闲和使用从redis获取
map.put("free", 10); if(map.get("serialNumbers") !=null){
map.put("free", countTerminal(map.get("serialNumbers").toString()));
}else{
map.put("free", 0);
}
//图片信息 //图片信息
List<String> imgList = new ArrayList<>(); List<String> imgList = new ArrayList<>();
@ -630,12 +641,44 @@ public class XhpcChargingStationServiceImpl implements IXhpcChargingStationServi
for (int i = 0; i < list.size(); i++) { for (int i = 0; i < list.size(); i++) {
Map<String, Object> map = list.get(i); Map<String, Object> map = list.get(i);
//终端状态用 redis数据 //终端状态用 redis数据
//终端状态 if(map.get("serialNumber") !=null){
map.put("status", "1"); Map<String, Object> cacheMap =redisService.getCacheMap("gun:"+map.get("serialNumber").toString());
//soc if(cacheMap !=null){
map.put("soc", "18%"); if("空闲".equals(cacheMap.get("status"))){
//剩余时间 map.put("status", 2);
map.put("remainingTime", "16分钟"); }else if ("离线".equals(cacheMap.get("status"))){
map.put("status", 0);
}else if("故障".equals(cacheMap.get("status"))){
map.put("status", 1);
}else{
//充电桩
map.put("status", 3);
if(cacheMap.get("status")!=null){
map.put("soc", cacheMap.get("status").toString()+"%");
}
if(cacheMap.get("remainingTime")!=null){
int number = (int)cacheMap.get("remainingTime");
if(number>300){
map.put("remainingTime", "未知");
}else{
int mins = number % 60;
int hours = number / 60;
if(mins>0){
map.put("remainingTime", mins+"小时"+hours+"分钟");
}else{
map.put("remainingTime", hours+"分钟");
}
}
}else{
map.put("remainingTime", "--");
}
}
}else{
map.put("status", 1);
}
}else{
map.put("status", 1);
}
} }
} }
return list; return list;
@ -846,6 +889,22 @@ public class XhpcChargingStationServiceImpl implements IXhpcChargingStationServi
} }
public int countTerminal(String serialNumbers){
int number =0;
//获取空闲终端
String[] split = serialNumbers.split(",");
if(!"".equals(serialNumbers) && serialNumbers !=null){
for (String serialNumber:split) {
Map<String, Object> cacheMap =redisService.getCacheMap("gun:"+serialNumber);
if(cacheMap !=null && "空闲".equals(cacheMap.get("status"))){
number++;
}
}
}
return number;
}
public static void main(String[] args) { public static void main(String[] args) {
//时间差 //时间差
long betweenDay = DateUtil.between(DateUtil.parse("00:00:00"), DateUtil.parse("10:00:00"), DateUnit.SECOND); long betweenDay = DateUtil.between(DateUtil.parse("00:00:00"), DateUtil.parse("10:00:00"), DateUnit.SECOND);

View File

@ -255,6 +255,8 @@
cs.service_facilities as serviceFacilities, cs.service_facilities as serviceFacilities,
(select count(terminal_id) from xhpc_terminal where status=0 and del_flag =0 and (select count(terminal_id) from xhpc_terminal where status=0 and del_flag =0 and
charging_station_id=cs.charging_station_id) as common, charging_station_id=cs.charging_station_id) as common,
(select GROUP_CONCAT(serial_number) from xhpc_terminal where status=0 and del_flag =0 and
charging_station_id=cs.charging_station_id) as serialNumbers,
(select (ra.power_fee+ra.service_fee) as serviceFee (select (ra.power_fee+ra.service_fee) as serviceFee
from xhpc_rate as ra from xhpc_rate as ra
where ra.status = 0 where ra.status = 0
@ -311,6 +313,7 @@
and del_flag = 0 and del_flag = 0
and status = 0 limit 1) as type, and status = 0 limit 1) as type,
(select count(terminal_id) from xhpc_terminal where status=0 and del_flag =0 and charging_station_id=charging_station_id) as common, (select count(terminal_id) from xhpc_terminal where status=0 and del_flag =0 and charging_station_id=charging_station_id) as common,
(select GROUP_CONCAT(serial_number) from xhpc_terminal where status=0 and del_flag =0 and charging_station_id=cs.charging_station_id) as serialNumbers,
(select GROUP_CONCAT(dict_value) from xhpc_dict_biz where FIND_IN_SET(dict_key,service_facilities ) and code= 'service_facilities' and parent_id > 0 and del_flag = 0) as serviceFacilitiesName, (select GROUP_CONCAT(dict_value) from xhpc_dict_biz where FIND_IN_SET(dict_key,service_facilities ) and code= 'service_facilities' and parent_id > 0 and del_flag = 0) as serviceFacilitiesName,
name as name, name as name,
reminder_instructions as reminderInstructions, reminder_instructions as reminderInstructions,

View File

@ -0,0 +1,98 @@
package com.xhpc.common.dto;
/**
* 订单结束回调实体类
*/
public class PileEndOrder {
private String orderNo; //交易流水号
private String startSoc; //充电启始soc
private String endSoc; //充电结束soc
private Integer status; //状态 (1 成功 2 异常)
private Integer chargingTime; //累计充电时间
private Integer chargingDegree; //充电度数
private Integer amountCharged; //已充金额
private Integer erroRemark; //备注
public String getOrderNo() {
return orderNo;
}
public void setOrderNo(String orderNo) {
this.orderNo = orderNo;
}
public String getStartSoc() {
return startSoc;
}
public void setStartSoc(String startSoc) {
this.startSoc = startSoc;
}
public String getEndSoc() {
return endSoc;
}
public void setEndSoc(String endSoc) {
this.endSoc = endSoc;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public Integer getChargingTime() {
return chargingTime;
}
public void setChargingTime(Integer chargingTime) {
this.chargingTime = chargingTime;
}
public Integer getChargingDegree() {
return chargingDegree;
}
public void setChargingDegree(Integer chargingDegree) {
this.chargingDegree = chargingDegree;
}
public Integer getErroRemark() {
return erroRemark;
}
public void setErroRemark(Integer erroRemark) {
this.erroRemark = erroRemark;
}
public Integer getAmountCharged() {
return amountCharged;
}
public void setAmountCharged(Integer amountCharged) {
this.amountCharged = amountCharged;
}
}

View File

@ -1,9 +1,10 @@
package com.xhpc.order.controller; package com.xhpc.order.api;
import com.xhpc.common.core.web.controller.BaseController; import com.xhpc.common.core.web.controller.BaseController;
import com.xhpc.common.core.web.domain.AjaxResult; import com.xhpc.common.core.web.domain.AjaxResult;
import com.xhpc.common.core.web.page.TableDataInfo; import com.xhpc.common.core.web.page.TableDataInfo;
import com.xhpc.order.service.IHxpcChargeOrderService; import com.xhpc.order.service.IHxpcChargeOrderService;
import com.xhpc.order.service.IXhpcHistoryOrderService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
@ -19,12 +20,15 @@ import java.util.Map;
* @date 2021/8/4 9:59 * @date 2021/8/4 9:59
*/ */
@RestController @RestController
@RequestMapping("/chargeOrder") @RequestMapping("/api/chargeOrder")
@Api(value = "充电订单接口", tags = "充电订单接口") @Api(value = "充电订单接口", tags = "充电订单接口")
public class HxpcChargeOrderController extends BaseController { public class HxpcChargeOrderController extends BaseController {
@Autowired @Autowired
private IHxpcChargeOrderService iHxpcChargeOrderService; private IHxpcChargeOrderService iHxpcChargeOrderService;
@Autowired
private IXhpcHistoryOrderService xhpcHistoryOrderService;
/** /**
* 实时订单(微信) * 实时订单(微信)
@ -74,6 +78,31 @@ public class HxpcChargeOrderController extends BaseController {
} }
/**
* 用户历史订单列表接口
*/
@GetMapping("/list")
public TableDataInfo list(@RequestParam Long userId)
{
startPage();
List<Map<String,Object>> list = xhpcHistoryOrderService.list(userId);
return getDataTable(list);
}
/**
* 用户订单详情接口
* @param userId 用户id
* @param historyOrderId 历史订单id
* @param type 1 历史订单id 2 充电订单id (暂时没用)
* @param chargingOrderId 充电订单id
* @return
*/
@GetMapping("/gethistotyOrderMessage")
public AjaxResult gethistotyOrderMessage(@RequestParam Long userId,@RequestParam Long historyOrderId,Integer type,Long chargingOrderId)
{
return xhpcHistoryOrderService.gethistotyOrderMessage(userId,historyOrderId,type,chargingOrderId);
}
} }

View File

@ -1,7 +1,5 @@
package com.xhpc.order.controller; package com.xhpc.order.api;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.rabbitmq.client.Channel; import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection; import com.rabbitmq.client.Connection;
@ -9,11 +7,9 @@ import com.xhpc.common.api.PileOrderService;
import com.xhpc.common.core.domain.R; import com.xhpc.common.core.domain.R;
import com.xhpc.common.core.web.controller.BaseController; import com.xhpc.common.core.web.controller.BaseController;
import com.xhpc.common.core.web.domain.AjaxResult; import com.xhpc.common.core.web.domain.AjaxResult;
import com.xhpc.common.data.redis.CacheRealtimeData;
import com.xhpc.common.redis.service.RedisService; import com.xhpc.common.redis.service.RedisService;
import com.xhpc.common.util.ConnectionRabbitMQUtil; import com.xhpc.common.util.ConnectionRabbitMQUtil;
import com.xhpc.order.domain.HxpcChargeOrder; import com.xhpc.order.domain.HxpcChargeOrder;
import com.xhpc.order.domain.XhpcHistoryOrder;
import com.xhpc.order.service.IHxpcChargeOrderService; import com.xhpc.order.service.IHxpcChargeOrderService;
import com.xhpc.order.service.IXhpcHistoryOrderService; import com.xhpc.order.service.IXhpcHistoryOrderService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -45,7 +41,8 @@ public class HxpcPileOrderController extends BaseController {
* 测试 * 测试
*/ */
@GetMapping("/test/chargeOrder/pileStartup") @GetMapping("/test/chargeOrder/pileStartup")
private R test(@RequestParam String orderNo, @RequestParam Integer status, @RequestParam String remark){ private R test(@RequestParam String orderNo, @RequestParam Integer status, @RequestParam String remark) {
R r = pileOrderService.pileStop(orderNo, status, remark); R r = pileOrderService.pileStop(orderNo, status, remark);
return r; return r;
} }
@ -53,33 +50,34 @@ public class HxpcPileOrderController extends BaseController {
/** /**
* 桩启动回调接口 * 桩启动回调接口
* @param orderNo 订单号 *
* @param status 1 成功 2失败 * @param orderNo 订单号
* @param remark 备注 * @param status 1 成功 2失败
* @param remark 备注
* @return * @return
*/ */
@GetMapping("/chargeOrder/pileStartup") @GetMapping("/chargeOrder/pileStartup")
public R pileStartup(String orderNo, Integer status, String remark){ public R pileStartup(String orderNo, Integer status, String remark) {
//解析订单编号 //解析订单编号
String s = orderNo.split("\\.")[0]; String s = orderNo.split("\\.")[0];
String s1 = s.split(":")[1]; String s1 = s.split(":")[1];
Long userId; Long userId;
Integer code ; Integer code;
if(status ==1){ if (status == 1) {
code=200; code = 200;
userId=update(0, 0,remark, s1,0); userId = update(0, 0, remark, s1, 0);
}else{ } else {
code=500; code = 500;
userId=update(-1, 1,remark, s1,0); userId = update(-1, 1, remark, s1, 0);
} }
Map<String,Object> map =new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("code",code); map.put("code", code);
map.put("userId",userId); map.put("userId", userId);
map.put("message",remark); map.put("message", remark);
JSONObject json = new JSONObject(map); JSONObject json = new JSONObject(map);
//消息对了内容 //消息对了内容
rabbimt(userId+"##"+json); rabbimt(userId + "##" + json);
return R.ok(); return R.ok();
} }
/** /**
@ -96,94 +94,122 @@ public class HxpcPileOrderController extends BaseController {
String s = orderNo.split("\\.")[0]; String s = orderNo.split("\\.")[0];
String s1 = s.split(":")[1]; String s1 = s.split(":")[1];
Integer code = 300; Integer code = 300;
Long userId = update(status, 0, remark, s1, 1); Long userId = update(0, 0, remark, s1, 1);
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("code", code); map.put("code", code);
map.put("userId", userId); map.put("userId", userId);
if (status == 1) { if (status == 1) {
map.put("message", "停止充电成功"); map.put("message", "停止充电成功");
}else{ } else {
map.put("message",remark); map.put("message", remark);
} }
JSONObject json = new JSONObject(map); JSONObject json = new JSONObject(map);
//消息对了内容 //消息对了内容
rabbimt(userId+"##"+json); rabbimt(userId + "##" + json);
return R.ok(); return R.ok();
} }
/** /**
* 桩实时数据回调接口 * 桩实时数据回调接口
*
* @param orderNo 订单号 * @param orderNo 订单号
* @param status 离线故障充电空闲计费错误重新计算费用电量默认为正确 * @param status 离线故障充电空闲计费错误重新计算费用电量默认为正确
* @param remark 备注 * @param remark 备注
* @param rateModel 费率模型id * @param rateModel 费率模型id
* @return * @return
*/ */
@GetMapping("/pileRealtime") @GetMapping("/pileRealtime")
public AjaxResult pileRealtime(String orderNo, Integer status, String remark, String rateModel){ public AjaxResult pileRealtime(String orderNo, Integer status, String remark, String rateModel) {
return AjaxResult.success(); return AjaxResult.success();
} }
/** /**
* @param status 状态 * 桩订单结束回调
* @param delFlag 是否删除 *
* @param remark 备注 * @param orderNo 订单号
* @param serialNumber 订单号 * @param status 状态 1正常 2异常
* @param type 结束订单状态 * @param remark 备注
* @return * @return
*/ */
private Long update(Integer status,Integer delFlag, String remark, String serialNumber,Integer type) { @GetMapping("/pileEndOrder")
public R pileEndOrder(String orderNo, Integer status, String remark) {
//解析订单编号
String s = orderNo.split("\\.")[0];
String s1 = s.split(":")[1];
// Date date = new Date();
// //获取实时订单
// Map<String, Object> cacheMap = redisService.getCacheMap("order:"+serialNumber);
// JSONArray st = (JSONArray)cacheMap.get("realtimeDataList");
// System.out.println(st.toString());
// CacheRealtimeData cacheRealtimeData = JSON.toJavaObject(st.getJSONObject(0), CacheRealtimeData.class);
//
// //用户第几次充电
// int count = iHxpcChargeOrderService.getCount(userId);
// String state ="";
// String discount ="";
// if(count==0){
// //活动折扣
// Map<String, Object> promotion = iHxpcChargeOrderService.getPromotion();
// if(promotion !=null){
// //state 1.总金额 2.金额 3.服务费 discount 折扣率
// state = promotion.get("state").toString();
// discount = promotion.get("discount").toString();
// }
// }
//
// //生成一条历史订单
// XhpcHistoryOrder xhpcHistoryOrder =new XhpcHistoryOrder();
// xhpcHistoryOrder.setChargeOrderId(hxpcChargeOrder.getChargeOrderId());
// xhpcHistoryOrder.setChargingStationId(hxpcChargeOrder.getChargingStationId());
// xhpcHistoryOrder.setUserId(userId);
// xhpcHistoryOrder.setTerminalId(hxpcChargeOrder.getTerminalId());
// xhpcHistoryOrder.setSerialNumber(hxpcChargeOrder.getSerialNumber());
// xhpcHistoryOrder.setStartSoc(hxpcChargeOrder.getStartSoc());
// xhpcHistoryOrder.setReconciliationStatus(0);
// xhpcHistoryOrder.setSortingStatus(0);
// xhpcHistoryOrder.setType(1);
// xhpcHistoryOrder.setStatus(0);
// xhpcHistoryOrder.setDelFlag(0);
// xhpcHistoryOrder.setCreateTime(date);
// //订单总价---运维服务费抽成
// //结束时soc
// xhpcHistoryOrderService.insert(xhpcHistoryOrder);
//
// //充电订单 --结束soc充电时长充电度数
// hxpcChargeOrder.setEndTime(date);
//
// //实时数据存入MYsqlsoc电流电压
return R.ok();
}
/**
* @param status 状态
* @param delFlag 是否删除
* @param remark 备注
* @param serialNumber 订单号
* @param type 结束订单状态
* @return
*/
private Long update(Integer status, Integer delFlag, String remark, String serialNumber, Integer type) {
HxpcChargeOrder hxpcChargeOrder = iHxpcChargeOrderService.getSerialNumberMessage(serialNumber); HxpcChargeOrder hxpcChargeOrder = iHxpcChargeOrderService.getSerialNumberMessage(serialNumber);
hxpcChargeOrder.setStatus(status); hxpcChargeOrder.setStatus(status);
hxpcChargeOrder.setDelFlag(delFlag); hxpcChargeOrder.setDelFlag(delFlag);
hxpcChargeOrder.setRemark(remark); hxpcChargeOrder.setErroRemark(remark);
Long userId = hxpcChargeOrder.getUserId(); Long userId = hxpcChargeOrder.getUserId();
if(type==1){ if (type == 1) {
Date date = new Date(); Date date = new Date();
//获取实时订单
Map<String, Object> cacheMap = redisService.getCacheMap("order:"+serialNumber);
JSONArray st = (JSONArray)cacheMap.get("realtimeDataList");
System.out.println(st.toString());
CacheRealtimeData cacheRealtimeData = JSON.toJavaObject(st.getJSONObject(0), CacheRealtimeData.class);
//用户第几次充电
int count = iHxpcChargeOrderService.getCount(userId);
String state ="";
String discount ="";
if(count==0){
//活动折扣
Map<String, Object> promotion = iHxpcChargeOrderService.getPromotion();
if(promotion !=null){
//state 1.总金额 2.金额 3.服务费 discount 折扣率
state = promotion.get("state").toString();
discount = promotion.get("discount").toString();
}
}
//生成一条历史订单
XhpcHistoryOrder xhpcHistoryOrder =new XhpcHistoryOrder();
xhpcHistoryOrder.setChargeOrderId(hxpcChargeOrder.getChargeOrderId());
xhpcHistoryOrder.setChargingStationId(hxpcChargeOrder.getChargingStationId());
xhpcHistoryOrder.setUserId(userId);
xhpcHistoryOrder.setTerminalId(hxpcChargeOrder.getTerminalId());
xhpcHistoryOrder.setSerialNumber(hxpcChargeOrder.getSerialNumber());
xhpcHistoryOrder.setStartSoc(hxpcChargeOrder.getStartSoc());
xhpcHistoryOrder.setReconciliationStatus(0);
xhpcHistoryOrder.setSortingStatus(0);
xhpcHistoryOrder.setType(1);
xhpcHistoryOrder.setStatus(0);
xhpcHistoryOrder.setDelFlag(0);
xhpcHistoryOrder.setCreateTime(date);
//订单总价---运维服务费抽成
//结束时soc
xhpcHistoryOrderService.insert(xhpcHistoryOrder);
//充电订单 --结束soc充电时长充电度数 //充电订单 --结束soc充电时长充电度数
hxpcChargeOrder.setEndTime(date); hxpcChargeOrder.setEndTime(date);
//实时数据存入MYsqlsoc电流电压
} }
iHxpcChargeOrderService.updateXhpcChargeOrder(hxpcChargeOrder); iHxpcChargeOrderService.updateXhpcChargeOrder(hxpcChargeOrder);
@ -192,7 +218,7 @@ public class HxpcPileOrderController extends BaseController {
private void rabbimt(String message) { private void rabbimt(String message) {
//发送消息队列 //发送消息队列
try{ try {
// 1获取到连接 // 1获取到连接
Connection connection = ConnectionRabbitMQUtil.getConnection(); Connection connection = ConnectionRabbitMQUtil.getConnection();
// 2从连接中创建通道使用通道才能完成消息相关的操作 // 2从连接中创建通道使用通道才能完成消息相关的操作
@ -203,8 +229,9 @@ public class HxpcPileOrderController extends BaseController {
channel.basicPublish("", "webSocket", null, message.getBytes()); channel.basicPublish("", "webSocket", null, message.getBytes());
channel.close(); channel.close();
connection.close(); connection.close();
}catch (Exception e){ } catch (Exception e) {
} }
} }
} }

View File

@ -25,33 +25,6 @@ import java.util.Map;
public class XhpcHistoryOrderController extends BaseController { public class XhpcHistoryOrderController extends BaseController {
@Autowired
private IXhpcHistoryOrderService xhpcHistoryOrderService;
/**
* 用户历史订单接口
*/
@GetMapping("/list")
public TableDataInfo list(@RequestParam Long userId)
{
startPage();
List<Map<String,Object>> list = xhpcHistoryOrderService.list(userId);
return getDataTable(list);
}
/**
* 用户订单详情接口
* @param userId 用户id
* @param historyOrderId 历史订单id
* @param type 1 历史订单id 2 充电订单id (暂时没用)
* @param chargingOrderId 充电订单id
* @return
*/
@GetMapping("/gethistotyOrderMessage")
public AjaxResult gethistotyOrderMessage(@RequestParam Long userId,@RequestParam Long historyOrderId,Integer type,Long chargingOrderId)
{
return xhpcHistoryOrderService.gethistotyOrderMessage(userId,historyOrderId,type,chargingOrderId);
}

View File

@ -88,6 +88,10 @@ public class HxpcChargeOrder extends BaseEntity {
/** 0桩停止充电 1 远程停止充电 */ /** 0桩停止充电 1 远程停止充电 */
private Integer type; private Integer type;
/** 异常备注 */
private String erroRemark;
public Long getChargeOrderId() { public Long getChargeOrderId() {
return chargeOrderId; return chargeOrderId;
@ -268,4 +272,14 @@ public class HxpcChargeOrder extends BaseEntity {
this.type = type; this.type = type;
} }
public String getErroRemark() {
return erroRemark;
}
public void setErroRemark(String erroRemark) {
this.erroRemark = erroRemark;
}
} }

View File

@ -41,7 +41,7 @@ public interface HxpcChargeOrderMapper {
/** /**
* 判断用户是否在充电中 * 判断用户是否在充电中
*/ */
int countXhpcRealTimeOrder(@Param("userId")Long userId); String countXhpcRealTimeOrder(@Param("userId")Long userId);
/** /**
* 判断用户是否有异常订单未处理 * 判断用户是否有异常订单未处理
@ -87,5 +87,10 @@ public interface HxpcChargeOrderMapper {
*/ */
Map<String,Object> getPromotion(); Map<String,Object> getPromotion();
/**
* 获取充电订单数据
* @param chargingOrderId 订单id
* @return
*/
HxpcChargeOrder getChargingOrderId(@Param("chargingOrderId") Long chargingOrderId);
} }

View File

@ -1,25 +1,17 @@
package com.xhpc.order.service.impl; package com.xhpc.order.service.impl;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.xhpc.common.api.PowerPileService; import com.xhpc.common.api.PowerPileService;
import com.xhpc.common.core.domain.R; import com.xhpc.common.core.domain.R;
import com.xhpc.common.core.web.domain.AjaxResult; import com.xhpc.common.core.web.domain.AjaxResult;
import com.xhpc.common.data.down.StartChargingData; import com.xhpc.common.data.down.StartChargingData;
import com.xhpc.common.data.redis.CacheRealtimeData;
import com.xhpc.common.data.redis.SeqUtil; import com.xhpc.common.data.redis.SeqUtil;
import com.xhpc.common.domain.XhpcTerminal; import com.xhpc.common.domain.XhpcTerminal;
import com.xhpc.common.redis.service.RedisService; import com.xhpc.common.redis.service.RedisService;
import com.xhpc.order.domain.HxpcChargeOrder; import com.xhpc.order.domain.HxpcChargeOrder;
import com.xhpc.order.domain.XhpcHistoryOrder;
import com.xhpc.order.mapper.HxpcChargeOrderMapper; import com.xhpc.order.mapper.HxpcChargeOrderMapper;
import com.xhpc.order.service.IHxpcChargeOrderService; import com.xhpc.order.service.IHxpcChargeOrderService;
import com.xhpc.order.service.IXhpcHistoryOrderService; import com.xhpc.order.service.IXhpcHistoryOrderService;
import com.xhpc.common.util.ConnectionRabbitMQUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -27,7 +19,6 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.regex.Matcher; import java.util.regex.Matcher;
@ -93,8 +84,9 @@ public class HxpcChargeOrderServiceImpl implements IHxpcChargeOrderService {
return AjaxResult.error(1101, "你有申请退款订单在审核中,需要充电请取消申请退款"); return AjaxResult.error(1101, "你有申请退款订单在审核中,需要充电请取消申请退款");
} }
//是否在充电中 //是否在充电中
int i = hxpcChargeOrderMapper.countXhpcRealTimeOrder(userId); String i = hxpcChargeOrderMapper.countXhpcRealTimeOrder(userId);
if (i > 0) {
if (!"".equals(i) && i!=null) {
return AjaxResult.error(1102, "车辆正在充电,请查询车辆充电信息"); return AjaxResult.error(1102, "车辆正在充电,请查询车辆充电信息");
} }
//是否存在异常的订单 //是否存在异常的订单
@ -177,9 +169,9 @@ public class HxpcChargeOrderServiceImpl implements IHxpcChargeOrderService {
if (xhpcTerminal == null || xhpcTerminal.getTerminalId() == null || xhpcTerminal.getChargingPileId() == null || xhpcTerminal.getPileSerialNumber() == null) { if (xhpcTerminal == null || xhpcTerminal.getTerminalId() == null || xhpcTerminal.getChargingPileId() == null || xhpcTerminal.getPileSerialNumber() == null) {
return AjaxResult.error(1104, "无效的终端编号"); return AjaxResult.error(1104, "无效的终端编号");
} }
//HxpcChargeOrder serialNumberMessage = hxpcChargeOrderMapper.getSerialNumberMessage(serialNumber); HxpcChargeOrder serialNumberMessage = hxpcChargeOrderMapper.getChargingOrderId(chargingOrderId);
//serialNumberMessage.setType(1); serialNumberMessage.setType(1);
//hxpcChargeOrderMapper.updateXhpcChargeOrder(serialNumberMessage); hxpcChargeOrderMapper.updateXhpcChargeOrder(serialNumberMessage);
R oa = powerPileService.stopCharging(xhpcTerminal.getPileSerialNumber(), xhpcTerminal.getSerialNumber(), "OA"); R oa = powerPileService.stopCharging(xhpcTerminal.getPileSerialNumber(), xhpcTerminal.getSerialNumber(), "OA");
if(oa.getCode() !=200){ if(oa.getCode() !=200){
return AjaxResult.error(oa.getMsg()); return AjaxResult.error(oa.getMsg());

View File

@ -86,8 +86,8 @@
from xhpc_app_user from xhpc_app_user
where del_flag=0 and app_user_id=#{userId} where del_flag=0 and app_user_id=#{userId}
</select> </select>
<select id="countXhpcRealTimeOrder" resultType="int"> <select id="countXhpcRealTimeOrder" resultType="String">
select count(charge_order_id) from xhpc_charge_order where user_id =#{userId} and status=0 and del_flag =0 select charge_order_id as chargeOrderId from xhpc_charge_order where user_id =#{userId} and status=0 and del_flag =0 limit 1
</select> </select>
<select id="countXhpcChargeOrder" resultType="int"> <select id="countXhpcChargeOrder" resultType="int">
@ -242,4 +242,8 @@
<select id="getPromotion" resultType="map"> <select id="getPromotion" resultType="map">
select discount,state from xhpc_promotion where del_flag=0 and status=0 and type=0 and start_time &lt;= now() and end_time &gt;=now() order by update_time desc select discount,state from xhpc_promotion where del_flag=0 and status=0 and type=0 and start_time &lt;= now() and end_time &gt;=now() order by update_time desc
</select> </select>
<select id="getChargingOrderId" resultMap="BaseResultMap">
select * from xhpc_charge_order where charge_order_id=#{chargingOrderId}
</select>
</mapper> </mapper>

View File

@ -0,0 +1,26 @@
package com.xhpc.wxma.config;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
@Component
@Lazy(false)
public class ApplicationContextRegister implements ApplicationContextAware {
private static ApplicationContext APPLICATION_CONTEXT;
/**
* 设置spring上下文 * * @param applicationContext spring上下文 * @throws BeansException
*/
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
APPLICATION_CONTEXT = applicationContext;
}
public static ApplicationContext getApplicationContext() {
return APPLICATION_CONTEXT;
}
}