Merge remote-tracking branch 'origin/operation' into operation
This commit is contained in:
commit
b5c2e42510
@ -0,0 +1,19 @@
|
||||
package com.xhpc.evcs.cyc.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
|
||||
import lombok.Data;
|
||||
|
||||
@JsonPropertyOrder({
|
||||
"StartChargeSeq",
|
||||
"SuccStat"
|
||||
})
|
||||
@Data
|
||||
public class CYCChargeChargeStatusResponse {
|
||||
@JsonProperty("StartChargeSeq")
|
||||
private String startChargeSeq;
|
||||
|
||||
@JsonProperty("SuccStat")
|
||||
private Integer succStat;
|
||||
|
||||
}
|
||||
@ -0,0 +1,66 @@
|
||||
package com.xhpc.evcs.cyc.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
|
||||
|
||||
@JsonPropertyOrder({
|
||||
"StartChargeSeq",
|
||||
"SuccStat",
|
||||
"FailReason",
|
||||
"IdentCode"
|
||||
})
|
||||
public class CYCChargeOrderInfoResponse {
|
||||
@JsonProperty("StartChargeSeq")
|
||||
private String startChargeSeq;
|
||||
|
||||
@JsonProperty("SuccStat")
|
||||
private Integer succStat;
|
||||
|
||||
@JsonProperty("FailReason")
|
||||
private Integer failReason;
|
||||
|
||||
@JsonProperty("IdentCode")
|
||||
private String identCode;
|
||||
|
||||
public String getStartChargeSeq() {
|
||||
return startChargeSeq;
|
||||
}
|
||||
|
||||
public void setStartChargeSeq(String startChargeSeq) {
|
||||
this.startChargeSeq = startChargeSeq;
|
||||
}
|
||||
|
||||
public Integer getSuccStat() {
|
||||
return succStat;
|
||||
}
|
||||
|
||||
public void setSuccStat(Integer succStat) {
|
||||
this.succStat = succStat;
|
||||
}
|
||||
|
||||
public Integer getFailReason() {
|
||||
return failReason;
|
||||
}
|
||||
|
||||
public void setFailReason(Integer failReason) {
|
||||
this.failReason = failReason;
|
||||
}
|
||||
|
||||
public String getIdentCode() {
|
||||
return identCode;
|
||||
}
|
||||
|
||||
public void setIdentCode(String identCode) {
|
||||
this.identCode = identCode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CYCChargeOrderInfoResponse{" +
|
||||
"startChargeSeq='" + startChargeSeq + '\'' +
|
||||
", succStat=" + succStat +
|
||||
", failReason=" + failReason +
|
||||
", identCode='" + identCode + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
@ -18,14 +18,20 @@ import javax.persistence.Column;
|
||||
"ConnectorID",
|
||||
"ConnectorStatus",
|
||||
"CurrentA",
|
||||
"CurrentB",
|
||||
"CurrentC",
|
||||
"VoltageA",
|
||||
"VoltageB",
|
||||
"VoltageC",
|
||||
"Soc",
|
||||
"StartTime",
|
||||
"EndTime",
|
||||
"TotalPower",
|
||||
"ElecMoney",
|
||||
"SeviceMoney",
|
||||
"TotalMoney"
|
||||
"TotalMoney",
|
||||
"SumPeriod",
|
||||
"ChargeDetails"
|
||||
})
|
||||
@Data
|
||||
public class CYCConnectorChargeStatusInfo {
|
||||
@ -51,43 +57,36 @@ public class CYCConnectorChargeStatusInfo {
|
||||
@JsonProperty("ConnectorStatus")
|
||||
public Integer connectorStatus;
|
||||
|
||||
|
||||
|
||||
// /**
|
||||
// * 车辆识别码
|
||||
// */
|
||||
// @JsonProperty("Vin")
|
||||
// public String vin;
|
||||
/**
|
||||
* A 相电流
|
||||
*/
|
||||
@JsonProperty("CurrentA")
|
||||
public Double currentA;
|
||||
// /**
|
||||
// * B 相电流
|
||||
// */
|
||||
// @JsonProperty("CurrentB")
|
||||
// public Double currentB;
|
||||
// /**
|
||||
// * C 相电流
|
||||
// */
|
||||
// @JsonProperty("CurrentC")
|
||||
// public Double currentC;
|
||||
/**
|
||||
* B 相电流
|
||||
*/
|
||||
@JsonProperty("CurrentB")
|
||||
public Double currentB;
|
||||
/**
|
||||
* C 相电流
|
||||
*/
|
||||
@JsonProperty("CurrentC")
|
||||
public Double currentC;
|
||||
/**
|
||||
* A 相电压
|
||||
*/
|
||||
@JsonProperty("VoltageA")
|
||||
public Double voltageA;
|
||||
// /**
|
||||
// * B 相电压
|
||||
// */
|
||||
// @JsonProperty("VoltageB")
|
||||
// public Double voltageB;
|
||||
// /**
|
||||
// * C 相电压
|
||||
// */
|
||||
// @JsonProperty("VoltageC")
|
||||
// public Double voltageC;
|
||||
/**
|
||||
* B 相电压
|
||||
*/
|
||||
@JsonProperty("VoltageB")
|
||||
public Double voltageB;
|
||||
/**
|
||||
* C 相电压
|
||||
*/
|
||||
@JsonProperty("VoltageC")
|
||||
public Double voltageC;
|
||||
/**
|
||||
* 电池剩余电量
|
||||
*/
|
||||
@ -128,5 +127,12 @@ public class CYCConnectorChargeStatusInfo {
|
||||
@JsonProperty("TotalMoney")
|
||||
@Column(columnDefinition = "Decimal(10,2)")
|
||||
public Double totalMoney;
|
||||
/**
|
||||
* 时段数N
|
||||
*/
|
||||
@JsonProperty("SumPeriod")
|
||||
public Integer sumPeriod;
|
||||
|
||||
@JsonProperty("ChargeDetails")
|
||||
private com.xhpc.evcs.dto.ChargeDetails[] chargeDetails;
|
||||
}
|
||||
|
||||
@ -0,0 +1,71 @@
|
||||
package com.xhpc.evcs.cyc.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
|
||||
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
@JsonPropertyOrder({
|
||||
"StartChargeSeq",
|
||||
"StartChargeSeqStat",
|
||||
"ConnectorID",
|
||||
"StartTime",
|
||||
"Mobile"
|
||||
})
|
||||
public class CYCNotificationStartChargeResultRequestData {
|
||||
|
||||
@JsonProperty("StartChargeSeq")
|
||||
private String startChargeSeq;
|
||||
|
||||
@JsonProperty("StartChargeSeqStat")
|
||||
private Integer startChargeSeqStat;
|
||||
|
||||
@JsonProperty("ConnectorID")
|
||||
private String connectorId;
|
||||
|
||||
@JsonProperty("StartTime")
|
||||
private String startTime;
|
||||
|
||||
@JsonProperty("Mobile")
|
||||
private String mobile;
|
||||
|
||||
public String getStartChargeSeq() {
|
||||
return startChargeSeq;
|
||||
}
|
||||
|
||||
public void setStartChargeSeq(String startChargeSeq) {
|
||||
this.startChargeSeq = startChargeSeq;
|
||||
}
|
||||
|
||||
public Integer getStartChargeSeqStat() {
|
||||
return startChargeSeqStat;
|
||||
}
|
||||
|
||||
public void setStartChargeSeqStat(Integer startChargeSeqStat) {
|
||||
this.startChargeSeqStat = startChargeSeqStat;
|
||||
}
|
||||
|
||||
public String getConnectorId() {
|
||||
return connectorId;
|
||||
}
|
||||
|
||||
public void setConnectorId(String connectorId) {
|
||||
this.connectorId = connectorId;
|
||||
}
|
||||
|
||||
public String getStartTime() {
|
||||
return startTime;
|
||||
}
|
||||
|
||||
public void setStartTime(String startTime) {
|
||||
this.startTime = startTime;
|
||||
}
|
||||
|
||||
public String getMobile() {
|
||||
return mobile;
|
||||
}
|
||||
|
||||
public void setMobile(String mobile) {
|
||||
this.mobile = mobile;
|
||||
}
|
||||
}
|
||||
@ -1,5 +1,10 @@
|
||||
package com.xhpc.evcs.encryption;
|
||||
|
||||
import com.xhpc.evcs.cyc.dto.CYCChargeOrderInfoResponse;
|
||||
import com.xhpc.evcs.domain.AuthSecretToken;
|
||||
import com.xhpc.evcs.dto.ChargeOrderInfoResponse;
|
||||
import com.xhpc.evcs.dto.DTOJsonHelper;
|
||||
|
||||
import javax.crypto.*;
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
@ -9,6 +14,9 @@ import java.security.InvalidKeyException;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.util.Arrays;
|
||||
import java.util.Base64;
|
||||
import java.util.Optional;
|
||||
|
||||
import static com.xhpc.evcs.domain.AuthSecretToken.SECRET_TOKEN_TYPE_OUT;
|
||||
|
||||
public class Aes128Cbc {
|
||||
|
||||
@ -69,5 +77,12 @@ public class Aes128Cbc {
|
||||
System.out.println(encrypt("{\"StationIDs\":[\"1\"]}", "8LpncubmWiPCzY3V", "av6A8QdnRaVRMXu6"));
|
||||
System.out.println(encrypt("{\"OperatorID\":\"MA5FNJXW9\", \"OperatorSecret\":\"Ut5UFdqDthiJyncU\"}",
|
||||
"8LpncubmWiPCzY3V", "av6A8QdnRaVRMXu6"));
|
||||
|
||||
//{"Ret":0,"Msg":"","Data":"pCA3UNQO1CqxRS6KvcNDpw==","Sig":"FCCCA9489FAD972722FB00E4E207F581"}
|
||||
String responseBody = "{\"Ret\":0,\"Msg\":\"\",\"Data\":\"pCA3UNQO1CqxRS6KvcNDpw==\",\"Sig\":\"FCCCA9489FAD972722FB00E4E207F581\"}";
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -485,6 +485,10 @@ public class DateUtil {
|
||||
DateUtil.isWeekend(DateUtil.string2Date("2016-06-12", "yyyy-MM-dd"));
|
||||
DateUtil.isWeekend(DateUtil.string2Date("2016-06-13", "yyyy-MM-dd"));
|
||||
DateUtil.isWeekend(DateUtil.string2Date("2016-06-14", "yyyy-MM-dd"));
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -4,17 +4,19 @@ import cn.hutool.core.date.DateUtil;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.xhpc.common.data.redis.CacheRateModel;
|
||||
import com.xhpc.common.data.redis.CacheRealtimeData;
|
||||
import com.xhpc.evcs.cyc.dto.CYCChargeChargeStatusResponse;
|
||||
import com.xhpc.evcs.cyc.dto.CYCChargeOrderInfoResponse;
|
||||
import com.xhpc.evcs.cyc.dto.CYCConnectorChargeStatusInfo;
|
||||
import com.xhpc.evcs.cyc.dto.CYCNotificationStartChargeResultRequestData;
|
||||
import com.xhpc.evcs.domain.AuthSecretToken;
|
||||
import com.xhpc.evcs.dto.CommonRequest;
|
||||
import com.xhpc.evcs.dto.ConnectorStatusInfoReq;
|
||||
import com.xhpc.evcs.dto.DTOJsonHelper;
|
||||
import com.xhpc.evcs.jpa.AuthSecretTokenRepository;
|
||||
import com.xhpc.evcs.notification.CoreDispatcher;
|
||||
import com.xhpc.evcs.utils.JSONUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
@ -22,6 +24,7 @@ import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
import static com.xhpc.common.data.redis.StaticBeanUtil.REDIS;
|
||||
import static com.xhpc.evcs.domain.AuthSecretToken.SECRET_TOKEN_TYPE_OUT;
|
||||
@ -39,6 +42,7 @@ public class CYCNotificationStationInfoController extends CoreDispatcher {
|
||||
@PostMapping("/v20/getCYCNotificationConnectorChargeStatus")
|
||||
public void getCYCNotificationConnectorChargeStatus(@RequestBody Map<String, Object> orderMap){
|
||||
System.out.println("==================设备充电中状态变化推送(川逸充) ==========================");
|
||||
System.out.println("==================设备充电中状态变化推送(川逸充) =============orderMap============="+orderMap.toString());
|
||||
//先查订单号 在查实时数据 最后计算金额
|
||||
try {
|
||||
String orderNo = orderMap.get("orderNo").toString();
|
||||
@ -65,55 +69,121 @@ public class CYCNotificationStationInfoController extends CoreDispatcher {
|
||||
if("已结束".equals(cacheMapOrder.get("status").toString())){
|
||||
cdConnectorChargeStatusInfo.setConnectorStatus(1);
|
||||
cdConnectorChargeStatusInfo.setStartChargeSeqStat(4);
|
||||
//cdConnectorChargeStatusInfo.setSoc((double)cacheMapOrder.get("endSoc"));
|
||||
}else{
|
||||
cdConnectorChargeStatusInfo.setConnectorStatus(3);
|
||||
cdConnectorChargeStatusInfo.setStartChargeSeqStat(2);
|
||||
}
|
||||
}
|
||||
REDIS.setCacheMap("order:"+orderNo+".notification",cacheMap);
|
||||
cdConnectorChargeStatusInfo.setStartChargeSeq(lord.getOrderNo());
|
||||
|
||||
Map<String, Object> pushOrder = REDIS.getCacheMap("pushOrder:"+orderNo);
|
||||
cdConnectorChargeStatusInfo.setStartChargeSeq((String) pushOrder.get("internetSerialNumber"));
|
||||
cdConnectorChargeStatusInfo.setConnectorID(lord.getPileNo()+lord.getGunId());
|
||||
cdConnectorChargeStatusInfo.setCurrentA((double)(lord.getWorkingCurrent()/10));
|
||||
cdConnectorChargeStatusInfo.setVoltageA((double)(lord.getWorkingVoltage()/10));
|
||||
cdConnectorChargeStatusInfo.setSoc((double)lord.getSoc());
|
||||
|
||||
cdConnectorChargeStatusInfo.setEndTime(formatTime);
|
||||
|
||||
BigDecimal chargingDegree = new BigDecimal(lord.getChargingDegree()).divide(new BigDecimal(10000).setScale(2, BigDecimal.ROUND_UP));
|
||||
BigDecimal amountCharged = new BigDecimal(lord.getAmountCharged()).divide(new BigDecimal(10000).setScale(2, BigDecimal.ROUND_UP));
|
||||
cdConnectorChargeStatusInfo.setTotalPower(chargingDegree.doubleValue());
|
||||
cdConnectorChargeStatusInfo.setTotalMoney(amountCharged.doubleValue());
|
||||
cdConnectorChargeStatusInfo.setTotalPower(chargingDegree.setScale(2,BigDecimal.ROUND_CEILING).doubleValue());
|
||||
|
||||
Map<String, Object> cacheOrder = REDIS.getCacheMap("order:" + orderNo);
|
||||
|
||||
if(cacheOrder !=null && cacheOrder.get("rateModelId") !=null){
|
||||
CacheRateModel rateModel = REDIS.getCacheObject("rateModel:" + cacheOrder.get("rateModelId").toString());
|
||||
if(rateModel.getT1SvcPrice().equals(rateModel.getT2SvcPrice()) && rateModel.getT3SvcPrice().equals(rateModel.getT4SvcPrice()) &&
|
||||
rateModel.getT1SvcPrice().equals(rateModel.getT3SvcPrice())){
|
||||
|
||||
BigDecimal divide = new BigDecimal(rateModel.getT1SvcPrice()).divide(new BigDecimal(100000)).setScale(2, BigDecimal.ROUND_UP);
|
||||
|
||||
BigDecimal bigDecimal = chargingDegree.multiply(divide).setScale(2, BigDecimal.ROUND_UP);
|
||||
cdConnectorChargeStatusInfo.setSeviceMoney(bigDecimal.doubleValue());
|
||||
BigDecimal subtract = amountCharged.subtract(bigDecimal);
|
||||
cdConnectorChargeStatusInfo.setElecMoney(subtract.doubleValue());
|
||||
}else{
|
||||
//暂时不考虑不同服务费 默认为0.2
|
||||
BigDecimal multiply = chargingDegree.multiply(new BigDecimal(0.2)).setScale(2, BigDecimal.ROUND_UP);;
|
||||
cdConnectorChargeStatusInfo.setSeviceMoney(multiply.doubleValue());
|
||||
BigDecimal subtract = amountCharged.subtract(multiply);
|
||||
cdConnectorChargeStatusInfo.setElecMoney(subtract.doubleValue());
|
||||
}
|
||||
cdConnectorChargeStatusInfo.setElecMoney(new BigDecimal(orderMap.get("elecMoney").toString()).doubleValue());
|
||||
cdConnectorChargeStatusInfo.setSeviceMoney(new BigDecimal(orderMap.get("seviceMoney").toString()).doubleValue());
|
||||
cdConnectorChargeStatusInfo.setTotalMoney(new BigDecimal(orderMap.get("totalMoney").toString()).doubleValue());
|
||||
AuthSecretToken authSecretTokenOut = authSecretTokenRepository.findByOperatorId3irdptyAndSecretTokenType("MA6CC2LK7", SECRET_TOKEN_TYPE_OUT).orElse(null);
|
||||
//Map<String, Object> map =new HashMap<>();
|
||||
//map.put("ConnectorChargeStatusInfo",cdConnectorChargeStatusInfo);
|
||||
String data = JSONUtil.toJSONString(cdConnectorChargeStatusInfo);
|
||||
CommonRequest<ConnectorStatusInfoReq> commonRequest = new CommonRequest<>();
|
||||
System.out.println("===川逸充设备充电中状态变化推送====data========"+data);
|
||||
CommonRequest<Object> commonRequest = new CommonRequest<>();
|
||||
commonRequest.setData(data);
|
||||
String result = ok(commonRequest, "/notification_connector_charge_status", authSecretTokenOut);
|
||||
System.out.println("===设备充电中状态变化推送====result========"+result);
|
||||
String result = ok(commonRequest, "/notification_equip_charge_status", authSecretTokenOut);
|
||||
System.out.println("===川逸充设备充电中状态变化推送====result========"+result);
|
||||
CYCChargeChargeStatusResponse chargeStatusResponse = DTOJsonHelper.parseResponseData(result, CYCChargeChargeStatusResponse.class, authSecretTokenOut);
|
||||
|
||||
System.out.println("===川逸充设备充电中状态变化推送====cycChargeOrderInfoResponse========"+chargeStatusResponse.toString());
|
||||
}
|
||||
} catch (JsonProcessingException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/v20/getCYCNotificationStartChargeResult")
|
||||
public void getCYCNotificationStartChargeResult(@RequestBody Map<String, Object> orderMap)throws Exception {
|
||||
|
||||
Optional<AuthSecretToken> authSecretToken =
|
||||
authSecretTokenRepository.findByOperatorId3irdptyAndSecretTokenType("MA6CC2LK7",SECRET_TOKEN_TYPE_OUT);
|
||||
|
||||
if(authSecretToken !=null){
|
||||
String orderNo = orderMap.get("orderNo").toString();
|
||||
|
||||
Map<String, Object> pushOrder = REDIS.getCacheMap("pushOrder:"+orderNo);
|
||||
if (authSecretToken.isPresent()) {
|
||||
CYCNotificationStartChargeResultRequestData notificationStartChargeResultRequestData =
|
||||
new CYCNotificationStartChargeResultRequestData();
|
||||
notificationStartChargeResultRequestData.setStartChargeSeq((String) pushOrder.get("internetSerialNumber"));
|
||||
notificationStartChargeResultRequestData.setStartChargeSeqStat((Integer) pushOrder.get("startChargeSeqStat"));
|
||||
notificationStartChargeResultRequestData.setConnectorId((String) pushOrder.get("connectorID"));
|
||||
notificationStartChargeResultRequestData.setStartTime((String) pushOrder.get("startTime"));
|
||||
notificationStartChargeResultRequestData.setMobile((String) pushOrder.get("phone"));
|
||||
|
||||
String data = JSONUtil.toJSONString(notificationStartChargeResultRequestData);
|
||||
CommonRequest<CYCNotificationStartChargeResultRequestData> commonRequest = new CommonRequest<>();
|
||||
commonRequest.setOperatorId("MA6DFCTD5");
|
||||
|
||||
commonRequest.setData(data);
|
||||
|
||||
String result = ok(commonRequest, "/notification_start_charge_result", authSecretToken.get());
|
||||
|
||||
System.out.println("===川逸充启动结果推送====result========"+result);
|
||||
CYCChargeOrderInfoResponse cycChargeOrderInfoResponse = DTOJsonHelper.parseResponseData(result, CYCChargeOrderInfoResponse.class, authSecretToken.get());
|
||||
|
||||
System.out.println("===川逸充设备充电中状态变化推送====cycChargeOrderInfoResponse========"+cycChargeOrderInfoResponse.toString());
|
||||
}
|
||||
}else{
|
||||
System.out.println("===川逸充启动结果失败====result========");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/v20/token")
|
||||
public void token(@RequestBody Map<String, Object> orderMap)throws Exception {
|
||||
|
||||
Optional<AuthSecretToken> authSecretToken = authSecretTokenRepository.findByOperatorId3irdptyAndSecretTokenType("MA6CC2LK7",SECRET_TOKEN_TYPE_OUT);
|
||||
|
||||
// if(authSecretToken !=null){
|
||||
// Map<String,Object> map =new HashMap<>();
|
||||
// map.put("OperatorID","MA6DFCTD5");
|
||||
// map.put("OperatorSecret","9jG8qysc5RxdbjvnvdmuRYQg6J82FwjL");
|
||||
// String data = JSONUtil.toJSONString(map);
|
||||
// CommonRequest commonRequest = new CommonRequest<>();
|
||||
// commonRequest.setOperatorId("MA6DFCTD5");
|
||||
// commonRequest.setData(data);
|
||||
// String result = ok(commonRequest, "/query_token", authSecretToken.get());
|
||||
// System.out.println("===川逸充获取token====result========"+result);
|
||||
// }else{
|
||||
// System.out.println("===川逸充获取token====result========");
|
||||
// }
|
||||
|
||||
String result="{\"Ret\":0,\"Msg\":\"\",\"Data\":\"pCA3UNQO1CqxRS6KvcNDpw==\",\"Sig\":\"FCCCA9489FAD972722FB00E4E207F581\"}";
|
||||
|
||||
//String result="pCA3UNQO1CqxRS6KvcNDpw==";
|
||||
CYCChargeOrderInfoResponse cycChargeOrderInfoResponse = DTOJsonHelper.parseResponseData(result, CYCChargeOrderInfoResponse.class, authSecretToken.get());
|
||||
|
||||
System.out.println("===川逸充设备充电中状态变化推送====cycChargeOrderInfoResponse========"+cycChargeOrderInfoResponse.toString());
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -53,6 +53,12 @@ public class CoreDispatcher {
|
||||
return ok(object, url, authSecretTokenOut, null);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public String okYu(Object object, String url, AuthSecretToken authSecretTokenOut,String stationOperatorId) {
|
||||
|
||||
return ok(object, url, authSecretTokenOut, stationOperatorId);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public String ok(Object object, String url, AuthSecretToken authSecretTokenOut, String stationOperatorId) {
|
||||
if (authSecretTokenOut == null) {
|
||||
@ -111,11 +117,13 @@ public class CoreDispatcher {
|
||||
bearerToken = authSecretTokenOut.getToken();
|
||||
commonRequest.setData(originalData);
|
||||
tData = JSONUtil.toJSONString(commonRequest);
|
||||
System.out.println("=========加密前data=============="+tData);
|
||||
log.debug("to [{}] {} out plain data:\n{}", authSecretTokenOut.getOperatorId3irdpty(), url, tData);
|
||||
if (authSecretTokenOut.isEncrypt()) {
|
||||
tData = encryptReqOut(authSecretTokenOut.getDataSecret(), authSecretTokenOut.getDataSecretIV(),
|
||||
authSecretTokenOut.getSigSecret(), commonRequest);
|
||||
// log.debug("notify out encrypt data:\n{}", tData);
|
||||
System.out.println("=========加密data=============="+tData);
|
||||
}
|
||||
body = okhttp3.RequestBody.create(JSON, tData);
|
||||
// logger.info("==============平台推送值================="+tData);
|
||||
|
||||
@ -30,8 +30,8 @@ public class NotificationCancelOrderTask extends CoreDispatcher {
|
||||
|
||||
//private Logger logger = LoggerFactory.getLogger(NotificationChargeOrderInfoTask.class);
|
||||
|
||||
//推送不开放
|
||||
//@Scheduled(fixedRate = 1000 * 15)
|
||||
//推送不开放(evcs 放开)
|
||||
@Scheduled(fixedRate = 1000 * 15)
|
||||
public void run() throws JsonProcessingException {
|
||||
|
||||
//Getting the orders, which need to be notified.
|
||||
|
||||
@ -38,8 +38,8 @@ public class NotificationChargeOrderInfoTask extends CoreDispatcher {
|
||||
private AuthSecretTokenRepository authSecretTokenRepository;
|
||||
|
||||
private final Logger logger = LoggerFactory.getLogger(NotificationChargeOrderInfoTask.class);
|
||||
//推送不开放
|
||||
//@Scheduled(fixedRate = 1000 * 15)
|
||||
//推送不开放(evcs 放开)
|
||||
@Scheduled(fixedRate = 1000 * 15)
|
||||
public void run() throws JsonProcessingException {
|
||||
|
||||
Collection<String> orderKeys = REDIS.keys("order:*");
|
||||
|
||||
@ -45,11 +45,11 @@ public class NotificationEquipChargeStatusTask extends CoreDispatcher {
|
||||
private final Logger logger = LoggerFactory.getLogger(NotificationEquipChargeStatusTask.class);
|
||||
|
||||
/**
|
||||
* 推送充电状态
|
||||
* 推送充电状态(evcs 放开)
|
||||
* @throws IOException
|
||||
*/
|
||||
//推送不开放
|
||||
//@Scheduled(fixedRate = 1000 * 30)
|
||||
@Scheduled(fixedRate = 1000 * 30)
|
||||
public void run() throws IOException {
|
||||
|
||||
List<AuthSecretToken> authSecretTokenOutList = authSecretTokenRepository.findBySecretTokenType(SECRET_TOKEN_TYPE_OUT);
|
||||
|
||||
@ -33,7 +33,7 @@ public class NotificationStartChargeResultTask extends CoreDispatcher {
|
||||
/**
|
||||
* Judging the 3rd whether it has got the start charging task.
|
||||
*/
|
||||
//推送不开放
|
||||
//推送不开放(evcs 放开)
|
||||
@Scheduled(fixedRate = 1000 * 30)
|
||||
public void run() throws IOException {
|
||||
|
||||
@ -42,6 +42,10 @@ public class NotificationStartChargeResultTask extends CoreDispatcher {
|
||||
for (String pushOrderKey : pushOrderKeys) {
|
||||
Map<String, Object> pushOrder = REDIS.getCacheMap(pushOrderKey);
|
||||
if (pushOrder.get("startChargeSeqStat") != null && (Integer) pushOrder.get("startChargeSeqStat") > 1) {
|
||||
if(pushOrder.get("operatorId3rdptyName") !=null && "CYC".equals((String)pushOrder.get("operatorId3rdptyName"))){
|
||||
continue;
|
||||
}
|
||||
logger.info("===============启动推送============================"+pushOrderKey);
|
||||
Integer startChargeNotificationStat = (Integer) pushOrder.get("startChargeNotificationStat");
|
||||
if (null != startChargeNotificationStat && 1 != startChargeNotificationStat && startChargeNotificationStat <= 20) {
|
||||
String startChargeSeq = (String) pushOrder.get("internetSerialNumber");
|
||||
@ -77,10 +81,6 @@ public class NotificationStartChargeResultTask extends CoreDispatcher {
|
||||
String operatorIdEvcs = "MA6DFCTD5";
|
||||
String data = JSONUtil.toJSONString(notificationStartChargeResultRequestData);
|
||||
|
||||
System.out.println("===============启动推送情况========================");
|
||||
System.out.println("===============启动推送情况============orderNo============"+orderNo);
|
||||
System.out.println("===============启动推送情况============data============"+data);
|
||||
System.out.println("===============启动推送情况========================");
|
||||
|
||||
CommonRequest<NotificationStartChargeResultRequestData> commonRequest = new CommonRequest<>();
|
||||
commonRequest.setData(data);
|
||||
@ -89,16 +89,11 @@ public class NotificationStartChargeResultTask extends CoreDispatcher {
|
||||
DTOJsonHelper.parseResponseData(responseBody,
|
||||
NotificationStartStopChargeResultResponse.class, authSecretTokenOut);
|
||||
|
||||
System.out.println("===============启动推送情况============responseBody============"+responseBody);
|
||||
System.out.println("===============启动推送情况========================");
|
||||
|
||||
if (null != notificationStartStopChargeResultResponse) {
|
||||
//Ensuring that only when startChargeNotificationStat equals 1 won't be notified.
|
||||
if (notificationStartStopChargeResultResponse.getSuccStat() == 0) {
|
||||
System.out.println("===============启动推送成功========orderNo================"+orderNo);
|
||||
REDIS.setCacheMapValue("pushOrder:".concat(orderNo), "startChargeNotificationStat", 1);
|
||||
} else {
|
||||
System.out.println("===============启动推送失败========orderNo================"+orderNo);
|
||||
Integer startChargeNotificationStat = REDIS.getCacheMapValue("pushOrder:".concat(orderNo),
|
||||
"startChargeNotificationStat");
|
||||
if (startChargeNotificationStat == 0) {
|
||||
|
||||
@ -49,8 +49,8 @@ public class NotificationStationStatusTask extends CoreDispatcher {
|
||||
@Resource
|
||||
private XhpcTerminalRepository terminalRepository;
|
||||
|
||||
//推送不开放
|
||||
//@Scheduled(fixedRate = 1000 * 45)
|
||||
//推送不开放(evcs 放开)
|
||||
@Scheduled(fixedRate = 1000 * 45)
|
||||
protected void run() throws IOException {
|
||||
|
||||
Collection<String> stationTerminalKeys = REDIS.keys("stationTerminalStatus:*");
|
||||
|
||||
@ -26,7 +26,8 @@ public class NotificationStopChargeResultTask extends CoreDispatcher {
|
||||
@Autowired
|
||||
private AuthSecretTokenRepository authSecretTokenRepository;
|
||||
|
||||
//@Scheduled(fixedRate = 1000 * 3)
|
||||
//(evcs 放开)
|
||||
@Scheduled(fixedRate = 1000 * 3)
|
||||
public void run() throws Exception {
|
||||
|
||||
notifyService();
|
||||
|
||||
@ -14,10 +14,10 @@ spring:
|
||||
nacos:
|
||||
discovery:
|
||||
# 服务注册地址
|
||||
server-addr: 172.31.183.135:8848
|
||||
server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848
|
||||
config:
|
||||
# 配置中心地址
|
||||
server-addr: 172.31.183.135:8848
|
||||
server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848
|
||||
# 配置文件格式
|
||||
file-extension: yml
|
||||
# 共享配置
|
||||
|
||||
@ -73,6 +73,24 @@ public class TokenController extends BaseController
|
||||
return R.ok(tokenService.createToken(userInfo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 平台管理员登陆(过滤图形验证码)
|
||||
* @param form
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("pcLogin")
|
||||
public R<?> pcLogin(@RequestBody LoginBody form)
|
||||
{
|
||||
String tenantId = "000000";
|
||||
if(tenantId==null || "".equals(tenantId)){
|
||||
throw new BaseException("租户ID码必须填写");
|
||||
}
|
||||
// 用户登录
|
||||
LoginUser userInfo = sysLoginService.login(form.getUsername(), form.getPassword(),0,tenantId);
|
||||
// 获取登录token
|
||||
return R.ok(tokenService.createToken(userInfo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 运营商登陆
|
||||
* @param form
|
||||
|
||||
@ -12,6 +12,11 @@ public class StatusConstants {
|
||||
*/
|
||||
public static final String OPERATION_ALI_PAY_TYPE = "2";
|
||||
|
||||
/**
|
||||
* app操作渠道
|
||||
*/
|
||||
public static final String OPERATION_APP_TYPE = "3";
|
||||
|
||||
/**
|
||||
* 未进入黑名单
|
||||
*/
|
||||
|
||||
@ -0,0 +1,13 @@
|
||||
package com.xhpc.gateway.config;
|
||||
|
||||
import org.springframework.cloud.gateway.route.RouteLocator;
|
||||
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Configuration
|
||||
public class CustomRouteConfig {
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -6,6 +6,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.cloud.gateway.config.GatewayProperties;
|
||||
import org.springframework.cloud.gateway.route.RouteLocator;
|
||||
import org.springframework.cloud.gateway.support.NameUtils;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.reactive.config.ResourceHandlerRegistry;
|
||||
import org.springframework.web.reactive.config.WebFluxConfigurer;
|
||||
@ -73,4 +74,8 @@ public class SwaggerProvider implements SwaggerResourcesProvider, WebFluxConfigu
|
||||
registry.addResourceHandler("/swagger-ui/**")
|
||||
.addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -16,10 +16,10 @@ spring:
|
||||
nacos:
|
||||
discovery:
|
||||
# 服务注册地址
|
||||
server-addr: 172.31.183.135:8848
|
||||
server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848
|
||||
config:
|
||||
# 配置中心地址
|
||||
server-addr: 172.31.183.135:8848
|
||||
server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848
|
||||
# 配置文件格式
|
||||
file-extension: yml
|
||||
# 共享配置
|
||||
@ -35,7 +35,7 @@ spring:
|
||||
datasource:
|
||||
ds1:
|
||||
nacos:
|
||||
server-addr: 172.31.183.135:8848
|
||||
server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848
|
||||
dataId: sentinel-ruoyi-gateway
|
||||
groupId: DEFAULT_GROUP
|
||||
data-type: json
|
||||
|
||||
@ -14,10 +14,10 @@ spring:
|
||||
nacos:
|
||||
discovery:
|
||||
# 服务注册地址
|
||||
server-addr: 172.31.183.135:8848
|
||||
server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848
|
||||
config:
|
||||
# 配置中心地址
|
||||
server-addr: 172.31.183.135:8848
|
||||
server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848
|
||||
# 配置文件格式
|
||||
file-extension: yml
|
||||
# 共享配置
|
||||
|
||||
@ -14,10 +14,10 @@ spring:
|
||||
nacos:
|
||||
discovery:
|
||||
# 服务注册地址
|
||||
server-addr: 172.31.183.135:8848
|
||||
server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848
|
||||
config:
|
||||
# 配置中心地址
|
||||
server-addr: 172.31.183.135:8848
|
||||
server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848
|
||||
# 配置文件格式
|
||||
file-extension: yml
|
||||
# 共享配置
|
||||
|
||||
@ -14,10 +14,10 @@ spring:
|
||||
nacos:
|
||||
discovery:
|
||||
# 服务注册地址
|
||||
server-addr: 172.31.183.135:8848
|
||||
server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848
|
||||
config:
|
||||
# 配置中心地址
|
||||
server-addr: 172.31.183.135:8848
|
||||
server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848
|
||||
# 配置文件格式
|
||||
file-extension: yml
|
||||
# 共享配置
|
||||
|
||||
@ -14,10 +14,10 @@ spring:
|
||||
nacos:
|
||||
discovery:
|
||||
# 服务注册地址
|
||||
server-addr: 172.31.183.135:8848
|
||||
server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848
|
||||
config:
|
||||
# 配置中心地址
|
||||
server-addr: 172.31.183.135:8848
|
||||
server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848
|
||||
# 配置文件格式
|
||||
file-extension: yml
|
||||
# 共享配置
|
||||
|
||||
@ -14,10 +14,10 @@ spring:
|
||||
nacos:
|
||||
discovery:
|
||||
# 服务注册地址
|
||||
server-addr: 172.31.183.135:8848
|
||||
server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848
|
||||
config:
|
||||
# 配置中心地址
|
||||
server-addr: 172.31.183.135:8848
|
||||
server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848
|
||||
# 配置文件格式
|
||||
file-extension: yml
|
||||
# 共享配置
|
||||
|
||||
@ -40,17 +40,17 @@ INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_c
|
||||
(2, 'ruoyi-gateway-dev.yml', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net \n port: 6379\n password: tingsun@7645313\n cloud:\n gateway:\n discovery:\n locator:\n lowerCaseServiceId: true\n enabled: true\n routes:\n # 认证中心\n - id: ruoyi-auth\n uri: lb://ruoyi-auth\n predicates:\n - Path=/auth/**\n filters:\n # 验证码处理\n - CacheRequestFilter\n - ValidateCodeFilter\n - StripPrefix=1\n # 代码生成\n - id: ruoyi-gen\n uri: lb://ruoyi-gen\n predicates:\n - Path=/code/**\n filters:\n - StripPrefix=1\n # 定时任务\n - id: ruoyi-job\n uri: lb://ruoyi-job\n predicates:\n - Path=/schedule/**\n filters:\n - StripPrefix=1\n # 系统模块\n - id: ruoyi-system\n uri: lb://ruoyi-system\n predicates:\n - Path=/system/**\n filters:\n - StripPrefix=1\n # 文件服务\n - id: ruoyi-file\n uri: lb://ruoyi-file\n predicates:\n - Path=/file/**\n filters:\n - StripPrefix=1\n # 充电桩服务\n - id: xhpc-power-pole\n uri: lb://xhpc-power-pole\n predicates:\n - Path=/pp/**\n filters:\n - StripPrefix=1\n # 账号服务\n - id: xhpc-user\n uri: lb://xhpc-user\n predicates:\n - Path=/xhpc-user/**\n filters:\n - StripPrefix=1\n # 支付服务\n - id: xhpc-payment\n uri: lb://xhpc-payment\n predicates:\n - Path=/xhpc-payment/**\n filters:\n - StripPrefix=1\n # 订单服务\n - id: xhpc-order\n uri: lb://xhpc-order\n predicates:\n - Path=/xhpc-order/**\n filters:\n - StripPrefix=1\n\n# 不校验白名单\nignore:\n whites:\n - /auth/logout\n - /auth/login\n - /*/v2/api-docs\n - /csrf\n - /xhpc-user/app/user/jscode2session\n - /xhpc-user/app/user/register\n - /xhpc-user/app/user/login\n - /xhpc-user/app/user/loginOut\n - /xhpc-user/app/user/voluntaryLogin\n - /xhpc-user/app/user/logout\n - /xhpc-user/app/user/alipayEmpower\n - /xhpc-user/app/user/appInfo\n - /xhpc-payment/wx/paymentCallback', '5a3b5371bf88b6b46ffe8271c7cae24c', '2020-05-14 14:17:55', '2021-07-28 07:50:28', 'nacos', '171.88.42.96', '', '', '网关模块', 'null', 'null', 'yaml', 'null'),
|
||||
(3, 'ruoyi-auth-dev.yml', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net \n port: 6379\n password: tingsun@7645313\n', '364ff5f362097c96a2ad12596b5ff9fd', '2020-11-20 00:00:00', '2021-07-23 09:21:25', 'nacos', '0:0:0:0:0:0:0:1', '', '', '认证中心', 'null', 'null', 'yaml', 'null'),
|
||||
(4, 'ruoyi-monitor-dev.yml', 'DEFAULT_GROUP', '# spring\r\nspring: \r\n security:\r\n user:\r\n name: ruoyi\r\n password: 123456\r\n boot:\r\n admin:\r\n ui:\r\n title: 若依服务状态监控\r\n', 'd8997d0707a2fd5d9fc4e8409da38129', '2020-11-20 00:00:00', '2020-12-21 16:28:07', NULL, '0:0:0:0:0:0:0:1', '', '', '监控中心', 'null', 'null', 'yaml', 'null'),
|
||||
(5, 'ruoyi-system-dev.yml', 'DEFAULT_GROUP', '# spring配置\nspring: \n redis:\n host: tingsun-znc.f3322.net \n port: 6379\n password: tingsun@7645313\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n # 主库数据源\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n # 从库数据源\n # slave:\n # username: \n # password: \n # url: \n # driver-class-name: \n # seata: true # 开启seata代理,开启后默认每个数据源都代理,如果某个不需要代理可单独关闭\n\n# seata配置\nseata:\n # 默认关闭,如需启用spring.datasource.dynami.seata需要同时开启\n enabled: false\n # Seata 应用编号,默认为 ${spring.application.name}\n application-id: ${spring.application.name}\n # Seata 事务组编号,用于 TC 集群名\n tx-service-group: ${spring.application.name}-group\n # 关闭自动代理\n enable-auto-data-source-proxy: false\n # 服务配置项\n service:\n # 虚拟组和分组的映射\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: 120.26.46.180:8858\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: 120.26.46.180:8858\n namespace:\n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.xhpc\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip', '58d5723fa8c81b12563941261fd7e758', '2020-11-20 00:00:00', '2021-07-28 10:44:08', 'nacos', '0:0:0:0:0:0:0:1', '', '', '系统模块', 'null', 'null', 'yaml', 'null'),
|
||||
(5, 'ruoyi-system-dev.yml', 'DEFAULT_GROUP', '# spring配置\nspring: \n redis:\n host: tingsun-znc.f3322.net \n port: 6379\n password: tingsun@7645313\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n # 主库数据源\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n # 从库数据源\n # slave:\n # username: \n # password: \n # url: \n # driver-class-name: \n # seata: true # 开启seata代理,开启后默认每个数据源都代理,如果某个不需要代理可单独关闭\n\n# seata配置\nseata:\n # 默认关闭,如需启用spring.datasource.dynami.seata需要同时开启\n enabled: false\n # Seata 应用编号,默认为 ${spring.application.name}\n application-id: ${spring.application.name}\n # Seata 事务组编号,用于 TC 集群名\n tx-service-group: ${spring.application.name}-group\n # 关闭自动代理\n enable-auto-data-source-proxy: false\n # 服务配置项\n service:\n # 虚拟组和分组的映射\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848\n namespace:\n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.xhpc\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip', '58d5723fa8c81b12563941261fd7e758', '2020-11-20 00:00:00', '2021-07-28 10:44:08', 'nacos', '0:0:0:0:0:0:0:1', '', '', '系统模块', 'null', 'null', 'yaml', 'null'),
|
||||
(6, 'ruoyi-gen-dev.yml', 'DEFAULT_GROUP', '# spring配置\r\nspring: \r\n redis:\r\n host: tingsun-znc.f3322.net \r\n port: 6379\r\n password: tingsun@7645313\r\n datasource: \r\n driver-class-name: com.mysql.cj.jdbc.Driver\r\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n username: ry-cloud\r\n password: xiaohua123\r\n\r\n# mybatis配置\r\nmybatis:\r\n # 搜索指定包别名\r\n typeAliasesPackage: com.xhpc.gen.domain\r\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\r\n mapperLocations: classpath:mapper/**/*.xml\r\n\r\n# swagger配置\r\nswagger:\r\n title: 代码生成接口文档\r\n license: Powered By ruoyi\r\n licenseUrl: https://ruoyi.vip\r\n\r\n# 代码生成\r\ngen: \r\n # 作者\r\n author: ruoyi\r\n # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool\r\n packageName: com.xhpc.system\r\n # 自动去除表前缀,默认是false\r\n autoRemovePre: false\r\n # 表前缀(生成类名不会包含表前缀,多个用逗号分隔)\r\n tablePrefix: sys_\r\n', 'a21c5fa4c7c5731e62453614cf2e7d3f', '2020-11-20 00:00:00', '2021-07-24 14:16:06', NULL, '0:0:0:0:0:0:0:1', '', '', '代码生成', 'null', 'null', 'yaml', 'null'),
|
||||
(7, 'ruoyi-job-dev.yml', 'DEFAULT_GROUP', '# spring配置\nspring: \n redis:\n host: tingsun-znc.f3322.net \n port: 6379\n password: tingsun@7645313\n datasource:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/quartz?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: quartz\n password: quartz123\n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.xhpc.job\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 定时任务接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n', 'e9233f5ce3b3de95233ad88bb1a4231a', '2020-11-20 00:00:00', '2021-07-29 08:51:36', 'nacos', '0:0:0:0:0:0:0:1', '', '', '定时任务', 'null', 'null', 'yaml', 'null'),
|
||||
(8, 'ruoyi-file-dev.yml', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net\n port: 6379\n password: tingsun@7645313 \n jackson:\n date-format: yyyy-MM-dd HH:mm:ss\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n\nseata:\n enabled: false\n application-id: ${spring.application.name}\n tx-service-group: ${spring.application.name}-group\n enable-auto-data-source-proxy: false\n service:\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: 120.26.46.180:8858\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: 120.26.46.180:8858\n namespace: \n\nmybatis:\n typeAliasesPackage: com.xhpc.file\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n configuration:\n call-setters-on-nulls: true\n\n# 本地文件上传 \nfile:\n domain: http://127.0.0.1:9300\n path: D:/ruoyi/uploadPath\n prefix: /statics\n\n# FastDFS配置\nfdfs:\n domain: http://8.129.231.12\n soTimeout: 3000\n connectTimeout: 2000\n trackerList: 8.129.231.12:22122\n\n# Minio配置\nminio:\n url: http://8.129.231.12:9000\n accessKey: minioadmin\n secretKey: minioadmin\n bucketName: test\n#oss默认配置\noss:\n enabled: true\n name: qiniu\n tenant-mode: true\n endpoint: oss-accelerate.aliyuncs.com\n access-key: LTAIhOKfUxeutGeh\n secret-key: 2TvKIoX03bnP5WRLxtTaEYQufrtbav\n bucket-name: dx-gzxh\n', '435441353d3fbaa4ee8165d6f4b0374b', '2020-11-20 00:00:00', '2021-07-29 02:42:04', 'nacos', '171.88.42.96', '', '', '文件服务', 'null', 'null', 'yaml', 'null'),
|
||||
(8, 'ruoyi-file-dev.yml', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net\n port: 6379\n password: tingsun@7645313 \n jackson:\n date-format: yyyy-MM-dd HH:mm:ss\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n\nseata:\n enabled: false\n application-id: ${spring.application.name}\n tx-service-group: ${spring.application.name}-group\n enable-auto-data-source-proxy: false\n service:\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848\n namespace: \n\nmybatis:\n typeAliasesPackage: com.xhpc.file\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n configuration:\n call-setters-on-nulls: true\n\n# 本地文件上传 \nfile:\n domain: http://127.0.0.1:9300\n path: D:/ruoyi/uploadPath\n prefix: /statics\n\n# FastDFS配置\nfdfs:\n domain: http://8.129.231.12\n soTimeout: 3000\n connectTimeout: 2000\n trackerList: 8.129.231.12:22122\n\n# Minio配置\nminio:\n url: http://8.129.231.12:9000\n accessKey: minioadmin\n secretKey: minioadmin\n bucketName: test\n#oss默认配置\noss:\n enabled: true\n name: qiniu\n tenant-mode: true\n endpoint: oss-accelerate.aliyuncs.com\n access-key: LTAIhOKfUxeutGeh\n secret-key: 2TvKIoX03bnP5WRLxtTaEYQufrtbav\n bucket-name: dx-gzxh\n', '435441353d3fbaa4ee8165d6f4b0374b', '2020-11-20 00:00:00', '2021-07-29 02:42:04', 'nacos', '171.88.42.96', '', '', '文件服务', 'null', 'null', 'yaml', 'null'),
|
||||
(9, 'sentinel-ruoyi-gateway', 'DEFAULT_GROUP', '[\r\n {\r\n "resource": "ruoyi-auth",\r\n "count": 500,\r\n "grade": 1,\r\n "limitApp": "default",\r\n "strategy": 0,\r\n "controlBehavior": 0\r\n },\r\n {\r\n "resource": "ruoyi-system",\r\n "count": 1000,\r\n "grade": 1,\r\n "limitApp": "default",\r\n "strategy": 0,\r\n "controlBehavior": 0\r\n },\r\n {\r\n "resource": "ruoyi-gen",\r\n "count": 200,\r\n "grade": 1,\r\n "limitApp": "default",\r\n "strategy": 0,\r\n "controlBehavior": 0\r\n },\r\n {\r\n "resource": "ruoyi-job",\r\n "count": 300,\r\n "grade": 1,\r\n "limitApp": "default",\r\n "strategy": 0,\r\n "controlBehavior": 0\r\n }\r\n]', '9f3a3069261598f74220bc47958ec252', '2020-11-20 00:00:00', '2020-11-20 00:00:00', NULL, '0:0:0:0:0:0:0:1', '', '', '限流策略', 'null', 'null', 'json', 'null'),
|
||||
(20, 'xhpc-power-pile-dev.yml', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net\n port: 6379\n password: tingsun@7645313\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n\nseata:\n enabled: false\n application-id: ${spring.application.name}\n tx-service-group: ${spring.application.name}-group\n enable-auto-data-source-proxy: false\n service:\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: 120.26.46.180:8858\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: 120.26.46.180:8858\n namespace: \n\nmybatis:\n typeAliasesPackage: com.xhpc.pp\n mapperLocations: classpath:mapper/**/*.xml\n', 'e1cad28a4df29955413fa360a40a03dc', '2021-07-19 06:40:44', '2021-07-23 09:05:47', 'nacos', '0:0:0:0:0:0:0:1', '', '', '充电桩协议服务', '', '', 'yaml', ''),
|
||||
(22, 'xhpc-charging-station-dev.yml', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net\n port: 6379\n password: tingsun@7645313\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n\nseata:\n enabled: false\n application-id: ${spring.application.name}\n tx-service-group: ${spring.application.name}-group\n enable-auto-data-source-proxy: false\n service:\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: 120.26.46.180:8858\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: 120.26.46.180:8858\n namespace: \n\nmybatis:\n typeAliasesPackage: com.xhpc\n mapperLocations: classpath:mapper/**/*.xml\n', '5c9e25c8e8775649c0d5dcb5aed95715', '2021-07-19 08:22:12', '2021-07-28 08:51:17', 'nacos', '0:0:0:0:0:0:0:1', '', '', '', '', '', 'yaml', ''),
|
||||
(23, 'xhpc-general-dev.yml', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net\n port: 6379\n password: tingsun@7645313\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n\nseata:\n enabled: false\n application-id: ${spring.application.name}\n tx-service-group: ${spring.application.name}-group\n enable-auto-data-source-proxy: false\n service:\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: 120.26.46.180:8858\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: 120.26.46.180:8858\n namespace: \n\nmybatis:\n typeAliasesPackage: com.xhpc.general\n mapperLocations: classpath:mapper/**/*.xml\n', 'c31f612a8d2c67dc69888b7c02bae5d0', '2021-07-20 20:39:06', '2021-07-21 10:03:06', 'nacos', '0:0:0:0:0:0:0:1', '', '', '', '', '', 'yaml', ''),
|
||||
(24, 'xhpc-user', 'DEFAULT_GROUP', 'spring: \r\n redis:\r\n host: tingsun-znc.f3322.net\r\n port: 6379\r\n password: tingsun@7645313 \r\n jackson:\r\n date-format: yyyy-MM-dd HH:mm:ss\r\n time-zone: GMT+8\r\n datasource:\r\n druid:\r\n stat-view-servlet:\r\n enabled: true\r\n loginUsername: admin\r\n loginPassword: 123456\r\n dynamic:\r\n druid:\r\n initial-size: 5\r\n min-idle: 5\r\n maxActive: 20\r\n maxWait: 60000\r\n timeBetweenEvictionRunsMillis: 60000\r\n minEvictableIdleTimeMillis: 300000\r\n validationQuery: SELECT 1 FROM DUAL\r\n testWhileIdle: true\r\n testOnBorrow: false\r\n testOnReturn: false\r\n poolPreparedStatements: true\r\n maxPoolPreparedStatementPerConnectionSize: 20\r\n filters: stat,slf4j\r\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\r\n datasource:\r\n master:\r\n driver-class-name: com.mysql.cj.jdbc.Driver\r\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n username: ry-cloud\r\n password: xiaohua123\r\n\r\nseata:\r\n enabled: false\r\n application-id: ${spring.application.name}\r\n tx-service-group: ${spring.application.name}-group\r\n enable-auto-data-source-proxy: false\r\n service:\r\n vgroup-mapping:\r\n ruoyi-system-group: default\r\n config:\r\n type: nacos\r\n nacos:\r\n serverAddr: 120.26.46.180:8858\r\n group: SEATA_GROUP\r\n namespace:\r\n registry:\r\n type: nacos\r\n nacos:\r\n application: seata-server\r\n server-addr: 120.26.46.180:8858\r\n namespace: \r\n\r\nmybatis:\r\n typeAliasesPackage: com.xhpc.user\r\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\r\n mapperLocations: classpath:mapper/**/*.xml\r\n configuration:\r\n call-setters-on-nulls: true\r\n', 'a5bc394601350c323c9ebe171864089b', '2021-07-21 12:11:14', '2021-07-29 16:21:37', NULL, '0:0:0:0:0:0:0:1', '', '', 'null', 'null', 'null', 'yaml', 'null'),
|
||||
(20, 'xhpc-power-pile-dev.yml', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net\n port: 6379\n password: tingsun@7645313\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n\nseata:\n enabled: false\n application-id: ${spring.application.name}\n tx-service-group: ${spring.application.name}-group\n enable-auto-data-source-proxy: false\n service:\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848\n namespace: \n\nmybatis:\n typeAliasesPackage: com.xhpc.pp\n mapperLocations: classpath:mapper/**/*.xml\n', 'e1cad28a4df29955413fa360a40a03dc', '2021-07-19 06:40:44', '2021-07-23 09:05:47', 'nacos', '0:0:0:0:0:0:0:1', '', '', '充电桩协议服务', '', '', 'yaml', ''),
|
||||
(22, 'xhpc-charging-station-dev.yml', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net\n port: 6379\n password: tingsun@7645313\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n\nseata:\n enabled: false\n application-id: ${spring.application.name}\n tx-service-group: ${spring.application.name}-group\n enable-auto-data-source-proxy: false\n service:\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848\n namespace: \n\nmybatis:\n typeAliasesPackage: com.xhpc\n mapperLocations: classpath:mapper/**/*.xml\n', '5c9e25c8e8775649c0d5dcb5aed95715', '2021-07-19 08:22:12', '2021-07-28 08:51:17', 'nacos', '0:0:0:0:0:0:0:1', '', '', '', '', '', 'yaml', ''),
|
||||
(23, 'xhpc-general-dev.yml', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net\n port: 6379\n password: tingsun@7645313\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n\nseata:\n enabled: false\n application-id: ${spring.application.name}\n tx-service-group: ${spring.application.name}-group\n enable-auto-data-source-proxy: false\n service:\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848\n namespace: \n\nmybatis:\n typeAliasesPackage: com.xhpc.general\n mapperLocations: classpath:mapper/**/*.xml\n', 'c31f612a8d2c67dc69888b7c02bae5d0', '2021-07-20 20:39:06', '2021-07-21 10:03:06', 'nacos', '0:0:0:0:0:0:0:1', '', '', '', '', '', 'yaml', ''),
|
||||
(24, 'xhpc-user', 'DEFAULT_GROUP', 'spring: \r\n redis:\r\n host: tingsun-znc.f3322.net\r\n port: 6379\r\n password: tingsun@7645313 \r\n jackson:\r\n date-format: yyyy-MM-dd HH:mm:ss\r\n time-zone: GMT+8\r\n datasource:\r\n druid:\r\n stat-view-servlet:\r\n enabled: true\r\n loginUsername: admin\r\n loginPassword: 123456\r\n dynamic:\r\n druid:\r\n initial-size: 5\r\n min-idle: 5\r\n maxActive: 20\r\n maxWait: 60000\r\n timeBetweenEvictionRunsMillis: 60000\r\n minEvictableIdleTimeMillis: 300000\r\n validationQuery: SELECT 1 FROM DUAL\r\n testWhileIdle: true\r\n testOnBorrow: false\r\n testOnReturn: false\r\n poolPreparedStatements: true\r\n maxPoolPreparedStatementPerConnectionSize: 20\r\n filters: stat,slf4j\r\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\r\n datasource:\r\n master:\r\n driver-class-name: com.mysql.cj.jdbc.Driver\r\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n username: ry-cloud\r\n password: xiaohua123\r\n\r\nseata:\r\n enabled: false\r\n application-id: ${spring.application.name}\r\n tx-service-group: ${spring.application.name}-group\r\n enable-auto-data-source-proxy: false\r\n service:\r\n vgroup-mapping:\r\n ruoyi-system-group: default\r\n config:\r\n type: nacos\r\n nacos:\r\n serverAddr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848\r\n group: SEATA_GROUP\r\n namespace:\r\n registry:\r\n type: nacos\r\n nacos:\r\n application: seata-server\r\n server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848\r\n namespace: \r\n\r\nmybatis:\r\n typeAliasesPackage: com.xhpc.user\r\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\r\n mapperLocations: classpath:mapper/**/*.xml\r\n configuration:\r\n call-setters-on-nulls: true\r\n', 'a5bc394601350c323c9ebe171864089b', '2021-07-21 12:11:14', '2021-07-29 16:21:37', NULL, '0:0:0:0:0:0:0:1', '', '', 'null', 'null', 'null', 'yaml', 'null'),
|
||||
(32, 'xhpc-payment', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net\n port: 6379\n password: tingsun@7645313 \n jackson:\n date-format: yyyy-MM-dd HH:mm:ss\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n\nseata:\n enabled: false\n application-id: ${spring.application.name}\n tx-service-group: ${spring.application.name}-group\n enable-auto-data-source-proxy: false\n service:\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: 118.24.137.203:8848\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: 118.24.137.203:8848\n namespace: \n\nmybatis:\n typeAliasesPackage: com.xhpc.payment\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n configuration:\n call-setters-on-nulls: true\n', '406756afa55d157cb60305f89f29ec0c', '2021-07-22 16:44:26', '2021-07-22 11:10:56', 'nacos', '110.184.240.136', '', '', '', '', '', 'yaml', ''),
|
||||
(45, 'xhpc-order', 'DEFAULT_GROUP', 'spring: \r\n redis:\r\n host: tingsun-znc.f3322.net\r\n port: 6379\r\n password: tingsun@7645313 \r\n jackson:\r\n date-format: yyyy-MM-dd HH:mm:ss\r\n datasource:\r\n druid:\r\n stat-view-servlet:\r\n enabled: true\r\n loginUsername: admin\r\n loginPassword: 123456\r\n dynamic:\r\n druid:\r\n initial-size: 5\r\n min-idle: 5\r\n maxActive: 20\r\n maxWait: 60000\r\n timeBetweenEvictionRunsMillis: 60000\r\n minEvictableIdleTimeMillis: 300000\r\n validationQuery: SELECT 1 FROM DUAL\r\n testWhileIdle: true\r\n testOnBorrow: false\r\n testOnReturn: false\r\n poolPreparedStatements: true\r\n maxPoolPreparedStatementPerConnectionSize: 20\r\n filters: stat,slf4j\r\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\r\n datasource:\r\n master:\r\n driver-class-name: com.mysql.cj.jdbc.Driver\r\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n username: ry-cloud\r\n password: xiaohua123\r\n\r\nseata:\r\n enabled: false\r\n application-id: ${spring.application.name}\r\n tx-service-group: ${spring.application.name}-group\r\n enable-auto-data-source-proxy: false\r\n service:\r\n vgroup-mapping:\r\n ruoyi-system-group: default\r\n config:\r\n type: nacos\r\n nacos:\r\n serverAddr: 120.26.46.180:8858\r\n group: SEATA_GROUP\r\n namespace:\r\n registry:\r\n type: nacos\r\n nacos:\r\n application: seata-server\r\n server-addr: 120.26.46.180:8858\r\n namespace: \r\n\r\nmybatis:\r\n typeAliasesPackage: com.xhpc.order\r\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\r\n mapperLocations: classpath:mapper/**/*.xml\r\n configuration:\r\n call-setters-on-nulls: true\r\n', 'dda0f504b5a217c72b8e9cc62f449da5', '2021-07-26 15:35:37', '2021-07-26 15:35:37', NULL, '0:0:0:0:0:0:0:1', '', '', NULL, NULL, NULL, 'yaml', NULL);
|
||||
(45, 'xhpc-order', 'DEFAULT_GROUP', 'spring: \r\n redis:\r\n host: tingsun-znc.f3322.net\r\n port: 6379\r\n password: tingsun@7645313 \r\n jackson:\r\n date-format: yyyy-MM-dd HH:mm:ss\r\n datasource:\r\n druid:\r\n stat-view-servlet:\r\n enabled: true\r\n loginUsername: admin\r\n loginPassword: 123456\r\n dynamic:\r\n druid:\r\n initial-size: 5\r\n min-idle: 5\r\n maxActive: 20\r\n maxWait: 60000\r\n timeBetweenEvictionRunsMillis: 60000\r\n minEvictableIdleTimeMillis: 300000\r\n validationQuery: SELECT 1 FROM DUAL\r\n testWhileIdle: true\r\n testOnBorrow: false\r\n testOnReturn: false\r\n poolPreparedStatements: true\r\n maxPoolPreparedStatementPerConnectionSize: 20\r\n filters: stat,slf4j\r\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\r\n datasource:\r\n master:\r\n driver-class-name: com.mysql.cj.jdbc.Driver\r\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n username: ry-cloud\r\n password: xiaohua123\r\n\r\nseata:\r\n enabled: false\r\n application-id: ${spring.application.name}\r\n tx-service-group: ${spring.application.name}-group\r\n enable-auto-data-source-proxy: false\r\n service:\r\n vgroup-mapping:\r\n ruoyi-system-group: default\r\n config:\r\n type: nacos\r\n nacos:\r\n serverAddr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848\r\n group: SEATA_GROUP\r\n namespace:\r\n registry:\r\n type: nacos\r\n nacos:\r\n application: seata-server\r\n server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848\r\n namespace: \r\n\r\nmybatis:\r\n typeAliasesPackage: com.xhpc.order\r\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\r\n mapperLocations: classpath:mapper/**/*.xml\r\n configuration:\r\n call-setters-on-nulls: true\r\n', 'dda0f504b5a217c72b8e9cc62f449da5', '2021-07-26 15:35:37', '2021-07-26 15:35:37', NULL, '0:0:0:0:0:0:0:1', '', '', NULL, NULL, NULL, 'yaml', NULL);
|
||||
/*!40000 ALTER TABLE `config_info` ENABLE KEYS */;
|
||||
|
||||
/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
|
||||
|
||||
@ -37,7 +37,10 @@ public class PileLogController extends BaseController {
|
||||
@RequestParam(required = false) String stationName,
|
||||
@RequestParam(required = false) String pileName,
|
||||
@RequestParam(required = false) String pileSerialNumber,
|
||||
@RequestParam(required = false) Integer number) {
|
||||
@RequestParam(required = false) Integer number,
|
||||
@RequestParam(required = false) Long operatorId,
|
||||
@RequestParam(required = false) Long chargingStationId,
|
||||
@RequestParam(required = false) Long chargingPileId) {
|
||||
|
||||
LoginUser loginUser = logUserUtils.getLogUser(request);
|
||||
|
||||
@ -46,7 +49,9 @@ public class PileLogController extends BaseController {
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
params.put("stationName", stationName);
|
||||
params.put("pileName", pileName);
|
||||
params.put("operatorId", SecurityUtils.getUserId());
|
||||
params.put("operatorId", operatorId);
|
||||
params.put("chargingStationId", chargingStationId);
|
||||
params.put("chargingPileId", chargingPileId);
|
||||
params.put("number", number);
|
||||
params.put("pileSerialNumber", pileSerialNumber);
|
||||
params.put("tenantId", loginUser.getTenantId());
|
||||
|
||||
@ -25,10 +25,11 @@ public class StationLogController extends BaseController {
|
||||
public TableDataInfo getPilePage(
|
||||
HttpServletRequest request,
|
||||
@RequestParam(required = false) String tenantId,
|
||||
@RequestParam(required = false) Integer number) {
|
||||
@RequestParam(required = false) Integer number,
|
||||
@RequestParam(required = false) Long operatorId) {
|
||||
startPage();
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
params.put("operatorId", SecurityUtils.getUserId());
|
||||
params.put("operatorId", operatorId);
|
||||
params.put("number", number);
|
||||
params.put("tenantId", tenantId);
|
||||
return getDataTable(stationLogService.getStationPage(request,params));
|
||||
|
||||
@ -19,6 +19,11 @@ public interface XhpcChargingPileMapper {
|
||||
*/
|
||||
List<Map<String, Object>> selectXhpcChargingPileList(@Param("params")Map params);
|
||||
|
||||
/**
|
||||
* 获取登陆用户信息
|
||||
*/
|
||||
Map<String, Object> getLandUser(@Param("userId")Long userId);
|
||||
|
||||
/**
|
||||
* 终端
|
||||
*
|
||||
|
||||
@ -3,21 +3,27 @@ package com.xhpc.activity.service.impl;
|
||||
import cn.hutool.core.io.IoUtil;
|
||||
import cn.hutool.poi.excel.ExcelUtil;
|
||||
import cn.hutool.poi.excel.ExcelWriter;
|
||||
import com.xhpc.common.core.web.service.BaseService;
|
||||
import com.xhpc.common.enums.StationDeviceEnum;
|
||||
import com.xhpc.activity.mapper.XhpcChargingPileMapper;
|
||||
import com.xhpc.activity.mapper.XhpcDeviceMessageMapper;
|
||||
import com.xhpc.activity.service.PileLogService;
|
||||
import com.xhpc.common.security.service.TokenService;
|
||||
import com.xhpc.common.util.UserTypeUtil;
|
||||
import com.xhpc.system.api.model.LoginUser;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.ServletOutputStream;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
@Service
|
||||
public class PileLogServiceImpl implements PileLogService {
|
||||
public class PileLogServiceImpl extends BaseService implements PileLogService {
|
||||
|
||||
@Resource
|
||||
XhpcChargingPileMapper pileMapper;
|
||||
@ -25,10 +31,44 @@ public class PileLogServiceImpl implements PileLogService {
|
||||
@Resource
|
||||
XhpcDeviceMessageMapper deviceMessageMapper;
|
||||
|
||||
@Resource
|
||||
private TokenService tokenService;
|
||||
@Override
|
||||
public List<Map<String, Object>> getPilePage(Map<String, Object> params){
|
||||
LoginUser loginUser = tokenService.getLoginUser();
|
||||
|
||||
Long userId = loginUser.getUserid();
|
||||
//桩的统计、该时段金额
|
||||
List<Map<String, Object>> list = new ArrayList<>();
|
||||
if (userId != UserTypeUtil.USER_ID) {
|
||||
Map<String, Object> landUser = pileMapper.getLandUser(userId);
|
||||
if (landUser != null) {
|
||||
if (landUser.get("userType") != null) {
|
||||
startPage();
|
||||
if (UserTypeUtil.SYS_USER_TYPE_ONE.equals(landUser.get("userType").toString())) {
|
||||
Long logOperatorId = Long.valueOf(landUser.get("operatorId").toString());
|
||||
|
||||
params.put("logOperatorId", logOperatorId);
|
||||
params.put("status", 1);
|
||||
//运营商看自己的场站
|
||||
list = pileMapper.selectXhpcChargingPileList(params);
|
||||
} else {
|
||||
params.put("logOperatorId", userId);
|
||||
params.put("status", 2);
|
||||
//查询赋值的场站
|
||||
list = pileMapper.selectXhpcChargingPileList(params);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
startPage();
|
||||
params.put("logOperatorId", userId);
|
||||
params.put("status", 0);
|
||||
list = pileMapper.selectXhpcChargingPileList(params);
|
||||
}
|
||||
return list;
|
||||
|
||||
return pileMapper.selectXhpcChargingPileList(params);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -34,24 +34,32 @@ public class StationLogServiceImpl extends BaseService implements StationLogServ
|
||||
Long sysUserId = sysUser.getUserId();
|
||||
//桩的统计、该时段金额
|
||||
List<Map<String, Object>> list =new ArrayList<>();
|
||||
|
||||
if(!UserTypeUtil.SYS_USER_TYPE_ADMIN.equals(sysUser.getUserId())){
|
||||
if(UserTypeUtil.SYS_USER_TYPE_ONE.equals(sysUser.getUserType())){
|
||||
Long operatorId = sysUser.getOperatorId();
|
||||
params.put("type",1);
|
||||
params.put("operatorId",operatorId);
|
||||
//运营商看自己的场站
|
||||
list = stationMapper.selectXhpcChargingStationList(params);
|
||||
if(UserTypeUtil.SYS_USER_TYPE_FOUR.equals(sysUser.getUserType())){
|
||||
//运维管理人员
|
||||
startPage();
|
||||
params.put("type",2);
|
||||
params.put("operatorId",sysUserId);
|
||||
list = stationMapper.selectXhpcChargingStationList(params);
|
||||
}else{
|
||||
if(sysUser.getUserId() !=UserTypeUtil.USER_ID){
|
||||
Long logOperatorId = sysUser.getOperatorId();
|
||||
startPage();
|
||||
if ("01".equals(sysUser.getUserType())) {
|
||||
params.put("type",1);
|
||||
params.put("operatorId",logOperatorId);
|
||||
//运营商看自己的场站
|
||||
list = stationMapper.selectXhpcChargingStationList(params);
|
||||
}else{
|
||||
startPage();
|
||||
params.put("type",2);
|
||||
params.put("operatorId",sysUserId);
|
||||
list = stationMapper.selectXhpcChargingStationList(params);
|
||||
}
|
||||
}else{
|
||||
//查询赋值的场站
|
||||
params.put("type",2);
|
||||
params.put("operatorId",sysUserId);
|
||||
startPage();
|
||||
params.put("type",0);
|
||||
list = stationMapper.selectXhpcChargingStationList(params);
|
||||
}
|
||||
}else{
|
||||
startPage();
|
||||
params.put("type",0);
|
||||
list = stationMapper.selectXhpcChargingStationList(params);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
@ -86,20 +86,17 @@
|
||||
from xhpc_charging_pile as cp
|
||||
left join xhpc_charging_station as st on st.charging_station_id =cp.charging_station_id
|
||||
where cp.del_flag =0
|
||||
<!-- <if test="name !=null and name !=''">-->
|
||||
<!-- and cp.name like CONCAT('%',#{name},'%')-->
|
||||
<!-- </if>-->
|
||||
<!-- <if test="type !=null and type !=''">-->
|
||||
<!-- and cp.type=#{type}-->
|
||||
<!-- </if>-->
|
||||
<!-- <if test="serialNumber !=null and serialNumber!=''">-->
|
||||
<!-- and cp.serial_number=#{serialNumber}-->
|
||||
<!-- </if>-->
|
||||
<!-- <if test="chargingStationId !=null and chargingStationId!=''">-->
|
||||
<!-- and cp.charging_station_id=#{chargingStationId}-->
|
||||
<!-- </if>-->
|
||||
<if test="params.operatorId !=null">
|
||||
and cp.charging_station_id in (select charging_station_id from xhpc_charging_station where operator_id=#{params.operatorId})
|
||||
</if>
|
||||
<if test="params.chargingStationId !=null">
|
||||
and st.charging_station_id=#{params.chargingStationId}
|
||||
</if>
|
||||
<if test="params.chargingPileId !=null">
|
||||
and cp.charging_pile_id=#{params.chargingPileId}
|
||||
</if>
|
||||
<if test="params.pileSerialNumber!=null and params.pileSerialNumber!=''">
|
||||
and cp.serial_number = #{params.pileSerialNumber}
|
||||
and cp.serial_number like CONCAT('%',#{params.pileSerialNumber},'%')
|
||||
</if>
|
||||
<if test="params.pileName!=null and params.pileName!=''">
|
||||
and concat(cp.name,'号桩') like concat ('%', #{params.pileName},'%')
|
||||
@ -107,11 +104,11 @@
|
||||
<if test="params.stationName!=null and params.stationName!=''">
|
||||
and st.name like CONCAT('%',#{params.stationName},'%')
|
||||
</if>
|
||||
<if test="params.number !=0 and params.number ==1">
|
||||
and cp.charging_station_id in(select charging_station_id from xhpc_charging_station where operator_id=#{params.operatorId})
|
||||
<if test="params.status==1">
|
||||
and cp.charging_station_id in (select charging_station_id from xhpc_charging_station where operator_id=#{params.logOperatorId})
|
||||
</if>
|
||||
<if test="params.number !=0 and params.number ==2">
|
||||
and cp.charging_station_id in(select charging_station_id from xhpc_user_privilege where user_id=#{params.operatorId})
|
||||
<if test="params.status==2">
|
||||
and cp.charging_station_id in (select charging_station_id from xhpc_user_privilege where user_id=#{params.logOperatorId})
|
||||
</if>
|
||||
<if test="params.tenantId != null and params.tenantId != ''">
|
||||
and cp.tenant_id = #{params.tenantId}
|
||||
@ -119,6 +116,10 @@
|
||||
order by cp.charging_station_id, cp.charging_pile_id
|
||||
</select>
|
||||
|
||||
<select id="getLandUser" resultType="map">
|
||||
select user_id as userId,user_type as userType,operator_id as operatorId from sys_user where user_id =#{userId}
|
||||
</select>
|
||||
|
||||
<insert id="addXhpcChargingPile" parameterType="com.xhpc.common.domain.XhpcChargingPile" useGeneratedKeys="true"
|
||||
keyProperty="chargingPileId">
|
||||
insert into xhpc_charging_pile
|
||||
|
||||
@ -94,7 +94,11 @@ public class XhpcCardServiceImpl implements IXhpcCardService {
|
||||
String tenantId=xhpcIcCardInfo.getTenantId();
|
||||
Integer type =Integer.valueOf(iccardInfo.getCardtype());//改成卡授权的类型
|
||||
String grantOperator=iccardInfo.getCorpno();//改成卡授权的运营商
|
||||
return cardHistoryOrderService.cardStartup(userId, serialNumber, userType,tenantId,type,grantOperator,rateModelId);
|
||||
R r = cardHistoryOrderService.cardStartup(userId, serialNumber, userType, tenantId, type, grantOperator, rateModelId);
|
||||
|
||||
System.out.println("===============<<<<卡启动充电返回>>>>>==================="+r.getMsg());
|
||||
System.out.println("===============<<<<卡启动充电返回>>>>>==================="+r.getCode());
|
||||
return r;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -116,6 +120,9 @@ public class XhpcCardServiceImpl implements IXhpcCardService {
|
||||
dataDTO.setDeviceNumber(tIccardDevice.getSerialnumber());
|
||||
Integer corpindex = tIccardDevice.getCorpindex();
|
||||
if (corpindex != null) {
|
||||
System.out.println("======corpindex===="+corpindex);
|
||||
System.out.println("======corpindex===="+corpindex);
|
||||
System.out.println("======corpindex===="+corpindex);
|
||||
XhpcOperator xhpcOperator = xhpcOperatorMapper.selectOneByCorpNoAndTenantId(String.valueOf(corpindex), tokenService.getLoginUser().getSysUser().getTenantId());
|
||||
dataDTO.setGrantOperator(xhpcOperator.getName());
|
||||
}
|
||||
|
||||
@ -14,10 +14,10 @@ spring:
|
||||
nacos:
|
||||
discovery:
|
||||
# 服务注册地址
|
||||
server-addr: 172.31.183.135:8848
|
||||
server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848
|
||||
config:
|
||||
# 配置中心地址
|
||||
server-addr: 172.31.183.135:8848
|
||||
server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848
|
||||
# 配置文件格式
|
||||
file-extension: yml
|
||||
# 共享配置
|
||||
|
||||
@ -207,7 +207,7 @@
|
||||
<select id="getIccardInfoCardno" resultType="com.xhpc.common.domain.IccardInfo">
|
||||
select *
|
||||
from t_iccard_info
|
||||
where cardNo = #{cardno}
|
||||
where cardID = #{cardno}
|
||||
order by createTime desc limit 1
|
||||
</select>
|
||||
|
||||
|
||||
@ -0,0 +1,87 @@
|
||||
package com.xhpc.charging.station.controller;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.excel.EasyExcel;
|
||||
import com.xhpc.charging.station.service.IXhpcBarrierGateRecordService;
|
||||
import com.xhpc.common.core.domain.R;
|
||||
import com.xhpc.common.core.web.controller.BaseController;
|
||||
import com.xhpc.common.core.web.page.TableDataInfo;
|
||||
import com.xhpc.common.dto.XhpcBarrierGateRecordExcel;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.apache.commons.codec.Charsets;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/barrierGateRecord")
|
||||
public class XhpcBarrierGateRecordController extends BaseController {
|
||||
|
||||
@Resource
|
||||
private IXhpcBarrierGateRecordService xhpcBarrierGateRecordService;
|
||||
|
||||
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(String barrierGateCompany, String chargingStationName, String phone,
|
||||
String plateNum, String serialNumber, String internetSerialNumber,
|
||||
Integer status, String startTime, String endTime){
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
params.put("barrierGateCompany", barrierGateCompany);
|
||||
params.put("chargingStationName", chargingStationName);
|
||||
params.put("phone", phone);
|
||||
params.put("plateNum", plateNum);
|
||||
params.put("serialNumber", serialNumber);
|
||||
params.put("internetSerialNumber", internetSerialNumber);
|
||||
params.put("status", status);
|
||||
params.put("startTime", startTime);
|
||||
params.put("endTime", endTime);
|
||||
List<Map<String, Object>> list = xhpcBarrierGateRecordService.getLsit(params);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
@GetMapping("/getXhpcBarrierGateRecordById")
|
||||
public R getXhpcBarrierGateRecordById(Long barrierGateRecordId) {
|
||||
Map<String, Object> map = xhpcBarrierGateRecordService.getXhpcBarrierGateRecordById(barrierGateRecordId);
|
||||
return R.ok(map);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出数据(单位)
|
||||
*/
|
||||
@PostMapping("/export")
|
||||
@ApiOperation(value = "导出数据", notes = "传入channelInfo")
|
||||
public void export(String barrierGateCompany, String chargingStationName, String phone,
|
||||
String plateNum, String serialNumber, String internetSerialNumber,
|
||||
Integer status, String startTime, String endTime, HttpServletResponse response) {
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
params.put("barrierGateCompany", barrierGateCompany);
|
||||
params.put("chargingStationName", chargingStationName);
|
||||
params.put("phone", phone);
|
||||
params.put("plateNum", plateNum);
|
||||
params.put("serialNumber", serialNumber);
|
||||
params.put("internetSerialNumber", internetSerialNumber);
|
||||
params.put("status", status);
|
||||
params.put("startTime", startTime);
|
||||
params.put("endTime", endTime);
|
||||
List<XhpcBarrierGateRecordExcel> list = xhpcBarrierGateRecordService.export(params);
|
||||
try {
|
||||
response.setContentType("application/vnd.ms-excel");
|
||||
response.setCharacterEncoding(Charsets.UTF_8.name());
|
||||
String fileName = URLEncoder.encode("道闸记录", Charsets.UTF_8.name());
|
||||
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
|
||||
EasyExcel.write(response.getOutputStream(), XhpcBarrierGateRecordExcel.class).sheet("道闸记录").doWrite(list);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -27,6 +27,8 @@ import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.xhpc.common.data.redis.StaticBeanUtil.REDIS;
|
||||
|
||||
/**
|
||||
* @author yuyang
|
||||
* @date 2021/7/27 14:44
|
||||
@ -229,5 +231,24 @@ public class XhpcChargingPileController extends BaseController {
|
||||
return xhpcChargingPileService.getChargingPileSerialNumber(serialNumber);
|
||||
}
|
||||
|
||||
//充电桩工作参数设置
|
||||
@GetMapping("/configSettings")
|
||||
public AjaxResult configSettings(String serialNumber,Integer powerNumber) {
|
||||
|
||||
if(serialNumber==null || "".equals(serialNumber)){
|
||||
return AjaxResult.error("桩号为空");
|
||||
}
|
||||
if(powerNumber==null){
|
||||
return AjaxResult.error("充电桩最大允许输出功率为空");
|
||||
}
|
||||
if(powerNumber<1 || powerNumber>100){
|
||||
return AjaxResult.error("充电桩最大允许输出功率1~100之内");
|
||||
}
|
||||
REDIS.setCacheObject(serialNumber+":powerNumber",powerNumber);
|
||||
R r = powerPileService.pileConfigSettings(serialNumber,powerNumber.toString());
|
||||
if(r.getCode() !=200){
|
||||
return AjaxResult.error(r.getMsg());
|
||||
}
|
||||
return AjaxResult.success("设置成功");
|
||||
}
|
||||
}
|
||||
|
||||
@ -11,6 +11,7 @@ import com.xhpc.common.log.annotation.Log;
|
||||
import com.xhpc.common.log.enums.BusinessType;
|
||||
import com.xhpc.common.security.annotation.PreAuthorize;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
@ -228,4 +229,14 @@ public class XhpcChargingStationController extends BaseController {
|
||||
public R getNotificationStationInfo(Long stationId){
|
||||
return xhpcChargingStationService.getNotificationStationInfo(stationId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 定时获取场站允许充电方式
|
||||
*/
|
||||
@GetMapping("/chargingMethod")
|
||||
@Scheduled(cron = "0 0/5 * * * ? ")
|
||||
public void chargingMethod(){
|
||||
xhpcChargingStationService.getchargingMethodList();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,86 @@
|
||||
package com.xhpc.charging.station.controller;
|
||||
|
||||
import com.xhpc.charging.station.service.IXhpcTimingChargingPowerService;
|
||||
import com.xhpc.common.core.domain.R;
|
||||
import com.xhpc.common.core.web.controller.BaseController;
|
||||
import com.xhpc.common.core.web.page.TableDataInfo;
|
||||
import com.xhpc.common.domain.XhpcTimingChargingPowerModel;
|
||||
import com.xhpc.common.log.annotation.Log;
|
||||
import com.xhpc.common.log.enums.BusinessType;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/timingChargingPower")
|
||||
public class XhpcTimingChargingPowerController extends BaseController {
|
||||
|
||||
|
||||
@Resource
|
||||
private IXhpcTimingChargingPowerService xhpcTimingChargingPowerService;
|
||||
|
||||
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(HttpServletRequest request, String tenantId, Long operatorId, String reason, Integer status, String startTime, String endTime, Long chargingStationId) {
|
||||
startPage();
|
||||
List<Map<String, Object>> list = xhpcTimingChargingPowerService.list(request,tenantId,operatorId,reason, status, startTime,endTime, chargingStationId);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 添加定时功率调整
|
||||
* @param xhpcTimingChargingPowerModel
|
||||
* @return
|
||||
*/
|
||||
@Log(title = "添加定时功率调整", businessType = BusinessType.INSERT)
|
||||
@PostMapping(value = "/addXhpcTimingChargingPowerModel")
|
||||
public R addXhpcTimingChargingModel(HttpServletRequest request, @RequestBody XhpcTimingChargingPowerModel xhpcTimingChargingPowerModel) {
|
||||
return xhpcTimingChargingPowerService.addXhpcTimingChargingPowerModel(request,xhpcTimingChargingPowerModel);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*/
|
||||
@Log(title = "删除", businessType = BusinessType.UPDATE)
|
||||
@DeleteMapping("/{timingChargingPowerId}")
|
||||
public R updateXhpcTimingChargingModel(@PathVariable Long timingChargingPowerId) {
|
||||
return xhpcTimingChargingPowerService.updateXhpcTimingChargingPowerModel(timingChargingPowerId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 详情
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@GetMapping(value = "/getXhpcTimingChargingPowerModelMessage")
|
||||
public R getXhpcTimingChargingPowerModelMessage(Long timingChargingPowerId) {
|
||||
return xhpcTimingChargingPowerService.getXhpcTimingChargingPowerModelMessage(timingChargingPowerId);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 编辑定时计费模型
|
||||
* @param xhpcTimingChargingPowerModel
|
||||
* @return
|
||||
*/
|
||||
@Log(title = "编辑定时功率调整", businessType = BusinessType.INSERT)
|
||||
@PostMapping(value = "/updateXhpcTimingChargingPowerModel")
|
||||
public R updateXhpcTimingChargingPowerModel(HttpServletRequest request, @RequestBody XhpcTimingChargingPowerModel xhpcTimingChargingPowerModel) {
|
||||
return xhpcTimingChargingPowerService.addXhpcTimingChargingPowerModel(request,xhpcTimingChargingPowerModel);
|
||||
}
|
||||
|
||||
/**
|
||||
* 每30秒执行一次
|
||||
*/
|
||||
//@Scheduled(cron = "0/30 * * * * ?")
|
||||
@PostMapping(value = "/getXhpcTimingChargingPowerModelCron")
|
||||
public void getXhpcTimingChargingPowerModelCron(){
|
||||
xhpcTimingChargingPowerService.getXhpcTimingChargingPowerModelCron();
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
package com.xhpc.charging.station.mapper;
|
||||
|
||||
import com.xhpc.common.dto.XhpcBarrierGateRecordExcel;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public interface XhpcBarrierGateRecordMapper {
|
||||
|
||||
List<Map<String,Object>> getLsit(@Param("params")Map<String, Object> params);
|
||||
|
||||
List<XhpcBarrierGateRecordExcel> export(@Param("params")Map<String, Object> params);
|
||||
Map<String,Object> getXhpcBarrierGateRecordById(@Param("barrierGateRecordId")Long barrierGateRecordId);
|
||||
}
|
||||
@ -127,4 +127,7 @@ public interface XhpcChargingPileMapper {
|
||||
* @return
|
||||
*/
|
||||
int xhpcTerminalSataus(@Param("chargingPileId") Long chargingPileId,@Param("status") Integer status,@Param("prompt")String prompt);
|
||||
|
||||
|
||||
void updateXhpcChargingPile(@Param("serialNumber")String serialNumber,@Param("powerNumber")Integer powerNumber);
|
||||
}
|
||||
|
||||
@ -278,4 +278,7 @@ public interface XhpcChargingStationMapper {
|
||||
//获取运营商信息
|
||||
Map<String, Object> getXhpcOperator(@Param("operatorId") Long operatorId);
|
||||
|
||||
|
||||
List<Map<String,Object>> getchargingMethodList();
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,24 @@
|
||||
package com.xhpc.charging.station.mapper;
|
||||
|
||||
import com.xhpc.common.domain.XhpcTimingChargingPowerModel;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public interface XhpcTimingChargingPowerMapper {
|
||||
|
||||
List<Map<String, Object>> list(@Param("operatorId")Long operatorId, @Param("reason")String reason, @Param("status") Integer status, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("chargingStationId") Long chargingStationId, @Param("logOperatorId")Long logOperatorId, @Param("type")Integer type, @Param("tenantId")String tenantId);
|
||||
|
||||
int insertXhpcTimingChargingPowerModel(XhpcTimingChargingPowerModel xhpcTimingChargingPowerModel);
|
||||
|
||||
XhpcTimingChargingPowerModel getXhpcTimingChargingPowerModelById(@Param("timingChargingPowerId")Long timingChargingPowerId, @Param("tenantId")String tenantId);
|
||||
|
||||
int updateXhpcTimingChargingPowerModel(XhpcTimingChargingPowerModel xhpcTimingChargingPowerModel);
|
||||
|
||||
List<XhpcTimingChargingPowerModel> getXhpcTimingChargingPowerModelCron();
|
||||
|
||||
String getXhpcChargingPile(@Param("chargingPileId")Long chargingPileId,@Param("chargingStationId")Long chargingStationId);
|
||||
|
||||
void updateXhpcChargingPile(@Param("chargingPileId")Long chargingPileId,@Param("powerNumber")Integer powerNumber);
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
package com.xhpc.charging.station.service;
|
||||
|
||||
import com.xhpc.common.dto.XhpcBarrierGateRecordExcel;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public interface IXhpcBarrierGateRecordService {
|
||||
|
||||
List<Map<String, Object>> getLsit(Map<String, Object> params);
|
||||
|
||||
List<XhpcBarrierGateRecordExcel> export(Map<String, Object> params);
|
||||
Map<String, Object> getXhpcBarrierGateRecordById(Long barrierGateRecordId );
|
||||
}
|
||||
@ -89,4 +89,6 @@ public interface IXhpcChargingPileService {
|
||||
|
||||
|
||||
R getChargingPileSerialNumber(String serialNumber);
|
||||
|
||||
void updateXhpcChargingPilePowerNumber(String serialNumber,Integer powerNumber);
|
||||
}
|
||||
|
||||
@ -256,4 +256,7 @@ public interface IXhpcChargingStationService {
|
||||
|
||||
R getNotificationStationInfo(Long stationId);
|
||||
|
||||
|
||||
void getchargingMethodList();
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,21 @@
|
||||
package com.xhpc.charging.station.service;
|
||||
|
||||
import com.xhpc.common.core.domain.R;
|
||||
import com.xhpc.common.domain.XhpcTimingChargingPowerModel;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public interface IXhpcTimingChargingPowerService {
|
||||
|
||||
List<Map<String, Object>> list(HttpServletRequest request, String tenantId, Long operatorId, String reason, Integer status, String startTime, String endTime, Long chargingStationId);
|
||||
|
||||
R addXhpcTimingChargingPowerModel(HttpServletRequest request, XhpcTimingChargingPowerModel xhpcTimingChargingPowerModel);
|
||||
|
||||
R updateXhpcTimingChargingPowerModel(Long timingChargingPowerId);
|
||||
|
||||
R getXhpcTimingChargingPowerModelMessage(Long timingChargingPowerId);
|
||||
|
||||
R getXhpcTimingChargingPowerModelCron();
|
||||
}
|
||||
@ -0,0 +1,33 @@
|
||||
package com.xhpc.charging.station.service;
|
||||
|
||||
import com.xhpc.charging.station.mapper.XhpcBarrierGateRecordMapper;
|
||||
import com.xhpc.common.core.web.service.BaseService;
|
||||
import com.xhpc.common.dto.XhpcBarrierGateRecordExcel;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Service
|
||||
public class XhpcBarrierGateRecordServiceImpl extends BaseService implements IXhpcBarrierGateRecordService {
|
||||
|
||||
@Resource
|
||||
private XhpcBarrierGateRecordMapper xhpcBarrierGateRecordMapper;
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> getLsit(Map<String, Object> params) {
|
||||
startPage();
|
||||
return xhpcBarrierGateRecordMapper.getLsit(params);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<XhpcBarrierGateRecordExcel> export(Map<String, Object> params) {
|
||||
return xhpcBarrierGateRecordMapper.export(params);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getXhpcBarrierGateRecordById(Long barrierGateRecordId) {
|
||||
return xhpcBarrierGateRecordMapper.getXhpcBarrierGateRecordById(barrierGateRecordId);
|
||||
}
|
||||
}
|
||||
@ -39,9 +39,7 @@ import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLDecoder;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ArrayBlockingQueue;
|
||||
import java.util.concurrent.ThreadPoolExecutor;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.*;
|
||||
|
||||
import static com.aliyun.oss.internal.OSSConstants.URL_ENCODING;
|
||||
|
||||
@ -71,6 +69,7 @@ public class XhpcChargingPileServiceImpl extends BaseService implements IXhpcCha
|
||||
@Autowired
|
||||
RedisService redisService;
|
||||
|
||||
private final ExecutorService executorService = Executors.newFixedThreadPool(20);
|
||||
//字母集合
|
||||
private static Map letterMap;
|
||||
|
||||
@ -189,16 +188,21 @@ public class XhpcChargingPileServiceImpl extends BaseService implements IXhpcCha
|
||||
addXhpcTerminal(xhpcChargingPile.getName(), chargingStationId, rateModelId, serialNumber, chargingPileId, i, number + 1, xhpcChargingPile.getConnectorType(),tenantId);
|
||||
}
|
||||
}
|
||||
executorService.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
Thread.sleep(3000);
|
||||
//插入redis 桩的编号
|
||||
HashSet<String> noSet = new HashSet<>();
|
||||
noSet.add(serialNumber);
|
||||
R r = powerPileService.addPileWhitelist(chargingStationId, xhpcChargingPile.getCommunicationProtocolVersion(), noSet);
|
||||
} catch (InterruptedException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
//插入redis 桩的编号
|
||||
HashSet<String> noSet = new HashSet<>();
|
||||
noSet.add(serialNumber);
|
||||
R r = powerPileService.addPileWhitelist(chargingStationId, xhpcChargingPile.getCommunicationProtocolVersion(), noSet);
|
||||
if (r.getCode() != 200) {
|
||||
//数据回滚-手动回滚
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
return AjaxResult.error("添加桩入缓存失败,请稍后在试");
|
||||
}
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@ -289,14 +293,21 @@ public class XhpcChargingPileServiceImpl extends BaseService implements IXhpcCha
|
||||
}else{
|
||||
Long chargingStationId = xhpcChargingPile.getChargingStationId();
|
||||
String serialNumber = xhpcChargingPile.getSerialNumber();
|
||||
HashSet<String> noSet = new HashSet<>();
|
||||
noSet.add(serialNumber);
|
||||
R r = powerPileService.addPileWhitelist(chargingStationId, xhpcChargingPile.getCommunicationProtocolVersion(), noSet);
|
||||
if (r.getCode() != 200) {
|
||||
//数据回滚-手动回滚
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
return AjaxResult.error("添加桩入缓存失败,请稍后在试");
|
||||
}
|
||||
|
||||
executorService.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
Thread.sleep(3000);
|
||||
HashSet<String> noSet = new HashSet<>();
|
||||
noSet.add(serialNumber);
|
||||
R r = powerPileService.addPileWhitelist(chargingStationId, xhpcChargingPile.getCommunicationProtocolVersion(), noSet);
|
||||
} catch (InterruptedException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
xhpcChargingPileMapper.updaeXhpcChargingPile(xhpcChargingPile);
|
||||
|
||||
@ -627,4 +638,9 @@ public class XhpcChargingPileServiceImpl extends BaseService implements IXhpcCha
|
||||
return R.ok(xhpc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateXhpcChargingPilePowerNumber(String serialNumber, Integer powerNumber) {
|
||||
xhpcChargingPileMapper.updateXhpcChargingPile(serialNumber,powerNumber);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -390,6 +390,9 @@ public class XhpcChargingStationServiceImpl extends BaseService implements IXhpc
|
||||
if (xhpcChargingStationDto.getParkNums() == null) {
|
||||
return AjaxResult.error(1001, "侧位数量不能为空");
|
||||
}
|
||||
if (xhpcChargingStationDto.getChargingMethod() == null) {
|
||||
return AjaxResult.error(1001, "允许充电方式为空");
|
||||
}
|
||||
|
||||
//判断费率和费率时间段 是否有值
|
||||
if (xhpcChargingStationDto.getXhpcRateList() == null && xhpcChargingStationDto.getXhpcRateList().size() == 0) {
|
||||
@ -692,10 +695,16 @@ public class XhpcChargingStationServiceImpl extends BaseService implements IXhpc
|
||||
powerPileService.getNotificationStationFee(chargingStationId);
|
||||
//生成场站推送数据信息
|
||||
powerPileService.addNotificationStationInfo(chargingStationId);
|
||||
//生成场站运行充电方式
|
||||
Map<String, Object> chargingMethodMap =new HashMap<>();
|
||||
String[] split = xhpcChargingStation.getChargingMethod().split(",");
|
||||
for (int k = 0; k <split.length ; k++) {
|
||||
String s = split[k];
|
||||
chargingMethodMap.put(s,s);
|
||||
}
|
||||
redisService.setCacheMap("chargingMethod:"+chargingStationId,chargingMethodMap);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//修改桩和终端的模板id
|
||||
xhpcChargingStationMapper.updateXhpcChargingPile(chargingStationId,rateModelId);
|
||||
xhpcChargingStationMapper.updateXhpcTerminal(chargingStationId,rateModelId);
|
||||
@ -1071,15 +1080,26 @@ public class XhpcChargingStationServiceImpl extends BaseService implements IXhpc
|
||||
if (xhpcChargingStation.getName().length()> 50) {
|
||||
return AjaxResult.error(1001, "电站名称不能超过50字");
|
||||
}
|
||||
if (xhpcChargingStation.getChargingMethod() == null) {
|
||||
return AjaxResult.error(1001, "允许充电方式为空");
|
||||
}
|
||||
xhpcChargingStation.setServiceFee(xhpcChargingStation.getServiceFeeDescribe());
|
||||
//获取之前的模板id
|
||||
XhpcChargingStation xhpc = xhpcChargingStationMapper.selectXhpcChargingStationById(xhpcChargingStation.getChargingStationId());
|
||||
Long chargingStationId = xhpcChargingStation.getChargingStationId();
|
||||
XhpcChargingStation xhpc = xhpcChargingStationMapper.selectXhpcChargingStationById(chargingStationId);
|
||||
xhpcChargingStation.setRateModelId(xhpc.getRateModelId());
|
||||
xhpcChargingStationMapper.updateXhpcChargingStation(xhpcChargingStation);
|
||||
|
||||
//生成场站推送数据信息
|
||||
powerPileService.addNotificationStationInfo(xhpcChargingStation.getChargingStationId());
|
||||
|
||||
powerPileService.addNotificationStationInfo(chargingStationId);
|
||||
//生成场站运行充电方式
|
||||
Map<String, Object> chargingMethodMap =new HashMap<>();
|
||||
String[] split = xhpcChargingStation.getChargingMethod().split(",");
|
||||
for (int k = 0; k <split.length ; k++) {
|
||||
String s = split[k];
|
||||
chargingMethodMap.put(s,s);
|
||||
}
|
||||
redisService.setCacheMap("chargingMethod:"+chargingStationId,chargingMethodMap);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@ -1593,5 +1613,22 @@ public class XhpcChargingStationServiceImpl extends BaseService implements IXhpc
|
||||
return R.ok(null,"组合场站信息(成都市平台)成功");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void getchargingMethodList() {
|
||||
List<Map<String, Object>> mapList = xhpcChargingStationMapper.getchargingMethodList();
|
||||
for (int i = 0; i < mapList.size(); i++) {
|
||||
Map<String, Object> map = mapList.get(i);
|
||||
String chargingStationId = map.get("chargingStationId").toString();
|
||||
String chargingNethod = map.get("chargingNethod").toString();
|
||||
if(chargingNethod!=null && !chargingNethod.equals("")){
|
||||
Map<String, Object> chargingMethodMap =new HashMap<>();
|
||||
String[] split = chargingNethod.split(",");
|
||||
for (int k = 0; k <split.length ; k++) {
|
||||
String s = split[k];
|
||||
chargingMethodMap.put(s,s);
|
||||
}
|
||||
redisService.setCacheMap("chargingMethod:"+chargingStationId,chargingMethodMap);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,190 @@
|
||||
package com.xhpc.charging.station.service;
|
||||
|
||||
import com.xhpc.charging.station.mapper.XhpcTimingChargingPowerMapper;
|
||||
import com.xhpc.common.api.PowerPileService;
|
||||
import com.xhpc.common.core.domain.R;
|
||||
import com.xhpc.common.domain.XhpcTimingChargingPowerModel;
|
||||
import com.xhpc.common.security.service.TokenService;
|
||||
import com.xhpc.common.util.UserTypeUtil;
|
||||
import com.xhpc.system.api.domain.SysUser;
|
||||
import com.xhpc.system.api.model.LoginUser;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
@Service
|
||||
public class XhpcTimingChargingPowerServiceImpl implements IXhpcTimingChargingPowerService {
|
||||
|
||||
@Resource
|
||||
private XhpcTimingChargingPowerMapper xhpcTimingChargingPowerMapper;
|
||||
@Resource
|
||||
private TokenService tokenService;
|
||||
@Resource
|
||||
private PowerPileService powerPileService;
|
||||
|
||||
private final ExecutorService executorService = Executors.newFixedThreadPool(20);
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> list(HttpServletRequest request, String tenantId, Long operatorId, String reason, Integer status, String startTime, String endTime, Long chargingStationId) {
|
||||
LoginUser loginUser = tokenService.getLoginUser(request);
|
||||
SysUser sysUser = loginUser.getSysUser();
|
||||
|
||||
Long sysUserId = sysUser.getUserId();
|
||||
if(!UserTypeUtil.SYS_USER_TYPE_ADMIN.equals(sysUserId)){
|
||||
if(UserTypeUtil.SYS_USER_TYPE_ONE.equals(sysUser.getUserType())){
|
||||
Long logOperatorId = sysUser.getOperatorId();
|
||||
//运营商看自己的场站
|
||||
return xhpcTimingChargingPowerMapper.list(operatorId,reason,status,startTime,endTime,chargingStationId,logOperatorId, 1,tenantId);
|
||||
}else{
|
||||
//查询赋值的场站
|
||||
return xhpcTimingChargingPowerMapper.list(operatorId,reason,status,startTime,endTime,chargingStationId,sysUserId, 2,tenantId);
|
||||
}
|
||||
}else{
|
||||
return xhpcTimingChargingPowerMapper.list(operatorId,reason,status,startTime,endTime,chargingStationId,sysUserId, 0,tenantId);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public R addXhpcTimingChargingPowerModel(HttpServletRequest request, XhpcTimingChargingPowerModel xhpcTimingChargingPowerModel) {
|
||||
|
||||
LoginUser loginUser = tokenService.getLoginUser(request);
|
||||
if(loginUser ==null){
|
||||
return R.fail(1001, "登录信息为空");
|
||||
}
|
||||
if (xhpcTimingChargingPowerModel.getReason() == null || "".equals(xhpcTimingChargingPowerModel.getReason())) {
|
||||
return R.fail(1001, "调整原因不能为空");
|
||||
}
|
||||
if (xhpcTimingChargingPowerModel.getChargingStationId() == null || "".equals(xhpcTimingChargingPowerModel.getChargingStationId())) {
|
||||
return R.fail(1001, "场站不能为空");
|
||||
}
|
||||
if (xhpcTimingChargingPowerModel.getTimingTime() == null || "".equals(xhpcTimingChargingPowerModel.getTimingTime())) {
|
||||
return R.fail(1001, "调整时间不能为空");
|
||||
}else{
|
||||
if(System.currentTimeMillis()>xhpcTimingChargingPowerModel.getTimingTime().getTime()){
|
||||
return R.fail(1001, "调整时间不能小于现在时间");
|
||||
}
|
||||
}
|
||||
|
||||
if (xhpcTimingChargingPowerModel.getPowerNumber() == null) {
|
||||
return R.fail(1001, "桩功率百分比不能为空");
|
||||
}else {
|
||||
if(xhpcTimingChargingPowerModel.getPowerNumber()<1 || xhpcTimingChargingPowerModel.getPowerNumber()>100){
|
||||
return R.fail(1001, "桩功率百分比范围在1~100之间");
|
||||
}
|
||||
}
|
||||
if(xhpcTimingChargingPowerModel.getChargingPileIds().length==0){
|
||||
return R.fail(1001, "请选择桩");
|
||||
}
|
||||
Integer[] chargingPileIds = xhpcTimingChargingPowerModel.getChargingPileIds();
|
||||
String st ="";
|
||||
for (int i = 0; i <chargingPileIds.length ; i++) {
|
||||
if(i==0 && chargingPileIds.length>1){
|
||||
st =st+chargingPileIds[i]+",";
|
||||
}else if(chargingPileIds.length==1){
|
||||
st =chargingPileIds[i]+"";
|
||||
}else{
|
||||
st =st+","+chargingPileIds[i];
|
||||
}
|
||||
}
|
||||
xhpcTimingChargingPowerModel.setPileIds(st);
|
||||
|
||||
if(xhpcTimingChargingPowerModel.getTimingChargingPowerId() !=null){
|
||||
xhpcTimingChargingPowerMapper.updateXhpcTimingChargingPowerModel(xhpcTimingChargingPowerModel);
|
||||
}else{
|
||||
xhpcTimingChargingPowerMapper.insertXhpcTimingChargingPowerModel(xhpcTimingChargingPowerModel);
|
||||
}
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@Override
|
||||
public R updateXhpcTimingChargingPowerModel(Long timingChargingPowerId) {
|
||||
LoginUser loginUser = tokenService.getLoginUser();
|
||||
if(loginUser ==null){
|
||||
return R.ok();
|
||||
}
|
||||
//查询是否是未执行状态
|
||||
XhpcTimingChargingPowerModel xhpcTimingChargingPowerModel = xhpcTimingChargingPowerMapper.getXhpcTimingChargingPowerModelById(timingChargingPowerId,null);
|
||||
if(xhpcTimingChargingPowerModel ==null){
|
||||
return R.fail("数据不存在");
|
||||
}else if (xhpcTimingChargingPowerModel.getStatus()==0){
|
||||
xhpcTimingChargingPowerModel.setDelFlag(2);
|
||||
xhpcTimingChargingPowerMapper.updateXhpcTimingChargingPowerModel(xhpcTimingChargingPowerModel);
|
||||
return R.ok();
|
||||
}else if (xhpcTimingChargingPowerModel.getStatus()==1){
|
||||
return R.fail("该数据已执行,不能删除");
|
||||
}else {
|
||||
return R.fail("该数据执行错误,不能删除");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public R getXhpcTimingChargingPowerModelMessage(Long timingChargingPowerId) {
|
||||
|
||||
Map<String, Object> map =new HashMap<>();
|
||||
LoginUser loginUser = tokenService.getLoginUser();
|
||||
if(loginUser ==null){
|
||||
return R.ok(map);
|
||||
}
|
||||
//查询是否是未执行状态
|
||||
XhpcTimingChargingPowerModel xhpcTimingChargingPowerModelById = xhpcTimingChargingPowerMapper.getXhpcTimingChargingPowerModelById(timingChargingPowerId, loginUser.getTenantId());
|
||||
|
||||
if(xhpcTimingChargingPowerModelById.getPileIds().length()>0){
|
||||
String pileIds = xhpcTimingChargingPowerModelById.getPileIds();
|
||||
String[] split = pileIds.split(",");
|
||||
Integer [] piles =new Integer [split.length];
|
||||
for (int i = 0; i <split.length ; i++) {
|
||||
String s = split[i];
|
||||
piles[i] = Integer.parseInt(s);
|
||||
}
|
||||
xhpcTimingChargingPowerModelById.setChargingPileIds(piles);
|
||||
}
|
||||
|
||||
return R.ok(xhpcTimingChargingPowerModelById);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public R getXhpcTimingChargingPowerModelCron() {
|
||||
|
||||
List<XhpcTimingChargingPowerModel> list = xhpcTimingChargingPowerMapper.getXhpcTimingChargingPowerModelCron();
|
||||
if(list !=null && list.size()>0){
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
XhpcTimingChargingPowerModel xhpcTimingChargingPowerModel = list.get(i);
|
||||
String pileIds = xhpcTimingChargingPowerModel.getPileIds();
|
||||
|
||||
List<String> piles = Arrays.asList(pileIds.split(","));
|
||||
//获取桩号
|
||||
for (String pileId:piles) {
|
||||
String xhpcChargingPile = xhpcTimingChargingPowerMapper.getXhpcChargingPile(Long.getLong(pileId),xhpcTimingChargingPowerModel.getChargingStationId());
|
||||
|
||||
R r =powerPileService.pileConfigSettings(xhpcChargingPile,xhpcTimingChargingPowerModel.getPowerNumber().toString());
|
||||
if (r.getCode() != 200) {
|
||||
executorService.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
R r1 = powerPileService.pileConfigSettings(xhpcChargingPile, xhpcTimingChargingPowerModel.getPowerNumber().toString());
|
||||
if (r1.getCode() == 200) {
|
||||
xhpcTimingChargingPowerMapper.updateXhpcChargingPile(Long.getLong(pileId),xhpcTimingChargingPowerModel.getPowerNumber());
|
||||
}
|
||||
}
|
||||
});
|
||||
}else{
|
||||
xhpcTimingChargingPowerMapper.updateXhpcChargingPile(Long.getLong(pileId),xhpcTimingChargingPowerModel.getPowerNumber());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@ -14,10 +14,10 @@ spring:
|
||||
nacos:
|
||||
discovery:
|
||||
# 服务注册地址
|
||||
server-addr: 172.31.183.135:8848
|
||||
server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848
|
||||
config:
|
||||
# 配置中心地址
|
||||
server-addr: 172.31.183.135:8848
|
||||
server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848
|
||||
# 配置文件格式
|
||||
file-extension: yml
|
||||
# 共享配置
|
||||
|
||||
@ -0,0 +1,147 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.xhpc.charging.station.mapper.XhpcBarrierGateRecordMapper">
|
||||
|
||||
<resultMap id="BaseResultMap" type="com.xhpc.common.domain.XhpcBarrierGateRecord">
|
||||
<result property="barrierGateRecordId" column="barrier_gate_record_id"/>
|
||||
<result property="barrierGateId" column="barrier_gate_id"/>
|
||||
<result property="userId" column="user_id"/>
|
||||
<result property="source" column="source"/>
|
||||
<result property="chargingStationId" column="charging_station_id"/>
|
||||
<result property="sendingTime" column="sending_time"/>
|
||||
<result property="status" column="status"/>
|
||||
<result property="delFlag" column="del_flag"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
<result property="createBy" column="create_by"/>
|
||||
<result property="updateTime" column="update_time"/>
|
||||
<result property="updateBy" column="update_by"/>
|
||||
<result property="remark" column="remark"/>
|
||||
<result property="tenantId" column="tenant_id"/>
|
||||
<result property="serialNumber" column="serial_number"/>
|
||||
<result property="internetSerialNumber" column="internet_serial_number"/>
|
||||
<result property="plateNum" column="plate_num"/>
|
||||
<result property="phone" column="phone"/>
|
||||
<result property="historyOrderId" column="history_order_id"/>
|
||||
</resultMap>
|
||||
|
||||
|
||||
<select id="getLsit" resultType="map">
|
||||
select
|
||||
xbgr.barrier_gate_record_id as barrierGateRecordId,
|
||||
xbg.barrier_gate_company as barrierGateCompany,
|
||||
xcs.name as chargingStationName,
|
||||
xbgr.phone as phone,
|
||||
xbgr.sending_time as sendingTime,
|
||||
xbgr.plate_num as plateNum,
|
||||
xbgr.serial_number as serialNumber,
|
||||
xbgr.internet_serial_number as internetSerialNumber,
|
||||
case when xbgr.status=0 then '发送成功'
|
||||
else '发送失败'
|
||||
end as 'statusName'
|
||||
from xhpc_barrier_gate_record xbgr
|
||||
left join xhpc_barrier_gate xbg on xbg.barrier_gate_id = xbgr.barrier_gate_id
|
||||
left join xhpc_charging_station xcs on xcs.charging_station_id = xbgr.charging_station_id
|
||||
where xbgr.del_flag =0
|
||||
<if test="params.barrierGateCompany !=null and params.barrierGateCompany !=''">
|
||||
and xbg.barrier_gate_company like CONCAT('%',#{params.barrierGateCompany},'%')
|
||||
</if>
|
||||
<if test="params.chargingStationName !=null and params.chargingStationName !=''">
|
||||
and xcs.name like CONCAT('%',#{params.chargingStationName},'%')
|
||||
</if>
|
||||
<if test="params.phone !=null and params.phone !=''">
|
||||
and xbgr.phone like CONCAT('%',#{params.phone},'%')
|
||||
</if>
|
||||
<if test="params.plateNum !=null and params.plateNum !=''">
|
||||
and xbgr.plate_num like CONCAT('%',#{params.plateNum},'%')
|
||||
</if>
|
||||
<if test="params.serialNumber !=null and params.serialNumber !=''">
|
||||
and xbgr.serial_number like CONCAT('%',#{params.serialNumber},'%')
|
||||
</if>
|
||||
<if test="params.internetSerialNumber !=null and params.internetSerialNumber !=''">
|
||||
and xbgr.internet_serial_number like CONCAT('%',#{params.internetSerialNumber},'%')
|
||||
</if>
|
||||
<if test="params.startTime !=null and params.startTime !=''">
|
||||
and xbgr.sending_time >= #{params.startTime}
|
||||
</if>
|
||||
<if test="params.endTime !=null and params.endTime !=''">
|
||||
and xbgr.sending_time <= #{params.endTime}
|
||||
</if>
|
||||
<if test="params.status !=null">
|
||||
and xbgr.status=#{params.status}
|
||||
</if>
|
||||
order by xbgr.sending_time desc
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
<select id="getXhpcBarrierGateRecordById" resultType="map">
|
||||
select
|
||||
xbgr.barrier_gate_record_id as barrierGateRecordId,
|
||||
xbg.barrier_gate_company as barrierGateCompany,
|
||||
xcs.name as chargingStationName,
|
||||
xbgr.phone as phone,
|
||||
xbgr.remark as remark,
|
||||
xbgr.sending_time as sendingTime,
|
||||
xbgr.plate_num as plateNum,
|
||||
xbgr.serial_number as serialNumber,
|
||||
xbgr.internet_serial_number as internetSerialNumber,
|
||||
case when xbgr.status=0 then '发送成功'
|
||||
else '发送失败'
|
||||
end as 'statusName'
|
||||
from xhpc_barrier_gate_record xbgr
|
||||
left join xhpc_barrier_gate xbg on xbg.barrier_gate_id = xbgr.barrier_gate_id
|
||||
left join xhpc_charging_station xcs on xcs.charging_station_id = xbgr.charging_station_id
|
||||
where xbgr.barrier_gate_record_id = #{barrierGateRecordId}
|
||||
</select>
|
||||
|
||||
|
||||
<select id="export" resultType="com.xhpc.common.dto.XhpcBarrierGateRecordExcel">
|
||||
select
|
||||
xbgr.barrier_gate_record_id as barrierGateRecordId,
|
||||
xbg.barrier_gate_company as barrierGateCompany,
|
||||
xcs.name as chargingStationName,
|
||||
xbgr.phone as phone,
|
||||
xbgr.remark as remark,
|
||||
xbgr.sending_time as sendingTime,
|
||||
xbgr.plate_num as plateNum,
|
||||
xbgr.serial_number as serialNumber,
|
||||
xbgr.internet_serial_number as internetSerialNumber,
|
||||
case when xbgr.status=0 then '发送成功'
|
||||
else '发送失败'
|
||||
end as 'statusName'
|
||||
from xhpc_barrier_gate_record xbgr
|
||||
left join xhpc_barrier_gate xbg on xbg.barrier_gate_id = xbgr.barrier_gate_id
|
||||
left join xhpc_charging_station xcs on xcs.charging_station_id = xbgr.charging_station_id
|
||||
where xbgr.del_flag =0
|
||||
<if test="params.barrierGateCompany !=null and params.barrierGateCompany !=''">
|
||||
and xbg.barrier_gate_company like CONCAT('%',#{params.barrierGateCompany},'%')
|
||||
</if>
|
||||
<if test="params.chargingStationName !=null and params.chargingStationName !=''">
|
||||
and xcs.name like CONCAT('%',#{params.chargingStationName},'%')
|
||||
</if>
|
||||
<if test="params.phone !=null and params.phone !=''">
|
||||
and xbgr.phone like CONCAT('%',#{params.phone},'%')
|
||||
</if>
|
||||
<if test="params.plateNum !=null and params.plateNum !=''">
|
||||
and xbgr.plate_num like CONCAT('%',#{params.plateNum},'%')
|
||||
</if>
|
||||
<if test="params.serialNumber !=null and params.serialNumber !=''">
|
||||
and xbgr.serial_number like CONCAT('%',#{params.serialNumber},'%')
|
||||
</if>
|
||||
<if test="params.internetSerialNumber !=null and params.internetSerialNumber !=''">
|
||||
and xbgr.internet_serial_number like CONCAT('%',#{params.internetSerialNumber},'%')
|
||||
</if>
|
||||
<if test="params.startTime !=null and params.startTime !=''">
|
||||
and xbgr.sending_time >= #{params.startTime}
|
||||
</if>
|
||||
<if test="params.endTime !=null and params.endTime !=''">
|
||||
and xbgr.sending_time <= #{params.endTime}
|
||||
</if>
|
||||
<if test="params.status !=null">
|
||||
and xbgr.status=#{params.status}
|
||||
</if>
|
||||
order by xbgr.sending_time desc
|
||||
</select>
|
||||
</mapper>
|
||||
@ -97,6 +97,7 @@
|
||||
cp.type as type,
|
||||
cp.power as power,
|
||||
cp.gun_number as gunNumber,
|
||||
cp.power_number as powerNumber,
|
||||
cp.status as status
|
||||
from xhpc_charging_pile as cp
|
||||
left join xhpc_charging_station as st on st.charging_station_id =cp.charging_station_id
|
||||
@ -641,4 +642,8 @@
|
||||
set status = #{status} and prompt=#{prompt}
|
||||
where charging_pile_id = #{chargingPileId}
|
||||
</update>
|
||||
|
||||
<update id="updateXhpcChargingPile">
|
||||
update xhpc_charging_pile set power_number =#{powerNumber} where serial_number =#{serialNumber} and del_flag =0
|
||||
</update>
|
||||
</mapper>
|
||||
|
||||
@ -36,7 +36,7 @@
|
||||
<result property="parkNums" column="park_nums"/>
|
||||
<result property="installedTotalPower" column="installed_total_power" />
|
||||
<result property="runningTotalPower" column="running_total_power" />
|
||||
|
||||
<result property="chargingMethod" column="charging_method" />
|
||||
<result property="equipmentOwnerId" column="equipment_owner_id" />
|
||||
<result property="isAloneApply" column="is_alone_apply" />
|
||||
<result property="accountNumber" column="account_number" />
|
||||
@ -249,6 +249,9 @@
|
||||
<if test="runningTotalPower != null">
|
||||
running_total_power=#{runningTotalPower},
|
||||
</if>
|
||||
<if test="chargingMethod != null">
|
||||
charging_method=#{chargingMethod},
|
||||
</if>
|
||||
<if test="null != equipmentOwnerId and '' != equipmentOwnerId">
|
||||
equipment_owner_id=#{equipmentOwnerId},
|
||||
</if>
|
||||
@ -366,7 +369,9 @@
|
||||
<if test="null != videoMonitor ">
|
||||
video_monitor=#{videoMonitor},
|
||||
</if>
|
||||
<if test="null != barrierGateId ">
|
||||
barrier_gate_id=#{barrierGateId},
|
||||
</if>
|
||||
</trim>
|
||||
where charging_station_id = #{chargingStationId}
|
||||
</update>
|
||||
@ -444,6 +449,7 @@
|
||||
op.name as operatorName,
|
||||
ct.type as type,
|
||||
ct.construction_time as constructionTime,
|
||||
ct.charging_method as chargingMethod,
|
||||
ct.open_all_day as openAllDay,
|
||||
ct.busine_hours as busineHours,
|
||||
ct.electricity_fee as electricityFee,
|
||||
@ -896,6 +902,9 @@
|
||||
<if test="null != barrierGateId ">
|
||||
barrier_gate_id,
|
||||
</if>
|
||||
<if test="null != chargingMethod and '' != chargingMethod">
|
||||
charging_method,
|
||||
</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="null != name and '' != name">
|
||||
@ -1110,6 +1119,9 @@
|
||||
<if test="null != barrierGateId ">
|
||||
#{barrierGateId},
|
||||
</if>
|
||||
<if test="null != chargingMethod and '' != chargingMethod">
|
||||
#{chargingMethod},
|
||||
</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
@ -1444,4 +1456,11 @@
|
||||
operator_id_evcs as operatorIdEvcs
|
||||
from xhpc_operator where operator_id= #{operatorId}
|
||||
</select>
|
||||
|
||||
<select id="getchargingMethodList" resultType="map">
|
||||
select
|
||||
charging_station_id as chargingStationId,
|
||||
charging_method as chargingNethod
|
||||
from xhpc_charging_station where del_flag=0 and charging_method is not null
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@ -0,0 +1,202 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.xhpc.charging.station.mapper.XhpcTimingChargingPowerMapper">
|
||||
|
||||
<resultMap id="BaseResultMap" type="com.xhpc.common.domain.XhpcTimingChargingPowerModel">
|
||||
<result property="timingChargingPowerId" column="timing_charging_power_id"/>
|
||||
<result property="reason" column="reason"/>
|
||||
<result property="chargingStationId" column="charging_station_id"/>
|
||||
<result property="timingTime" column="timing_time"/>
|
||||
<result property="errorReason" column="error_reason"/>
|
||||
<result property="number" column="number"/>
|
||||
<result property="status" column="status"/>
|
||||
<result property="delFlag" column="del_flag"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
<result property="createBy" column="create_by"/>
|
||||
<result property="updateTime" column="update_time"/>
|
||||
<result property="updateBy" column="update_by"/>
|
||||
<result property="remark" column="remark"/>
|
||||
<result property="tenantId" column="tenant_id"/>
|
||||
<result property="phone" column="phone"/>
|
||||
<result property="powerNumber" column="power_number"/>
|
||||
<result property="pileIds" column="pile_ids"/>
|
||||
</resultMap>
|
||||
|
||||
<select id="list" resultType="map">
|
||||
select
|
||||
tcm.timing_charging_power_id as timingChargingPowerId,
|
||||
tcm.reason as reason,
|
||||
cs.name as chargingStationName,
|
||||
tcm.timing_time as timingTime,
|
||||
tcm.status as status,
|
||||
tcm.power_number as powerNumber,
|
||||
tcm.create_time as createTime
|
||||
from xhpc_timing_charging_power as tcm
|
||||
left join xhpc_charging_station as cs on cs.charging_station_id = tcm.charging_station_id
|
||||
where tcm.del_flag =0
|
||||
<if test="operatorId !=null">
|
||||
and cs.operator_id = #{operatorId}
|
||||
</if>
|
||||
<if test="chargingStationId !=null">
|
||||
and tcm.charging_station_id = #{chargingStationId}
|
||||
</if>
|
||||
<if test="reason !=null and ''!=reason">
|
||||
and tcm.reason like concat('%', #{reason}, '%')
|
||||
</if>
|
||||
<if test="status !=null">
|
||||
and tcm.status = #{status}
|
||||
</if>
|
||||
<if test="startTime !=null and '' !=startTime">
|
||||
and tcm.timing_time >=#{startTime}
|
||||
</if>
|
||||
<if test="endTime !=null and '' !=endTime">
|
||||
and tcm.timing_time <=#{endTime}
|
||||
</if>
|
||||
<if test="tenantId !=null and '' !=tenantId">
|
||||
and tcm.tenant_id =#{tenantId}
|
||||
</if>
|
||||
<if test="type ==1">
|
||||
and cs.charging_station_id in(select charging_station_id from xhpc_charging_station where operator_id=#{logOperatorId})
|
||||
</if>
|
||||
<if test="type ==2">
|
||||
and cs.charging_station_id in(select charging_station_id from xhpc_user_privilege where user_id=#{logOperatorId})
|
||||
</if>
|
||||
order by tcm.status asc, tcm.create_time desc
|
||||
</select>
|
||||
|
||||
<insert id="insertXhpcTimingChargingPowerModel" parameterType="com.xhpc.common.domain.XhpcTimingChargingPowerModel" useGeneratedKeys="true" keyProperty="timingChargingPowerId">
|
||||
insert into xhpc_timing_charging_power
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="null != reason and ''!=reason">
|
||||
reason,
|
||||
</if>
|
||||
<if test="null != chargingStationId ">
|
||||
charging_station_id,
|
||||
</if>
|
||||
<if test="null != timingTime ">
|
||||
timing_time,
|
||||
</if>
|
||||
<if test="null != tenantId ">
|
||||
tenant_id,
|
||||
</if>
|
||||
<if test="null != status ">
|
||||
status,
|
||||
</if>
|
||||
<if test="null != delFlag ">
|
||||
del_flag,
|
||||
</if>
|
||||
<if test="null != createTime ">
|
||||
create_time,
|
||||
</if>
|
||||
<if test="null != createBy and '' != createBy">
|
||||
create_by,
|
||||
</if>
|
||||
<if test="null != updateTime ">
|
||||
update_time,
|
||||
</if>
|
||||
<if test="null != updateBy and '' != updateBy">
|
||||
update_by,
|
||||
</if>
|
||||
<if test="null != remark and '' != remark">
|
||||
remark,
|
||||
</if>
|
||||
<if test="null != phone and '' != phone">
|
||||
phone,
|
||||
</if>
|
||||
<if test="null != powerNumber ">
|
||||
power_number,
|
||||
</if>
|
||||
<if test="null != pileIds and '' != pileIds">
|
||||
pile_ids,
|
||||
</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="null != reason and ''!=reason">
|
||||
#{reason},
|
||||
</if>
|
||||
<if test="null != chargingStationId ">
|
||||
#{chargingStationId},
|
||||
</if>
|
||||
<if test="null != timingTime ">
|
||||
#{timingTime},
|
||||
</if>
|
||||
<if test="null != tenantId ">
|
||||
#{tenantId},
|
||||
</if>
|
||||
<if test="null != status ">
|
||||
#{status},
|
||||
</if>
|
||||
<if test="null != delFlag ">
|
||||
#{delFlag},
|
||||
</if>
|
||||
<if test="null != createTime ">
|
||||
#{createTime},
|
||||
</if>
|
||||
<if test="null != createBy and '' != createBy">
|
||||
#{createBy},
|
||||
</if>
|
||||
<if test="null != updateTime ">
|
||||
#{updateTime},
|
||||
</if>
|
||||
<if test="null != updateBy and '' != updateBy">
|
||||
#{updateBy},
|
||||
</if>
|
||||
<if test="null != remark and '' != remark">
|
||||
#{remark},
|
||||
</if>
|
||||
<if test="null != phone and '' != phone">
|
||||
#{phone},
|
||||
</if>
|
||||
<if test="null != powerNumber ">
|
||||
#{powerNumber},
|
||||
</if>
|
||||
<if test="null != pileIds and '' != pileIds">
|
||||
#{pileIds},
|
||||
</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<select id="getXhpcTimingChargingPowerModelById" resultMap="BaseResultMap">
|
||||
select * from xhpc_timing_charging_power where timing_charging_power_id =#{timingChargingPowerId} and del_flag=0
|
||||
<if test="tenantId !=null and ''!=tenantId">
|
||||
and tenant_id=#{tenantId}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<update id="updateXhpcTimingChargingPowerModel" parameterType="Integer">
|
||||
update xhpc_timing_charging_power
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="chargingStationId != null">charging_station_id = #{chargingStationId},</if>
|
||||
<if test="reason != null and ''!=reason">reason = #{reason},</if>
|
||||
<if test="timingTime != null">timing_time = #{timingTime},</if>
|
||||
<if test="errorReason != null and ''!=errorReason">error_reason = #{errorReason},</if>
|
||||
<if test="number != null">number = #{number},</if>
|
||||
<if test="status != null">status = #{status},</if>
|
||||
<if test="delFlag != null">del_flag = #{delFlag},</if>
|
||||
<if test="createTime != null">create_time = #{createTime},</if>
|
||||
<if test="createBy != null">create_by = #{createBy},</if>
|
||||
<if test="updateTime != null">update_time = #{updateTime},</if>
|
||||
<if test="updateBy != null">update_by = #{updateBy},</if>
|
||||
<if test="remark != null">remark = #{remark},</if>
|
||||
<if test="phone != null">phone = #{phone},</if>
|
||||
<if test="powerNumber != null">power_number = #{powerNumber},</if>
|
||||
<if test="pileIds != null and ''!=pileIds">pile_ids = #{pileIds},</if>
|
||||
</trim>
|
||||
where timing_charging_power_id =#{timingChargingPowerId}
|
||||
</update>
|
||||
|
||||
|
||||
<select id="getXhpcTimingChargingPowerModelCron" resultMap="BaseResultMap">
|
||||
select * from xhpc_timing_charging_power where status =0 and del_flag=0
|
||||
</select>
|
||||
|
||||
<select id="getXhpcChargingPile" resultType="String">
|
||||
select serialNumber from xhpc_charging_pile where charging_pile_id=#{chargingPileId} and del_flag =0 and charging_station_id=#{chargingStationId}
|
||||
</select>
|
||||
|
||||
<update id="updateXhpcChargingPile">
|
||||
update xhpc_charging_pile set power_number =#{powerNumber} where charging_pile_id =#{chargingPileId}
|
||||
</update>
|
||||
</mapper>
|
||||
@ -70,5 +70,10 @@
|
||||
<version>2.1.5</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>easyexcel</artifactId>
|
||||
<version>3.0.2</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
||||
@ -26,4 +26,8 @@ public interface EvcsService {
|
||||
|
||||
@PostMapping("/v20/getCYCNotificationConnectorChargeStatus")
|
||||
R getCYCNotificationConnectorChargeStatus(@RequestBody Map<String, Object> orderMap);
|
||||
|
||||
|
||||
@PostMapping("/v20/getCYCNotificationStartChargeResult")
|
||||
R getCYCNotificationStartChargeResult(@RequestBody Map<String, Object> orderMap);
|
||||
}
|
||||
|
||||
@ -20,6 +20,11 @@ public interface PowerPileService {
|
||||
@PostMapping("/charging/start")
|
||||
R startCharging(@Validated @RequestBody StartChargingData startChargingData);
|
||||
|
||||
|
||||
@PostMapping("/charging/capacity/start")
|
||||
R startChargingCapacity(@Validated @RequestBody StartChargingData startChargingData);
|
||||
|
||||
|
||||
@PostMapping("/charging/balance/refresh")
|
||||
R refreshBalance(@Validated @RequestBody StartChargingData balanceRefreshData);
|
||||
|
||||
@ -95,4 +100,8 @@ public interface PowerPileService {
|
||||
//推送充电站实时功率
|
||||
@GetMapping("/station/getSuperviseNotificationRealtimePowerInfo")
|
||||
R getSuperviseNotificationRealtimePowerInfo(@RequestParam("operatorIdEvcs")String operatorIdEvcs,@RequestParam("replace")String replace);
|
||||
|
||||
//充电桩工作参数设置
|
||||
@PostMapping("/pile/{pileNo}/{powerNumber}/configSettings")
|
||||
R pileConfigSettings(@PathVariable("pileNo") @Param("pileNo")String pileNo,@PathVariable("powerNumber") @Param("powerNumber")String powerNumber);
|
||||
}
|
||||
|
||||
@ -40,6 +40,11 @@ public class EvcsServiceFallbackFactory implements FallbackFactory<EvcsService>
|
||||
return R.fail(500,"Evcs服务--》川逸充设备充电结束状态变化推送接口失败:" + orderMap);
|
||||
}
|
||||
|
||||
@Override
|
||||
public R getCYCNotificationStartChargeResult(Map<String, Object> orderMap) {
|
||||
return R.fail(500,"Evcs服务--》川逸充启动结果推送接口失败:" + orderMap);
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@ -28,6 +28,11 @@ public class PowerPileFallbackFactory implements FallbackFactory<PowerPileServic
|
||||
return R.fail(3886,"启动充电失败:" + cause.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public R startChargingCapacity(StartChargingData startChargingData) {
|
||||
return R.fail(3886,"启动充电失败:" + cause.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public R refreshBalance(StartChargingData balanceRefreshData) {
|
||||
|
||||
@ -130,6 +135,11 @@ public class PowerPileFallbackFactory implements FallbackFactory<PowerPileServic
|
||||
public R getSuperviseNotificationRealtimePowerInfo(String operatorIdEvcs, String replace) {
|
||||
return R.fail(500,"推送充电站实时功率失败:" + cause.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public R pileConfigSettings(String pileNo, String powerNumber) {
|
||||
return R.fail(500,"推送充电桩工作参数设置失败:" + cause.getMessage());
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@ -17,6 +17,7 @@ public class StartChargingData {
|
||||
private String physicCardNo = "0000000000000000"; //物理卡号 同上
|
||||
private String version = "0A"; //协议版本号(0A)
|
||||
private Integer soc;
|
||||
private Integer chargingCapacity; //充电量
|
||||
|
||||
|
||||
public String getOrderNo() {
|
||||
@ -109,4 +110,11 @@ public class StartChargingData {
|
||||
this.soc = soc;
|
||||
}
|
||||
|
||||
public Integer getChargingCapacity() {
|
||||
return chargingCapacity;
|
||||
}
|
||||
|
||||
public void setChargingCapacity(Integer chargingCapacity) {
|
||||
this.chargingCapacity = chargingCapacity;
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,6 +10,7 @@ public class XhpcBarrierGateRecord extends BaseEntity {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 道闸记录id */
|
||||
private Long barrierGateRecordId;
|
||||
/** 道闸id */
|
||||
private Long barrierGateId;
|
||||
@ -22,8 +23,20 @@ public class XhpcBarrierGateRecord extends BaseEntity {
|
||||
|
||||
private Date sendingTime;
|
||||
|
||||
/** 状态(0 成功 1失败) */
|
||||
private Integer status;
|
||||
|
||||
private Integer delFlag;
|
||||
|
||||
private String remark;
|
||||
|
||||
private String serialNumber;
|
||||
|
||||
private String internetSerialNumber;
|
||||
|
||||
private String plateNum;
|
||||
|
||||
private String phone;
|
||||
|
||||
private Long historyOrderId;
|
||||
}
|
||||
|
||||
@ -32,6 +32,10 @@ public class XhpcChargingPile extends BaseEntity {
|
||||
/** 功率 */
|
||||
@Excel(name = "电桩功率(KW)")
|
||||
private Double power;
|
||||
/**
|
||||
* 桩功率百分比
|
||||
*/
|
||||
private Integer powerNumber;
|
||||
/** 辅助电源支持 */
|
||||
@Excel(name = "辅助电源支持(V)")
|
||||
private Double auxiliaryPowerSupply;
|
||||
@ -626,4 +630,12 @@ public class XhpcChargingPile extends BaseEntity {
|
||||
public void setEquipmentClassificatlonName(String equipmentClassificatlonName) {
|
||||
this.equipmentClassificatlonName = equipmentClassificatlonName;
|
||||
}
|
||||
|
||||
public Integer getPowerNumber() {
|
||||
return powerNumber;
|
||||
}
|
||||
|
||||
public void setPowerNumber(Integer powerNumber) {
|
||||
this.powerNumber = powerNumber;
|
||||
}
|
||||
}
|
||||
|
||||
@ -284,6 +284,11 @@ public class XhpcChargingStation extends BaseEntity {
|
||||
*/
|
||||
private Long barrierGateId;
|
||||
|
||||
/**
|
||||
* 允许充电方式
|
||||
*/
|
||||
private String chargingMethod;
|
||||
|
||||
public Integer getInstalledTotalPower() {
|
||||
return installedTotalPower;
|
||||
}
|
||||
@ -868,4 +873,12 @@ public class XhpcChargingStation extends BaseEntity {
|
||||
public void setServiceFeeDescribe(String serviceFeeDescribe) {
|
||||
this.serviceFeeDescribe = serviceFeeDescribe;
|
||||
}
|
||||
|
||||
public String getChargingMethod() {
|
||||
return chargingMethod;
|
||||
}
|
||||
|
||||
public void setChargingMethod(String chargingMethod) {
|
||||
this.chargingMethod = chargingMethod;
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,65 @@
|
||||
package com.xhpc.common.domain;
|
||||
|
||||
import com.xhpc.common.core.web.domain.BaseEntity;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @author yuyang
|
||||
* @date 2022/2/22 13:39
|
||||
*/
|
||||
@Data
|
||||
public class XhpcTimingChargingPowerModel extends BaseEntity {
|
||||
|
||||
|
||||
private Long timingChargingPowerId;
|
||||
|
||||
/**
|
||||
* 调整原因
|
||||
*/
|
||||
private String reason;
|
||||
|
||||
/**
|
||||
* 场站id
|
||||
*/
|
||||
private Long chargingStationId;
|
||||
|
||||
/**
|
||||
* 定时时间
|
||||
*/
|
||||
private Date timingTime;
|
||||
|
||||
/**
|
||||
* 失败原因
|
||||
*/
|
||||
private String errorReason;
|
||||
|
||||
/**
|
||||
* 次数
|
||||
*/
|
||||
private Integer number;
|
||||
|
||||
/**
|
||||
* 状态(0未执行 1已执行 2执行错误)
|
||||
* */
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 2代表删除)
|
||||
* */
|
||||
private Integer delFlag;
|
||||
|
||||
/**
|
||||
* 租户id
|
||||
*/
|
||||
private String tenantId;
|
||||
|
||||
private String phone;
|
||||
|
||||
private Integer powerNumber;
|
||||
|
||||
private String pileIds;
|
||||
|
||||
private Integer [] chargingPileIds;
|
||||
}
|
||||
@ -0,0 +1,53 @@
|
||||
package com.xhpc.common.dto;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.alibaba.excel.annotation.write.style.ColumnWidth;
|
||||
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
|
||||
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
|
||||
import com.xhpc.common.core.web.domain.BaseEntity;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@ColumnWidth(25)
|
||||
@HeadRowHeight(20)
|
||||
@ContentRowHeight(18)
|
||||
public class XhpcBarrierGateRecordExcel {
|
||||
|
||||
@ColumnWidth(40)
|
||||
@ExcelProperty("到咋名称")
|
||||
private String barrierGateCompany;
|
||||
@ColumnWidth(40)
|
||||
@ExcelProperty("场站名称")
|
||||
private String chargingStationName;
|
||||
@ColumnWidth(40)
|
||||
@ExcelProperty("手机号")
|
||||
private String phone;
|
||||
@ColumnWidth(40)
|
||||
@ExcelProperty("车牌")
|
||||
private String plateNum;
|
||||
@ColumnWidth(40)
|
||||
@ExcelProperty("平台订单号")
|
||||
private String serialNumber;
|
||||
@ColumnWidth(40)
|
||||
@ExcelProperty("流量方订单号")
|
||||
private String internetSerialNumber;
|
||||
@ColumnWidth(40)
|
||||
@ExcelProperty("发送时间")
|
||||
private String sendingTime;
|
||||
@ColumnWidth(40)
|
||||
@ExcelProperty("发送状态")
|
||||
private String statusName;
|
||||
@ColumnWidth(40)
|
||||
@ExcelProperty("返回结果")
|
||||
private String remark;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -75,11 +75,11 @@ public enum StopReasonEnum {
|
||||
EIGHTY_EIGHY("88", "接收 BMS 充电统计报文超时(0X88)"),
|
||||
EIGHTY_NINE("89", "接收对侧 CCS 报文超时(0X89)"),
|
||||
NINETY("90", "未知原因中止(0X90)"),
|
||||
NINETY_ONE("91", "远程重启应答(0X91)"),
|
||||
NINETY_ONE("91", "平台结算(0X91)"),
|
||||
NINETY_TWO("92", "远程重启(0X92)"),
|
||||
NINETY_THREE("93", "远程更新应答(0X93)"),
|
||||
NINETY_FOUE("94", "远程更新(0X94)");
|
||||
|
||||
NINETY_FOUE("94", "远程更新(0X94)"),
|
||||
ONE_HUNDRED_NINETY_NINE("199", "平台空订单(0X199)");
|
||||
private final String code;
|
||||
private final String name;
|
||||
|
||||
|
||||
@ -283,6 +283,12 @@ public class XhpcHistoryOrder extends BaseEntity {
|
||||
*/
|
||||
private String activityId;
|
||||
|
||||
/**
|
||||
* 是否发送停车券 1未发送 2已发送
|
||||
*/
|
||||
private Integer parkingVoucher;
|
||||
|
||||
|
||||
public Integer getConfirmResult() {
|
||||
|
||||
return confirmResult;
|
||||
@ -795,4 +801,12 @@ public class XhpcHistoryOrder extends BaseEntity {
|
||||
public void setActivityId(String activityId) {
|
||||
this.activityId = activityId;
|
||||
}
|
||||
|
||||
public Integer getParkingVoucher() {
|
||||
return parkingVoucher;
|
||||
}
|
||||
|
||||
public void setParkingVoucher(Integer parkingVoucher) {
|
||||
this.parkingVoucher = parkingVoucher;
|
||||
}
|
||||
}
|
||||
|
||||
@ -16,6 +16,10 @@ public class HexUtils {
|
||||
return toHex(toIntBytes(String.format("%08d", dec), 8));
|
||||
}
|
||||
|
||||
public static String toHexIntYu(long dec) {
|
||||
|
||||
return toHex(toIntBytes(String.format("%04d", dec), 4));
|
||||
}
|
||||
public static Integer reverseHexInt(String hex) {
|
||||
|
||||
byte[] data = toBytes(reverseHex(hex));
|
||||
@ -214,11 +218,16 @@ public class HexUtils {
|
||||
// System.out.println(reverseHexInt("FF00"));
|
||||
// byte[] data1 = toBytes(reverseHex("10270000"));
|
||||
// System.out.println(toInteger(data1, 0, 4));
|
||||
System.out.println(Integer.MAX_VALUE);
|
||||
System.out.println(reverseHexInt("C350E900"));
|
||||
System.out.println(reverseHexInt("B2900007"));
|
||||
System.out.println(reverseHexInt("CB08"));
|
||||
System.out.println(reverseHexInt("070090B2"));
|
||||
// System.out.println(Integer.MAX_VALUE);
|
||||
// System.out.println(reverseHexInt("C350E900"));
|
||||
// System.out.println(reverseHexInt("B2900007"));
|
||||
// System.out.println(reverseHexInt("CB08"));
|
||||
// System.out.println(reverseHexInt("070090B2"));
|
||||
System.out.println(toHexIntYu(2l));
|
||||
System.out.println( HexUtils.toBytes(toHexIntYu(3l)));
|
||||
|
||||
|
||||
|
||||
// System.out.println(toHexInt(3800));
|
||||
// System.out.println(toHexInt(100000));
|
||||
// System.out.println(toBits("1000"));
|
||||
|
||||
@ -7,6 +7,7 @@ import com.xhpc.system.api.model.LoginUser;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@ -72,10 +73,19 @@ public class XhpcServiceDataUpdateServiceImpl implements IXhpcServiceDataUpdateS
|
||||
LoginUser loginUser = tokenService.getLoginUser();
|
||||
String tenantId = loginUser.getTenantId();
|
||||
if("".equals(prompt) || prompt ==null){
|
||||
String pilePrompts = redisService.getCacheObject("pilePrompt:"+tenantId);
|
||||
return AjaxResult.success(pilePrompts);
|
||||
try {
|
||||
Integer pilePrompts = redisService.getCacheObject("pilePrompt:"+tenantId);
|
||||
if(pilePrompts==null){
|
||||
return AjaxResult.success(1);
|
||||
}
|
||||
return AjaxResult.success(pilePrompts);
|
||||
}catch (Exception e){
|
||||
return AjaxResult.success(1);
|
||||
}
|
||||
}else{
|
||||
redisService.setCacheObject("pilePrompt:"+tenantId, prompt);
|
||||
|
||||
redisService.setCacheObject("pilePrompt:"+tenantId, Integer.parseInt(prompt));
|
||||
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
|
||||
@ -14,10 +14,10 @@ spring:
|
||||
nacos:
|
||||
discovery:
|
||||
# 服务注册地址
|
||||
server-addr: 172.31.183.135:8848
|
||||
server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848
|
||||
config:
|
||||
# 配置中心地址
|
||||
server-addr: 172.31.183.135:8848
|
||||
server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848
|
||||
# 配置文件格式
|
||||
file-extension: yml
|
||||
# 共享配置
|
||||
|
||||
@ -50,6 +50,15 @@ public class XhpcChargeOrderController extends BaseController {
|
||||
private TokenService tokenService;
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(XhpcChargeOrderController.class);
|
||||
|
||||
/**
|
||||
* 实时订单(川逸充)
|
||||
*/
|
||||
@GetMapping("/getCYCHistotyChargeOrderMessage")
|
||||
public AjaxResult getCYCHistotyChargeOrderMessage(Long userId, Integer userType, String tenantId,String thirdCode){
|
||||
return iXhpcChargeOrderService.getCYCHistotyChargeOrderMessage(userId,userType,tenantId,thirdCode);
|
||||
}
|
||||
|
||||
/**
|
||||
* 实时订单(微信)
|
||||
*/
|
||||
@ -74,7 +83,7 @@ public class XhpcChargeOrderController extends BaseController {
|
||||
* 启动充电
|
||||
* @param userId
|
||||
* @param serialNumber 终端编码
|
||||
* @param type 1 微信 2支付宝
|
||||
* @param type 1 微信 2支付宝 3 APP
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/startUp")
|
||||
@ -226,4 +235,19 @@ public class XhpcChargeOrderController extends BaseController {
|
||||
return iXhpcChargeOrderService.cycStartUp(request,userId, serialNumber, type,source,money,phone,PlateNum);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 按照输入充电量启动充电
|
||||
* @param userId
|
||||
* @param serialNumber 终端编码
|
||||
* @param type 1 微信 2支付宝 3 APP
|
||||
* @param chargingCapacity 充电量
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/chargingCapacityStartUp")
|
||||
public AjaxResult chargingCapacityStartUp(HttpServletRequest request, @RequestParam Long userId, @RequestParam String serialNumber, @RequestParam Integer type, @RequestParam Integer chargingCapacity){
|
||||
|
||||
return iXhpcChargeOrderService.chargingCapacityStartUp(request,userId, serialNumber, type,chargingCapacity);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -4,10 +4,7 @@ import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUnit;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xhpc.common.api.PowerPileService;
|
||||
import com.xhpc.common.api.UserTypeService;
|
||||
import com.xhpc.common.api.WebSocketService;
|
||||
import com.xhpc.common.api.WorkOrderYuService;
|
||||
import com.xhpc.common.api.*;
|
||||
import com.xhpc.common.core.domain.R;
|
||||
import com.xhpc.common.core.web.controller.BaseController;
|
||||
import com.xhpc.common.data.redis.CacheBmsReqChargerOutputData;
|
||||
@ -61,6 +58,9 @@ public class XhpcPileOrderController extends BaseController {
|
||||
@Autowired
|
||||
private PowerPileService powerPileService;
|
||||
|
||||
@Autowired
|
||||
private EvcsService evcsService;
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(XhpcPileOrderController.class);
|
||||
|
||||
/**
|
||||
@ -112,6 +112,14 @@ public class XhpcPileOrderController extends BaseController {
|
||||
message = tenantId + UserTypeUtil.CUSTOMERS + userId;
|
||||
}else if(UserTypeUtil.INTERNET_TYPE.equals(source) && userId>10000){
|
||||
message = tenantId + UserTypeUtil.CYCUSER + userId;
|
||||
if(code==200){
|
||||
Map<String, Object> map1 = new HashMap<>();
|
||||
map1.put("OperatorID", "MA6CC2LK7");
|
||||
map1.put("orderNo", orderNo);
|
||||
logger.info(">>>启动回调>>川逸充启动结果推送接口>>>>>>>>>");
|
||||
evcsService.getCYCNotificationStartChargeResult(map1);
|
||||
logger.info(">>>启动回调>>川逸充启动结果推送接口>>>>>>>>>");
|
||||
}
|
||||
}
|
||||
//消息对了内容
|
||||
if(xhpcChargeOrder.getSource()==0){
|
||||
@ -132,6 +140,10 @@ public class XhpcPileOrderController extends BaseController {
|
||||
public R pileStop(@RequestParam(value = "orderNo")String orderNo, @RequestParam(value = "status")Integer status,@RequestParam(value = "remark") String remark) {
|
||||
logger.info("桩停止回调接口>>>>>状态:"+status+"备注++"+remark+"订单号"+orderNo);
|
||||
|
||||
if("".equals(orderNo) || orderNo==null){
|
||||
logger.info(">>>>>桩停止回调接口--订单号为空>>>>>>>>>");
|
||||
return R.ok();
|
||||
}
|
||||
XhpcHistoryOrder historyOrder = xhpcHistoryOrderService.getHistoryOrderById(null, orderNo);
|
||||
//解析订单编号
|
||||
if(historyOrder !=null){
|
||||
@ -247,12 +259,22 @@ public class XhpcPileOrderController extends BaseController {
|
||||
logger.info("桩实时数据回调接口--无效订单号>>>>>orderNo:" + orderNo);
|
||||
return R.fail(500,"无效订单号");
|
||||
}
|
||||
|
||||
if(xhpcChargeOrder.getStatus()==null){
|
||||
xhpcChargeOrder.setStatus(0);
|
||||
if(xhpcChargeOrder.getInternetSerialNumber()!=null && xhpcChargeOrder.getSource()==null){
|
||||
xhpcChargeOrder.setSource(1);
|
||||
}
|
||||
}
|
||||
|
||||
if(xhpcChargeOrder.getStatus()==1||xhpcChargeOrder.getStatus()==2||xhpcChargeOrder.getStatus()==3){
|
||||
XhpcHistoryOrder historyOrder = xhpcHistoryOrderService.getHistoryOrderById(null, orderNo);
|
||||
if(historyOrder!=null){
|
||||
logger.info("桩实时数据回调接口--重复订单号>>>>>orderNo:" + orderNo);
|
||||
return R.fail(500,"无效订单号");
|
||||
}
|
||||
}
|
||||
|
||||
Map<String, Object> cacheMap = redisService.getCacheMap("order:"+orderNo);
|
||||
if(cacheMap==null || cacheMap.get("startType")==null ){
|
||||
logger.info("桩实时数据回调接口--无效订单号>>>>>orderNo:" + orderNo);
|
||||
@ -420,6 +442,10 @@ public class XhpcPileOrderController extends BaseController {
|
||||
public R pileEndOrder(@RequestParam(value = "orderNo") String orderNo) {
|
||||
logger.info("桩订单结束回调>>>>>orderNo:"+orderNo);
|
||||
try{
|
||||
if("".equals(orderNo) || orderNo==null){
|
||||
logger.info(">>>>>桩停止回调接口--订单号为空>>>>>>>>>");
|
||||
return R.ok();
|
||||
}
|
||||
XhpcHistoryOrder historyOrder = xhpcHistoryOrderService.getHistoryOrderById(null, orderNo);
|
||||
if(historyOrder !=null){
|
||||
logger.info("订单已结束不能重复结算>>>>>orderNo:"+orderNo);
|
||||
@ -497,6 +523,8 @@ public class XhpcPileOrderController extends BaseController {
|
||||
BigDecimal money = new BigDecimal(cacheOrderData.getCost()).divide(bigDecimal,2,BigDecimal.ROUND_HALF_UP);
|
||||
|
||||
if(cacheOrderData.getTotalPowerQuantity()==0 || totalPowerQuantity.compareTo(new BigDecimal(0.1))<1 || money.compareTo(new BigDecimal(0.1))<1){
|
||||
|
||||
|
||||
xhpcChargeOrder.setStatus(3);
|
||||
xhpcChargeOrder.setUpdateTime(new Date());
|
||||
int startSoc1 = cacheOrderData.getStartSoc();
|
||||
@ -504,10 +532,57 @@ public class XhpcPileOrderController extends BaseController {
|
||||
|
||||
xhpcChargeOrder.setStartSoc(startSoc1 + "");
|
||||
xhpcChargeOrder.setEndSoc(endSoc1 + "");
|
||||
Date date = new Date();
|
||||
BigDecimal bigDecimal1 = new BigDecimal(0);
|
||||
xhpcChargeOrder.setStartTime(date);
|
||||
xhpcChargeOrder.setEndTime(date);
|
||||
xhpcChargeOrder.setChargingTime("0分");
|
||||
xhpcChargeOrder.setChargingDegree(bigDecimal1);
|
||||
xhpcChargeOrder.setType("199");
|
||||
xhpcChargeOrder.setAmountCharged(bigDecimal1);
|
||||
xhpcChargeOrder.setChargingTimeNumber(0L);
|
||||
xhpcChargeOrderService.updateXhpcChargeOrder(xhpcChargeOrder);
|
||||
xhpcRealTimeOrderService.addZeroHistoryOrder(xhpcChargeOrder);
|
||||
//xhpcRealTimeOrderService.addZeroHistoryOrder(xhpcChargeOrder);
|
||||
logger.info("*********************电量为0订单号>>>>>orderNo:" + orderNo);
|
||||
logger.info("*********************电量为0订单号>>>>>orderNo:" + orderNo);
|
||||
//生成一条历史订单
|
||||
XhpcHistoryOrder xhpcHistoryOrder = new XhpcHistoryOrder();
|
||||
xhpcHistoryOrder.setStartTime(date);
|
||||
xhpcHistoryOrder.setInternetSerialNumber(xhpcChargeOrder.getInternetSerialNumber());
|
||||
xhpcHistoryOrder.setEndTime(date);
|
||||
xhpcHistoryOrder.setPowerPriceTotal(bigDecimal1);
|
||||
xhpcHistoryOrder.setServicePriceTotal(bigDecimal1);
|
||||
xhpcHistoryOrder.setTotalPower(0.0);
|
||||
xhpcHistoryOrder.setMeterValueStartEvcs(cacheOrderData.getElectricMeterStart().doubleValue());
|
||||
xhpcHistoryOrder.setMeterValueEndEvcs(cacheOrderData.getElectricMeterEnd().doubleValue());
|
||||
xhpcHistoryOrder.setVinNormal(xhpcChargeOrder.getVinNormal());
|
||||
xhpcHistoryOrder.setType(1);
|
||||
|
||||
Map<String, Object> userMessage =new HashMap<>();
|
||||
|
||||
if(!UserTypeUtil.INTERNET_TYPE.equals(source)||(UserTypeUtil.INTERNET_TYPE.equals(source) && userId>1000)){
|
||||
R user = userTypeService.getUser(null, userId, source, null, tenantId);
|
||||
if(user !=null && user.getData() !=null ){
|
||||
userMessage = (Map<String, Object>)user.getData();
|
||||
if (userMessage == null || userMessage.get("balance") == null) {
|
||||
logger.info("获取用户信息失败>>userMessage>>>orderNo:"+orderNo);
|
||||
return R.fail(500,"添加订单回调失败");
|
||||
}
|
||||
}else{
|
||||
logger.info("获取用户信息失败>>user>>>orderNo:"+orderNo);
|
||||
return R.fail(500,"添加订单回调失败");
|
||||
}
|
||||
}else{
|
||||
if(pushOrder !=null){
|
||||
if(pushOrder.get("internetSerialNumber") !=null){
|
||||
xhpcHistoryOrder.setInternetSerialNumber(pushOrder.get("internetSerialNumber").toString());
|
||||
}
|
||||
if(pushOrder.get("operatorId3rdpty") !=null){
|
||||
xhpcHistoryOrder.setOperatorId3rdptyEvcs((String) pushOrder.get("operatorId3rdpty"));
|
||||
}
|
||||
}
|
||||
}
|
||||
xhpcRealTimeOrderService.addSettlement(bigDecimal1,bigDecimal1,bigDecimal1,bigDecimal1,bigDecimal1,xhpcChargeOrder,userId,userMessage,1,cacheOrderData.getVinNormal(),xhpcHistoryOrder);
|
||||
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("code", 500);
|
||||
@ -618,11 +693,11 @@ public class XhpcPileOrderController extends BaseController {
|
||||
}else{
|
||||
money = powerPrice.add(servicePrice);
|
||||
}
|
||||
if(money.compareTo(new BigDecimal(500)) > -1){
|
||||
logger.info("结算金额大于500>>"+money+">>>orderNo:" + orderNo);
|
||||
if(money.compareTo(new BigDecimal(1000)) > -1){
|
||||
logger.info("结算金额大于1000>>"+money+">>>orderNo:" + orderNo);
|
||||
xhpcChargeOrder.setStatus(2);
|
||||
xhpcChargeOrder.setUpdateTime(new Date());
|
||||
xhpcChargeOrder.setErroRemark("充电金额大于500元");
|
||||
xhpcChargeOrder.setErroRemark("充电金额大于1000元");
|
||||
xhpcChargeOrderService.updateXhpcChargeOrder(xhpcChargeOrder);
|
||||
return R.fail(500,"无效订单号:"+orderNo);
|
||||
}
|
||||
|
||||
@ -8,6 +8,7 @@ import com.xhpc.common.core.domain.R;
|
||||
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 com.xhpc.common.redis.service.RedisService;
|
||||
import com.xhpc.order.domain.XhpcHistoryOrder;
|
||||
import com.xhpc.order.domain.XhpcStatisticsStation;
|
||||
import com.xhpc.order.domain.XhpcStatisticsTimeInterval;
|
||||
@ -48,6 +49,8 @@ public class XhpcHistoryOrderController extends BaseController {
|
||||
private IXhpcChargeOrderService chargeOrderService;
|
||||
@Autowired
|
||||
private WorkOrderYuService workOrderYuService;
|
||||
@Autowired
|
||||
private RedisService redisService;
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(XhpcHistoryOrderController.class);
|
||||
|
||||
@ -889,24 +892,32 @@ public class XhpcHistoryOrderController extends BaseController {
|
||||
* 24小时异常订单自动结算
|
||||
*/
|
||||
@GetMapping("/test4")
|
||||
@Scheduled(cron = "0 0/5 * * * ?")
|
||||
@Scheduled(cron = "0 0/10 * * * ?")
|
||||
public void test4(){
|
||||
//获取异常的订单 24小时之外的异常订单
|
||||
List<Map<String,Object>> xhpcChargeOrderList= chargeOrderService.getXhpcChargeOrderStatus(2);
|
||||
try {
|
||||
//1自动 2 4小时 3 6小时 4 8小时 5 12小时 6 44小时
|
||||
Integer pilePrompts = redisService.getCacheObject("pilePrompt:000000");
|
||||
if(pilePrompts!=null && pilePrompts!=1){
|
||||
//获取异常的订单 24小时之外的异常订单
|
||||
List<Map<String,Object>> xhpcChargeOrderList= chargeOrderService.getXhpcChargeOrderStatus(2,pilePrompts);
|
||||
|
||||
if(xhpcChargeOrderList !=null && xhpcChargeOrderList.size()>0){
|
||||
for (int i = 0; i <xhpcChargeOrderList.size() ; i++) {
|
||||
Map<String,Object> map = xhpcChargeOrderList.get(i);
|
||||
if(map !=null){
|
||||
Long chargeOrderId = Long.valueOf(map.get("chargeOrderId").toString());
|
||||
if(map.get("realTimeOrderId")!=null){
|
||||
Long realTimeOrderId = Long.valueOf(map.get("realTimeOrderId").toString());
|
||||
xhpcHistoryOrderService.addXhpcChargeOrder(realTimeOrderId,chargeOrderId);
|
||||
}else{
|
||||
xhpcHistoryOrderService.addXhpcChargeOrder(null,chargeOrderId);
|
||||
if(xhpcChargeOrderList !=null && xhpcChargeOrderList.size()>0){
|
||||
for (int i = 0; i <xhpcChargeOrderList.size() ; i++) {
|
||||
Map<String,Object> map = xhpcChargeOrderList.get(i);
|
||||
if(map !=null){
|
||||
Long chargeOrderId = Long.valueOf(map.get("chargeOrderId").toString());
|
||||
if(map.get("realTimeOrderId")!=null){
|
||||
Long realTimeOrderId = Long.valueOf(map.get("realTimeOrderId").toString());
|
||||
xhpcHistoryOrderService.addXhpcChargeOrder(realTimeOrderId,chargeOrderId);
|
||||
}else{
|
||||
xhpcHistoryOrderService.addXhpcChargeOrder(null,chargeOrderId);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}catch (Exception e){
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -922,6 +933,30 @@ public class XhpcHistoryOrderController extends BaseController {
|
||||
chargeOrderService.updateStatus();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 订单状态为null,每5分钟检测一次
|
||||
* @param
|
||||
* @param
|
||||
*/
|
||||
@GetMapping("/test6")
|
||||
@Scheduled(cron = "0 0/5 * * * ?")
|
||||
public void test6(){
|
||||
chargeOrderService.updateStatusNull();
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单状态为-1的流量方订单,每5分钟检测一次
|
||||
* @param
|
||||
* @param
|
||||
*/
|
||||
@GetMapping("/test9")
|
||||
@Scheduled(cron = "0 0/5 * * * ?")
|
||||
public void test9(){
|
||||
chargeOrderService.updateStatusNegativeOne();
|
||||
}
|
||||
|
||||
|
||||
//@Scheduled(cron = "0 0/1 * * * ?")
|
||||
@GetMapping("/getInvoiceInfo")
|
||||
public void getInvoiceInfo(){
|
||||
|
||||
@ -156,6 +156,7 @@ public class XhpcChargeOrder extends BaseEntity {
|
||||
|
||||
private String vinNormal;
|
||||
|
||||
private Integer chargingCapacity;
|
||||
public Integer getStopReasonEvcs() {
|
||||
|
||||
return stopReasonEvcs;
|
||||
@ -485,4 +486,12 @@ public class XhpcChargeOrder extends BaseEntity {
|
||||
public void setVinNormal(String vinNormal) {
|
||||
this.vinNormal = vinNormal;
|
||||
}
|
||||
|
||||
public Integer getChargingCapacity() {
|
||||
return chargingCapacity;
|
||||
}
|
||||
|
||||
public void setChargingCapacity(Integer chargingCapacity) {
|
||||
this.chargingCapacity = chargingCapacity;
|
||||
}
|
||||
}
|
||||
|
||||
@ -26,8 +26,9 @@ public interface XhpcChargeOrderMapper {
|
||||
* @param userId
|
||||
* @return
|
||||
*/
|
||||
int getHistotyChargeOrderMessage(@Param("userId") Long userId,@Param("tenantId") String tenantId,@Param("userType") Integer userType);
|
||||
Map<String,Object> getHistotyChargeOrderMessageMap(@Param("userId") Long userId,@Param("tenantId") String tenantId,@Param("userType") Integer userType,@Param("thirdCode")String thirdCode);
|
||||
|
||||
int getHistotyChargeOrderMessage(@Param("userId") Long userId,@Param("tenantId") String tenantId,@Param("userType") Integer userType);
|
||||
|
||||
Map<String,Object> getMessage(@Param("userId") Long userId);
|
||||
/**
|
||||
@ -180,7 +181,7 @@ public interface XhpcChargeOrderMapper {
|
||||
* @param status -1准备充电 0开始充电 1自动结算,2异常,3平台结算
|
||||
* @return
|
||||
*/
|
||||
List<Map<String,Object>> getXhpcChargeOrderStatus(@Param("status") Integer status);
|
||||
List<Map<String,Object>> getXhpcChargeOrderStatus(@Param("status") Integer status,@Param("number") Integer number);
|
||||
|
||||
/**
|
||||
* insert a row by 3rd.
|
||||
@ -219,6 +220,10 @@ public interface XhpcChargeOrderMapper {
|
||||
List<XhpcChargeOrder> getFourTimsStatus();
|
||||
|
||||
List<Map<String, Object>> getChargeOrderStatus();
|
||||
|
||||
void updateStatusNull();
|
||||
|
||||
void updateStatusNegativeOne();
|
||||
/**
|
||||
* 查询相同桩之后是否有订单结算
|
||||
* @param serialNumber 订单号
|
||||
@ -238,7 +243,7 @@ public interface XhpcChargeOrderMapper {
|
||||
Map<String,Object> getXhpcBarrierGate(@Param("chargingStationId")Long chargingStationId);
|
||||
|
||||
//根据VIN码获取用户
|
||||
Map<String,Object> getvVinNumber(@Param("vinNumber")String vinNumber);
|
||||
Map<String,Object> getvVinNumber(@Param("vinNumber")String vinNumber,@Param("reverseVinNumber")String reverseVinNumber);
|
||||
|
||||
//获取充电站信息
|
||||
Map<String,Object> getChargingStationById(@Param("chargingStationId")Long chargingStationId);
|
||||
|
||||
@ -26,6 +26,9 @@ public interface XhpcHistoryOrderMapper {
|
||||
public int insertXhpcWorkHistoryOrderDto(XhpcWorkHistoryOrderDto xhpcWorkHistoryOrderDto);
|
||||
|
||||
int updateXhpcHistoryOrderSerialNumber(XhpcHistoryOrder xhpcHistoryOrder);
|
||||
|
||||
|
||||
int updateXhpcHistoryOrderParkingVoucher(XhpcHistoryOrder xhpcHistoryOrder);
|
||||
/**
|
||||
* 更新 历史订单信息
|
||||
*
|
||||
|
||||
@ -18,6 +18,16 @@ import java.util.Map;
|
||||
*/
|
||||
public interface IXhpcChargeOrderService {
|
||||
|
||||
|
||||
/**
|
||||
* 判断实时订单
|
||||
*
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
AjaxResult getCYCHistotyChargeOrderMessage(Long userId, Integer userType, String tenantId,String thirdCode);
|
||||
|
||||
|
||||
/**
|
||||
* 判断实时订单
|
||||
*
|
||||
@ -150,7 +160,7 @@ public interface IXhpcChargeOrderService {
|
||||
/**
|
||||
* 24小时异常结算
|
||||
*/
|
||||
List<Map<String,Object>> getXhpcChargeOrderStatus(Integer status);
|
||||
List<Map<String,Object>> getXhpcChargeOrderStatus(Integer status,Integer number);
|
||||
|
||||
|
||||
R startUpBy3rd(String internetSerialNumber, String driverId, Integer chargingAmt, String plateNum, Integer status, String connectorId);
|
||||
@ -160,6 +170,11 @@ public interface IXhpcChargeOrderService {
|
||||
*/
|
||||
void updateStatus();
|
||||
|
||||
|
||||
void updateStatusNull();
|
||||
|
||||
void updateStatusNegativeOne();
|
||||
|
||||
/**
|
||||
* 查询是否有异常订单
|
||||
* @return
|
||||
@ -191,4 +206,14 @@ public interface IXhpcChargeOrderService {
|
||||
* @return
|
||||
*/
|
||||
R cycStartUp(HttpServletRequest request, Long userId, String serialNumber, Integer type,Integer source,BigDecimal money,String phone,String PlateNum);
|
||||
|
||||
|
||||
/**
|
||||
* 启动充电
|
||||
* @param userId
|
||||
* @param serialNumber 终端编码
|
||||
* @return
|
||||
*/
|
||||
AjaxResult chargingCapacityStartUp(HttpServletRequest request, Long userId, String serialNumber, Integer type,Integer chargingCapacity);
|
||||
|
||||
}
|
||||
|
||||
@ -54,6 +54,13 @@ public interface IXhpcHistoryOrderService {
|
||||
|
||||
int updateXhpcHistoryOrderSerialNumber(XhpcHistoryOrder xhpcHistoryOrder);
|
||||
|
||||
/**
|
||||
* 修改停车优惠券是否发生
|
||||
* @param xhpcHistoryOrder
|
||||
* @return
|
||||
*/
|
||||
int updateXhpcHistoryOrderParkingVoucher(XhpcHistoryOrder xhpcHistoryOrder);
|
||||
|
||||
|
||||
/**
|
||||
* 历史订单记录(PC)
|
||||
|
||||
@ -91,6 +91,27 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar
|
||||
REDIS =redisService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AjaxResult getCYCHistotyChargeOrderMessage(Long userId, Integer userType, String tenantId,String thirdCode) {
|
||||
Map<String,Object> map = xhpcChargeOrderMapper.getHistotyChargeOrderMessageMap(userId,tenantId,userType,thirdCode);
|
||||
if(map !=null){
|
||||
if(map.get("status")==null){
|
||||
return AjaxResult.error(1201,"无实时数据");
|
||||
}else if("-1".equals(map.get("status").toString())){
|
||||
return AjaxResult.error(1201,"无实时数据");
|
||||
}else if("0".equals(map.get("status").toString())){
|
||||
return AjaxResult.success(map);
|
||||
}else if("1".equals(map.get("status").toString()) ||"3".equals(map.get("status").toString())){
|
||||
return AjaxResult.success(map);
|
||||
}else if("2".equals(map.get("status").toString())){
|
||||
return AjaxResult.success(map);
|
||||
}{
|
||||
return AjaxResult.error(1201,"无实时数据");
|
||||
}
|
||||
}
|
||||
return AjaxResult.error(1201,"无实时数据");
|
||||
}
|
||||
|
||||
@Override
|
||||
public AjaxResult getHistotyChargeOrderMessage(HttpServletRequest request) {
|
||||
try{
|
||||
@ -145,6 +166,7 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar
|
||||
@Transactional
|
||||
public AjaxResult startUp(HttpServletRequest request, Long userId, String terminalSerialNumber, Integer type) {
|
||||
try{
|
||||
XhpcChargeOrder xhpcChargeOrder = new XhpcChargeOrder();
|
||||
LoginUser loginUser = tokenService.getLoginUser(request);
|
||||
if (StringUtils.isNotNull(loginUser)) {
|
||||
String username = loginUser.getUsername();
|
||||
@ -169,6 +191,7 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar
|
||||
return AjaxResult.error(UserTypeUtil.LOGIN_TYPE, "此账号不能在该场站充电,请使用手机号登录");
|
||||
}
|
||||
}
|
||||
xhpcChargeOrder.setDriverId(userMessage.get("phone").toString());
|
||||
String pattern = "^([0-9]{16})";
|
||||
Pattern compile = Pattern.compile(pattern);
|
||||
Matcher m = compile.matcher(terminalSerialNumber);
|
||||
@ -239,7 +262,17 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar
|
||||
}
|
||||
logger.info("<<<<<<<<<<<<<<<<<<<<<<<<终端编号>>>>"+terminalSerialNumber+">>>>>>>>>>>>>"+tenantId);
|
||||
|
||||
logger.info("<<<<<<<<<<<<<<<<<<<<<<<<终端编号>>>>>>>>>>>>>>>>");
|
||||
//查询该场站是否有运行充电权限
|
||||
Map<String, Object> cacheMap1 = redisService.getCacheMap("chargingMethod:" + xhpcTerminal.getChargingStationId());
|
||||
|
||||
if(cacheMap1 ==null){
|
||||
return AjaxResult.error(1104, "该充电场站不支持扫描充电");
|
||||
}else{
|
||||
if(cacheMap1.get("1")==null){
|
||||
return AjaxResult.error(1104, "该充电场站不支持扫描充电");
|
||||
}
|
||||
}
|
||||
|
||||
//余额
|
||||
String balance = new BigDecimal(userMessage.get("balance").toString()).multiply(new BigDecimal(100)).toString();
|
||||
//获取桩信息
|
||||
@ -252,6 +285,7 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar
|
||||
startChargingData.setOrderNo(orderNo);
|
||||
if(userMessage.get("phone") !=null){
|
||||
startChargingData.setTel(userMessage.get("phone").toString());
|
||||
xhpcChargeOrder.setDriverId(userMessage.get("phone").toString());
|
||||
}
|
||||
startChargingData.setPileNo(xhpcTerminal.getPileSerialNumber());
|
||||
startChargingData.setGunId(xhpcTerminal.getSerialNumber().substring(14));
|
||||
@ -299,7 +333,7 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar
|
||||
logger.info("<<<<<<<<<<<<<<<<<<<<<<<<number>>>>>>>>>>>>>>>>>:"+number);
|
||||
logger.info("<<<<<<<<<<<<<<<<<<<<<<<<Soc>>>>>>>>>>>>>>>>>:"+startChargingData.getSoc());
|
||||
//创建充电订单(充电启动soc初始值,结束是获取,并修改状态)
|
||||
XhpcChargeOrder xhpcChargeOrder = new XhpcChargeOrder();
|
||||
|
||||
xhpcChargeOrder.setChargingStationId(xhpcTerminal.getChargingStationId());
|
||||
xhpcChargeOrder.setUserId(userId);
|
||||
xhpcChargeOrder.setTerminalId(xhpcTerminal.getTerminalId());
|
||||
@ -313,8 +347,10 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar
|
||||
}
|
||||
if (type == 1) {
|
||||
xhpcChargeOrder.setChargingMode("微信");
|
||||
} else {
|
||||
} else if (type == 2){
|
||||
xhpcChargeOrder.setChargingMode("支付宝");
|
||||
}else{
|
||||
xhpcChargeOrder.setChargingMode("App");
|
||||
}
|
||||
xhpcChargeOrder.setCreateTime(Calendar.getInstance().getTime());
|
||||
xhpcChargeOrder.setType("91");
|
||||
@ -497,8 +533,8 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String,Object>> getXhpcChargeOrderStatus(Integer status) {
|
||||
return xhpcChargeOrderMapper.getXhpcChargeOrderStatus(status);
|
||||
public List<Map<String,Object>> getXhpcChargeOrderStatus(Integer status,Integer number) {
|
||||
return xhpcChargeOrderMapper.getXhpcChargeOrderStatus(status,number);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -741,6 +777,15 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateStatusNull() {
|
||||
xhpcChargeOrderMapper.updateStatusNull();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateStatusNegativeOne() {
|
||||
xhpcChargeOrderMapper.updateStatusNegativeOne();
|
||||
}
|
||||
/**
|
||||
* 查询是否有异常订单
|
||||
*
|
||||
@ -844,7 +889,16 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar
|
||||
}
|
||||
}
|
||||
}
|
||||
//查询该场站是否有运行充电权限
|
||||
Map<String, Object> cacheMap1 = redisService.getCacheMap("chargingMethod:" + xhpcTerminal.getChargingStationId());
|
||||
|
||||
if(cacheMap1 ==null){
|
||||
return R.fail(1104, "该充电场站不支持刷卡充电");
|
||||
}else{
|
||||
if(cacheMap1.get("3")==null){
|
||||
return R.fail(1104, "该充电场站不支持扫描充电");
|
||||
}
|
||||
}
|
||||
//创建订单
|
||||
//订单流水号 终端号+年月日时分秒+自增4位 共32位
|
||||
String orderNo = genOrder(serialNumber);
|
||||
@ -911,12 +965,18 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar
|
||||
@Override
|
||||
public R pileVin(String serialNumber, String vinNumber) {
|
||||
try{
|
||||
System.out.println("=========vin======serialNumber======="+serialNumber);
|
||||
System.out.println("=========vin======vinNumber======="+vinNumber);
|
||||
if("".equals(vinNumber) || vinNumber ==null ){
|
||||
return R.fail(1888, "VIN码为空");
|
||||
}else if (vinNumber.length()!=17){
|
||||
return R.fail(1880, "无效VIN码");
|
||||
}
|
||||
Map<String, Object> stringObjectMap = xhpcChargeOrderMapper.getvVinNumber(vinNumber);
|
||||
|
||||
XhpcChargeOrder xhpcChargeOrder = new XhpcChargeOrder();
|
||||
String reverseVinNumber = new StringBuilder(vinNumber).reverse().toString();
|
||||
System.out.println("=========vin======reverseVinNumber======="+reverseVinNumber);
|
||||
Map<String, Object> stringObjectMap = xhpcChargeOrderMapper.getvVinNumber(vinNumber,reverseVinNumber);
|
||||
if(stringObjectMap ==null && stringObjectMap.get("appUerId")==null || stringObjectMap.get("source")==null){
|
||||
return R.fail(1888, "无效VIN码");
|
||||
}
|
||||
@ -1006,6 +1066,18 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//查询该场站是否有运行充电权限
|
||||
Map<String, Object> cacheMap1 = redisService.getCacheMap("chargingMethod:" + xhpcTerminal.getChargingStationId());
|
||||
|
||||
if(cacheMap1 ==null){
|
||||
return R.fail(1104, "该充电场站不支持刷卡充电");
|
||||
}else{
|
||||
if(cacheMap1.get("2")==null){
|
||||
return R.fail(1104, "该充电场站不支持扫描充电");
|
||||
}
|
||||
}
|
||||
|
||||
//余额
|
||||
String balance = new BigDecimal(userMessage.get("balance").toString()).multiply(new BigDecimal(100)).toString();
|
||||
//获取桩信息
|
||||
@ -1018,6 +1090,7 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar
|
||||
startChargingData.setOrderNo(orderNo);
|
||||
if(userMessage.get("phone") !=null){
|
||||
startChargingData.setTel(userMessage.get("phone").toString());
|
||||
xhpcChargeOrder.setDriverId(userMessage.get("phone").toString());
|
||||
}
|
||||
startChargingData.setPileNo(xhpcTerminal.getPileSerialNumber());
|
||||
startChargingData.setGunId(xhpcTerminal.getSerialNumber().substring(14));
|
||||
@ -1059,7 +1132,7 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar
|
||||
logger.info("<<<<<<<<<<<<<<<<<<<<<<<<number>>>>>>>>>>>>>>>>>:"+number);
|
||||
logger.info("<<<<<<<<<<<<<<<<<<<<<<<<Soc>>>>>>>>>>>>>>>>>:"+startChargingData.getSoc());
|
||||
//创建充电订单(充电启动soc初始值,结束是获取,并修改状态)
|
||||
XhpcChargeOrder xhpcChargeOrder = new XhpcChargeOrder();
|
||||
|
||||
xhpcChargeOrder.setChargingStationId(xhpcTerminal.getChargingStationId());
|
||||
xhpcChargeOrder.setUserId(userId);
|
||||
xhpcChargeOrder.setTerminalId(xhpcTerminal.getTerminalId());
|
||||
@ -1357,10 +1430,6 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar
|
||||
}
|
||||
//终端状态是否空闲\是否插枪
|
||||
Map<String, Object> cacheMap = REDIS.getCacheMap("gun:" + serialNumber);
|
||||
logger.info("<<<<<<<<<<<<<<<<<川逸充<<<<<<<cacheMap>>>>>>>>>>>>>>>>>");
|
||||
logger.info("<<<<<<<<<<<<<<<<<川逸充<<<<<<<cacheMap>>>>>>>>>>>>>>>>>" + serialNumber);
|
||||
logger.info("<<<<<<<<<<<<<<<<<川逸充<<<<<<<cacheMap>>>>>>>>>>>>>>>>>" + cacheMap.toString());
|
||||
logger.info("<<<<<<<<<<<<<<<<<川逸充<<<<<<<cacheMap>>>>>>>>>>>>>>>>>");
|
||||
if (cacheMap == null) {
|
||||
r.setCode(500);
|
||||
r.setMsg("未注册的终端,请选择其他终端充电");
|
||||
@ -1466,20 +1535,6 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar
|
||||
int res = xhpcChargeOrderMapper.addXhpcChargeOrder(xhpcChargeOrder);
|
||||
logger.info("<<<<<<<<<<<<<<<<川逸充<<<<<<<<第三方启动订单号>>>>>>>>>>>>>>>>>:" + xhpcChargeOrder.getInternetSerialNumber());
|
||||
|
||||
String connectorID = chargingStationMap.get("areaCode").toString();
|
||||
if(chargingStationId>999 && chargingStationId<=9999){
|
||||
connectorID =connectorID+chargingStationId.toString();
|
||||
}else if(chargingStationId>99 && chargingStationId<=999){
|
||||
connectorID =connectorID+"0"+chargingStationId.toString();
|
||||
}else if(chargingStationId>9 && chargingStationId<=99){
|
||||
connectorID =connectorID+"00"+chargingStationId.toString();
|
||||
}else {
|
||||
connectorID =connectorID+"000"+chargingStationId.toString();
|
||||
}
|
||||
connectorID=connectorID+serialNumber.substring(serialNumber.length()-2, serialNumber.length());
|
||||
|
||||
|
||||
String finalConnectorID = connectorID;
|
||||
executorService.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
@ -1489,20 +1544,17 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar
|
||||
xhpcChargeOrder.setRateModelId(rateModelId);
|
||||
xhpcChargeOrderMapper.updateXhpcChargeOrder(xhpcChargeOrder);
|
||||
|
||||
System.out.println("===================finalConnectorID==========================");
|
||||
System.out.println("===================finalConnectorID=========================="+finalConnectorID);
|
||||
System.out.println("===================finalConnectorID==========================");
|
||||
System.out.println("===================startTime==========================");
|
||||
System.out.println("===================startTime=========================="+DateUtil.format(date1,"yyyy-MM-dd HH:mm:ss"));
|
||||
System.out.println("===================startTime==========================");
|
||||
Map<String, Object> pushOrder = new HashMap<>();
|
||||
pushOrder.put("startChargeSeqStat", 1);
|
||||
pushOrder.put("startChargeSeqStat", 2);
|
||||
pushOrder.put("internetSerialNumber", xhpcChargeOrder.getInternetSerialNumber());
|
||||
pushOrder.put("connectorID", finalConnectorID);
|
||||
pushOrder.put("connectorID", serialNumber);
|
||||
pushOrder.put("startChargeNotificationStat", 0);
|
||||
pushOrder.put("chargeOrderInfoNotificationStat", 0);
|
||||
pushOrder.put("operatorId3rdpty", operatorIdEvcs);
|
||||
pushOrder.put("startTime", DateUtil.format(date1,"yyyy-MM-dd HH:mm:ss"));
|
||||
pushOrder.put("phone", phone);
|
||||
pushOrder.put("operatorId3rdptyName", "CYC");
|
||||
|
||||
REDIS.setCacheMap("pushOrder:".concat(orderNo), pushOrder);
|
||||
|
||||
String gun ="gun:"+serialNumber;
|
||||
@ -1530,6 +1582,241 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar
|
||||
return r;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public AjaxResult chargingCapacityStartUp(HttpServletRequest request, Long userId, String terminalSerialNumber, Integer type, Integer chargingCapacity) {
|
||||
try{
|
||||
XhpcChargeOrder xhpcChargeOrder = new XhpcChargeOrder();
|
||||
LoginUser loginUser = tokenService.getLoginUser(request);
|
||||
if (StringUtils.isNotNull(loginUser)) {
|
||||
String username = loginUser.getUsername();
|
||||
Integer userType = loginUser.getUserType();
|
||||
Long userid = loginUser.getUserid();
|
||||
if (chargingCapacity == null) {
|
||||
return AjaxResult.error(1104, "请输入充电量");
|
||||
}else{
|
||||
if(chargingCapacity>=65535){
|
||||
return AjaxResult.error(1104, "输入充电量超出了限制");
|
||||
}
|
||||
if(chargingCapacity<=0){
|
||||
return AjaxResult.error(1104, "输入充电量应该大于0");
|
||||
}
|
||||
}
|
||||
logger.info("<<<<<<<<<<<<<<<<<<<<<<<登录用户id>>>>>>>>>>>>>>>>>"+userid);
|
||||
logger.info("<<<<<<<<<<<<<<<<<<<<<<<桩号>>>>>>>>>>>>>>>>>"+terminalSerialNumber);
|
||||
String openId = loginUser.getOpenId();
|
||||
String tenantId = loginUser.getTenantId();
|
||||
long l1 = System.currentTimeMillis();
|
||||
logger.info("<<<<<<<"+terminalSerialNumber+"开始启动充电获取用户时间>>>>>:"+l1);
|
||||
R user = userTypeService.getUser(null, userid, userType, terminalSerialNumber,loginUser.getTenantId());
|
||||
long l2 = System.currentTimeMillis();
|
||||
logger.info("<<<<<<<"+terminalSerialNumber+"结束启动充电获取用户时间>>>>>:"+l2);
|
||||
logger.info("<<<<<<<"+terminalSerialNumber+"启动充电时间差>>>>>:"+(l2-l1));
|
||||
if (!userid.equals(userId) || user == null || user.getData() == null) {
|
||||
return AjaxResult.error(UserTypeUtil.LOGIN_TYPE, "请重新登录");
|
||||
}
|
||||
Map<String, Object> userMessage = (Map<String, Object>)user.getData();
|
||||
if(UserTypeUtil.USER_TYPE !=userType){
|
||||
if(Integer.valueOf(userMessage.get("number").toString())==0){
|
||||
return AjaxResult.error(UserTypeUtil.LOGIN_TYPE, "此账号不能在该场站充电,请使用手机号登录");
|
||||
}
|
||||
}
|
||||
xhpcChargeOrder.setDriverId(userMessage.get("phone").toString());
|
||||
String pattern = "^([0-9]{16})";
|
||||
Pattern compile = Pattern.compile(pattern);
|
||||
Matcher m = compile.matcher(terminalSerialNumber);
|
||||
if (terminalSerialNumber.length() != 16 || !m.matches()) {
|
||||
return AjaxResult.error(1104, "无效的终端编号");
|
||||
}
|
||||
//终端信息
|
||||
XhpcTerminal xhpcTerminal = xhpcChargeOrderMapper.getXhpcTerminalSerialNumber(terminalSerialNumber,tenantId);
|
||||
if (xhpcTerminal == null || xhpcTerminal.getTerminalId() == null || xhpcTerminal.getChargingPileId() == null || xhpcTerminal.getPileSerialNumber() == null) {
|
||||
return AjaxResult.error(1104, "因限电该桩已停用,请选择其他桩进行充电");
|
||||
}else {
|
||||
if(xhpcTerminal.getStatus()==1){
|
||||
if(xhpcTerminal.getPrompt() !=null){
|
||||
return AjaxResult.error(1104, xhpcTerminal.getPrompt());
|
||||
}else{
|
||||
return AjaxResult.error(1104, "桩已停用,请选择其他桩进行充电");
|
||||
}
|
||||
}
|
||||
}
|
||||
//查看充电用户金额是否大于5元
|
||||
//Map<String, Object> userMessage = xhpcChargeOrderMapper.getUserMessage(userId);
|
||||
BigDecimal a = new BigDecimal(5);
|
||||
if (userMessage == null || userMessage.get("balance") == null || a.compareTo(new BigDecimal(userMessage.get("balance").toString())) == 1) {
|
||||
return AjaxResult.error(1100, "金额小于5元,不能充电,请充值后再进行充电");
|
||||
}
|
||||
//充电用户是否存在异常的订单
|
||||
int j = xhpcChargeOrderMapper.countXhpcChargeOrder(userId,userType,tenantId);
|
||||
if (j > 0) {
|
||||
return AjaxResult.error(1103, "你有异常订单未解决,请拨打客服电话进行解决");
|
||||
}
|
||||
//查看充电用户是否有申请退款的订单,还未处理
|
||||
if (Integer.parseInt(userMessage.get("isRefundApplication").toString()) != 0) {
|
||||
return AjaxResult.error(1101, "你有申请退款订单在审核中,需要充电请取消申请退款");
|
||||
}
|
||||
//充电用户是否在充电中
|
||||
String i = xhpcChargeOrderMapper.countXhpcRealTimeOrder(userId,userType,tenantId);
|
||||
if (!"".equals(i) && i!=null) {
|
||||
return AjaxResult.error(1102, "车辆正在充电,请查询车辆充电信息");
|
||||
}
|
||||
//终端状态是否空闲
|
||||
//是否插枪
|
||||
Map<String, Object> cacheMap = REDIS.getCacheMap("gun:" + terminalSerialNumber);
|
||||
logger.info("<<<<<<<<<<<<<<<<<<<<<<<<cacheMap>>>>>>>>>>>>>>>>>");
|
||||
logger.info("<<<<<<<<<<<<<<<<<<<<<<<<cacheMap>>>>>>>>>>>>>>>>>" + terminalSerialNumber);
|
||||
logger.info("<<<<<<<<<<<<<<<<<<<<<<<<cacheMap>>>>>>>>>>>>>>>>>" + cacheMap.toString());
|
||||
logger.info("<<<<<<<<<<<<<<<<<<<<<<<<cacheMap>>>>>>>>>>>>>>>>>");
|
||||
|
||||
if(cacheMap==null){
|
||||
return AjaxResult.error(1105, "未注册的终端,请选择其他终端充电");
|
||||
}else{
|
||||
if(cacheMap.get("status") ==null){
|
||||
return AjaxResult.error(1106, "未知的终端状态,请选择其他终端充电");
|
||||
}else{
|
||||
String status = cacheMap.get("status").toString();
|
||||
//不同的状态
|
||||
if("离线".equals(status)||"故障".equals(status) ||"充电".equals(status)){
|
||||
return AjaxResult.error(1107, "此终端"+status+"中,请选择其他终端充电");
|
||||
}
|
||||
}
|
||||
if(cacheMap.get("vehicleGunStatus") ==null){
|
||||
return AjaxResult.error(1108, "未知的枪状态,请选择其他终端充电");
|
||||
}else{
|
||||
String vehicleGunStatus = cacheMap.get("vehicleGunStatus").toString();
|
||||
if(!"是".equals(vehicleGunStatus)){
|
||||
return AjaxResult.error(1109, "请插好充电枪");
|
||||
}
|
||||
}
|
||||
}
|
||||
logger.info("<<<<<<<<<<<<<<<<<<<<<<<<终端编号>>>>"+terminalSerialNumber+">>>>>>>>>>>>>"+tenantId);
|
||||
|
||||
logger.info("<<<<<<<<<<<<<<<<<<<<<<<<终端编号>>>>>>>>>>>>>>>>");
|
||||
//余额
|
||||
String balance = new BigDecimal(userMessage.get("balance").toString()).multiply(new BigDecimal(100)).toString();
|
||||
//获取桩信息
|
||||
Map<String, Object> xhpcChargingPileById =xhpcChargeOrderMapper.getXhpcChargingPileById(xhpcTerminal.getChargingPileId(),tenantId);
|
||||
//启动充电
|
||||
StartChargingData startChargingData = new StartChargingData();
|
||||
//订单流水号 终端号+年月日时分秒+自增4位 共32位
|
||||
String orderNo = genOrder(terminalSerialNumber);
|
||||
|
||||
startChargingData.setOrderNo(orderNo);
|
||||
if(userMessage.get("phone") !=null){
|
||||
startChargingData.setTel(userMessage.get("phone").toString());
|
||||
xhpcChargeOrder.setDriverId(userMessage.get("phone").toString());
|
||||
}
|
||||
startChargingData.setPileNo(xhpcTerminal.getPileSerialNumber());
|
||||
startChargingData.setGunId(xhpcTerminal.getSerialNumber().substring(14));
|
||||
startChargingData.setBalance(Double.valueOf(balance).intValue());
|
||||
if(xhpcChargingPileById.get("communicationProtocolVersion")!=null && !"".equals(xhpcChargingPileById.get("communicationProtocolVersion").toString())){
|
||||
startChargingData.setVersion(xhpcChargingPileById.get("communicationProtocolVersion").toString());
|
||||
}else{
|
||||
startChargingData.setVersion("0A");
|
||||
}
|
||||
//用户、桩、平台(最小的)
|
||||
int number =0;
|
||||
if(!"".equals(userMessage.get("socUser")) && userMessage.get("socUser") !=null && userMessage.get("socProtect") !=null && !"0".equals(userMessage.get("socProtect").toString())){
|
||||
number =Integer.parseInt(userMessage.get("socUser").toString());
|
||||
logger.info("=========用户、桩、平台(最小的)===number==="+number);
|
||||
}
|
||||
//平台
|
||||
String soc = redisService.getCacheObject("global:"+tenantId+":SOC");
|
||||
logger.info("=========用户、桩、平台(最小的)===soc==="+soc);
|
||||
if(!"".equals(soc) && soc!=null){
|
||||
if(number!=0){
|
||||
if(Integer.parseInt(soc)-number<0){
|
||||
number=Integer.parseInt(soc);
|
||||
logger.info("=========用户、桩、平台(最小的)1===number==="+number);
|
||||
}
|
||||
}else{
|
||||
number=Integer.parseInt(soc);
|
||||
logger.info("=========用户、桩、平台(最小的)2===number==="+number);
|
||||
}
|
||||
}
|
||||
Map<String, Object> operatorMessage = xhpcChargeOrderMapper.getOperatorMessage(xhpcTerminal.getChargingStationId());
|
||||
if(operatorMessage !=null && operatorMessage.get("soc") !=null && !"".equals(operatorMessage.get("soc"))){
|
||||
if(number!=0){
|
||||
if(Integer.parseInt(operatorMessage.get("soc").toString())-number<0){
|
||||
number=Integer.parseInt(operatorMessage.get("soc").toString());
|
||||
logger.info("=========用户、桩、平台(最小的)3===number==="+number);
|
||||
}
|
||||
}else{
|
||||
number=Integer.parseInt(operatorMessage.get("soc").toString());
|
||||
logger.info("=========用户、桩、平台(最小的)4===number==="+number);
|
||||
}
|
||||
}
|
||||
if(number !=0){
|
||||
startChargingData.setSoc(number);
|
||||
}
|
||||
logger.info("<<<<<<<<<<<<<<<<<<<<<<<<number>>>>>>>>>>>>>>>>>:"+number);
|
||||
logger.info("<<<<<<<<<<<<<<<<<<<<<<<<Soc>>>>>>>>>>>>>>>>>:"+startChargingData.getSoc());
|
||||
//创建充电订单(充电启动soc初始值,结束是获取,并修改状态)
|
||||
|
||||
xhpcChargeOrder.setChargingStationId(xhpcTerminal.getChargingStationId());
|
||||
xhpcChargeOrder.setUserId(userId);
|
||||
xhpcChargeOrder.setTerminalId(xhpcTerminal.getTerminalId());
|
||||
xhpcChargeOrder.setGunId(xhpcTerminal.getSerialNumber());
|
||||
xhpcChargeOrder.setSerialNumber(orderNo);
|
||||
xhpcChargeOrder.setSource(userType);
|
||||
xhpcChargeOrder.setStatus(-1);
|
||||
xhpcChargeOrder.setTenantId(tenantId);
|
||||
xhpcChargeOrder.setChargingCapacity(chargingCapacity);
|
||||
startChargingData.setChargingCapacity(chargingCapacity);
|
||||
if (xhpcChargingPileById != null && xhpcChargingPileById.get("power") != null) {
|
||||
xhpcChargeOrder.setPower(xhpcChargingPileById.get("power").toString());
|
||||
}
|
||||
if (type == 1) {
|
||||
xhpcChargeOrder.setChargingMode("微信");
|
||||
} else if (type == 2){
|
||||
xhpcChargeOrder.setChargingMode("支付宝");
|
||||
}else{
|
||||
xhpcChargeOrder.setChargingMode("App");
|
||||
}
|
||||
xhpcChargeOrder.setCreateTime(Calendar.getInstance().getTime());
|
||||
xhpcChargeOrder.setType("91");
|
||||
|
||||
//获取车牌
|
||||
Map<String, Object> xhpcUserVehicleMessage = xhpcChargeOrderMapper.getXhpcUserVehicleMessage(xhpcChargeOrder.getUserId(), xhpcChargeOrder.getSource());
|
||||
if(xhpcUserVehicleMessage !=null && xhpcUserVehicleMessage.get("vehicleName") !=null){
|
||||
xhpcChargeOrder.setPlateNum(xhpcUserVehicleMessage.get("vehicleName").toString());
|
||||
}
|
||||
xhpcChargeOrderMapper.addXhpcChargeOrder(xhpcChargeOrder);
|
||||
|
||||
executorService.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
R r1 = powerPileService.startChargingCapacity(startChargingData);
|
||||
logger.info("<<<<<<<<<<<<<<<<<<<<<<<<充电返回>>>>>>>>>>>>>>>>>");
|
||||
logger.info("<<<<<<<<<<<<<<<<<<<<<<<<" + r1.getCode() + ">>>>>>>>>>>>>>>>>");
|
||||
logger.info("<<<<<<<<<<<<<<<<<<<<<<<<" + r1.getMsg() + ">>>>>>>>>>>>>>>>>");
|
||||
logger.info("<<<<<<<<<<<<<<<<<<<<<<<<" + r1.getData() + ">>>>>>>>>>>>>>>>>");
|
||||
if(r1.getCode() == 200){
|
||||
try{
|
||||
xhpcChargeOrder.setRateModelId(Long.valueOf(r1.getData().toString()));
|
||||
xhpcChargeOrderMapper.updateXhpcChargeOrder(xhpcChargeOrder);
|
||||
//插一帧实时数据
|
||||
extracted(xhpcChargeOrder);
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
logger.error("update order[{}] failed.", orderNo);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
logger.info("<<<<<<<<<1111<<<<<<<<<<<<<<<C端订单号>>>>>>>>>>>>>>>>>:" + orderNo+"用户id:"+userId);
|
||||
logger.info("<<<<<<<<<2222<<<<<<<<<<<<<<<C端订单号>>>>>>>>>>>>>>>>>:" + orderNo+"用户id:"+userId);
|
||||
return AjaxResult.success();
|
||||
}else{
|
||||
return AjaxResult.error(UserTypeUtil.LOGIN_TYPE, "请重新登录");
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return AjaxResult.error(UserTypeUtil.LOGIN_TYPE, "请确认设备网络状况正常和枪正确插好后重新尝试");
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
try{
|
||||
// //String alipayPublicKey1 = getAlipayPublicKey("C:\\Users\\Administrator\\Downloads\\alipayCertPublicKey_RSA2.crt");
|
||||
|
||||
@ -129,10 +129,11 @@ public class XhpcHistoryOrderServiceImpl extends BaseService implements IXhpcHis
|
||||
SM.put("88", "接收 BMS 充电统计报文超时(0X88)");
|
||||
SM.put("89", "接收对侧 CCS 报文超时(0X89)");
|
||||
SM.put("90", "未知原因中止(0X90)");
|
||||
SM.put("91", "远程重启应答(0X91)");
|
||||
SM.put("91", "平台结算(0X91)");
|
||||
SM.put("92", "远程重启(0X92)");
|
||||
SM.put("93", "远程更新应答(0X93)");
|
||||
SM.put("94", "远程更新(0X94)");
|
||||
SM.put("199", "平台空订单(0X199)");
|
||||
}
|
||||
|
||||
|
||||
@ -289,6 +290,11 @@ public class XhpcHistoryOrderServiceImpl extends BaseService implements IXhpcHis
|
||||
return xhpcHistoryOrderMapper.updateXhpcHistoryOrderSerialNumber(xhpcHistoryOrder);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int updateXhpcHistoryOrderParkingVoucher(XhpcHistoryOrder xhpcHistoryOrder) {
|
||||
return xhpcHistoryOrderMapper.updateXhpcHistoryOrderParkingVoucher(xhpcHistoryOrder);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> getListPage(String tenantId,Long chargingStationId,Long chargingPileId,Long terminalId, String phone, String transactionNumber, Integer status, String chargingStationName, Long operatorId, Integer source, String beginStartTime, String beginEndTime, Long userId, Integer type,String affiliationOrganization,String evcsOrderNo,String plateNum,Integer internetId,String internetSerialNumber,String terminalName,String vinCode,String overStartTime,String overEndTime,Long personnelId,Integer confirmResult) {
|
||||
|
||||
@ -531,7 +537,7 @@ public class XhpcHistoryOrderServiceImpl extends BaseService implements IXhpcHis
|
||||
if(map.get("startTime")!=null && map.get("endTime")!=null){
|
||||
xhpcRealTimeOrderService.getExamine(chargeOrderId,powerPriceTotal,servicePriceTotal,chargingDegree,map.get("startTime").toString(),map.get("endTime").toString());
|
||||
}else{
|
||||
xhpcRealTimeOrderService.getExamine(chargeOrderId,powerPriceTotal,servicePriceTotal,chargingDegree,null,null);
|
||||
xhpcRealTimeOrderService.getExamine(chargeOrderId,powerPriceTotal,servicePriceTotal,chargingDegree,map.get("createTime").toString(),map.get("createTime").toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -231,6 +231,7 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe
|
||||
Map<String, Object> message = xhpcRealTimeOrderMapper.getMessageChargeOrderId(chargeOrderId);
|
||||
message.put("powerPriceTotal",0);
|
||||
message.put("servicePriceTotal",0);
|
||||
message.put("chargingDegree",0);
|
||||
return message;
|
||||
}
|
||||
//基本信息
|
||||
@ -1242,12 +1243,6 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe
|
||||
String openid ="";
|
||||
String refundType ="";
|
||||
if(!UserTypeUtil.INTERNET_TYPE.equals(source)){
|
||||
xhpcHistoryOrder.setUserNameEvcs(userMessage.get("phone").toString());
|
||||
if(UserTypeUtil.USER_TYPE.equals(source)){
|
||||
xhpcHistoryOrder.setPhone(userMessage.get("phone").toString());
|
||||
}else{
|
||||
xhpcHistoryOrder.setPhone(userMessage.get("account").toString());
|
||||
}
|
||||
//增加流水订单号
|
||||
if(operatorMessage!=null && operatorMessage.get("operatorId")!=null){
|
||||
String evcs = EvcsUtil.transferInternetOrderNo(xhpcChargeOrder.getSerialNumber(), operatorMessage.get("operatorId").toString());
|
||||
@ -1256,6 +1251,9 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe
|
||||
//扣除用户实际消费金额,添加消费记录 剩余的钱
|
||||
BigDecimal balance1 =new BigDecimal(userMessage.get("balance").toString());
|
||||
subtract = balance1.subtract(actPrice);
|
||||
|
||||
logger.info("<<<<<<<<<<<<<<<<原本金额>>>>>>>>balance1>>>>>>>>>"+balance1.toString());
|
||||
logger.info("<<<<<<<<<<<<<<<<剩余金额>>>>>>>>subtract>>>>>>>>>"+subtract.toString());
|
||||
int i = xhpcChargeOrderService.updateUserBalance(userId, subtract,xhpcChargeOrder.getSource(),xhpcChargeOrder.getTenantId());
|
||||
if(i==0){
|
||||
//扣钱失败
|
||||
@ -1263,6 +1261,11 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
return R.fail();
|
||||
}else{
|
||||
if(UserTypeUtil.USER_TYPE.equals(source)){
|
||||
Map<String, Object> userMessage1 = xhpcChargeOrderService.getUserMessage(userId);
|
||||
logger.info("<<<<<<<<<<<<<<<<扣钱成功>>>>>>userMessage1>>>>>"+userMessage1.toString());
|
||||
}
|
||||
logger.info("<<<<<<<<<<<<<<<<扣钱成功>>>>>>>>>>用户金额>>>>>>>"+balance1 +">>>>>>>>>>扣款金额>>>>>>>>>>"+actPrice+">>>>>>>>>>>>>剩余金额>>>>>>>>>>>>>>>>"+subtract+">>>>订单号>>>>>>>"+xhpcHistoryOrder.getSerialNumber());
|
||||
//添加流水
|
||||
xhpcChargeOrderService.addUserAccountStatement(userId, actPrice.negate(), subtract, xhpcChargeOrder.getChargeOrderId(), 3, date,xhpcChargeOrder.getSource());
|
||||
map.put("userId",userId);
|
||||
@ -1277,9 +1280,6 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe
|
||||
map.put("remark","充电结算自动申请退款");
|
||||
}
|
||||
}else if(UserTypeUtil.INTERNET_TYPE.equals(source) && xhpcChargeOrder.getUserId()>10000){
|
||||
|
||||
xhpcHistoryOrder.setUserNameEvcs(userMessage.get("phone").toString());
|
||||
xhpcHistoryOrder.setPhone(userMessage.get("phone").toString());
|
||||
//增加流水订单号
|
||||
if(operatorMessage!=null && operatorMessage.get("operatorId")!=null){
|
||||
String evcs = EvcsUtil.transferInternetOrderNo(xhpcChargeOrder.getSerialNumber(), operatorMessage.get("operatorId").toString());
|
||||
@ -1295,6 +1295,7 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
return R.fail();
|
||||
}else{
|
||||
logger.info("<<<<<<<<<<<<<<<<扣钱成功>>>>>>>>>>用户金额>>>>>>>"+balance1 +">>>>>>>>>>扣款金额>>>>>>>>>>"+actPrice+">>>>>>>>>>>>>剩余金额>>>>>>>>>>>>>>>>"+subtract+">>>>订单号>>>>>>>"+xhpcHistoryOrder.getSerialNumber());
|
||||
//添加流水
|
||||
xhpcChargeOrderService.addUserAccountStatement(userId, actPrice.negate(), subtract, xhpcChargeOrder.getChargeOrderId(), 3, date,xhpcChargeOrder.getSource());
|
||||
map.put("userId",userId);
|
||||
@ -1305,6 +1306,10 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe
|
||||
map.put("remark","充电结算自动申请退款");
|
||||
}
|
||||
}
|
||||
xhpcHistoryOrder.setUserNameEvcs(xhpcChargeOrder.getDriverId());
|
||||
xhpcHistoryOrder.setPhone(xhpcChargeOrder.getDriverId());
|
||||
logger.info("<<<<<<<<<<<<<<<<订单结束异步之前>>>>>getUserNameEvcs>>>>>>>>>>>>"+xhpcHistoryOrder.getUserNameEvcs());
|
||||
logger.info("<<<<<<<<<<<<<<<<订单结束异步之前>>>>>getPhone>>>>>>>>>>>>"+xhpcHistoryOrder.getPhone());
|
||||
|
||||
int number = xhpcHistoryOrderService.updateXhpcHistoryOrderSerialNumber(xhpcHistoryOrder);
|
||||
if(number==0){
|
||||
@ -1408,49 +1413,61 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe
|
||||
logger.info("<<<<<<<<<11<<<<<<<川逸充,调用订单结束推送>>>>>>>>>>>>>>>>>");
|
||||
Map<String, Object> orderMap =new HashMap<>();
|
||||
orderMap.put("orderNo",xhpcHistoryOrder.getSerialNumber());
|
||||
orderMap.put("OperatorID","MA6CC2LK7");
|
||||
orderMap.put("elecMoney",xhpcHistoryOrder.getPowerPriceTotal());
|
||||
orderMap.put("seviceMoney",xhpcHistoryOrder.getServicePriceTotal());
|
||||
orderMap.put("totalMoney",xhpcHistoryOrder.getTotalPower());
|
||||
|
||||
evcsService.getCYCNotificationConnectorChargeStatus(orderMap);
|
||||
logger.info("<<<<<<<<<22<<<<<<<川逸充,调用订单结束推送>>>>>>>>>>>>>>>>>");
|
||||
logger.info("<<<<<<<<<22<<<<<<<川逸充,调用订单结束推送>>>>>>>>>>>>>orderMap>>>>"+orderMap.toString());
|
||||
}
|
||||
}
|
||||
});
|
||||
//小华充电二台子社区充电站 道闸
|
||||
// try{
|
||||
// if(xhpcChargeOrder.getPlateNum() !=null && !"".equals(xhpcChargeOrder.getPlateNum())){
|
||||
// Map<String, Object> xhpcBarrierGate = xhpcChargeOrderService.getXhpcBarrierGate(xhpcChargeOrder.getChargingStationId());
|
||||
// if(xhpcBarrierGate !=null && xhpcBarrierGate.get("url") !=null && xhpcBarrierGate.get("chargingStationNumber") !=null){
|
||||
// Map<String, Object> barrierGateMap = new HashMap<>();
|
||||
// barrierGateMap.put("plateNo", xhpcChargeOrder.getPlateNum());
|
||||
// barrierGateMap.put("chargingStationNumber", xhpcBarrierGate.get("chargingStationNumber").toString());
|
||||
// barrierGateMap.put("chargingStationName", xhpcBarrierGate.get("name").toString());
|
||||
// barrierGateMap.put("address", xhpcBarrierGate.get("address").toString());
|
||||
// barrierGateMap.put("longitude", xhpcBarrierGate.get("longitude").toString());
|
||||
// barrierGateMap.put("latitude", xhpcBarrierGate.get("latitude").toString());
|
||||
// barrierGateMap.put("startTime", xhpcHistoryOrder.getStartTime());
|
||||
// barrierGateMap.put("endTime", xhpcHistoryOrder.getEndTime());
|
||||
// JSONObject json = new JSONObject(barrierGateMap);
|
||||
// String result = HttpUtils.post(xhpcBarrierGate.get("url").toString(), json);
|
||||
// JSONObject jsonObject = JSON.parseObject(result);
|
||||
// String code = jsonObject.getString("code");
|
||||
// XhpcBarrierGateRecord xhpcBarrierGateRecord = new XhpcBarrierGateRecord();
|
||||
// if("200".equals(code)){
|
||||
// xhpcBarrierGateRecord.setStatus(0);
|
||||
// }else{
|
||||
// xhpcBarrierGateRecord.setStatus(1);
|
||||
// }
|
||||
// xhpcBarrierGateRecord.setBarrierGateId(Long.parseLong(xhpcBarrierGate.get("barrierGateId").toString()));
|
||||
// xhpcBarrierGateRecord.setUserId(userId);
|
||||
// xhpcBarrierGateRecord.setSource(source);
|
||||
// xhpcBarrierGateRecord.setChargingStationId(xhpcChargeOrder.getChargingStationId());
|
||||
// xhpcBarrierGateRecord.setSendingTime(new Date());
|
||||
// xhpcBarrierGateRecord.setDelFlag(0);
|
||||
// xhpcBarrierGateRecord.setRemark(result);
|
||||
// xhpcRealTimeOrderMapper.insertXhpcBarrierGateRecord(xhpcBarrierGateRecord);
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// }catch (Exception e){
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
try{
|
||||
if(xhpcChargeOrder.getPlateNum() !=null && !"".equals(xhpcChargeOrder.getPlateNum())){
|
||||
Map<String, Object> xhpcBarrierGate = xhpcChargeOrderService.getXhpcBarrierGate(xhpcChargeOrder.getChargingStationId());
|
||||
if(xhpcBarrierGate !=null && xhpcBarrierGate.get("url") !=null && xhpcBarrierGate.get("chargingStationNumber") !=null){
|
||||
Map<String, Object> barrierGateMap = new HashMap<>();
|
||||
barrierGateMap.put("plateNo", xhpcChargeOrder.getPlateNum());
|
||||
barrierGateMap.put("chargingStationNumber", xhpcBarrierGate.get("chargingStationNumber").toString());
|
||||
barrierGateMap.put("chargingStationName", xhpcBarrierGate.get("name").toString());
|
||||
barrierGateMap.put("address", xhpcBarrierGate.get("address").toString());
|
||||
barrierGateMap.put("longitude", xhpcBarrierGate.get("longitude").toString());
|
||||
barrierGateMap.put("latitude", xhpcBarrierGate.get("latitude").toString());
|
||||
barrierGateMap.put("startTime", xhpcHistoryOrder.getStartTime());
|
||||
barrierGateMap.put("endTime", xhpcHistoryOrder.getEndTime());
|
||||
JSONObject json = new JSONObject(barrierGateMap);
|
||||
String result = HttpUtils.post(xhpcBarrierGate.get("url").toString(), json);
|
||||
JSONObject jsonObject = JSON.parseObject(result);
|
||||
String code = jsonObject.getString("ret");
|
||||
XhpcBarrierGateRecord xhpcBarrierGateRecord = new XhpcBarrierGateRecord();
|
||||
if("200".equals(code)){
|
||||
xhpcBarrierGateRecord.setStatus(0);
|
||||
}else{
|
||||
xhpcBarrierGateRecord.setStatus(1);
|
||||
}
|
||||
xhpcBarrierGateRecord.setBarrierGateId(Long.parseLong(xhpcBarrierGate.get("barrierGateId").toString()));
|
||||
xhpcBarrierGateRecord.setUserId(userId);
|
||||
xhpcBarrierGateRecord.setSource(source);
|
||||
xhpcBarrierGateRecord.setChargingStationId(xhpcChargeOrder.getChargingStationId());
|
||||
xhpcBarrierGateRecord.setSendingTime(new Date());
|
||||
xhpcBarrierGateRecord.setDelFlag(0);
|
||||
xhpcBarrierGateRecord.setRemark(result);
|
||||
xhpcBarrierGateRecord.setSerialNumber(xhpcChargeOrder.getSerialNumber());
|
||||
xhpcBarrierGateRecord.setInternetSerialNumber(xhpcChargeOrder.getInternetSerialNumber());
|
||||
xhpcBarrierGateRecord.setPlateNum(xhpcChargeOrder.getPlateNum());
|
||||
xhpcBarrierGateRecord.setPhone(xhpcHistoryOrder.getPhone());
|
||||
xhpcBarrierGateRecord.setHistoryOrderId(xhpcHistoryOrder.getHistoryOrderId());
|
||||
xhpcRealTimeOrderMapper.insertXhpcBarrierGateRecord(xhpcBarrierGateRecord);
|
||||
xhpcHistoryOrder.setParkingVoucher(2);
|
||||
xhpcHistoryOrderService.updateXhpcHistoryOrderParkingVoucher(xhpcHistoryOrder);
|
||||
}
|
||||
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
logger.info("<<<<<<<<<<<<<<<<运行异常,结算失败,数据回滚>>>>>>>>>>>>>>>>>"+xhpcChargeOrder.getSerialNumber());
|
||||
|
||||
@ -14,10 +14,10 @@ spring:
|
||||
nacos:
|
||||
discovery:
|
||||
# 服务注册地址
|
||||
server-addr: 172.31.183.135:8848
|
||||
server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848
|
||||
config:
|
||||
# 配置中心地址
|
||||
server-addr: 172.31.183.135:8848
|
||||
server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848
|
||||
# 配置文件格式
|
||||
file-extension: yml
|
||||
# 共享配置
|
||||
|
||||
@ -33,7 +33,7 @@
|
||||
<result column="power" property="power"/>
|
||||
<result column="charging_time_number" property="chargingTimeNumber"/>
|
||||
<result column="tenant_id" property="tenantId"/>
|
||||
|
||||
<result column="charging_capacity" property="chargingCapacity"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="BaseResultMap" type="com.xhpc.common.domain.XhpcTerminal">
|
||||
@ -72,19 +72,33 @@
|
||||
</resultMap>
|
||||
|
||||
|
||||
<select id="getHistotyChargeOrderMessage" resultType="int">
|
||||
<select id="getHistotyChargeOrderMessageMap" resultType="map">
|
||||
select
|
||||
count(charge_order_id)
|
||||
charge_order_id as chargeOrderId,
|
||||
status
|
||||
from xhpc_charge_order
|
||||
where user_id = #{userId}
|
||||
and status=0
|
||||
and del_flag =0
|
||||
and internet_serial_number=#{thirdCode}
|
||||
<if test="tenantId !=null and tenantId !=''">
|
||||
and tenant_id=#{tenantId}
|
||||
</if>
|
||||
and source =#{userType}
|
||||
</select>
|
||||
|
||||
<select id="getHistotyChargeOrderMessage" resultType="int">
|
||||
select
|
||||
count(charge_order_id)
|
||||
from xhpc_charge_order
|
||||
where user_id = #{userId}
|
||||
and status=0
|
||||
and del_flag =0
|
||||
<if test="tenantId !=null and tenantId !=''">
|
||||
and tenant_id=#{tenantId}
|
||||
</if>
|
||||
and source =#{userType}
|
||||
</select>
|
||||
|
||||
<select id="getMessage" resultType="map">
|
||||
select
|
||||
rto.real_time_order_id as realTimeOrderId,
|
||||
@ -262,6 +276,9 @@
|
||||
<if test="null != vinNormal and vinNormal !=''">
|
||||
vin_normal,
|
||||
</if>
|
||||
<if test="null != chargingCapacity">
|
||||
charging_capacity,
|
||||
</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="null != chargingStationId ">
|
||||
@ -345,6 +362,9 @@
|
||||
<if test="null != vinNormal and vinNormal !=''">
|
||||
#{vinNormal},
|
||||
</if>
|
||||
<if test="null != chargingCapacity">
|
||||
#{chargingCapacity},
|
||||
</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
@ -606,12 +626,11 @@
|
||||
<select id="getXhpcChargeOrderStatus" resultType="map">
|
||||
select
|
||||
xco.charge_order_id as chargeOrderId,
|
||||
max(xrt.real_time_order_id) as realTimeOrderId
|
||||
(select max(real_time_order_id) from xhpc_real_time_order where charging_order_id = xco.charge_order_id LIMIT 1) realTimeOrderId
|
||||
from xhpc_charge_order as xco
|
||||
left join xhpc_real_time_order as xrt on xrt.charging_order_id = xco.charge_order_id
|
||||
where xco.del_flag = 0
|
||||
and xco.status = #{status}
|
||||
and datediff(now(), xco.create_time) > 1
|
||||
and NOW() > DATE_ADD(xco.create_time, INTERVAL #{number} HOUR)
|
||||
</select>
|
||||
|
||||
|
||||
@ -746,6 +765,16 @@
|
||||
select count(charge_order_id) from xhpc_charge_order where serial_number like concat('%', #{serialNumber}, '%') and charge_order_id > #{chargeOrderId} and status=1
|
||||
</select>
|
||||
|
||||
<update id="updateStatusNull">
|
||||
update xhpc_charge_order set status=2 where status is null and create_time < NOW() - INTERVAL 30 MINUTE
|
||||
</update>
|
||||
|
||||
<update id="updateStatusNegativeOne">
|
||||
update xhpc_charge_order set status=2 where status=-1 and source=1 and create_time < NOW() - INTERVAL 30 MINUTE
|
||||
</update>
|
||||
|
||||
|
||||
|
||||
<select id="getSerialNumberOrder" resultType="map">
|
||||
SELECT
|
||||
serial_number serialNumber
|
||||
@ -777,7 +806,7 @@
|
||||
select
|
||||
app_user_id as appUerId,
|
||||
source as source
|
||||
from xhpc_user_vehicle where vin_spec_code =#{vinNumber} and del_flag =0 and source !=1 and status =1 and vin_blacklist =0 order by create_time desc limit 1
|
||||
from xhpc_user_vehicle where (vin_spec_code =#{vinNumber} or vin_spec_code =#{reverseVinNumber}) and del_flag =0 and source !=1 and status =1 and vin_blacklist =0 order by create_time desc limit 1
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
@ -59,6 +59,7 @@
|
||||
<result column="internet_degree_commission" jdbcType="DECIMAL" property="internetDegreeCommission"/>
|
||||
<result column="source" jdbcType="INTEGER" property="source"/>
|
||||
<result column="activity_id" jdbcType="VARCHAR" property="activityId"/>
|
||||
<result column="parking_voucher" jdbcType="INTEGER" property="parkingVoucher"/>
|
||||
</resultMap>
|
||||
<sql id="Base_Column_List">
|
||||
history_order_id, charging_station_id, charge_order_id, user_id, terminal_id, serial_number,
|
||||
@ -915,7 +916,10 @@
|
||||
te.name as terminalName,
|
||||
ho.act_price as actPrice,
|
||||
ho.total_power as chargingDegree,
|
||||
co.charging_time as chargingTime
|
||||
co.charging_time as chargingTime,
|
||||
case when ho.parking_voucher=1 then '否'
|
||||
else '是'
|
||||
end as 'barrierGateRecordName'
|
||||
FROM xhpc_history_order as ho
|
||||
LEFT JOIN xhpc_charging_station as cs on cs.charging_station_id = ho.charging_station_id
|
||||
LEFT JOIN xhpc_terminal as te on te.terminal_id = ho.terminal_id
|
||||
@ -954,7 +958,10 @@
|
||||
ho.internet_serial_number as internetSerialNumber,
|
||||
te.serial_number as terminalSerialNumber,
|
||||
co.Plate_num as plateNum,
|
||||
ho.stop_reason_evcs as typeName
|
||||
ho.stop_reason_evcs as typeName,
|
||||
case when ho.parking_voucher=2 then '是'
|
||||
else '否'
|
||||
end as 'barrierGateRecordName'
|
||||
FROM xhpc_history_order as ho
|
||||
LEFT JOIN xhpc_charging_station as cs on cs.charging_station_id = ho.charging_station_id
|
||||
LEFT JOIN xhpc_terminal as te on te.terminal_id = ho.terminal_id
|
||||
@ -1007,7 +1014,7 @@
|
||||
co.source as source,
|
||||
co.Plate_num as plateNum,
|
||||
dispute_order_status as disputeOrderStatus,
|
||||
inu.phone as internetUserPhone,
|
||||
co.driver_id as internetUserPhone,
|
||||
inu.name as internetName,
|
||||
apu.phone as appUserPhone,
|
||||
ho.power_price_total as powerPriceTotal,
|
||||
@ -1034,6 +1041,9 @@
|
||||
when co.source=2 then "社区用户"
|
||||
else "B端客户!"
|
||||
end sourceName,
|
||||
case when ho.parking_voucher=1 then '否'
|
||||
else '是'
|
||||
end as 'barrierGateRecordName',
|
||||
case when ho.charging_mode="1" then "快电"
|
||||
when ho.charging_mode="2" then "恒大"
|
||||
when ho.charging_mode="3" then "新电途"
|
||||
@ -1055,9 +1065,7 @@
|
||||
left join xhpc_customers_personnel as cup on cup.customers_personnel_id = ho.user_id and ho.internet_serial_number is null and ho.source=3
|
||||
<if test="number==1">
|
||||
inner join (
|
||||
select hio.history_order_id as history_order_id from xhpc_history_order as hio INNER JOIN xhpc_app_user as xau on xau.app_user_id = hio.user_id where hio.source=0 and xau.phone LIKE concat('%',#{phone}, '%')
|
||||
union
|
||||
select hio.history_order_id as history_order_id from xhpc_history_order as hio INNER JOIN xhpc_internet_user as xiu on xiu.internet_user_id = hio.user_id where hio.source=1 and xiu.phone LIKE concat('%',#{phone}, '%')
|
||||
select hio.history_order_id as history_order_id from xhpc_history_order as hio INNER JOIN xhpc_app_user as xau on xau.app_user_id = hio.user_id where xau.phone LIKE concat('%',#{phone}, '%')
|
||||
union
|
||||
select hio.history_order_id as history_order_id from xhpc_history_order as hio INNER JOIN xhpc_community_personnel as xcp on xcp.community_personnel_id = hio.user_id where hio.source=2 and xcp.account LIKE concat('%',#{phone}, '%')
|
||||
union
|
||||
@ -1239,7 +1247,7 @@
|
||||
end sanDisputeReason,
|
||||
ed.check_order_seq as sanCheckOrderSeq,
|
||||
(SELECT phone FROM xhpc_app_user where app_user_id = co.user_id and ho.source=0) as appUserPhone,
|
||||
(SELECT phone from xhpc_internet_user where internet_user_id = co.user_id and ho.source=1) as internetUserPhone,
|
||||
co.driver_id as internetUserPhone,
|
||||
(SELECT account from xhpc_community_personnel where community_personnel_id = co.user_id and ho.source=2) as communityAccount,
|
||||
(SELECT account from xhpc_customers_personnel where customers_personnel_id = co.user_id and ho.source=3) as customersAccount,
|
||||
co.Plate_num as plateNum,
|
||||
@ -1606,10 +1614,17 @@
|
||||
<if test="phone != null">
|
||||
phone = #{phone},
|
||||
</if>
|
||||
<if test="parkingVoucher != null">
|
||||
parking_voucher = #{parkingVoucher},
|
||||
</if>
|
||||
</set>
|
||||
where internet_serial_number = #{internetSerialNumber}
|
||||
</update>
|
||||
|
||||
|
||||
<update id="updateXhpcHistoryOrderParkingVoucher" parameterType="com.xhpc.order.domain.XhpcHistoryOrder">
|
||||
UPDATE xhpc_history_order set parking_voucher = 2 where history_order_id = #{historyOrderId}
|
||||
</update>
|
||||
<select id="getHistoryOrderById" resultType="com.xhpc.order.domain.XhpcHistoryOrder">
|
||||
select * from xhpc_history_order
|
||||
where 1=1
|
||||
|
||||
@ -531,7 +531,7 @@
|
||||
co.internet_serial_number as internetSerialNumber,
|
||||
co.Plate_num as plateNum,
|
||||
inu.name as internetName,
|
||||
inu.phone as internetUserPhone,
|
||||
co.driver_id as internetUserPhone,
|
||||
cup.name as customersName,
|
||||
cup.account as customersAccount,
|
||||
cop.name as communityName,
|
||||
@ -554,7 +554,7 @@
|
||||
inner join (
|
||||
select xco.charge_order_id as charge_order_id from xhpc_charge_order as xco INNER JOIN xhpc_app_user as xau on xau.app_user_id = xco.user_id where xco.source=0 and xau.phone LIKE concat('%',#{phone}, '%')
|
||||
union
|
||||
select xco.charge_order_id as charge_order_id from xhpc_charge_order as xco INNER JOIN xhpc_internet_user as xiu on xiu.internet_user_id = xco.user_id where xco.source=1 and xiu.phone LIKE concat('%',#{phone}, '%')
|
||||
co.driver_id LIKE concat('%',#{phone}, '%')
|
||||
union
|
||||
select xco.charge_order_id as charge_order_id from xhpc_charge_order as xco INNER JOIN xhpc_community_personnel as xcp on xcp.community_personnel_id = xco.user_id where xco.source=2 and xcp.account LIKE concat('%',#{phone}, '%')
|
||||
union
|
||||
@ -659,7 +659,7 @@
|
||||
co.start_time as startTime,
|
||||
co.end_time as endTime,
|
||||
(SELECT phone FROM xhpc_app_user where app_user_id = co.user_id) as appUserPhone,
|
||||
(SELECT phone from xhpc_internet_user where internet_user_id = co.user_id) as internetUserPhone,
|
||||
co.driver_id as internetUserPhone,
|
||||
(SELECT name from xhpc_internet_user where internet_user_id = co.user_id and co.source=1) as internetName,
|
||||
(SELECT account from xhpc_community_personnel where community_personnel_id = co.user_id and co.source=2) as communityAccount,
|
||||
(SELECT account from xhpc_customers_personnel where customers_personnel_id = co.user_id and co.source=3) as customersAccount
|
||||
@ -695,7 +695,7 @@
|
||||
concat(0) as voltage,
|
||||
concat(0) as electricCurrent,
|
||||
co.status as status,
|
||||
co.create_time as createTime,
|
||||
DATE_FORMAT(co.create_time,'%Y-%m-%d %H:%i:%s')createTime,
|
||||
co.start_time as startTime,
|
||||
co.end_time as endTime,
|
||||
co.charging_degree as chargingDegree,
|
||||
@ -706,7 +706,7 @@
|
||||
concat(0) as amountCharged,
|
||||
co.Plate_num as plateNum,
|
||||
(SELECT phone FROM xhpc_app_user where app_user_id = co.user_id) as appUserPhone,
|
||||
(SELECT phone from xhpc_internet_user where internet_user_id = co.user_id) as internetUserPhone,
|
||||
co.driver_id as internetUserPhone,
|
||||
(SELECT name from xhpc_internet_user where internet_user_id = co.user_id and co.source=1) as internetName,
|
||||
(SELECT account from xhpc_community_personnel where community_personnel_id = co.user_id and co.source=2) as communityAccount,
|
||||
(SELECT account from xhpc_customers_personnel where customers_personnel_id = co.user_id and co.source=3) as customersAccount
|
||||
@ -886,7 +886,7 @@
|
||||
co.erro_remark as erroRemark,
|
||||
ro.amount_charged as amountCharged,
|
||||
(SELECT phone FROM xhpc_app_user where app_user_id = co.user_id) as appUserPhone,
|
||||
(SELECT phone from xhpc_internet_user where internet_user_id = co.user_id) as internetUserPhone
|
||||
co.driver_id as internetUserPhone
|
||||
from xhpc_charge_order as co
|
||||
Left join xhpc_real_time_order ro on co.serial_number = ro.transaction_number
|
||||
Left join xhpc_charging_station as ct on ct.charging_station_id = ro.charging_station_id
|
||||
@ -1101,6 +1101,24 @@
|
||||
<if test="null != tenantId ">
|
||||
tenant_id,
|
||||
</if>
|
||||
<if test="null != tenantId ">
|
||||
tenant_id,
|
||||
</if>
|
||||
<if test="null != serialNumber and '' != serialNumber">
|
||||
serial_number,
|
||||
</if>
|
||||
<if test="null != internetSerialNumber and '' != internetSerialNumber">
|
||||
internet_serial_number,
|
||||
</if>
|
||||
<if test="null != plateNum and '' != plateNum">
|
||||
plate_num,
|
||||
</if>
|
||||
<if test="null != phone and '' != phone">
|
||||
phone,
|
||||
</if>
|
||||
<if test="null != historyOrderId ">
|
||||
history_order_id,
|
||||
</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="null != barrierGateId">
|
||||
@ -1142,6 +1160,21 @@
|
||||
<if test="null != tenantId ">
|
||||
#{tenantId},
|
||||
</if>
|
||||
<if test="null != serialNumber and '' != serialNumber">
|
||||
#{serialNumber},
|
||||
</if>
|
||||
<if test="null != internetSerialNumber and '' != internetSerialNumber">
|
||||
#{internetSerialNumber},
|
||||
</if>
|
||||
<if test="null != plateNum and '' != plateNum">
|
||||
#{plateNum},
|
||||
</if>
|
||||
<if test="null != phone and '' != phone">
|
||||
#{phone},
|
||||
</if>
|
||||
<if test="null != historyOrderId ">
|
||||
#{historyOrderId},
|
||||
</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
|
||||
@ -1458,6 +1458,7 @@
|
||||
and xh.stop_reason_evcs !='41'
|
||||
and xh.stop_reason_evcs !='6E'
|
||||
and xh.stop_reason_evcs !='4E'
|
||||
and xh.stop_reason_evcs !='199'
|
||||
and xh.tenant_id =#{tenantId}
|
||||
<if test="status==1">
|
||||
and xh.charging_station_id in (select charging_station_id from xhpc_charging_station where operator_id=#{logOperatorId})
|
||||
@ -1508,6 +1509,7 @@
|
||||
and xh.stop_reason_evcs !='41'
|
||||
and xh.stop_reason_evcs !='6E'
|
||||
and xh.stop_reason_evcs !='4E'
|
||||
and xh.stop_reason_evcs !='199'
|
||||
and xh.charging_station_id =#{chargingStationId}
|
||||
<if test="status==1">
|
||||
and xh.charging_station_id in (select charging_station_id from xhpc_charging_station where operator_id=#{logOperatorId})
|
||||
|
||||
@ -834,7 +834,7 @@ public class XhpcRefundOriginalOrderServiceImpl implements IXhpcRefundOriginalOr
|
||||
//随机字符串
|
||||
param += "&nonce_str=" + nonceStr;
|
||||
//退款结果通知url
|
||||
String url="https://xhpc.scxhua.com/prod-api/xhpc-payment/refundOriginalOrder/paymentCallback";
|
||||
String url="https://www.scxhua.cn/prod-api/xhpc-payment/refundOriginalOrder/paymentCallback";
|
||||
param += "¬ify_url=" + url;
|
||||
//商户退款单号
|
||||
param += "&out_refund_no=" + orderNumber;
|
||||
|
||||
@ -14,10 +14,10 @@ spring:
|
||||
nacos:
|
||||
discovery:
|
||||
# 服务注册地址
|
||||
server-addr: 172.31.183.135:8848
|
||||
server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848
|
||||
config:
|
||||
# 配置中心地址
|
||||
server-addr: 172.31.183.135:8848
|
||||
server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848
|
||||
# 配置文件格式
|
||||
file-extension: yml
|
||||
# 共享配置
|
||||
|
||||
@ -14,6 +14,7 @@ import com.xhpc.pp.logic.RateModelRequestLogic;
|
||||
import com.xhpc.pp.mapper.XhpcDeviceMessageMapper;
|
||||
import com.xhpc.pp.server.ChargingPileServer;
|
||||
import com.xhpc.pp.utils.HexUtils;
|
||||
import com.xhpc.pp.utils.security.CP56Time2a;
|
||||
import com.xhpc.pp.utils.security.CRCCalculator;
|
||||
import com.xhpc.pp.utils.security.CacheDataUtils;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
@ -38,6 +39,7 @@ import static com.xhpc.common.data.redis.StaticBeanUtil.REDIS;
|
||||
import static com.xhpc.common.data.redis.StaticBeanUtil.seqHex;
|
||||
import static com.xhpc.pp.server.ChargingPileServer.*;
|
||||
import static com.xhpc.pp.utils.HexUtils.toHexInt;
|
||||
import static com.xhpc.pp.utils.HexUtils.toHexIntYu;
|
||||
|
||||
@RestController
|
||||
public class ChargingController {
|
||||
@ -146,6 +148,22 @@ public class ChargingController {
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
public static R<Object> checkPileConfig(Map<String, Object> cachePile) {
|
||||
|
||||
if (cachePile == null || cachePile.get("status") == null) {
|
||||
return R.fail("充电桩未注册");
|
||||
}
|
||||
String status = cachePile.get("status").toString();
|
||||
if (etable.contains(status)) {
|
||||
return R.fail("充电桩无法响应,状态:".concat(status));
|
||||
}
|
||||
//充电中不能下发
|
||||
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@PutMapping("charging/stop/{orderNo}/{pileNo}/{connectorId}/{version}")
|
||||
public R stopCharging(@PathVariable("orderNo") String orderNo, @PathVariable("pileNo") String pileNo,
|
||||
@PathVariable("connectorId") String connectorId,
|
||||
@ -395,12 +413,136 @@ public class ChargingController {
|
||||
return HexUtils.toBytes(msg);
|
||||
}
|
||||
|
||||
@PostMapping("charging/capacity/start")
|
||||
public R startChargingCapacity(@Validated @RequestBody StartChargingData startChargingData) {
|
||||
|
||||
String pileNo = startChargingData.getPileNo();
|
||||
String pkey = "pile:".concat(pileNo);
|
||||
log.info("==================pkey======================"+pkey);
|
||||
Map<String, Object> cachePile = REDIS.getCacheMap(pkey);
|
||||
R<Object> r = checkPile(cachePile);
|
||||
if (r.getCode() == 200) {
|
||||
String svcSrv = (String) cachePile.get("svcSrv");
|
||||
Long stationId = (Long) cachePile.get("stationId");
|
||||
ChargingStationDto cacheStation = REDIS.getCacheObject("station:".concat(stationId.toString()));
|
||||
Long stationRateModelId = cacheStation.getRateModelId();
|
||||
Long pileRateModelId = (Long) cachePile.get("rateModelId");
|
||||
if (!stationRateModelId.equals(pileRateModelId)) {
|
||||
String resultStr = RateModelRequestLogic.translate(pileNo, stationRateModelId, "0058",
|
||||
(String) cachePile.get("version"));
|
||||
String response = HttpUtils.post(fmt(svcSrv).concat("/native/pile/".concat(pileNo).concat("/rateModel")),
|
||||
resultStr);
|
||||
JSONObject responseJson = (JSONObject) JSON.parse(response);
|
||||
assert responseJson != null;
|
||||
int code = responseJson.getInteger("code");
|
||||
log.error(response);
|
||||
if (code != 200) {
|
||||
r = R.fail(code, responseJson.getString("msg"));
|
||||
} else {
|
||||
r = R.fail(responseJson.getString("msg"));
|
||||
REDIS.setCacheMap(pkey, cachePile);
|
||||
}
|
||||
} else {
|
||||
JSONObject json = (JSONObject) JSON.toJSON(startChargingData);
|
||||
String response = HttpUtils.post(fmt(svcSrv).concat("/native/charging/capacity/start"), json);
|
||||
r = getRR(response);
|
||||
r.setData(stationRateModelId);
|
||||
}
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("native/charging/capacity/start")
|
||||
public R nativeStartChargingCapacity(@Validated @RequestBody StartChargingData startChargingData) {
|
||||
|
||||
String pileNo = startChargingData.getPileNo();
|
||||
ClientHandler handler = ChargingPileServer.getHandler(pileNo);
|
||||
if (handler == null) {
|
||||
return R.fail("充电桩没有连接到上次注册的服务器,请稍后再试一次");
|
||||
} else if (!handler.isOpen()) {
|
||||
log.error("[{}]({}) connection lost", handler.getName(), pileNo);
|
||||
removeHandler(pileNo);
|
||||
return R.fail("充电桩连接已断开,请稍后再试一次");
|
||||
}
|
||||
try {
|
||||
String pileKey = "pile:".concat(pileNo);
|
||||
if (CacheDataUtils.hori(pileKey)) return R.fail("充电桩正在忙碌,请重试");
|
||||
String gunkey = "gun:".concat(pileNo).concat(startChargingData.getGunId());
|
||||
Map<String, Object> cacheGun = REDIS.getCacheMap(gunkey);
|
||||
String gunstatus = (String) cacheGun.get("status");
|
||||
if (!"空闲".equals(gunstatus)) {
|
||||
|
||||
return R.fail("端口不在空闲或正常状态,稍后再试");
|
||||
}
|
||||
if (CacheDataUtils.hori(gunkey)) return R.fail("请检查枪号是否正确,稍后再试");
|
||||
String orderkey = "order:".concat(startChargingData.getOrderNo());
|
||||
// String oldOrderKey = (String) cacheGun.get("orderkey");
|
||||
// if (oldOrderKey!=null && !oldOrderKey.equals(orderkey)) {
|
||||
// return R.fail("端口正在充电");
|
||||
// } //todo delete oldOrderKey val?
|
||||
String skey = gunkey.concat(".seqhex");
|
||||
String seq = seqHex(skey);
|
||||
byte[] msg = translateChargingCapacityStart(startChargingData, seq);
|
||||
handler.sendClientBinary(msg);
|
||||
Integer balance = startChargingData.getBalance();
|
||||
Map<String, Object> cacheOrder = REDIS.getCacheMap(orderkey);
|
||||
String pkey = "pile:".concat(pileNo);
|
||||
Map<String, Object> cachePile = REDIS.getCacheMap(pkey);
|
||||
Long pileRateModelId = (Long) cachePile.get("rateModelId");
|
||||
cacheOrder.put("rateModelId", pileRateModelId);
|
||||
cacheOrder.put("pileNo", pileNo);
|
||||
cacheOrder.put("initBalance", balance * 100);
|
||||
cacheOrder.put("logicCardNo", startChargingData.getLogicCardNo());
|
||||
cacheOrder.put("physicCardNo", startChargingData.getPhysicCardNo());
|
||||
cacheOrder.put("startType", "02");
|
||||
cacheOrder.put("gunId", startChargingData.getGunId());
|
||||
cacheOrder.put("tel", startChargingData.getTel());
|
||||
cacheOrder.put("stopSoc", startChargingData.getSoc());
|
||||
cacheOrder.put("startTime",
|
||||
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault()).format(Instant.now()));
|
||||
REDIS.setCacheMap(orderkey, cacheOrder);
|
||||
return R.ok("充电指令已下发");
|
||||
} catch (IOException e) {
|
||||
log.error("send message failed. " + e.getMessage(), e);
|
||||
return R.fail(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private byte[] translateChargingCapacityStart(StartChargingData startChargingData, String seq) {
|
||||
|
||||
byte[] data = new byte[0];
|
||||
data = ArrayUtils.addAll(data, HexUtils.toBytes("6832".concat(seq).concat("0038")));
|
||||
data = ArrayUtils.addAll(data, HexUtils.toBytes(startChargingData.getOrderNo()));
|
||||
data = ArrayUtils.addAll(data, HexUtils.toBytes(startChargingData.getPileNo()));
|
||||
data = ArrayUtils.addAll(data, HexUtils.toBytes(startChargingData.getGunId()));
|
||||
data = ArrayUtils.addAll(data, HexUtils.toBytes(String.format("%016X", Long.parseLong(startChargingData.getLogicCardNo(), 16))));
|
||||
data = ArrayUtils.addAll(data, HexUtils.toBytes(String.format("%016X", Long.parseLong(startChargingData.getPhysicCardNo(), 16))));
|
||||
data = ArrayUtils.addAll(data, HexUtils.toBytes(toHexInt(startChargingData.getBalance())));
|
||||
data = ArrayUtils.addAll(data, HexUtils.toBytes(toHexIntYu(startChargingData.getChargingCapacity())));
|
||||
|
||||
String msg = HexUtils.toHex(data);
|
||||
msg = msg.concat(CRCCalculator.calcCrc(msg));
|
||||
log.debug("start charging capacity order[{}], send msg >>>> |{}|", startChargingData.getOrderNo(), msg);
|
||||
|
||||
// 写入设备日志表数据
|
||||
XhpcDeviceMessage deviceMessage = new XhpcDeviceMessage();
|
||||
deviceMessage.setType(StationDeviceEnum.PILE.getCode());
|
||||
deviceMessage.setSerialNumber(startChargingData.getPileNo());
|
||||
deviceMessage.setRemark("平台下发开机指令");
|
||||
deviceMessage.setStatus(0);
|
||||
deviceMessage.setContent(msg);
|
||||
deviceMessageMapper.insertByDomain(deviceMessage);
|
||||
return HexUtils.toBytes(msg);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
Integer FFFF = HexUtils.reverseHexInt("51");
|
||||
System.out.println("51 转化成="+FFFF);
|
||||
// Integer FFFF = HexUtils.reverseHexInt("0452");
|
||||
// System.out.println("51 转化成="+FFFF);
|
||||
|
||||
Integer F402 = HexUtils.reverseHexInt("B602");
|
||||
Integer F402 = HexUtils.reverseHexInt("4C");
|
||||
System.out.println("F402 转化成="+F402);
|
||||
|
||||
// Integer D007 = HexUtils.reverseHexInt("D007");
|
||||
@ -448,6 +590,17 @@ public class ChargingController {
|
||||
// DecimalFormat df = new DecimalFormat("#.000");
|
||||
// System.out.println(df.format(v));
|
||||
|
||||
// String s = CP56Time2a.p56toDateStr("C05D2011200318");
|
||||
//
|
||||
// System.out.println("-111-变为--:" + s);
|
||||
//
|
||||
// String s1 = cp56toDateStr("88903507220418");
|
||||
//
|
||||
// System.out.println("-111-变为--:" + s1);
|
||||
|
||||
String ascii = HexUtils.toAscii("4C465A3733464C34374E44303032343535");
|
||||
|
||||
System.out.println("ascii :"+ascii);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -8,11 +8,11 @@ import com.xhpc.common.enums.StationDeviceEnum;
|
||||
import com.xhpc.evcs.cdjgpc.dto.CDConnectorInfo;
|
||||
import com.xhpc.evcs.cdjgpc.dto.CDEquipmentInfo;
|
||||
import com.xhpc.evcs.domain.XhpcChargingPile;
|
||||
import com.xhpc.evcs.dto.ConnectorInfo;
|
||||
import com.xhpc.pp.domain.XhpcDeviceMessage;
|
||||
import com.xhpc.pp.logic.RateModelRequestLogic;
|
||||
import com.xhpc.pp.logic.RemoteRebootDataLogic;
|
||||
import com.xhpc.pp.logic.RemoteUpgradeDataLogic;
|
||||
import com.xhpc.pp.logic.PileConfigDataLogic;
|
||||
import com.xhpc.pp.mapper.XhpcDeviceMessageMapper;
|
||||
import com.xhpc.pp.utils.HexUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -34,6 +34,7 @@ import static cn.hutool.core.util.NumberUtil.isInteger;
|
||||
import static com.xhpc.common.data.redis.StaticBeanUtil.REDIS;
|
||||
import static com.xhpc.common.data.redis.StaticBeanUtil.seqHex;
|
||||
import static com.xhpc.pp.controller.ChargingController.checkPile;
|
||||
import static com.xhpc.pp.controller.ChargingController.checkPileConfig;
|
||||
import static com.xhpc.pp.controller.ChargingController.fmt;
|
||||
import static com.xhpc.pp.controller.ChargingController.getRR;
|
||||
import static com.xhpc.pp.server.ChargingPileBinaryHandler.getTimeBin;
|
||||
@ -78,7 +79,7 @@ public class PileController {
|
||||
cachePile.put("version", version);
|
||||
XhpcChargingPile pileExample = new XhpcChargingPile();
|
||||
pileExample.setSerialNumber(pileNo);
|
||||
Example<XhpcChargingPile> example = Example.of(pileExample);
|
||||
//Example<XhpcChargingPile> example = Example.of(pileExample);
|
||||
XhpcChargingPile xhpcChargingPile = deviceMessageMapper.getXhpcChargingPile(pileNo);
|
||||
if (xhpcChargingPile != null) {
|
||||
cachePile.put("connectorType", xhpcChargingPile.getConnectorType() == null ? 4 :
|
||||
@ -423,6 +424,48 @@ public class PileController {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 工作参数设置
|
||||
* @param pileNo
|
||||
* @param powerNumber 下发功率百分比
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("pile/{pileNo}/{powerNumber}/configSettings")
|
||||
public R pileConfigSettings(@PathVariable("pileNo") String pileNo,@PathVariable("powerNumber") String powerNumber) {
|
||||
|
||||
String pkey = "pile:".concat(pileNo);
|
||||
Map<String, Object> cachePile = REDIS.getCacheMap(pkey);
|
||||
R<Object> r = checkPileConfig(cachePile);
|
||||
if (r.getCode() == 200) {
|
||||
ClientHandler handler = getHandler(pileNo);
|
||||
r = R.fail("充电桩工作参数设置失败,充电桩未注册,或场站费率未设置.");
|
||||
if (handler != null && handler.isOpen()) {
|
||||
if (!handler.isOpen()) {
|
||||
log.error("send message failed. [{}]({}) connection lost", handler.getName(), pileNo);
|
||||
removeHandler(pileNo);
|
||||
r = R.fail("充电桩连接已断开,请稍后再试.");
|
||||
} else {
|
||||
try {
|
||||
String rsmsg = PileConfigDataLogic.translate(pileNo,powerNumber);
|
||||
handler.sendClientBinary(HexUtils.toBytes(rsmsg));
|
||||
r = R.ok("充电桩主动下发充电桩工作参数下发成功.");
|
||||
XhpcDeviceMessage deviceMessage = new XhpcDeviceMessage();
|
||||
deviceMessage.setType(StationDeviceEnum.PILE.getCode());
|
||||
deviceMessage.setSerialNumber(pileNo);
|
||||
deviceMessage.setRemark("充电桩主动下发充电桩工作参数设置");
|
||||
deviceMessage.setStatus(0);
|
||||
deviceMessage.setContent(rsmsg);
|
||||
deviceMessageMapper.insertByDomain(deviceMessage);
|
||||
} catch (Exception e) {
|
||||
r = R.fail("充电桩工作参数设置失败,请重试.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
//组装充电设备接口信息
|
||||
public void getEquipmentInfo(XhpcChargingPile xhpcChargingPile){
|
||||
String serialNumber = xhpcChargingPile.getSerialNumber();
|
||||
|
||||
@ -1,5 +1,8 @@
|
||||
package com.xhpc.pp.logic;
|
||||
|
||||
import com.xhpc.common.enums.StationDeviceEnum;
|
||||
import com.xhpc.pp.domain.XhpcDeviceMessage;
|
||||
import com.xhpc.pp.mapper.XhpcDeviceMessageMapper;
|
||||
import com.xhpc.pp.server.ChargingPileServer;
|
||||
import com.xhpc.pp.tx.ServiceParameter;
|
||||
import com.xhpc.pp.tx.ServiceResult;
|
||||
@ -12,6 +15,7 @@ import org.slf4j.LoggerFactory;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Calendar;
|
||||
import java.util.Map;
|
||||
|
||||
@ -23,7 +27,8 @@ import static com.xhpc.common.data.redis.StaticBeanUtil.seqHex;
|
||||
public class HBLogic implements ServiceLogic {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(HBLogic.class);
|
||||
|
||||
@Resource
|
||||
XhpcDeviceMessageMapper deviceMessageMapper;
|
||||
public static final String[] stable = {"空闲", "故障"};
|
||||
|
||||
@Override
|
||||
@ -47,6 +52,18 @@ public class HBLogic implements ServiceLogic {
|
||||
String seq = seqHex(skey);
|
||||
String resultStr = "680D".concat(seq).concat("0004").concat(pileNo).concat(gunId).concat(ServiceResult.HEX_00);
|
||||
resultStr = resultStr.concat(CRCCalculator.calcCrc(resultStr));
|
||||
|
||||
|
||||
// 写入设备日志表数据
|
||||
XhpcDeviceMessage deviceMessage = new XhpcDeviceMessage();
|
||||
deviceMessage.setType(StationDeviceEnum.PILE.getCode());
|
||||
deviceMessage.setSerialNumber(pileNo);
|
||||
deviceMessage.setRemark("充电桩心跳");
|
||||
deviceMessage.setStatus(0);
|
||||
deviceMessage.setContent((String) req.get("hex"));
|
||||
deviceMessageMapper.insertByDomain(deviceMessage);
|
||||
|
||||
|
||||
return new ServiceResult(HexUtils.toBytes(resultStr), ServiceResult.OK);
|
||||
}
|
||||
|
||||
|
||||
@ -57,6 +57,9 @@ public class OrderDataLogic implements ServiceLogic {
|
||||
public ServiceResult service(ServiceParameter sp) throws Exception {
|
||||
|
||||
Map<String, Object> req = sp.getParameters();
|
||||
log.info("================订单结束报文==============================");
|
||||
log.info("================订单结束报文================req=============="+req.toString());
|
||||
log.info("================订单结束报文==============================");
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
OrderData orderData = objectMapper.convertValue(req, OrderData.class);
|
||||
String orderNo = orderData.getOrderNo();
|
||||
@ -148,4 +151,10 @@ public class OrderDataLogic implements ServiceLogic {
|
||||
return (CacheOrderData) reflectTranslate(orderData, codclz, odclz, codfields);
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
Integer stopReasonInt = Integer.valueOf("72", 16);
|
||||
System.out.println(stopReasonInt);
|
||||
String st ="充电完成(0X".concat("72").concat(")");
|
||||
System.out.println("==========st==========="+st);
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,52 @@
|
||||
package com.xhpc.pp.logic;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
import com.xhpc.common.enums.StationDeviceEnum;
|
||||
import com.xhpc.pp.domain.XhpcDeviceMessage;
|
||||
import com.xhpc.pp.mapper.XhpcDeviceMessageMapper;
|
||||
import com.xhpc.pp.tx.ServiceParameter;
|
||||
import com.xhpc.pp.tx.ServiceResult;
|
||||
import com.xhpc.pp.tx.logic.ServiceLogic;
|
||||
import com.xhpc.pp.utils.HexUtils;
|
||||
import com.xhpc.pp.utils.security.CRCCalculator;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.xhpc.common.data.redis.StaticBeanUtil.REDIS;
|
||||
import static com.xhpc.common.data.redis.StaticBeanUtil.seqHex;
|
||||
|
||||
@Lazy
|
||||
@Component("PileConfigDataLogic")
|
||||
public class PileConfigDataLogic implements ServiceLogic {
|
||||
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(PileConfigDataLogic.class);
|
||||
|
||||
@Resource
|
||||
XhpcDeviceMessageMapper deviceMessageMapper;
|
||||
|
||||
|
||||
@Override
|
||||
public ServiceResult service(ServiceParameter sp) throws Exception {
|
||||
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
public static String translate(String pileNo, String powerNumber) {
|
||||
|
||||
String skey = "pile:".concat(pileNo).concat(".seqhex");
|
||||
String resultStr = "680D".concat(seqHex(skey)).concat("0052")
|
||||
.concat(pileNo).concat("00").concat(String.format("%02X", Long.parseLong(powerNumber)));
|
||||
resultStr = resultStr.concat(CRCCalculator.calcCrc(resultStr));
|
||||
return resultStr;
|
||||
}
|
||||
|
||||
}
|
||||
@ -16,6 +16,8 @@ import org.springframework.stereotype.Component;
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.xhpc.common.data.redis.StaticBeanUtil.REDIS;
|
||||
|
||||
@Lazy
|
||||
@Component("PileConfigReplyDataLogic")
|
||||
public class PileConfigReplyDataLogic implements ServiceLogic {
|
||||
@ -29,8 +31,20 @@ public class PileConfigReplyDataLogic implements ServiceLogic {
|
||||
public ServiceResult service(ServiceParameter sp) throws Exception {
|
||||
|
||||
Map<String, Object> req = sp.getParameters();
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
PileConfigReplyData pileConfigReplyData = objectMapper.convertValue(req, PileConfigReplyData.class);
|
||||
String hex = (String) req.get("hex");
|
||||
int idxStart = 12;
|
||||
String serialNumber = hex.substring(idxStart, idxStart + 14);
|
||||
idxStart =idxStart+14;
|
||||
int hibsn = Integer.parseInt(hex.substring(idxStart, 2 + idxStart), 16);
|
||||
try{
|
||||
if(hibsn==1){
|
||||
String nacosServer = REDIS.getCacheObject(serialNumber+":powerNumber").toString();
|
||||
deviceMessageMapper.updateXhpcChargingPile(serialNumber,Integer.valueOf(nacosServer));
|
||||
}
|
||||
}catch (Exception e){
|
||||
log.error("桩:"+serialNumber+"入库错误");
|
||||
}
|
||||
|
||||
//todo
|
||||
String remark = "充电桩工作参数设置";
|
||||
XhpcDeviceMessage deviceMessage = new XhpcDeviceMessage();
|
||||
@ -43,4 +57,16 @@ public class PileConfigReplyDataLogic implements ServiceLogic {
|
||||
return new ServiceResult(false);
|
||||
}
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
String hex = "680C000000518083600040000101F309";
|
||||
int idxStart = 12;
|
||||
String substring = hex.substring(idxStart, idxStart + 14);
|
||||
idxStart =idxStart+14;
|
||||
int hibsn = Integer.parseInt(hex.substring(idxStart, 2 + idxStart), 16);
|
||||
|
||||
|
||||
System.out.println("substring :"+substring);
|
||||
System.out.println("hibsn :"+hibsn);
|
||||
}
|
||||
}
|
||||
|
||||
@ -53,9 +53,10 @@ public class PileStartChargingDataLogic implements ServiceLogic {
|
||||
|
||||
@Override
|
||||
public ServiceResult service(ServiceParameter sp) throws Exception {
|
||||
|
||||
log.info("=============================刷卡启动=======sp================================"+sp.toString());
|
||||
String resultStr = "00";
|
||||
String result = ServiceResult.HEX_00;
|
||||
log.info("=============================刷卡启动=======sp.getParameters================================"+sp.getParameters());
|
||||
Map<String, Object> req = sp.getParameters();
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
PileStartChargingData pileStartChargingData = objectMapper.convertValue(req, PileStartChargingData.class);
|
||||
@ -77,20 +78,30 @@ public class PileStartChargingDataLogic implements ServiceLogic {
|
||||
} else {
|
||||
physicCardNo = accountOrCardNo;
|
||||
}
|
||||
log.info("=============================刷卡启动=======启动================================"+physicCardNo);
|
||||
criteria.andCardidEqualTo(physicCardNo);//.andCorpnoEqualTo(corpNo); // todo remove corpNo alrity
|
||||
List<IccardInfo> iccardInfos = iccardInfoMapper.selectByExample(example);
|
||||
log.info("=============================刷卡启动=======返回================================"+iccardInfos.size());
|
||||
log.info("=============================刷卡启动=======iccardInfos================================"+iccardInfos.toString());
|
||||
log.info("=============================刷卡启动=======返回================================");
|
||||
if (iccardInfos.size() == 1) {
|
||||
IccardInfo iccardInfo = iccardInfos.get(0);
|
||||
if (iccardInfo.getCardtype() == 0) {
|
||||
resultStr = INVALID_OPERATOR;
|
||||
} else {
|
||||
log.info("=============================刷卡启动=======调用订单接口================================");
|
||||
// 调用订单接口
|
||||
cardNo = iccardInfo.getCardno();
|
||||
Integer rateModelId = pileStartChargingData.getRateModelId(); // todo not very strict.
|
||||
if (rateModelId == null)
|
||||
rateModelId = ((Long) REDIS.getCacheMapValue("pile:".concat(connectorId.substring(0, 14)),
|
||||
"rateModelId")).intValue();
|
||||
log.info("=============================刷卡启动=======调用订单接口================================"+cardNo.toString());
|
||||
log.info("=============================刷卡启动=======调用订单接口================================"+connectorId.toString());
|
||||
log.info("=============================刷卡启动=======调用订单接口================================"+rateModelId.toString());
|
||||
R r = cardService.cardStartup(cardNo, connectorId, rateModelId.toString());
|
||||
log.info("=============================刷卡启动=======r================================"+r.getCode());
|
||||
log.info("=============================刷卡启动=======r================================"+r.getMsg());
|
||||
int code = r.getCode();
|
||||
if (code == 200) {
|
||||
result = ServiceResult.HEX_01;
|
||||
@ -150,6 +161,11 @@ public class PileStartChargingDataLogic implements ServiceLogic {
|
||||
|
||||
R r = pileOrderService.pileVin(connectorId, vinCode);
|
||||
int code = r.getCode();
|
||||
|
||||
log.info("=============================VIN码充电=======返回================================");
|
||||
log.info("=============================VIN码充电=======返回================================"+code);
|
||||
log.info("=============================VIN码充电=======返回================================");
|
||||
|
||||
if (code == 200) {
|
||||
if(r.getData() == null){
|
||||
return new ServiceResult(ServiceResult.FAIL);
|
||||
@ -227,6 +243,9 @@ public class PileStartChargingDataLogic implements ServiceLogic {
|
||||
deviceMessage.setStatus(0);
|
||||
deviceMessage.setContent((String) req.get("hex"));
|
||||
deviceMessageMapper.insertByDomain(deviceMessage);
|
||||
|
||||
log.info("===========PileStartChargingDataLogic===========发送报文=========================");
|
||||
|
||||
return new ServiceResult(HexUtils.toBytes(hex), result);
|
||||
}
|
||||
|
||||
|
||||
@ -92,4 +92,12 @@ public class RateModelRequestLogic implements ServiceLogic {
|
||||
return rateModel;
|
||||
}
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
String format = String.format("%04X", 11419);
|
||||
System.out.println("==="+format);
|
||||
|
||||
String format1 = String.format("%04X", 19);
|
||||
System.out.println("==="+format1);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package com.xhpc.pp.logic;
|
||||
|
||||
import com.xhpc.common.api.dto.ChargingStationDto;
|
||||
import com.xhpc.common.data.redis.CacheRateModel;
|
||||
import com.xhpc.common.enums.StationDeviceEnum;
|
||||
import com.xhpc.pp.domain.XhpcDeviceMessage;
|
||||
import com.xhpc.pp.mapper.XhpcDeviceMessageMapper;
|
||||
@ -20,6 +21,7 @@ import java.util.Map;
|
||||
import static cn.hutool.core.util.NumberUtil.isInteger;
|
||||
import static com.xhpc.common.data.redis.StaticBeanUtil.REDIS;
|
||||
import static com.xhpc.common.data.redis.StaticBeanUtil.seqHex;
|
||||
import static com.xhpc.pp.utils.HexUtils.toHexInt;
|
||||
|
||||
@Lazy
|
||||
@Component("RateModelValidateLogic")
|
||||
@ -36,6 +38,8 @@ public class RateModelValidateLogic implements ServiceLogic {
|
||||
Map<String, Object> req = sp.getParameters();
|
||||
String pileNo = (String) req.get("pileNo");
|
||||
String rateModelIdStr = req.get("rateModelId").toString();
|
||||
System.out.println("=================rateModelIdStr==================="+rateModelIdStr);
|
||||
|
||||
Map<String, Object> cachePile = REDIS.getCacheMap("pile:".concat(pileNo));
|
||||
Integer gunNum = (Integer) cachePile.get("gunNum");
|
||||
boolean charging = false;
|
||||
@ -65,10 +69,17 @@ public class RateModelValidateLogic implements ServiceLogic {
|
||||
}
|
||||
String skey = "pile:".concat(pileNo).concat(".seqhex");
|
||||
String seq = seqHex(skey);
|
||||
String resultStr =
|
||||
"680E".concat(seq).concat("0006").concat(pileNo).concat(String.format("%04X", csRateModelId)).concat(hexCode);
|
||||
resultStr = resultStr.concat(CRCCalculator.calcCrc(resultStr));
|
||||
|
||||
String resultStr;
|
||||
if (!"0C".equals(version)){
|
||||
System.out.println("=======111==========version==================="+version);
|
||||
resultStr = "680E".concat(seq).concat("0006").concat(pileNo).concat(String.format("%04X", csRateModelId)).concat(hexCode);
|
||||
resultStr = resultStr.concat(CRCCalculator.calcCrc(resultStr));
|
||||
}else{
|
||||
System.out.println("=======2222==========version==================="+version);
|
||||
System.out.println("=======2222==========version==================="+HexUtils.toHexInt(csRateModelId));
|
||||
resultStr = "6810".concat(seq).concat("0006").concat(pileNo).concat(HexUtils.toHexInt(csRateModelId)).concat(hexCode);
|
||||
resultStr = resultStr.concat(CRCCalculator.calcCrc(resultStr));
|
||||
}
|
||||
XhpcDeviceMessage deviceMessage = new XhpcDeviceMessage();
|
||||
deviceMessage.setType(StationDeviceEnum.PILE.getCode());
|
||||
deviceMessage.setSerialNumber(pileNo);
|
||||
@ -80,4 +91,5 @@ public class RateModelValidateLogic implements ServiceLogic {
|
||||
return new ServiceResult(HexUtils.toBytes(resultStr), resultCode);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user