作者 shenhailong

修改水费充值逻辑

package com.sunyo.energy.location.dao;
import com.sunyo.energy.location.model.WaterMeterSacc;
public interface WaterMeterSaccMapper {
int deleteByPrimaryKey(String wmId);
int insert(WaterMeterSacc record);
int insertSelective(WaterMeterSacc record);
WaterMeterSacc selectByPrimaryKey(String wmId);
int updateByPrimaryKeySelective(WaterMeterSacc record);
int updateByPrimaryKey(WaterMeterSacc record);
}
\ No newline at end of file
... ...
package com.sunyo.energy.location.model;
import java.math.BigDecimal;
public class WaterMeterSacc {
private String wmId;
private String ardname;
private BigDecimal unitPrice;
private BigDecimal wmSacc;
public String getWmId() {
return wmId;
}
public void setWmId(String wmId) {
this.wmId = wmId == null ? null : wmId.trim();
}
public String getArdname() {
return ardname;
}
public void setArdname(String ardname) {
this.ardname = ardname == null ? null : ardname.trim();
}
public BigDecimal getUnitPrice() {
return unitPrice;
}
public void setUnitPrice(BigDecimal unitPrice) {
this.unitPrice = unitPrice;
}
public BigDecimal getWmSacc() {
return wmSacc;
}
public void setWmSacc(BigDecimal wmSacc) {
this.wmSacc = wmSacc;
}
}
\ No newline at end of file
... ...
... ... @@ -6,9 +6,11 @@ import com.sunyo.energy.location.controller.response.ResultJson;
import com.sunyo.energy.location.dao.LocationMapper;
import com.sunyo.energy.location.dao.PayRecordsMapper;
import com.sunyo.energy.location.dao.WaterMeterMapper;
import com.sunyo.energy.location.dao.WaterMeterSaccMapper;
import com.sunyo.energy.location.demopay.QrDemo;
import com.sunyo.energy.location.model.PayRecords;
import com.sunyo.energy.location.model.WaterMeter;
import com.sunyo.energy.location.model.WaterMeterSacc;
import com.sunyo.energy.location.service.WaterMeterService;
import com.sunyo.energy.location.utils.AllUtils;
import com.sunyo.energy.location.utils.HttpsUtils;
... ... @@ -35,6 +37,10 @@ public class WaterMeterServiceImp implements WaterMeterService {
@Autowired
private LocationMapper locationMapper;
@Autowired
WaterMeterSaccMapper waterMeterSaccMapper;
/**
* 查询所有水表
*/
... ... @@ -130,9 +136,22 @@ public class WaterMeterServiceImp implements WaterMeterService {
// 得到请求接口 返回值 和总水量
Map<String, Object> map = allWater(payFees, wmId);
Map hashMap = JSON.parseObject(map.get("status").toString(), HashMap.class);
/**
* 外部充值水表成功
*/
if ("0".equals(hashMap.get("state").toString())) {
int update = waterMeterMapper.update(wmId, map.get("allSacc").toString());
resultJson.setCode("200");
WaterMeterSacc waterMeterSacc = new WaterMeterSacc();
waterMeterSacc.setWmId(AllUtils.wmIdUtils(wmId));
waterMeterSacc.setWmSacc(new BigDecimal(String.valueOf(map.get("Add_sacc"))));
/**
* 修改本地累计充值量
*/
int i = waterMeterSaccMapper.updateByPrimaryKeySelective(waterMeterSacc);
if (i > 0){
resultJson.setCode("200");
}else {
resultJson.setCode("203");
}
} else {
resultJson.setCode("203");
}
... ... @@ -217,8 +236,8 @@ public class WaterMeterServiceImp implements WaterMeterService {
// 充值最后立方水数值
String s = AllUtils.nubmerDivision(payFees);
// 查询累计充值量
WaterMeter realTime = findRealTime(wmId);
String allSacc = AllUtils.nubmerAdd(s, realTime.getWmSacc());
WaterMeterSacc waterMeterSacc = waterMeterSaccMapper.selectByPrimaryKey(AllUtils.wmIdUtils(wmId));
String allSacc = AllUtils.nubmerAdd(s, waterMeterSacc.getWmSacc());
Map<String, Object> datas = new HashMap<>();
datas.put("MtId", wmId);
datas.put("Add_sacc", allSacc);
... ... @@ -265,4 +284,5 @@ public class WaterMeterServiceImp implements WaterMeterService {
return payRecords;
}
}
... ...
... ... @@ -35,11 +35,10 @@ public class AllUtils {
//数字相加 参数1加参数2
public static String nubmerAdd(String oneWmSacc, String s) {
public static String nubmerAdd(String oneWmSacc, BigDecimal s) {
BigDecimal bigDecimal = new BigDecimal(oneWmSacc);
BigDecimal bigDecimal1 = new BigDecimal(s);
String s1 = bigDecimal.add(bigDecimal1).toString();
String s1 = bigDecimal.add(s).toString();
return s1;
}
... ... @@ -56,5 +55,23 @@ public class AllUtils {
return merchantId + result;
}
/**
* 处理水表编号加 '-' 问题
* @param replace 水表编号
* @return
*/
public static String wmIdUtils(String replace) {
if (!replace.contains("-")){
String regex = "(.{2})";
replace = replace.replaceAll(regex, "$1-");
String substring = replace.substring(0, replace.length() - 1);
return substring;
}else {
return replace;
}
}
}
... ...
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.sunyo.energy.location.dao.WaterMeterSaccMapper" >
<resultMap id="BaseResultMap" type="com.sunyo.energy.location.model.WaterMeterSacc" >
<id column="wm_id" property="wmId" jdbcType="VARCHAR" />
<result column="ardname" property="ardname" jdbcType="VARCHAR" />
<result column="unit_price" property="unitPrice" jdbcType="DECIMAL" />
<result column="wm_sacc" property="wmSacc" jdbcType="DECIMAL" />
</resultMap>
<sql id="Base_Column_List" >
wm_id, ardname, unit_price, wm_sacc
</sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String" >
select
<include refid="Base_Column_List" />
from water_meter_sacc
where wm_id = #{wmId,jdbcType=VARCHAR}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.String" >
delete from water_meter_sacc
where wm_id = #{wmId,jdbcType=VARCHAR}
</delete>
<insert id="insert" parameterType="com.sunyo.energy.location.model.WaterMeterSacc" >
insert into water_meter_sacc (wm_id, ardname, unit_price,
wm_sacc)
values (#{wmId,jdbcType=VARCHAR}, #{ardname,jdbcType=VARCHAR}, #{unitPrice,jdbcType=DECIMAL},
#{wmSacc,jdbcType=DECIMAL})
</insert>
<insert id="insertSelective" parameterType="com.sunyo.energy.location.model.WaterMeterSacc" >
insert into water_meter_sacc
<trim prefix="(" suffix=")" suffixOverrides="," >
<if test="wmId != null" >
wm_id,
</if>
<if test="ardname != null" >
ardname,
</if>
<if test="unitPrice != null" >
unit_price,
</if>
<if test="wmSacc != null" >
wm_sacc,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
<if test="wmId != null" >
#{wmId,jdbcType=VARCHAR},
</if>
<if test="ardname != null" >
#{ardname,jdbcType=VARCHAR},
</if>
<if test="unitPrice != null" >
#{unitPrice,jdbcType=DECIMAL},
</if>
<if test="wmSacc != null" >
#{wmSacc,jdbcType=DECIMAL},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.sunyo.energy.location.model.WaterMeterSacc" >
update water_meter_sacc
<set >
<if test="ardname != null" >
ardname = #{ardname,jdbcType=VARCHAR},
</if>
<if test="unitPrice != null" >
unit_price = #{unitPrice,jdbcType=DECIMAL},
</if>
<if test="wmSacc != null" >
wm_sacc = #{wmSacc,jdbcType=DECIMAL},
</if>
</set>
where wm_id = #{wmId,jdbcType=VARCHAR}
</update>
<update id="updateByPrimaryKey" parameterType="com.sunyo.energy.location.model.WaterMeterSacc" >
update water_meter_sacc
set ardname = #{ardname,jdbcType=VARCHAR},
unit_price = #{unitPrice,jdbcType=DECIMAL},
wm_sacc = #{wmSacc,jdbcType=DECIMAL}
where wm_id = #{wmId,jdbcType=VARCHAR}
</update>
</mapper>
\ No newline at end of file
... ...