灌溉逻辑+修改充值记录接口添加了时间检索
This commit is contained in:
@ -1,5 +1,6 @@
|
||||
package com.fastbee.mq.redischannel.consumer;
|
||||
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
|
||||
@ -12,14 +13,20 @@ import com.fastbee.mq.service.impl.DeviceOtherMsgHandler;
|
||||
import com.fastbee.mqttclient.PubMqttClient;
|
||||
import com.fastbee.rechargecard.domain.NgUserRechargeRecords;
|
||||
import com.fastbee.rechargecard.domain.NgWaterPumpUsageRecords;
|
||||
import com.fastbee.rechargecard.domain.UserIrrigationRecord;
|
||||
import com.fastbee.rechargecard.mapper.NgUserRechargeRecordsMapper;
|
||||
import com.fastbee.rechargecard.mapper.NgWaterPumpUsageRecordsMapper;
|
||||
import com.fastbee.rechargecard.mapper.UserIrrigationRecordMapper;
|
||||
import com.fastbee.rechargecard.mapper.UserRechargeCardsMapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.h2.engine.User;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Component;
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
@ -50,6 +57,12 @@ public class DeviceOtherMsgConsumer {
|
||||
@Autowired
|
||||
private NgUserRechargeRecordsMapper ngUserRechargeRecordsMapper;
|
||||
|
||||
@Autowired
|
||||
private UserIrrigationRecordMapper userIrrigationRecordMapper;
|
||||
|
||||
@Autowired
|
||||
private UserRechargeCardsMapper userRechargeCardsMapper;
|
||||
|
||||
@Autowired
|
||||
private StringRedisTemplate stringRedisTemplate;
|
||||
|
||||
@ -70,7 +83,8 @@ public class DeviceOtherMsgConsumer {
|
||||
//从主题中解析出设备序列号
|
||||
String serialNumber= split[2];//设备序列号
|
||||
|
||||
// System.err.println("主题:"+topic+"--产品id:"+productId+"--设备序列号:"+serialNumber);
|
||||
System.err.println("主题:"+topic+"--产品id:"+productId+"--设备序列号:"+serialNumber);
|
||||
System.err.println(topic.endsWith("/info/up"));
|
||||
//设备上报数据消息---------------------------------------------------------------------------------
|
||||
if(topic.endsWith("/info/up")){
|
||||
deviceDataReportHandler(new String(data));
|
||||
@ -112,6 +126,74 @@ public class DeviceOtherMsgConsumer {
|
||||
if(i<1){
|
||||
System.err.println("--------------------------保存使用记录失败!---------------------------");
|
||||
}
|
||||
JSONObject dataJson=jsonObject.getJSONObject("data");
|
||||
System.err.println(jsonObject);
|
||||
System.err.println(dataJson);
|
||||
if(JSONUtil.parseObj(data1).get("action").equals("startPump"))
|
||||
{
|
||||
System.err.println("开阀");
|
||||
//开阀-添加灌溉记录
|
||||
UserIrrigationRecord userIrrigationRecord=new UserIrrigationRecord();
|
||||
userIrrigationRecord.setDeviceNumber(serialNumber);//设备编码
|
||||
System.err.println("serialNumber"+serialNumber);
|
||||
|
||||
String cardNumber= String.valueOf(dataJson.getInt("cardId"));//解析cardId
|
||||
userIrrigationRecord.setCardNumber(cardNumber);//卡号
|
||||
System.err.println("cardNumber"+cardNumber);
|
||||
|
||||
/*Long userId=null;
|
||||
System.err.println("userId");
|
||||
if(userRechargeCardsMapper.selectUserRechargeCardsByCardNumber(cardNumber)==null)
|
||||
{
|
||||
throw new Exception("订单信息不存在");
|
||||
}
|
||||
userId=userRechargeCardsMapper.selectUserRechargeCardsByCardNumber(cardNumber).getUserId();
|
||||
userIrrigationRecord.setUserId(userId);
|
||||
System.err.println("userId"+userId);*/
|
||||
|
||||
|
||||
DateTime currentTime=DateTime.now();//获取当前时间作为开阀时间
|
||||
userIrrigationRecord.setStartTime(currentTime);//开阀时间
|
||||
System.err.println("currentTime"+currentTime);
|
||||
|
||||
BigDecimal openCumFlow=dataJson.getBigDecimal("userSumFlow");//用户开阀时总使用水量
|
||||
userIrrigationRecord.setOpenCumFlow(openCumFlow);//用户开阀时使用水量
|
||||
System.err.println("openCumFlow"+openCumFlow);
|
||||
|
||||
String areaCode=dataJson.getStr("areaCode");
|
||||
userIrrigationRecord.setAreaCode(areaCode);//区域号
|
||||
System.err.println("areaCode"+areaCode);
|
||||
|
||||
userIrrigationRecord.setStatus(1);//状态改为灌溉中
|
||||
|
||||
userIrrigationRecordMapper.insertUserIrrigationRecord(userIrrigationRecord);//开阀时添加一条灌溉记录
|
||||
}else{
|
||||
System.err.println("关阀");
|
||||
//关阀-修改灌溉记录,修改结束时间、灌溉用水量(做差 关阀-开阀用户总累计流量。)查卡号最新一条记录
|
||||
String cardNumber=dataJson.getStr("cardId");//解析cardId
|
||||
//根据设备编码和卡号获取当前状态为灌溉中的灌溉记录
|
||||
UserIrrigationRecord userIrrigationRecord=userIrrigationRecordMapper.selectUserIrrigationRecordListBycardNumberAndDeviceNumber(cardNumber,serialNumber).get(0);
|
||||
|
||||
if(userIrrigationRecord==null)
|
||||
{
|
||||
System.err.println("此灌溉记录不存在");
|
||||
}
|
||||
DateTime currentTime=DateTime.now();//获取当前时间作为关阀时间
|
||||
userIrrigationRecord.setEndTime(currentTime);//关阀时间
|
||||
|
||||
BigDecimal closeCumFlow=dataJson.getBigDecimal("userSumFlow");//用户关阀时总用水量
|
||||
userIrrigationRecord.setCloseCumFlow(closeCumFlow);
|
||||
|
||||
BigDecimal currentFlow=closeCumFlow.subtract(userIrrigationRecord.getOpenCumFlow());//计算结果为当前用水量
|
||||
userIrrigationRecord.setCurFlow(currentFlow);
|
||||
|
||||
BigDecimal userBalance=dataJson.getBigDecimal("userBalance");//用户余额
|
||||
userIrrigationRecord.setBalance(userBalance);
|
||||
|
||||
userIrrigationRecord.setStatus(2);//灌溉状态更改为结束灌溉
|
||||
|
||||
userIrrigationRecordMapper.updateUserIrrigationRecord(userIrrigationRecord);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -285,5 +367,44 @@ public class DeviceOtherMsgConsumer {
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.err.println((LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))));
|
||||
DeviceReportBo bo=new DeviceReportBo();
|
||||
bo.setTopicName("hzlink/147/1200028/info/up");
|
||||
System.err.println("111");
|
||||
|
||||
String jsonStr = "{"
|
||||
+ " \"data\": {"
|
||||
+ " \"valveState\": 0,"
|
||||
+ " \"userBalance\": 9995102,"
|
||||
+ " \"sumFlow\": 640000,"
|
||||
+ " \"userSumEle\": 0,"
|
||||
+ " \"cardSn\": 1841852732,"
|
||||
+ " \"cardType\": 12,"
|
||||
+ " \"sumEle\": 0,"
|
||||
+ " \"doorStatus\": 100,"
|
||||
+ " \"meterIns\": 6100,"
|
||||
+ " \"meterStatus\": 1,"
|
||||
+ " \"userSumFlow\": 640000,"
|
||||
+ " \"cardId\": 402,"
|
||||
+ " \"action\": \"stopPump\","
|
||||
+ " \"meterSum\": 6400,"
|
||||
+ " \"pumpState\": 0,"
|
||||
+ " \"mcuSn\": 2147483647,"
|
||||
+ " \"areaCode\": 6460,"
|
||||
+ " \"workState\": 0"
|
||||
+ " },"
|
||||
+ " \"type\": \"waterEleData\","
|
||||
+ " \"pakSn\": 9"
|
||||
+ "}";
|
||||
|
||||
|
||||
// 将 JSON 字符串转换为 byte[] 数组
|
||||
byte[] jsonBytes = jsonStr.getBytes(StandardCharsets.UTF_8);
|
||||
bo.setData(jsonBytes);
|
||||
|
||||
DeviceOtherMsgConsumer deviceOtherMsgConsumer=new DeviceOtherMsgConsumer();
|
||||
deviceOtherMsgConsumer.consume(bo);
|
||||
System.err.println("end");
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user