作者 shenhailong

解决 充值电费后 送电不成功问题

  1 +package com.sunyo.energy.location.dao;
  2 +
  3 +import com.sunyo.energy.location.model.ElectrifyInfo;
  4 +
  5 +import java.util.List;
  6 +
  7 +public interface ElectrifyInfoMapper {
  8 + int deleteByPrimaryKey(Integer id);
  9 +
  10 + int insert(ElectrifyInfo record);
  11 +
  12 + int insertSelective(ElectrifyInfo record);
  13 +
  14 + ElectrifyInfo selectByPrimaryKey(Integer id);
  15 +
  16 + List<ElectrifyInfo> selectAll();
  17 +
  18 + int updateByPrimaryKeySelective(ElectrifyInfo record);
  19 +
  20 + int updateByPrimaryKey(ElectrifyInfo record);
  21 +}
  1 +package com.sunyo.energy.location.model;
  2 +
  3 +public class ElectrifyInfo {
  4 + private Integer id;
  5 +
  6 + private String deviceid;
  7 +
  8 + public Integer getId() {
  9 + return id;
  10 + }
  11 +
  12 + public void setId(Integer id) {
  13 + this.id = id;
  14 + }
  15 +
  16 + public String getDeviceid() {
  17 + return deviceid;
  18 + }
  19 +
  20 + public void setDeviceid(String deviceid) {
  21 + this.deviceid = deviceid == null ? null : deviceid.trim();
  22 + }
  23 +}
  1 +package com.sunyo.energy.location.model;
  2 +
  3 +import lombok.Data;
  4 +
  5 +/**
  6 + * @author shenhailong
  7 + * <p>
  8 + * 2020/7/20/09:47
  9 + */
  10 +@Data
  11 +public class ProwerResult {
  12 +
  13 + private String errcode;
  14 +
  15 + private String errmessage;
  16 +
  17 + private ProwerResultData data;
  18 +
  19 +}
  1 +package com.sunyo.energy.location.model;
  2 +
  3 +import lombok.Data;
  4 +
  5 +import java.util.List;
  6 +
  7 +/**
  8 + * @author shenhailong
  9 + * <p>
  10 + * 2020/7/20/09:48
  11 + */
  12 +@Data
  13 +public class ProwerResultData {
  14 +
  15 + private List<ProwerResultDatas> datas;
  16 +
  17 +}
  1 +package com.sunyo.energy.location.model;
  2 +
  3 +import lombok.Data;
  4 +
  5 +/**
  6 + * @author shenhailong
  7 + * <p>
  8 + * 2020/7/20/09:48
  9 + */
  10 +@Data
  11 +public class ProwerResultDatas {
  12 +
  13 + private Integer deviceId;
  14 +
  15 + private Integer action;
  16 +
  17 + private Boolean success;
  18 +
  19 + @Override
  20 + public String toString() {
  21 + return "ProwerResultDatas{" +
  22 + "deviceId=" + deviceId +
  23 + ", action=" + action +
  24 + ", success=" + success +
  25 + '}';
  26 + }
  27 +}
1 package com.sunyo.energy.location.service.imp; 1 package com.sunyo.energy.location.service.imp;
2 2
3 import com.alibaba.fastjson.JSON; 3 import com.alibaba.fastjson.JSON;
  4 +import com.sun.deploy.net.HttpUtils;
