mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-20 11:05:18 +08:00
Merge branch 'dev' of http://192.168.2.2:8099/jsowell/jsowell-charger-web into dev
This commit is contained in:
@@ -315,7 +315,7 @@ public class MemberService {
|
||||
.requestSource(dto.getRequestSource())
|
||||
.firstLevelMerchantId(firstLevelMerchantId)
|
||||
.mobileNumber(dto.getMobileNumber())
|
||||
.buyerId(dto.getOpenId())
|
||||
.buyerId(dto.getUserId())
|
||||
.build();
|
||||
return memberRegisterAndLogin(loginDTO); // 支付宝小程序一键登录
|
||||
}
|
||||
@@ -337,10 +337,9 @@ public class MemberService {
|
||||
throw new BusinessException(ReturnCodeEnum.CODE_ALIPAY_ACCESS_TOKEN_ERROR);
|
||||
}
|
||||
log.info("支付宝getAccessToken:{}", JSON.toJSONString(response));
|
||||
String accessToken = response.getAccessToken();
|
||||
dto.setAccessToken(accessToken);
|
||||
String openId = response.getOpenId();
|
||||
dto.setOpenId(openId);
|
||||
dto.setAccessToken(response.getAccessToken());
|
||||
dto.setOpenId(response.getOpenId());
|
||||
dto.setUserId(response.getUserId());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -70,6 +70,7 @@ import com.jsowell.pile.util.SnUtils;
|
||||
import com.jsowell.pile.vo.base.MemberWalletVO;
|
||||
import com.jsowell.pile.vo.base.PileInfoVO;
|
||||
import com.jsowell.pile.vo.uniapp.CurrentTimePriceDetails;
|
||||
import com.jsowell.pile.vo.uniapp.MemberPlateNumberVO;
|
||||
import com.jsowell.pile.vo.uniapp.MemberVO;
|
||||
import com.jsowell.pile.vo.uniapp.PileConnectorDetailVO;
|
||||
import com.jsowell.pile.vo.web.*;
|
||||
@@ -265,6 +266,13 @@ public class SpringBootTestController {
|
||||
@Autowired
|
||||
private PileReservationInfoService pileReservationInfoService;
|
||||
|
||||
@Test
|
||||
public void selectMemberPlateNumberRelationTest() {
|
||||
String memberId = "25950857";
|
||||
List<MemberPlateNumberVO> plateNumberVOList = memberPlateNumberRelationService.selectMemberPlateNumberRelation(memberId);
|
||||
System.out.println(JSON.toJSONString(plateNumberVOList));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void activateReservedTest() {
|
||||
PileReservationDTO dto = new PileReservationDTO();
|
||||
|
||||
@@ -31,10 +31,10 @@ public class TransactionRecordsData {
|
||||
// 枪号
|
||||
private String connectorCode;
|
||||
|
||||
// 开始时间 CP56Time2a 格式
|
||||
// 开始时间 yyyy-MM-dd HH:mm:ss
|
||||
private String startTime;
|
||||
|
||||
// 结束时间
|
||||
// 结束时间 yyyy-MM-dd HH:mm:ss
|
||||
private String endTime;
|
||||
|
||||
// 尖单价 精确到小数点后五位(尖电费+尖服务费,见费率帧)
|
||||
|
||||
@@ -177,6 +177,8 @@ public enum ReturnCodeEnum {
|
||||
|
||||
CODE_UPDATE_RESERVED_STATUS_REFUSED("00400016", "时间与现有预订重叠"),
|
||||
|
||||
CODE_RESERVATION_ALREADY_EXISTS_ERROR("00400017", "已经存在生效中的预约,请关闭后再试"),
|
||||
|
||||
/* 个人桩 end */
|
||||
|
||||
CODE_THIS_CARNO_HAS_BEEN_BINDING("00500001", "当前车牌号已经绑定,请检查!"),
|
||||
|
||||
@@ -2,11 +2,13 @@ package com.jsowell.common.util;
|
||||
|
||||
import com.google.common.primitives.Bytes;
|
||||
import com.jsowell.common.constant.Constants;
|
||||
import org.springframework.mail.MailMessage;
|
||||
|
||||
import javax.xml.bind.DatatypeConverter;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.math.BigInteger;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.Stack;
|
||||
|
||||
@@ -402,6 +404,11 @@ public class BytesUtil {
|
||||
return rightPadBytes(target, len, b);
|
||||
}
|
||||
|
||||
/**
|
||||
* ASCII转字符串 小端模式
|
||||
* @param ascs
|
||||
* @return
|
||||
*/
|
||||
public static String ascii2StrLittle(byte[] ascs) {
|
||||
byte[] data = revert(ascs);
|
||||
String asciiStr = null;
|
||||
@@ -413,6 +420,11 @@ public class BytesUtil {
|
||||
return asciiStr;
|
||||
}
|
||||
|
||||
/**
|
||||
* ASCII转字符串
|
||||
* @param ascs
|
||||
* @return
|
||||
*/
|
||||
public static String ascii2Str(byte[] ascs) {
|
||||
byte[] data = ascs;
|
||||
String asciiStr = null;
|
||||
@@ -424,10 +436,20 @@ public class BytesUtil {
|
||||
return asciiStr;
|
||||
}
|
||||
|
||||
/**
|
||||
* 字符串转ASCII 小端模式
|
||||
* @param str
|
||||
* @return
|
||||
*/
|
||||
public static byte[] str2AscLittle(String str) {
|
||||
return revert(str2Asc(str));
|
||||
}
|
||||
|
||||
/**
|
||||
* 字符串转ASCII
|
||||
* @param str
|
||||
* @return
|
||||
*/
|
||||
public static byte[] str2Asc(String str) {
|
||||
byte[] bytes = null;
|
||||
try {
|
||||
@@ -626,21 +648,6 @@ public class BytesUtil {
|
||||
return bytes;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
byte[] originalBytes = {1, 2, 3};
|
||||
int desiredLength = 5;
|
||||
byte[] result = ensureLengthPrependZero(originalBytes, desiredLength);
|
||||
|
||||
System.out.println("Original array: ");
|
||||
for (byte b : originalBytes) {
|
||||
System.out.print(b + " ");
|
||||
}
|
||||
System.out.println("\nResulting array with padding at the beginning: ");
|
||||
for (byte b : result) {
|
||||
System.out.print(b + " ");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 确保byte数组长度至少为指定长度,不足则在前面补充0。
|
||||
*
|
||||
|
||||
@@ -17,9 +17,8 @@ import com.jsowell.common.util.YKCUtils;
|
||||
import com.jsowell.common.util.id.IdUtils;
|
||||
import com.jsowell.netty.factory.YKCOperateFactory;
|
||||
import com.jsowell.pile.domain.OrderBasicInfo;
|
||||
import com.jsowell.pile.service.OrderBasicInfoService;
|
||||
import com.jsowell.pile.service.PileMerchantInfoService;
|
||||
import com.jsowell.pile.service.PileMsgRecordService;
|
||||
import com.jsowell.pile.domain.PileBasicInfo;
|
||||
import com.jsowell.pile.service.*;
|
||||
import com.jsowell.pile.service.programlogic.AbstractProgramLogic;
|
||||
import com.jsowell.pile.service.programlogic.ProgramLogicFactory;
|
||||
import com.jsowell.thirdparty.common.CommonService;
|
||||
@@ -68,6 +67,12 @@ public class TransactionRecordsRequestHandler extends AbstractHandler {
|
||||
@Autowired
|
||||
private CommonService commonService;
|
||||
|
||||
@Autowired
|
||||
private PileBasicInfoService pileBasicInfoService;
|
||||
|
||||
@Autowired
|
||||
private PersonalChargingRecordService personalChargingRecordService;
|
||||
|
||||
|
||||
/*public static void main(String[] args) {
|
||||
BigDecimal totalElectricity = new BigDecimal("23.73");
|
||||
@@ -588,6 +593,13 @@ public class TransactionRecordsRequestHandler extends AbstractHandler {
|
||||
* @param data
|
||||
*/
|
||||
private void processOrder(TransactionRecordsData data) {
|
||||
String pileSn = data.getPileSn(); // 充电桩编号
|
||||
PileBasicInfo pileBasicInfo = pileBasicInfoService.selectPileBasicInfoBySN(pileSn);
|
||||
if (StringUtils.equals(pileBasicInfo.getBusinessType(), Constants.TWO)) {
|
||||
personalChargingRecordService.processPersonalChargingRecord(data);
|
||||
return;
|
||||
}
|
||||
|
||||
String transactionCode = data.getTransactionCode();
|
||||
// 根据交易流水号查询订单信息
|
||||
OrderBasicInfo orderBasicInfo = orderBasicInfoService.getOrderInfoByTransactionCode(transactionCode);
|
||||
@@ -666,7 +678,6 @@ public class TransactionRecordsRequestHandler extends AbstractHandler {
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
|
||||
} else {
|
||||
// 平台没有查到订单
|
||||
orderBasicInfoService.saveAbnormalOrder(data);
|
||||
|
||||
@@ -26,5 +26,7 @@ public class AlipayLoginDTO extends BaseDTO{
|
||||
|
||||
private String openId;
|
||||
|
||||
private String userId;
|
||||
|
||||
private String mobileNumber;
|
||||
}
|
||||
|
||||
@@ -26,4 +26,6 @@ public interface PersonalChargingRecordMapper {
|
||||
int updateBatchSelective(List<PersonalChargingRecord> list);
|
||||
|
||||
int batchInsert(@Param("list") List<PersonalChargingRecord> list);
|
||||
|
||||
PersonalChargingRecord selectByTransactionCode(String transactionCode);
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.jsowell.pile.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.jsowell.common.core.domain.ykc.TransactionRecordsData;
|
||||
import com.jsowell.pile.domain.PersonalChargingRecord;
|
||||
public interface PersonalChargingRecordService{
|
||||
|
||||
@@ -27,4 +29,10 @@ public interface PersonalChargingRecordService{
|
||||
|
||||
int batchInsert(List<PersonalChargingRecord> list);
|
||||
|
||||
/**
|
||||
* 处理个人桩充电记录
|
||||
*
|
||||
* @param data
|
||||
*/
|
||||
void processPersonalChargingRecord(TransactionRecordsData data);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,14 @@
|
||||
package com.jsowell.pile.service.impl;
|
||||
|
||||
import com.jsowell.common.core.domain.ykc.TransactionRecordsData;
|
||||
import com.jsowell.common.util.Cp56Time2a.Cp56Time2aUtil;
|
||||
import com.jsowell.common.util.DateUtils;
|
||||
import com.jsowell.pile.domain.PileBasicInfo;
|
||||
import com.jsowell.pile.service.PileBasicInfoService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import com.jsowell.pile.mapper.PersonalChargingRecordMapper;
|
||||
import com.jsowell.pile.domain.PersonalChargingRecord;
|
||||
@@ -12,6 +19,9 @@ public class PersonalChargingRecordServiceImpl implements PersonalChargingRecord
|
||||
@Resource
|
||||
private PersonalChargingRecordMapper personalChargingRecordMapper;
|
||||
|
||||
@Autowired
|
||||
private PileBasicInfoService pileBasicInfoService;
|
||||
|
||||
@Override
|
||||
public int deleteByPrimaryKey(Integer id) {
|
||||
return personalChargingRecordMapper.deleteByPrimaryKey(id);
|
||||
@@ -42,6 +52,10 @@ public class PersonalChargingRecordServiceImpl implements PersonalChargingRecord
|
||||
return personalChargingRecordMapper.selectByPrimaryKey(id);
|
||||
}
|
||||
|
||||
public PersonalChargingRecord selectByTransactionCode(String transactionCode) {
|
||||
return personalChargingRecordMapper.selectByTransactionCode(transactionCode);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int updateByPrimaryKeySelective(PersonalChargingRecord record) {
|
||||
return personalChargingRecordMapper.updateByPrimaryKeySelective(record);
|
||||
@@ -67,4 +81,56 @@ public class PersonalChargingRecordServiceImpl implements PersonalChargingRecord
|
||||
return personalChargingRecordMapper.batchInsert(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理个人桩充电记录
|
||||
*
|
||||
* @param data
|
||||
*/
|
||||
@Override
|
||||
public void processPersonalChargingRecord(TransactionRecordsData data) {
|
||||
// 根据交易流水号查询,如果数据库没有就入库
|
||||
String transactionCode = data.getTransactionCode();
|
||||
PersonalChargingRecord chargingRecord = this.selectByTransactionCode(transactionCode);
|
||||
if (chargingRecord == null) {
|
||||
// 为空,数据保存到数据库
|
||||
chargingRecord = new PersonalChargingRecord();
|
||||
}
|
||||
|
||||
PileBasicInfo pileBasicInfo = pileBasicInfoService.selectPileBasicInfoBySN(data.getPileSn());
|
||||
|
||||
// 处理数据
|
||||
chargingRecord.setTransactionCode(transactionCode);
|
||||
chargingRecord.setStatus("6");
|
||||
chargingRecord.setMemberId("");
|
||||
chargingRecord.setStationId(pileBasicInfo.getStationId() + "");
|
||||
chargingRecord.setMerchantId(pileBasicInfo.getMerchantId() + "");
|
||||
chargingRecord.setPileSn(data.getPileSn());
|
||||
chargingRecord.setConnectorCode(data.getConnectorCode());
|
||||
chargingRecord.setPileConnectorCode(chargingRecord.getPileSn() + chargingRecord.getConnectorCode());
|
||||
chargingRecord.setLogicCard(data.getLogicCard());
|
||||
chargingRecord.setVinCode(data.getVinCode());
|
||||
chargingRecord.setStartMode("");
|
||||
chargingRecord.setPlateNumber("");
|
||||
chargingRecord.setChargeStartTime(DateUtils.parseDate(data.getStartTime()));
|
||||
chargingRecord.setChargeEndTime(DateUtils.parseDate(data.getEndTime()));
|
||||
chargingRecord.setStartType(null);
|
||||
chargingRecord.setReservationStartTime(null);
|
||||
chargingRecord.setReservationEndTime(null);
|
||||
chargingRecord.setStartSoc(null);
|
||||
chargingRecord.setEndSoc(null);
|
||||
BigDecimal sharpUsedElectricity = new BigDecimal(data.getSharpUsedElectricity());
|
||||
chargingRecord.setSharpUsedElectricity(sharpUsedElectricity);
|
||||
BigDecimal peakUsedElectricity = new BigDecimal(data.getPeakUsedElectricity());
|
||||
chargingRecord.setPeakUsedElectricity(peakUsedElectricity);
|
||||
BigDecimal flatUsedElectricity = new BigDecimal(data.getFlatUsedElectricity());
|
||||
chargingRecord.setFlatUsedElectricity(flatUsedElectricity);
|
||||
BigDecimal valleyUsedElectricity = new BigDecimal(data.getValleyUsedElectricity());
|
||||
chargingRecord.setValleyUsedElectricity(valleyUsedElectricity);
|
||||
BigDecimal totalUsedElectricity = sharpUsedElectricity.add(peakUsedElectricity).add(flatUsedElectricity).add(valleyUsedElectricity);
|
||||
chargingRecord.setTotalUsedElectricity(totalUsedElectricity);
|
||||
chargingRecord.setReason(data.getStopReasonMsg());
|
||||
// 创建或更新
|
||||
personalChargingRecordMapper.insertOrUpdateSelective(chargingRecord);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ import com.jsowell.pile.service.PileBasicInfoService;
|
||||
import com.jsowell.pile.service.PileRemoteService;
|
||||
import com.jsowell.pile.vo.uniapp.MemberPlateNumberVO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -111,6 +112,12 @@ public class PileReservationInfoServiceImpl implements PileReservationInfoServic
|
||||
*/
|
||||
@Override
|
||||
public void activateReserved(PileReservationDTO dto) {
|
||||
// 查询其他生效中的预约
|
||||
List<PileReservationInfo> infoList = pileReservationInfoMapper.findByMemberIdAndPileSnAndStatus(dto.getMemberId(), dto.getPileSn(), "1");
|
||||
if (CollectionUtils.isNotEmpty(infoList)) {
|
||||
throw new BusinessException(ReturnCodeEnum.CODE_RESERVATION_ALREADY_EXISTS_ERROR);
|
||||
}
|
||||
|
||||
PileReservationInfo pileReservationInfo = pileReservationInfoMapper.selectByPrimaryKey(Integer.parseInt(dto.getReservedId()));
|
||||
if (pileReservationInfo == null) {
|
||||
return;
|
||||
@@ -184,7 +191,7 @@ public class PileReservationInfoServiceImpl implements PileReservationInfoServic
|
||||
}
|
||||
// 如果 vinCodes 的数量少于 3,用 "0" 补足
|
||||
while (vinCodes.size() < 3) {
|
||||
vinCodes.add("0");
|
||||
vinCodes.add("");
|
||||
}
|
||||
|
||||
String type = StringUtils.equals(pileReservationInfo.getReservationType(), "single") ? "00" : "01";
|
||||
|
||||
@@ -508,24 +508,15 @@ public class YKCPushCommandServiceImpl implements YKCPushCommandService {
|
||||
|
||||
// VIN1
|
||||
String vin1 = command.getVin1();
|
||||
if (StringUtils.isBlank(vin1)) {
|
||||
vin1 = Constants.ZERO;
|
||||
}
|
||||
byte[] vin1ByteArr = BytesUtil.str2Bcd(vin1);
|
||||
byte[] vin1ByteArr = BytesUtil.str2Asc(vin1);
|
||||
vin1ByteArr = BytesUtil.ensureLength(vin1ByteArr, 17);
|
||||
|
||||
String vin2 = command.getVin2();
|
||||
if (StringUtils.isBlank(vin2)) {
|
||||
vin2 = Constants.ZERO;
|
||||
}
|
||||
byte[] vin2ByteArr = BytesUtil.str2Bcd(vin2);
|
||||
byte[] vin2ByteArr = BytesUtil.str2Asc(vin2);
|
||||
vin2ByteArr = BytesUtil.ensureLength(vin2ByteArr, 17);
|
||||
|
||||
String vin3 = command.getVin3();
|
||||
if (StringUtils.isBlank(vin3)) {
|
||||
vin3 = Constants.ZERO;
|
||||
}
|
||||
byte[] vin3ByteArr = BytesUtil.str2Bcd(vin3);
|
||||
byte[] vin3ByteArr = BytesUtil.str2Asc(vin3);
|
||||
vin3ByteArr = BytesUtil.ensureLength(vin3ByteArr, 17);
|
||||
|
||||
// 开始时间
|
||||
|
||||
@@ -1212,4 +1212,12 @@
|
||||
</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<select id="selectByTransactionCode" resultMap="BaseResultMap">
|
||||
select
|
||||
<include refid="Base_Column_List" />
|
||||
from personal_charging_record
|
||||
where del_flag = '0'
|
||||
and transaction_code = #{transactionCode,jdbcType=VARCHAR}
|
||||
</select>
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user