ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/Site.java
@@ -465,5 +465,8 @@ @TableField("isEnergyStorage") @ApiModelProperty(value = "是否有储能设施(0:无,1:有)") private Integer isEnergyStorage; // todo 临时字段 用于区分途来电订单数据属于哪一个站点 @TableField("stationID") @ApiModelProperty(value = "站点ID") private String stationID; } ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TChargingGun.java
@@ -148,4 +148,8 @@ @ApiModelProperty(value = "2.0修改字段-运营时间描述") @TableField("opreate_hours") private String opreateHours; // todo 临时字段 用于区分途来电订单数据属于哪一个站点 @TableField("connectorID") @ApiModelProperty(value = "连接器id") private String connectorID; } ruoyi-gateway/src/main/resources/bootstrap.yml
@@ -12,8 +12,8 @@ allow-bean-definition-overriding: true profiles: # 环境配置 # active: dev active: prod active: dev # active: prod --- spring: config: @@ -23,7 +23,7 @@ nacos: discovery: # 服务注册地址 server-addr: 192.168.110.169:8848 server-addr: 192.168.110.64:8848 service: ${spring.application.name} group: DEFAULT_GROUP namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb @@ -31,7 +31,7 @@ password: nacos config: # 配置中心地址 server-addr: 192.168.110.169:8848 server-addr: 192.168.110.64:8848 namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb username: nacos password: nacos @@ -52,7 +52,7 @@ datasource: ds1: nacos: server-addr: 192.168.110.169:8848 server-addr: 192.168.110.64:8848 dataId: sentinel-ruoyi-gateway groupId: DEFAULT_GROUP username: nacos ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/dto/ChargeDetail.java
New file @@ -0,0 +1,33 @@ package com.ruoyi.chargingPile.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @ApiModel(description = "充电详情实体") @Data public class ChargeDetail { @ApiModelProperty(value = "详情开始时间", example = "2023-11-10 14:16:54") private String detailStartTime; @ApiModelProperty(value = "详情结束时间", example = "1970-01-01 08:00:00") private String detailEndTime; @ApiModelProperty(value = "电价", example = "0.5") private Double elecPrice; @ApiModelProperty(value = "服务价格", example = "0.42") private Double sevicePrice; @ApiModelProperty(value = "详情功率", example = "0") private Integer detailPower; @ApiModelProperty(value = "详情电费", example = "0") private Integer detailElecMoney; @ApiModelProperty(value = "详情服务费", example = "0") private Integer detailSeviceMoney; } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/dto/ChargeOrder.java
New file @@ -0,0 +1,62 @@ package com.ruoyi.chargingPile.dto; import com.ruoyi.chargingPile.tulaidian.domain.ChargeDetail; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; import java.util.List; @ApiModel(description = "充电订单实体") @Data public class ChargeOrder { @ApiModelProperty(value = "启动充电序列号", example = "1726204696124142") private String startChargeSeq; @ApiModelProperty(value = "启动充电序列状态", example = "4") private Integer startChargeSeqStat; @ApiModelProperty(value = "连接器状态", example = "1") private Integer connectorStatus; @ApiModelProperty(value = "连接器ID", example = "9227171651855801") private String connectorID; @ApiModelProperty(value = "当前电流A", example = "0.0") private String currentA; @ApiModelProperty(value = "电压A", example = "0.0") private String voltageA; @ApiModelProperty(value = "电池电量百分比", example = "0.00") private String soc; @ApiModelProperty(value = "开始时间", example = "2024-09-13 13:18:16") private String startTime; @ApiModelProperty(value = "结束时间", example = "2026-01-27 10:42:05") private String endTime; @ApiModelProperty(value = "总功率", example = "0.0000") private String totalPower; @ApiModelProperty(value = "电费", example = "0.00") private String elecMoney; @ApiModelProperty(value = "服务费", example = "0.00") private String seviceMoney; @ApiModelProperty(value = "总费用", example = "0.00") private String totalMoney; @ApiModelProperty(value = "车辆识别码", example = "null") private String vin; @ApiModelProperty(value = "充电详情列表") private List<ChargeDetail> chargeDetails; } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/tulaidian/constant/ChargePileInterface.java
@@ -7,6 +7,7 @@ public static final String QUERY_TOKEN = "http://tld.itsou.top/evcs/tld/query_token"; // 查询充电站信息 public static final String QUERY_STATIONS_INFO = "http://tld.itsou.top/evcs/tld/query_stations_info"; public static final String QUERY_ORDER_LIST = "http://tld.itsou.top/evcs/tld/query_finish_orders"; // 设备接口状态查询 public static final String QUERY_STATION_STATUS = "http://tld.itsou.top/evcs/tld/query_station_status"; // 查询业务策略信息 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/tulaidian/controller/ChargingPileInfoController.java
@@ -3,22 +3,26 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.chargingPile.dto.ChargeOrder; import com.ruoyi.chargingPile.service.ISiteService; import com.ruoyi.chargingPile.service.TChargingGunService; import com.ruoyi.chargingPile.service.TChargingPileService; import com.ruoyi.chargingPile.tulaidian.domain.ConnectorInfo; import com.ruoyi.chargingPile.tulaidian.domain.EquipmentInfos; import com.ruoyi.chargingPile.tulaidian.domain.PageInfo; import com.ruoyi.chargingPile.tulaidian.domain.StationInfos; import com.ruoyi.chargingPile.tulaidian.domain.*; import com.ruoyi.chargingPile.tulaidian.util.ChargePileHttpUtil; import com.ruoyi.chargingPile.tulaidian.util.CodeGenerateUtils; import com.ruoyi.chargingPile.util.UUIDUtil; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.order.api.feignClient.ChargingOrderAccountingStrategyClient; import com.ruoyi.order.api.feignClient.ChargingOrderClient; import com.ruoyi.order.api.model.TChargingOrder; import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy; import com.ruoyi.other.api.domain.Region; import com.ruoyi.other.api.feignClient.OtherClient; import io.swagger.annotations.ApiImplicitParam; @@ -27,6 +31,7 @@ import io.swagger.models.auth.In; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -36,17 +41,18 @@ import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; /** * 接口控制器提供 * 站桩枪、订单 临时数据接口 * * @author stylefeng * @Date 2018/7/20 23:39 */ @RestController @RequestMapping("/chargingPileInfo111") @RequestMapping("/chargingPileInfo") @Slf4j public class ChargingPileInfoController { @Autowired @@ -54,9 +60,13 @@ @Autowired private ISiteService siteService; @Autowired private ChargingOrderAccountingStrategyClient chargingOrderAccountingStrategyClient; @Autowired private TChargingGunService chargingGunService; @Autowired private TChargingPileService chargingPileService; @Autowired private ChargingOrderClient chargingOrderClient; @Autowired private OtherClient otherClient; private static final double EARTH_RADIUS = 6371.0; // 地球半径,单位为千米 @@ -83,19 +93,133 @@ return EARTH_RADIUS * c; } @ResponseBody @PostMapping("/deleteSite") @ApiOperation(value = "删除关联站桩枪", tags = {"删除关联站桩枪"}, notes = "") public R<String> deleteSite(){ List<Integer> siteIds = siteService.lambdaQuery().eq(Site::getPartnerId, 26) .list().stream().map(Site::getId) .collect(Collectors.toList()); siteService.remove(new LambdaQueryWrapper<Site>() .eq(Site::getPartnerId,26)); if (!siteIds.isEmpty()){ chargingPileService.remove(new LambdaQueryWrapper<TChargingPile>() .in(TChargingPile::getSiteId,siteIds)); chargingGunService.remove(new LambdaQueryWrapper<TChargingGun>() .in(TChargingGun::getSiteId,siteIds)); } return R.ok(); } /** * 司机端-获取充电桩列表 */ @ResponseBody @PostMapping("/orderList") @ApiOperation(value = "获取充电订单", tags = {"司机端-获取充电订单"}, notes = "") public R<String> chargingPileList(){ List<ChargeOrder> result = getOrderList(); List<TChargingOrder> orders = new ArrayList<>(); List<TChargingOrderAccountingStrategy> accountingStrategies = new ArrayList<>(); // 封装订单数据 for (ChargeOrder chargeOrder : result) { TChargingOrder chargingOrder = new TChargingOrder(); chargingOrder.setOrderType(1); chargingOrder.setOrderClassification(1); // chargingOrder.setAppUserId(1L); // chargingOrder.setAppUserCarId(1L); chargingOrder.setRefundAmount(new BigDecimal(chargeOrder.getTotalMoney())); chargingOrder.setRechargeSerialNumber("4200002747202505247686188393"); chargingOrder.setCouponDiscountAmount(BigDecimal.ZERO); chargingOrder.setVipDiscount(BigDecimal.ZERO); chargingOrder.setVipDiscountAmount(BigDecimal.ZERO); chargingOrder.setCouponDiscountAmount(BigDecimal.ZERO); chargingOrder.setCommissionAmount(BigDecimal.ZERO); chargingOrder.setSharingAmount(BigDecimal.ZERO); chargingOrder.setDelFlag(false); chargingOrder.setNeedElec(new BigDecimal(chargeOrder.getTotalPower())); chargingOrder.setStartSoc(BigDecimal.ZERO); chargingOrder.setEndSoc(new BigDecimal("100")); chargingOrder.setPower(new BigDecimal(chargeOrder.getTotalPower())); chargingOrder.setElectricity(new BigDecimal(chargeOrder.getTotalPower())); chargingOrder.setVoltage(new BigDecimal(chargeOrder.getTotalPower())); chargingOrder.setCurrent(new BigDecimal(chargeOrder.getTotalPower())); chargingOrder.setChargingPower(new BigDecimal(chargeOrder.getTotalPower())); chargingOrder.setChargingCapacity(new BigDecimal(chargeOrder.getTotalPower())); chargingOrder.setCode(chargeOrder.getStartChargeSeq()); chargingOrder.setOrderSource(2); chargingOrder.setOperatorId(26); chargingOrder.setTripartitePlatformName("途来电"); chargingOrder.setStartChargeSeq(chargeOrder.getStartChargeSeq()); chargingOrder.setSourceName("途来电"); chargingOrder.setStartTime(DateUtils.stringToLocalDateTime(chargeOrder.getStartTime())); chargingOrder.setEndTime(DateUtils.stringToLocalDateTime(chargeOrder.getEndTime())); chargingOrder.setStatus(5); chargingOrder.setEndMode(1); chargingOrder.setElectrovalence(new BigDecimal(chargeOrder.getElecMoney())); chargingOrder.setServiceCharge(new BigDecimal(chargeOrder.getSeviceMoney())); chargingOrder.setTotalElectricity(new BigDecimal(chargeOrder.getElecMoney())); chargingOrder.setPaymentAmount(new BigDecimal(chargeOrder.getTotalMoney())); chargingOrder.setRechargePaymentType(1); chargingOrder.setRechargePaymentStatus(2); chargingOrder.setChargeAmount(new BigDecimal(chargeOrder.getTotalMoney())); chargingOrder.setOrderAmount(new BigDecimal(chargeOrder.getTotalMoney())); chargingOrder.setResidualAmount(BigDecimal.ZERO); chargingOrder.setPaymentAmount(new BigDecimal(chargeOrder.getTotalMoney())); chargingOrder.setPayTime(LocalDateTime.now()); // 通过枪编号查询枪 TChargingGun chargingGun = chargingGunService.getOne(Wrappers.lambdaQuery(TChargingGun.class) .eq(TChargingGun::getConnectorID, chargeOrder.getConnectorID())); if(Objects.nonNull(chargingGun)){ chargingOrder.setChargingGunId(chargingGun.getId()); chargingOrder.setChargingPileId(chargingGun.getChargingPileId()); chargingOrder.setSiteId(chargingGun.getSiteId()); }else{ continue; } R<Long> orderIdR = chargingOrderClient.addChargingOrder(chargingOrder); if(orderIdR.getCode() == 200){ // 充电明细 List<ChargeDetail> chargeDetails = chargeOrder.getChargeDetails(); if(!CollectionUtils.isEmpty(chargeDetails)){ List<TChargingOrderAccountingStrategy> accountingStrategyList = new ArrayList<>(); for (ChargeDetail chargeDetail : chargeDetails) { TChargingOrderAccountingStrategy accountingStrategy = new TChargingOrderAccountingStrategy(); accountingStrategy.setChargingOrderId(orderIdR.getData()); accountingStrategy.setAccountingStrategyDetailId(232); accountingStrategy.setType(1); accountingStrategy.setStartTime(chargeDetail.getDetailStartTime()); accountingStrategy.setEndTime(chargeDetail.getDetailEndTime()); accountingStrategy.setElectrovalence(chargeDetail.getElecPrice()); accountingStrategy.setServiceCharge(chargeDetail.getSevicePrice()); accountingStrategy.setCostServiceCharge(chargeDetail.getDetailSeviceMoney()); accountingStrategy.setChargingCapacity(chargeDetail.getDetailPower()); accountingStrategy.setPeriodElectricPrice(chargeDetail.getDetailElecMoney()); accountingStrategy.setCouponDiscountAmount(BigDecimal.ZERO); accountingStrategy.setVipDiscountAmount(BigDecimal.ZERO); accountingStrategy.setPeriodServicePrice(chargeDetail.getDetailSeviceMoney()); accountingStrategy.setPeriodOriginalServicePrice(chargeDetail.getDetailSeviceMoney()); accountingStrategy.setCreateTime(LocalDateTime.now()); accountingStrategyList.add(accountingStrategy); } chargingOrderAccountingStrategyClient.addChargingOrderAccountingStrategy(accountingStrategyList); } } } return R.ok(); } @ResponseBody @PostMapping("/chargingPileList") @ApiOperation(value = "司机端-获取充电桩列表", tags = {"司机端-获取充电桩列表"}, notes = "") @ApiOperation(value = "获取充电桩列表", tags = {"获取充电桩列表"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "电站类型 0=不限 1=公共 50=个人 100=公交 101=环卫(专用) 102=物流(专用) 103=出租车(专用) 255=其他", name = "type", required = false, dataType = "string"), @ApiImplicitParam(value = "电站距离 不限=0 1km内=1 2km内=2 3km内=3 5km内=4 10km内=5 50km内=6 100km内=7 ", name = "distance", required = false, dataType = "int"), @ApiImplicitParam(value = "设备状态 不限=0 1=只看空闲", name = "status", required = false, dataType = "int"), @ApiImplicitParam(value = "电站名称/目标地址", name = "name", required = false, dataType = "string"), @ApiImplicitParam(value = "pageNo", name = "pageNo", required = true, dataType = "string"), @ApiImplicitParam(value = "pageSize", name = "pageSize", required = true, dataType = "string"), @ApiImplicitParam(value = "pageNo", name = "pageNo", required = false, dataType = "string"), @ApiImplicitParam(value = "pageSize", name = "pageSize", required = false, dataType = "string"), @ApiImplicitParam(value = "lon", name = "经度", required = false, dataType = "string"), @ApiImplicitParam(value = "lat", name = "纬度", required = false, dataType = "string"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @@ -242,8 +366,13 @@ List<Site> sites = new ArrayList<>(); List<TChargingPile> piles = new ArrayList<>(); List<TChargingGun> guns = new ArrayList<>(); Map<String, Site> siteMap = siteService.list().stream().collect(Collectors.toMap(Site::getStationID, e -> e)); for (StationInfos stationInfos : result) { if (siteMap.get(stationInfos.getStationID())!=null){ continue; } Site site = new Site(); site.setStationID(stationInfos.getStationID()); site.setPartnerId(26); Calendar calendar = Calendar.getInstance(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); @@ -339,8 +468,9 @@ site.setIsEnergyStorage(0); siteService.save(site); sites.add(site); int i = 1; for (EquipmentInfos equipmentInfo : stationInfos.getEquipmentInfos()) { int i = 1; TChargingPile chargingPile = new TChargingPile(); Calendar calendar2 = Calendar.getInstance(); SimpleDateFormat dateFormat3 = new SimpleDateFormat("yyyyMMddHHmmss"); @@ -378,16 +508,18 @@ chargingPileService.save(chargingPile); piles.add(chargingPile); i++; int j = 1; for (ConnectorInfo connectorInfo : equipmentInfo.getConnectorInfos()) { int j = 1; TChargingGun gun = new TChargingGun(); gun.setConnectorID(connectorInfo.getConnectorID()); gun.setCode(j+""); gun.setSiteId(site.getId()); gun.setPartnerId(26); gun.setChargingPileId(chargingPile.getId()); gun.setName(connectorInfo.getConnectorName()); gun.setType(connectorInfo.getConnectorType()); gun.setStatus(1); gun.setStatus(2); gun.setChargeMode(connectorInfo.getGunType()); // todo 临时写死 gun.setAccountingStrategyId(232); @@ -397,7 +529,7 @@ gun.setRatedPower(new BigDecimal("7")); gun.setChargingPower(new BigDecimal("200")); gun.setParkingNumber("39"); gun.setParkingStatus(0); gun.setParkingStatus(1); gun.setParkingLockState(0); gun.setNationalStandard("3"); // gun.setRemark(); @@ -425,30 +557,6 @@ return R.ok(); } public static List<StationInfos> testing(long total, long current, long size, List<StationInfos> str){ List<StationInfos> result = new ArrayList<>(); //获取初始化分页结构 Page<StationInfos> page = new Page(total, size, current - 1); //获取集合下标初始值 long startIndex = page.getCurrent(); //获取集合下标结束值 long endInddex = 0; if(startIndex + page.getCurrent() >= total || size > total){ endInddex = total; }else { endInddex = Math.min(startIndex + page.getSize(), total); } //如果输入的开始查询下标大于集合大小,则查询为空值 if(startIndex > total){ result = Collections.emptyList(); }else{ result = str.subList((int)startIndex,(int)endInddex); } return result; } private List<StationInfos> getStationInfos(){ String s = chargePileHttpUtil.queryStationsInfo(1, 199); // 将s字符串转化为json 然后转化为实体类PageInfo @@ -471,6 +579,33 @@ } return result; } private List<ChargeOrder> getOrderList(){ String s = chargePileHttpUtil.getOrderList(1, 199); // 将s字符串转化为json 然后转化为实体类PageInfo JSONObject jsonObject = JSONObject.parseObject(s); PageInfo pageInfo = JSON.parseObject(jsonObject.toJSONString(), PageInfo.class); List<ChargeOrder> result = new ArrayList<>(); int itemSize = pageInfo.getItemSize(); int temp = 0; if(itemSize>199){ result.addAll(pageInfo.getChargeOrders()); int i = itemSize / 199; for (int j = 2; j < i + 2; j++) { s = chargePileHttpUtil.getOrderList(j, 199); // 将s字符串转化为json 然后转化为实体类PageInfo jsonObject = JSONObject.parseObject(s); pageInfo = JSON.parseObject(jsonObject.toJSONString(), PageInfo.class); result.addAll(pageInfo.getChargeOrders()); if (temp==10){ break; } temp++; } }else { result.addAll(pageInfo.getChargeOrders()); } return result; } } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/tulaidian/controller/NotifyController.java
@@ -61,85 +61,84 @@ private static final String DataSecretOther = "50a61b93919c9606"; private static final String DataSecretIVOther = "7c8ac6861661d586"; // 结束充电后 特来电主动 推送充电订单信息 @ResponseBody @PostMapping("/notification_charge_order_info") public Map<String, Object> notification_charge_order_info(@RequestBody String json) throws ParseException { TContent tContent = new TContent(); tContent.setType(1); tContent.setContent(json); tContent.setCreateTime(new Date()); contentService.save(tContent); JSONObject jsonObject1 = JSONObject.parseObject(json); String data = jsonObject1.getString("Data"); String decrypt = AesEncryption.decrypt(DataSecret, DataSecretIV, data); System.err.println(decrypt); JSONObject jsonObject = JSONObject.parseObject(decrypt); System.err.println("结束充电后 特来电主动推送订单信息"); ChargeRecord chargeRecord = JSON.parseObject(jsonObject.toJSONString(), ChargeRecord.class); // 新增订单 TChargingOrder chargingOrder = new TChargingOrder(); chargingOrder.setCode(chargeRecord.getStartChargeSeq()); chargingOrder.setOrderSource(2); // TODO 运营商id chargingOrder.setOperatorId(1); chargingOrder.setTripartitePlatformName("途来电"); chargingOrder.setStartChargeSeq(chargeRecord.getStartChargeSeq()); chargingOrder.setSourceName("途来电"); chargingOrder.setStartTime(DateUtils.stringToLocalDateTime(chargeRecord.getStartTime())); chargingOrder.setEndTime(DateUtils.stringToLocalDateTime(chargeRecord.getEndTime())); chargingOrder.setStatus(5); chargingOrder.setEndMode(1); chargingOrder.setElectrovalence(chargeRecord.getTotalElecMoney()); chargingOrder.setServiceCharge(chargeRecord.getTotalSeviceMoney()); chargingOrder.setTotalElectricity(chargeRecord.getTotalPower()); chargingOrder.setPaymentAmount(chargeRecord.getTotalMoney()); chargingOrder.setRechargePaymentType(1); chargingOrder.setRechargePaymentStatus(2); chargingOrder.setChargeAmount(chargeRecord.getTotalMoney()); chargingOrder.setOrderAmount(chargeRecord.getTotalMoney()); chargingOrder.setResidualAmount(BigDecimal.ZERO); chargingOrder.setPaymentAmount(chargeRecord.getTotalMoney()); chargingOrder.setPayTime(LocalDateTime.now()); // 通过枪编号查询枪 TChargingGun chargingGun = chargingGunService.getOne(Wrappers.lambdaQuery(TChargingGun.class) .eq(TChargingGun::getCode, chargeRecord.getConnectorID())); if(Objects.nonNull(chargingGun)){ chargingOrder.setChargingGunId(chargingGun.getId()); chargingOrder.setChargingPileId(chargingGun.getChargingPileId()); chargingOrder.setSiteId(chargingGun.getSiteId()); } R<Long> orderIdR = chargingOrderClient.addChargingOrder(chargingOrder); if(orderIdR.getCode() == 200){ // 充电明细 List<ChargeDetail> chargeDetails = chargeRecord.getChargeDetails(); if(!CollectionUtils.isEmpty(chargeDetails)){ List<TChargingOrderAccountingStrategy> accountingStrategyList = new ArrayList<>(); for (ChargeDetail chargeDetail : chargeDetails) { TChargingOrderAccountingStrategy accountingStrategy = new TChargingOrderAccountingStrategy(); accountingStrategy.setChargingOrderId(orderIdR.getData()); accountingStrategy.setAccountingStrategyDetailId(232); accountingStrategy.setType(1); accountingStrategy.setStartTime(chargeDetail.getDetailStartTime()); accountingStrategy.setEndTime(chargeDetail.getDetailEndTime()); accountingStrategy.setElectrovalence(chargeDetail.getElecPrice()); accountingStrategy.setServiceCharge(chargeDetail.getSevicePrice()); accountingStrategy.setChargingCapacity(chargeDetail.getDetailPower()); accountingStrategy.setPeriodElectricPrice(chargeDetail.getDetailElecMoney()); accountingStrategy.setPeriodServicePrice(chargeDetail.getDetailSeviceMoney()); accountingStrategy.setPeriodOriginalServicePrice(chargeDetail.getDetailSeviceMoney()); accountingStrategy.setCreateTime(LocalDateTime.now()); accountingStrategyList.add(accountingStrategy); } chargingOrderAccountingStrategyClient.addChargingOrderAccountingStrategy(accountingStrategyList); } } Map<String,Object> map = new HashMap<>(); map.put("StartChargeSeq",chargeRecord.getStartChargeSeq()); map.put("ConnectorID",chargeRecord.getConnectorID()); map.put("ConfirmResult",0); return map; } // // 结束充电后 特来电主动 推送充电订单信息 // @ResponseBody // @PostMapping("/notification_charge_order_info") // public Map<String, Object> notification_charge_order_info(@RequestBody String json) throws ParseException { // TContent tContent = new TContent(); // tContent.setType(1); // tContent.setContent(json); // tContent.setCreateTime(new Date()); // contentService.save(tContent); // JSONObject jsonObject1 = JSONObject.parseObject(json); // String data = jsonObject1.getString("Data"); // String decrypt = AesEncryption.decrypt(DataSecret, DataSecretIV, data); // System.err.println(decrypt); // JSONObject jsonObject = JSONObject.parseObject(decrypt); // System.err.println("结束充电后 特来电主动推送订单信息"); // ChargeRecord chargeRecord = JSON.parseObject(jsonObject.toJSONString(), ChargeRecord.class); // // 新增订单 // TChargingOrder chargingOrder = new TChargingOrder(); // chargingOrder.setCode(chargeRecord.getStartChargeSeq()); // chargingOrder.setOrderSource(2); // chargingOrder.setOperatorId(26); // chargingOrder.setTripartitePlatformName("途来电"); // chargingOrder.setStartChargeSeq(chargeRecord.getStartChargeSeq()); // chargingOrder.setSourceName("途来电"); // chargingOrder.setStartTime(DateUtils.stringToLocalDateTime(chargeRecord.getStartTime())); // chargingOrder.setEndTime(DateUtils.stringToLocalDateTime(chargeRecord.getEndTime())); // chargingOrder.setStatus(5); // chargingOrder.setEndMode(1); // chargingOrder.setElectrovalence(chargeRecord.getTotalElecMoney()); // chargingOrder.setServiceCharge(chargeRecord.getTotalSeviceMoney()); // chargingOrder.setTotalElectricity(chargeRecord.getTotalPower()); // chargingOrder.setPaymentAmount(chargeRecord.getTotalMoney()); // chargingOrder.setRechargePaymentType(1); // chargingOrder.setRechargePaymentStatus(2); // chargingOrder.setChargeAmount(chargeRecord.getTotalMoney()); // chargingOrder.setOrderAmount(chargeRecord.getTotalMoney()); // chargingOrder.setResidualAmount(BigDecimal.ZERO); // chargingOrder.setPaymentAmount(chargeRecord.getTotalMoney()); // chargingOrder.setPayTime(LocalDateTime.now()); // // 通过枪编号查询枪 // TChargingGun chargingGun = chargingGunService.getOne(Wrappers.lambdaQuery(TChargingGun.class) // .eq(TChargingGun::getCode, chargeRecord.getConnectorID())); // if(Objects.nonNull(chargingGun)){ // chargingOrder.setChargingGunId(chargingGun.getId()); // chargingOrder.setChargingPileId(chargingGun.getChargingPileId()); // chargingOrder.setSiteId(chargingGun.getSiteId()); // } // R<Long> orderIdR = chargingOrderClient.addChargingOrder(chargingOrder); // if(orderIdR.getCode() == 200){ // // 充电明细 // List<ChargeDetail> chargeDetails = chargeRecord.getChargeDetails(); // if(!CollectionUtils.isEmpty(chargeDetails)){ // List<TChargingOrderAccountingStrategy> accountingStrategyList = new ArrayList<>(); // for (ChargeDetail chargeDetail : chargeDetails) { // TChargingOrderAccountingStrategy accountingStrategy = new TChargingOrderAccountingStrategy(); // accountingStrategy.setChargingOrderId(orderIdR.getData()); // accountingStrategy.setAccountingStrategyDetailId(232); // accountingStrategy.setType(1); // accountingStrategy.setStartTime(chargeDetail.getDetailStartTime()); // accountingStrategy.setEndTime(chargeDetail.getDetailEndTime()); // accountingStrategy.setElectrovalence(chargeDetail.getElecPrice()); // accountingStrategy.setServiceCharge(chargeDetail.getSevicePrice()); // accountingStrategy.setChargingCapacity(chargeDetail.getDetailPower()); // accountingStrategy.setPeriodElectricPrice(chargeDetail.getDetailElecMoney()); // accountingStrategy.setPeriodServicePrice(chargeDetail.getDetailSeviceMoney()); // accountingStrategy.setPeriodOriginalServicePrice(chargeDetail.getDetailSeviceMoney()); // accountingStrategy.setCreateTime(LocalDateTime.now()); // accountingStrategyList.add(accountingStrategy); // } // chargingOrderAccountingStrategyClient.addChargingOrderAccountingStrategy(accountingStrategyList); // } // } // Map<String,Object> map = new HashMap<>(); // map.put("StartChargeSeq",chargeRecord.getStartChargeSeq()); // map.put("ConnectorID",chargeRecord.getConnectorID()); // map.put("ConfirmResult",0); // return map; // } // @ResponseBody // @PostMapping("/notification_equip_charge_status") @@ -169,44 +168,44 @@ @ResponseBody @PostMapping("/notification_stationStatus") public Map<String,Integer> notification_stationStatus(@RequestBody String json) { TContent tContent = new TContent(); tContent.setType(3); tContent.setContent(json); tContent.setCreateTime(new Date()); contentService.save(tContent); JSONObject jsonObject1 = JSONObject.parseObject(json); String data = jsonObject1.getString("Data"); String decrypt = AesEncryption.decrypt(DataSecret, DataSecretIV, data); System.err.println(decrypt); JSONObject jsonObject = JSONObject.parseObject(decrypt); System.err.println("特来电主动推送设备状态"); ConnectorStatusInfos connectorStatusInfos = JSON.parseObject(jsonObject.toJSONString(), ConnectorStatusInfos.class); TChargingGun chargingGun = chargingGunService.getOne(Wrappers.lambdaQuery(TChargingGun.class) .eq(TChargingGun::getCode, connectorStatusInfos.getConnectorID())); if (Objects.nonNull(chargingGun)){ // 修改订单状态 switch (connectorStatusInfos.getStatus()){ case 0: chargingGun.setStatus(1); break; case 1: chargingGun.setStatus(2); break; case 2: chargingGun.setStatus(3); break; case 3: chargingGun.setStatus(4); break; case 4: chargingGun.setStatus(6); break; case 255: chargingGun.setStatus(7); break; } chargingGunService.updateById(chargingGun); } // TContent tContent = new TContent(); // tContent.setType(3); // tContent.setContent(json); // tContent.setCreateTime(new Date()); // contentService.save(tContent); // JSONObject jsonObject1 = JSONObject.parseObject(json); // String data = jsonObject1.getString("Data"); // String decrypt = AesEncryption.decrypt(DataSecret, DataSecretIV, data); // System.err.println(decrypt); // JSONObject jsonObject = JSONObject.parseObject(decrypt); // System.err.println("特来电主动推送设备状态"); // ConnectorStatusInfos connectorStatusInfos = JSON.parseObject(jsonObject.toJSONString(), ConnectorStatusInfos.class); // TChargingGun chargingGun = chargingGunService.getOne(Wrappers.lambdaQuery(TChargingGun.class) // .eq(TChargingGun::getCode, connectorStatusInfos.getConnectorID())); // if (Objects.nonNull(chargingGun)){ // // 修改订单状态 // switch (connectorStatusInfos.getStatus()){ // case 0: // chargingGun.setStatus(1); // break; // case 1: // chargingGun.setStatus(2); // break; // case 2: // chargingGun.setStatus(3); // break; // case 3: // chargingGun.setStatus(4); // break; // case 4: // chargingGun.setStatus(6); // break; // case 255: // chargingGun.setStatus(7); // break; // } // chargingGunService.updateById(chargingGun); // } Map<String,Integer> map = new HashMap<>(); map.put("Status",0); return map; ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/tulaidian/domain/PageInfo.java
@@ -1,5 +1,6 @@ package com.ruoyi.chargingPile.tulaidian.domain; import com.ruoyi.chargingPile.dto.ChargeOrder; import io.swagger.annotations.ApiModel; import lombok.Data; @@ -13,6 +14,7 @@ private int itemSize; private int total; private List<StationInfos> stationInfos; private List<ChargeOrder> chargeOrders; public PageInfo(int pageNo, int pageCount) { this.pageNo = pageNo; ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/tulaidian/domain/TContent.java
@@ -1,9 +1,11 @@ package com.ruoyi.chargingPile.tulaidian.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.io.Serializable; @@ -37,6 +39,8 @@ /** * 创建时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") @TableField("createTime") private Date createTime; ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/tulaidian/util/ChargePileHttpUtil.java
@@ -101,6 +101,35 @@ System.err.println(decrypt); return decrypt; } /** * 获取充电桩 * @return */ public String getOrderList(Integer PageNo, Integer PageSize){ String token = getToken(); JSONObject jsonObject = new JSONObject(); jsonObject.put("PageNo", PageNo); jsonObject.put("PageSize", PageSize); String params = jsonObject.toJSONString(); // 参数加密 String data = AesEncryption.encrypt(DataSecret, DataSecretIV, params); // 获取签名 String timeStamp = System.currentTimeMillis() + ""; SequenceGenerator generator = new SequenceGenerator(); String nextSequence = generator.getNextSequence(); String hmacMD5 = HMacMD5Util.getHMacMD5(OperatorID,timeStamp, data,nextSequence,SigSecret); jsonObject = new JSONObject(); jsonObject.put("OperatorID", OperatorID); jsonObject.put("Data", data); jsonObject.put("TimeStamp", timeStamp); jsonObject.put("Seq", nextSequence); jsonObject.put("Sig", hmacMD5); String result = HttpUtils.sendPost(ChargePileInterface.QUERY_ORDER_LIST, jsonObject.toJSONString(),token); String string = JSONObject.parseObject(result).getString("Data"); String decrypt = AesEncryption.decrypt(DataSecret, DataSecretIV, string); System.err.println(decrypt); return decrypt; } /** * 获取充电桩 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderBackController.java
New file @@ -0,0 +1,89 @@ package com.ruoyi.order.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.integration.api.elutong.model.ConnectorInfo; import com.ruoyi.order.api.feignClient.ChargingOrderAccountingStrategyClient; import com.ruoyi.order.api.feignClient.ChargingOrderClient; import com.ruoyi.order.api.model.TChargingOrder; import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy; import com.ruoyi.order.service.TChargingOrderAccountingStrategyService; import com.ruoyi.order.service.TChargingOrderService; import com.ruoyi.other.api.domain.Region; import com.ruoyi.other.api.feignClient.OtherClient; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; /** * 接口控制器提供 * * @author stylefeng * @Date 2018/7/20 23:39 */ @RestController @RequestMapping("/tempOrders") @Slf4j public class OrderBackController { @Autowired private TChargingOrderService chargingOrderService; @Resource private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService; /** * 删除关联充电订单 */ @ResponseBody @PostMapping("/deleteOrders") @ApiOperation(value = "删除关联充电订单", tags = {"删除关联充电订单"}, notes = "") public R<String> deleteOrders(){ List<Long> orderIds = chargingOrderService.lambdaQuery().eq(TChargingOrder::getOperatorId, 26) .list().stream().map(TChargingOrder::getId).collect(Collectors.toList()); chargingOrderService. remove(new LambdaQueryWrapper<TChargingOrder>() .eq(TChargingOrder::getOperatorId,26)); log.info("删除关联订单数量:{}",orderIds.size()); log.info("删除关联订单数据:{}",orderIds); if (!orderIds.isEmpty()){ chargingOrderAccountingStrategyService.remove( new LambdaQueryWrapper<TChargingOrderAccountingStrategy>() .in(TChargingOrderAccountingStrategy::getChargingOrderId , orderIds) ); } return R.ok(); } }