修改充值查询报文处理,以及充值机充值逻辑

This commit is contained in:
蒾酒 2025-01-06 12:20:22 +08:00
parent 745bde18ec
commit 882190f4e9
2 changed files with 84 additions and 84 deletions

View File

@ -252,6 +252,7 @@ public class DeviceOtherMsgConsumer {
if("startPump".equals(JSONUtil.parseObj(data1).get("action"))) if("startPump".equals(JSONUtil.parseObj(data1).get("action")))
{ {
System.err.println("开阀"); System.err.println("开阀");
log.info("设备{}开阀",serialNumber);
//开阀-添加灌溉记录 //开阀-添加灌溉记录
UserIrrigationRecord userIrrigationRecord=new UserIrrigationRecord(); UserIrrigationRecord userIrrigationRecord=new UserIrrigationRecord();
userIrrigationRecord.setDeviceNumber(serialNumber);//设备编码 userIrrigationRecord.setDeviceNumber(serialNumber);//设备编码
@ -319,8 +320,9 @@ public class DeviceOtherMsgConsumer {
System.err.println("充值卡金额同步失败"); System.err.println("充值卡金额同步失败");
} }
} }
}else{ }else if("stopPump".equals(JSONUtil.parseObj(data1).get("action"))){
System.err.println("关阀"); System.err.println("关阀");
log.info("设备{}关",serialNumber);
//关阀-修改灌溉记录修改结束时间灌溉用水量做差 关阀-开阀用户总累计流量查卡号最新一条记录 //关阀-修改灌溉记录修改结束时间灌溉用水量做差 关阀-开阀用户总累计流量查卡号最新一条记录
String cardNumber=dataJson.getStr("cardId");//解析cardId String cardNumber=dataJson.getStr("cardId");//解析cardId
//根据设备编码和卡号获取当前状态为灌溉中的灌溉记录 //根据设备编码和卡号获取当前状态为灌溉中的灌溉记录
@ -378,7 +380,7 @@ public class DeviceOtherMsgConsumer {
} }
//如果是设备刷卡上报的查询报文 //如果是设备刷卡上报的查询报文
if(data1.getStr("action")!=null&& "askMsg".equals(data1.getStr("action"))){ if(data1.getStr("action")!=null&& "askMsg".equals(data1.getStr("action"))){
cardReportHandler(productId,serialNumber,data1); cardReportHandler(productId,serialNumber,jsonObject);
} }
} }
@ -501,37 +503,57 @@ public class DeviceOtherMsgConsumer {
* 处理刷卡上报查询报文 * 处理刷卡上报查询报文
*/ */
private void cardReportHandler(Long productId,String serialNumber,JSONObject dataObj){ private void cardReportHandler(Long productId,String serialNumber,JSONObject dataObj){
JSONObject data = dataObj.getJSONObject("data");
//解析消息 //解析消息
String cardId=dataObj.getStr("cardId");//卡号 String cardId=data.getStr("cardId");//卡号
String areaCode=dataObj.getStr("areaCode");//区域码 String areaCode=data.getStr("areaCode");//区域码
//查询是否有未下发的指令 //先回应代表平台收到了来自设备的查询报文
Map<String,Object> reply=new HashMap<>();
reply.put("pakSn",dataObj.getInt("pakSn"));
//默认没有充值的订单
reply.put("cmd",400);
Map<String,Object> dataValue=new HashMap<>();
// dataValue.put("cmd",1000);
// data.put("orderNum",item.getId());//订单号
// dataValue.put("cardId",cardId);//卡号
// dataValue.put("areaCode",areaCode);//区域码
// data.put("investBalance",item.getAmount().doubleValue()*100);
// data.put("investWater",rechargecardUser.getWater()*100);
reply.put("msg","");
//查询是否待充值的订单
List<NgUserRechargeRecords> list = new LambdaQueryChainWrapper<>(ngUserRechargeRecordsMapper) List<NgUserRechargeRecords> list = new LambdaQueryChainWrapper<>(ngUserRechargeRecordsMapper)
.select(NgUserRechargeRecords::getId, NgUserRechargeRecords::getStatus,NgUserRechargeRecords::getAmount) .select(NgUserRechargeRecords::getId, NgUserRechargeRecords::getStatus,NgUserRechargeRecords::getAmount)
.eq(NgUserRechargeRecords::getCardNumber,cardId) .eq(NgUserRechargeRecords::getCardNumber,cardId)
.eq(NgUserRechargeRecords::getStatus,1) .eq(NgUserRechargeRecords::getStatus,1)
.list(); .list();
//如果有待充值的订单
if(!list.isEmpty()){
reply.put("cmd",410);
dataValue.put("orderNum",list.get(0).getId());//订单号
reply.put("data",dataValue);
pubMqttClient.publish(1,true,"hzlink/"+productId+"/"+serialNumber+"/info/reply", JSONUtil.toJsonStr(reply));
}
//如果订单已经支付但并未下发 //如果订单已经支付但并未下发
list.forEach(item->{ list.forEach(item->{
//下发指令 //下发指令
// 构建回应 // 构建回应
Map<String,Object> reply=new HashMap<>(); Map<String,Object> recharge=new HashMap<>();
reply.put("cmd",5300); recharge.put("cmd",1000);
Map<String,Object> data=new HashMap<>(); Map<String,Object> data1=new HashMap<>();
data.put("cmd",1000);
data.put("orderNum",item.getId());//订单号 data.put("orderNum",item.getId());//订单号
data.put("cardId",cardId);//卡号 data.put("cardNum",cardId);//卡号
data.put("areaCode",areaCode);//区域码 data.put("areaCode",areaCode);//区域码
data.put("investBalance",item.getAmount().doubleValue()*100); data.put("investBalance",item.getAmount().doubleValue()*100);
// data.put("investWater",rechargecardUser.getWater()*100); data.put("investWater",1*100);
reply.put("data",data); reply.put("data",data);
//发送回应 //发送回应
issueInstructionsProducer.receiveDataReportResponse(productId.toString(),serialNumber,JSONUtil.toJsonStr(reply)); pubMqttClient.publish(1,true,"hzlink/"+productId+"/"+serialNumber+"/cmd/down", JSONUtil.toJsonStr(recharge));
}); });
} }
public static void main(String[] args) { public static void main(String[] args) {

View File

@ -223,38 +223,26 @@ public class UserRechargeCardsServiceImpl implements IUserRechargeCardsService
public int updateUserRecharge(RechargecardUser rechargecardUser){ public int updateUserRecharge(RechargecardUser rechargecardUser){
// 根据id查询用户充值卡信息 // 根据id查询用户充值卡信息
UserRechargeCards info = userRechargeCardsMapper.selectUserRechargeCardsByCardnumber(String.valueOf(rechargecardUser.getCardnumber())); // UserRechargeCards info = userRechargeCardsMapper.selectUserRechargeCardsByCardnumber(String.valueOf(rechargecardUser.getCardnumber()));
if (info == null) { /*if (info == null) {
// 如果没有找到对应的记录返回0或者一个错误码 // 如果没有找到对应的记录返回0或者一个错误码
//throw new ServiceException("卡号不存在!"); throw new ServiceException("卡号不存在!");
UserRechargeCards userRechargeCards=new UserRechargeCards(); }*/
userRechargeCards.setAreaCode(String.valueOf(rechargecardUser.getAreacode()));
userRechargeCards.setCardNumber(String.valueOf(rechargecardUser.getCardnumber()));
userRechargeCardsMapper.insertUserRechargeCards(userRechargeCards);//如果没有该卡号则新建一条
info = userRechargeCardsMapper.selectUserRechargeCardsByCardnumber(String.valueOf(rechargecardUser.getCardnumber()));
}
UserConsumptionDetails userConsumptionDetails=new UserConsumptionDetails(); // UserConsumptionDetails userConsumptionDetails=new UserConsumptionDetails();
if(info.getUserId()!=null) // userConsumptionDetails.setUserId(info.getUserId());
{
userConsumptionDetails.setUserId(info.getUserId());
}
// userConsumptionDetails.setCardNumber(info.getCardNumber()); // userConsumptionDetails.setCardNumber(info.getCardNumber());
userConsumptionDetails.setCardNumber(String.valueOf(rechargecardUser.getCardnumber())); // userConsumptionDetails.setCardNumber(String.valueOf(rechargecardUser.getCardnumber()));
userConsumptionDetails.setBillingType(0); // userConsumptionDetails.setBillingType(0);
userConsumptionDetails.setAmountDue(rechargecardUser.getAmount()); // userConsumptionDetails.setAmountDue(rechargecardUser.getAmount());
userConsumptionDetails.setBillingDate(DateUtils.getNowDate()); // userConsumptionDetails.setBillingDate(DateUtils.getNowDate());
userConsumptionDetails.setPaymentStatus(2); // userConsumptionDetails.setPaymentStatus(2);
userConsumptionDetails.setPaymentMethod(rechargecardUser.getType()); // userConsumptionDetails.setPaymentMethod(rechargecardUser.getType());
userConsumptionDetails.setPaymentTime(DateUtils.getNowDate()); // userConsumptionDetails.setPaymentTime(DateUtils.getNowDate());
userConsumptionDetails.setStatus(0); // userConsumptionDetails.setStatus(0);
userConsumptionDetails.setAreaCode(String.valueOf(rechargecardUser.getAreacode())); // userConsumptionDetails.setAreaCode(String.valueOf(rechargecardUser.getAreacode()));
userConsumptionDetails.setCreateTime(DateUtils.getNowDate()); // userConsumptionDetails.setCreateTime(DateUtils.getNowDate());
if(info.getDeptId()!=null) // userConsumptionDetails.setDeptId(info.getDeptId());
{
userConsumptionDetails.setDeptId(info.getDeptId());
}
/*UserConsumptionDetails userConsumptionDetails = UserConsumptionDetails.builder() /*UserConsumptionDetails userConsumptionDetails = UserConsumptionDetails.builder()
.userId(info.getUserId()) .userId(info.getUserId())
.cardNumber(info.getCardNumber()) .cardNumber(info.getCardNumber())
@ -268,32 +256,22 @@ public class UserRechargeCardsServiceImpl implements IUserRechargeCardsService
.areaCode(rechargecardUser.getAreacode()) // 假设 getAreacode() 方法返回区域代码 .areaCode(rechargecardUser.getAreacode()) // 假设 getAreacode() 方法返回区域代码
.build();*/ .build();*/
NgUserRechargeRecords ngUserRechargeRecords=new NgUserRechargeRecords(); NgUserRechargeRecords ngUserRechargeRecords=new NgUserRechargeRecords();
if(info.getUserId()!=null) // ngUserRechargeRecords.setUserId(info.getUserId());
{ // ngUserRechargeRecords.setUserName(info.getUserName());
ngUserRechargeRecords.setUserId(info.getUserId()); // ngUserRechargeRecords.setCardNumber(info.getCardNumber());
}
if(info.getUserName()!=null)
{
ngUserRechargeRecords.setUserName(info.getUserName());
}
/* ngUserRechargeRecords.setCardNumber(info.getCardNumber());*/
ngUserRechargeRecords.setCardNumber(String.valueOf(rechargecardUser.getCardnumber())); ngUserRechargeRecords.setCardNumber(String.valueOf(rechargecardUser.getCardnumber()));
ngUserRechargeRecords.setAreaCode(String.valueOf(rechargecardUser.getAreacode())); ngUserRechargeRecords.setAreaCode(String.valueOf(rechargecardUser.getAreacode()));
ngUserRechargeRecords.setType(rechargecardUser.getType()); ngUserRechargeRecords.setType(rechargecardUser.getType());
ngUserRechargeRecords.setAmount(rechargecardUser.getAmount()); ngUserRechargeRecords.setAmount(rechargecardUser.getAmount());
ngUserRechargeRecords.setBalance(info.getBalance()); // ngUserRechargeRecords.setBalance(info.getBalance());
ngUserRechargeRecords.setBalance(rechargecardUser.getAmount()); ngUserRechargeRecords.setBalance(rechargecardUser.getAmount());
ngUserRechargeRecords.setRechargeTime(DateUtils.getNowDate()); ngUserRechargeRecords.setRechargeTime(DateUtils.getNowDate());
ngUserRechargeRecords.setStatus(0); ngUserRechargeRecords.setStatus(1);
ngUserRechargeRecords.setAreaCode(String.valueOf(rechargecardUser.getAreacode())); ngUserRechargeRecords.setAreaCode(String.valueOf(rechargecardUser.getAreacode()));
ngUserRechargeRecords.setSerialNumber(rechargecardUser.getDeviceNumber()); ngUserRechargeRecords.setSerialNumber(rechargecardUser.getDeviceNumber());
if(info.getDeptId()!=null) // ngUserRechargeRecords.setDeptId(info.getDeptId());
{
ngUserRechargeRecords.setDeptId(info.getDeptId());
}
// 计算新的余额 // 计算新的余额
BigDecimal newBalance = rechargecardUser.getAmount().add(info.getBalance()); // BigDecimal newBalance = rechargecardUser.getAmount().add(info.getBalance());
/* userConsumptionDetails.setCreateTime(DateUtils.getNowDate()); /* userConsumptionDetails.setCreateTime(DateUtils.getNowDate());
NgUserRechargeRecords ngUserRechargeRecords = NgUserRechargeRecords.builder() NgUserRechargeRecords ngUserRechargeRecords = NgUserRechargeRecords.builder()
@ -306,28 +284,28 @@ public class UserRechargeCardsServiceImpl implements IUserRechargeCardsService
.areaCode(rechargecardUser.getAreacode()) .areaCode(rechargecardUser.getAreacode())
.build();*/ .build();*/
userRechargeRecordsMapper.insertNgUserRechargeRecords(ngUserRechargeRecords); userRechargeRecordsMapper.insertNgUserRechargeRecords(ngUserRechargeRecords);
userConsumptionDetailsMapper.insertUserConsumptionDetails(userConsumptionDetails); // userConsumptionDetailsMapper.insertUserConsumptionDetails(userConsumptionDetails);
// 更新用户充值卡信息包括新的余额 // // 更新用户充值卡信息包括新的余额
info.setBalance(newBalance); // info.setBalance(newBalance);
info.setUpdateTime(DateUtils.getNowDate()); // info.setUpdateTime(DateUtils.getNowDate());
info.setAreaCode(String.valueOf(rechargecardUser.getAreacode())); // info.setAreaCode(String.valueOf(rechargecardUser.getAreacode()));
//构建主题 // //构建主题
String topic ="hzlink/147/"+rechargecardUser.getDeviceNumber()+"/cmd/down"; // String topic ="hzlink/147/"+rechargecardUser.getDeviceNumber()+"/cmd/down";
//构建消息 // //构建消息
Map<String,Object> param = new HashMap<>(); // Map<String,Object> param = new HashMap<>();
//远程阀控 // //远程阀控
param.put("cmd",1000); // param.put("cmd",1000);
Map<String,Object> data = new HashMap<>(); // Map<String,Object> data = new HashMap<>();
data.put("orderNum", ngUserRechargeRecords.getId()); // data.put("orderNum", ngUserRechargeRecords.getId());
data.put("cardNum",rechargecardUser.getCardnumber()); // data.put("cardNum",rechargecardUser.getCardnumber());
data.put("areaCode",rechargecardUser.getAreacode()); // data.put("areaCode",rechargecardUser.getAreacode());
data.put("investBalance",rechargecardUser.getAmount().doubleValue()*100); // data.put("investBalance",rechargecardUser.getAmount().doubleValue()*100);
data.put("investWater",rechargecardUser.getWater()*100); // data.put("investWater",rechargecardUser.getWater()*100);
//
param.put("data",data); // param.put("data",data);
pubMqttClient.publish(1,true,topic, JSONUtil.toJsonStr(param)); // pubMqttClient.publish(1,true,topic, JSONUtil.toJsonStr(param));
int i = userRechargeCardsMapper.updateUserRechargeCards(info); // int i = userRechargeCardsMapper.updateUserRechargeCards(info);
return 1; return 1;
} }
} }