4 import com.sun.tools.internal.xjc.reader.xmlschema.bindinfo.BIGlobalBinding; 5 import com.sun.tools.internal.xjc.reader.xmlschema.bindinfo.BIGlobalBinding;
5 import com.sunyo.energy.location.dao.*; 6 import com.sunyo.energy.location.dao.*;
6 import com.sunyo.energy.location.model.*; 7 import com.sunyo.energy.location.model.*;
@@ -27,6 +28,9 @@ public class ElectricityMeterServiceImp implements ElectricityMeterService { @@ -27,6 +28,9 @@ public class ElectricityMeterServiceImp implements ElectricityMeterService {
27 @Autowired 28 @Autowired
28 PayRecordsMapper payRecordsMapper; 29 PayRecordsMapper payRecordsMapper;
29 30
  31 + @Autowired
  32 + ElectrifyInfoMapper electrifyInfoMapper;
  33 +
30 /** 34 /**
31 * 电表充值接口地址 35 * 电表充值接口地址
32 */ 36 */
@@ -67,16 +71,11 @@ public class ElectricityMeterServiceImp implements ElectricityMeterService { @@ -67,16 +71,11 @@ public class ElectricityMeterServiceImp implements ElectricityMeterService {
67 message = rechargeDevicesResultData.getSuccess(); 71 message = rechargeDevicesResultData.getSuccess();
68 } 72 }
69 if ("0".equals(rechargeDevicesResult.getErrcode()) && message == true) { 73 if ("0".equals(rechargeDevicesResult.getErrcode()) && message == true) {
70 - ElectricityMeter energyInfoForRealTime = getEnergyInfoForRealTime(electricityInfo.getDeviceId());  
71 - if (energyInfoForRealTime.getBalance() != null){  
72 - int i = energyInfoForRealTime.getBalance().compareTo(BigDecimal.ZERO);  
73 - if (i > 0){  
74 - Map<String, Object> map = new HashMap<>();  
75 - map.put("deviceId", electricityInfo.getDeviceId());  
76 - map.put("action", "1");  
77 - HttpsUtils.sendPost(remoteControlDevices, map);  
78 - }  
79 - } 74 + // 插入送电临时表
  75 + ElectrifyInfo electrifyInfo1 = new ElectrifyInfo();
  76 + electrifyInfo1.setDeviceid(electricityInfo.getDeviceId());
  77 + electrifyInfoMapper.insertSelective(electrifyInfo1);
  78 + // 修改订单状态
80 payRecordsMapper.updateStatus(electricityInfo.getOrderNumber()); 79 payRecordsMapper.updateStatus(electricityInfo.getOrderNumber());
81 // 成功 删除该订单 80 // 成功 删除该订单
82 electricityInfoMapper.deleteByPrimaryKey(electricityInfo.getOrderNumber()); 81 electricityInfoMapper.deleteByPrimaryKey(electricityInfo.getOrderNumber());
@@ -129,4 +128,50 @@ public class ElectricityMeterServiceImp implements ElectricityMeterService { @@ -129,4 +128,50 @@ public class ElectricityMeterServiceImp implements ElectricityMeterService {
129 } 128 }
130 129
131 130
  131 + /**
  132 + * 定时读取电表临时表 送电
  133 + */
  134 + @Scheduled(fixedDelay = 30000)
  135 + public void electrifyInfo() {
  136 + try {
  137 + List<ElectrifyInfo> electrifyInfoList = electrifyInfoMapper.selectAll();
  138 + for (ElectrifyInfo electrifyInfo: electrifyInfoList ){
  139 + ElectricityMeter energyInfoForRealTime = getEnergyInfoForRealTime(electrifyInfo.getDeviceid());
  140 + if (energyInfoForRealTime.getBalance() != null){
  141 + int i = energyInfoForRealTime.getBalance().compareTo(BigDecimal.ZERO);
  142 + log.info("查询该设备余额是否为正数{}", i);
  143 + if (i > 0){
  144 + log.info("进入送电接口----------");
  145 + Map<String, Object> map = new HashMap<>();
  146 + map.put("deviceId", electrifyInfo.getDeviceid());
  147 + map.put("action", "1");
  148 + String postResult = HttpsUtils.sendPost(remoteControlDevices, map);
  149 + ProwerResult prowerResult = JSON.parseObject(postResult, ProwerResult.class);
  150 + List<ProwerResultDatas> datas = prowerResult.getData().getDatas();
  151 + if ("0".equals(prowerResult.getErrcode())){
  152 + log.info("送电成功-------------------");
  153 + log.info("success-info-RechargeDevicesResult");
  154 + System.out.println(datas);
  155 + // 成功 删除该订单
  156 + electrifyInfoMapper.deleteByPrimaryKey(electrifyInfo.getId());
  157 + }else {
  158 + // 失败插入临时表
  159 + ElectrifyInfo electrifyInfo1 = new ElectrifyInfo();
  160 + electrifyInfo1.setDeviceid(electrifyInfo.getDeviceid());
  161 + electrifyInfoMapper.insertSelective(electrifyInfo1);
  162 + log.info("送电失败插入临时表--------------------------------");
  163 + log.info("送电信息插入success---info");
  164 +
  165 + }
  166 + }
  167 + }
  168 + log.info("定时任务处理完成");
  169 + }
  170 +
  171 + }catch (Exception e){
  172 + e.printStackTrace();
  173 + }
  174 + }
  175 +
  176 +
132 } 177 }
@@ -184,6 +184,8 @@ public class HttpsUtils { @@ -184,6 +184,8 @@ public class HttpsUtils {
184 // 打开URL连接 184 // 打开URL连接
185 java.net.HttpURLConnection httpConn = (java.net.HttpURLConnection) connURL 185 java.net.HttpURLConnection httpConn = (java.net.HttpURLConnection) connURL
186 .openConnection(); 186 .openConnection();
  187 + httpConn.setConnectTimeout(50000);
  188 + httpConn.setReadTimeout(50000);
187 // 设置通用属性 189 // 设置通用属性
188 httpConn.setRequestProperty("Accept", "*/*"); 190 httpConn.setRequestProperty("Accept", "*/*");
189 httpConn.setRequestProperty("Connection", "Keep-Alive"); 191 httpConn.setRequestProperty("Connection", "Keep-Alive");
  1 +<?xml version="1.0" encoding="UTF-8" ?>
  2 +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
  3 +<mapper namespace="com.sunyo.energy.location.dao.ElectrifyInfoMapper" >
  4 + <resultMap id="BaseResultMap" type="com.sunyo.energy.location.model.ElectrifyInfo" >
  5 + <id column="id" property="id" jdbcType="INTEGER" />
  6 + <result column="deviceId" property="deviceid" jdbcType="VARCHAR" />
  7 + </resultMap>
  8 + <sql id="Base_Column_List" >
  9 + id, deviceId
  10 + </sql>
  11 + <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
  12 + select
  13 + <include refid="Base_Column_List" />
  14 + from electrify_info
  15 + where id = #{id,jdbcType=INTEGER}
  16 + </select>
  17 +
  18 + <select id="selectAll" resultType="com.sunyo.energy.location.model.ElectrifyInfo">
  19 + select
  20 + <include refid="Base_Column_List" />
  21 + from electrify_info
  22 + </select>
  23 + <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
  24 + delete from electrify_info
  25 + where id = #{id,jdbcType=INTEGER}
  26 + </delete>
  27 + <insert id="insert" parameterType="com.sunyo.energy.location.model.ElectrifyInfo" >
  28 + insert into electrify_info (id, deviceId)
  29 + values (#{id,jdbcType=INTEGER}, #{deviceid,jdbcType=VARCHAR})
  30 + </insert>
  31 + <insert id="insertSelective" parameterType="com.sunyo.energy.location.model.ElectrifyInfo" >
  32 + insert into electrify_info
  33 + <trim prefix="(" suffix=")" suffixOverrides="," >
  34 + <if test="id != null" >
  35 + id,
  36 + </if>
  37 + <if test="deviceid != null" >
  38 + deviceId,
  39 + </if>
  40 + </trim>
  41 + <trim prefix="values (" suffix=")" suffixOverrides="," >
  42 + <if test="id != null" >
  43 + #{id,jdbcType=INTEGER},
  44 + </if>
  45 + <if test="deviceid != null" >
  46 + #{deviceid,jdbcType=VARCHAR},
  47 + </if>
  48 + </trim>
  49 + </insert>
  50 + <update id="updateByPrimaryKeySelective" parameterType="com.sunyo.energy.location.model.ElectrifyInfo" >
  51 + update electrify_info
  52 + <set >
  53 + <if test="deviceid != null" >
  54 + deviceId = #{deviceid,jdbcType=VARCHAR},
  55 + </if>
  56 + </set>
  57 + where id = #{id,jdbcType=INTEGER}
  58 + </update>
  59 + <update id="updateByPrimaryKey" parameterType="com.sunyo.energy.location.model.ElectrifyInfo" >
  60 + update electrify_info
  61 + set deviceId = #{deviceid,jdbcType=VARCHAR}
  62 + where id = #{id,jdbcType=INTEGER}
  63 + </update>
  64 +</mapper>