diff --git a/fastbee-gateway/fastbee-mq/src/main/java/com/fastbee/mq/redischannel/consumer/DeviceOtherMsgConsumer.java b/fastbee-gateway/fastbee-mq/src/main/java/com/fastbee/mq/redischannel/consumer/DeviceOtherMsgConsumer.java index 3dac575..23c4cb2 100644 --- a/fastbee-gateway/fastbee-mq/src/main/java/com/fastbee/mq/redischannel/consumer/DeviceOtherMsgConsumer.java +++ b/fastbee-gateway/fastbee-mq/src/main/java/com/fastbee/mq/redischannel/consumer/DeviceOtherMsgConsumer.java @@ -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"); + + } } diff --git a/fastbee-open-api/src/main/java/com/fastbee/data/controller/pay/WeChatPayController.java b/fastbee-open-api/src/main/java/com/fastbee/data/controller/pay/WeChatPayController.java index a79b623..1d47a9b 100644 --- a/fastbee-open-api/src/main/java/com/fastbee/data/controller/pay/WeChatPayController.java +++ b/fastbee-open-api/src/main/java/com/fastbee/data/controller/pay/WeChatPayController.java @@ -12,6 +12,7 @@ import com.fastbee.common.core.domain.AjaxResult; import com.fastbee.common.utils.pay.AesUtil; import com.fastbee.common.utils.pay.RSAUtil; import com.fastbee.rechargecard.domain.NgMerchants; +import com.fastbee.rechargecard.domain.dto.WeChatPlatformCertificate; import com.fastbee.rechargecard.domain.dto.WeChatRecharge; import com.fastbee.rechargecard.domain.dto.WeChatRechargeBacktracking; import com.fastbee.rechargecard.mapper.NgIrrigationControllersMapper; @@ -83,9 +84,9 @@ public class WeChatPayController extends BaseController { */ @ApiOperation("获取平台证书") @GetMapping("/getPlatformCertificate") - public AjaxResult getPlatformCertificate(@RequestBody String mchId,@RequestBody String privateKey,@RequestBody String serial_no,@RequestBody String apiV3Key) + public AjaxResult getPlatformCertificate(@RequestBody WeChatPlatformCertificate weChatPlatformCertificate) { - return success(userWechatPayService.getPlatformCertificat(mchId,privateKey,serial_no,apiV3Key)); + return success(userWechatPayService.getPlatformCertificat(weChatPlatformCertificate)); } /** diff --git a/fastbee-open-api/src/main/java/com/fastbee/data/controller/userRecharge/NgUserRechargeRecordsController.java b/fastbee-open-api/src/main/java/com/fastbee/data/controller/userRecharge/NgUserRechargeRecordsController.java index ae6889b..691daa3 100644 --- a/fastbee-open-api/src/main/java/com/fastbee/data/controller/userRecharge/NgUserRechargeRecordsController.java +++ b/fastbee-open-api/src/main/java/com/fastbee/data/controller/userRecharge/NgUserRechargeRecordsController.java @@ -4,6 +4,8 @@ import java.util.Comparator; import java.util.List; import javax.servlet.http.HttpServletResponse; +import cn.hutool.core.date.DateTime; +import com.fastbee.rechargecard.domain.dto.NgUserRechargeRecordsDto; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.security.access.prepost.PreAuthorize; @@ -45,16 +47,18 @@ public class NgUserRechargeRecordsController extends BaseController // @PreAuthorize("@ss.hasPermi('rechargecard:records:list')") @GetMapping("/list") @ApiOperation("查询用户充值记录列表") - public TableDataInfo list(NgUserRechargeRecords ngUserRechargeRecords) + public TableDataInfo list(NgUserRechargeRecordsDto ngUserRechargeRecords) { startPage(); - List list = ngUserRechargeRecordsService.selectNgUserRechargeRecordsList(ngUserRechargeRecords); + List list = ngUserRechargeRecordsService.selectNgUserRechargeRecordsListByTime(ngUserRechargeRecords); //按照充值时间由近到远排序 // list.sort(Comparator.comparing(NgUserRechargeRecords::getRechargeTime).reversed()); // System.err.println("充值list = " + list); return getDataTable(list); } + + /** * 导出用户充值记录列表 */ diff --git a/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/NgCardSwipeRecordsMapper.xml b/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/NgCardSwipeRecordsMapper.xml index 7881b44..917990b 100644 --- a/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/NgCardSwipeRecordsMapper.xml +++ b/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/NgCardSwipeRecordsMapper.xml @@ -29,6 +29,7 @@ + + + and recharge_time between #{startTime} and #{endTime} + and user_id = #{userId} + and user_name like concat('%', #{userName}, '%') + and card_number = #{cardNumber} + and area_code = #{areaCode} + and type = #{type} + and amount = #{amount} + and balance = #{balance} + and recharge_time = #{rechargeTime} + and recharge_code = #{rechargeCode} + and status = #{status} + and serial_number = #{serialNumber} + and device_number = #{deviceNumber} + and project_id = #{projectId} + and dept_id = #{deptId} + + + + order by recharge_time desc + + + and id = #{id} and user_id = #{userId} and device_number = #{deviceNumber} and project_id = #{projectId} @@ -51,6 +54,8 @@ and last_time = #{lastTime} and status = #{status} and remarks = #{remarks} + and open_cum_flow = #{openCumFlow} + and close_cum_flow = #{closeCumFlow} @@ -108,6 +113,8 @@ update_time, create_by, update_by, + open_cum_flow, + close_cum_flow, #{userId}, @@ -130,6 +137,8 @@ #{updateTime}, #{createBy}, #{updateBy}, + #{openCumFlow}, + #{closeCumFlow}, @@ -156,6 +165,8 @@ update_time = #{updateTime}, create_by = #{createBy}, update_by = #{updateBy}, + open_cum_flow = #{openCumFlow}, + close_cum_flow = #{closeCumFlow}, where id = #{id}