Compare commits

...

10 Commits

10 changed files with 106 additions and 59 deletions

View File

@ -62,7 +62,8 @@ server:
spring:
# 环境配置dev=开发环境prod=生产环境
profiles:
active: dev # 环境配置dev=开发环境prod=生产环境
# active: dev # 环境配置dev=开发环境prod=生产环境
active: prod # 环境配置dev=开发环境prod=生产环境
# 资源信息
messages:
# 国际化资源文件路径

View File

@ -33,6 +33,7 @@ import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
import java.time.LocalTime;
@ -119,8 +120,8 @@ public class DeviceOtherMsgConsumer {
LambdaUpdateChainWrapper<DeviceReportInfo> up = new LambdaUpdateChainWrapper<>(deviceReportInfoMapper)
.eq(DeviceReportInfo::getSerialNumber, serialNumber);
//获取流量计累计用水量/瞬时流量
Float meterSum = data1.getFloat("meterSum");
Float meterIns = data1.getFloat("meterIns");
BigDecimal meterSum = data1.getBigDecimal("meterSum");
BigDecimal meterIns = data1.getBigDecimal("meterIns");
//获取瞬时功率/累计电量
Float insPower = data1.getFloat("insPower");
@ -134,7 +135,7 @@ public class DeviceOtherMsgConsumer {
Integer addr = data1.getInt("meterAddr");
//获取水单价
Float waterFees = data1.getFloat("waterFees");
BigDecimal waterFees = data1.getBigDecimal("waterFees");
Integer runStatus = null;
if(valveState==0){
runStatus=2;
@ -151,13 +152,13 @@ public class DeviceOtherMsgConsumer {
up.set(DeviceReportInfo::getAddr,addr);
}
if(waterFees!=null){
up.set(DeviceReportInfo::getWaterFree,waterFees);
up.set(DeviceReportInfo::getWaterFree,waterFees.divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP));
}
if(meterIns!=null){
up.set(DeviceReportInfo::getInsFlow,meterIns);
up.set(DeviceReportInfo::getInsFlow,meterIns.divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP));
}
if(meterSum!=null){
up.set(DeviceReportInfo::getSumFlow,meterSum);
up.set(DeviceReportInfo::getSumFlow,meterSum.divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP));
}
//同步数据
up.update();
@ -185,8 +186,8 @@ public class DeviceOtherMsgConsumer {
LambdaUpdateChainWrapper<DeviceReportInfo> up = new LambdaUpdateChainWrapper<>(deviceReportInfoMapper)
.eq(DeviceReportInfo::getSerialNumber, serialNumber);
//获取流量计累计用水量/瞬时流量
Float meterSum = data1.getFloat("meterSum");
Float meterIns = data1.getFloat("meterIns");
BigDecimal meterSum = data1.getBigDecimal("meterSum");
BigDecimal meterIns = data1.getBigDecimal("meterIns");
//获取瞬时功率/累计电量
Float insPower = data1.getFloat("insPower");
Float sumEle = data1.getFloat("sumEle");
@ -198,7 +199,7 @@ public class DeviceOtherMsgConsumer {
Integer addr = data1.getInt("meterAddr");
//获取水单价
Float waterFees = data1.getFloat("waterFees");
BigDecimal waterFees = data1.getBigDecimal("waterFees");
Integer runStatus = null;
if(valveState==0){
runStatus=2;
@ -215,13 +216,13 @@ public class DeviceOtherMsgConsumer {
up.set(DeviceReportInfo::getAddr,addr);
}
if(waterFees!=null){
up.set(DeviceReportInfo::getWaterFree,waterFees);
up.set(DeviceReportInfo::getWaterFree,waterFees.divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP));
}
if(meterIns!=null){
up.set(DeviceReportInfo::getInsFlow,meterIns);
up.set(DeviceReportInfo::getInsFlow,meterIns.divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP));
}
if(meterSum!=null){
up.set(DeviceReportInfo::getSumFlow,meterSum);
up.set(DeviceReportInfo::getSumFlow,meterSum.divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP));
}
//同步数据
up.update();
@ -285,7 +286,7 @@ public class DeviceOtherMsgConsumer {
ngCardSwipeRecords.setAreaCode(areaCode);//区域号
ngCardSwipeRecords.setCardSwipeType(0);//开阀
ngCardSwipeRecords.setCardSwipeTime(DateUtils.getNowDate());//刷卡时间
ngCardSwipeRecords.setAmountDue(userBalance);//用户余额
ngCardSwipeRecords.setAmountDue(userBalance.divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP));//用户余额
if(cardInfo!=null && cardInfo.getUserId()!=null){
ngCardSwipeRecords.setUserId(cardList.get(0).getUserId());//用户id
}
@ -300,7 +301,7 @@ public class DeviceOtherMsgConsumer {
}
// userIrrigationRecord.setDeptId(deptId);
//添加一条灌溉记录
DateTime currentTime=DateTime.now();//获取当前时间作为开阀时间
userIrrigationRecord.setStartTime(currentTime);//开阀时间
System.err.println("currentTime"+currentTime);
@ -361,7 +362,7 @@ public class DeviceOtherMsgConsumer {
BigDecimal currentFlow=closeCumFlow.subtract(irrigationRecordList.get(0).getOpenCumFlow());//计算结果为当前用水量
//当前用水量
log.info("设备{}本次灌溉用户当前用水量{}",serialNumber,currentFlow);
userIrrigationRecord.setCurFlow(currentFlow);
userIrrigationRecord.setCurFlow(currentFlow.divide(BigDecimal.valueOf(10000), 2, RoundingMode.HALF_UP));
BigDecimal userBalance=dataJson.getBigDecimal("userBalance");//用户余额
System.err.println("用户余额:"+userBalance);
@ -376,9 +377,18 @@ public class DeviceOtherMsgConsumer {
{
log.error("设备{}灌溉记录修改失败",serialNumber);
}
//同步购水卡余额-----------------------------------
String areaCode=dataJson.getStr("areaCode");
boolean update = new LambdaUpdateChainWrapper<>(userRechargeCardsMapper)
.set(UserRechargeCards::getBalance, userBalance)
.eq(UserRechargeCards::getCardNumber, cardNumber)
.eq(UserRechargeCards::getAreaCode, areaCode)
.update();
if(!update){
log.error("设备{}关阀报文同步购水卡{}余额失败",serialNumber,cardNumber);
}
//添加一条刷卡记录
String areaCode=dataJson.getStr("areaCode");
// UserRechargeCards cardInfo=userRechargeCardsMapper.selectUserRechargeCardsByCardNumberAndAreaCode(cardNumber,areaCode);//查询卡号+区域号信息
NgCardSwipeRecords ngCardSwipeRecords=new NgCardSwipeRecords();
@ -387,7 +397,7 @@ public class DeviceOtherMsgConsumer {
ngCardSwipeRecords.setAreaCode(areaCode);//区域号
ngCardSwipeRecords.setCardSwipeType(1);//关阀
ngCardSwipeRecords.setCardSwipeTime(DateUtils.getNowDate());//刷卡时间
ngCardSwipeRecords.setAmountDue(userBalance);//用户余额
ngCardSwipeRecords.setAmountDue(userBalance.divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP));//用户余额
// ngCardSwipeRecords.setUserId(cardList.get(0).getUserId());//用户id

View File

@ -1,9 +1,6 @@
package com.fastbee.data.controller;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletResponse;
@ -56,37 +53,50 @@ public class DeviceReportInfoController extends BaseController
* 查询设备上电审核前上报的基础信息列表
*/
// @PreAuthorize("@ss.hasPermi('iot:info:list')")
@GetMapping("/list")
@ApiOperation("查询设备上电审核前上报的基础信息列表")
public TableDataInfo list(DeviceReportInfo deviceReportInfo)
{
startPage();
List<DeviceReportInfo> list = deviceReportInfoService.selectDeviceReportInfoList(deviceReportInfo);
System.err.println("查询条件:"+deviceReportInfo.getOnLine());
System.err.println("设备总长度:"+list.size());
//查询设备在线状态
list.forEach(d->{
if(d.getType()==1){
Boolean hassed = stringRedisTemplate.hasKey("neixiang_device_online_status:" + 147 + ":" + d.getSerialNumber());
if(hassed){
d.setOnLine(1);
}else{
d.setOnLine(0);
}
} else if ( d.getType()==2) {
//展连流量计设备在线状态判断
d.setType(0);
}
});
// //处理在线/离线筛选
// if(deviceReportInfo.getOnLine()!=null){
// //根据online状态的值过滤集合
// list= list.stream().filter(d -> Objects.equals(d.getOnLine(), deviceReportInfo.getOnLine()))
// .collect(Collectors.toList());
// }
System.err.println("过滤后总长度:"+list.size());
return getDataTable(list);
@GetMapping("/list")
@ApiOperation("查询设备上电审核前上报的基础信息列表")
public TableDataInfo list(DeviceReportInfo deviceReportInfo)
{
System.err.println(deviceReportInfo.getSearchValue());
List<DeviceReportInfo> list=new ArrayList<>();
if(deviceReportInfo.getSearchValue()!=null){
deviceReportInfo.setSerialNumber(deviceReportInfo.getSearchValue());
}
startPage();
list = deviceReportInfoService.selectDeviceReportInfoList(deviceReportInfo);
if (list.isEmpty()){
deviceReportInfo.setSerialNumber(null);
deviceReportInfo.setName(deviceReportInfo.getSearchValue());
list = deviceReportInfoService.selectDeviceReportInfoList(deviceReportInfo);
}
//查询设备在线状态
list.forEach(d->{
if(d.getType()==1){
Boolean hassed = stringRedisTemplate.hasKey("neixiang_device_online_status:" + 147 + ":" + d.getSerialNumber());
if(hassed){
d.setOnLine(1);
}else{
d.setOnLine(0);
}
} else if ( d.getType()==2) {
//展连流量计设备在线状态判断
d.setType(0);
}
});
// //处理在线/离线筛选
// if(deviceReportInfo.getOnLine()!=null){
// //根据online状态的值过滤集合
// list= list.stream().filter(d -> Objects.equals(d.getOnLine(), deviceReportInfo.getOnLine()))
// .collect(Collectors.toList());
// }
System.err.println("过滤后总长度:"+list.size());
return getDataTable(list);
}
//统计是设备相关信息
@GetMapping("/list/count")
@ApiOperation("统计是设备相关信息")

View File

@ -6,6 +6,7 @@ import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import cn.hutool.json.ObjectMapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.dtflys.forest.annotation.Success;
import com.fastbee.common.core.controller.BaseController;
import com.fastbee.common.core.domain.AjaxResult;
@ -141,9 +142,19 @@ public class WeChatPayController extends BaseController {
System.out.println("生成订单");
int flag=0;
List<NgMerchants> merchantsList=new LambdaQueryChainWrapper<>(ngMerchantsMapper)
.eq(NgMerchants::getAreaCode,String.valueOf(recharge.getAreacode()))
.list();
if(merchantsList.size()==0)
{
return error("不存在此区域号对应的商户");
}
NgMerchants ngMerchants=merchantsList.get(0);
recharge.setDeptId(ngMerchants.getDeptId());
UserRechargeCards userRechargeCards=new UserRechargeCards();
userRechargeCards.setCardNumber(String.valueOf(recharge.getCardnumber()));
userRechargeCards.setAreaCode(String.valueOf(recharge.getAreacode()));
userRechargeCards.setDeptId(recharge.getDeptId());
List<UserRechargeCards> list=userRechargeCardsMapper.selectUserRechargeCardsList(userRechargeCards);
if(list.size()==0)

View File

@ -100,13 +100,15 @@ public class DeviceReportSSEController extends BaseController {
return AjaxResultPro.success(1102,"voiceType不能为空!",null);
}
if(StringUtils.isBlank(reportInfo.getFacType())){
return AjaxResultPro.success(111,"facType不能为空!",null);
return AjaxResultPro.success(1102,"facType不能为空!",null);
}
if(StringUtils.isBlank(reportInfo.getTestRecord())){
return AjaxResultPro.success(111,"testRecord不能为空!",null);
return AjaxResultPro.success(1102,"testRecord不能为空!",null);
}
if(StringUtils.isBlank(reportInfo.getAreaCode())){
return AjaxResultPro.success(1102,"areaCode不能为空!",null);
}
// String deviceNumber = generateDeviceNumber();
//映射字段
@ -123,6 +125,7 @@ public class DeviceReportSSEController extends BaseController {
deviceReportInfo.setVoiceManufacturer(Long.valueOf(reportInfo.getVoiceType()));
deviceReportInfo.setReplaceManufacturer(Long.valueOf(reportInfo.getFacType()));
deviceReportInfo.setTestRecord(reportInfo.getTestRecord());
deviceReportInfo.setAreaCode(reportInfo.getAreaCode());
//设置状态为未审核
deviceReportInfo.setStatus(0);
//设备编码查重
@ -152,6 +155,7 @@ public class DeviceReportSSEController extends BaseController {
.set(DeviceReportInfo::getVoiceManufacturer, Long.valueOf(reportInfo.getVoiceType()))
.set(DeviceReportInfo::getReplaceManufacturer, Long.valueOf(reportInfo.getFacType()))
.set(DeviceReportInfo::getTestRecord,reportInfo.getTestRecord())
.set(DeviceReportInfo::getAreaCode,reportInfo.getAreaCode())
.eq(DeviceReportInfo::getImei, deviceReportInfo.getImei())
.update();
if (update) {
@ -187,7 +191,7 @@ public class DeviceReportSSEController extends BaseController {
if(inserted==0){
return AjaxResultPro.success(1104,"设备上电审核信息插入失败!",null);
}
//插入成功后,插入设备信息
//插入成功后,插入设备信息----------------------------------------------插入即可mqtt连接--------------------------------
Device device= new Device();
device.setDeviceName(genDeviceNumber);
device.setProductName("内乡县水电双计设备02");

View File

@ -17,7 +17,8 @@ public class DevicePowerDTO {
private String framType;
private String facType;
private String testRecord;
private String areaCode;
//---------------------------------
String serialNumber;
}

View File

@ -69,4 +69,9 @@ private static final long serialVersionUID = 1L;
@ApiModelProperty("平台证书序列号")
private String platformCertificateSerialNumber;
/** 区域号 */
@Excel(name = "区域号")
@ApiModelProperty("区域号")
private String areaCode;
}

View File

@ -106,6 +106,7 @@ public class NgUserRechargeRecordsServiceImpl implements INgUserRechargeRecordsS
//查询用户充值卡信息
String cardNumber=String.valueOf(rechargecardUser.getCardnumber());
String areaCode=String.valueOf(rechargecardUser.getAreacode());
Long deptId=rechargecardUser.getDeptId();
UserRechargeCards info=userRechargeCardsMapper.selectUserRechargeCardsByCardNumberAndAreaCode(cardNumber,areaCode);
/*if (info == null) {
// 如果没有找到对应的记录返回0或者一个错误码

View File

@ -60,7 +60,7 @@ public class UserWechatPayServiceImpl implements IUserWechatPayService {
//支付结果回调地址
// public static String notify_url="https://1f647120.r3.cpolar.cn/pay/getresult";//https://1f647120.r3.cpolar.cn
//TODO 生产环境支付结果异步通知地址
public static String notify_url="https://farmh5.hze2.com/prod-api/pay/getresult";
public static String notify_url="https://www.farm315.com/prod-api/pay/getresult";
//https://5f655ed0.r3.cpolar.cn
//微信小程序appid
public static String appId="wx308612d2a8423311";

View File

@ -15,10 +15,11 @@
<result property="platformCertificates" column="platform_certificates" />
<result property="wechatPublicKeyId" column="wechat_public_key_id" />
<result property="platformCertificateSerialNumber" column="platform_certificate_serial_number" />
<result property="areaCode" column="area_code" />
</resultMap>
<sql id="selectNgMerchantsVo">
select id, mch_id, private_key_path, serial_no, api_v3_key, public_key_path, dept_id, platform_certificates, wechat_public_key_id, platform_certificate_serial_number from ng_merchants
select id, mch_id, private_key_path, serial_no, api_v3_key, public_key_path, dept_id, platform_certificates, wechat_public_key_id, platform_certificate_serial_number,area_code from ng_merchants
</sql>
<select id="selectNgMerchantsList" parameterType="NgMerchants" resultMap="NgMerchantsResult">
@ -53,6 +54,7 @@
<if test="platformCertificates != null">platform_certificates,</if>
<if test="wechatPublicKeyId != null">wechat_public_key_id,</if>
<if test="platformCertificateSerialNumber != null">platform_certificate_serial_number,</if>
<if test="areaCode != null">area_code,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="mchId != null">#{mchId},</if>
@ -64,6 +66,7 @@
<if test="platformCertificates != null">#{platformCertificates},</if>
<if test="wechatPublicKeyId != null">#{wechatPublicKeyId},</if>
<if test="platformCertificateSerialNumber != null">#{platformCertificateSerialNumber},</if>
<if test="areaCode != null">#{areaCode},</if>
</trim>
</insert>
@ -79,6 +82,7 @@
<if test="platformCertificates != null">platform_certificates = #{platformCertificates},</if>
<if test="wechatPublicKeyId != null">wechat_public_key_id = #{wechatPublicKeyId},</if>
<if test="platformCertificateSerialNumber != null">platform_certificate_serial_number = #{platformCertificateSerialNumber},</if>
<if test="areaCode != null">area_code = #{areaCode},</if>
</trim>
where id = #{id}
</update>