diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/ningxiajiaotou/NXJTQueryOrdersInfoDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/ningxiajiaotou/NXJTQueryOrdersInfoDTO.java new file mode 100644 index 000000000..c93674715 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/ningxiajiaotou/NXJTQueryOrdersInfoDTO.java @@ -0,0 +1,20 @@ +package com.jsowell.pile.dto.ningxiajiaotou; + +import lombok.Data; + +/** + * 宁夏交投查询订单信息DTO + * + * @author Lemon + * @Date 2023/11/13 15:51:17 + */ +@Data +public class NXJTQueryOrdersInfoDTO { + private Integer pageNo; + + private Integer pageSize; + + private String licensePlateNumber; + + private String operatorId; +} diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/ningxiajiaotou/NXJTQueryStationInfoDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/ningxiajiaotou/NXJTQueryStationInfoDTO.java new file mode 100644 index 000000000..1ce26b8ae --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/ningxiajiaotou/NXJTQueryStationInfoDTO.java @@ -0,0 +1,22 @@ +package com.jsowell.pile.dto.ningxiajiaotou; + +import lombok.Data; + +/** + * 查询充电站信息DTO + * + * @author Lemon + * @Date 2023/11/13 13:52:41 + */ +@Data +public class NXJTQueryStationInfoDTO { + + private String operatorId; + + private Integer pageNo; + + private Integer pageSize; + + private String stationId; + +} diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java index e2f3b6cc9..68b3ea182 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java @@ -258,4 +258,11 @@ public interface OrderBasicInfoMapper { List getNROrderInfoByOrderCode(@Param("dto") NRQueryOrderDTO dto); List queryOrderPayDetail(@Param("startTime") String startTime, @Param("endTime") String endTime); + + /** + * 根据车牌号查询订单信息(宁夏交投 用) + * @param licensePlateNumber + * @return + */ + List getOrderInfoByLicensePlateNumber(String licensePlateNumber); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileStationInfoMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileStationInfoMapper.java index d3fee2c88..3f0764557 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileStationInfoMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileStationInfoMapper.java @@ -3,6 +3,7 @@ package com.jsowell.pile.mapper; import com.jsowell.pile.domain.PileStationInfo; import com.jsowell.pile.dto.QueryStationDTO; import com.jsowell.pile.dto.QueryStationInfoDTO; +import com.jsowell.pile.dto.ningxiajiaotou.NXJTQueryStationInfoDTO; import com.jsowell.pile.vo.base.ThirdPartyStationInfoVO; import com.jsowell.pile.vo.web.PileStationVO; import org.apache.ibatis.annotations.Param; @@ -106,4 +107,11 @@ public interface PileStationInfoMapper { * @return */ List getStationSelectList(@Param("dto") QueryStationDTO dto); + + /** + * 宁夏交投查询充电站信息 + * @param dto + * @return + */ + List NXJTQueryStationsInfo(NXJTQueryStationInfoDTO dto); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java index caf81f1af..b2e3954d1 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java @@ -371,4 +371,11 @@ public interface IOrderBasicInfoService { List getNROrderInfos(NRQueryOrderDTO dto); List queryOrderPayDetail(String startTime, String endTime); + + /** + * 根据车牌号查询订单信息(宁夏交投 用) + * @param licensePlateNumber + * @return + */ + List getOrderInfoByLicensePlateNumber(String licensePlateNumber); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/IPileStationInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/IPileStationInfoService.java index 500adc9b6..b7e9905ee 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/IPileStationInfoService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/IPileStationInfoService.java @@ -6,10 +6,12 @@ import com.jsowell.pile.dto.FastCreateStationDTO; import com.jsowell.pile.dto.QueryStationDTO; import com.jsowell.pile.dto.QueryStationInfoDTO; import com.jsowell.pile.dto.lutongyunting.BindParkingPlatformDTO; +import com.jsowell.pile.dto.ningxiajiaotou.NXJTQueryStationInfoDTO; import com.jsowell.pile.vo.base.ThirdPartyStationInfoVO; import com.jsowell.pile.vo.web.PileStationVO; import java.util.List; +import java.util.Map; /** * 充电站信息Service接口 @@ -121,4 +123,11 @@ public interface IPileStationInfoService { * 查询充电站下拉列表 */ List getStationSelectList(QueryStationDTO dto); + + /** + * 宁夏交投查询站点信息 + * @param dto + * @return + */ + List NXJTQueryStationsInfo(NXJTQueryStationInfoDTO dto); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java index 9bb7cdde1..13e2ca555 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java @@ -3483,4 +3483,14 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { public List queryOrderPayDetail(String startTime, String endTime) { return orderBasicInfoMapper.queryOrderPayDetail(startTime, endTime); } + + /** + * 根据车牌号查询订单信息(宁夏交投 用) + * @param licensePlateNumber + * @return + */ + @Override + public List getOrderInfoByLicensePlateNumber(String licensePlateNumber) { + return orderBasicInfoMapper.getOrderInfoByLicensePlateNumber(licensePlateNumber); + } } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java index 6f5b9e6eb..c7716e040 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java @@ -24,6 +24,7 @@ import com.jsowell.pile.dto.FastCreateStationDTO; import com.jsowell.pile.dto.QueryStationDTO; import com.jsowell.pile.dto.QueryStationInfoDTO; import com.jsowell.pile.dto.lutongyunting.BindParkingPlatformDTO; +import com.jsowell.pile.dto.ningxiajiaotou.NXJTQueryStationInfoDTO; import com.jsowell.pile.mapper.PileStationInfoMapper; import com.jsowell.pile.service.*; import com.jsowell.pile.vo.base.MerchantInfoVO; @@ -568,5 +569,14 @@ public class PileStationInfoServiceImpl implements IPileStationInfoService { return pileStationInfoMapper.getStationSelectList(dto); } + /** + * 宁夏交投查询充电站信息 + * @param dto + * @return + */ + @Override + public List NXJTQueryStationsInfo(NXJTQueryStationInfoDTO dto) { + return pileStationInfoMapper.NXJTQueryStationsInfo(dto); + } } diff --git a/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml index 2bd144ab2..2c2fb9a5c 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml @@ -1216,4 +1216,18 @@ and t1.settle_amount > 0.00 and t1.pay_mode = '4' + + \ No newline at end of file diff --git a/jsowell-pile/src/main/resources/mapper/pile/PileStationInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/PileStationInfoMapper.xml index 94005111f..21683d7b4 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/PileStationInfoMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/PileStationInfoMapper.xml @@ -536,4 +536,16 @@ and public_flag = '1' and amap_flag = '1' + + \ No newline at end of file diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/ningxiajiaotou/service/NXJTService.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/ningxiajiaotou/service/NXJTService.java index c02842a13..161f3dcc8 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/ningxiajiaotou/service/NXJTService.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/ningxiajiaotou/service/NXJTService.java @@ -1,10 +1,60 @@ package com.jsowell.thirdparty.ningxiajiaotou.service; +import com.jsowell.pile.dto.ningxiajiaotou.NXJTQueryOrdersInfoDTO; +import com.jsowell.thirdparty.lianlian.dto.CommonParamsDTO; +import com.jsowell.pile.dto.ningxiajiaotou.NXJTQueryStationInfoDTO; + +import java.io.UnsupportedEncodingException; +import java.util.Map; + /** * TODO * * @author Lemon * @Date 2023/11/12 9:33:03 */ -public class NXJTService { +public interface NXJTService { + + /** + * 生成令牌 + * @param dto + * @return + * @throws UnsupportedEncodingException + */ + Map generateToken(CommonParamsDTO dto) throws UnsupportedEncodingException; + + + /** + * 获取令牌 + * @param urlAddress + * @param operatorId + * @param operatorSecret + * @return + */ + String getToken(String urlAddress, String operatorId, String operatorSecret, + String dataSecretIv, String signSecret, String dataSecret); + + + /** + * 获取充电站信息 + * @param dto + * @return + */ + Map queryStationsInfo(NXJTQueryStationInfoDTO dto); + + + /** + * 查询充电站中空闲桩数量 + * @param dto + * @return + */ + Map queryFreePileNumber(NXJTQueryStationInfoDTO dto); + + + /** + * 查询订单信息 + * @param dto + * @return + */ + Map queryOrdersInfo(NXJTQueryOrdersInfoDTO dto); } diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/ningxiajiaotou/service/impl/NXJTServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/ningxiajiaotou/service/impl/NXJTServiceImpl.java new file mode 100644 index 000000000..55ebbe003 --- /dev/null +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/ningxiajiaotou/service/impl/NXJTServiceImpl.java @@ -0,0 +1,214 @@ +package com.jsowell.thirdparty.ningxiajiaotou.service.impl; + +import com.alibaba.fastjson2.JSONObject; +import com.github.pagehelper.PageInfo; +import com.google.common.collect.Maps; +import com.jsowell.common.enums.ykc.PileStatusEnum; +import com.jsowell.common.util.PageUtils; +import com.jsowell.common.util.StringUtils; +import com.jsowell.pile.domain.PileBasicInfo; +import com.jsowell.pile.domain.PileStationInfo; +import com.jsowell.pile.domain.ThirdPartyPlatformConfig; +import com.jsowell.pile.dto.ningxiajiaotou.NXJTQueryOrdersInfoDTO; +import com.jsowell.pile.service.*; +import com.jsowell.pile.vo.base.ConnectorInfoVO; +import com.jsowell.pile.vo.uniapp.OrderVO; +import com.jsowell.thirdparty.lianlian.domain.StationInfo; +import com.jsowell.thirdparty.lianlian.dto.CommonParamsDTO; +import com.jsowell.thirdparty.lianlian.service.LianLianService; +import com.jsowell.thirdparty.lianlian.util.Cryptos; +import com.jsowell.thirdparty.lianlian.util.Encodes; +import com.jsowell.thirdparty.lianlian.util.GBSignUtils; +import com.jsowell.thirdparty.ningxiajiaotou.service.NXJTService; +import com.jsowell.pile.dto.ningxiajiaotou.NXJTQueryStationInfoDTO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.io.UnsupportedEncodingException; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 宁夏交投Service + * + * @author Lemon + * @Date 2023/11/13 8:58:06 + */ +@Service +public class NXJTServiceImpl implements NXJTService { + + @Autowired + private LianLianService lianLianService; + + @Autowired + private IPileStationInfoService pileStationInfoService; + + @Autowired + private IThirdPartyPlatformConfigService thirdPartyPlatformConfigService; + + @Autowired + private IPileBasicInfoService pileBasicInfoService; + + @Autowired + private IPileConnectorInfoService pileConnectorInfoService; + + @Autowired + private IOrderBasicInfoService orderBasicInfoService; + + /** + * 生成令牌 + * @param dto + * @return + * @throws UnsupportedEncodingException + */ + @Override + public Map generateToken(CommonParamsDTO dto) throws UnsupportedEncodingException { + return lianLianService.generateToken(dto); + } + + /** + * 获取令牌 + * @param urlAddress + * @param operatorId + * @param operatorSecret + * @param dataSecretIv + * @param signSecret + * @param dataSecret + * @return + */ + @Override + public String getToken(String urlAddress, String operatorId, String operatorSecret, String dataSecretIv, String signSecret, String dataSecret) { + return lianLianService.getToken(urlAddress, operatorId, operatorSecret, dataSecretIv, signSecret, dataSecret); + } + + /** + * 查询站点信息 + * @param dto + * @return + */ + @Override + public Map queryStationsInfo(NXJTQueryStationInfoDTO dto) { + int pageNo = dto.getPageNo() == null ? 1 : dto.getPageNo(); + int pageSize = dto.getPageSize() == null ? 10 : dto.getPageSize(); + + ThirdPartyPlatformConfig configInfo = thirdPartyPlatformConfigService.getInfoByOperatorId(dto.getOperatorId()); + if (configInfo == null) { + return null; + } + // 分页 + PageUtils.startPage(pageNo, pageSize); + List stationInfos = pileStationInfoService.NXJTQueryStationsInfo(dto); + PageInfo pageInfo = new PageInfo<>(stationInfos); + + Map map = new LinkedHashMap<>(); + map.put("pageNo", pageInfo.getPageNum()); + map.put("pageCount", pageInfo.getPages()); + map.put("itemSize", pageInfo.getList().size()); + map.put("stationInfos", pageInfo.getList()); + + // 加密 + Map resultMap = Maps.newLinkedHashMap(); + // 加密数据 + byte[] encryptText = Cryptos.aesEncrypt(JSONObject.toJSONString(map).getBytes(), + configInfo.getDataSecret().getBytes(), configInfo.getDataSecretIv().getBytes()); + String encryptData = Encodes.encodeBase64(encryptText); + + resultMap.put("Data", encryptData); + // 生成sig + String resultSign = GBSignUtils.sign(resultMap, configInfo.getSignSecret()); + resultMap.put("Sig", resultSign); + + return resultMap; + } + + /** + * 查询充电站中空闲桩数量 + * @param dto + * @return + */ + @Override + public Map queryFreePileNumber(NXJTQueryStationInfoDTO dto) { + ThirdPartyPlatformConfig configInfo = thirdPartyPlatformConfigService.getInfoByOperatorId(dto.getOperatorId()); + if (configInfo == null) { + return null; + } + long stationId = Long.parseLong(dto.getStationId()); + List connectorList = pileConnectorInfoService.getUniAppConnectorList(stationId); + // 先根据pileSn分组,获取设备总数 + List pileSnList = connectorList.stream() + .map(ConnectorInfoVO::getPileSn) + .collect(Collectors.toList()); + // 根据枪口编号批量查询枪口状态 + Map pileTypeNum = pileConnectorInfoService.getPileTypeNum(stationId); + // Integer fastTotal = pileTypeNum.get("fastTotal");// 快充总数 + Integer fastFree = pileTypeNum.get("fastFree"); // 快充空闲 + // Integer slowTotal = pileTypeNum.get("slowTotal");// 慢充总数 + Integer slowFree = pileTypeNum.get("slowFree");// 慢充空闲 + + int freePileNumber = fastFree + slowFree; // 总空闲数量 = 快充空闲 + 慢充空闲 + int pileNumber = pileSnList.size(); // 总设备数 就是桩号集合的长度 + + // 拼装参数 + Map map = new LinkedHashMap<>(); + map.put("pileNum", pileNumber); + map.put("freePileNum", freePileNumber); + + // 加密 + Map resultMap = Maps.newLinkedHashMap(); + // 加密数据 + byte[] encryptText = Cryptos.aesEncrypt(JSONObject.toJSONString(map).getBytes(), + configInfo.getDataSecret().getBytes(), configInfo.getDataSecretIv().getBytes()); + String encryptData = Encodes.encodeBase64(encryptText); + + resultMap.put("Data", encryptData); + // 生成sig + String resultSign = GBSignUtils.sign(resultMap, configInfo.getSignSecret()); + resultMap.put("Sig", resultSign); + + return resultMap; + } + + /** + * 查询订单信息 + * @param dto + * @return + */ + @Override + public Map queryOrdersInfo(NXJTQueryOrdersInfoDTO dto) { + int pageNo = dto.getPageNo() == null ? 1 : dto.getPageNo(); + int pageSize = dto.getPageSize() == null ? 10 : dto.getPageSize(); + + ThirdPartyPlatformConfig configInfo = thirdPartyPlatformConfigService.getInfoByOperatorId(dto.getOperatorId()); + if (configInfo == null) { + return null; + } + // 分页 + PageUtils.startPage(pageNo, pageSize); + // 根据车牌号查询消费情况 + List orderVOList = orderBasicInfoService.getOrderInfoByLicensePlateNumber(dto.getLicensePlateNumber()); + PageInfo pageInfo = new PageInfo<>(orderVOList); + + Map map = new LinkedHashMap<>(); + map.put("pageNo", pageInfo.getPageNum()); + map.put("pageCount", pageInfo.getPages()); + map.put("itemSize", pageInfo.getList().size()); + map.put("orderInfos", pageInfo.getList()); + + // 加密 + Map resultMap = Maps.newLinkedHashMap(); + // 加密数据 + byte[] encryptText = Cryptos.aesEncrypt(JSONObject.toJSONString(map).getBytes(), + configInfo.getDataSecret().getBytes(), configInfo.getDataSecretIv().getBytes()); + String encryptData = Encodes.encodeBase64(encryptText); + + resultMap.put("Data", encryptData); + // 生成sig + String resultSign = GBSignUtils.sign(resultMap, configInfo.getSignSecret()); + resultMap.put("Sig", resultSign); + + return resultMap; + } +}