Merge branch 'dev' into HuiFu

# Conflicts:
#	jsowell-admin/src/test/java/SpringBootTestController.java
#	jsowell-pile/pom.xml
This commit is contained in:
2023-05-11 15:00:36 +08:00
39 changed files with 1657 additions and 134 deletions

View File

@@ -1,8 +1,6 @@
package com.jsowell.adapay.demo;
import com.alibaba.fastjson.JSON;
import com.huifu.adapay.model.AdapayTools;
import com.huifu.adapay.model.Bill;
import java.util.HashMap;
import java.util.Map;

View File

@@ -1,7 +1,6 @@
package com.jsowell.adapay.demo;
import com.alibaba.fastjson.JSON;
import com.huifu.adapay.model.CorpMember;
import java.io.File;
import java.util.HashMap;

View File

@@ -1,7 +1,6 @@
package com.jsowell.adapay.demo;
import com.alibaba.fastjson.JSON;
import com.huifu.adapay.model.FastPay;
import java.util.HashMap;
import java.util.Map;

View File

@@ -1,7 +1,5 @@
package com.jsowell.adapay.demo;
import com.huifu.adapay.Adapay;
import com.huifu.adapay.model.MerConfig;
import java.util.HashMap;
import java.util.Map;

View File

@@ -1,7 +1,6 @@
package com.jsowell.adapay.demo;
import com.alibaba.fastjson.JSON;
import com.huifu.adapay.model.Member;
import java.util.HashMap;
import java.util.Map;

View File

@@ -2,10 +2,7 @@ package com.jsowell.adapay.demo;
import com.alibaba.fastjson.JSON;
import com.huifu.adapay.core.exception.BaseAdaPayException;
import com.huifu.adapay.model.Checkout;
import com.huifu.adapay.model.Payment;
import com.huifu.adapay.model.PaymentConfirm;
import com.huifu.adapay.model.PaymentReverse;
import java.util.HashMap;
import java.util.Map;

View File

@@ -2,7 +2,6 @@ package com.jsowell.adapay.demo;
import com.alibaba.fastjson.JSON;
import com.huifu.adapay.core.exception.BaseAdaPayException;
import com.huifu.adapay.model.Payment;
import java.util.HashMap;
import java.util.Map;

View File

@@ -1,7 +1,6 @@
package com.jsowell.adapay.demo;
import com.alibaba.fastjson.JSON;
import com.huifu.adapay.model.Refund;
import java.util.HashMap;
import java.util.Map;

View File

@@ -1,8 +1,7 @@
package com.jsowell.adapay.demo;
import com.alibaba.fastjson.JSON;
import com.huifu.adapay.model.Drawcash;
import com.huifu.adapay.model.SettleAccount;
import java.util.HashMap;
import java.util.Map;

View File

@@ -0,0 +1,43 @@
package com.jsowell.pile.domain;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import java.time.LocalDateTime;
@Getter
@Setter
@ToString
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class OrderMonitorData {
/**
* 主键
*/
private Integer id;
/**
* 订单编号
*/
private String orderCode;
/**
* 交易流水号
*/
private String transactionCode;
/**
* 实时监控数据
*/
private String monitorData;
/**
* 创建时间
*/
private LocalDateTime createTime;
}

View File

@@ -0,0 +1,19 @@
package com.jsowell.pile.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* 联联充电获取令牌
*
* @author JS-ZZA
* @date 2023/5/9 13:54
*/
@Data
public class LianLianGetTokenDTO {
@JsonProperty(value = "OperatorID")
private String operatorId;
@JsonProperty(value = "OperatorSecret")
private String operatorSecret;
}

View File

@@ -0,0 +1,37 @@
package com.jsowell.pile.mapper;
import com.jsowell.pile.domain.OrderMonitorData;
public interface OrderMonitorDataMapper {
/**
* delete by primary key
* @param id primaryKey
* @return deleteCount
*/
int deleteByPrimaryKey(Integer id);
/**
* insert record to table
* @param record the record
* @return insert count
*/
int insert(OrderMonitorData record);
/**
* insert record to table selective
* @param record the record
* @return insert count
*/
int insertSelective(OrderMonitorData record);
/**
* select by primary key
* @param id primary key
* @return object by primary key
*/
OrderMonitorData selectByPrimaryKey(Integer id);
OrderMonitorData selectByOrderCode(String orderCode);
OrderMonitorData selectByTransactionCode(String transactionCode);
}

View File

