灌溉逻辑+修改充值记录接口添加了时间检索

This commit is contained in:
2024-12-31 16:52:55 +08:00
parent 48b18a9e8b
commit aba6f51ea7
17 changed files with 431 additions and 12 deletions

View File

@ -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");
}
}