@@ -119,6 +119,8 @@ public interface IOrderBasicInfoService {
List<OrderVO> getListByMemberIdAndOrderStatus(String memberId, List<String> orderStatusList, LocalDateTime dateTime);
void realTimeMonitorDataRedis2DB(String transactionCode, String orderCode);
void updateElecAmount();
/**

View File

@@ -0,0 +1,18 @@
package com.jsowell.pile.service;
import com.jsowell.pile.domain.OrderMonitorData;
public interface OrderMonitorDataService{
int deleteByPrimaryKey(Integer id);
int insert(OrderMonitorData record);
int insertSelective(OrderMonitorData record);
OrderMonitorData selectByPrimaryKey(Integer id);
OrderMonitorData selectByOrderCode(String orderCode);
OrderMonitorData selectByTransactionCode(String transactionCode);
}

View File

@@ -32,6 +32,7 @@ import com.jsowell.common.util.id.SnowflakeIdWorker;
import com.jsowell.pile.domain.OrderAbnormalRecord;
import com.jsowell.pile.domain.OrderBasicInfo;
import com.jsowell.pile.domain.OrderDetail;
import com.jsowell.pile.domain.OrderMonitorData;
import com.jsowell.pile.domain.OrderPayRecord;
import com.jsowell.pile.domain.PileAuthCard;
import com.jsowell.pile.domain.PileBasicInfo;
@@ -53,6 +54,7 @@ import com.jsowell.pile.service.IPileAuthCardService;
import com.jsowell.pile.service.IPileBasicInfoService;
import com.jsowell.pile.service.IPileBillingTemplateService;
import com.jsowell.pile.service.IPileConnectorInfoService;
import com.jsowell.pile.service.OrderMonitorDataService;
import com.jsowell.pile.service.WechatPayService;
import com.jsowell.pile.service.WxpayCallbackRecordService;
import com.jsowell.pile.service.WxpayRefundCallbackService;
@@ -151,6 +153,9 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
@Autowired
private IPileAuthCardService pileAuthCardService;
@Autowired
private OrderMonitorDataService orderMonitorDataService;
/**
* 条件查询订单基本信息
*
@@ -197,6 +202,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
/**
* 通过订单状态和支付状态 转换订单状态描述
*
* @param orderStatus
* @param payStatus
* @return
@@ -620,7 +626,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
orderDetail.setSharpAmount(new BigDecimal(data.getSharpAmount()));
}
// 计算该时段电费
BigDecimal multiply = orderDetail.getSharpElectricityPrice().multiply(new BigDecimal(sharpUsedElectricity)).setScale(2,BigDecimal.ROUND_DOWN);
BigDecimal multiply = orderDetail.getSharpElectricityPrice().multiply(new BigDecimal(sharpUsedElectricity)).setScale(2, BigDecimal.ROUND_DOWN);
totalElectricityAmount = totalElectricityAmount.add(multiply);
}
@@ -635,7 +641,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
orderDetail.setPeakAmount(new BigDecimal(data.getPeakAmount()));
}
// 计算该时段电费
BigDecimal multiply = orderDetail.getPeakElectricityPrice().multiply(new BigDecimal(peakUsedElectricity)).setScale(2,BigDecimal.ROUND_DOWN);
BigDecimal multiply = orderDetail.getPeakElectricityPrice().multiply(new BigDecimal(peakUsedElectricity)).setScale(2, BigDecimal.ROUND_DOWN);
totalElectricityAmount = totalElectricityAmount.add(multiply);
}
@@ -650,7 +656,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
orderDetail.setFlatAmount(new BigDecimal(data.getFlatAmount()));
}
// 计算该时段电费
BigDecimal multiply = orderDetail.getFlatElectricityPrice().multiply(new BigDecimal(flatUsedElectricity)).setScale(2,BigDecimal.ROUND_DOWN);
BigDecimal multiply = orderDetail.getFlatElectricityPrice().multiply(new BigDecimal(flatUsedElectricity)).setScale(2, BigDecimal.ROUND_DOWN);
totalElectricityAmount = totalElectricityAmount.add(multiply);
}
@@ -665,7 +671,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
orderDetail.setValleyAmount(new BigDecimal(data.getValleyAmount()));
}
// 计算该时段电费
BigDecimal multiply = orderDetail.getValleyElectricityPrice().multiply(new BigDecimal(valleyUsedElectricity)).setScale(2,BigDecimal.ROUND_DOWN);
BigDecimal multiply = orderDetail.getValleyElectricityPrice().multiply(new BigDecimal(valleyUsedElectricity)).setScale(2, BigDecimal.ROUND_DOWN);
totalElectricityAmount = totalElectricityAmount.add(multiply);
}
@@ -692,6 +698,63 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
} catch (Exception e) {
logger.error("小程序发送充电停止推送消息 error", e);
}
try {
realTimeMonitorDataRedis2DB(orderBasicInfo.getTransactionCode(), orderBasicInfo.getOrderCode());
} catch (Exception e) {
logger.error("redis中取出实时记录保存到表 发生异常", e);
}
}
/**
* 从redis中取出实时记录保存到表中
* 当订单完成的时候调用
*/
@Override
public void realTimeMonitorDataRedis2DB(String transactionCode, String orderCode) {
if (StringUtils.isBlank(transactionCode) || StringUtils.isBlank(orderCode)) {
return;
}
// 校验有没有保存过
OrderMonitorData orderMonitorData = orderMonitorDataService.selectByOrderCode(orderCode);
if (orderMonitorData != null) {
return;
}
List<RealTimeMonitorData> chargingRealTimeData = getChargingRealTimeData(transactionCode);
if (CollectionUtils.isEmpty(chargingRealTimeData)) {
return;
}
List<RealTimeMonitorData> list = Lists.newArrayList();
for (RealTimeMonitorData data : chargingRealTimeData) {
RealTimeMonitorData build = RealTimeMonitorData.builder()
.outputCurrent(data.getOutputCurrent())
.outputCurrent(data.getOutputCurrent()) // 电流
.outputVoltage(data.getOutputVoltage()) // 电压
.outputPower(data.getOutputPower()) // 功率
.SOC(data.getSOC()) // soc
.dateTime(data.getDateTime()) // 时间
.batteryMaxTemperature(data.getBatteryMaxTemperature())
.chargingAmount(data.getChargingAmount())
.chargingDegree(data.getChargingDegree())
.sumChargingTime(data.getSumChargingTime())
.timeRemaining(data.getTimeRemaining())
.gunLineTemperature(data.getGunLineTemperature())
.build();
list.add(build);
}
OrderMonitorData record = new OrderMonitorData();
record.setOrderCode(orderCode);
record.setTransactionCode(transactionCode);
record.setMonitorData(JSONObject.toJSONString(list));
int insert = orderMonitorDataService.insertSelective(record);
if (insert > 0) {
// 删除redis中缓存
String pileConnectorCode = transactionCode.substring(0, 16);
String redisKey = CacheConstants.PILE_REAL_TIME_MONITOR_DATA + pileConnectorCode + "_" + transactionCode;
redisCache.deleteObject(redisKey);
}
}
@Override
@@ -734,7 +797,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
BigDecimal sharpUsedElectricity = orderDetail.getSharpUsedElectricity();
if (sharpUsedElectricity != null) {
// 计算该时段电费
BigDecimal multiply = orderDetail.getSharpElectricityPrice().multiply(sharpUsedElectricity).setScale(2,BigDecimal.ROUND_DOWN);
BigDecimal multiply = orderDetail.getSharpElectricityPrice().multiply(sharpUsedElectricity).setScale(2, BigDecimal.ROUND_DOWN);
totalElectricityAmount = totalElectricityAmount.add(multiply);
}
@@ -742,7 +805,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
BigDecimal peakUsedElectricity = orderDetail.getPeakUsedElectricity();
if (peakUsedElectricity != null) {
// 计算该时段电费
BigDecimal multiply = orderDetail.getPeakElectricityPrice().multiply(peakUsedElectricity).setScale(2,BigDecimal.ROUND_DOWN);
BigDecimal multiply = orderDetail.getPeakElectricityPrice().multiply(peakUsedElectricity).setScale(2, BigDecimal.ROUND_DOWN);
totalElectricityAmount = totalElectricityAmount.add(multiply);
}
@@ -750,7 +813,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
BigDecimal flatUsedElectricity = orderDetail.getFlatUsedElectricity();
if (flatUsedElectricity != null) {
// 计算该时段电费
BigDecimal multiply = orderDetail.getFlatElectricityPrice().multiply(flatUsedElectricity).setScale(2,BigDecimal.ROUND_DOWN);
BigDecimal multiply = orderDetail.getFlatElectricityPrice().multiply(flatUsedElectricity).setScale(2, BigDecimal.ROUND_DOWN);
totalElectricityAmount = totalElectricityAmount.add(multiply);
}
@@ -758,13 +821,13 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
BigDecimal valleyUsedElectricity = orderDetail.getValleyUsedElectricity();
if (valleyUsedElectricity != null) {
// 计算该时段电费
BigDecimal multiply = orderDetail.getValleyElectricityPrice().multiply(valleyUsedElectricity).setScale(2,BigDecimal.ROUND_DOWN);
BigDecimal multiply = orderDetail.getValleyElectricityPrice().multiply(valleyUsedElectricity).setScale(2, BigDecimal.ROUND_DOWN);
totalElectricityAmount = totalElectricityAmount.add(multiply);
}
orderDetail.setTotalElectricityAmount(totalElectricityAmount);
orderDetail.setTotalServiceAmount(orderDetail.getTotalOrderAmount().subtract(totalElectricityAmount));
}catch (Exception e) {
} catch (Exception e) {
logger.info("发生异常", e);
}
}
@@ -882,7 +945,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
orderBasicInfo.setLogicCard(data.getLogicCard());
// 订单状态 (2023.4.6 要求改成“订单完成”)
orderBasicInfo.setOrderStatus(OrderStatusEnum.ORDER_COMPLETE.getValue());
}else {
} else {
// 订单状态 可疑
orderBasicInfo.setOrderStatus(OrderStatusEnum.SUSPICIOUS.getValue());
}
@@ -1007,6 +1070,15 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
RealTimeMonitorData data = JSONObject.parseObject((String) o, RealTimeMonitorData.class);
resultList.add(data);
}
} else {
logger.debug("redis中没有实时数据了去数据库查");
// redis中为空去查库
OrderMonitorData orderMonitorData = orderMonitorDataService.selectByTransactionCode(transactionCode);
if (orderMonitorData != null) {
String monitorData = orderMonitorData.getMonitorData();
List<RealTimeMonitorData> dataList = JSON.parseArray(monitorData, RealTimeMonitorData.class);
resultList.addAll(dataList);
}
}
return resultList;
}
@@ -1320,6 +1392,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
/**
* 生成订单 返回交易流水号
*
* @param dto
* @return
*/
@@ -1404,22 +1477,24 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
/**
* 联联平台 获取累计数据用
*
* @param dto
* @return
*/
@Override
public List<AccumulativeInfoVO> getAccumulativeInfoForLianLian(QueryStationInfoDTO dto) {
return orderBasicInfoMapper.getAccumulativeInfoForLianLian(dto);
}
@Override
public List<AccumulativeInfoVO> getAccumulativeInfoForLianLian(QueryStationInfoDTO dto) {
return orderBasicInfoMapper.getAccumulativeInfoForLianLian(dto);
}
/**
* 联联平台生成订单
*
* @param dto
* @return
*/
@Override
public Map<String, Object> generateOrderForLianLian(QueryStartChargeDTO dto) {
// 联联平台生成订单
// 联联平台生成订单
String orderCode = dto.getStartChargeSeq();
String pileConnectorCode = dto.getConnectorID();
String pileSn = StringUtils.substring(pileConnectorCode, 0, 14);

View File

@@ -0,0 +1,46 @@
package com.jsowell.pile.service.impl;
import com.jsowell.pile.domain.OrderMonitorData;
import com.jsowell.pile.mapper.OrderMonitorDataMapper;
import com.jsowell.pile.service.OrderMonitorDataService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class OrderMonitorDataServiceImpl implements OrderMonitorDataService {
@Resource
private OrderMonitorDataMapper orderMonitorDataMapper;
@Override
public int deleteByPrimaryKey(Integer id) {
return orderMonitorDataMapper.deleteByPrimaryKey(id);
}
@Override
public int insert(OrderMonitorData record) {
return orderMonitorDataMapper.insert(record);
}
@Override
public int insertSelective(OrderMonitorData record) {
return orderMonitorDataMapper.insertSelective(record);
}
@Override
public OrderMonitorData selectByPrimaryKey(Integer id) {
return orderMonitorDataMapper.selectByPrimaryKey(id);
}
@Override
public OrderMonitorData selectByOrderCode(String orderCode) {
return orderMonitorDataMapper.selectByOrderCode(orderCode);
}
@Override
public OrderMonitorData selectByTransactionCode(String transactionCode) {
return orderMonitorDataMapper.selectByTransactionCode(transactionCode);
}
}

View File

@@ -467,8 +467,8 @@ public class PileConnectorInfoServiceImpl implements IPileConnectorInfoService {
pileConnectorInfoVO.setChargingTime(realTimeMonitorData.getSumChargingTime()); // 已充时长
// 计算实时功率单位kw
BigDecimal instantPowerTemp = outputVoltage.multiply(outputCurrent);
BigDecimal instantPower = instantPowerTemp.divide(new BigDecimal(1000));
pileConnectorInfoVO.setInstantPower(instantPower.setScale(2, BigDecimal.ROUND_HALF_UP));
BigDecimal instantPower = instantPowerTemp.divide(new BigDecimal(1000), 2, BigDecimal.ROUND_HALF_UP);
pileConnectorInfoVO.setInstantPower(instantPower);
log.info("枪口实时数据:{}", JSONObject.toJSONString(pileConnectorInfoVO));
}